1、 第 5章 数字签名与认证-1-第八讲 思考题1 P141 (7)安全的散列函数有哪些特征 ?第八讲教学要求:( 1)掌握单向散列函数概念;( 2)了解 MD5算法程;( 3)了解 SHA 安全散列算法;第 5章 数字签名与认证-2-3.2单向散列函数单向散列函数,也称 hash函数,它可以提供判断电子信息完整性的依据,是防止信息被篡改的一种有效方法。单向散列函数在数据加密、数据签名和软件保护等领域中有着广泛的应用。3.2.1 单向散列函数特点hash函数的作用是当向 hash函数输入一任意长度的的信息 M时, hash函数将输出一固定长度为 m的散列值 h。 即:h = h( M) 第 5章
2、 数字签名与认证-3-思考题 1:安全的 hash函数的特点 是:1 hash函数能从任意长度的 M中产生固定长度的散列值 h。2 已知 M时,利用 h( M) 很容易计算出 h。3已知 h时,要想从 h( M) 中计算出 M是很困难的。4已知 M时,要找出另一信息 M,使 h( M) =h( M) 是很困难的。最常用的 hash算法有 MD5、 SHA算法等。第 5章 数字签名与认证-4-MD5MD5( Message-Digest Algorithm 5)是由 Ronald L. Rivest(RSA算法中的 “R”)这 90年代初开发出来的,经 MD2、MD3和 MD4发展而来。它比 M
3、D4复杂,但设计思想类似,同样生成一个 128位的信息散列值。其中, MD2是为 8位机器做过设计优化的,而 MD4和 MD5却是面向 32位的计算机。2004年 8月,在美国召开的国际密码学会议( Crypto2004)上,王小云教授给出破解 MD5、 HAVAL-128、 MD4和RIPEMD算法的报告。给出了一个非常高效的寻找碰撞的方法,可以在数个小时内找到 MD5的碰撞。第 5章 数字签名与认证-5-MD5算法步骤1) 填充消息 :任意长度的消息首先需要进行填充处理,使得填充后的消息总长度与 448模 512同余(即填充后的消息长度 448 mod 512)。填充的方法是在消息后面添加
4、一位 “1”,后续都是 “0”。2) 添加原始消息长度 :在填充后的消息后面再添加一个 64位的二进制整数表示填充前原始消息的长度。这时经过处理后的消息长度正好是 512位的倍数。3) 初始值( IV)的初始化 : MD5中有四个 32位缓冲区,用( A, B, C, D)表示,用来存储散列计算的中间结果和最终结果,缓冲区中的值被称为链接变量。首先将其分别初始化为为: A=0x01234567,B=0x89abcdef, C=0xfedcba98, D=0x76543210。第 5章 数字签名与认证-6-3.2.2 MD5算法4) 以 512位的分组为单位对消息进行循环散列计算 :经过处理的消
5、息,以 512位为单位,分成 N个分组,用 M0, M1, ., MN-1。 MD5对每个分组进行散列处理。每一轮的处理会对( A, B, C, D)进行更新。5) 输出散列值 :所有的 N个分组消息都处理完后,最后一轮得到的四个缓冲区的值即为整个消息的散列值。第 5章 数字签名与认证-7-消息 100.00 LM0 M11 Mi MN-1-512位 512位 512位 512位 HMD5512128IV HMD5512128 HMD5512128 HMD5512128CV1 CVi CVN-1128位的散列值L位原始消息长度 (64位 )填充位N512位MD5算法步骤 -续第 5章 数字签名
6、与认证-8-最后的输出就是 A、 B、 C、 D的级联,即 A作为低位, D作为高位,共 128位输出。MD5被广泛用于加密和解密技术中,可以用来保护密码、生成软件注册码等。MD5典型应用 :在很多操作系统中 ,用户的密码是以 MD5值的方式保存的 .第 5章 数字签名与认证-9-3.2.3 SHA算法SHA-1散列算法过程如下:1 SHA-1对输入明文的预处理过程和 MD5相同,但 SHA输出为 160位,并分别存储于五个 32位变量中,这五个变量初始值为:A 0x67452301B 0xefedab89C 0x98badefeD 0x10325476E 0xc3d2elf0和 MD5算法一样, SHA-1一次处理 512位信息,主循环的次数就是信息中 512位分组的数目。第 5章 数字签名与认证-10-3.2.4 SHA-1与 MD5比较1 安全性SHA-1摘要比 MD5摘要长 32比特 ,强行攻击及伪造签名更难2 速度SHA-1比 MD5的运行步骤多 16个 ,占用的缓存多了 32位 ,所以速度慢 25%3简单性总体上 SHA-1对每一步的操作描述比 MD5简单