我注意到,如果我将 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。