SHA-1
SHA-1 是由美国国家安全局设计的密码散列函数,产生160位哈希值,曾广泛用于 Git 等系统的对象标识,2017年 SHAttered 攻击证实其抗碰撞性已被实际攻破
核心事实
时间轴 (近 90 天)
合理的 Git 哈希迁移路径应是在托管平台和主流工具链普遍支持 SHA-256 之前保持 SHA-1 为默认,并提供仓库在两种算法间迁移的平滑转换机制
SHA-1 由美国国家安全局设计,产生 160 位(40 个十六进制字符)的哈希值
Git 从 2.13 版本起引入了基于 Marc Stevens 算法的 SHA-1 碰撞检测,能检测出 SHAttered 类攻击
大量第三方工具、CI/CD 流水线、IDE 插件和自动化脚本硬编码了对 40 字符 SHA-1 哈希的假设,SHA-256 的 64 字符哈希会破坏这些工具链
早期 v2 隐藏服务地址只有 16 个字符,基于 RSA-1024 密钥和 SHA-1 哈希生成
iPhone 备份的文件名均为经过 SHA-1 哈希处理的原始路径字符串,并按哈希前两位分散存入 256 个子目录
一个 packfile 由头部魔数与版本号、对象数据区(每个对象以 zlib 压缩存储,使用 delta 编码)、以及尾部的 SHA-1 校验和三部分构成
每个Git对象通过其内容的SHA-1哈希值唯一标识,形成内容寻址存储,实现天然去重
全部知识事实 (12)
Git通过SHA-1哈希算法为每个文件生成唯一指纹来实现版本存储
65%已验证Git使用SHA-1哈希函数将任意长度的输入数据映射为固定的160位(40个十六进制字符)哈希值作为对象标识符
65%待验证SHA-1(Secure Hash Algorithm 1)由美国国家安全局设计,输入任意长度数据输出固定160位(40个十六进制字符)的哈希值
95%待验证网站魔改SHA-1的常见手法包括多轮迭代、截取部分结果、拼接固定盐值和修改初始化向量
85%待验证合理的 Git 哈希迁移路径应是在托管平台和主流工具链普遍支持 SHA-256 之前保持 SHA-1 为默认,并提供仓库在两种算法间迁移的平滑转换机制
50%待验证SHA-1 由美国国家安全局设计,产生 160 位(40 个十六进制字符)的哈希值
50%待验证Git 从 2.13 版本起引入了基于 Marc Stevens 算法的 SHA-1 碰撞检测,能检测出 SHAttered 类攻击
50%待验证大量第三方工具、CI/CD 流水线、IDE 插件和自动化脚本硬编码了对 40 字符 SHA-1 哈希的假设,SHA-256 的 64 字符哈希会破坏这些工具链
50%待验证早期 v2 隐藏服务地址只有 16 个字符,基于 RSA-1024 密钥和 SHA-1 哈希生成
50%待验证iPhone 备份的文件名均为经过 SHA-1 哈希处理的原始路径字符串,并按哈希前两位分散存入 256 个子目录
50%待验证一个 packfile 由头部魔数与版本号、对象数据区(每个对象以 zlib 压缩存储,使用 delta 编码)、以及尾部的 SHA-1 校验和三部分构成
50%待验证每个Git对象通过其内容的SHA-1哈希值唯一标识,形成内容寻址存储,实现天然去重
50%