5.4 Hash函数
学习目标:
1.掌握哈希函数的概念。
2.理解哈希函数的特点。
3.掌握哈希函数和加密函数的综合使用。
4.掌握哈希函数设计的要求。
5.掌握基于哈希函数的认证方法。
6.理解哈希函数的迭代型结构。
7.掌握MD5算法的4个步骤。
8.掌握SHA算法的4个步骤。
9.掌握对哈希函数三个级别的攻击。
10.理解次预映射攻击。
11.掌握生日悖论
12.理解生日攻击
学习内容:
1.哈希函数:也称为散列函数、杂凑函数,是对不定长的输入产生定长输出的一种特殊函数。哈希函数的输出值:散列值、Hash值、散列码和哈希值,一般长度为:128位或160位。
2.哈希函数特点:单向性。
3.哈希函数的用法:

4.哈希函数和加密体制的综合应用:对消息产生的哈希值进行加密传输。由于Hash值位数少,所以加密和解密负担不大。
5.哈希函数的设计要求:
对于任意大小的数据块,产生固定长度的输出。
对任意给定的M,计算H(M)是相对容易的。
对任意给定的h,计算M使得H(M) = h成立时计算上不可行的,即H具有单向性。
对任意给定的M1,找到M2,使得 H(M1) = H(M2)在计算上是不可行的,H具有弱无碰撞性。
寻找任意的(M1,M2),使得 H(M1) = H(M2)在计算上是不可行的,H具有强无碰撞性。
6.基于哈希函数的认证方法:
使用对称密码体制仅对附加的散列值进行加密:仅提供认证。
使用对称密码体制对附加了散列值的消息进行加密:提供认证和机密性。
使用公钥密码体制,但发送方的私钥仅对散列值进行加密:提供认证和数字签名。
7.哈希算法的迭代型结构:
算法的核心技术是设计无碰撞的压缩函数f。
8.MD5算法:输入任意长度消息,输出128位哈希值。
消息填充
缓冲区初始化
H运算
输出
9.SHA算法:输入任意长度消息,输出160位哈希值。
消息填充
缓冲区初始化
H运算
输出
10.对Hash函数攻击的三个级别:
预映射攻击
次预映射攻击:弱碰撞攻击,
碰撞攻击:强碰撞攻击
11.生日悖论:即任找23人,当中至少有两人的生日相同的概率至少为1/2。
12.生日攻击:
观看课件:
注意点:
课后练习:
1.阅读王小云破译MD5和SHA的相关论文。

