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

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

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

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

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

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

  • 新密钥应该签署旧密钥吗?

答案1

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

对于重要的部分,只有一种方法,这样就不用讨论利弊了。

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

gpg --edit-key 0x12345678
gpg> expire
...
gpg> save

您必须决定是延长子项的有效性还是替换子项。替换它们会给您带来有限的前向安全性(仅限于相当长的时间范围)。如果这对您很重要,那么您应该拥有用于加密和签名的(单独的)子密钥(默认值仅用于加密)。

gpg --edit-key 0x12345678
gpg> key 1
gpg> expire
...
gpg> key 1
gpg> key 2
gpg> expire
...
gpg> save

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

您也可以决定延长有效期,除非您有理由认为密钥已被泄露。只有在您拥有离线主密钥的情况下,在发生泄露时不丢弃整个证书才有意义(在我看来,这是使用 OpenPGP 的唯一合理方法)。

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

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

答案2

添加到“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

答案3

您似乎混淆了两件事:用新密钥对替换旧密钥对,以及更改到期日期。

基本上,不需要创建新的密钥对:如果您仍然拥有旧的密钥对,您可以通过更改到期日期并发布更新的密钥来“延长”其生命周期。这是完全正常且符合预期的。

过期日期的处理是为了确保如果你丢失了密钥(例如忘记了密码 - 我不是在谈论密钥被泄露,在这种情况下你会想立即撤销它)它不会一直悬而未决永远在露天。

相关内容