摘录
虽然目前还没有真实世界的攻击成功地破坏了SHA1,学术研究表明它容易发生碰撞。开发人员应该转向更安全的哈希函数,如SHA256和SHA3,以尽量减少未来的利用风险。
SHA1 自1995年问世以来一直是最广泛使用的密码哈希函数之一。然而,近年来SHA1显示出对碰撞攻击的脆弱性,引发了对其安全性的担忧。本博客将审查SHA1的当前状态以及实际攻击破坏其安全性的可能性。
介绍
SHA1(安全哈希算法1)是由美国国家安全局设计并由美国国家标准与技术研究院发布的一种160位的密码散列函数。它可以为长度最多为264位的输入生成一个160位的哈希值。由于其速度和简单性,SHA1已广泛用于数字签名和数据完整性验证。
SHA1的背景
SHA1是由美国国家安全局设计并于1993年作为数字签名标准的一部分提交给美国国家标准与技术研究院。它于1995年进行了修订,并以FIPS 180的形式发布,成为第一个SHA标准。由于性能改进超过MD5等先前标准,它迅速受到了欢迎。
SHA1输出了输入消息的紧凑表示,可以用于有效地验证其完整性。哈希是安全协议(如SSL、TLS、SSH、S/MIME和PGP)的一个重要组成部分,多年来一直依赖于SHA1。
SHA1的工作原理
SHA1算法接受小于2^64位的输入消息,并生成一个160位的消息摘要。它使用一系列逻辑函数和位操作处理512位的块。
一些关键步骤包括:
- 填充输入以使其成为448模512位
- 将填充后的输入分成512位的块
- 将初始哈希值设置为乱序的十六进制数字
- 迭代处理每个512位的消息块
- 使用位逻辑和常量值
- 更新中间哈希值
- 在所有块处理完毕后,输出最终的160位哈希值
哈希值作为输入消息的数字指纹。
SHA1的漏洞
多年来的研究揭示了SHA1的两个主要漏洞:
碰撞攻击
- 碰撞是指两个输入散列为相同的值。
- 在SHA1中找到碰撞的复杂度为2^80次操作。
- 学术界已经证明了现实世界中的SHA1 碰撞攻击。
由于计算进步而导致的安全性下降
- 日益增长的计算能力削弱了SHA1的安全性。
- 对SHA1的暴力破解和分析攻击变得更加可行。
- 打破SHA1的哈希速率估计现在已经达到了数十亿美元的范围。
这些漏洞意味着SHA1不再被认为对资金充裕的对手安全。
SHA1的现实世界利用
一些对SHA1的显著碰撞攻击包括:
2017年,谷歌揭示了第一个实际的SHA1碰撞,使用了两个具有不同内容但具有相同SHA1哈希的PDF文档。
研究人员还展示了一种在比特币和其他加密货币中使用的P2P数字签名标准中的SHA1碰撞。
2022年,关于奥萨马·本·拉登突袭的2010年CIA文件显示使用了重复的SHA1哈希,可能指向潜在的恶意软件利用。
SHA1的当前状态
由于SHA1哈希的风险日益增长,软件供应商和机构已经建议停止支持:
微软于2013年默认禁用了SHA1,引用了碰撞风险。
NIST于2011年停用了SHA1用于数字签名,因为存在滥用的威胁。
主要的网络浏览器已经移除了对SHA1签名的TLS证书的支持,而是要求使用SHA256或更好的算法。
网络安全机构建议停止使用SHA1,除非用于验证旧的数字签名。
SHA1的替代方案
一些可以替代SHA1的更安全的哈希函数包括:
结论
总之,虽然目前尚未发现SHA1在实际应用中存在碰撞的情况,但根据学术研究和计算技术的发展,SHA1被认为容易受到实际攻击。开发者和企业应该转向使用更安全的哈希函数,如SHA256和SHA3,以尽量减少风险。