《网络安全-技术与实践06资料》由会员分享,可在线阅读,更多相关《网络安全-技术与实践06资料(32页珍藏版)》请在金锄头文库上搜索。
1、网络安全网络安全技术与实践技术与实践(第(第2版版) 刘建伟刘建伟 王育民王育民 编著编著 清华大学出版社清华大学出版社 2012-10-09 普通高等教育“十一五普通高等教育“十一五”国家级规划教材国家级规划教材 教育部教育部2011年精品教材 年精品教材 课件制作人声明 课件制作人声明 n 本课件总共有17个文件,版权属于刘建伟所 有,仅供选用此教材的教师和学生参考。 n 本课件严禁其他人员自行出版销售,或未经 作者允许用作其他社会上的培训课程。 n 对于课件中出现的缺点和错误,欢迎读者提 出宝贵意见,以便及时修订。 课件制作人:刘建伟 2012年2月8日 消息认证与杂凑函数 消息认证与杂
2、凑函数 信息加密能保证真实性吗 二 三 一 杂凑(Hash)函数 什么是认证 一 四 消息认证码 五 应用杂凑函数的基本方式 攻击者类型 攻击者类型 ?信息产生、处理、传输、存储的各个环节都有安全问 题隐患。 ?被动攻击(passive attacks) ?信道窃听 ?盗取存储数据 ?主动攻击(active attacks) ?假冒消息 ?窜改消息 ?截留消息 ?修改数据 ? 一一、什么是认证什么是认证 (authentication) n 消息的内容不希望他人知道 l 数据加密 n 消息内容的完整性 n 消息内容的真实性 n 消息来源的真实性 n 实体身份的真实性 l 认证机制 机密性机密性
3、 (confidentiality) 真实性(真实性(authenticity) 认证方式的分类 认证方式的分类 n 双方相互信任的认证(如企业内部人员之间) l 对称认证(symmetric authentication) l 针对第三方的攻击,例如查验文件是否被人修改过 n 双方相互不信任的认证(如商业伙伴之间) l 非对称认证(asymmetric authentication) l 针对来自对方的攻击,例如查验对方的文件是否真实 二二、信息加密即保证真实吗信息加密即保证真实吗? n 对称认证:保护消息的真实性 l 保护信息来源 (data origin authentication)
4、l 保护信息不被修改(the integrity of the information) n 直到1970年代末人们相信: l 如果解密后得到符合语义的消息,即可断定消息来源 的真实 l 因为这意味密文经过真实密钥加密而来,而掌握密钥 的人是可靠的 n 事实上,保证真实性不仅要求加密算法安全,还取决 使用密码的模式 。 反例反例1:对称加密不能保证真实性 对称加密不能保证真实性 ?例1. 流密码:主动攻击者可以通过置乱相应密文比特,来 达到改变任意明文比特的目的。 ?例2. ECB模式分组密码:主动攻击者可以记录一些密文分 组信息,用来替代其它分组。如果分组之间不相关,完全 不可能检测到攻击;
5、除非明文之间有关联(利用冗余性质)。 , m3, m2, m1 , c3, c2, c1 , k3, k2, k1 , M3, M2, M1 , C3, C2, C1 K E 反例反例2:公钥加密不能保证真实性 公钥加密不能保证真实性 n 使用公钥加密可以提供保密性,但不能提供认证。 n 发送方A采用接收方B的公钥kBP对消息m进行加密,由于 只有B知道自己的私钥kBS,所以只有B能对收到的消息准 确解密。 n 但是,任何人可以假冒A,用B的公钥对消息m加密,所 以这种方法不能保证真实性。 保证完整性的方式保证完整性的方式-1 n 类似于对称密码,数据的真实性依赖于一个短密钥的保 密性和真实性
6、。 首先计算:MAC=hash(m|k) l 信息的真实性依赖密钥的保密性与真实性 l m |MAC n 消息认证码MAC:Message Authentication Code l 在计算Hash值过程中,有密钥的参与。 保证完整性的方式保证完整性的方式-2 n 篡改检测码MDC:Manipulation Detection Code 首先计算:MDC=hash(m) l 在计算hash的过程中,没有密钥的参与。 n 信息的真实性基于 MDC的真实性 l 例如, 针对所有重要文件计算MDC,文件将发往异地的朋 友,其中MDC通过电话传输。电话信道的真实通过语音识别 保障。 n 增加冗余并不充
7、分保证提高抗攻击的等级 l 可能发起重放攻击 l 双方共享密钥,完全对等 l 仅提供不可否认(non-repudiation),但实际操作也很困难 注意:上述方法的前提是发送者(sender)和(receiver)要相互 信任,出现纠纷无法判决 三三、杂凑(杂凑(Hash)函数 函数 n 信息的真实性通过验证秘密的保护,以及一个短烙印 (imprint)或Hash值的真实性来确认 n Hash函数来源于计算机技术:将任意串压缩成固定长 的比特串 n 我们讨论的是密码意义的Hash函数 (cryptographic hash functions ) l hash code, hash total
8、, hash result, imprint, (cryptograp hic) checksum, compression, compressed encoding, au thenticator, fingerprint, Message Integrity Code (MIC), message digest. 1. 单向杂凑单向杂凑(Hash)函数 函数 n 杂凑(Hash)函数是将任意长的数字串m映射成一个较短的定 长输出数字串的函数,我们关心的通常是单向杂凑函数; n 分类:强单向杂凑与弱单向杂凑 (无碰撞性collision-free); n 单向杂凑函数的设计理论; n 杂凑函
9、数除了可用于数字签名方案之外,还可用于其它方 面,诸如消息的完整性检测、消息的源点认证检测等。 2. 什么是杂凑函数 什么是杂凑函数 n 函数y=H(x),要求将任意长度的x变换成固定长度的y,并 满足: l 1. 单向性:任给y,由y=H(x)计算x困难 l 2. 快速性:任给x,计算y=H(x)容易 l 3. 无碰撞:寻找x1 x2 ,满足H(x1)=H(x2)是困难的。 n 常用的hash 函数有 MD5, SHA,以及采用分组密码算法构 造的hash函数(也叫做杂凑函数)等。 单向杂凑函数单向杂凑函数One-way Hash Function n 算法特点:不定长度输入,固定长度输出(
10、MD5输出为16字节、 SHA-1输出长度为20字节) n 雪崩效应:输入很小的变动可引起输出较大变动 n 完全单向:已知输出无法推算出输入,已知两个输出的差别无法 推算出输入的差别 uyge7#4* HASH 算法 Hi,Dear Li: I have lived in Beijing for 10 years . 3. 杂凑函数应满足的条件 杂凑函数应满足的条件 1. 函数的输入可以是任意长度; 2. 函数的输出是固定长度; 3. 已知x,求H(x)较为容易,可用硬件或软件实现; 4. 已知h,求使得H(x)=h的x在计算上是不可行的,这一性质 称为函数的单向性,称H(x)为单向杂凑函数;
11、 5. 已知x,找出y(yx),使得H(y)=H(x)在计算上是不可行的。 6. 找出任意两个不同的输入x和y,使得H(y)=H(x)在计算上 是不可行的。 7. 第 给出了杂凑函数无碰撞的概念。 4、Hash码的分类 码的分类 n 校验和:Cyclic Redundancy Check (CRC) n 消息认证码:MAC算法是使用密钥的算法 n 消息检测码:MDC是无密钥算法 l 单向Hash函数(one-way hash function,OWHF) l 抗碰撞Hash函数(collision resistant hash function, CRHF)。 注:CRHF是更好的强单向Has
12、h函数 n 无碰撞性Hash函数(collision free hash function) l 无碰撞的hash函数存在 l 但很难找到它们。 5、单向单向Hash函数(函数(OWHF) l 1. 变量X可以是任意的长度,而h(X)的结果具有固定的 长度n bits (64.80) l 2. 抗原象攻击:已知一个杂凑值h,找一个输入串x, 使得h=h(x),这在计算上是不可行的。 l 3. 抗碰撞攻击:找两个输入x和y(xy),使得h(x)=h (y),这在计算上是不可行的。 定义定义1:单向杂凑函数满足以下条件: 1 6、抗碰撞抗碰撞Hash函数(函数(CRHF) l 1. 变量X可以是任
13、意长度,而h(X)值具有固定的n bits (128.160)长度。 l 2. 杂凑函数必须是单向的。 l 3. 杂凑函数必须是抗碰撞的:这意味着很“难”找到 两个不同的消息x和y,杂凑后得到相同的值h(x)=h(y)。 定义定义2:抗碰撞的杂凑函数满足以下条件: 2 7、杂凑函数在密码学中的应用 杂凑函数在密码学中的应用 n 在数字签名中,杂凑函数一般用来产生“消息摘要”或“消 息指纹”。这种用法是为将要签署的消息增加一个可以验证 的冗余,以便这个杂凑消息包含可以识别的信息。 n 在具有实用安全性的公钥密码系统中,杂凑函数被广泛地用 于实现密文正确性验证机制。 n 在需要随机数的密码学应用中
14、,杂凑函数被广泛地用作实用 的伪随机函数。这些应用包括:密钥协商,认证协议,电子 商务协议,知识证明协议。 四四、消息认证码消息认证码MAC n MAC也称为密码校验和,它由下述函数产生: l MAC=h(M|K) l 其中,M是一个变长的消息,K是收发双方共享的密钥, h(M|k)是定长的认证符。 n 在实际应用中,发送者将消息M和此认证符一起发给接收 者: l (M, h(M|k) n 接收者在收到消息后,计算:MAC=h(M|K) l 比较MAC=MAC? l 若相等,则说明消息未被篡改; l 若不等,则说明消息被改动了。 五五. 构造构造MAC的几种方法 的几种方法 l 用分组密码构造
15、的MAC,例如采用分组密码的CBC 工作模式 l 基于杂凑函数构造的MAC算法 l 定制设计的MAC算法 l 利用MD4, MD5, SHA等构造MAC 举例说明 Hash函数应用之一函数应用之一:构造构造MAC n 无保密功能,只能用来认证; n MAC:为了保护消息的真实性,我们可以首先计算MAC =h(k|m),然后将其附着在信息的后面,即m,h(k|m)。 n 现在消息的真实性依赖于共享密钥的真实性和保密性。 任何拥有这一密钥的人均可以验证该消息的真实性。 n 因此,对消息真实性的保护已经转化成安全地在通信双 方之间建立共享密钥的问题。 Hash函数应用之二函数应用之二:构造构造MDC
16、 n MDC:如果采用MDC, 消息的真实性就转化成检验一个 固定长度的比特串的真实性(优点:不需共享密钥),即 MDC=h(m) n 需要认证信道传输MDC,也就是说,发送者需要将MDC 通过一特定的信道传送给对方。例如,发送者可以打电话 告诉对方MDC值。而这个消息的真实性依赖于电话中对 于发送者声音的确认。 n 为避免纠纷,h应为抗碰撞的杂凑函数(CRHF) l 发送者发送:m l 接收者验证:h(m)=h(m)? MDC数学表示 数学表示 n 信息 X 被分为 t 个分组: X1, X2, , Xt(如必要,需padding) 计算:H0=IV, Hi=f(Xi, Hi-1), ,h(X)=g(Ht) l h为Hash函数,f