密码学
密码学哈希函数
别称: 哈希函数, 消息摘要
定义
将任意长度输入映射为固定长度摘要的确定性单向函数,具备抗碰撞、抗原像和抗第二原像三大安全性质。
密码学哈希函数将任意长度输入压缩为固定长度的输出(摘要),并满足三大性质:原像抗性(已知 H(x) 难以找出 x)、第二原像抗性(给定 x,难以找到 x' ≠ x 使 H(x') = H(x))、碰撞抗性(难以找到任何 x ≠ x' 使其哈希相同)。它同时具备确定性、高速度以及伪随机输出特征。哈希函数是数字签名、消息认证码(HMAC、KMAC)、密码存储(与 Argon2、scrypt 等 KDF 结合)、完整性校验、Merkle 树、区块链与内容寻址等的基础。MD5 与 SHA-1 已被破解(存在实用碰撞),仅可用于无安全要求的遗留用途;SHA-256、SHA-3 与 BLAKE2/BLAKE3 是当前推荐的家族。
示例
- Git 使用 SHA-1(正向 SHA-256 过渡)来标识提交与对象。
- TLS 证书指纹通常是 SHA-256 哈希。
相关术语
MD5
Ron Rivest 于 1992 年设计的 128 位密码学哈希函数;已被破解,可轻易构造实用碰撞,不得用于任何安全相关用途。
HMAC
基于密码学哈希函数的带密钥消息认证码结构,由 RFC 2104 与 FIPS 198-1 定义。
数字签名
一种公钥密码学机制,用于证明消息或文档的真实性、完整性以及不可否认性。
消息认证码(MAC)
使用对称密钥计算的短标签,用于对消息进行认证并检测篡改,计算与验证使用同一个共享密钥。
盐(Salt)
在口令哈希之前与之拼接的唯一随机值,用于抵御彩虹表并使每个用户的哈希都不同。
密钥派生函数(KDF)
从口令、共享密钥或主密钥等秘密素材派生出一个或多个强加密密钥的密码学函数。