Gnupg 是开源的(是的!),因此可以查看发生了什么。当您为密钥创建撤销证书时,即通过“gpg --gen-revoke name”
它在内部通过以下功能/关键步骤
main()
在gpg.c(gpg 命令行工具)中被调用,然后
- 解析参数然后
gen_revoce( const char *uname)
在revoce.c中调用,
- 然后在里面检索 uname 的密钥和公钥
make_keysig_packet
然后它像这样调用sign.c rc = make_keysig_packet(&sig, pk, NULL, NULL, sk, 0x20, 0,
opt.force_v4_certs?4:0, 0, 0,
revocation_reason_build_cb,原因);
使用密钥对(publicpk
和 secret sk
)并另外提供一个函数指针revocation_reason_build_cb
和一个带有撤销的字符串reason
)。
- 然后在内部
make_keysig_packet
使用 hash_algo 创建消息摘要 md,最终提供给complete_sig( sig, sk, md );
内部调用do_sign
并在md
.
- 创建创建的撤销证书(这是一种使用秘密/私钥消息签名的类型)。
然后在提供给密钥服务器的此证书中将允许此(如@WayToDoor 所说)它对服务器上的密钥的注释。
只有拥有秘密私钥的人才能签署要使用公钥验证的消息,因此,撤销是“发送私钥签名消息、生成的消息哈希和非对称加密”之类的事情。
我对另一件事的看法是,一旦撤销,密钥对就会被烧毁(信任毫无价值)。
因此,将子密钥用于更安全(气隙)的主加密密钥将是明智的,允许重新发布新的工作子密钥来替换被撤销的密钥,而无需安全通道明智地验证新子密钥的公钥-密钥对。