共享加密的 GPG 私钥是否安全?

信息安全 密码管理 pgp gnupg
2021-08-31 16:56:52

我使用pass密码管理器,并试图想出一种方便的方法来引导新机器并访问 git 存储库。我还有一个 GPG 智能卡 (Yubikey),它有一个不同的密钥对(我只使用一个单独的密钥pass)。

假设我已将pass密钥对导出为pass.sec.asc,我目前的想法是我应该能够使用我的默认(非pass)密钥对来执行以下操作:

gpg --encrypt --armor --encrypt-to 0xMYKEY < pass.sec.asc > encrypted.asc

并上传encrypted.asc到公共位置。然后,把我的 Yubikey 带到新的工作站,下载encrypted.asc,然后

gpg --decrypt < encrypted.asc > pass.sec.asc
gpg --import pass.sec.asc

并且能够访问我商店中的密码。

  • 甚至发布我的密钥的加密版本是不明智的吗?
  • 加密密钥是否存在加密危险?
  • 有没有更好的方法以主要脚本方式引导新的密码存储机器?
1个回答

作为一般的经验法则,即使是加密形式,在任何地方添加私钥都是一个非常糟糕的主意。

我能想到的一种方法是在首次创建 GPG 密钥时通过 SSH 将它们推送到新服务器。这意味着密钥直接从一台服务器传递到另一台服务器,并且最终不会永久存储在任何人都可以访问它们的地方。

如果您确实决定在集中式文件存储库上托管选项,请确保通过内部网络用户的身份验证也可以访问系统,从而尽可能确保安全。

编辑:发布更新,因为我想出了一个更有用的解决方案 + 回答评论。

从理论上讲,评论说密钥与加密算法一样安全是正确的,理论上如果私钥真的被高度加密,那么它是安全的(ish)......但是......通过使该密钥可访问,您可以显着打开增加可能的攻击向量。任何人都可以在闲暇时挑战并尝试解密该密钥。更安全的赌注是不仅要依赖特定加密算法的强度,还要通过确保私钥保密来增加一些缓解措施。

提供 linux 系统初始设置的一个非常好的主意是使用自动化工具,例如 ansible。我对这个主题的了解还不够全面,但据我了解,您可以将私钥安全地保存在一台机器上,并在休息时使用诸如 ansible vault 之类的东西对其进行加密。然后可以针对您要设置的新机器运行 Ansible,它将部署该密钥,确保该密钥在任何时候都不能公开使用。