如果服务器受损,如何防止中间人攻击?

api*_*gov 3 encryption cryptography rsa public-key

想象一下,服务器正在向其合作伙伴提供用户的公钥,以实现加密通信.但是,服务器无权访问私钥.

无论如何 - 假设服务器被黑客攻击并且它不发送所请求的公钥:

Alice请求Bob的公钥
Server发送Eve的公钥

Bob请求Alice的公钥
服务器发送Eve的公钥

Alice向Bob
Server解压缩消息发送消息,读取并重新打包 - >发送给Bob ...

Bob向Alice
Server 发送消息解压缩消息,读取并重新打包 - >发送给Alice ...

我的问题是 - 如何防止这种滥用?Alice如何确定她正在使用Bob的公钥,反之亦然?

bdo*_*lan 8

根据你刚才提出的计划,你不能.这里的关键(没有双关语意思)是,如果用于验证密钥有效性的方法受到损害,那么您将失败.

SSL试图通过创建一个签名链来避免这种情况 - 一些(非常谨慎地保护,并通过其他方法验证)钥匙标志另一个钥匙,签署另一个钥匙,签署爱丽丝的钥匙.通过验证链中的每个步骤,您(原则上)可以知道链是有效的 - 但如果链中任何步骤的私钥被泄露,您就会丢失.

PGP(又名GPG)尝试以不同但类似的方式解决问题 - 密钥可以由任意数量的其他密钥签名,形成图形(称为信任网).您可以选择一些已确认有效的密钥,例如,亲自验证它们,并将它们标记为可信任.然后,任何可通过少于N个步骤(和/或来自不同受信任根的M个不同路径)可到达的密钥也被认为是有效的.

如果你真的是偏执狂,你当然可以将钥匙交给另一个人.当然,他们必须确定这不是伪装成你的人......

也就是说,验证密钥有效性的唯一真正万无一失的方法就是自己生成...除非你的硬件/操作系统/编译器/大脑也受到了损害:)