我曾多次读到建议仅使用我的 OpenPGP 证书中的主密钥对来签署子密钥对,而不是用于日常使用(甚至将私钥存储在非网络 PC 上以增加安全性)。我最近注意到,我的证书中的每个密钥对都有标志,这些标志定义了必须专门用于什么目的。据我目前了解(很难找到文档),签署子密钥对的过程将由A
(用于身份验证)描述。
在我新生成的证书中,我的主密钥对具有使用标志SC
(签名和认证)。现在使用 GnuPG 命令行工具可以很容易地更改子密钥的这些标志,但我找不到任何方法来修改主密钥对的使用标志。
我希望能够限制主密钥对,使其仅能够签署和撤销证书中的其他子密钥对。有人能告诉我这是否可行以及如何做到这一点吗?
答案1
您需要使用标志 certify C
,这是 OpenPGP 规范所要求的。身份验证A
很少使用,这意味着您可以验证自己的身份(类似于基于 SSH 密钥的身份验证)。
然而,无法更改 GnuPG 中的使用标志(但通过破解代码)来自Resul Cetin 的留言在该邮件列表主题中:
好的,这很容易做到(不是干净利落,但可以快速而巧妙地完成)。只需搜索
gnupg-1.4.9/g10/getkey.c:parse_key_usage
并更改p
为non-const
并始终设置(*p) &=~2;
。之后,我开始新编译的 hackish-gpg --edit-key
并设置主密钥的过期时间。完成此过程后,我只设置了 Cert 标志。谢谢 Christoph - 你是我今天的个人英雄 :)
答案2
要更改现有的主密钥,Jens 引用的 gnupg-users 线程涵盖了我所见过的唯一方法。
将主密钥设置为仅在创建时认证稍微容易一些:
bash-3.2$ gpg --gen-key --expert
Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
(7) DSA (set your own capabilities)
(8) RSA (set your own capabilities)
Your selection? 8
Possible actions for a RSA key: Sign Certify Encrypt Authenticate
Current allowed actions: Sign Certify Encrypt
(S) Toggle the sign capability
(E) Toggle the encrypt capability
(A) Toggle the authenticate capability
(Q) Finished
Your selection? s
Possible actions for a RSA key: Sign Certify Encrypt Authenticate
Current allowed actions: Certify Encrypt
(S) Toggle the sign capability
(E) Toggle the encrypt capability
(A) Toggle the authenticate capability
(Q) Finished
Your selection? e
Possible actions for a RSA key: Sign Certify Encrypt Authenticate
Current allowed actions: Certify
(S) Toggle the sign capability
(E) Toggle the encrypt capability
(A) Toggle the authenticate capability
(Q) Finished
Your selection? q
RSA keys may be between 1024 and 16384 bits long.
What keysize do you want? (2048) C-c C-c
gpg: Interrupt caught ... exiting
bash-3.2$
但是,您随后需要使用 gpg --edit-key 命令手动创建子键。
答案3
change-usage
是将改变允许操作的隐藏子命令。
$ gpg --edit-key $KEYID
gpg> change-usage
Changing usage of the primary key.
Possible actions for a RSA key: Sign Certify Encrypt Authenticate
Current allowed actions: Sign Certify
(S) Toggle the sign capability
(E) Toggle the encrypt capability
(A) Toggle the authenticate capability
(Q) Finished
Your selection?
来源 -
- 详细说明这答案是三昧另一个问题。