SRP 如何防止中间人攻击?

信息安全 密码 验证
2021-08-29 04:00:06

SRP旨在抵御主动和被动攻击,SRP 如何防止中间人攻击和数据包修改攻击?

1个回答

SRP 是一种密码验证密钥交换算法。一种有缺陷但简单的查看方式是客户端和服务器共享一个秘密,算法在该秘密上进行扩展;尝试中间人攻击的攻击者不知道秘密,并且无法成功地模拟客户端或服务器(或两者,在真正的中间人攻击中)。

我上面描述的是“只是”使用密码作为(预共享)密钥。PAKE 算法走得更远,需要大量数学,能够容忍低熵的共享秘密(即密码):观察交换的攻击者,甚至试图冒充客户端或服务器,都不会学习任何可以让他“在家尝试密码”的东西(即他不会从算法中得到密码的哈希值),这就是所谓的离线字典攻击这是通过带有经典键交换和承诺的微妙舞蹈完成的。

最容易理解的是加密密钥交换,其中交换是普通的Diffie-Hellman,但客户端和服务器都使用密码“加密”它们发送的内容。“加密”算法必须使得使用错误密码解密仍然会产生看起来像正常 DH 消息(该组的另一个元素)的东西。想要运行离线字典攻击的攻击者会想要“重新定位”给定的交换,通过做一些相当于“让我们想象在过去的交换中,我使用了密码P ”。使用 EKE,任何使用其他密码而不是他实际使用的密码的“重定向”都会将攻击者留在 DH 密钥交换之外,

(我说的是“最容易理解”,而不是“简单”。密码学家需要一些时间来思考 PAKE 算法中真正发生的事情,我的一个朋友曾经将其描述为“一个小奇迹”。)

无论如何,PAKE 算法是一种密钥交换,并产生一个共享密钥K。仍然由客户端和服务器使用K来加密和保护后续数据包,使用对称加密和 MAC 的常用工具。这就是为什么 SRP 最好用作SSL/TLS的一部分,后者提供了隧道传输长数据流的机制。