Alice 如何知道 Bob 的公钥?
Alice 有几种方法可以验证 Bob 的公钥,每种方法都有自己的优缺点。
直接和亲自
这可能是最安全的方法。爱丽丝和鲍勃亲自见面,交换并可能签署彼此的公钥。这将使任何人几乎不可能篡改这个过程。
缺点应该很明显:这种方法对于不定期见面的人来说是不可行的。世界各地的人们需要投入大量资金才能见面,只是为了交换钥匙。
通过 Bob 的服务器
Bob 有一个 Web 服务器,由适当的 TLS 保护,并在那里提供他的公钥作为下载。虽然这比亲自会见 Bob 方便得多,但也存在妥协的风险。
如果 Eve 能够访问 Bob 的服务器并生成她自己的密钥对,她就可以用她自己的公钥替换 Bob 的公钥。一旦人们试图向 Bob 发送消息并且他将无法解密它们,这一点就会变得很明显,但此时可能已经为时已晚。
通过密钥服务器
Bob 没有自己托管密钥,而是将他的密钥上传到密钥服务器并链接到它。这与之前的方法非常相似,但将风险从 Bob 转移到了控制密钥服务器的人身上。
此外,攻击者可以以 Bob 的名义创建一个假公钥(“Evil Bob”),并另外为 Bob 的朋友创建假公钥,从而围绕“Evil Bob”创建一个假信任网络。
通过“直接消息”
一种天真的方法是在 Twitter、WhatsApp 或类似平台上向 Bob 发送消息,询问他的公钥。这里的问题是你无法真正验证这是否真的是他。攻击者可能已经访问了他的帐户并为“Evil Bob”分发了假公钥。
VoIP 系统可能会更好,但并不像人们想象的那么完美。
是否有可能欺骗某人,以便他们使用假公钥?
是的,如上所述。Bob 不直接和亲自给您密钥的任何情况都可能受到损害。
但是有保护措施。人们可以签署 Bob 的密钥,从而为 Bob 担保。这些联系越紧密地交织在一起,伪造钥匙就越困难。尽管如此,这是可能的。
Alice 如何保护自己免受 Eve 在她的设备上修改 Bob 的公钥?
假设是 Eve 能够利用 Alice 的设备来修改 Bob 的私钥。
这种情况很困难,但并非不可能。每把钥匙都有一个指纹,实际上是两个指纹:“长”和“短”,用来识别钥匙。如果 Alice 要记住长指纹,那么 Eve 就不可能创建一个冲突并插入一个她控制的密钥,并且这足以让 Alice 将其误认为是合法密钥。
如果她只记住“短”指纹,那么它在技术上是可行的,尽管像 Alice 和 Bob 这样的普通人可能会先锁定高价值密钥。
在这种情况下,信任网络也会有所帮助,因为即使生成了虚假的信任网络,Alice 也不会信任这些密钥中的任何一个,因为她需要自己的私钥来签名(并且 Alice 已经保护了她的私钥)具有 Eve 不知道的强随机密码的密钥)。