Skip to content

密码哈希函数

Cryptographic hash function

把任意长输入压缩到固定长度并要求原像、第二原像或碰撞难求的函数族。

条目类型
模型

形式陈述

公开参数化的密码哈希函数族由两个统一的高效算法给出:概率多项式时间生成算法产生公开索引,确定性多项式时间求值算法在合法消息上计算摘要,

sGen(1λ),Hs:Mλ{0,1}n(λ),Hs(m):=Eval(s,m).

这里 Eval 对所有由 Gen(1λ) 产生的 s 和合法 mMλ 都必须高效终止。索引 s 与安全参数 λ 的关系由生成算法确定,通常公开给攻击者;无索引的单个固定哈希、带公开 seed 的函数族与带秘密密钥的 MAC 是不同对象。

三类安全性质必须分别指定攻击实验。碰撞实验给攻击者 (1λ,s),其输出 mmHs(m)=Hs(m) 时获胜。第二原像实验还须规定挑战消息 m 的抽样分布,攻击者见到 (s,m) 后输出 mm。原像实验须先从规定的消息分布抽取 m,令 y=Hs(m),再要求攻击者由 (s,y) 找到任一 m 使 Hs(m)=y;若挑战者任意选择一个可能不在像中的 y,失败并不能表达抗原像性。按计算安全的量词,所有 PPT 攻击者的获胜概率都必须是可忽略函数

直觉

密码哈希把消息压成固定长度的短“指纹”:摘要容易从文件算出,却应难以反向恢复原像、替换成同指纹内容或找到任意碰撞。三种困难来自不同挑战接口,彼此在一般函数族上不自动推出。它是公开、无密钥的确定函数,所以不能单独提供消息来源认证;实际构造还要求域分离、无歧义编码和适当输出长度。

例子与边界

理想 n 位哈希的碰撞搜索约需 2n/2 次、原像约需 2n 次。SHA-256 常用于完整性组件,但单独附加公开哈希不能阻止攻击者同时修改消息和哈希;抗碰撞也不会把无密钥哈希变成消息认证码。普通程序哈希表只追求速度和均匀分布,不必满足密码安全。

SHA-256 输出 256 bit;修改一个输入 bit 通常会大幅改变摘要,但“雪崩效应”只是设计现象,不等价于安全证明。校验下载文件时,若摘要来自可信渠道,可检测传输篡改;若攻击者能同时替换文件与网页上的摘要,普通哈希无法认证。

密码哈希不是密码存储的直接方案:快速哈希会帮助攻击者大规模猜测,应使用带盐、内存困难的专用 KDF。长度扩展等性质也使直接写 H(km) 不一定是安全 MAC,应使用 HMAC 等标准构造。

固定输入长度的压缩函数 h:{0,1}b+n{0,1}n 只是构造部件;可变长哈希通常再用迭代结构、填充和域分离把它扩展到 Mλ随机预言机是所有参与者共享、响应一致且可自适应查询的理想随机函数;ROM 证明不会在选择某个现实哈希后自动变成标准模型定理。

推论与应用

密码哈希用于签名、承诺、口令派生、Merkle 树、内容寻址和消息认证构造。抗碰撞性是其核心性质,消息认证码在哈希上加入密钥实现认证;数字签名常采用 hash-then-sign,Merkle 树、内容寻址和承诺则依赖摘要绑定长数据。通用哈希控制随机函数族对预先固定输入对的碰撞概率,可用于信息论 MAC 与提取器;它既不等于现实哈希的抗碰撞性,也不等于 ROM。

参考资料
  • Jonathan Katz and Yehuda Lindell, Introduction to Modern Cryptography, 3rd ed., CRC Press, 2020,Chs. 2–12。
  • Oded Goldreich, Foundations of Cryptography, Vol. 1, Cambridge University Press, 2001,Chs. 1–4。
关系图谱10 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系