发布时间:2025-08-11 00:49:45 点击量:
HASH GAME - Online Skill Game GET 300
Hash函数分析方法 综述报告人:吴双信息安全国家重点 实验室中科院软件 所2010年 12月 21日主要内容 Hash函数简介不依赖算法的通用方法针对结构的分析方法针对具体运算的分析方法展望Hash函数的定义 Hash函数的概念来源于计算机学中的 Hash表密码学中的 Hash函数是将任意长度的消息压缩为固定长度摘要的函数,是密码学中重要的基本模块This is an input to a crypto-graphic hash function. The input is a very long string, that is reduced by the hash function to a string of fixed length. There are additional security conditions: it should be very hard to find an input hashing to a given value (a preimage) or to find two colliding inputs (a collision). 1A3FD4128A198FB3CA345932hHash函数简介 Hash函数的定义Hash函数的安全要求抗原象抗第二原象抗碰撞Hash函数简介 Hash函数的安全要求Hash函数的安全要求 (n比特输出 )?h(x)hxh(x)h?h(x)h?h?=原象pre-image碰撞collision2n 2n 2n/2h(x)h(x)h第二原象2nd pre-imageHash函数简介 Hash函数的安全要求Hash函数的用途数字签名 破坏代数 结构,抗碰撞,抗原象消息 认证 伪随机性保护口令、 确认保密信息 抗原 象伪随机序列 生成器 (PRNG)、密钥生成函数(KDF) 伪 随机性Hash函数简介 Hash函数的用途对 Hash函数的攻击寻找原象、第二原象 可以 进行伪造攻击(恢复密钥、伪造签名)寻找碰撞消息对 可以进行欺诈攻击(代表不同意义的消息具有相同摘要)构造区分器 伪随机性不够好会影响消息认证、密钥生成函数的安全性Hash函数简介 对 Hash函数的 攻击主要内容 Hash函数简介不依赖算法的通用方法针对结构的分析方法针对 具体运算 的分析方法展望穷举攻击这里指利用穷举的方法寻找某个函数的原象 对 给定 y求 m使得 F(m)=y,若 F()的值域为 n比特二进制空间,复杂度为 2n 当 n较小时,穷举是最直接有效的方法穷举攻击的优点: 易 并行处理(不可小视) 当前, 10万美元的硬件可以达到 264的计算 能力。成功案例:伪造 X.509证书( MD5碰撞) 适当的 时候,可以将其他问题转化为原象问题不依赖算法的通用方法 穷举攻击穷举攻击不依赖算法的通用方法 穷举攻击M0M1Mi-1MiY0Y1Yj-1Yj生日攻击不依赖算法的通用方法 生日攻击 及其推广生日攻击 Hash函数碰撞攻击的生日攻击界 一般 认为,对于 n比特输出的 理想 Hash函数,碰撞攻击的复杂度上界为 O(2n/2) 对于随机 选取的 2n/2个消息,找到一对碰撞的概率较高,约 0.39 对于 随机选取的 2n+1/2个消息,找到一对碰撞的概率约 0.63不依赖算法的通用方法 生日攻击及其推广生日攻击生日攻击的时间空间复杂度 随机 选 r=2n/2个消息,计算摘要并将摘要值作为索引存储( Hash表)。时间复杂度为 r次 Hash函数调用, r-1次查表, r个单元的存储空间 因此时间和空间复杂度都是 O(2n/2)空间复杂度 O(1)的生日攻击 利用 Floyd链表找圈算法 时间复杂 度仍然是 O(2n/2)不依赖算法的通用方法 生日攻击及其推广H(x)x Hcollision多碰撞攻击不依赖算法的通用方法 生日攻击及其推广中间相遇技术问题:对于 0,1n上的 集合 A、 B,两者元素个数分别为 r和 s,问在这两个集合中找到一个公共元素的概率和复杂度是多少 ? 将其中一个集合的元素建立 Hash表,然后用另一个集合的元素去查表,找到公共元素的概率为rs/2n 建表的时间和空间复杂度与集合大小相同,查表的时间复杂度与另一个 集合大小 相同 于是中间相遇的时间复杂度为 r+s,空间复杂度为minr,s不依赖算法的通用方法 生日攻击及其推广中间相遇技术空间复杂度为 O(1)的中间相遇攻击 要求获取两个集合中一个元素的复杂度为 O(1),如果这条不满足,则这种方法不成立 同样是 利用 Floyd链表找圈算法不同的是,迭代函数利用一个固定算法根据输入计算出一个指示比特的值用来决定将输入映射到 A集合还是 B集合找到一个圈的入口,如果它的两个父节点的指示比特不同,则攻击成功( 50%概率)时间复杂度为 O(r+s)不依赖算法的通用方法 生日攻击及其推广一般化生日攻击不依赖算法的通用方法 生日攻击及其推广主要内容 Hash函数简介不依赖算法的通用方法针对结构的分析方法针对具体运算的分析方法展望对 MD结构的通用攻击 MD结构简介针对结构的分析方法 对 MD结构的通用攻击H0M1FM2FMiFMnF HnM1 M2 Mi 消息 填充对 MD结构的通用攻击 长度扩展攻击 在已碰撞的消息对后面增加消息块来构造新的碰撞对 多碰撞攻击 MD结构的多碰撞代价远远低于构造随机函数的多碰撞 长消息第二原象攻击 通过可扩展消息构造对长消息的第二原象攻击 集群攻击 攻击者选择摘要 h,给定前缀 P,攻击者构造出后缀 S使得H(PS)=h (指定前缀第二原象 ) 木马消息攻击 攻击者给定后缀 S,被攻击者选择前缀 P并计算 h=H(PS),攻击者得到 h以后构造出 PS的第二原象针对结构的分析方法 对 MD结构的通用攻击主要内容 Hash函数简介不依赖算法的通用方法针对结构的分析方法针对具体运算的分析方法展望差分分析介绍 不考虑算法运算中的具体值,而是考虑两个不同值在运算的过程中,两者的异或差分的变化规律分析算法具体实现中使用的基本运算的差分特性来构造的攻击分析异或、模加、布尔函数、 S盒等的差分传播特性针对具体运算的分析方法 差分分析差分分析介绍 差分路径的概念差分顺序传播的轨迹针对具体运算的分析方法 差分分析压缩函数V0V1V2V3V4Vn-1Vn压缩函数V0V1V2V3V4Vn-1VnM M =压缩函数差分路径差分分析介绍压缩函数差分路径针对具体运算的分析方法 差分分析差分分析介绍针对具体运算的分析方法 差分分析差分分 析介绍 如何理解独立性假 设 从数学上来 讲,独立性假设是 错误 的 密码学和数学区别: 密码算法的攻 击者关心 的是什么? 不 是对概率和复杂度的精确计算,而是要进行实际的(practical)攻击 精确 计算概率太困难(密码算法都会破坏代数结构) 对 hash函数而言,目标是要找到碰撞对、原象 因此在对概率和复杂度的计算上 独立性假设是 已知的最合理的假设 ,实验结果往往也和理论估计值接近 只需要对目标算法的强度有一个大致的把握 实际攻 击是否能成功与概率计算的精确程度无关针对具体运算的分析方法 差分分析比特级差分分析针对的对象:布尔函数、循环移位、模加、异或等。 这些运算的差分特征的各比特之间具有一定的独立性对于布尔函数而言,它的差分特征各比特之间完全独立,因此分析一个比特的情况就足够了对于模加而言,由于进位的存在,比特差分之间有可能会互相影响针对具体运算的分析方法 差分分析比特级差分分析针对具体运算的分析方法 差分分析循环区分器针对具体运算的分析方法 循环区分器字节级分析针对的对象:使用 S盒、 MDS扩散结构的字节级算法如 AES等 S盒具有差分均匀性,不存在高概率差分特征,可以抵抗传统的差分分析 S盒使得差分特征比特之间的代数关系变得复杂,对代数攻击也有一定抵抗作用针对具体运算的分析方法 差分分析字节级分析 积分攻击 考虑不同运算对各种集合的影响,而不考虑对单个值的影响 截断 差分 将 S盒的多个差分特征进行捆绑,作为截断差分特征,极大提高差分特征的概率 反弹 攻击 利用 S盒的差分特征预计算表,对截断差分路径进行拼接,并利用迭代状态和消息中的自由度找到满足连接段差分路径的解,再让截断差分路径从中间向两端传播针对具体运算的分析方法 差分分析针对密钥扩展的攻击很多 Hash函数可以看做是基于分组密码构造的,如 MD4、 MD5、 SHA1等 虽然它们并不是基于已经存在的分组密码构造的 但是它们拥有与分组密码类似的结构具有类似密钥扩展的消息 扩展针对具体运算的分析方法 针对密钥扩展的攻击局部碰撞利用密钥扩展算法存在的周期特性 轮数 较少的局部碰撞路径可以利用密钥中差分出现的周期性进行传递 对 SHA0、 SHA1的攻击中都使用了这种方法由于使用了 5个迭代寄存器, SHA-0存在 6轮局部碰撞路径利用周期性 的消息扩展算法 , 局部 碰撞 需要的消息差分将重复出现 , 于是可以将若干局部碰撞组合得到整个算法的差分路径针对具体运算的分析方法 针对密钥扩展的攻击连接 -切割技术 (splice and cut)利用密钥扩展和迭代结构进行的原象攻击 将迭代过程的首位相接,然后从特定部位断开,同时选择不同的消息字然后进行中间相遇 成功地对多个基于分组密码的 hash函数进行了理论上的原象攻击全 轮 MD5的原象攻击全 轮 Tiger的原象攻击针对具体运算的分析方法 针对密钥扩展的攻击起点匹配点逆向处理密钥扩展的技巧首先假设各子密钥之间独立,求得它们的具体值以后再考虑它们之间是否满足扩展关系 可以用来 推导类 AES结构的差分路径 对 MD5、 SHA0、 SHA1等的另一种原象攻击技术针对具体运算的分析方法 针对密钥扩展的攻击主要内容 Hash函数简介不依赖算法的通用方法针对结构的分析方法针对具体运算的分析方法展望展望 SHA-3竞赛带动 hash函数分析技术飞速革新 反弹 攻击、循环区分器、连接 -切割技术等有效的分析手段都是这一时期提出未来 的研究热点方向 反弹 攻击的改进和更广泛的应用 布尔函数遭遗弃, ARX结构差分特性难以把握,需要更多更深入有效的研究 分析各种新结构可能会带来的通用攻击方法谢谢