裁剪的哈希是否更难破裂?

Ema*_*sev 3 php security authentication hash md5

裁剪散列应该意味着丢失它代表的一些数据,所以我想知道裁剪的散列是否更难破解,更具体地说,如果存储用于用户身份验证的裁剪密码哈希是一个值得研究的想法.

sar*_*old 7

将这个想法发挥到极致:假设您只存储散列密码的第一个十六进制字符.

您的所有用户密码将散列为16个值中的一个:

0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
Run Code Online (Sandbox Code Playgroud)

我承认John The Ripper很难对这些密码进行强制解码,但它也会让人猜测另一个用户的密码平均大约8次尝试.

糟糕!

如果有的话,你应该存储更长的哈希值.再好好加盐.

  • @PeeHaa:我希望为了你的用户,强迫你强大的密码更多的是[`pwqgen`](http://www.openwall.com/passwdqc/screenshots)建议的那种.:) (2认同)

Dav*_*ner 5

我在上面评论中发布的内容的快速摘要:

裁剪哈希将导致更大的冲突可能性.当两个值导致相同的散列时发生冲突.良好的散列函数通常具有非常低的冲突率,但是当您从生成的散列中删除字符时,您逐渐增加了删除使该散列与另一散列不同的机会.

换句话说:不,裁剪的哈希不会更安全,实际上安全性会大大降低.唯一的价值就是让"解决"你的哈希的攻击者在另一个系统上使用结果稍微困难一些.但是,他们可以在您的系统上正常使用结果.

另一方面,对哈希值进行盐析使得它不易受彩虹表和其他强力解码方法的影响,同时仍能将碰撞保持在最低限度.

此外,应该注意的是,当您查看将哈希裁剪为密码保护功能时,您实际上是在发生冲突.我认为你考虑这个问题的唯一原因是你不希望攻击者能够在另一个网站上使用别人的密码,因为显然你不会自己受益.删除的位越少,冲突集越小,因此攻击者仍然可以恢复(或至少猜测)原始密码的可能性越高.

例如:

如果攻击者发现,a6shp并且ghsa2apple所有减少到相同的裁剪哈希那么1)他们已经能够登录到你的系统中,他们遇到的第一个工作结果的那一刻,也是2)他们将有一个不错的主意,其结果是实际上是密码.如果裁掉如此多的数据,确实会有成千上万的组合匹配,那么它就会变得更难(但不是那么难),但现在你自己系统的安全性却大大降低了.这种情况一直持续到冲突数接近无穷大为止.