如果某人拥有BCrypt的加密功能,并加密密码字典并将其存储在CD上。获取对数据库中哈希密码的访问权限,他们不应该能够访问吗?
我希望答案是否定的。如果是这样,为什么不呢?
答案 0 :(得分:3)
Bcrypt与其他PBKDF功能一样,包括盐渍和拉伸。 Salting意味着它会使用密码添加一些额外的随机数据。盐是公开的。所以,例如,如果我的盐是“f588d29a”而我的密码是“密码”,那么我实际上要散列的是“f588d29apassword”(这不是bcrypt如何做到的,但它是等效的。)
在salting之后,你将哈希(更多在一秒钟内),输出将是:“f588d29a, hash ”。所以每个人都知道盐和哈希。但是现在你的彩虹表包含“密码”并没有任何用处。您需要“f588d29apassword”以及“aaaaaaaapassword”以及“aaaaaaabpassword”以及...密码哈希的很多。这样可以大大增加您所需的时间和空间。更长的盐可以使攻击者任意努力,而后者的成本非常低。这是使彩虹表基本没用的部分。即使我发现多个人使用相同的密码,他们的哈希值也会有所不同,所以我的表格无效。
bcrypt(和其他PBKDF)的后半部分正在拉伸,这意味着执行散列函数是时间密集的。我们通常会说几十毫秒,所以这对人类或一个哈希来说并不是什么大不了的事,但它会让密码猜测变得更加昂贵。