使用社会主义百万富翁协议 (SMP) 的 OTR 消息传递如何免受中间人的影响?

信息安全 加密 密码学 即时通讯
2021-08-15 06:34:06

所以想象下一种情况:

Alice 想与 Bob 发起OTR即时消息会话,但 Joe 是中间人。

Alice 使用 Diffie-Hellman 与 Joe(认为他是 Bob)协商一个共享秘密“X”。

Joe 使用 Diffie-Hellman 与 Bob(认为 Joe 是 Alice)协商另一个共享秘密“Y”。

现在 Alice 和 Bob 都知道他们已经建立了所谓的“未验证 OTR 会话”,这意味着他们是加密的,但他们都没有验证他们的身份(他们都不知道 Joe 的存在)。

所以据我了解,社会主义百万富翁协议应该是这个问题的解决方案。爱丽丝必须将她共享的秘密“X”与鲍勃的“Y”匹配,如果它们不匹配 - 他们就会知道他们中间有人(乔),不是吗?

无论如何……显然 X != Y 因为乔在中间。

现在,我想我理解社会主义百万富翁协议中的步骤,但仍然……我看不出是什么阻止了乔在爱丽丝面前假装他确实是鲍勃并使用 SMP 与她匹配他们共享的秘密“X”(他们都知道)?

我错过了什么吗?是什么使带有 SMP 的 OTR 免受 MitM 的影响?

2个回答

据我了解,SMP并不能防止中间人本身该论文的作者明确指出,

假设 Alice 和 Bob 正在使用 OTR 在线聊天并决定运行 SMP,但之前没有选择秘密并且没有比他们当前对话更安全的通道在这种情况下,他们仍然可以选择适当的秘密,但他们将更容易受到攻击。

SMP 协议用于比较该共享密钥,而无需明文发送,但该共享密钥必须已经存在。

否则,在爱丽丝看来,鲍勃和乔之间就没有区别了。出于同样的原因,爱丽丝和乔与鲍勃的眼睛相同。这将导致一个完美的中间人场景。

正如 George P 的链接论文中所述,问题在于“普通”Diffie-Hellmann 不提供我们通常定义的术语的身份验证(每一方证明他们是他们所说的真实的人或其他实体的能力,并供另一方验证该证明)。DH 的核心只是在不安全的网络上提供了一种安全的密钥协商方式;观察者(有人轻敲线路并以只读方式嗅探数据包)无法破译派生密钥。但是,控制两方之间一个节点的人,一个真正的中间人,可以伪装成与另一方通信的每一方,并通过解密和重新加密来窃听对话。

要使用 SMP 解决这个问题,Alice 和 Bob 都必须知道 Joe 不知道的一些事情(共享秘密)。然后他们使用 SMP 算法来验证对方是否知道相同的共享密钥。如果在证明期间产生的值匹配,那么每一方现在都知道对方知道相同的秘密,所以他们知道(假设秘密没有被泄露)他们一直在与正确的人交谈,因此他们知道通过 DH 为 SMP 证明协商的两个密钥中的一个或两个都可以安全地用作对话的对称密钥,因为这些密钥是秘密传输中固有的,不可能在不影响结果的情况下被欺骗SMP 证明。

这不是向 DH 交换协议添加身份验证的唯一方法。STS 协议建立在 Diffie-Hellman 之上,使用可以独立验证为真实的公钥证书,并在协商过程中增加了几个步骤。一旦每一方都知道共享密钥K,因此知道或可以计算g x mod pg y mod p(其中xy是为 DH 生成的每一方的随机秘密),这两个值在比特流中连接,散列,使用发送者的私钥进行非对称加密,然后使用共享密钥进行对称加密,然后发送给可以(理论上)的另一方) 解密并验证签名,从而验证发件人。作为协商过程的一部分,双方都必须这样做,因此该方案将双向身份验证纳入系统。