我在2010年写给SHA-3邮件列表的一封信: 发件人:Zooko O'Whielacronx 收件人:hash-forum 日期:2010-10-14 03:46 UTC 各位: 如果一个哈希具有32位的前像抗性,这意味着攻击者可能需要花费大约2³²的资源来找到一个前像。 如果一个哈希具有64位的前像抗性,这意味着攻击者可能需要花费大约2⁶⁴的资源来找到一个前像。 如果一个哈希具有512位的前像抗性,那意味着什么呢?攻击者可能需要花费大约2⁵¹²的资源来找到一个前像?这是一个毫无意义的讨论,因为在这个宇宙的生命中,2⁵¹²的资源永远不会存在,所以这不能意味着那样,或者如果确实意味着那样,那么讨论“512位前像抗性”就没有意义了。也许它意味着其他东西? 通过类比,假设你考虑建造一座能够承受10³吨压力的桥。你也可以考虑一座能够承受10⁶吨压力的桥。如果这座桥被部署在一个可能承受超过10³吨但少于10⁶吨的情况下,那么这将是一个非常重要的区别。 但是讨论一座能够承受10¹⁵⁰吨压力的桥的设计意味着什么呢?这样的压力永远无法施加在桥上。区分一座能够承受10¹⁵⁰吨压力的桥和另一座能够承受10³⁰⁰吨压力的桥有什么价值吗?即使它们都无法经历10¹⁵⁰吨的压力,也许后者的桥在面对某种其他威胁时仍然会更安全——例如建筑者或设计者的错误,或者一个未包含在我们用来评估桥的模型中的压力事件。 或者也许不是。也许设计为承受10³⁰⁰吨压力的桥在遭遇这种不可预测、未建模的事件时实际上更容易失败。谁能说得清? 一个合理的立场是,NIST规定某些SHA-3哈希必须具有512位前像抗性是一个错误。(如果这是一个错误,那么在这个时刻我真的不知道该怎么做!) 这个立场认为,需要一种哈希函数,其CPU时间远远超过SHA-3-256,以提供攻击者在其中找到前像的可能性远低于SHA-3-256,但这种“远低的可能性”在任何有意义的意义上与“512位前像抗性”的概念没有相关性。 另一个合理的立场是,已知最多具有384位前像抗性的哈希函数比已知最多具有512位前像抗性的哈希函数更容易失败。这是我对哈希函数密码分析的有限理解的终点。这合理吗?如果我给你两个这样的哈希函数,你是否有信心在找到前像之前能学会在前者中找到前像?你有多确定?是否有可能情况正好相反——你会在找到前者的前像之前发现找到后者前像的方法? 如果有真正的哈希函数密码分析专家并且持有后者立场的人能解释他们所说的“更容易失败”是什么意思,我会很感兴趣。 无论如何,我很确定作为哈希函数的用户,我关心的是“更容易失败”(以及效率),而不是关于任何超过大约128位的“安全位数”(包括考虑量子攻击、多目标攻击等)。 感谢您花时间阅读这封信。 此致, Zooko Wilcox-O'Hearn
4.7K