如何保护我计算机上的 OpenPGP 密钥?

信息安全 密钥管理 pgp gnupg
2021-09-05 10:37:34

如何保护我计算机上的 OpenPGP 密钥?如果我备份我的私钥,我会确保它的安全,但如果有人可以访问我的计算机,他/她将可以通过 Kleopatra 或 GPA 获取我的所有密钥。我该如何避免这种情况?

3个回答

你的威胁模型是什么?

如果您的威胁是要防止物理盗窃,那么加密密钥(使用密码)或全盘加密就足够了。

如果您的威胁是在您的用户帐户下运行的恶意程序,那么您希望在沙箱中运行潜在的恶意程序,或者根本不运行它。

如果您的威胁是具有 root 访问权限的恶意程序,那么您应该使用OpenPGP Card

有多种方法可以减少包含 OpenPGP 密钥的受感染计算机的影响。我有点偏执地命令他们(您可能更喜欢称其为“更高级的攻击者”)。通常,可以根据需要组合这些反措施。

密码保护

您可以使用密码对您的私钥进行加密。如果攻击者拥有加密的私钥,但没有(合理选择的)密码,他将很难暴力破解它。

如果攻击者不仅获得了您的硬盘副本,而且还可以连续访问您的计算机,这将无法保护您,因为他将能够窃听密码。

全盘加密

全盘加密几乎等同于加密密码,但可能会使设置特洛伊木马变得更难访问机器。我会将它与私钥的密码短语加密结合起来。

使用脱机主键

可能发生的最糟糕的事情是您的私人主密钥暴露给攻击者,攻击者掌握了它并同时阻止您访问它。在这种情况下,攻击者不仅可以创建新的密钥和证书,而且您甚至无法再撤销它们!

将私钥移动到某个离线位置可能被证明是合理的,甚至可能是某些未连接到 Internet 的专用离线计算机。只要对密钥/离线驱动器/机器的物理访问超出范围,这将使可能的攻击者更难控制私有主密钥。

如果私有主密钥保持离线/安全,攻击者唯一能做的就是使用加密子密钥解密旧消息或使用签名子密钥对消息进行签名。您可以随时撤销它们以限制违规行为,而不会丢失所有认证。交换子密钥是一个相当便宜的操作。

OpenPGP 智能卡

最后,为了保护您的私有子密钥,您可以使用 OpenPGP 智能卡(或其他实现,如YubiKeys)。密钥是在卡上创建的,它永远不会离开。它只能在卡连接时使用,或者在 YubiKey 的情况下,必须触摸硬件令牌才能执行一些加密操作。这些卡或硬件令牌包含自己的加密处理器,因此它能够自行执行加密操作。

一旦您移除卡,攻击者就会失去访问权限,因为他没有持有密钥的副本。

GnuPG 支持这些卡/令牌,但配置可能涉及一些麻烦。FSFE会员卡就是这样的智能卡,不过你也可以单独购买,找“OpenPGP Smartcards”。

全盘加密可以解决静态数据问题,但是如果有人可以在您的计算机开启时访问您的计算机,那么您几乎无法阻止它。您可以确保为您的私钥使用密码,并避免使用代理类型程序(将密钥保存在内存中),但这确实会带来可用性劣势 - 您必须每次都提供密钥的密码合法使用它,并确保在这些时间之间将其从内存中清除。