你能为git提交启用2FA吗



标题几乎说明了一切。我正在使用Ubuntu,我非常担心我的git存储库被篡改,所以我想确保我是唯一一个可以提交的人。我知道你可以在本地签署你的提交,但如果你的电脑上有恶意软件,它可以很容易地获得你的私钥(我认为(。所以我想让每一个本地提交都需要2FA。有什么办法可以做到这一点吗?或者,除了本地签名,还有其他更安全的选择吗?

Git在本地机器上不提供2FA,因为用户被隐式信任可以在自己的存储库中创建提交。但是,如果将commit.gpgsign设置为true,则可以使用数字OpenPGP签名对所有提交进行签名。

您可以使用设备上的OpenPGP密钥,例如YubiKey,该密钥在签名之前需要交互。YubiCo的网站记录了如何做到这一点。

然而话虽如此,如果你不信任自己的电脑,你在电脑上做任何事情都会很困难,因为你所做的一切都必须在另一台值得信赖的机器上进行验证,因为你自己机器上的恶意软件可能会欺骗你,让你看到事情与原来不同。因此,如果这是您的问题,在尝试添加提交签名之前,您需要先解决它。如果需要的话,你可以启动一个可信的live CD或live USB映像(例如,Debian live CD(来完成某些工作。

我相信你想要的东西被命名为"代码签名";。2FA无法实现,因为2FA仅用于身份验证。想象一下:

  1. 对于要提交的整个代码库,您生成了所有文件的SHA256摘要
  2. 你拿着钥匙在摘要上签名
  3. 您将其存储在另一个文件中并添加到提交中
  4. 稍后,您可以验证代码库是否符合您的预期

这不会阻止";回复攻击";,但我认为这应该符合你的要求。

我不知道有什么工具可以帮助你实现这一点,但如果你也不需要与他人共享密钥来验证完整性,你可以使用对称密钥的简单HMAC。

为了练习:您可以查看(并签署?(来自可信设备的提交

  • 将您的提交推送到共享服务器(GitHub?(
  • 从另一个受信任的设备:获取并查看它们
  • 采取措施将已审核的提交标记为可信:
    • 将它们推送到受损害的计算机无法写入的repo
    • 或使用确认提交内容的签名标记对其进行标记(您需要防止在受损计算机上使用的帐户篡改这些标记,以避免删除它们或将它们变成无效签名(

相关内容

  • 没有找到相关文章

最新更新