《认证理论与技术-2》由会员分享,可在线阅读,更多相关《认证理论与技术-2(57页珍藏版)》请在金锄头文库上搜索。
1、第11章 认证理论与技术(1),认证、认证码、Hash函数,11.1认证与认证系统,认证(Authentication)是防止主动攻 击的重要技术,对开发系统安全性有重 要作用. 认证的主要目的 实体认证(发送者非冒充) 消息认证(验证信息的完整性),11.1认证与认证系统(Cont.),网络环境中的攻击(认证的需求) 1.泄漏 2.通信量分析 3.伪装(假报文) 4.内容篡改(插入,删除,调换和修改) 5.序号篡改(报文序号的修改) 6.计时篡改(报文延迟或回放) 7.抵赖(否认收或发某报文) 1,2加密, 36报文认证, 7数字签名(36),保密和认证同时是信息系统安全的两个方面,但它 们
2、是两个不同属性的问题,认证不能自动提供保密性, 而保密性也不能自然提供认证功能。一个纯认证系统的 模型如下图所示:,窜扰者,信宿,信源,认证编码器,认证译码器,信道,安全信道,密钥源,11.1认证与认证系统,三类产生认证码的函数 报文加密 以整个报文的密文为认证码; 报文认证码(MAC) 是报文和密钥的公共函数,产生一个定长 值作为认证码; Hash函数 一个将任意长度的报文映射为定长的Hash值 的公共函数,以Hash值作为认证码;,11.2报文加密提供认证,常规加密 问题:如果报文是任意比特的组合,接收方 没有自动的方法确定报文的合法性. 解决方案:强调明文的某种结构,这种结构 是易于识别
3、但不能复制且无需加密的.,对称加密与认证的关系,A-B: E(K, M) 提供保密(仅A和B共享密钥K) 提供一定程度的认证 仅来自A 传输中不会被更改 需要某种结构或冗余 不提供签名 接收者可以伪造报文 发送者可以否认报文,下图的通信双方,用户A为发信方,用户 B为接收方。用户B接收到信息后,通过解密来 判决信息是否来自A,信息是否是完整的,有无 窜扰。,常规加密:具有机密性,可认证,11.2报文加密提供认证(Cont.),公开密钥加密 发送方用自己的私钥加密报文,接收方用发 送方的公钥解密(与对称密钥加密原理相 同,需要某种特定报文结构).该方案不提供 加密. 发送方先用自己的密钥加密以提
4、供认证,然 后使用接收方公钥加密提供保密性.缺点是 效率不高.,公开密钥加密与认证的关系,A-B: E(KUb,M) 提供保密(仅B能解密) 不提供认证 A-B: E(KRa,M) 提供认证和签名(仅有A可加密,需要某种结构和冗余,任何一方均能验证签名) A-B: E(KUb,E(KRa, M) 可提供保密 可提供认证和签名,KUb(B方的公钥),(1) 公钥加密:具有机密性,(2) 公钥加密:认证和签名,(3) 公钥加密:机密性,可认证和签名,11.3 报文认证码(MAC),认证码(MAC,也称密码检验和) 对选定报文,使用一个密钥,产生一个短小的定长数据分组,称认证码,并将它附加在报文中,
5、提供认证功能. (MAC = Ck(M) ,其中M是可变长的报文, K是共享密钥,Ck(M)是定长的认证码.) 应用认证码,如果只有收发方知道密钥,同时收到的MAC与计算得出的MAC匹配: 确认报文未被更改; 确信报文来自所谓的发送者; 如果报文包含序号,可确信该序号的正确性;,11.3 报文认证码(Cont.),报文认证码的基本用法1 A-B: M | Ck(M) 提供认证, 因仅A和B共享K;,C,M,M,Ck(M),K,C,K,比较,源点,终点,11.3 报文认证码(Cont.),报文认证码的基本用法2 A-B: Ek2 (M | Ck1(M) ) 提供认证, 因仅A和B共享K1; 提供
6、保密,因仅A和B共享K2;,C,M,Ek2 (M | Ck1(M) ),K1,C,K1,比较,源点,终点,E,K2,D,K2,Ck1(M),11.3 报文认证码(Cont.),报文认证码的基本用法3 A-B: Ek2 (M) | Ck1(Ek2 (M) ) 提供认证, 因仅A和B共享K1; 提供保密,因仅A和B共享K2;,C,M,Ck1(Ek2 (M) ),K1,C,K2,比较,源点,终点,E,K2,D,K1,Ek2 (M),M,11.3 报文认证码(Cont.),为什么使用报文认证(而不是用常规加密) 适用于报文广播(并不需要每个点都有密钥); 报文加密解密的工作量比较大; 某些应用不关心报
7、文的保密而只关心报文的真实性; 认证函数与保密函数的分离能提供结构上的灵活性(认证与保密可在网络协议的不同层次进行). 认证码可延长报文的保护期限,同时能处理报文内容(使用加密,当报文解密后,保护就失效了).,11.3 报文认证码(Cont.),注意 认证函数类似加密函数,但它是不可逆的,这个性质使其比加密函数更难破解; 认证函数并不提供数字签名; 认证码的信息论* G.J. Simmons发展的认证系统的信息理论,类似保密系统的信息理论,也是将信息论用于研究认证系统的理论安全性和实际安全性问题,指出认证系统的性能极限以及设计认证码必须遵循的原则,是研究认证问题的理论基础.,11.3 报文认证
8、码(Cont.),MAC函数应有如下性质(攻击者没有K): 有M和Ck(M),试图生成M, 使得Ck(M)= Ck(M), 这在计算上不可行; Ck(M)应能均匀分布;对于随机选取的报文M和M, Ck(M)= Ck(M)的概率为2-n其中n 为 MAC的比特长度;(抗选择明文攻击) 报文M为M的某种已知代换,即M=f(M),则Ck(M)= Ck(M)的概率为2-n.,11.3 报文认证码(Cont.),基于DES的报文认证码 描述如下: 被认证报文分成连续的64bit分组:D1,D2, Dn(必要时用0填充).使用DES算法E,密钥 K,数据认证码计算如下(16= M =64): C1 = E
9、k(D1) C2 = Ek(D2C1) Cn = Ek(Dn Cn-1),11.4 Hash函数(散列,哈希函数),Hash函数 Hash函数是将任意长度的报文映射成一个较短的定长输出报文的函数. 如下形式: h = H(M), M是变长的报文,h是定长的Hash值. Hash函数的目的是为文件、报文或其它的分组数据产生“数字指纹”.,11.4 Hash函数(Cont.),使用Hash码提供报文认证的方式 (a) A-B: Ek(M | H(M) ) 提供保密(仅A和B共享K) 提供认证(加密保护 H(M) ) (b) A-B: M | Ek( H(M) ) 提供认证(加密保护 H(M) )
10、(c) A- B: M | EKRa( H(M) ) 提供认证和数字签名(加密保护 H(M) ,且仅A能生成EKRa( H(M) ),11.4Hash函数(Cont.),使用Hash码提供报文认证的方式(续.) (d) A-B: Ek(M | EKRa( H(M) ) ) 提供认证和数字签名 提供保密(仅A和B共享K) (e)A-B: M | H(M | S) 提供认证(S是通信双方共享的一个秘密值, 仅A和B共享S) (f)A-B: Ek(M | H(M | S ) 提供认证和数字签名(仅A和B共享S) 提供保密(仅A和B共享K),11.4 Hash函数(Cont.),为什么要避免加密的方法
11、?(见方法(e) ) 加密软件慢; 加密硬件开销不可忽略; 加密硬件是针对大长度数据进行优化的(换而言之,对小数据分组加密开销大); 加密算法可能受专利保护; 加密算法易遭美国政府的出口限制;,11.4 Hash函数(Cont.),Hash函数的需求 H能用于任何大小的数据分组; H产生定长输出; 对任意给定的x, H(x)要相对易于计算,使得软硬件实现都实际可行; 对任意给定的码h, 寻求x使得H(x)=h在计算上是不可行的(单向性); 任意给定分组x, 寻求不等于x的y, 使得H(y)= H(x)在计算上不可行(弱抗攻击性); 寻求对任何的(x,y)对使得H(x)=H(y)在计算上不可行(
12、强抗攻击性);,11.4 Hash函数(Cont.),简单的Hash函数 每个分组按比特异或: Ci = bi1bi2 . bim 其中, Ci是第i个比特的Hash码,1in; m是输入的n比特分组数; bij是第j分组的第i比特; (简单的奇偶校验) 针对应用中的可预测数据格式,提出如下 改进方案:,11.4 Hash函数(Cont.),简单的Hash函数的改进方案 先将n比特的Hash值设置为0; 按如下方式依次处理数据分组: 将当前的Hash值循环左移一位. 将数据分组与Hash值异或形成新的Hash值. 这将起到输入数据完全随机化的效果,并且 将输入中的数据格式掩盖掉.,11.4 H
13、ash函数(Cont.),生日攻击(基于生日悖论) 在k个人中,找一个与某人生日相同的人的 概率超过0.5时,只需k183; 而在此人群中, 至少有两个人生日相同的概率超过0.5, 只需k23.,第12章 Hash算法,MD5和MD4 安全Hash算法SHA RIPEMD-160 HMAC,b,Y0,n,IV= CV0,f,b,Y1,n,f,b,YL-1,n,CVL-1,f,CV1,n,n,IV = 初始值 CV = 链接值 Yi = 第i 个输入数据块 f = 压缩算法 n = Hash码的长度 b = 输入块的长度,安全Hash算法的一般结构,CVL,CV0=IV= initial n-b
14、it value CVi=f(CVi-1, Yi-1) (1 i L) H(M) = CVL,MD5 算法,输入:任意长度的消息 输出:128位消息摘要 处理:以512位输入数据块为单位,MD5 (RFC 1321) was developed by Ron Rivest (“R” of the RSA )at MIT in 90s.,报文,K bits,L512 bits=N 32bits,1000,Y0,512 bits,Y1,512 bits,Yq,512 bits,YL-1,512 bits,HMD5,IV,128,HMD5,CV1,128,HMD5,CVq,128,HMD5,CVL-
15、1,128,512,512,512,512,128-bit 摘要,MD5产生报文摘要的过程,MD5算法描述,步骤1:添加填充位(一个1 和若干个0)。在消息的最后添加适当的填充位使得数据位的长度满足length 448 mod 512。 步骤2:添加长度。原始消息长度(二进制位的个数),用64位表示。如果长度超过264位,则仅取最低64位,即mod 264。 到此为止,我们已经得到一个512位的整倍数长度的新的消息。可以 表示为L个512位的数据块:Y0,Y1,YL-1。其长度为L512bits。令N=L16,则长度 为N个32位的字。令M0N-1表示以字为单位的消息表示。,MD5算法描述(Cont.),步骤3:初始化MD缓冲区。一个128位MD缓冲区用以保存中间和最终Hash函数的结果。它可以表示为4个32位的寄存器(A,B,C,D)。 寄存器初始化为以下的16进制值。 A = 67452301 B = EFCDAB89 C = 98BADCFE D = 10325476,MD5算法描述(Cont.),上述值的存储方式为:,Word A: 01 23 45 67 Word B: 89 AB CD EF Word C: FE DC BA 98 Word D: 76 54 32 10,MD5算法描述(Cont.),步骤4:处理消息块(512位