Answers:
使用GnuPG无法为子密钥设置单个密码短语。但是有一种解决方法,在这种情况下,它甚至看起来像是一个好习惯的想法:
导出选择的子项(在示例中,子项具有ID 0xDEADBEEF
)。不要忘记感叹号,它可以确保GnuPG实际上与子项本身一起工作,而不与它所属的主键一起工作!
gpg --export-secret-subkeys 0xDEADBEEF! >subkeys.pgp
子密钥将具有公共主密钥和私有主“密钥存根”,但没有私有主密钥本身。
将该子项导入另一个GnuPG主目录。该示例希望您位于项目的根目录中,并且在其中有一个etc
存放诸如此密钥环之类的文件夹。
gpg --homedir ./etc/gnupg --import subkeys.pgp
更改分隔的子项的密码。
gpg --homedir ./etc/gnupg --edit-key 0xDEADBEEF
始终使用如上所述的单独的GnuPG目录,而不要使用“常规”密钥环。
或者,您可能要考虑创建一个使用自己的密钥签名的项目密钥。这可能具有以下优点:其他贡献者/用户也可以签名密钥(从而证明这确实是该项目所使用的密钥),并且在其他人接管维护的情况下移交项目可能会更容易。
gpg-agent
。看一看gpg-preset-passphrase
。
gnupg.org邮件归档文件过时(2013),解释了为子密钥单独设置密码的尴尬解决方法。
这意味着约束不在密钥集的数据结构(即主子密钥分组)之内,而仅在用于构造和修改密钥集的软件界面中。
从参考引用:
你好
是否可能有一个主密钥和几个子密钥,而这些子密钥的密码短语与主密钥不同(例如较短)?
您可能正在寻找的是脱机主键(请参阅--export-secret-子键)。但是答案是:是的。gpg-agent并不关心密钥的连接。它甚至会多次询问您相同的密码短语(对于同一密钥的不同组件)。
但是GnuPG不直接支持此功能。
1)导出密钥(不带--armor的--export-secret-keys)
2)更改密码
3)再次导出(当然,导出到其他文件)
4)在两个文件(位于不同目录)中使用gpgsplit。结果看起来像这样:
000001-005.secret_key 000002-013.user_id 000003-002.sig 000004-007.secret_subkey 000005-002.sig
5)现在,您将两组的成分混合在一起:mkdir组合mv a / 000001 * a / 000002 * a / 000003 *组合/ mv b / 000004 * b / 000005 *组合/ cd组合/ cat *> different_passphrases.gpg
6)删除密钥:--delete-secret-key
7)导入新的:gpg --import different_passphrases.gpg
Hauke Laging
我没有亲自确认此操作-只是报告我已阅读的内容。
令人失望的是,GnuPG文档中缺少有关此重要主题的规范和讨论。