【问题标题】:Why the most common prefix of hashed (SHA1) passwords is "00000"?为什么散列 (SHA1) 密码的最常见前缀是“00000”?
【发布时间】:2018-08-02 14:58:17
【问题描述】:

我在 Troy Hunt 的博客 (https://www.troyhunt.com/ive-just-launched-pwned-passwords-version-2/) 上阅读了一篇关于名为“Pwned Passwords”的功能,该功能可检查您的密码是否在包含超过 10 亿个泄露密码的数据库中。

要在不传递密码的情况下执行此检查,客户端代码对其进行哈希处理并仅传递此哈希的前五个字符,后端返回以您传递的前缀开头的密码的所有 sha1 哈希。然后,为了检查您的密码的哈希是否在数据库中,对客户端代码进行比较。

他还放了一些关于这些散列密码数据的信息......

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

在 cmets 中,人们想知道这个“00000”的存在是巧合还是数学......

有懂SHA1算法的人给我们解释一下吗?

【问题讨论】:

    标签: algorithm hash passwords sha1


    【解决方案1】:

    好吧,由于密码最初来自数据泄露,我最好的猜测是,其中一个被泄露系统中的密码表是由(未加盐的——那些密码被盗的人)排序或聚集的密码的 SHA1 哈希。当系统被攻破时,攻击者从“00000”哈希开始,但并没有成功……

    或者,Troy 使用的列表可能包括 SHA1 彩虹表的第一部分 (https://en.wikipedia.org/wiki/Rainbow_table)...

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

    【讨论】:

    • "当系统被攻破时,攻击者从 "00000" 哈希开始,但并没有成功" 这看起来确实很有可能,而且很明显!理论上,00000 不应该比 FFFFF 更多/更少。为了评估 4A4E8 频率的含义,知道它是否比下一个更频繁会很有趣;它不应该,否则 SHA1 会“更喜欢”生成一定范围的哈希
    【解决方案2】:

    这可能是巧合,或者(不太可能)是在获取或汇总结果以进行发布时出现的人为因素/错误。

    并不是说它看起来像一个显着的异常值。所描述的分布(381 分钟,478 平均,584 最大值)似乎是样本量的均匀分布。整个语料库的图表可能看起来很随机。

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

    【讨论】:

    • 或者(可能更不可能),人们故意选择 SHA1 以 00000 开头的密码。
    【解决方案3】:

    有人需要根据 sha1 算法检查我的猜测(特洛伊可能已经揭穿了它,因为根据他的博客回答,他“在 [纯文本] 密码方面达到了顶峰)但由于密码只是字母/数字和ASCII 中描述的有限符号创建散列将始终以零的第一位开始工作(ascii 是 0-255,但我相信使用的字母数字和符号在 32-98 范围内,所以每 8 位的第一位始终为零)虽然它是散列的函数来掩盖这一点,但我怀疑可预测的位定位并不像人们期望的那样容易混淆。虽然它与 4 联系在一起,但 0 是位形式的 00000000,而 4 是 00000100,所以两者都有第一个五位为0,

    还请注意,两个最不频繁的哈希标头都以 E 开头,在二进制中是 11111110,因此它们在结构上几乎完全相反(1 与 0)和频率(低与高)暗示零位的存在可能完全是算法的副作用(可疑)或算法对约定偏斜的有限子集的函数,换句话说,字母和数字仅占 ASCII 描述的全部范围的 1/3 - 1/4很有可能

    当然我们可以和这个车队一起去“锡箔帽”,但我敢打赌,巧合和 ASCII 比草地上的那个人更应该受到责备

    【讨论】:

    • 这些是十六进制数字,所以4 只是0100(一个前导0),而不是00000100(五个前导零)。同样,E1110,而不是 11111110
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多