如何使用 gpg 更新过期的密钥对

Jon*_*ein 113 gpg maintenance

过期时更新 gpg 密钥对的最佳方法是什么,该方法的原因是什么?

密钥对已经由许多用户签名并在公共服务器上可用。

  • 新密钥应该是过期私钥的子密钥吗?

  • 是否应该由旧签名(我可以尝试编辑密钥并将到期日期更改为明天)?

  • 新钥匙应该在旧钥匙上签名吗?

Hau*_*ing 145

私钥永不过期。只有公钥可以。否则,世界永远不会注意到到期,因为(希望)世界永远不会看到私钥。

对于重要的部分,只有一种方法,因此无需讨论利弊。

您必须延长主密钥的有效性:

gpg --edit-key 0x12345678
gpg> expire
...
gpg> save
Run Code Online (Sandbox Code Playgroud)

您必须就扩展与替换子键的有效性做出决定。更换它们为您提供有限的前向安全性(仅限于相当长的时间范围)。如果这对您很重要,那么您应该拥有用于加密和签名的(单独的)子密钥(默认为仅用于加密)。

gpg --edit-key 0x12345678
gpg> key 1
gpg> expire
...
gpg> key 1
gpg> key 2
gpg> expire
...
gpg> save
Run Code Online (Sandbox Code Playgroud)

您需要key 1两次选择和取消选择,因为您一次只能延长一个键的有效期。

您也可以决定延长有效期,除非您有理由认为密钥已泄露。只有当你有一个离线主密钥(恕我直言,这是使用 OpenPGP 的唯一合理方法)时,在妥协的情况下不扔掉整个证书才有意义。

证书的用户无论如何都必须获取其更新版本(对于新密钥签名或新密钥)。更换会使密钥变大一点,但这不是问题。

如果您使用智能卡(或计划这样做),那么拥有更多(加密)密钥会带来一定的不便(具有新密钥的卡无法解密旧数据)。

  • 具有讽刺意味的是,密钥更新为“过期” (12认同)
  • @Felix您没有解决对私钥的需求。这就是PK密码学的基础。 (9认同)
  • 我相信 `expire` 命令实际上会引导您设置密钥的到期时间,所以也许您只是通过将到期时间设置得更远来“更新”密钥? (4认同)
  • 我打了这个:```gpg> expire 需要密钥来做到这一点。``` 任何想法如何解决这个问题? (2认同)
  • 我还可以选择多个键(或全部带有 `key *`)并为所有键设置过期时间。 (2认同)

eli*_*eli 5

添加到“Hauke Linging”的答案中,从 gpg 2.1.22 * 开始有一个选项,您可以使用单个非交互式命令扩展主键或其未撤销、未过期的子键。

它有 3 种形式(第一个参数始终是密钥指纹,第二个参数始终是有效期,例如8w8 周):

  • 2个参数:按周期扩展密钥
  • 3 个参数,其中第 3 个是星号 ( *):使主密钥的所有未撤销、未过期的子密钥过期
  • 3 个或更多参数,其中第 3 个以上是特定子密钥指纹:使主密钥的指定子密钥过期

- 形式的示例*

gpg --quick-set-expire <1> <2> <3>

意义:

<1> 您密钥的指纹(来自gpg --list-secret-keys
<2> 您希望将过期期限延长多长时间
<3>*对于每个子密钥,例如:

gpg --quick-set-expire 7BCDED693SECRETKEY1552ACB71237 7w \*

*--quick-set-expire仅适用于2.1.17版本的主键。