1第三章信息认证技术3.1数字签名技术3.2身份识别技术3.3杂凑函数和消息完整性3.4认证模式与认证方式3.5认证的具体实现3.6认证码2认证的目的认证的目的有两个方面:一是验证信息的发送者是合法的,而不是冒充的,即实体认证,包括信源、信宿的认证和识别;二是验证消息的完整性,验证数据在传输和存储过程中是否被篡改、重放或延迟等。33.1.1基本概念Hash函数也称为杂凑函数或散列函数,其输入为一可变长度x,返回一固定长度串,该串被称为输入x的Hash值(消息摘要),还有形象的说法是数字指纹。因为Hash函数是多对一的函数,所以一定将某些不同的输入变化成相同的输出。这就要求给定一个Hash值,求其逆是比较难的,但给定的输入计算Hash值必须是很容易的,因此也称Hash函数为单向Hash函数。4基本概念(续)Hash函数一般满足以下几个基本需求:(1)输入x可以为任意长度;(2)输出数据长度固定;(3)容易计算,给定任何x,容易计算出x的Hash值H(x);(4)单向函数:即给出一个Hash值,很难反向计算出原始输入;(5)唯一性:即难以找到两个不同的输入会得到相同的Hash输出值(在计算上是不可行的)。5Hash函数的其他性质Hash值的长度由算法的类型决定,与输入的消息大小无关,一般为128或者160位。常用的单向Hash算法有MDS、SHA-l等。Hash函数的一个主要功能就是为了实现数据完整性的安全需要。Hash函数可以按照其是否有密钥控制分为两类:一类有密钥控制,以表示,为密码Hash函数;另一类无密钥控制,为一般Hash函数。关于Hash函数的安全性设计的理论主要有两点:一个是函数的单向性,二是函数影射的随机性。6攻击Hash函数的典型方法生日攻击的基本观点来自于生日问题:在一个教室里最少有多少学生时,可使得在这个教室里至少有两个学生的生日在同一天的概率不小于50%?这个问题的答案是23。这种攻击不涉及Hash算法的结构,可用于攻击任何Hash算法。目前为止,能抗击生日攻击的Hash值至少要达到128bit。中途相遇攻击这是一种选择明文/密文的攻击,主要是针对迭代和级连的分组密码体制设计的Hash算法。73.1.2常见的单向杂凑函数MD4算法MD5算法SHA算法8MD4算法MR4是RonRivest设计的单向散列函数,MD表示消息摘要(MessageDigest),对输入消息,算法产生128-位散列值。Rivest概括了该算法的设计目标:1.安全性。找到两个具有相同散列值的消息在计算上不可行,不存在比穷举攻击更有效的攻击。9MD4算法2.直接安全性。MD4的安全性不基于任何假设,如因子分解的难度。3.速度。MD4适用于告诉软件实现,基于32位操作数的一些简单位操作。4.简单性和紧凑性。MD4尽可能简单,没有大的数据结构和复杂的程序了。5.有利的Little-Endian结构。MD4最适合微处理器结构,更大型速度更快的计算机要作必要的转化。102004年召开的国际密码学年会(Crypto2004)上,来自中国山东大学王小云教授的一篇关于破译MD5、HAVAL-128、MD4以及RIPEMD-128算法的报告引起了轰动,报告中提到的新破译方法几乎标志着世界通信密码标准——MD5堡垒的轰然倒塌。一石激起千层浪,此前一直负责公开征集针对MD5的攻击而设立的权威站点http//www.md5crk.com/宣布由于MD5破译获得突破性进展,MD5破解项目(MD5CRKProject)即日停止,并开始提供该站点以往技术资料的下载,预计该站点也将在不久的将来完全关闭。面对MD5被破译,有人一声叹息,有人觉得不可思议,更有人忧虑甚至恐慌......那么究竟MD5有什么来头?它被破译是否意味着地球将不再旋转?谁将成为它的继承者?MD-5算法11天下没有不透风的墙,实际上任何一种算法都会有其漏洞,即使是目前大行其道的MD5和SHA-1,当对漏洞的研究发展到其能够被有效利用时,则标志着该算法灭亡的时候到了。所谓天下无不散之筵席,MD5逐渐退出历史舞台后,下一个接任者又会是谁呢?实际上,长期以来,密码界一直在致力于对新加密算法的研究,而且在高度机密的安全领域,所采用的加密算法也绝非MD5,各国政府、各大公司都在研究拥有独立技术的加密算法,其中比较出色的代表有SHA-1、SHA-224等。此次MD5破译报告发表后,美国国家技术与标准局(NIST)表示,鉴于MD5被破译以及SHA-1漏洞被发现,他们将逐渐放弃目前使用的SHA-1,于2010年前逐步推广更安全的SHA-224、SHA-256、SHA-384和SHA-512。这些算法与MD5的128位加密相比,加密位数和安全性能都提高了很多倍。尽管MD5被淘汰已经成为必然,不过鉴于它开源以及免费的特性,而且目前还没有真正有效的快速破解方法,因此它还将继续在历史舞台活跃一段时间。12MD-5算法(1/6)13MD-5算法(2/6)(1)对明文输入按512bit分组,填充使其成为512bit的整数倍,且最后一组的后64bit用来表按时消息的长在mod下的值K填充位数为1~512bit,填充数字图样为(100…0),得Y0,Y1,…YL-1。其中,YL为512bit,按字记消息长为N=L*6。(2)每轮输出为128bit可用下述四个32bit字:A,B,C,D表示其初始存数以十六进制表示为:A=01234567,B=89ABCDEF,C=FEDCBA98,D=76543210。14MD-5算法(3/6)(3)HMD-5的运算对512bit(16-字)组进行运算,Yq表示q输入的第组512bit数据,在各轮中参加运算。T[1,2,…64]为64个元素表,分四组参与不同轮的计算。T[i]是232*abs(sine(i))的整数部分,i是弧度。可用32bit二元数表示,T是32bit的随机数源。15MD-5算法(4/6)MD-5是四轮运算,各轮逻辑函数不同。每轮又要进行16步迭代运算,四轮共需64步完成。16MD-5的基本运算图(5/6)17上图基本运算的简单解释(6/6)a,b,c,d即缓存中的四个字,按特定次序变化;g是基本逻辑函数中F,G,H,L之一,算法中每一轮用其中之一;CLSs=32-bit存数循环左移s位;X[k]=M[q*16+k]就是消息的第-512-bit组的第k个32-bit字;T[i]是矩阵中第i个字;+就是模加法。k18SHA算法(1/5)SHA算法是美国的NIST和NSA设计的一种标准哈希算法SHA(SecurityHashAlgorithm),用于数字签名的标准算法DSS中。该算法的输入消息长度小于264bit,最终的输出结果值为160bit。与MD-4相比较而言,主要是增加了扩展变换,将前一轮的输出加到下一轮的,这样增加了雪崩效应。由于其160bit的输出,对穷举攻击更有抵抗力。19分组算法构造杂凑函数(2/5)其他优秀的杂凑算法GOST杂凑算法,SNEFRU算法等。通过对标准分组算法通过级连、迭代也能构造出优秀的杂凑算法。203.1.3认证码认证码(MAC,MessagesAuthenticationCodes),是与密钥相关的的单向散列函数,也称为消息鉴别码或是消息校验和。MAC与单向散列函数一样,但是还包括一个密钥。不同的密钥会产生不同的散列函数,这样就能在验证发送者的消息没有经过篡改的同时,验证是由哪一个发送者发送的。21认证码1974年,Gilbert,MacWilliams,Sloane首次提出了认证码的概念,并用有限几何构造了认证码。80年代,Simmons等人系统地发展了认证码理论。一个没有仲裁的认证码由三方组成:发送方、接受方和入侵者。发送方和接受方互相信任,敌手想欺骗他们,敌手知道整个认证系统,但不知道发方和收方所采用的秘密的编码规则。22认证码的验证过程23认证码的验证过程M是信息发送方要发送的消息,假设K是发送方和接受方共有的密钥,其认证码标记为MAC=CK(M),表示信息M在密钥K作用下的Hash函数值,这个函数值是一个固定长度的认证符。发送方将要发送的消息M和验证码CK(M)一起发送给接受方,收方通过重新计算认证码CK(M)来实现对信息M和发送者的识别。24认证码的算法实现二次同余操作探测码(QCMDC)的算法实现:QCMDC认证码是一个很好的认证实现,不过目前该算法已经被攻破。假设M是需要发送和验证的消息,K是安全密钥,首先将消息M分组,每组n位,对应的序列为Mi。那么产生的验证序列为:Hi=(Hi+Mi)2modp其中H0=K,p是小于2n-1的素数。25IBC-hash的算法实现由于上述算法中的每条消息都要用不同的密钥做散列计算,因此,算法的安全性受到密钥对长度的制约。IBC-hash算法在实现上仅用于发送长而不经常用的消息。假设M是需要发送和验证的消息,p和v是安全密钥对,首先将消息M分组,每组n位,对应的序列为Mi。那么产生的验证序列为:Hi=((Mi)modp+v)mod2n其中p是小于n的素数,v是一个小于2n的随机数。26信息鉴别算法描述信息鉴别算法是一个ISO标准。假设M是需要发送和验证的消息,w和v是变量,由密钥决定,首先将消息M分组,每组n位,对应的序列为Mi。那么产生的验证序列为:v=v1e=v⊕wx=((((e+y)mod232)∨A∧C)×(x⊕Mi))mod232-1y=((((e+x)mod232)∨B∧D)×(y⊕Mi))mod232-2其中A,B,C,D是常数,j表示向左移j位,⊕表示异或。273.2数字签名技术数字签名在信息安全,包括身份认证、数据完整性、不可否认性以及匿名性等方面有重要应用,特别是在大型网络安全通信中的密钥分配、认证及电子商务系统中具有重要作用。数字签名是实现认证的重要工具。28什么是数字签名(1/2)1.通过单向哈希函数实现的数字签名通过一个单向函数对要传送的报文进行处理得到的用以认证报文来源并核实报文是否发生变化的一个字母数字串,该字母数字串被成为该消息的消息鉴别码或消息摘要。29什么是数字签名(2/2)2.公钥签名技术公钥体制签名的时候用户用自己的私钥对原始数据的哈希摘要进行加密得到数据,然后信息接收者使用信息发送者的公钥对附在原始信息后的数字签名进行解密后获得哈希摘要,并通过与用自己收到的原始数据产生的哈希摘要对照,便可确信原始信息是否被篡改,这样就保证了数据传输的不可否认性。30数字签名的特性(½)签名是可信的:任何人都可以方便地验证签名的有效性。签名是不可伪造的:除了合法的签名者之外,任何其他人伪造其签名是困难的。这种困难性指实现时计算上是不可行的。签名是不可复制的:对一个消息的签名不能通过复制变为另一个消息的签名。如果一个消息的签名是从别处复制的,则任何人都可以发现消息与签名之间的不一致性,从而可以拒绝签名的消息。31数字签名的特性(2/2)签名的消息是不可改变的:经签名的消息不能被篡改。一旦签名的消息被篡改,则任何人都可以发现消息与签名之间的不一致性。签名是不可抵赖的:签名者不能否认自己的签名。32数字签名技术的功能数字签名可以解决否认、伪造、篡改及冒充等问题,具体要求为:发送者事后不能否认发送的报文签名接收者能够核实发送者发送的报文签名、接收者不能伪造发送者的报文签名、接收者不能对发送者的报文进行部分篡改网络中的某一用户不能冒充另一用户作为发送者或接收者。33数字签名分类以方式分directdigitalsignature直接数字签名arbitrateddigitalsignature仲裁数字签名以安全性分无条件安全的数字签名计算上安全的数字签名以可签名次数分一次性的数字签名多次性的数字签名34数字签名原理消息Hash函数消息摘要发方A相等?收方B加密算法私钥A签名消息加密的消息摘要签名消