确定性的摘要与有限输出空间

固定输出的哈希函数把规定范围的消息映射成定长比特串,相同输入应得到相同摘要。输入可能性多于输出时,不同消息必然可能共享摘要;密码学目标是让相关攻击在可行资源下难以完成,而不是声称这种情况根本不存在。

摘要必须与具体算法及输出长度一起理解。SHA-2与SHA-3分别有不同函数和输出规格;SHAKE这类可扩展输出函数又允许选择输出长度,不能把所有名称都当作同一个固定长度算法的别名。

参考:[1] [2]

原像、第二原像与碰撞

抗原像性关注给定目标摘要后,能否找到一个映射到它的输入;抗第二原像性则先给定某条消息,要求难以找到与它摘要相同的另一条消息。抗碰撞性允许攻击者自行选择两条不同消息,目标仍是产生同一摘要。

这些是不同的攻击条件。输出位数也不能直接当作每一种攻击的安全位数;NIST列出的SHA-256抗碰撞强度为128位,抗原像强度为256位。分析还必须针对具体函数和使用方式,不能只用“不可逆”三个字代替全部性质。

参考:[1] [2]

完整性比对还需要可信参照

如果预期摘要通过可信渠道取得,重新计算后比对有助于检查内容一致性;如果消息与所谓预期摘要都能被同一人替换,攻击者也可以为新消息公开计算新摘要。无密钥哈希本身不能识别是谁给出了它。

HMAC把共享秘密密钥加入经过设计的哈希构造,服务于消息认证;这与简单附上一份公开摘要不同。算法的安全状态也会变化,旧文献列出的示例不等于今天的选型建议;NIST已发布退出SHA-1有限用途的计划,实际系统须核对当前要求。

参考:[1] [3]