我正在使用PGP加密并向朋友发送消息。 我已经读过使用对称密钥加密邮件,然后使用收件人公钥加密对称密钥。如果您有多个收件人,则对称密钥会多次加密,每个收件人加密一次,并添加到加密邮件中。如果您设置了一个标志,您还可以使用自己的公钥加密密钥,并将其添加到邮件中,以便您以后可以自己从已发送邮件文件夹中对其进行解密。
现在我想象加密的对称密钥将作为包含列电子邮件地址和加密的对称密钥的表嵌入到邮件中。一个收件人,例如约翰会通过这张表查看他的电子邮件地址,比如john@somewhere.com,找到它,然后知道该条目是他解码并获得对称密钥。
我的问题是为什么我无法在加密邮件中看到收件人列表?如果没有这个,接收者将不得不通过表中的每个条目并尝试解密它,直到找到他可以的一个。鉴于结果是随机数,对称密钥,任何接收者如何知道它都被正确解密,我想,除非他也尝试将任何尝试用作对称密钥,直到找到有效密码为止。
所以再次,我有点假设我应该能够在没有解密的情况下看到加密消息中的收件人列表,但我不能。发生了什么事?
答案 0 :(得分:0)
在OpenPGP术语中,保存用接收方的公钥加密的对称密钥的分组被称为“公钥加密会话密钥分组”。 Defined in RFC 4880 http://tools.ietf.org/html/rfc4880#page-17
在此数据包中仅存储公共加密密钥的密钥ID(不是其用户ID - 在大多数情况下是电子邮件地址)。收件人通过密钥ID搜索找到她应该解密的数据包(实际上这应该由PGP软件完成)。
收件人将始终知道对称密钥已正确解密,否则解密算法将失败。
这同样适用于使用随机密钥解密数据包 - 每个块密码在验证最后一个块的校验和时最终会失败。即使您删除了对称密码实现的校验和计算,您也只会收到垃圾数据:)