收藏 分享(赏)

网络安全原理与应用 第3章 身份验证技术及应用.ppt

上传人:gsy285395 文档编号:4666517 上传时间:2019-01-06 格式:PPT 页数:165 大小:405.50KB
下载 相关 举报
网络安全原理与应用 第3章 身份验证技术及应用.ppt_第1页
第1页 / 共165页
网络安全原理与应用 第3章 身份验证技术及应用.ppt_第2页
第2页 / 共165页
网络安全原理与应用 第3章 身份验证技术及应用.ppt_第3页
第3页 / 共165页
网络安全原理与应用 第3章 身份验证技术及应用.ppt_第4页
第4页 / 共165页
网络安全原理与应用 第3章 身份验证技术及应用.ppt_第5页
第5页 / 共165页
点击查看更多>>
资源描述

1、第3章 身份验证技术及应用 基本概念,沈苏彬 南京邮电大学 信息网络技术研究所,2,关键知识点,身份验证是安全控制技术的第一步,也是最为关键的一步!如果身份验证出现错误,则无法分清敌友,也就无安全可言。 报文身份验证不同于人类身份验证。 报文摘要技术和报文验证码技术是目前较为有效的报文身份验证技术。,3,主要内容,身份验证基本概念 报文身份验证 身份验证协议 Kerberos身份验证系统 公钥基础设施PKI,4,身份验证基本概念,身份验证的作用 身份验证技术分类 身份验证内容 身份验证方式,5,身份验证的作用,身份验证的作用是鉴别真伪,它是安全控制系统的第一步,身份验证包括:身份标识和身份验证

2、。 当前因特网缺乏安全性:主要问题是只有身份标识,没有身份验证的能力 链路层的标识:MAC地址缺乏身份验证 网络层实体,有标识(地址),无身份验证 传送层实体标识网络层标识端口号,6,身份验证发展历史*,通信安全技术中的身份验证技术:安全身份验证协议 其技术源于第二次世界大战期间防空系统识别友军和敌军飞机“质问应答”身份验证协议。 计算机安全技术中的身份验证技术主要体现在口令系统和数字签名系统。 Unix系统身份验证 NT系统身份验证,7,网络系统身份验证*,网络系统身份验证技术是通信系统身份验证技术与计算机系统身份验证技术的结合 网络安全中,通常也采用安全身份验证协议,验证接入网络的用户身份

3、。例如IETF标准化协议中的CHAP协议就是典型的“质问应答”身份验证协议。 口令系统依然是网络安全中采用的一种身份验证的方法,特别是对网络应用系统而言,口令系统是最基本的身份验证系统。,8,身份验证技术分类,网络安全中的身份验证技术可分成两大类:人机交互类和报文传递类 人机交互类身份验证主要是识别作为使用者, 人, 的身份,验证过程中可以由人直接参与。 计算机安全系统中的身份验证技术通常是人机交互类身份验证技术 网络安全系统中涉及人机交互的网络应用系统的身份验证也是属于人机交互类身份验证,9,身份验证技术分类(续),报文传递类身份验证主要识别接收对方报文的真实性,验证过程中人无法直接参与。

4、通信系统中的身份验证属于报文传递类身份验证 网络安全系统中报文传递系统的身份验证机制属于报文传递类身份验证. 报文传递类身份验证不涉及人机交互, 这是通过程序设置的身份验证过程. 网络环境下的身份验证既包括人机交互类身份验证, 也包括报文传递类身份验证.,10,身份验证内容,身份验证技术可以根据身份验证的内容不同分成: 基于知识的身份验证, 基于标志的身份验证, 以及基于特征的身份验证。 这样,身份验证的内容可以包括:被验证者掌握的“知识”,被验证者拥有的“标志”,以及被验证者唯一具有的“特征”。,11,身份验证内容(续1),对于身份验证技术, 主要利用以下三项内容验证身份 What do y

5、ou know? 例如口令系统 What do you have? 例如标识卡系统 What are you? 例如指纹识别系统,12,身份验证内容(续2),基于知识的身份验证,也就是根据被验证者“知道什么”确定其身份。例如计算机安全系统中的口令系统,就是一种基于知识的身份验证技术。这种身份验证最容易掌握,也最容易被假冒。 在人机交互类身份验证技术中,基于知识的身份验证机制主要是指用户登录口令系统; 在报文传递类身份验证技术中,基于知识的身份验证机制主要是指基于“保密字”的报文验证码技术。,13,身份验证内容(续3),基于标志的身份验证,也就是根据被验证者“拥有什么”确定其身份。只要被验证者拥

6、有具有“标志”意义的物品,例如银行发行的信用卡,或者登录计算机系统的智能卡等。 在人机交互类身份验证技术中,基于标志的身份验证机制主要指采用身份识别卡的计算机或者网络登录系统。 在报文传递类身份验证技术,基于标志的身份验证机制主要指采用密钥的报文验证码技术。,14,身份验证内容(续4),基于特征的身份验证,也就是根据被验证者“是什么”确定其身份。这种被验证者的“特征”通常是指不可假冒的、可以唯一标识被验证者的特征。 在人机交互类身份验证技术中,基于特征的身份验证机制主要是指人体眼虹验证系统,以及指纹验证系统。 在报文传递类身份验证技术中,基于特征的身份验证机制主要是指基于“接入设备特征(例如C

7、PU序列号)”的报文验证码技术。,15,身份验证内容(续5),以上介绍了3中身份验证的内容也可以简称为:“所知(对应英文What you know)”、“所有(What you have)”和“所是(What you are)”。 由于单项内容难以保证身份验证的安全性,通常采用多项内容组合的方法进行身份验证。 例如采用“所知”“所有”进行身份验证,持有身份标识卡的用户不仅需要插入标识卡,还需要输入口令。 例如采用“所知”“所是”进行身份验证,用户不仅需要识别指纹,还需要输入口令,,16,身份验证方式,在网络安全中,根据身份验证参与方的数目,身份验证可以分成双方身份验证方式和三方身份验证方式。

8、双方身份验证方式 双方身份验证方式是指在身份验证过程中,只涉及两个网络实体:身份验证方和被验证方,双方通过交互身份验证协议,单向或者双向验证身份。,17,身份验证方式(续1),单向身份验证指只有身份验证方验证对方的身份; 双向身份验证指身份验证方和被验证方相互进行身份验证。,18,身份验证方式(续2),三方身份验证方式 交互双方需要通过作为公证方的第三方, 才能相互验证身份 交互双方不处于相同的信任域, 需要通过第三方公证才能建立彼此信任.,19,身份验证方式(续3),电子商务应用中, 通常采用三方身份验证方式 数字签名技术,就是采用三方身份验证的方式。报文接收方采用第三方发布的公钥解密报文摘

9、要,验证数字签名的真实性。 一旦出现双方争执,接收方可以将接收的报文提交给第三方进行验证,确定是否是发送方发送的报文。,20,重点内容回顾,身份验证的作用:网络安全控制的第一步,验证用户的真实身份。 身份验证的分类:人机交互类身份验证、报文交互类身份验证。 身份验证的内容:所知、所有和所是。 身份验证的方式:双方身份验证和三方身份验证,21,思考题,(1) 身份验证技术可以分成哪几类?这几类身份验证技术之间有什么关联? (2) 通常可以通过验证哪几类内容进行身份验证?这些身份验证方式具有哪些优点和不足?这些身份验证方式分别适用于哪些应用环境? (3) 身份验证可以分成哪几种方式?为什么在电子商

10、务环境下一定要使用三方身份验证方式?,第3章 身份验证技术及应用 报文身份验证,沈苏彬 南京邮电大学 信息网络技术研究所,23,关键知识点,报文身份验证是为了验证报文发送方的真实性,和报文在传递过程中的完整性。 可以采用加密方法进行报文验证,也可以采用安全哈希函数验证报文。 目前因特网中常用的密码哈希函数是报文摘要算法MD5,而目前公认较为安全的密码哈希函数是安全哈希算法SHA-1。 哈希报文验证码算法HMAC是现在因特网中常用的一种无加密报文验证方法。,24,主要内容,报文身份验证基本概念 报文摘要算法MD5 安全哈希算法SHA-1 哈希函数的报文验证码算法HMAC 生日现象与生日攻击 数字

11、签名,25,报文身份验证基本概念,报文身份验证也称为“报文验证”,它的目标是验证报文发送方的真实性,以及报文在传递过程中的完整性。 报文的完整性是指报文在传递过程中,除了正常协议处理而在报文中产生的改动外,报文的任何部分都没有被随意修改。 报文验证并不能验证报文到达的及时性以及报文到达的有序性。这些特性需要利用身份验证协议加以验证。,26,采用加密的报文验证方法,报文验证方法可以采用两种:一种是加密报文验证方法,另一种是非加密报文验证方法。 采用加密的报文验证方法具体可以分成以下3种方法: 加密整个报文的报文验证方法 加密报文校验和的报文验证方法 附加密文块的报文验证方法,27,加密整个报文的

12、方法,报文验证的最简单方法就是采用加密方法:可以直接对整个报文进行加密后再发送,接收方接收到之后首先解密,然后再接收报文。 这种方法的处理效率较低,因为加密和解密过程都是消耗计算资源较多的操作。,28,加密报文校验和的方法,报文验证也可以仅仅加密报文的校验和,而不加密整个报文。一般报文都具有校验和,用于检测在报文传递过程中是否出现差错。如图3.6所示。,29,加密报文校验和的方法(续),一般报文中的校验和都是采用奇偶校验方法生成的,它只能检测出在校验和同一个二进制位置上出现的奇数次改动。 根据校验和的特征可知,校验和并不可靠。网络攻击者可以同时修改偶数个比特,使得修改后报文的校验和与修改前报文

13、的校验和相同,,30,附加密文块的方法,采用传统的加密方法,例如DES加密算法加密报文后,取密文的最后一个密文块,附加在报文后面传递给接收方。 接收方收到报文后,同样对接收到的报文进行加密,得到最后一个密文块。然后,比较接收到的密文块与计算得到的密文块是否相同,如果相同,则报文在传递过程中没有被修改。否则,报文在传递过程中被修改。,31,附加密文块的方法(续),这种报文验证方法在发送方和接收方都需要对整个报文执行加密算法,而加密算法是一种计算开销较大的操作, 故开销太大。,32,报文摘要与密码哈希函数,加密校验和的报文验证方法以及附加密文块的报文验证方法揭示了报文验证的一个关键问题: 如何能够

14、采用较为简便的算法,计算出一个固定长度的、能够反映报文特征的数据块? 这个固定长度的、能够反映报文特征的数据块就称为报文摘要。 目前通常采用密码哈希函数生成报文摘要 这种报文摘要算法不同于加密算法。,33,报文摘要与密码哈希函数(续1),假定这种哈希函数为H,报文为m,哈希值为h,即h = H(m)。这个哈希函数必须具备以下几个特征。 不可逆性:如果h = H(m),并且已知h,则在现有的计算条件下无法推导出m。 即无法从哈希值中推导出报文内容。 不可替代性:如果h = H(m),并且已知h,则在现有的计算条件下无法找到m,使得h = H(m)。 即无法找到另外一个不同的报文,使得该报文的哈希

15、值与已知报文的哈希值相同。,34,报文摘要与密码哈希函数(续2),无冲突性:如果m1 m2,则H(m1) H(m2)。 即不同的报文通过哈希运算,必须对应不同的哈希值。 满足以上3个特性的哈希函数就称为“密码哈希函数”。 目前因特网中常用的密码哈希函数是报文摘要算法MD5,而目前公认较为安全的密码哈希函数是安全哈希算法SHA-1。,35,报文验证码,如果对报文摘要算法产生的报文摘要进行加密,可以得到用于报文身份验证的代码,我们称为报文验证码(英文缩写为MAC)。 这种报文验证码可以验证该报文是真实的发送方发出的报文,因为真实的发送方才持有加密的密钥(发送方真实性验证); 这种报文验证码也可以验

16、证报文在传递过程中有没有被修改(报文传递的完整性验证)。,36,无加密报文验证方法,我们也可以不使用加密算法,利用报文摘要算法也可以生成报文验证码。即我们不使用解密算法,也可以进行报文验证。具体如下图所示。,37,无加密报文验证方法(续),这种无加密报文验证方法可以提高报文验证的效率,使得报文验证不会对网络性能造成较大的影响。另外,这种无加密的报文验证方法也可以不受加密算法专利保护的限制。 哈希报文验证码算法HMAC是现在因特网中常用的一种无加密报文验证方法。,38,报文摘要算法MD5,MD5是麻省理工学院(MIT)Ronald L. Rivest教授提出的一种报文摘要算法。该算法可以用于任何

17、长度的报文M,生成128比特长度的、可以唯一标识报文M的“指纹”,即报文摘要。 报文摘要算法可以应用于报文身份验证,也可以应用于报文的数字签名。 实际上数字签名也是一种报文身份验证,只是这种报文身份验证是可以提供给第三方进行验证的报文验证方式。,39,报文摘要算法MD5(续1),由于Rivest教授是RSA公钥加密算法的发明人之一,所以,他设计的MD5算法主要是用于生成报文摘要,然后,用RSA公钥加密算法中的私钥对报文摘要进行加密,达到高效数字签名的效果。 当然,也可以利用RSA算法的私钥对整个报文进行加密,实现数字签名。但是,我们知道,RSA加密算法是计算复杂度较高的一类算法。所以,现有的数

18、字签名都是采用公钥加密算法对报文摘要进行加密。,40,MD5算法的数据表示约定,MD5算法是以32个比特的字为单位进行数据处理的,这是传统的因特网协议中报文格式的处理模式。 MD5中的字由4个字节组成,每个字节长度是8个比特,可以表示小于256的正整数。每个字节采用最高位在最左边的格式。 例如135 = 128 + 4 + 2 + 1 = 27 + 22 + 21 + 20,这样,十进制数135可以表示成为MD5中的字节:1000 0111 (二进制) = 87 (十六进制).,41,MD5算法的数据表示约定(续1),在MD5中,对于4个字节构成的字而言,低位字节排列在前面(左边)。 例如29

19、1 = 256 + 32 + 2 + 1 = 28 + 25 + 21 + 20,故291可以表示成为二进制数和十六进制数如下:0001 0010 0011 (二进制) = 123 (十六进制) 按照MD5中采用的格式,291可以表示为4个字节的字:23010000 (十六进制)。,42,MD5算法基本处理步骤,假定输入的报文长度是l比特,MD5算法设置了4个字寄存器,最终存放在该4个字寄存器中的128比特的数就是报文摘要。 MD5算法需要经过以下处理步骤: 报文填充, 填写报文长度, 初始化寄存器, 每次对每个512比特的报文块循环执行MD5算法, 处理完全部报文后输出报文摘要。,43,MD

20、5算法的报文填充,MD5算法与块加密算法一样,每次只能处理一个长度为512比特(即16个字,或者64个字节)的数据块。所以,在运用MD5计算报文摘要之前,首先需要将报文的长度填充到512比特的倍数。 考虑到最后需要预留一个64比特的长度字段,用于存放实际报文长度值l,假定填充k个比特,则应该满足以下等式: l + k + 64 = 512 * n,44,MD5算法的报文填充(续),这里n表示一个正整数。以上等式可以表示为如下等式: l + k = 512 * (n 1) + 448 l + k (mod 512) = 448 即填充的比特长度与报文原来长度之和,在取512模之后,应该是448。

21、 MD5填充的格式是:第一个填充比特是“1”,随后都是比特“0”。,45,MD5算法填写报文长度,在报文填充比特之后,再附加64比特的长度字段,用于标记原来报文的长度l。 经过处理的报文长度就是512比特(即16个字)的倍数,假设此时报文的长度是512*n。这样,MD5算法依次分别对n个长度为512比特的数据块进行报文摘要运算。,46,MD5算法填写报文长度,MD5附加在报文最后的长度采用最小字排列在最左边的模式,按照前面介绍的MD5算法中4个字节组成字的规则,报文长度字段中最左边的字节是原来报文长度的最低位字节。 例如假定原来报文长度为291个比特,采用前面的表示实例,则附加的64比特长的报

22、文长度字段中数据表示为: 2301 0000 0000 0000 (十六进制),47,初始化MD5寄存器,MD5算法定义了4个32比特寄存器A,B,C和D,用于存放生成报文摘要的中间结果。 当MD5处理完最后一个512比特的报文块之后,寄存器A,B,C和D中存放的数据合并就是报文m的摘要。这4个寄存器的初始值如下: A: 01 23 45 67 B: 89 ab cd ef C: fe dc ba 98 D: 76 54 32 10,48,MD5算法循环处理报文块,以下按照32比特长度的字为单位处理数据,512比特的报文块也就是16个字。MD5首先定义了4个处理字的函数,在这些函数中X,Y和Z

23、分别表示1个字: F(X, Y, Z) = (XY) (X)Z) G(X, Y, Z) = (XZ) (Y(Z) H(X, Y, Z) = X Y Z I(X, Y, Z) = Y (X(Z) “”表示二进制的“与(AND)”操作,“”表示二进制的“或(OR)”操作,“”表示二进制的“异或(XOR)”操作,“”表示二进制的“补(NOT)”操作。,49,MD5算法循环处理报文块(续1),在计算报文摘要过程中,MD5还定义了64个常数表元素T1 64,每个表元素Tj是一个32比特的常数,该常数值是4294967296 * abs(sin(j)的整数部分,这里j表示弧度。 MD5在处理每个16字的报

24、文块时,首先将对前一个报文块处理的存放在寄存器A,B,C和D中结果,分别保存到变量AA,BB,CC和DD中。然后再分成4轮计算,每轮都在一个辅助函数的基础上,设计一种轮回函数,分别对16字的报文块(长度为32个比特)按照不同的顺序进行16次的轮回处理。,50,MD5算法循环处理报文块(续2),第1轮的轮回函数定义如下: R1(a, b, c, d, k, s, j): a = b + (a + F(b, c, d) + mk + Tj) s) 在以上函数中,a, b, c和d分别表示4个寄存器变量,mk表示被处理的16个字的报文块之一,0 k 16,Tj表示MD5定义了64个常数表元素之一,“

25、 s”表示左移s比特,“+”表示字的加法,即(mod 232)的加法。,51,MD5算法循环处理报文块(续3),第1轮函数共调用16次,具体调用的过程如下: R1(A, B, C, D, 0, 7, 1); R1(D, A, B, C, 1, 12, 2); R1(C, D, A, B, 2, 17, 3); R1(B, C, D, A, 3, 22, 4); R1(A, B, C, D, 4, 7, 5); R1(D, A, B, C, 5, 12, 6); R1(C, D, A, B, 6, 17, 7); R1(B, C, D, A, 7, 22, 8); R1(A, B, C, D,

26、8, 7, 9); R1(D, A, B, C, 9,12, 10); R1(C, D, A, B, 10, 17, 11); R1(B, C, D, A, 11, 22, 12); R1(A, B, C, D, 12, 7, 13); R1(D, A, B, C, 13, 12, 14); R1(C, D, A, B, 14, 17, 15); R1(B, C, D, A, 15, 22, 16);,52,MD5算法循环处理报文块(续4),其他3轮的轮回函数定义如下: R2(a, b, c, d, k, s, j): a = b + (a + G(b, c, d) + mk + Tj) s)

27、 R3(a, b, c, d, k, s, j): a = b + (a + H(b, c, d) + mk + Tj) s) R4(a, b, c, d, k, s, j): a = b + (a + I(b, c, d) + mk + Tj) s) 这3轮的轮回函数调用方式也各不相同。,53,MD5算法循环处理报文块(续5),当MD5完成了对512比特的报文块的报文摘要处理,将存放在寄存器A,B,C和D中的本次报文摘要结果与保存在AA,BB,CC和DD中的上次报文摘要结果相加,得到对以前所有512比特的报文块的报文摘要处理结果。即 A = A + AA; B = B + BB; C = C

28、 + CC; D = D +DD,54,MD5算法输出报文摘要,如果本次是报文m的最后一个512比特的报文块,则此时在寄存器A,B,C和D中的值就是报文m经过MD5算法处理的报文摘要,总共4个32比特,即128比特。,55,MD5算法分析,MD5报文摘要算法是在因特网上较为广泛使用的一种报文摘要算法,它的计算过程十分简洁明了。 从1992年R. L. Rivest教授公布MD5算法至今,有许多针对MD5的攻击试验。在绝大多数情况下已经验证MD5算法是安全。 只是由于MD5算法输出的报文摘要长度只有128比特,防范生日攻击的能力较弱,存在一定的安全隐患。 在安全级别要求较高的环境下,最好采用报文

29、摘要长度为160比特的安全哈希算法SHA-1。,56,安全哈希算法SHA-1,安全哈希算法(英文缩写为SHA-1)是一种类似于MD5的报文摘要算法。 SHA-1算法首先扩展了报文摘要的长度,输入任何一个长度小于264比特的报文,该算法可以输出长度为160比特的报文摘要。 SHA-1算法比MD5具有更长的报文摘要,使得该算法比MD5算法更加安全。,57,安全哈希算法SHA-1(续),SHA-1算法生成的报文摘要可以作为数字签名算法的输入,对报文进行数字签名。 之所以称为安全哈希算法,因为无法从该算法生成的报文摘要计算出输入的报文,也无法找到两个不同的可以生成相同报文摘要的报文。 另外,在报文传递

30、过程中,对报文的任何改变都会报文摘要与报文的不一致,使得报文在接收方无法通过“报文完整性”的检查。,58,SHA-1算法的约定,SHA-1算法与MD5算法一样,每次处理的报文块为512比特,分成16个32比特的“字”进行处理。 SHA-1算法中字的表示方法与MD5不同。 在SHA-1中,长度为32个比特的字的最低4个比特排列在字的最右边,例如291 = 256 + 32 + 2 + 1 = 28 + 25 + 21 + 20,故291可以表示成为二进制数和十六进制数如下:0001 0010 0011 (二进制) = 123 (十六进制) SHA-1规范通常用8个十六进制数表示一个字,这样,十进

31、制数“291”可以表示成32比特的字如下: 0000 0123 (十六进制),59,SHA-1的轮回函数和常数,SHA-1算法每次对16个字的输入报文块进行了5个轮回的计算,这样,SHA-1算法需要对每个字进行80次计算。SHA-1算法将这80次计算平均分成4个区间,定义了3个轮回函数和4个常数。 假定B,C和D都是长度为32比特的字寄存器,t是变量,满足:0 t 79,轮回函数F(t, B, C, D)定义如下: 如果0 t 19,则F(t, B, C, D) = (BC) (B)D) 如果20 t 39,则F(t, B, C, D) = B C D 如果40 t 59,则F(t, B, C

32、, D) = (BC) (BD) (CD) 如果60 t 79,则F(t, B, C, D) = B C D,60,SHA-1的轮回函数和常数(续1),在以上函数中“”表示二进制的“与(AND)”操作,“”表示二进制的“或(OR)”操作,“”表示二进制的“异或(XOR)”操作,“”表示二进制的“补(NOT)”操作。 在区间0 t 19的函数F中,这种“补”操作实际上是一种逻辑“非”的操作。 如果B中某个二进制位是“1”,则F函数取C中相应二进制位的值; 如果B中某个二进制位是“0”,则F函数取D中相应二进制位的值。,61,SHA-1的轮回函数和常数(续2),SHA-1还按照以上的四个区间,定义

33、4个常数,表示为K(t)。 如果0 t 19,则K(t) = 5A827999 如果20 t 39,则K(t) = 6ED9EBA1 如果40 t 59,则K(t) = 8F1BBCDC 如果60 t 79,则K(t) = CA62C1D6 从以上SHA-1的轮回函数和常数的定义可以看出,SHA-1的算法比MD5更加简洁。,62,SHA-1算法的执行过程,SHA-1算法执行的主要步骤与MD5算法的执行步骤基本相同,也包括以下步骤: 填充报文, 填写报文长度, 初始化寄存器, 循环计算报文块,以及 输出报文摘要。,63,填充报文,SHA-1算法填充报文的处理与MD5完全一致,在原始报文末尾填充一

34、个“1”比特和多个“0”比特,使得原始报文的长度l,加上填充比特的长度k,加上64比特的长度字段,最后报文长度为512比特的倍数,即 l + k + 64 = 512 * n 这里n表示正整数。经过填充后的报文,就可以按照n个512比特的报文块输入到SHA-1算法中,经过n次调用SHA-1算法,可以得到该报文的摘要。,64,填写报文长度,SHA-1算法填写原始报文长度的处理与MD5基本一致,只是因为SHA-1算法的数据表示与MD5不同,所以,填写原始报文长度的格式也不同。 SHA-1算法采用高位字在前的表示方法,这样,对于长度为40(十进制数)个比特的原始报文长度,其64比特的报文长度字段中存

35、放的数据为: 00000000 00000028 (十六进制数),65,初始化寄存器,在SHA-1算法中定义了两组寄存器,每组包括5个32比特长度的字寄存器。 第一组称为结果寄存器,用于存放每个报文块的报文摘要,表示为H0,H1,H2,H3和H4; 第二组称为中间寄存器,用于存放每个报文块的中间计算数据,表示为A,B,C,D和E。,66,初始化寄存器(续),在执行SHA-1算法之前,首先需要初始化5个结果寄存器。 H0 = 67452301 H1 = EFCDAB89 H2 = 98BADCFE H3 = 10325476 H4 = C3D2E1F0 这里H0到H3的寄存器初始值与MD5算法中

36、的A到D的寄存器初始值完全相同。,67,循环计算报文块,假定报文M分解成为n个512比特的报文块,每个报文块表示为m(j),1 j n。SHA-1算法在对每个512比特的报文块处理过程中,定义了80个32比特的字缓存变量,记为w(t),0 t 79。SHA-1算法将依次处理m(1), m(2), , m(n),其中对m(j)处理过程如下: (a) 将m(j)分解成16个32比特的字,分别存放到w(0), w(1), , w(15)中,其中w(0)中存放m(j)中的最左侧字,也就是最高位字。,68,循环计算报文块(续1),(b) 对于t = 16到79,执行以下算式: w(t) = S(1, w

37、(t-3) w(t-8) w(t-14) w(t-16) 在以上算式中,“”表示比特的“异或”操作,“S(1, X)”表示对“X”中值进行1比特的左循环移位操作。 (c) 设置A = H0, B = H1, C = H2, D = H3, E = H4 即将上次报文块的计算结果初始化中间寄存器A,B,C,D和E。,69,循环计算报文块(续2),(d) 对于t = 0到79,执行以下一组算式: TEMP = S(5, A) + F(t, B, C, D) + E + w(t) + K(t); E = D; D = C; C = S(30, B); B = A; A = TEMP 在以上算式中,T

38、EMP是32比特的临时变量,“+”表示长度为32比特的字加法,“S(5, A)”表示对寄存器A进行5比特的左循环移位操作。 (e) 执行以下算式,生成第j次报文块的结果。 H0 = H0 + A; H1 = H1 + B; H2 = H2 + C; H3 = H3 + D; H4 = H4 + E,70,输出报文摘要,计算完n个报文块之后,最后保留在结果寄存器组H0,H1,H2,H3和H4中的数值就是SHA-1生成的报文M的摘要,其中H0表示报文摘要的高位字。,71,哈希报文验证码算法HMAC,哈希报文验证码(HMAC)提供了一种利用密钥构造报文验证码的标准方法: HMAC利用已有的密码学哈希

39、函数,例如MD5和SHA-1,在原来报文之前附加密钥构成“扩展报文”,再通过密码学哈希函数生成这种“扩展报文”的摘要,构造一种可以用于报文身份验证的MAC。 HMAC中使用的密钥不是密码学中通常意义的密钥,这种密钥并不用于加密和解密。,72,HMAC算法,假设待生成HMAC报文验证码的报文为M,使用的密码学意义上的哈希函数为H,并且假定H是每次处理的数据块长度为B个字节(对于MD5和SHA-1,B = 64),生成的哈希值为L个字节(对于MD5,L = 16,对于SHA-1,L = 20)。 假定身份验证密钥K的长度不大于B个字节,也不小于L个字节。,73,HMAC算法(续),HMAC定义2个

40、固定的比特串:内填充值IPAD和外填充值OPAD如下: IPAD: 0011 0110 (十六进制: 0x36)重复B次。 OPAD: 0101 1100 (十六进制: 0x5C)重复B次。 HMAC算法公式表示如下: HMAC = H(K OPAD) | H(K IPAD) | M) 这里“”表示“异或”操作,“|”表示比特串合并操作,例如“0011 | 0110”等于“00110110”,“0011 0110”等于“0101”。,74,HMAC的报文验证过程,报文接收方B采用HMAC验证从发送方A发送来的报文身份的过程如下: (1)接收方收到报文后,按照报文传递协议的约定分离出报文部分M和

41、报文验证码MACS部分。 (2)利用B方与A方约定的密钥K和报文摘要算法,例如MD5或者SHA-1,采用HMAC重新计算接收报文的报文验证码MACR。 (3)如果MACS = MACR,则B方可以确信接收的报文确实是从A方发送来的,而且报文内容中途没有被篡改。,75,生日现象与生日攻击,生日现象就是指在同一个房间内,存在2个人具有同一天生日的现象。 生日现象可以具体表示为如下生日问题:在一个房间内,至少需要有多少人,才能保证有2个人具有同一天生日的概率大于或者等于50。 假定有n种不同生日,并且假定一个房间内至少有k个人,则存在2个人有相同生日的概率大于50。通过计算可知 k 1.18 * n

42、1/2,76,生日现象与生日攻击(续),我们知道对于正常年份,一年为365天,故n = 365,可以得出k 22.5。 生日现象等价于密码学哈希函数的冲突现象。 如果某个密码学哈希函数值的长度为n个二进制比特位,则该密码学哈希函数共有2n个可能值。 按照生日现象,攻击者只需要尝试2n/2个不同的报文,就可以有50以上的可能性找到两个不同的报文m1和m2,使得这两个报文具有相同的哈希值。 这种利用生日现象,攻击报文身份验证算法的方式,通常称为“生日攻击”。,77,生日攻击与安全哈希函数,为了防范“生日攻击”,目前对于密码学哈希函数值长度通常选择为160个二进制位。这样,攻击者需要花费280次的计

43、算才能进行“生日攻击”,而280次计算在目前的计算条件下认为是不可能的。 SHA-1算法输出的哈希值长度为160位,所以,SHA-1报文摘要可以防范“生日攻击”,而MD5算法输出的哈希值长度为128位,所以,MD5报文摘要算法不能防范“生日攻击”。,78,数字签名,数字签名是公钥加密算法在报文验证技术中的具体应用。公钥加密算法最为成功的应用就是数字签名。 采用传统加密算法的报文验证技术不能进行数字签名,这是因为传统加密算法的密钥是报文发送方A和接收方B共有的。 公钥密码体系有2种特性,使得它可以应用于这类彼此不信任的报文验证环境:,79,数字签名(续),其一:公钥密码体系将密钥分解成公钥和私钥

44、两个部分,只有密钥所有者才持有私钥,其他人都可以获得公钥。 其二:只有用公钥和私钥中任意一种密钥加密,就可以用另外一种密钥解密。 与手工签名相比,数字签名的优点在于签名与文件的内容相关。 数字签名的缺点在于:一旦私钥丢失或者泄漏,可能会被他人冒用而造成很大的损失。 问题:如何进行数字签名?,80,本讲重点回顾,报文身份验证基本概念: 采用加密方法的报文验证, 基于安全哈希函数的报文验证, 报文验证码。 报文摘要算法MD5 MD5的报文摘要长度128比特, MD5的算法过程 安全哈希算法SHA-1 SHA-1的报文摘要长度160比特 SHA-1轮回函数和处理过程,81,本讲重点回顾(续),哈希报

45、文验证码算法HMAC HMAC可以利用已经的报文摘要算法 HMAC引入了密钥。 生日现象与生日攻击 生日现象揭示了寻找相同哈希值的概率 160比特长度的报文摘要才能防范生日攻击 数字签名 公钥加密算法加密报文摘要的技术,82,思考题,(1) 报文身份验证的目的是什么?目前有哪几种报文身份验证的方法?这些报文身份验证方法具有什么优点和不足? (2) 报文摘要是否等价于报文验证码?如果不等价,如何将报文摘要转换成为报文验证码? (3) 是否可以不使用加密算法生成报文验证码?如果可以,如何生成?,83,思考题(续1),(4) 什么是MD5算法?为什么说MD5算法仍然会遭受“生日现象”攻击? (5)

46、SHA-1报文摘要算法与MD5算法相比有哪些相同之处,有哪些不同之处?为什么说SHA-1算法比MD5算法安全? (6) HMAC算法有何用途?它与MD5和SHA-1算法有什么关联?为什么说HMAC算法中使用的密钥不是通常意义上的密钥?这种密钥有什么作用?,84,思考题(续2),(1) 什么是“生日现象”?什么是“生日攻击”?为什么说MD5算法不能防范“生日攻击”? (2) 什么是数字签名?为什么需要数字签名?通常所说的报文身份验证技术是否就是数字签名技术?,第3章 身份验证技术及应用 身份验证协议,沈苏彬 南京邮电大学 信息网络技术研究所,86,主要解决的问题,验证报文是即时发送的报文?还是重

47、播报文? 用于防范重播报文攻击! 如何采用第三方公证的方式,可靠地验证数据发送方身份的真伪? 信息安全中的安全可以细化为保密性、完整性和可用性,另外还可以增加可鉴别性、不可抵赖性。 如何协商传统加密算法的密钥?,87,关键知识点,身份验证协议是一种通过报文交互验证交互的某一方或者交互双方身份的协议。 身份验证协议通过交互被加密的报文,实现网络环境下的身份验证。 典型的身份验证协议是Needham-Schroeder身份验证协议。,88,主要内容,身份验证协议基本概念 Needham-Schroeder身份验证协议 Needham-Schroeder协议的改进,89,身份验证协议基本概念,身份验

48、证协议是一种通过报文交互验证交互的某一方或者交互双方身份的协议。 只能验证报文交互某一方身份的协议称为单向身份验证协议,能够验证报文交互双方身份的协议称为双向身份验证协议。 作用:身份验证协议不仅可以分发通过身份验证的交互一方或者双方使用的密钥,还可以验证接收方收到的报文是否是正常传递的、而不是被截获后重发的报文,防范网络攻击者对身份验证协议本身的攻击。,90,身份验证协议基本概念(续),身份验证协议最早是由Roger M. Needham和Michael D. Schroeder提出的,其基本思想是利用加密方法在大型网络环境中进行身份验证。 身份验证协议基本上沿用了这种交互被加密报文的思路,

49、实现网络环境下的身份验证。 身份验证协议可以按照采用的密码体系不同,分成基于传统密码体系的身份验证协议和基于公钥密码体系的身份验证协议。,91,身份验证协议的表示方式,网络安全中通常设置两个交互方为Alice(爱丽丝,简称为A)和Bob(鲍伯,简称为B),我们称为A方和B方。 A方向B方发送第一个报文,其中包括A的标识,以及采用密钥K加密的A的标识和一次性数N,具体表示如下: M1: A B: A, KA, N 这里“KA, N”表示采用密钥K对A和N加密后的密文。,92,当事方与验证方,身份验证协议至少有两个参与方,根据在身份验证协议中的扮演的角色,可以分成当事方与验证方。 被身份验证的一方首先需要有身份标识,在网络安全中,这种具有身份标识的、可以具有独立行为的实体通常被称为“当事方”; 验证当事方身份的实体通常被称为“验证方”。,93,传统密码体系身份验证协议,基于传统密码体系的身份验证协议的原理是:如果一个当事方能够正确地利用某个密钥加密数据,并且验证方相信只有身份标识对应的当事方才知道这个密钥时,则验证方就可以确信身份验证协议的交互方是具有该身份标识的当事方。 例如假定A试图向B验证身份,A的标识就表示为“A”,而且KA,B 是B和A公共拥有的密钥,一个简单的身份验证协议如下: M1: A B: A, KA,BA,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 网络信息安全

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报