密码学
SHA-1
别称: 安全哈希算法 1, FIPS 180-1
定义
由美国国家安全局于 1995 年设计的密码学哈希函数,输出 160 位摘要,目前在抗碰撞性方面已被视为破解。
SHA-1(Secure Hash Algorithm 1)是一种基于 Merkle-Damgård 结构的哈希函数,可将任意长度的输入压缩为 160 位(20 字节)摘要,曾广泛用于 TLS 证书、Git 以及数字签名。NIST 在 FIPS 180-1 中发布该算法,作为 SHA-0 的继任者。2017 年 SHAttered 项目首次给出了实际的碰撞实例,2020 年 SHAmbles 进一步降低了选择前缀碰撞攻击的成本,因此 SHA-1 不应再用于签名、证书或需要抗碰撞性的完整性场景。现代系统应改用 SHA-256、SHA-3 或 BLAKE2;只有在不要求抗碰撞的旧版 HMAC 中,SHA-1 才仍可接受。
示例
- Git 使用 SHA-1 标识提交和对象(正在向 SHA-256 过渡)。
- 采用 SHA-1 签名的旧 X.509 证书,自 2017 年起被浏览器逐步弃用。
相关术语
密码学哈希函数
将任意长度输入映射为固定长度摘要的确定性单向函数,具备抗碰撞、抗原像和抗第二原像三大安全性质。
MD5
Ron Rivest 于 1992 年设计的 128 位密码学哈希函数;已被破解,可轻易构造实用碰撞,不得用于任何安全相关用途。
SHA-256
SHA-2 系列中的 256 位密码学哈希函数,广泛用于数字签名、TLS、区块链与完整性校验。
SHA-3
基于 Keccak 海绵结构的哈希函数家族,由 NIST 标准化为与 SHA-2 结构上完全不同的替代方案。
HMAC
基于密码学哈希函数的带密钥消息认证码结构,由 RFC 2104 与 FIPS 198-1 定义。
数字签名
一种公钥密码学机制,用于证明消息或文档的真实性、完整性以及不可否认性。