Bcrypt在散列密码方面并不那么安全
Bcrypt not that secure at hashing passwords?
我正在使用bcrypt来生成盐和哈希密码,但我认为它做得不是很安全。当我使用以下代码时:
bcrypt.genSalt(10, function(err, salt) {
user.salt = salt;
bcrypt.hash(password, salt, function(err, hash) {
user.hashed_password = hash;
console.log(user.salt);
console.log(user.hashed_password);
user.save(function(err) {
if (err) console.log(err);
console.log("saved");
});
});
});
在一个例子中,盐是:$2a$10$mFFjRpY1Vrq7Fy1fFp0fMO
,hashed_password是:$2a$10$mFFjRpY1Vrq7Fy1fFp0fMOVnlv9cKgAFdCQ5xdtlP6UoKz90i1FMu
散列密码的开头与盐完全相同。如果攻击者可以访问盐,他不能从hashed_password中删除盐并暴力破解或使用预定哈希值表来确定密码吗?
我一直认为这应该是散列密码的顺序:
hash(salt + password)
不:
salt + hash(password)
散列密码的开头是盐,因为您需要访问盐才能验证密码。
你看到的数据既不是哈希(盐+密码(也不是盐+哈希(密码(——它的形式是
salt + hash(salt + password)
如果攻击者获得了对此数据的访问权限,则:
- 他们当然可以(理论上(暴力破解密码 - 没有任何技术可以阻止这一点,但速率限制使攻击不切实际。此实例中使用的哈希函数专门设计为需要很长时间才能运行,间接限制攻击的速率。
- 他们不能使用标准的哈希表来找出密码 - 这是因为哈希值也包含唯一的盐。当然,盐是明文的,所以可以计算出一个表,但由于盐对于每个散列密码也是唯一的,这并不比暴力攻击更好。
相关文章:
- 如何在读取XLS/XLSX本地文件时,使用IE的javascript代码启用未标记为安全的ActiveX控件
- 使用javascript存储变量的最安全方式
- 是否存在React Native“;WEB代码安全防护”;
- 内容安全策略:页面's设置阻止加载资源
- 如何通过安全的https连接在javascript中使用基于soap xml的Web服务
- 导致内容安全策略(CSP)冲突错误的本地jquery.js文件
- 如何在服务、技能、投资组合等方面添加滑动效果
- 如何在Google chrome安全首选项文件中创建扩展安全哈希代码
- ES6 模板文字是否比 eval 更安全
- CORS保持在SecurityError上:操作不安全
- 旋转木马;启用内容安全策略时无法工作
- 从自己的安全系统中重新找回自己
- Typescript在语法方面与es6/es7有多大不同
- 关于ajax的安全问题
- 如何使用app和secret进行安全的解析初始化
- 是一个javascript bookmarklet,可以设置破坏跨域安全的域cookie
- Extjs、Chrome扩展和内容安全策略
- createObjectURL blob url在Firefox中不安全
- java安全doPrivileged方法如何阻止任意脚本
- Bcrypt在散列密码方面并不那么安全