为什么散列(SHA1)密码的最常用的前缀是“00000”?

问题描述 投票:6回答:3

我读特洛伊亨特的博客(https://www.troyhunt.com/ive-just-launched-pwned-passwords-version-2/)后,约一个名为“密码PWNED”功能来检查,如果你的密码是与超过十亿泄露密码的数据库。

做此项检查没有通过您的密码,客户端代码的哈希,并通过只是这哈希的前五个字符,后端返回与您传递的前缀开始的密码的所有SHA1哈希值。然后,要检查,如果你的密码的哈希值是在数据库与否,比较客户端代码所做的。

他把这些哈希密码的数据的一些信息...

  1. 从00000到FFFFF每哈希前缀用数据填充(16 ^ 5组合)
  2. 哈希返回的平均数量是478
  3. 最小的是381(哈希前缀“E0812”和“E613D”)
  4. 最大的是584(哈希前缀“00000”和“4A4E8”)

在评论,人们想知道,这“00000”的存在是巧合还是数学?

可能有人能理解SHA1算法解释给我们吗?

algorithm hash passwords sha1
3个回答
1
投票

有人会需要检查我的猜测对SHA1算法(特洛伊可能已经揭穿它,因为按照他的博客中回答他“在[明文]密码了峰值),但因为密码只是字母/数字和有限的符号在ASCII创造一个哈希将始终启动与ZERO(ASCII是0-255,但字母数字和符号使用在32-98范围内,我相信,所以每8位的第一位永远为零)的第一位工作描述,虽然它是散列的函数来掩饰此,我怀疑预见位的定位是不容易混淆为一体的期望。而它与4的联系,0是在比特形式00000000和4是00000100所以两者具有第一FIVE位作为0,

还注意到,两个最低频繁散列头都与E,其在二进制11111110开始,所以它们在结构(1的对0的)和频率(低VS高)这意味着零个比特的存在可能是一个侧几乎完全相反的任一算法完全(可疑)或按照惯例偏斜的有限子集的算法的功能的效果,换言之,字母和数字仅占据1 /第三 - 由ASCII所描绘的全范围的1/4,其是最可能的

当然我们可以去“锡箔帽”这个康沃,但我打赌巧合和ASCII超过人类归咎于草地小丘


13
投票

好了,既然密码最初是从数据泄露过来,我最好的猜测是,在破坏系统的一个密码表进行排序或由(无盐 - 这些都是那种人的人得到他们的密码被盗)聚集的SHA1哈希密码。当系统被攻破,攻击者开始与“00000”散列,只是没能一路过关斩将...

或者,也许是特洛伊使用的列表包括SHA1彩虹表(https://en.wikipedia.org/wiki/Rainbow_table)的第一部分...

或类似的东西。其基本思路是,密码的SHA1哈希是密码选择过程的一部分。


8
投票

它要么是巧合,或(不太可能)获得或组装用于出版物的结果的伪影/错误。

不,它看起来像一个显著异常。该定律描述的价差(381分钟,平均478,584最大)似乎是一个甚至蔓延样品量。整个语料库的曲线可能会看起来很随机的。

像任何合理构造散列算法,在SHA1结果字符频率应随机分布的。 (如果SHA1有某种偏见,这将是在数学和加密/密码学社区的重大新闻!)

© www.soinside.com 2019 - 2024. All rights reserved.