Encryption 什么是PGP密钥?

Encryption 什么是PGP密钥?,encryption,cryptography,bouncycastle,pgp,secret-key,Encryption,Cryptography,Bouncycastle,Pgp,Secret Key,我正在开发一个C应用程序,它使用Bouncy Castle BC库实现的PGP对消息进行加密/解密。我知道PKI,但PGP中的密钥让我有点不舒服。我看了BC示例/源代码和PGP RFC,但发现了更多的问题 Secretkey==会话密钥吗 Secretkey==对称密钥吗 Secretkey==私钥发布/私钥对吗?至少以下内容似乎表明密钥是私钥 internal static PgpPrivateKey FindSecretKey(PgpSecretKeyRingBundle pgpSec, l

我正在开发一个C应用程序,它使用Bouncy Castle BC库实现的PGP对消息进行加密/解密。我知道PKI,但PGP中的密钥让我有点不舒服。我看了BC示例/源代码和PGP RFC,但发现了更多的问题

Secretkey==会话密钥吗

Secretkey==对称密钥吗

Secretkey==私钥发布/私钥对吗?至少以下内容似乎表明密钥是私钥

internal static PgpPrivateKey FindSecretKey(PgpSecretKeyRingBundle pgpSec, long keyID, char[] pass)
RFC说secretkey包含关于公钥的信息,或者可能是公钥本身——至少我是这么理解的

另外,在我读到的某个地方,Secretkey基本上是一个密码加密的私钥

何时/为什么我需要PGP协议中的密钥?签名还是加密


谢谢

在这种情况下,密钥是私钥。私钥可用于签名或解密。使用另一方的公钥执行加密和验证。如今,密钥大多被认为是对称密钥,但它也可能意味着私有密钥,尤其是在较旧的协议中


密码学中有很多这样的混淆,最好的办法是查看上下文。例如,如果有公钥,则密钥不能是对称的。

在这种情况下,密钥是私钥。私钥可用于签名或解密。使用另一方的公钥执行加密和验证。如今,密钥大多被认为是对称密钥,但它也可能意味着私有密钥,尤其是在较旧的协议中

密码学中有很多这样的混淆,最好的办法是查看上下文。例如,如果有公钥,则密钥不能对称。

引用:

密钥包包含在密钥包中找到的所有信息 公钥包,包括公钥资料,还包括 在所有公钥字段之后包含密钥材料

以及:

[…]可转让文件的格式 秘钥与可转移公钥相同,只是 使用秘密密钥和秘密子密钥包代替公共密钥包 密钥和公钥子密钥数据包。实现应该包括self- 任何用户ID和子密钥上的签名,[…]

换句话说,密钥包含公钥/私钥对(例如RSA),但也应该包含用户ID和自签名。提供有关如何构造导出密钥的更多详细信息。理解OpenPGP数据包组成的一个有用工具是gpg-list数据包[file]或pgpdump[file],它们转储其输入的数据包结构。

引用:

密钥包包含在密钥包中找到的所有信息 公钥包,包括公钥资料,还包括 在所有公钥字段之后包含密钥材料

以及:

[…]可转让文件的格式 秘钥与可转移公钥相同,只是 使用秘密密钥和秘密子密钥包代替公共密钥包 密钥和公钥子密钥数据包。实现应该包括self- 任何用户ID和子密钥上的签名,[…]


换句话说,密钥包含公钥/私钥对(例如RSA),但也应该包含用户ID和自签名。提供有关如何构造导出密钥的更多详细信息。理解OpenPGP数据包组成的一个有用工具是gpg-list数据包[file]或pgpdump[file],它们转储其输入的数据包结构。

我刚刚详细介绍了bouncy castle的源代码。私钥同时具有公钥和私钥对。对于公钥加密,这通常是正确的,因为您可以使用密码从私钥生成公钥。对于Bouncy Caste BC,通过Secretkey进行签名,使用从Secretkey和Secretkey中提取的privatekey对摘要进行加密!=对称密钥。Symmetricencryption密钥在运行时生成。谢谢你给我指明了正确的方向。你说得对。请注意,从私钥派生公钥不是理论上的要求。例如,创建具有大公共指数的RSA公钥是非常可能的,但不是非常明智的。RSA公共指数通常与私钥一起保存,即使在PKCS1/PKCS8等容器格式中也是如此。我可能会删除这个答案,以支持Jens的答案,他至少花了时间查找RFC:我只是稍微浏览了一下bouncy castle的源代码。私钥同时具有公钥和私钥对。对于公钥加密,这通常是正确的,因为您可以使用密码从私钥生成公钥。对于Bouncy Caste BC,传递Secretkey进行签名,并使用pri加密摘要
从secretkey和secretkey中提取的vatekey!=对称密钥。Symmetricencryption密钥在运行时生成。谢谢你给我指明了正确的方向。你说得对。请注意,从私钥派生公钥不是理论上的要求。例如,创建具有大公共指数的RSA公钥是非常可能的,但不是非常明智的。RSA公共指数通常与私钥一起保存,即使在PKCS1/PKCS8等容器格式中也是如此。我可能会删除这个答案以支持Jens answer,他至少花了时间查找RFC:我想把这个作为答案,但不知道如何做。投票三角形旁边的左侧有一个灰色的小复选标记,你可以单击它来选择答案。在中还有一个描述。我想以此作为答案,但不知道如何回答。在投票三角形旁边的左侧有一个小的灰色复选标记,您可以单击它来选择答案。书中也有描述。