我使用 openssl 制作了几组用于 s/mime 加密的证书(用于我拥有的各种电子邮件地址)。当帐户 1 向帐户 2 发送加密消息时,帐户 2 的私钥成功解密了该电子邮件。但是,帐户 1 的私钥也可以解密该电子邮件。
我使用我所知道的两种方法对此进行了测试,这两种方法让我选择一个特定的密钥进行解密:android 应用程序 FairEmail 和普通的 openssl。
我的理解是发件人使用接收者的公钥来加密消息。因此,接收者的私钥是唯一可以解密消息的密钥。基于上述情况,这似乎不是真的。我遗漏了什么吗?
答案1
我的理解是发送者使用接收者的公钥来加密消息
不完全是。发送者使用接收者的公钥来加密对称密钥(例如 AES 或 RC2 密钥),然后用于加密实际消息。
(请参阅“混合加密”或“混合密码系统”以了解原因。)
因此,接收者的私钥是唯一可以解密消息的密钥。
该消息具有同一对称密钥的多个加密副本 - 一个使用收件人的公钥加密,另一个使用发送者自己的公钥加密。
类似地,如果您将消息发送给五个收件人,它将拥有一份 3DES 加密消息数据的副本,但有六份 RSA 加密 3DES 密钥的副本 – 每个收件人一份,另加发件人一份。