bcrypt.compare容易受到时间攻击吗?

5
在Node.js Web开发中,我看到使用bcrypt对密码进行哈希和比较是一种常见的做法。但是,bcrypt.compare是否容易受到时间攻击的影响呢?
1个回答

8

原始帖子:

这取决于您使用的bcrypt模块的实现。bcrypt本身只是一个key derivation function,并不表示应该如何进行比较。理论上,一个将哈希值与天真的字符串===比较的bcrypt.compare函数可能会泄漏有关哈希值的信息。

然而,假设您指的是Node.js最广泛使用的bcrypt模块,那么bcrypt.compare函数是使用一个时间安全的CompareStrings函数来实现的。该函数在中断之前始终比较哈希中的所有字符,从而防止泄露比较失败的位置/时间。

重要更新:

上面提到的bcrypt.compare函数不再是时间安全的,然而这已经在各个地方(例如这里这里)讨论过了,并且共识似乎是这并不重要,因为bcrypt本身不容易受到时间攻击的影响:

加密哈希函数的一个期望属性是预像攻击的抵抗力,也就是说没有快捷方法可以生成一个消息,使得当对其进行哈希时产生特定的摘要。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接