bcrypt.compare是否容易受到时间攻击

时间:2016-02-25 07:31:17

标签: javascript node.js security bcrypt

在Node.js Web开发中,我认为使用bcrypt进行散列和密码比较是一种常见做法。 bcrypt.compare是否容易受timing attack影响?

1 个答案:

答案 0 :(得分:2)

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

但是,假设您引用了Node.js中使用最广泛的bcrypt模块,bcrypt.compare函数是使用时序安全CompareStrings函数实现的。此函数始终在打破之前比较散列中的所有字符,这可以防止它显示比较失败的位置/时间。