GLEP 59:Manifest2 哈希策略及安全影响

作者 Robin Hugh Johnson <[email protected]>
类型 标准跟踪
状态 最终版
版本 1
创建日期 2008-10-22
最后修改日期 2022-04-06
发布历史 2009-12-01, 2010-01-31
需求 44
GLEP 源码 glep-0059.rst

状态

实施已完成。Gentoo 理事会于 2017 年 11 月 12 日决定将其标记为最终版。

摘要

虽然 Manifest2 格式允许使用多个哈希值,但关于哪些校验和应该存在、为什么存在以及此类校验和的安全影响的问题从未得到解决。本 GLEP 涵盖了所有这些问题,并对如何处理现在和将来使用的校验和提出了建议。

动机

本 GLEP 作为 Portage 树签名工作的一部分编写,但仅与 Manifest 的实际签名间接相关。校验和代表了树整体安全的一个潜在弱点——需要一个全面的安全计划。

本 GLEP 并非 Portage 树签名规范的强制要求,而是旨在提高 Manifest2 中使用的哈希值的安全性 [GLEP44]。因此,它也可以独立存在。

规范

坏消息

首先,我想介绍一下校验和安全方面的坏消息。一个经常被讨论的点是简单的问题:同一数据上的多个独立校验和的安全级别是多少?最普遍的观点(实际上也是我以前持有的观点)是,多个校验和会提高安全性,但我们无法量化这种增加的安全性。真正糟糕的消息是,这个观点完全错误。你们中的许多人可能会对此感到震惊。正如 Joux 所指出的 [J04],多个校验和提供的额外安全性非常少。对于任何一组校验和,其实际强度取决于最强校验和的强度。

Wang 等人 [W04] 将 Joux [J04] 关于 SHA-0 的工作扩展到涵盖 MD4、MD5、HAVAL-128 和 RIPEMD 系列哈希。

MD5 的破解速度有多快?

对于一般的碰撞(而非预映像攻击),自从 Wang 等人 [W04] 发布公告以来,破解 MD5 所需的时间大大减少了。最初在接近超级计算机(IBM P690)上需要 1 小时,估计在奔腾 3 1.7GHz 上需要 64 小时。不到两年时间,这一时间降至不到 17 秒 [K06a]

  • 2004 年 8 月 - 1 小时,IBM pSeries 690(32x 1.7GHz POWER4+)= 54.4 GHz 小时
  • 2005 年 3 月 - 8 小时,奔腾 M 1.6GHz = 12.8 GHz 小时
  • 2005 年 11 月 - 5 小时,奔腾 4 1.7GHz = 8.5 GHz 小时
  • 2006 年 3 月 - 1 分钟,奔腾 4 3.2GHz = 0.05 GHz 小时
  • 2006 年 4 月 - 17 秒,奔腾 4 3.2GHz = 0.01 GHz 小时

如果我们接受 800 倍的因素作为校验和在 2 年内被破解速度提高的样本(使用上述数据,MD5 的速度提高了 >2000 倍),那么现有的校验和在未来没有很大的生存机会。因此,我们应该接受我们今天使用的任何校验和都将在不久的将来被破解,并尽可能地做好计划。(对 SHA1 攻击的简要回顾 [H04] 表明在相同时间段内,速度提高了约 600 倍)。

对于那些声称这些程序的实施尚不可行的人,请参阅 [K06b],其中有一个应用程序可以生成两个具有相同 MD5 的自解压 EXE 文件,以及您想要的任何有效负载。

好消息

在 Manifest2 目前使用的校验和(SHA1、SHA256、RIPEMD160)中,有一个接近完全被破解:SHA1;另一个被大大削弱:RIPEMD160。SHA2 系列遭受了一些攻击,但仍然相当稳固 [G07][K08]

为了减少未来问题的可能性,以及任何单个校验和被破解导致安全快速下降的情况,我们应该结合每个校验和系列中最强的哈希算法,并准备好主动淘汰旧的校验和,除非有压倒性的理由保留特定校验和,例如作为迁移计划的一部分。

应该怎么做

Portage 应该始终尝试验证 Manifest2 中可用的所有受支持的哈希值,从优先级列表中维护的最强的哈希值开始。随着时间的推移,一旦所有旧的 Portage 安装有足够的时间进行升级,较弱的校验和应该从 Manifest2 文件中移除。一旦 Portage 中有实现可用,就会添加更强的校验和。只要遵循弃用过程,就可以删除较弱的校验和(见下文)。

一旦可行,我们应该添加 SHA512 和 WHIRLPOOL 算法。将来,随着流式校验和的开发(响应 NIST 的开发 [AHS]),应该考虑并使用它们。

SHA512 算法在 Python 2.5 中可用,自大约 Portage 2.1.6.13 以来,Python 2.5 一直是 Portage 的依赖项。

WHIRLPOOL 校验和在 PyCrypto 库或 Python 2.5 中包含的 hashlib 中不可用,但有多个可用的替代 Python 实现,从纯 Python 到基于 C 的(python-mhash)。

除非给定 Manifest 条目没有可用的受支持的哈希值,否则不支持的哈希值的存在不被视为失败。

校验和弃用时间

一般原则

仅应维护一组最少的已弃用校验和,以支持在历史使用的树中需要的旧包管理器版本。

  • 新的包管理器版本不应在以下情况下使用已弃用的校验和。
  • 从未使用过已弃用校验和的新树可以出于大小原因省略它们,但仍然强烈建议包含它们。
  • 删除已弃用的校验和应在不少于 18 个月或一个主要的 Portage 版本周期后进行,以较大者为准。

近期计划

对于当前的 Portage,SHA1 和 RIPEMD160 应该立即删除,因为它们相较于已存在的 SHA256 没有任何优势。SHA256 不能立即替换为 SHA512,因为现有的 Portage 版本需要至少一个受支持的算法存在(SHA256 支持是在 2006 年 6 月添加的),因此必须保留一段时间。

立即

  • 添加 WHIRLPOOL 和 SHA512。
  • 删除 SHA1 和 RIPEMD160。

大多数 Portage 安装都包含 SHA512 支持后

  • 删除 SHA256。

向后兼容性

旧版本的 Portage 可能只支持并期望特定的校验和。这在校验和弃用讨论中有所说明。

为了最大限度地兼容,我们只需要包含我们正在正式支持的每个旧算法,以及我们更喜欢的新的算法。

致谢

我要感谢以下人员,排名不分先后

  • Ciaran McCreesh (ciaranm) - 指出 Joux (2004) 论文,并且在不接受部分解决方案方面足够固执。
  • Marius Mauch (genone)、Zac Medico (zmedico) 和 Brian Harring (ferringb):了解 Portage Manifest2 代码库。

参考文献

[AHS]NIST (2007)。“NIST 新加密哈希函数计划”(高级哈希标准)。http://csrc.nist.gov/pki/HashWorkshop/
[BOBO06]Boneh,D. 和 Boyen,X. (2006)。“关于有效组合碰撞抗性哈希函数的不可能性的研究”;CRYPTO 2006 会议论文集,Dwork,C. (编);计算机科学讲义 4117,第 570-583 页。可在以下网址在线获取:http://crypto.stanford.edu/~dabo/abstracts/hashing.html
[G07]Gligoroski,D. 和 Knapskog,S.J. (2007)。“Turbo SHA-2”。密码学电子印刷档案,报告 2007/403。可在以下网址在线获取:http://eprint.iacr.org/2007/403.pdf
[GLEP44]Mauch,M. (2005) GLEP44 - Manifest2 格式。https://gentoolinux.cn/glep/glep-0044.html
[H04]Hawkes,P. 和 Paddon,M. 和 Rose,G. (2004)。“关于 SHA-2 系列的校正模式”。CRYPTO 2004 密码学电子印刷档案,报告 2004/204。可在以下网址在线获取:http://eprint.iacr.org/2004/207.pdf
[J04](12) Joux,Antoie。(2004)。“迭代哈希函数中的多碰撞——应用于级联构造”;CRYPTO 2004 会议论文集,Franklin,M. (编);计算机科学讲义 3152,第 306-316 页。可在以下网址在线获取:http://web.cecs.pdx.edu/~teshrim/spring06/papers/general-attacks/multi-joux.pdf
[K06a]Klima,V. (2006)。“哈希函数中的隧道:在一分钟内完成 MD5 碰撞”。密码学电子印刷档案,报告 2006/105。可在以下网址在线获取:http://eprint.iacr.org/2006/105.pdf
[K06b]Klima,V. (2006)。“关于高速 MD5 碰撞概念验证工具的说明和链接”。可在以下网址在线获取:http://cryptography.hyperlink.cz/2006/trick.txt
[K08]Klima,V. (2008)。“关于 Turbo SHA-2 哈希函数的碰撞”。密码学电子印刷档案,报告 2008/003。可在以下网址在线获取:http://eprint.iacr.org/2008/003.pdf
[W04](12) Wang,X. 等人:“MD4、MD5、HAVAL-128 和 RIPEMD 哈希函数的碰撞”,CRYPTO 2004 总结会议,密码学电子印刷档案,报告 2004/199,第一个版本(2004 年 8 月 16 日),第二个版本(2004 年 8 月 17 日)。可在以下网址在线获取:http://eprint.iacr.org/2004/199.pdf