OpenPGP 密钥过期是否会增加安全性?

信息安全 密钥管理 pgp 电子签名 打开pgp
2021-08-10 07:05:23

我创建了一个新的 OpenPGP 密钥来签署源存储库中的软件包,其有效期为三年后。这似乎是一个很好的安全措施,因为如果密钥被泄露或被盗,损害将是有限的。

但后来我想到了我需要签署新密钥的那一天。用旧密钥签署新密钥似乎等同于保留旧密钥,因此不会增加安全性。

设置过期日期会提高密钥安全性吗?如果是这样,最好的到期/密钥更换政策是什么?

3个回答

tl; dr:到期日期不是保护主密钥的合理机制,您应该手头有撤销证书。


稍长的版本是,到期日期的影响在主键和子键之间是不同的,也是您要防止的。

子键

对于子密钥,效果相当简单:在给定的时间范围之后,子密钥将过期。只能使用主键更改此到期日期。如果攻击者掌握了您的子密钥(并且只有这个),它将在到期日期后自动失效。

子密钥的到期日期是一个很好的工具,可以宣布您定期切换子密钥,并且在给定时间后其他人应该更新您的密钥。

主键

对于主键,情况就不同了。如果您有权访问私钥,则可以根据需要更改到期日期这意味着,如果攻击者可以访问您的私钥,他可以任意延长有效期。最坏的情况是,您同时失去了对私钥的访问权,那么即使您也无法再撤销公钥(您确实有打印的或以其他方式脱机并安全存储的撤销证书,对吗?)。如果您只是失去对密钥的控制(而没有攻击者可以控制它),到期日期可能会有所帮助。密钥将在给定时间后自动过期,因此不会有一个不可用的密钥,上面有你的名字,永远坐在密钥服务器上。

恢复弱的未撤销密钥

更糟糕的是,到期日期可能会提供一种虚假的安全感。密钥服务器上的密钥已过期,为什么还要撤销它呢?密钥服务器网络上有大量连接良好的 RSA 512 位密钥,并且可能有相当多的弱 DSA 密钥(由于 Debian RNG 问题)。凭借更快的处理器和可能的算法弱点的新知识,攻击者将来可能能够破解过期但未撤销的密钥并使用它!

而是保持吊销证书的安全

如果你有一个撤销证书,并且确定你永远不会同时失去对你的私钥和撤销证书的访问权(考虑火灾、(物理)盗窃、官方机构搜查你的房子),那么绝对没有用除了可能的混乱和延长它的更多工作之外,设置一个到期日期。

请注意,主密钥的到期日期并没有真正起到任何安全作用,因为任何妥协的人都可以随时延长它。请参阅http://madduck.net/blog/2006.06.20:expiring-gpg/存档版本)。

(另一方面,过期的子键可能很有用,并且创建键时的选项会设置所有键的日期。)

设置过期日期是否会提高密钥安全性?

是的。你也已经说了为什么:

这似乎是一个很好的安全措施,因为如果密钥被泄露或被盗 - 损害将是有限的。

假设您受到威胁并且密钥被盗,显然,您的第一个动作将是撤销密钥并发布一个新密钥。然而,并不是每个人都会检查被撤销的密钥。他们会继续盲目地使用它,直到它失效。

同样,如果您受到威胁,则有人只能在固定窗口中冒充您。

如果是这样,最好的到期\密钥更换政策是什么?

真的没有 - 问题更多的是“在给定约束 XY Z 的情况下我能做的最好的事情是什么”。例如,如果您将 Window 设置得太小,会给用户带来不便;但是,太高了,如果受到损害,您就会面临风险。这真的归结为一个判断电话 - 您所保护的内容到底有多敏感,以及频繁更换密钥的频率/不便?