消息认证和Hash函数.ppt

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

2012年3月25日 计算机安全技术与实践 消息认证和散列函数 认证 Authentication 认证和加密不同。 消息认证是验证消息完整性的一种机制,能发现对消息的篡改或假冒。 使用对称算法可产生消息鉴别码MAC 使用公钥算法可对消息进行签名 身份认证是鉴别通信对方的身份是否属实。 Hash函数是一个单向的消息摘要函数,在产生MAC、签名中有重要用途。 11.1 认证需求 对网络通信的攻击(4类) 窃听 流量分析 伪装(假冒) 篡改内容 修改顺序 修改时间(包括重放) 发送方抵赖(拒绝承认曾发出过某消息) 接收方抵赖 11.2 认证函数 1. 对称加密 2. 公钥加密 3. 消息认证码(MAC) 4. 散列函数(Hash) 对称加密能否提供认证 由于密钥没有第三方知道,所以接收方应该可以确信消息的来源真实性。 这并不绝对,因为存在一种可能性,是对密文的篡改。 问题:对密文的篡改,能否一定被察觉? 能够察觉的举例 CBC模式加密得到密文 某处被窜改,导致其后续部分解密失败 不能够察觉的举例 rc4加密中,对密文部分比特的窜改导致明文对应部分解密错误 ?如何察觉 另外,随意伪造的密文有可能恰好解密为有效的明文 教训:对密文的保护 在加密之前,给明文添加结构特征 x || h(x) // h=crc,md5,sha1 加密 E ( x || h(x), k ) = y 传输有可能出错或被窜改 y会变做y’ 解密 判断是否依旧符合 x || h(x) 的结构特征 公钥加密 A使用B的公钥加密消息,这不能提供认证。 A可以先使用自己的私钥加密消息(即签名),再用B的公钥加密,这样可以提供认证。 亦需要给明文消息添加结构特征 消息认证码 MAC (假定双方共享密钥) 发送方利用密钥从明文产生一个固定长度的短数据块(MAC),和消息一起传输。 接收方考察是否一致,以判断MAC和/或消息是否被改动过。 避免使用加密方法产生MAC码 生成MAC没有必要整个报文被加密 速度、进出口障碍 不需要能恢复原文 MAC的计算过程只需体现明文的特征唯一 Key是必要的 从报文产生特征的数学方法:HASH函数 先计算特征,再把特征加密的思想 把散列函数和Key结合得MAC HMAC = HashKey(Message) 散列函数 h=H(x) 函数参数 输入:可以任意长度 输出:必须固定长度n比特,一般n=128、160bits 函数特性 单向性质:给定h,要找x使H(x)=h是困难的 弱抗碰撞特性: 对于给定的y,找x,使H(x)=H(y)是困难的 强抗碰撞特性(生日攻击): 找x和y,使H(x)=H(y)是困难的 * 如果碰撞则意味着数字签名容易被伪造/欺骗 关于加密和认证分离 加密本身不能实现真实性认证功能 认证和加密的分离带来灵活性 只要认证而不需保密 如公文,软件完整性鉴别(防病毒)、网络管理广播报文(如SNMP)等 不能加密的场合(如法规限制) 存档期间的保护(而不仅是传输期间) 11.3 消息认证码MAC Message Authentication Code MAC函数 计算明文M在密钥K的作用下的特征码 M || MAC(M, K) 验证时,判断明文M和MAC码是否一致 MAC 讨论 MAC不需要可逆 为了方便,MAC码通常较短 实现MAC函数不排斥使用对称加密算法 实现MAC函数希望使用比加密更高效的方法 为防范重放攻击,加注时间、报文序号 对称MAC不能提供签名特性 因为产生MAC的密钥为两方所有 CBC模式最后分组做为MAC码 FIPS 113 HMAC:带Key的Hash函数 利用HASH函数从报文和密钥产生MAC码 先计算特征,再把特征加密的思想,或 直接把散列函数和Key结合得MAC HMAC = HashKey(Message) 比如 HMAC = Hash(Key || Message) 11.4 Hash函数 Hash函数强调单向性和抗冲突特性 Hash函数的用途总结下先 给明文增加结构特征以保护密文 产生MAC码(HMAC) 数字签名 从口令衍生密钥 挑战-应答认证协议中 也用来产生随机数 散列函数 h=H(x) 函数参数 输入:可以任意长度 输出:必须固定长度n比特,一般n=128、160bits 函数特性 单向性质:给定h,要找x使H(x)=h是困难的 弱抗碰撞特性: 对于给定的y,找x,使H(x)=H(y)是困难的 强抗碰撞特性(生日攻击): 找x和y,使H(x)=H(y)是困难的 * 如果碰撞则意味着数字签名容易被伪造/欺骗 Hash函数设计考虑 奇偶校验 异或XOR(或者累加) 只能检出奇数个比特错误 CRC 常用在帧校验 仍有很

文档评论(0)

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

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

1亿VIP精品文档

相关文档