第07章 消息认证与散列函数.ppt

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

第七章 消息认证与散列函数 本章内容: 认证的需求 认证函数 消息认证码MAC 散列函数 散列函数和MAC的安全性 散列算法(MD5、SHA、 RIPEMD-160) HMAC 1. 认证的需求 网络环境下面临的安全威胁 1. 泄露 2. 通信量分析 3. 伪装 4. 内容篡改 5. 序号篡改 6. 计时篡改 7. 抵赖 2. 认证函数 消息认证是一个证实收到的消息来自可信的源点且未被篡改的过程。消息认证也可证实消息顺序性和及时性。数字签名是一种包括防止源点或终点抵赖的认证技术。 常见的认证方法分类: 消息加密:以整个消息的密文作为它的认证码。 消息认证码(MAC):以一个消息的公共函数和用于产生一个定长值的密钥作为认证码。 散列函数(Hash):一个将任意长度的消息映射为定长的散列值的公共函数,以散列值作为认证码。 2.1 消息加密 消息加密认证——方案 2.1 消息加密 2.1 消息加密 针对上图(a)的情况,如何能够在接收方验证接收到的解密消息就是发送方发送来的消息M? 接收方有何自动的方法验证解密消息就是发送方发送的消息M? 2.2 消息加密 要自动确定是否对收到的密文能解密为可懂的明文的一种方法是强制明文有某种结构,这种结构是易于识别但又不能复制且无需求助加密的。 2.2 消息认证码 该方案使用一个密钥产生一个短小的定长数据分组,即所谓的密码检验(MAC),并将它附加在消息中。该技术假定通信双方,A和B,共享一个共有的密钥K。当A有要发往B的消息时,它将计算MAC,MAC作为消息和密钥K的一个函数值:MAC = CK(M),然后将加上MAC消息发往预定的接收者。使用相同的密钥,接收者对收到的消息执行相同的计算并得出新的MAC。将收到的MAC与计算得出的MAC进行比较,就可以实现认证。 2.2 消息认证码 2.2 消息认证码 有许多应用要求将相同的消息对许多终点进行广播。 一方有繁重的处理任务,无法负担对所有收到消息进行解密的工作量。仅进行有选择地认证,对消息进行随机检查。 对明文形式的计算机程序进行认证。 对某些应用,也许不关心消息的保密而更看重认证消息的真实性。 认证函数与保密函数的分离能提供结构上的灵活性。 用户也许期望在超过接收时间后继续延长保护期限,同时允许处理消息的内容。 2.2 散列函数 单向散列(Hash)函数消息认证码的一个变种。 与消息认证码一样,散列函数以一个变长的消息M作为输入,并产生一个定长的散列码H(M),有时也称为消息摘要,或者Hash值,作为输出。与MAC不同的是,散列码并不使用密钥。散列码是消息所有比特的函数值,具有差错检测能力:消息中任意一比特或若干比特发生改变都将导致散列码发生改变。 2.2 散列函数 2.2 散列函数 2.2 散列函数 2.2 散列函数 当不需保密时,方法(b)和(c)在降低计算量上要优于那些需对整个消息加密的方法。然而,目前对避免加密的方法 (e)越来越重视。对这种重视,其原因为: 加密软件很慢。即使每个消息中需加密的数据量很小,也可能有稳定的消息流进和流出一个系统。 加密硬件的开销是不可忽略的。尽管已有费用低廉的实现DES算法的芯片,但如果网络中的所有结点都必须拥有这种加密能力,累加的开销就会很大。 加密硬件是针对大长度数据进行优化的。对于小数据分组加密,初始化工作要在整加密时间中占很大比例。 加密算法可能受专利的保护。某些加密算法如 RSA公开密钥算法受的保护必须获得许可,这将增加开销。 加密算法易遭到美国政府的出口限制。 3. 消息认证码 MAC,也称为密码检验和,由如下形式的函数C生成 MAC=CK(M) 其中M是变长的消息,K是仅由收发双方共享的密钥,CK(M)是定长的认证码。当消息确信或已知是正确时,终点每次将MAC附加到消息中。接收者通过重新计算MAC来对消息进行认证。 3. 消息认证码 对MAC的攻击——方法1(确定加密密钥) 由于MAC函数一般是一个多对一的函数,因此对于长度为n比特的MAC,如果密钥的长度为k比特(k>n),那么如果已知M1和MAC1,MAC1 = CK1(M1),密码分析者必须对所有可能的密钥值Ki执行MACi = CKi(M1)。当MACi = MAC1时,则至少找到一个密钥。注意,总共将产生2k个MAC,但只有2n<2k个不同的MAC值。因此,许多密钥能产生这个正确的MAC,但对手却无法确认真正的正确密钥。平均说来,总共2k/2n = 2(k-n)个密钥将产生一个匹配。因此,对手必须重复这样的攻击: 第1轮 给定:M1,MAC1 =CK(M1) 计算MAC

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档