我一直在阅读与此相关的问题和答案,但没有人提出这个问题,是否有缺陷?
我认为这种方法可以防止密码泄露和重放攻击,只要随机字符串不可预测且无法在合理的时间内重复使用。
此算法是否有任何缺陷?
答案 0 :(得分:1)
我看到的最大问题是你正在解决已经解决过的问题(通过SSL),如果你不在你的方案中使用SSL,你仍然会接触到man-in-the-中间和会话劫持漏洞。如果 已经使用SSL,那么这就是不必要的复杂性,而且正如我们所知,复杂性对安全性不利。
因此,算法中的缺陷是您没有保护通信通道。如果没有它,您的算法就不是特别安全了,因此,您的算法并不是特别必要。
答案 1 :(得分:0)
我同意之前关于使用SSL的答案,但我将在此专门讨论该算法。
要破解您的算法,攻击者需要执行以下操作之一:
假设攻击者知道或可以猜测您使用的哈希算法。
有几种方法可以实现(1)超出算法范围的方法。通用密码,密码重用等。
散列密码(2)本质上也是一个密码,因为您将接受任何提交散列密码+随机明文的人。因此,如果攻击者可以在客户端或服务器上找到散列密码,那么他就可以登录到您的站点。
(3)很有趣,并且可能是攻击向量。如果没有SSL,攻击者可以嗅探以找到(3)中的两个元素 - 他将听到来自服务器的随机明文,然后是双散列密码进入服务器。然后他可以使用密码猜测工具来确定原始密码。从常用密码列表开始,哈希,添加明文,然后再次哈希。破解所需的时间取决于密码的强度和散列算法的大小。他也可以尝试使用彩虹表来找到'哈希密码'+'随机明文'字符串。
通过找到防止攻击者嗅探交换的方法,可以提高您的安全性。