Bra*_*sie 5 cryptography password-protection password-encryption
给定:
$ salt - 伪随机生成的足够长度的字符串
$ pepper - 一个足够强大的私钥,只有存储密码的数据库管理员才知道
你会看到吗?
$ hash = bcrypt(hmac($ userpassphrase,$ pepper),$ salt)
有意义地优越于
$ hash = bcrypt($ userpassphrase,$ salt)
考虑到管理/储存胡椒和盐的额外负担?
我的假设是,hmac没有显着增强产生的$ hash,并且存储$ pepper的负担超过任何所谓的好处......但我希望听到知情意见.
键控哈希或 HMac 用于验证数据源,而不是用于密码保护。例如,如果你和我有一个共享密钥,我可以将一些数据连同计算出的 hmac 一起发送给你,你可以使用相同的密钥来检查 hmac 哈希值是否匹配,如果匹配,你就知道数据来自我,并没有被改变。
您无法在计算机上有效隐藏攻击者无法访问的秘密密码,您要做的就是添加一层模糊性。在没有共享密钥的情况下使用 HMac 本质上与执行 SHA($userpassphrase, $salt) 相同,这非常容易计算,因此一旦“秘密”被使用,就不会为您的密码散列方案添加任何有意义的安全性。 ” 密码是已知的。
bcrypt 的全部目的只是减慢哈希过程,因此攻击者需要很长时间才能为您的盐生成彩虹表。如果你想让你的密码哈希方案更加安全,只需增加原始哈希函数的成本即可。在 bcrypt 中,您可以指定“logRounds”的数量(我认为这就是他们所说的),即执行哈希的次数。如果您指定 logRounds 为 15(默认值为 10),则哈希将执行 2^15 = 32768 次,这会显着减慢速度。执行哈希所需的时间越长,攻击者破解它所需的时间就越长。
| 归档时间: |
|
| 查看次数: |
1100 次 |
| 最近记录: |