您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 第3章-第2讲认证与认证协议
第三章安全业务及其实现方法第二讲认证与认证的密钥交换协议一、基本概念(一)认证认证活动又称为鉴别,是证明某人或对象身份的过程,是认证者对被认证者的确定的过程。认证包括数据源认证(data-originauthentication)、实体认证(entityauthentication)和认证的密钥的建立(authenticatedkeyestablishment)。(1)数据源认证数据源认证也称消息认证(messageauthentication),主要涉及验证消息的某个声称属性,其目的是为了能够验证消息来自特定的实体,并且事后不能改变。这一服务由接受方在接收时进行验证的,其目的是确认消息发送者的身份及其数据的完整性。(2)实体认证实体认证则更多地涉及验证消息发送者所声称的身份,是一种安全服务,使通信双方能够验证对方的身份。目前常用的认证技术主要有两大类:一类是基于密钥技术的认证技术;另一类是基于生物特征识别的认证技术。(3)认证的密钥建立通信双方运行实体认证协议的目的在于能够在高层或者应用层上进行安全通信,密钥是建立安全通信信道的基础。因此,为了进行安全通信而运行的实体认证协议通常都有一个子任务,就密钥建立、或者密钥交换和密钥协商。(二)协议协议是一系列步骤,它包括两方或多方,设计它的目的是要完成一项任务。理解:“一系列步骤”:意味着协议是从开始到结束的一个序列,每一步必须依次执行,在前一步完成前,后面的步骤都不能执行“包括两方或多方”:意味着完成这个协议至少需要两个人,单独的一个人不能构成协议“设计它的目的是要完成一项任务”:意味着协议必须做一些事协议还有其他特点:(1)协议中的每人都必须了解协议,并且预先知道所要完成的所有步骤。(2)协议中的每人都必须同意遵循它。(3)协议必须是不模糊的,每一步必须明确定义,并且不会引起误解。(4)协议必须是完整的,对每种可能的情况必须规定具体的动作。密码协议是使用密码学的协议参与该协议的伙伴可能是朋友和完全信任的人,或者也可能是敌人和互相完全不信任的人参与协议的各方可能为了计算一个数值想共享它们的秘密部分、共同产生随机系列、确定互相的身份、或者同时签署合同。密码协议包含某种密码算法,但通常,协议的目的不仅仅是为了简单的秘密性,在协议中使用密码的目的是防止或发现偷听者和欺骗。(一)消息认证二、基本认证技术当Bob从Alice那里接收信息,他怎么知道信息是可信的呢?实现技术:(1)基于公钥体制:数字签名(2)对称密钥加密(3)消息认证码:基于对称算法(RIPE-MAC),基于单向函数(RFC,HMAC)(1)认证码认证码(MAC,MessagesAuthenticationCodes),是与密钥相关的的单向散列函数,也称为消息鉴别码或是消息校验和。MAC与单向散列函数一样,但是还包括一个密钥。不同的密钥会产生不同的散列函数,这样就能在验证发送者的消息没有经过篡改的同时,验证是由哪一个发送者发送的。MAC=CK(M)其中:M为可变长的消息;K为通信双方共享的密钥;C为单向函数。用途:为拥有共享密钥的双方在通信中验证消息的完整性;被单个用户用来验证他的文件是否被改动。认证码的三种使用模式IP安全协议强制实现的MAC,由RFC2104定义的HMAC,全称为Keyed-HashMessageAuthenticationCode,用一个秘密密钥来产生和验证MAC。(2)HMAC1、HMAC要求可不经修改使用现有hash函数其中镶嵌的hash函数可易于替换为更快和更安全的hash函数保持镶嵌的hash函数的最初性能,不因适用于HAMC而使其性能降低以简单方式使用和处理密钥在对镶嵌的hash函数合理假设的基础上,易于分析HMAC用于认证时的密码强度B:计算消息摘要时输入块的字节长度(如对于SHA-1,B=64)。H:散列函数,如SHA-1,MD5等。ipad:将数值0x36重复B次。opad:将数值0x5c重复B次。K:共享密钥。K+:在密钥K的左边附加0使其长为B字节的密钥。L:消息的分组数n:消息摘要的字节数。M:要计算HMAC的数据。X|| Y:将字串连接起来,即把字串Y附加在字串X后面。+:异或。2、算法描述MAC(M)=HMAC(K,M)=H(H((K++ipad)||M)||(K++opad))(1)如果K的长度等于B,设置K+=K并跳转到第(4)步。(2)如果K的长度大于B,对K求散列值:K=H(K)。(3)如果K的长度小于B,在K的左边附加0得到B字节的K+。(4)执行K++ipad。(5)将数据M附加在第(4)步结果的后面:(K++ipad)||M(6)将H应用于第(5)步的结果:H((K++ipad)||M)(7)执行K++opad。(8)把第(6)步的结果附加在第(7)步的结果后面:(K++opad)||H((K++ipad)||M)(9)将H应用于第(8)步的结果:H((K+ +opad)||H((K++ipad)||M))(10)选择第(9)步结果的最左边t字节作为MAC。(二)实体认证1、基于单向函数的认证协议(1)Alice将她的通行字传送给计算机。(2)计算机完成通行字的单向函数计算。(3)计算机把单向函数的运算结果和它以前存储的值进行比较。计算机存储通行字的单向函数及其对应的用户名字典攻击Mallory在他的业余时间编制1,000,000个最常用的通行字表,他用单向函数对所有1,000,000个通行字进行运算,并将结果存储起来。如果每个通行字大约是8个字节,运算结果的文件不会超过8M字节,几张软盘就能存下。现在Mallory偷出加密的通行字文件。把加密的通行字和已加密的可能通行字文件进行比较,再观察哪个能匹配。Salt是一随机字符串,它与通行字连接在一起,再用单向函数对其运算。然后将Salt值和单向函数运算的结果存入主机数据库中。如果可能的Salt值的数目足够大的话,它实际上就消除了对常用通行字采用的字典式攻击,因为Mallory不得不产生每个可能的Salt值的单向hash值。这是初始化矢量的简单尝试。2、SKEY程序为了设置系统,Alice输入随机数R,计算机计算f(R)、f(f(R))、f(f(f(R)))等等大约100次。调用x1,x2,x3,。。。,x100这些数。计算机打印出这些数的列表,Alice把这些数放入口袋妥善保管,计算机也顺利地在登录数据库中Alice的名字后面存储x101的值。当Alice第一次登录时,她输入她的名字和x100,计算机计算f(x100),并把它和x101比较,如果它们匹配,那么证明Alice身份是真的。然后,计算机用x101代替数据库中的x100。Alice将从她的列表中取消x100。3、基于公钥体制的认证(1)主机发送一个随机字符串给Alice。(2)Alice用她的私钥对此随机字符串加密,并将此字符串他和她的名字一起传送回主机。(3)主机在它的数据库中查找Alice的公开密钥,并用公开密钥解密。(4)如果解密后的字符串与主机在第一步中发送给Alice的字符串匹配,则允许Alice访问系统。4、用联锁协议互相鉴别Alice和Bob是想要互相鉴别的两个用户。他们每人都有一个另一人知道的通行字:Alice通行字是PA,Bob的是PB。下面的协议是行不通的:(1)Alice和Bob的交换公开密钥。(2)Alice用Bob的公开密钥加密PA,并将它传送给Bob。(3)Bob用Alice的公开密钥加密PB,并发送给Alice。(4)Alice解密她在第(2)步中接受到的信息并验证它是正确的。(5)Bob解密他在第(3)步中接受到的信息并验证它是正确的。5、SKID31、Alice选用随机数RA(RIPE文件规定64比特的数),并将它发送给Bob。2、Bob选用随机数RB(RIPE文件规定64比特的数),将下面的数发送给Alice:RB,HK(RA,RB,B)HK是MAC(RIPE建议的RIPE-MAC函数)。B是Bob的名字。3、Alice计算HK(RA,RB,B),并和她从Bob那里接收到的信息比较,如果结果一致,那么Alice知道她正与Bob通信。4、Alice向Bob发送:HK(RB,A),A是Alice的名字。5、Bob计算HK(RB,A),并将它与从Alice那里收到的比较,如果相同,那么Bob知道他正与Alice通信。三、认证的密钥交换协议很多情况下通信双方运行实体认证协议的目的在于能够在高层或者应用层上进行安全通信,密钥是建立安全通信信道的基础。因此,为了进行安全通信而运行的实体认证协议通常都有一个子任务,就密钥建立、或者密钥交换和密钥协商。我们称二者结合的协议为认证的密钥交换协议。Alice和Bob是网络的两个用户,他们将通过网络进行安全通信。那么Alice和Bob如何才能做到在进行密钥交换的同时,确认在和自己通信的另一个方不是Mallory,而且最后能确认双方确实拥有了某个特定的共同密钥。(一)基于单密钥体制的密钥交换Kerberos是为TCP、IP网络设计的可信第三方鉴别协议,kerberos起着可信第三方的作用。Kerberos基于对称密码学(采用的是DES),它与网络上的每个实体分别共享着一个不同秘密密钥,是否知道该秘密密钥便是身份的证明。Kerberos协议是Needham-Schroeder协议的变型,目前通用版本为k5,是1994年公布的;Kerberos采用的是客户机/服务器模型(以下简称C/S)。(1)基本协议假设,Trent和Alice、Bob中的每人各共享一密钥。Alice想向Bob证明自己的身份。1、Alice将她的身份A和Bob的身份B发送给Trent:A,B2、Trent产生一报文,该报文由时间标记T、使用寿命L、随机临时会话密钥K和Alice的身份构成。他用与Bob共享的密钥加密报文。然后,他取时间标记、使用寿命、会话密钥和Bob的身份,并且用他与Alice共享的密钥加密,并把这两个加密报文发给Alice:EA(T,L,K,B),EB(T,L,K,A)3、Alice用她的身分和时间标记产生报文,并用K对它进行加密,将它发送给Bob。Alice也将从Trent那里来的用Bob的密钥加密的报文发送给Bob:EK(A,T),EB(T,L,K,A)4、Bob用K对时间标记加1的报文进行加密,并将它发送给Alice:EK(T+1).这个协议是可行的,但它假设每个人的时钟都与Trent的时钟同步。实际上,这个结果是通过把时钟同步到一个安全的定时服务器的几分钟之内,并在这个时间间隔内检测重放而获得的。(2)通用的第五版协议1er:,cKberosctgs、,,2er:(),()ctgsKctgskctgsKberoscEKET、,,,3:(),()ctgstgsKcskctgscTGSEAET、,,,4:(),()ctgssKcskcsTGScEKET、,,,5:(),()cssKcskcscsEAET、协议5个步骤具体发送的消息:(二)基于双钥体制的密钥交换协议(3)基于混合密钥体制的密钥交换协议协议假设A和B共享一个口令P,则基本协议描述如下1、A产生一随机公/私钥对,并用对称算法和P作为密钥,对公钥K’加密,并向B发送如下消息:A,Ep(K’)。2、B知道P,解密消息得到K’,然后产生一个随机的会话密钥K,用A的公钥K’和P加密K,向A发送消息:Ep(EK’(K))3、A解密消息得到K,并产生一随机串RA,用K加密:EK(RA)。4、B解密消息得到RA,并产生一随机串RB,用K加密:EK(RA,RB)。5、A解密消息得到RA,RB,若得到的RA与发送给B的一样,就加密RB:EK(RB)6、B解密得到RB,看与发送给A的是否一致,相同即可用K作为会话密钥进行通信。用Diffie-Hellman算法实现EKE1:,modArABAgn、2:(mod),()BrPKBBAEgnER、3:(,)KABABERR、4:()KABAER、modABrrKgn5、双方建立
本文标题:第3章-第2讲认证与认证协议
链接地址:https://www.777doc.com/doc-2192934 .html