我正在尝试更改 GPG 密钥的密码。
我实际上使用 seahorse 更改了它(也尝试过gpg --edit-keys
和passwd
,但是当我尝试导出我的私钥时,它现在要求我输入两个密码(新的和旧的)并使用旧的作为子密钥。
现在我必须记住两个复杂的密码!
更改GPG密钥密码的正确方法是什么?
答案1
答案2
对于 GPG 2.1 及更高版本,私钥存储在~/.gnupg/private-keys-v1.d
每个密钥(包括子密钥)中,使用密钥的 keygrip 作为文件名存储为单独的文件:
<keygrip>.key
当使用gpg --edit-key
更改密码时,私钥目录中的所有子密钥都会被修改。
不过,似乎seahorse
只是修改主密钥的私钥文件。
所以,看起来这是一个错误seahorse
。这可能是早期版本的回归gpg
,早期版本将私钥存储在密钥环结构中,就像公钥一样。此行为在 2.1 及更高版本中已更改。
用测试密钥进行简单的测试结果,表明海马只修改了主密钥的私钥文件。
具有三个子键的测试键
pub ed25519 2018-12-24 [SC]
988D29CB7CA9D62252B22DEFB42E56952F9FB61C
Keygrip = 8226D19110BAC4FB4D60BC25869E5F23C1BB667F
uid [ultimate] delete me (Delete Me) <[email protected]>
sub cv25519 2018-12-24 [E]
Keygrip = 04B4D2C5CC29926F48DA2C4FD24F03B9595AE51C
sub ed25519 2019-03-25 [SA]
Keygrip = 269995721854253C5F8B48CB40DD24948D580F8C
sub ed25519 2019-03-25 [SA]
Keygrip = 604E0E8F9D9C2B19A823E22A90F08EC2DDCA80BB
密码短语更改为seahorse
-rw------- 1 user user 333 Mar 25 09:27 8226D19110BAC4FB4D60BC25869E5F23C1BB667F.key
-rw------- 1 user user 333 Mar 25 09:08 604E0E8F9D9C2B19A823E22A90F08EC2DDCA80BB.key
-rw------- 1 user user 333 Mar 25 09:08 269995721854253C5F8B48CB40DD24948D580F8C.key
-rw------- 1 user user 341 Mar 25 09:08 04B4D2C5CC29926F48DA2C4FD24F03B9595AE51C.key
密码短语更改为gpg --edit-key
-rw------- 1 user user 333 Mar 25 09:37 604E0E8F9D9C2B19A823E22A90F08EC2DDCA80BB.key
-rw------- 1 user user 333 Mar 25 09:37 269995721854253C5F8B48CB40DD24948D580F8C.key
-rw------- 1 user user 341 Mar 25 09:37 04B4D2C5CC29926F48DA2C4FD24F03B9595AE51C.key
-rw------- 1 user user 333 Mar 25 09:37 8226D19110BAC4FB4D60BC25869E5F23C1BB667F.key
海马源码检查
在查看了一些 Seahorse 源代码后,该行为似乎与旧的秘密密钥环 gpg 方法一致。
根据gpgme
文档,应使用以下命令更改密码gpgmegpgme_op_passwd
函数调用。不过,这个函数调用并没有出现在海马源码中。