如果我使用具有截止日期的OpenPGP密钥签署git提交,那对于在截止日期之后查看该提交的人员意味着什么?是否所有用于提交签名的密钥都是永久性的?
如果验证方有我的新钥匙怎么办?或者只是我的老?或两者兼而有之?
我一般都是OpenPGP的新手,尤其是在签署git提交方面。
答案 0 :(得分:2)
OpenPGP的到期日期仅表示“在给定日期之后不应使用此密钥”,但不会使密钥无效:数学仍然正常。
如果我使用具有截止日期的PGP密钥签署Git提交,那对于在截止日期之后查看该提交的人意味着什么?
在验证签名时,OpenPGP实施会将到期日期与签名签发日期进行比较。如果签名是在有效期内签发的,那你就没事了。如果没有,它将发出警告(例如“签名没问题,但在到期后发出)。
。”如果验证方有我的新钥匙怎么办?或者只是我的老?或两者兼而有之?
如果他们有旧密钥,他们可以验证旧密钥发出的签名。对于新密钥,他们可以验证新密钥发布的密钥。如果他们两者都有,他们可以验证两者。
用于提交签名的所有密钥都应该是永久性的吗?
请注意,到期日期并未真正添加任何安全性,因为只要您可以控制秘密主键,就可以任意更改。此外,签名日期可以任意设置,它由用于创建签名的OpenPGP实现写入;攻击者可能只是设置了伪造的系统时间。我在问题"Does OpenPGP key expiration add to security?"中详细讨论了信息安全姊妹网站上的到期日期的安全性。
如果您希望指示,则在给定时间后不会使用该密钥,但使用过期日期是正常的,但不要将其视为安全功能。许多具有高级OpenPGP密钥用法的人都有一个没有过期日期的主键,并且经常托管子密钥,他们在有效期限内发行。
创建新主键意味着其他人必须再次验证新密钥。主键是OpenPGP中的公共信任锚,创建新主键意味着丢失所有信任/认证。
答案 1 :(得分:0)
您可以而且仍然应该使用过期密钥。
这个系统的想法是密钥过期,你生成新的密钥。但是在PGP世界中,您将密钥上传到密钥服务器。它们基本上像电话簿(*)一样工作,因此每个想要检索您的公钥以向您发送加密消息的人都可以访问它。这也是您问题的解决方案。密钥服务器仍然会记住过期密钥,因此您的签名虽然已过期但仍然有效(验证仅取决于使用一次有效密钥的正确应用签名)。您的用户将在验证您的签名时看到他们检索了您用于此特定签名的密钥。但是,随着您开发和发布签名版本,您将始终使用有效密钥进行签名,而人们只需继续检索您的新密钥。
(*)密钥服务器与电话簿的比较简化了情况,但缺少一个重要的信息部分:如果您使用密钥服务器来检索您不知道的人的密钥,请记住此密钥可能是损害。例如。 Alice希望通过加密与Bob通信(或者只是验证Bob的git提交),但她不认识他。她从远程服务器获取Bobs公钥,但不知道Mallory伪造它并将其放在那里。因此,验证过程受到了损害,她不会注意到。出路:Bob可以将他的公钥(或密钥)的指纹与他在其网站上签名的软件一起发布。 Alice现在可以拿一把钥匙,将其指纹与Bob提供的指纹进行比较,以验证她是否拥有Bob的真正公钥。有了这个,她现在可以在git上验证他签名的提交。如果密钥已过期,这也可以使用。
答案 2 :(得分:0)
git show-signature / verify认为撤销密钥即使在撤销密钥之前签名也无效,请参阅已撤销的yubikey签名中的此示例:https://www.flickr.com/photos/steve_l/37493124630/in/datetaken/
鉴于这一结果,我认为在这种情况下不撤销密钥可能不那么痛苦,但是更改到期日期并推迟对密钥服务器的更新说"密钥已过期"。这样,现有的提交仍然有效。