在了解了有关 PGP 子密钥以及如何拆分 (S) 签名、(E) 加密、(A) 身份验证和 (C) 认证的角色的更多信息后,我发现在大多数情况下(?)默认主密钥有一个子密钥分离出加密的工作:
pub 2048R/AAAAAAAA usage: SC
sub 2048R/BBBBBBBB usage: E
在这里,AAAAAAAA
是万能钥匙。S
允许签署内容,C
允许创建新的子密钥。(这样做的一个好处是您可以提供AAAAAAAA
更长的到期时间BBBBBBBB
,然后创建一个新的加密密钥,AAAAAAAA
因为它具有C
使用权限。)
但是,在我看来,对于在单台机器上工作的用户来说,以下内容的安全性并不低,但为希望从例如工作和家庭接收加密邮件的用户提供更高的安全性:
pub 2048R/AAAAAAAA usage: C
sub 2048R/BBBBBBBB usage: E
sub 2048R/CCCCCCCC usage: S
使用此设置,主密钥AAAAAAAA
无法签名/验证或加密/解密,但可以收集信任。因此,您可以给主AAAAAAAA
密钥更长的到期时间,并使用它来添加新的子密钥。到那时,如果没有BBBBBBBB
主密钥,将导出并导出CCCCCCCC
到一台单独的工作计算机,该计算机移动更多且安全性较低,如果工作计算机受到破坏,则可以撤销子密钥并添加新密钥,而不会失去任何声誉。
(当然,您甚至可以将主证书密钥的秘密部分保存在超级安全的秘密掩体中。)
我知道通过 GUI 进行设置似乎是不可能的(他们似乎并不热衷于查看或编辑子键,更不用说控制主键能做什么和不能做什么),但我的问题是:
现有的 PGP 实现没有这样做是否有特定的原因?将密钥导出到没有认证权限的其他机器似乎是一个巨大的安全胜利。(如果只有 GUI 让它变得更容易。)我唯一可能的想法是导入带有残缺主密钥的秘密子密钥可能没有得到广泛支持,正如--export-secret-subkeys
(在gpg(1)
手册页中)暗示的那样:
--export-secret-keys
--export-secret-subkeys
Same as --export, but exports the secret keys instead. This is
normally not very useful and a security risk. The second form
of the command has the special property to render the secret
part of the primary key useless; this is a GNU extension to
OpenPGP and other implementations can not be expected to suc‐
cessfully import such a key. See the option --simple-sk-check‐
sum if you want to import such an exported key with an older
OpenPGP implementation.
编辑:看起来 Debian 也遵循同样的做法?https://wiki.debian.org/subkeys