不受该领域任何实际知识的束缚,我怀疑这不会“发生”。还是我想念什么?
#1 楼
自从2011年发布攻击方法以来,SHA-1实际上就已经“官方不安全”了很长时间。2017年的碰撞只是实际进行攻击的第一个已知案例。但是每个人都已经非常确信这次攻击是有效的,并且确实在2017年发生了碰撞,并具有预期的计算成本。冲突是指您发现两个散列为相同值的不同消息。在许多协议中,冲突无关紧要;重要的是对第二原像的抵抗力。第二个原像就像是一次碰撞,不同之处在于攻击者没有选择其中一个消息;而是选择了其中一个消息。攻击者被要求找到一对冲突的消息,第一个是固定的。查找第二张原像比查找碰撞要困难得多。对于具有160位输出的“完美”哈希函数(如SHA-1),可以用努力280找到冲突,而找到第二个原像则需要努力2160(即,再增加一千亿亿倍)。此外,尽管SHA-1中已知结构上的弱点,它可以将碰撞攻击的成本从280降低到263,从而使其“非常昂贵”,但尚无这样的弱点有助于第二张原像。 >
所以,目前,SHA-1对于第二个原像仍然非常健壮,并且任何使用SHA-1并依赖于第二个原像抵抗的协议都可以暂时保持这种状态。
棘手的问题是确定给定协议是否依赖于第二个原像,或者冲突是否会影响它。 SAML是一个复杂的野兽。它似乎将SHA-1与数字签名结合使用,并且这依赖于第二个原像,但在某些情况下,除非攻击者可以选择要签名的部分数据,否则攻击者可能希望在“无害数据”和恶意数据。对于已发布的SHA-1碰撞,这是使用PDF文件完成的,因为PDF格式具有足够的灵活性,可以将仅几位的差异变成任意的视觉效果。行动是迁移到SHA-256。这样做没有绝对的紧迫性。但是如果从现在开始十年后仍然使用SHA-1,那么这意味着您的软件管理非常糟糕(这比SHA-1的弱点更有可能是一个问题)。
评论
$ \ begingroup $
评论不用于扩展讨论;此对话已移至聊天。
$ \ endgroup $
– e-sushi
17年6月16日在19:57
#2 楼
使用散列函数时,“完全可以”和“完全损坏”之间存在很大的鸿沟。现在,sha1碰撞攻击就像这样。
攻击者选择一个共同选择的前缀。
攻击者生成实际的冲突块。
攻击者选择一个共同选择的后缀。
攻击者现在拥有两个具有相同sha1哈希的文件。这些文件仅在碰撞块中有所不同。
这很重要,但是很难付诸实践。这两个文件必须同时包含“好”和“坏”数据,并且必须采用某种形式的逻辑来选择基于碰撞块内容使用的逻辑。
攻击的下一步是“独特选择的前缀”冲突攻击。通过选择独特的前缀冲突攻击,攻击者可以进行攻击。
选择两个单独的前缀,一个“好”一个和一个“邪恶”一个。
生成冲突块。
选择一个常见的后缀
这会更加危险。攻击者只需控制“良好”数据的一小部分,并预测其余部分。 “冲突垃圾”的数量可能很小,并且可能隐藏在诸如注释字段或RSA密钥之类的东西中。
发现了针对md5大约3个不同的前缀冲突攻击在对md5的首次碰撞攻击被发现多年之后。后来,它被证书颁发机构利用以产生红色的CA证书。除了独特选择的前缀冲突攻击之外,此漏洞利用还依赖没有对序列号进行随机化的证书颁发机构。至少有可能在不久的将来找到一个,并且/或者已经找到一个,但是发现被保密了。
对散列函数的最终攻击是第二次原像攻击。这样的攻击实际上可能破坏基于散列的每个密码系统,但是原映像攻击在计算上比冲突攻击要困难得多。据我所知,即使是MD5也没有已知的在计算上可行的原像攻击(有一种理论上的攻击比蛮力要容易一些)。
评论
真正的问题是,您是否希望您的软件无缘无故地依赖散列哈希:P