现代密码学第7章散列函数.ppt

  1. 1、本文档共129页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
现代密码学第7章散列函数

散列函数 本章主要内容 1、消息认证码 2、散列函数 3、MD5杂凑算法 4、安全杂凑算法 5、HMAC算法 习题 曾介绍过信息安全所面临的基本攻击类型,包括被动攻击(获取消息的内容、业务流分析)和主动攻击(假冒、重放、消息的篡改、业务拒绝)。抗击被动攻击的方法是前面已介绍过的加密,本章介绍的消息认证则是用来抗击主动攻击的。 消息认证是一个过程,用以验证接收消息的真实性(的确是由它所声称的实体发来的)和完整性(未被篡改、插入、删除),同时还用于验证消息的顺序性和时间性(未重排、重放、延迟)。 除此之外,在考虑信息安全时还需考虑业务的不可否认性,即防止通信双方中的某一方对所传输消息的否认。实现消息的不可否认性可通过数字签字,数字签字也是一种认证技术,它也可用于抗击主动攻击。 消息认证包括: 消息完整性 身份识别 不可否认性 1.1 消息认证码的定义及使用方式 消息认证码是指消息被一密钥控制的公开函数作用后产生的、用作认证符的、固定长度的数值,也称为密码校验和。此时需要通信双方A和B共享一密钥K。设A欲发送给B的消息是M,A首先计算MAC=CK(M),其中CK(·)是密钥控制的公开函数,然后向B发送M‖MAC,B收到后做与A相同的计算,求得一新MAC,并与收到的MAC做比较,如图1(a)所示。 消息认证码的定义及使用方式 如果仅收发双方知道K,且B计算得到的MAC与接收到的MAC一致,则这一系统就实现了以下功能: ① 接收方相信发送方发来的消息未被篡改,这是因为攻击者不知道密钥,所以不能够在篡改消息后相应地篡改MAC,而如果仅篡改消息,则接收方计算的新MAC将与收到的MAC不同。 ② 接收方相信发送方不是冒充的,这是因为除收发双方外再无其他人知道密钥,因此其他人不可能对自己发送的消息计算出正确的MAC。 消息认证码的定义及使用方式 MAC函数与加密算法类似,不同之处为MAC函数不必是可逆的,因此与加密算法相比更不易被攻破。 上述过程中,由于消息本身在发送过程中是明文形式,所以这一过程只提供认证性而未提供保密性。为提供保密性可在MAC函数以后(如图1(b))或以前(如图1(c))进行一次加密,而且加密密钥也需被收发双方共享。在图1(b)中,M与MAC链接后再被整体加密,在图1(c)中,M先被加密再与MAC链接后发送。通常希望直接对明文进行认证,因此图1(b)所示的使用方式更为常用。 message authentication code (MAC) 签名的电子等价形式 与消息同时发送 通过一些算法, 依赖于消息及双方共享的秘密 消息可以是不任意长 MAC 可以是任意长,但常选固定长度 这需要hash function “压缩”消息成固定长度 MAC的基本使用方式 消息认证过程 利用对称密码进行认证 利用对称密码加密的消息可以作为认证内容 因为只有密钥的拥有者才可以生成 (要求消息有一定的冗余度) 但不能解决消息的不可否认性 (无法证明谁生成的消息) 1.2 产生MAC的函数应满足的要求 使用加密算法(单钥算法或公钥算法)加密消息时,其安全性一般取决于密钥的长度。如果加密算法没有弱点,则敌手只能使用穷搜索攻击以测试所有可能的密钥。如果密钥长为k比特,则穷搜索攻击平均将进行2k-1个测试。特别地,对惟密文攻击来说,敌手如果知道密文C,则将对所有可能的密钥值Ki执行解密运算Pi=DKi(C),直到得到有意义的明文。 1.2 产生MAC的函数应满足的要求 对MAC来说,由于产生MAC的函数一般都为多到一映射,如果产生n比特长的MAC,则函数的取值范围即为2n个可能的MAC,函数输入的可能的消息个数N2n,而且如果函数所用的密钥为k比特,则可能的密钥个数为2k。 如果系统不考虑保密性,即敌手能获取明文消息和相应的MAC,那么在这种情况下要考虑敌手使用穷搜索攻击来获取产生MAC的函数所使用的密钥。 1.2 产生MAC的函数应满足的要求 假定kn,且敌手已得到M1和MAC1,其中MAC1=CK1(M1),敌手对所有可能的密钥值Ki求MACi=CKi(M1),直到找到某个Ki使得MACi=MAC1。由于不同的密钥个数为2k,因此将产生2k个MAC,但其中仅有2n个不同,由于2k2n,所以有很多密钥(平均有2k/2n=2k-n个)都可产生出正确的MAC1,而敌手无法知道进行通信的两个用户用的是哪一个密钥,还必须按以下方式重复上述攻击: 1.2 产生MAC的函数应满足的要求 第1轮 已知M1、MAC1,其中MAC1=CK(M1)。对所有2k个可能的密钥计算MACi=CKi(M1),得2k-

文档评论(0)

75986597 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档