只要您可以信任电子邮件提供商(即 Google),这种方法就非常安全。
关于 MITM 攻击的所有其他答案通常都是正确的。在这种特殊情况下,当在同一个提供商内操作时,可以成功地进行额外的考虑。
1. 乔不能(轻易)被冒充
从十年前开始,任何人都可以向您发送一封来自“一个名叫乔的人”的精心设计的电子邮件,甚至可以donaldjaytrump@whitehouse.gov
使用看起来是乔的公钥的邮件。最小的提供商(非常非常小的电子邮件服务器)可能不会执行 SPF 策略。
在同一个电子邮件提供商中,Gmail 也是如此,会进行额外检查以确保没有人可以伪造 Gmail 发件人地址。必须破解 Joe 的帐户,这超出了范围。
简而言之,假设 Joe 不会被黑客入侵就足以说明 Joe 不会被恶意第三方冒充,并且来自 Joe 的邮件实际上来自Joe 的电子邮件帐户中的 Joe。
2. 你(必须)信任你自己的提供者
由于您使用相同的提供商,我必须假设您信任它。无论谷歌在这种特殊情况下如何值得信赖,从安全的角度来看,都只剩下一个攻击向量。提供者应该足够流氓,用伪造的公钥更改 Joe 的公钥,从而破坏安全通信。
我的意思是,唯一能够破坏对话安全的行为者就是Google Inc.
他们自己,因为第 1 点和电子邮件不会离开他们自己的系统。
回答您的疑虑
Google 知道我的公钥(但不知道 Joe 的,因为它嵌入在加密的 blob 中)。不过,这实际上并不重要,不是吗?他们不能用我的公钥做任何事情吗?它唯一可以用来加密只有我可以解密的单向文本,因为只有我的计算机上有私钥?
假设第 2 点被打破,Google 可以冒充您并使用他们知道的密钥更改您自己的公钥,并根据他们的意愿重新加密和重新签署消息。
他们只有一次行动的机会,那就是你的第一封电子邮件“你好乔,这是我的公钥 ABCDEF”
如果他们决定操纵我的初始电子邮件消息,更改我发送给 Joe 的密钥,那么我将无法读取 Joe 的回复,因为它不再使用我的公钥加密,而是使用 Google 截获的密钥。这意味着除了我最初的电子邮件和他的第一个回复(谷歌可以阅读)之外,乔和我不会进行任何对话,但在那之后,由于我无法阅读/解密他的回复,什么都没有发生?
谷歌将不得不窃听和转码你交换的信息。如果发生这种情况,您将无法检测到攻击,因为两者最初都信任错误的密钥。
电子邮件 MITM 示例(与 Alice、Bob、Charlie 一起)
查理是一个流氓电子邮件服务提供商
爱丽丝(通过查理):
你好 Bob,这是我的公钥 ABC983(随附的密钥材料)
Charlie 生成一个新的密钥对并替换消息
你好 Bob,这是我的公钥 ZZZ765(随附的密钥材料)
Bob 接收到文本,用 key 加密新消息ZZZ765
,这是一个流氓密钥,并将 ZZZ765 存储在他的信任库中。然后将以下电子邮件发送给查理进行交付
很高兴认识你 Alice,请使用 DEX258 作为我的密钥。
---使用ZZZ765加密,使用DEX258签名---
Charlie 截获电子邮件,使用 ZZZ765 解密以获取明文,然后生成新的密钥对。
查理将以下电子邮件发送给爱丽丝
很高兴认识你 Alice,请使用 FGN754 作为我的钥匙
---使用ABC983加密,使用FGN754签名---
Alice 将信任其信任库中的流氓密钥FGN754
。
双方将发誓,直到他们在酒吧见面的那一天,他们已经真正安全地交谈过。
令他们惊讶的是,他们会发现他们使用了错误的密钥,并且原始电子邮件与他们的“已发送邮件”文件夹不同。故事的结局