PGP 私钥块是否也“包含”公钥?

PGP 私钥块是否也“包含”公钥?

我注意到,如果我将 ASCII 封装的 PGP 私钥导入到空的 GnuPG 密钥环中(通过~/.gnupg事先删除),密钥环会同时包含公钥和私钥。此外,ASCII 封装的私钥块大约是我对应的公钥块的两倍大,这让我相信私钥块同时包含私钥和公钥,而公钥块只包含后者。

自从我创建密钥以来,到现在为止,我已经用一个文件备份了我的密钥,该文件包含我导出的私钥块,另一个文件包含我导出的公钥块。我的公钥块备份是否冗余,因此我只需保留私钥文件就可以安全吗?

我使用此命令来创建私钥文件:

gpg --export-secret-keys -a > private

并使用以下命令创建公钥文件:

gpg --export -a > public

答案1

是的,OpenPGP“密钥”和“秘密子密钥”数据包包含公有参数和私有参数。您可以使用以下方法验证这一点转储检查导出的密钥:

$ gpg --export-secret-key grawity|pgpdump
旧:密钥包(标签 5)(1854 字节)
    版本 4 - 全新
    公钥创建时间 - 2009 年 10 月 31 日星期六 14:54:03 EET
    Pub alg - RSA 加密或签名(pub 1)
    RSA n(4096 位)-...
    RSA e(17 位) - ...
    符号算法 - CAST5(符号 3)
    迭代并加盐字符串到键(s2k 3):
        哈希算法 - SHA1(哈希 2)
        盐 - 12 24 0f e1 5b 7e e2 46
        数量 - 65536(编码数量 96)
    四 - 91 a3 44 71 47 87 a4 ba
    加密的 RSA d
    加密的 RSA p
    加密 RSA q
    加密的 RSA u
    加密的 SHA1 哈希

这对于大多数非对称密钥系统都是正确的,而不仅仅是 OpenPGP。

相关内容