我将 [E] 子密钥从 ~/.gnupg 导入到不同的文件夹,并使用选项导出子密钥的公钥--homedir
。
我可以看到子密钥的公钥的行数少于主公钥的行数,使用差异结果表明它们的一些起始行相同,但是底部的行不同,所以最后它仍然是不同的公钥。
我的问题:它们是不同的公钥吗?(我仍然需要在这里再次确认)。如果它们不同,那么使用子密钥的加密/解密是独立的,并且与主密钥和其他子密钥无关?
我将 [E] 子密钥从 ~/.gnupg 导入到不同的文件夹,并使用选项导出子密钥的公钥--homedir
。
我可以看到子密钥的公钥的行数少于主公钥的行数,使用差异结果表明它们的一些起始行相同,但是底部的行不同,所以最后它仍然是不同的公钥。
我的问题:它们是不同的公钥吗?(我仍然需要在这里再次确认)。如果它们不同,那么使用子密钥的加密/解密是独立的,并且与主密钥和其他子密钥无关?
在非对称密码学中,您总是处理密钥对。每个密钥都有一个对应的公钥。所以回答你的第一个问题:是的,主密钥对的公钥与其从属密钥对的公钥不同。
我试图重现您的实验并创建了一个带有主键(ID 0xA6271DD4)和从属键(ID 0x5336E1DC)的 GnuPG 测试键。然后我将从属密钥导出到一个文件并检查它包含哪些数据包。
请注意,用户 ID 和秘密从属密钥都由主密钥签名。乍一看,似乎主密钥和从属密钥都被导出了。显示有关第一个秘密数据包的更多信息。
在 GnuPG 中导出密钥时,始终会导出相应的公钥。所以这个密钥包包含一个 2048 位的公钥加上可能的 17 位散列。但是密钥本身丢失了,只导出了一个存根:
gnu-dummy S2K, algo: 0, simple checksum, hash: 0
. 总结一下:当导出一个秘密子密钥时,你总是用它导出公共子密钥和公共主密钥(验证签名所必需的)。您写道,您的公共子密钥的行数少于公共主密钥。我无法重现。使用 GnuPG,您可以导出没有任何子密钥的公钥,在上面的示例中通过命令
gpg --export A6271DD4! > pubkey.gpg
(请注意感叹号)。另一方面,不能只导出一个公共子密钥。但是如果将主密钥与主密钥加上它的子密钥进行比较,后者自然会有更多的行。因此,为了更好地理解您的观察,最好知道您使用的确切命令。