《第5章 报文鉴别与散列函数12-03.ppt》由会员分享,可在线阅读,更多相关《第5章 报文鉴别与散列函数12-03.ppt(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第5章 报文鉴别与散列函数内容l鉴别的需求;l散列函数;l报文鉴别码l签名5.1 鉴别的需求l网络通信环境中会受到下列攻击泄露;通信量分析:连接的频率和持续的时间、报文数量等。伪装:假源点;内容篡改:修改内容;序号篡改:增删内容;计时篡改:报文回放;抵赖:终点否认收到、源点否认发送过。5.2 鉴别函数l鉴别函数:用来产生用于鉴别一个报文的值:鉴别符。l鉴别符用于鉴别报文在通信过程中是否被篡改、删除和修改等。l产生鉴别符的几类函数:报文加密:以整个报文作为它的鉴别符号报文鉴别码(MAC)散列函数鉴别函数-报文加密l对称加密:提供保密:仅源点和终点共享K。一定程度的鉴别:仅来自源点。不提供签名:接
2、收人可以伪造、发送人可以否认。EMMDKKEk(M)鉴别函数-报文加密l私钥加密:提供鉴别和签名:仅源点有私钥KS。任何一方都能用公开密钥Kp脱密。EMMDKsKpE Ks(M)鉴别函数-报文加密l公开密钥加密:提供报密:仅终点有脱密的私钥KS。不提供签名:接收人可以伪造、发送人可以否认。EMMDKpKSE Kp(M)鉴别函数-报文加密l对称密钥加密:提供保密:BKp鉴别与签名:AKsEMMDAKsBKsE BKp(E AKs(M)EBKpABDAKp为什么需要报文鉴别EMMDKKY=Ek(M)ZEk(M)NDK消息鉴别消息鉴别 VS 常规加密常规加密保密性与真实性是两个不同的概念保密性与真实
3、性是两个不同的概念根本上根本上,信息加密提供的是保密性而非真实性信息加密提供的是保密性而非真实性加密代价大加密代价大(公钥算法代价更大公钥算法代价更大)鉴别函数与保密函数的分离能提供功能上的灵活性鉴别函数与保密函数的分离能提供功能上的灵活性某些信息只需要真实性某些信息只需要真实性,不需要保密性不需要保密性 广播的信息难以使用加密广播的信息难以使用加密(信息量大信息量大)网络管理信息等只需要真实性网络管理信息等只需要真实性 政府政府/权威部门的公告权威部门的公告为什么需要报文鉴别码l加密与鉴别分离,使得结构灵活。例如:应用层鉴别,底层加密;l减少工作量,验证鉴别码较容易;l监控计算机程序,防止程
4、序被修改,但装载时不要对程序解密。报文鉴别码MAClMAC,也称为密码检验和,由如下形式的函数C生成:MAC=Ck(M)其中M是变长的报文K是仅由收发双方共享的密钥Ck M)是定长的鉴别符。l当报文确信或已知是正确时,终点每次将MAC附加到报文中。接收者通过重新计算MAC来对报文进行鉴别。5.2.2 散列函数散列函数(Hash Function)散列函数的定义散列函数的定义散列函数:散列函数:M:变长报文变长报文H(M):定长的散列码定长的散列码(报文摘要)报文摘要)主要用于为文件、报文或其它分组数据产生指纹主要用于为文件、报文或其它分组数据产生指纹散列函数的说明散列函数的说明H(M):输入为
5、任意长度的消息输入为任意长度的消息M;输出为一个固定输出为一个固定长度的散列值,称为消息摘要长度的散列值,称为消息摘要(MessageDigest)H(M)是消息是消息M的所有位的函数并提供错误检测能的所有位的函数并提供错误检测能力:消息中的任何一位或多位的变化都将导致该力:消息中的任何一位或多位的变化都将导致该散列值的变化散列值的变化H(M)又称为:哈希函数、数字指纹(又称为:哈希函数、数字指纹(Digital finger print)、压缩(压缩(Compression)函数、数据鉴函数、数据鉴别码(别码(Dataauthentication code)等等Hash vs MACMAC需
6、要对全部数据进行加密需要对全部数据进行加密MAC速度慢速度慢Hash是一种直接产生鉴别码的方法是一种直接产生鉴别码的方法散列函数方法(a)a)提供了保密和鉴别。MH|EDMHEkM|H(M)kkH(M)比较散列函数方法(b)l散列与加密结果合并为一个整体函数实际上就是一个MAC。EH(M)是变长报文M和密钥K的函数值,且它生成一个定长的输出,对不知道该密钥的对手来说是安全的。l提供鉴别MHE|MHDEkH(M)KKEK(H(M)比较散列函数方法(c)l提供鉴别、抵赖。MHE|MHDEKRa(H(M)KRaKUaEKRa(H(M)比较散列函数方法(d)l同时提供保密性、鉴别和抵赖。MHE|EDM
7、HDEkM|EKRa(H(M)kkKRaKUaEKRa(H(M)比较散列函数方法(e)l通信各方共享一个公共的秘密值s。对报文鉴别。M|H|H(M|s)s比较|Hs散列函数方法(f)l通过包含报文和散列码的整体进行加密就能对上一种方法(e)增加保密功能M|H|Ek(H(M|s)s比较|HsEkH(M|s)Dk散列函数的目标l散列函数的目的是为文件、报文或其他的分组数据产生“指纹”。要用于报文鉴别,散列函数H必须具有如下性质:1.H能用于任何大小的数据分组。2.H产生定长输出。3.对任何给定的x,H(x)要相对易于计算,使得硬件和软件实现成为实际可行。4.对任何给定的码H(x),从H(x)计算x
8、,在计算上是不可行的。这就是所谓的单向性质。5.对任何给定的分组x,寻找不等于x的y,使得H(y)=H(x)在计算上是不可行的。6.寻找对任何的(x,y)对使得H(x)=H(y)在计算上是不可行的。5.2.3 散列算法5.2.3.1 MD5MD5描述描述Merkle于于1989年提出年提出hash function模型模型Ron Rivest于于1990年提出年提出MD41992年年,Ron Rivest 完成完成MD5(RFC 1321)在最近数年之前在最近数年之前,MD5是最主要的是最主要的hash算法算法现行美国标准现行美国标准SHA-1以以MD5的前身的前身MD4为基础为基础MD5描述
9、描述 输入:任意长度的报文输入:任意长度的报文输入分组长度:输入分组长度:512 bit 输出:输出:128 bit 报文报文5.2.3.1.1 设计目标l安全性l直接安全性l速度l简单性和紧凑性l有利的Little-Endian结构MD5描述描述step 1 附加填充比特附加填充比特对报文进行填充,使其比特数与对报文进行填充,使其比特数与448模模512同余,同余,即填充长度为即填充长度为512的整数倍减去的整数倍减去64填充方法:填充比特串的最高位为填充方法:填充比特串的最高位为1,其余各位,其余各位均为均为0MD5描述描述step 2 附加长度值附加长度值|M2|为为512的倍数的倍数:
10、Y0,Y1,YL-1MD5描述描述step 3初始化初始化MD缓存缓存MD为为128bit,用于存放散列函数的中间及最终结用于存放散列函数的中间及最终结果果MD可表示为可表示为4个个32bit的寄存器的寄存器(A,B,C,D),初始化初始化如下:如下:MD5描述描述step 4以以512个比特(个比特(16个字)分组处理消息个字)分组处理消息主循环包含共主循环包含共64步操作,分别使用步操作,分别使用4个非线性函数。个非线性函数。每一次循环可以表示为每一次循环可以表示为7步。步。64步操作形式:步操作形式:a b+(a+g(b,c,c)+Xk+Tis)MD5报文摘要算法 (Rivest,RFC
11、1321)Y1 512Y0 512Yq 512YL-1 512 HMD5HMD5HMD5HMD5报文 L*512-64-填充长度填充1-512长度64IVCVqCV1CVL-1128位摘要lMD5:RFC1321lMD4:RFC1320lMD2:RFC1319HMD5CVq 128BACDG,T17,18,32,X2(k)16个步骤个步骤BACDF,T1,2,16,Xk16个步骤个步骤BACD 32BACDH,T33,34,48,X3(k)16个步骤个步骤I,T49,50,64,X4(k)16个步骤个步骤Yq 512+CVq+1 1284轮,每轮16步骤ABCDABCD+CLSs+XkTig1
12、.Xk 是分组的第k个32比特,k=1,2,162.Ti=232 abs(sin(i)的整数部分3.b=b+(a+g(b,c,d)+Xi+Ti)s)MD5的的安全性安全性Berson表明,对单循环表明,对单循环MD5,使用不用的密码分析可能在合使用不用的密码分析可能在合理的时间内找出能够产生相同摘要的两个报文,这个结果被理的时间内找出能够产生相同摘要的两个报文,这个结果被证明对四个循环中的任意一个循环也成立,但作者没有能够证明对四个循环中的任意一个循环也成立,但作者没有能够提出如何攻击包含全部提出如何攻击包含全部4个循环个循环MD5的攻击的攻击Boer和和Bosselaers显示了即使缓存显示
13、了即使缓存ABCD不同,不同,MD5对单个对单个512bit分组的执行将得到相同的输出分组的执行将得到相同的输出(伪冲突)伪冲突)Dobbertin的的攻击技术:使攻击技术:使MD5的的压缩函数产生冲突,即寻找压缩函数产生冲突,即寻找MD5被认为是易受攻击的,逐渐被被认为是易受攻击的,逐渐被SHA-1和和RIPEMD-160替替代代5.2.3.2 安全散列算法SHA-1l安全散列算法(SHA)由美国国家标准和技术协会(NIST)提出,作为联邦信息处理标准(FIPS PUB 180)在1993年公布。l1995年发布了一个修订版 FIPS PUB 180-1通常称为SHA-1lSHA也是基于MD
14、4的。l最大报文长度264-1,散列码长度160bit。l结构与MD5类似,抗攻击能力比MD5强;HMAC (密码散列算法 RFC2104)lKeyed-Hashing for Message Authentication CodeKeyed-Hashing for Message Authentication Codel在最近几年,研究的热点转向由密码散列码导出MAC。这样的目的在于:1.密码散列函数如MD5和SHA-1的软件执行速度比对称分组密码如DES的快。2.很容易获得密码散列函数的库代码。3.美国或其他国家对密码散列函数没有出口限制,而对称分组密码,即便用作MAC也是限制的。HMAC
15、的主要设计目标:l无需修改地使用现有的散列函数(比如MD5或SHA-1)。特别是,散列函数的软件实现执行很快,且程序代码码是公开的和容易获得的。l当出现或获得更快的或更安全的散列函数时,对算法中嵌入的散列函数要能轻易地进行替换。l保持散列函数的原有性能不会导致算法性能的降低。l使用和处理密钥的方式很简单。HMACHMAC 算法 RFC2104SiY0Y1YL-1散列函数b bitsb bitsb bitsK+ipadK+opadS0H(Si|M)散列函数HMACk(M)n bitsIVn bitsIV填充到b bitsHMAC算法1.对密钥K的左端填充一些0生成一个b bits的串K+。2.ipad:b/8个00110110,opad:01011010。3.将K+与中ipad按比特异或(XOR)产生一个b bits 分组Si。4.将报文M附加到Si后。5.使用H计算第3步产生流的散列值。6.将K+与opad按比特异或产生一个b bits 的分组S0.7.将第4步产生的散列值附加到S0后。8.使用H计算第6步产生流的散列值,并输出这个结果。HMAC的安全性lHMAC的安全性取决于所使用的散列函数的安全性l使用MD5或SHA-1作为HMAC算法中的散列函数H时,安全性是可以保证的