第5章协议安全技术课件.ppt

上传人:小飞机 文档编号:1614313 上传时间:2022-12-11 格式:PPT 页数:151 大小:12.39MB
返回 下载 相关 举报
第5章协议安全技术课件.ppt_第1页
第1页 / 共151页
第5章协议安全技术课件.ppt_第2页
第2页 / 共151页
第5章协议安全技术课件.ppt_第3页
第3页 / 共151页
第5章协议安全技术课件.ppt_第4页
第4页 / 共151页
第5章协议安全技术课件.ppt_第5页
第5页 / 共151页
点击查看更多>>
资源描述

《第5章协议安全技术课件.ppt》由会员分享,可在线阅读,更多相关《第5章协议安全技术课件.ppt(151页珍藏版)》请在三一办公上搜索。

1、第 5 章协 议 安 全 技 术,一.协议安全基础,1 .安全协议的概念,安全协议与信息安全,何谓安全协议 ?,我们从一个有关安全协议的经典例子入手来介绍安全协议的基本念。在这个例子中,有两个用户Alice(简称A)和Bob,他们通过某种方式获得了对方可行的公钥。Alice希望和Bob实现在不安全网络环境中的安全通信。,所谓安全通信,首先Alice要知道她所通信的对象一定是Bob。同样,Bob也要确信他所通信的对象是Alice。这种对通信实体身份的确认就是所谓的身份认证(Identification Authentication),因此Alice和Bob之间安全通信的第一个目标就是实现双向认证

2、。其次,还需确保通信过程中消息的机密性,即除了Alice和Bob之外,不应该有第三方知道他们正在交换的消息的内容。解决消息机密性最有效的方法就是加密。但是,由于Alice和Bob除了知道对方的公钥(即和)之外,并无其它有关机密的任何信息。当然,他们可以通过用对方的公钥来加密消息的方式来提供消息的机密性。但是,一来公钥加密算法加密速度慢,有可能影响通信性能,二来包含公钥的密文积累过多,可能造成密钥失窃的情况。为此,他们约定采用对称加密算法(如DES)来实现消息的机密性。,但是,如何获得称加密算法所需要的加密和解密密钥又成为了一个问题。简单的方法是,该密钥可以由Alice在本地生成后传给Bob,但

3、是由于二人相隔千里,无法面对面交换,而其它方式(如电子邮件、电话等)均不是理想和安全的交换方式。为此,他们希望通过某种方式,能够在已知对方公钥的基础之上,提供加密密钥交换的功能。此即为安全通信的第二个目标:在Alice和Bob之间实现共享秘密(分别记为和)的安全交换。获得共享秘密和后,对称加密算法所需要的密钥可以通过某种约定的方式由和来生成。 当然,Alice和Bob希望在网络上通过交换消息来实现。一个称之为Needham-Schroeder公钥认证协议(简称NSPK协议)的安全协议可以用来实现Alice和Bob的目标。其描述如协议4-1-1所示。,NSPK协议,协议主体就是协议的参与者(或用

4、户)。其中圆括号中的数字表示消息的顺序;符号“”表示消息的流向:M”表示Alice向Bob发送消息M;MK表示用密钥k对消息M进行加密;A是Alice的身份,Na和Nb是新鲜的一次性随机数。所谓新鲜的一次性随机数(Nonce)或一次性随机数是指该随机数在产生时间上很新,且用完后即被丢弃,不会重用。,上述NSPK就是一个典型的安全协议(Security Protocol)。通过对NSPK协议的分析,可得到如下结论:,综合上述两个特点,可以得到安全协议的定义:定义5-1-2 安全协议(Security Protocol):是在消息交换和处理过程中使用了若干密码算法的协议。安全协议的内涵是,安全协议

5、是一个协议;安全协议必定涉及密码算法;安全协议目标是在密码算法的基础之上为网络安全提供一个解决方案。,2 .安全协议的分类,(1)密钥交换协议,密钥交换协议可分为两种情况:密钥传输和密钥协商。在密钥传输中,需交换的共享密钥其中的一个协议主体生成,通过密钥交换协议传递给其它协议主体。而在密钥协商协议中,需交换的共享密钥不是有协议主体单方面生成,而是协议主体在交换一个或多个共享秘密信息之后,将这些秘密信息输入一个预定函数而得到。协议5-1-2是一个典型的密钥传输协议的例子,而协议5-1-3则是一个密钥协商协议。,协议5-1-2由4条消息组成,需要交换的共享密钥由Bob生成,通过协议传递给Alice

6、。协议过程中用到了对称密码算法和认证,使用一次性随机数的目的是为了防范重放攻击。,Diffie-Hellman密钥交换协议是基于有限域中计算离散对数的困难性问题之上的。离散对数问题是指对任意正整数x,计算gx (mod p)是容易的;但是已知g、Y、p和求x,使Y=gx (mod p)是计算上几乎不可能的 。协议5-1-3由3条消息组成,其中xa和xb分别为 Alice和Bob选择的随机数。在消息交换之后,Alice计算 。同理,Bob计算 ,因此实现了共享密钥(或秘密)的交换。,协议5-1-4和协议5-1-5分别为基于公钥体制的单向和双向认证协议。需要注意的是,双向认证协议一般不能等同于两个

7、单向认证协议的简单叠加。,认证协议按照哪些实体的身份需要进行认证可分为单向认证协议和双向认证协议。在前者中,仅有一个实体的身份得以认证,而在后者中,两个实体的身份均得到认证。认证协议一般需要使用密码算法。,协议5-1-5由3条消息组成,其中、和是可选内容。协议的认证过程读者可结合有关知识自行分析。,协议5-1-6是DH协议的一个改进版本,不仅实现了双向认证,而且实现了双向密钥确认,因而属于认证与密钥交换协议。协议5-1-6由3条消息组成,其中 。 由于采用了签名机制来保证消息的真实性,因此可以抵御许多针对DH协议的攻击。,(3) 认证与密钥交换协议,与其它类型的安全协议相比,电子商务协议具有显

8、著的特殊性。在电子商务安全协议中,协议主体往往是交易的双方和金融机构,因此远比一般安全协议复杂。此外,除了一般协议中要求的机密性、完整性和不可抵赖性之外,电子商务安全协议还特别强调公平性(Fairness)和匿名性(Anonymity)。前者指协议应该保证交易双方都不能通过损害对方的利益而得到不应该得到的利益,后者指交易双方的身份应该尽量不为他人所知(有时甚至要求交易双方和金融机构也不能知道交易方的信息)。安全电子交易(SET协议)是一个典型的电子商务安全协议,有关电子商务安全协议及SET协议的有关内容可参照本书的其它章节。,(4)电子商务安全协议,(1)仲裁协议 仲裁协议需要借助于一个称之为

9、仲裁者的可信第三方(Trusted Third Party)来完成消息交换。可信意味着仲裁者在协议过程中并无既得利益,且于协 议中的其它任何主体之间无厉害关系,因此协议主体也乐于信赖该仲裁者 。在仲裁者的帮助下,协议主体之间完成协议过程。,2 .按照是否需要可信第三方分类,仲裁协议原理示意图,裁决协议原理示意图如图5-1-3所示。,由图5-1-3可知,裁决者Trent并不参与Alice和Bob之间的交易,仅当Bob没有收到书款提交裁决请求时,Trent才参与协议。如果交易顺利完成,Trent在协议中无需承担任何工作,其负担大为减轻。,(3)自动执行协议,自动执行协议不需要任何第三方(如仲裁者和

10、裁决者)的参与,在协议主体之间完成协议过程。由于自动执行协议本身就保证了协议的安全性(如机密性、公平性等),因此不需要仲裁者来协助完成协议,也不需要裁决者来解决争端,因此是比较好的一种安全协议。但是,设计一个安全的自动执行协议具有很高的难度,目前属于安全协议研究的热点问题。以上述Alice向Bob购书为例,要设计一个无仲裁者和裁决者的自动执行协议无疑是极为困难的事情。,1 .安全协议缺陷与安全协议模型,二.协议安全的缺陷,在实际应用中,要设计一个安全的协议是极为困难的。以著名的DH协议(协议5-1-3)为例,由于存在针对该协议的“中间人攻击”,因此DH协议就不是一个绝对安全的协议。所谓中间人攻

11、击,就是攻击者作为第三者,插入到协议主体Alice和Bob的通信过程的中间,对对消息进行处理,从而破坏协议的正常执行。DH协议的中间人攻击如攻击5-2-1所示。,在攻击5-2-1中,Malice作为中间人,截获Alice发送给Bob的gx,并用自己计算的 替代 后以Alice的名义转发给Bob。而Bob并不知晓中间人Malice的存在,因此以为是Alice向自己发起密钥交换请求,因此发送自己的 给Alice。Malice在此截获 ,用 替代 后以Bob的名义转发给Alice。按照协议规则,Alice和Bob在协议终止后计算所得共享密钥分别为 和 ,二人并不知晓所共享的密钥是否相同,且已为Mal

12、ice所拥有。,而作为中间人的Malice,则同时获得了Alice和Bob所拥有的两个密钥(即和)。在随后的通信中,当Alice用加密消息时,Malice可以用相同的解密,得到消息的明文,并对该明文消息用加密后转发给Bob。后者可以用自己拥有的解密,因此不能感知任何错误或异常。同样,对于Bob发送给Alice的加密消息,Malice可以采用密钥实施欺骗功能。 因此,了解安全协议常见问题及其产生原因,有助于设计和验证协议的安全性。导致协议不安全的根本原因在于协议所运行环境的复杂性。该复杂性的典型代表是存在协议攻击者。协议攻击者(Protocol Attacker,以下简称攻击者)是指了解安全协议

13、,并利用一定的方式对安全协议的过程进行破坏,从而导致安全协议预定目标不能正常实现的通信实体。攻击者可以是协议的主体,也可以是协议主体之外的其它主体(如DH协议中的中间人)。因此,攻击者可能存在与协议运行过程中,也可能存在于协议运行的环境中。图5-2-1是攻击者与协议及其协议运行环境的关系示意图。,图,5-2-1是攻击者与协议及其协议运行环境的关系示意图。,攻击者有被动和主动之分。被动攻击者通过窃听并截获协议消息。而主动攻击者不仅可以截获消息,而且可以对其进行修改,甚至于它还可以伪装成协议主体与其它诚实协议主体通信。在考虑协议安全时,需要对攻击者的能力进行定义,即必须对攻击者进行建模,获得攻击者

14、模型(attacker model或adversary model)。一般而言,绝对安全的协议是极难设计和构造的,因此所谓协议的安全性,一般为在假定攻击者模型下,证明协议是安全的。为此,攻击者模型在协议安全分析占有举足轻重的地位和作用。,(1)截获并延迟消息的发送;(2)截获并重新发送消息到任意接收者;(3)截获并修改消息,并可转发给任意接收者;(4)可以产生新的消息(包括新鲜的消息)。(5)可以对消息进行分离;(6)可以对多个消息进行组合;(7)知道密钥后可解密消息和重新加密消息;(8)可以查看和掌握协议相关的公用信息;,在众多攻击者模型中,Dolev-Yao模型是公认较好的模型之一。在Do

15、lev-Yao攻击者模型中,一般假设攻击者具有如下能力:,由此可见,一个合理的攻击者模型,应该假定攻击者的能力较强。如果轻视或忽略攻击者这种能力,得出协议是安全的结论是极为不合理的,有时甚至是荒谬的。此外,Dolev-Yao模型假定攻击者不具备如下能力:(1)不知道密钥不能进行加密和解密操作(即密码算法是安全的);(2)不能获得加密消息的部分内容;(3)不能猜测密钥或密钥的一部分;(4)不能进行统计分析。 总之,由于存在攻击者,因此设计一个安全的协议是非常困难的任务.,除了由于存在攻击者而导致协议不安全之外,协议自身的缺陷也是导致协议不安全的原因之一。存在协议缺陷的原因可能是协议设计过程不规范

16、,也可能是在协议执行时产生。常见的协议缺陷包括:(1)基本协议缺陷:协议中没有或者很少考虑对攻击者的防范而引发的协议缺陷(如TCP/IP协议的安全缺陷问题等)。(2)口令/密码设置缺陷:在设置和使用口令或密码的过程中,未考虑攻击者对其的猜测攻击等情况(如口令和密码过短,直接采用用户名来作为口令和密码等)。(3)陈旧消息缺陷:在协议设计过程中,未考虑消息的时效性(即新鲜性),从而使得攻击者可以利用协议过程中产生的过时消息来对协议进行重放攻击。(4)并行会话缺陷:协议设计对仅考虑单个协议执行的情况,对多个协议(或同一个协议的多个运行实例)并行会话缺乏考虑,使得攻击者可以相互交换适当的协议消息来获得

17、更为重要的消息。(5)内部协议缺陷:协议参与者中至少有一方不能够完成所有必须的动作而导致缺陷。(6)密码系统缺陷:协议中使用的密码算法的安全强度问题导致协议不能完全满足所要求的机密性、完整性、认证等需要而产生的缺陷。,以下通过针对协议5-2-2(NSSK协议)来阐释消息重放攻击。,攻击者Malice通过对Alice和Bob过去某次NSSK协议的通过过程进行窃听,获得了其中的第三条消息 kab , A kbt.通过对该加密消息的攻击(如典型的蛮力破解),破译了该消息,从而得到了Alice和Bob使用的会话密钥 kab .当然,该破译过程可能需要较长的时间(如一年甚至更长)。一旦获得旧的会话密钥k

18、ab之后,Malice可以在今后某个时刻重新发送过去截获的旧消息 kab , A kbt而Bob对此并无只觉,因此它按照协议执行。随后的过程重Malice可以成功欺骗Bob,使得Bob认为和Alice发起了一次认证和密钥交换协议,并使得Alice(实质上是Malice伪装成Alice)的身份得以认证通过。但是,Alice在整个协议过程中根本未出现,所有的行为均为攻击者Malice所为。,通过对攻击5-2-2的分析可知,重放攻击之所以成功,其根本原因在于消息的新鲜性无法得到保证。如当Bob收到NSSK协议中第三条消息kab , A kbt时,他并不能区分该消息是现在产生的,还是过去的旧消息。,从

19、被重放消息的来源来看,重放攻击可分为协议轮内攻击和协议轮外攻击。协议轮是指一个协议的整个过程消息交换过程(如NSSK协议中的5条消息交换即为一个协议轮)。因此,协议轮内的重放攻击就是指重放在本协议轮被截获的消息,而协议论外攻击则是重放从其它协议轮中捕获的消息。根据消息的去向,重放攻击可分为偏转攻击和直接攻击。偏转攻击是通过改变消息的去向而实施的攻击。直接攻击是将消息发送给任意接收方而实施的攻击。其中偏转攻击分为反射攻击和第三方攻击。前者指将消息返回给发送者,而后者指将消息发给协议合法通信双方之外的任一方。攻击5-2-2中的重放攻击属于协议轮外攻击和直接攻击。,消息重放对策主要有三种:挑战应答机

20、制、时戳机制(Timestamp)和序列号机制(Sequence No)。挑战应答机制通过发送挑战值(Nonce:中文含义是现在,目前)来确保消息的新鲜性。时戳机制对消息加盖本地时戳,只有当消息上的时戳与当前本地时间的差值在意定范围之内,才接受该消息。时戳机制要求有一个全局同步时钟。如果双方时钟偏差过大或者允许的范围过大,则可以被攻击者利用。序列号机制是指通信双方通过消息中的序列号来判断消息的新鲜性。序列号机制要求通信双方必须事先协商一个初始序列号,并协商递增方法。,(1)挑战应答机制,在挑战应答机制中,发送者(或挑战者)向接收者发送一条挑战消息(Challenge)(如可能是一个称之为Non

21、ce的一次性随机数);接收者(或应答者)对该挑战消息进行密码操作,并发送该挑战对应的应答消息(Response)给发送者进行验证;发送者收到应答消息之后卡,能够通过他自己输入消息的新鲜性来验证接收者通信的新鲜性和真实性。其中,接收者的应答消息中所包含的对挑战的应答必须进行完整性保护,即对于应答消息一般需要进行某种密码变换。依据接收者对该消息进行密码操作不同,挑战应答机制可分为对称密钥加密机制和非对称密钥签名机制。典型的挑战应答机制如图5-2-2所示。需要说明的是,对新鲜随机数的保护(或变化)也可以由挑战者来进行,而应答者仅需简单回复即可。一般而言,挑战者和应答者同时对新鲜随机数进行变换是不必要

22、的,但是在某些安全协议中也可同时进行变换。,如图5-2-2所示,Alice通过在消息中嵌入表示消息新鲜性的标志(新鲜一次性随机数Nonce)来发起挑战,Bob收到带有挑战信息(Nonce)的消息之后,对挑战信息先进性变换后返回给Alice。而Alice能够通过对比Bob的应答和自己所知道的答案来判断消息是否是新鲜的。如果Bob的应答不能满足Alice的挑战,则Bob所回应的消息被认为是陈旧消息,即可能是重放攻击。,协议5-2-1为采用挑战应答机制来设计抗重放攻击的安全协议协的一例。,在协议5-2-1中,Bob对Alice的挑战是利用对称密钥进行加密。Alice收到Bob发送的消息之后,用相同的

23、密钥解密得到自己所期望的应答,并与自己在第一步中所发送的挑战进行比较。如果相同,则消息是新鲜的;否则消息即为陈旧消息。需要说明的时,协议5-2-1仅仅证明了消息的新鲜性,而其它消息的新鲜性则未提供保证。,(2)时戳机制,时戳机制是指发送者在消息中嵌入发送消息的本地时刻,而接收者在消息达到后,通过对比消息中所包含的时间信息和本地时间信息的差值,来决定该消息是否为新鲜消息。如果接收者对消息延迟达到所能容忍的时间差值为,发送消息的时刻为,收到消息的时刻为,如果则接收者认为该消息是新鲜的,否则该消息是陈旧消息(即可能时重放攻击)。同样,消息中的时戳信息必须进行完整性保护。典型的利用时戳机制对抗重放攻击

24、的过程如图5-2-3所示。与挑战应答机制不同,对时戳的保护(或变化)只能由消息的发送者提供,在图5-2-3中,Alice通过在消息中嵌入时戳来表示消息的新鲜性。Bob收到带有时戳信息的消息之后,计算出消息的时间差,并依据本地安全策略判断该消息是否是新鲜的。在攻击5-2-2中,我们描述了针对NeedhamSchroeder对称密码认证与密钥交换协议的重放攻击,而协议5-2-2则是利用时戳机制对NSSK协议的一种改进。,由于Trent在第二条消息中嵌入了自己的本地时戳,因此Bob在收到Alice所发送的第三条消息之后,可以通过对比时戳来挫败攻击者所发起的重放攻击。,(3)序列号机制,在序列号机制中

25、,协议主体之间首先协商一个一致的初始序列号。协议过程中每条协议消息均带上序列号。每发送一条消息,序列号对应加1。因此,协议实体可以通过对比消息中的序列号和自己当前所期望的序列号是否相同来判断消息的新鲜性。典型的采用序列号机制来对抗消息重返的过程如图5-2-4所示。当然,每条消息的序列号必须进行保护。由于序列号需要协商并保持同步,因此在实际应用中较少采用。,三种对抗重放攻击的方法各有优缺点,设计安全协议时须结合各自的特点和应用的要求来选择。三种防御方法对比如表5-2-1所示。,表5-2-1 三种对抗重放攻击的方法对比分析,攻击者和协议的缺陷是导致协议不安全的两大原因。为了设计出更为安全的协议来,

26、需掌握协议设计的工程方法。在协议设计中遵循一些基本原则,不仅有助于帮助设计者避免那些已在许多安全协议出现过的错误,而且有助于设计者掌握一套良好的协议设计技巧和方法。以下是设计一个安全协议时应遵循的一般原则:,(1)消息独立性原则,协议中的每条消息应该尽可能是自包含的,即消息的含义应该是一目了然,且消息含义的翻译直接通过该消息就可以完成,而无需依赖于其它协议或协议中的其它消息。,(2)消息前提准确原则,消息所依赖的条件必须明确地定义出来,从而使得协议的评价者知道这些条件是否可以接受。其原因在于绝对安全的协议是很难设计和构造的,一般的安全协议均是有条件的。因此,协议安全的前提必须明确的提出来。,(

27、3)协议主体身份标识原则,如果协议主体的身份对于理解消息的含义是必须的,那么协议主体身份就应该在消息中明确地标识出来,以避免歧义。,(4)加密目的明确原则,(5)签名原则,加密需要计算开销和空间开销,因此必须在必要时才使用加密。此外,加密并不等于安全,如果必须使用加密,则必须明确加密在协议安全中的作用和目的。一般而言,加密的目的包括:机密性、认证、认证与机密性、消息绑定、生成随机数。消息绑定是指通过密钥加密,可以将加密密钥所对应的协议主体的身份与被加密消息的身份绑定在一起。例如,如果某个密钥仅为Alice和Bob使用,则当Alice收到一条由加密的消息时,她知道该消息的加密者是Bob(因为除了

28、她和Bob之外,无其它人知道该密钥)。生成随机数一般是利用了加密算法的雪崩效应,即输入产生少许变化,将带来输出的巨大变化。,当协议主体对加密消息进行签名(即先加密后签名)时,则不应当假设该主体对消息的含义是清楚的。相反,如果是对明文进行签名后再加密(即先签名后加密)时,协议主体对消息的含义是完全清楚的。如果在一个安全协议中需要同时进行加密和签名,则须谨慎。一般的原则是先加密后签名。需要明确的是,这并非对所有协议实用,且即便如此不能保证协议的绝对安全。,(6)随机数使用原则,(7)随机数随机性原则,(8)时戳使用原则,(9)密钥新鲜性原则,当使用随机数时,必须明确随机数对应的含义。例如,随机数是

29、用来对抗重放攻击,还是用来绑定时间上邻接的两条消息?此外,由于生成真正的随机数是非常困难的,因此如果有好的替换方法,应尽量少用随机数。,如果决定在协议中使用随机数,则必须明确对随机数随机性的要求。例如,由于挑战应答机制中对随机数进行了保护,因此可以使用可预测的随机数来保证消息的新鲜性。但是,当使用可预测的随机数时,必须谨慎,以确保随机数的作用得到保证。,如果时戳是用来表示消息新鲜性的绝对时间,那么不同协议主体的本地时钟必须进行全局同步,以确保新鲜性的真实性。此外,如果使用了全局时钟同步,那么该同步机制也应该被视为安全协议的一部分。,会话密钥仅能用来加密当前消息,因此用过的会话密钥不应当在以后协

30、议执行过程中再次有效。因此,协议过程中用到的密钥应尽可能提供新鲜性保证。,如果协议中使用了编码方案,那么就应当明确地对所采用地编码方法进行说明。如果编码方法是依赖于协议的,那么可以推测该消息是确实属于这个协议的。有时候甚至要求知道该消息对应的协议实例及其消息顺序号。,(10)编码原则,(11)信任性原则,协议设计者必须知道自己所设计的安全协议所依赖的信任关系,并清楚地知道为什么该信任是必须和可能地。此外,如果存在信任关系,那么这种信任关系必须是依赖于安全策略和判断的,而不能依赖于逻辑推理。,综上所述,正如一位著名的安全学者所言,安全协议的设计原则对于协议的安全性是必须的,但也是不够的。不过,掌

31、握一般的设计原则,在某些条件下可以帮助协议设计者简化协议,并避免那些已经公开的混乱和错误。,认证(即身份认证)是声称者向验证者出示自己的身份的证明过程。认证目的是使别的成员(验证者)获得对声称者所声称的事实的信任。身份认证是获得系统服务所必须的第一道关卡。常见的协议包括用户口令认证协议(PAP)、挑战握手认证协议(CHAP)、Kerberos认证协议和X.509认证协议等。,用户口令认证协议(PAP:Password Authentication Protocol)是用于用户向点到点连接(PPP:Point-to Point Protocol )服务器证明自己的身份的协议,它仅在链路建立初期进

32、行认证,一旦完成认证,以后就不再进行认证。其认证过程如图5-3-1所示。,其中认证请求消息主要包括用户名及其口令,而认证响应消息则指明认证是否通过。因此,PAP协议就是简单的用户口令认证协议,且口令明文传送。PAP的缺点是显然的:任何网络窃听均可获得用户口令,从而假冒用户。,与PAP认证协议相似,挑战握手认证协议(CHAP: Challenge Handshake Authentication Protocol)也是用于用户与PPP服务器之间的认证。但是,与PAP不同,CHAP协议虽然在链路建立初期需要进行认证,但是它也可以在再次进行认证。在认证之前,用户和服务器之间必须共享某个秘密值S(如用

33、户口令)和一个单向函数H。CHAP认证协议原理如图5-3-2所示。,其中认证挑战消息(M)包含用户ID等信息,而认证响应消息是包含挑战消息及用户和服务器共享的秘密值的一个单向函数的输出结果:H1=H(M+S)。服务器收到认证响应消息之后,利用相同的单向函数和自己所知道的共性秘密值计算: H2=H(M+S) ;如果H1=H2则认证通过,否则认证失败。,CHAP协议避免了口令在网络上的明文传送的缺点,是对PAP协议的改进。但是,CHAP协议由于需要预共享秘密值,因此其应用范围受到一定的限制。,“Kerberos”的本意是希腊神话中守护地狱之门的三头犬。Kerberos认证协议是美国麻省理工学院雅典

34、娜(Athena)研究计划中的一部份,由Miller和Neuman两位研究人员以Needham-Schroeder认证协议为基础改进而成。Kerberos提供了一个集中式的认证服务器结构,认证服务器的功能是实现用户与其访问的服务器间的相互鉴别,其实现采用对称密钥加密技术,而未采用公开密钥加密技术。公开发布的Kerberos版本包括版本4和版本5。,针对Needham-Schroeder认证协议的缺点,Kerberos引入了票据准许服务器(TGS:Ticket-Granting Server)作为一个认证框架,Kerbero认证协议可应用于多种网络协议和操作系统。目前,无论是UNIX系统、Lin

35、ux操作系统,还是Windows2000/XP操作系统均支持Kerberos协议。,在Kerberos认证协议中,存在四个角色:客户端(C:Client,即用户),服务器(S:Server,即提供某种服务器的服务器),认证服务器(AS:Authentication Server)及票据准许服务器(TGS:Ticket-Granting Server)。客户端即请求服务的用户,而服务器就是向用户提供服务的一方。认证服务器负责验证用户的身份,如果通过了认证,则向用户提供访问票据准许服务器的票据许可票据(Ticket-Granting Ticket),票据准许服务器则负责验证用户的票据许可票据,如果

36、验证通过,则为用户提供访问服务器的服务许可票据(Service-Granting Ticket)。因此,从认证服务器所获得的票据许可票据不能作为用户访问服务器的凭证,只能作为访问票据许可服务器的凭证,而后者所授予的服务票据才是用户访问服务器的凭证。,Kerberos中的四种角色及其密钥共享关系如图5-3-4所示。,由图5-3-4可知,用户C和票据准许服务器TGS和服务器S之间并无密钥共享关系,因此它们之间的通信采用会话密钥来加密。,Kerberos 系统构架如图5-3-5所示。,在Kerberos的认证过程中也存在票据有效期问题。因此,当用户向认证服务器AS请求一张与票据许可服务器TGS通信的

37、通行证时,该通行证除了会话密钥之外,还包括用户端、服务器端、时戳以及有效期等信息。同样,票据许可服务器颁发给用户的服务许可票据除了包含会话密钥之外,同样也包含用户、服务器、时戳和有效期等信息。一旦用户获得票据许可票据,则访问其它服务时只需要访问票据许可服务器,而无需通过认证服务器。通过使用票据许可票据,避免了用户重复出示用户名和口令的问题,因此可有效提高认证的效率和安全性,而通过使用服务许可票据,将认证和授权分离,减少了认证开销。,(1)第一步:认证服务交换(Authentication Service Exchange):用户向认证服务器证明自己的身份,以便获得票据许可票据(Ticket-G

38、ranting Ticket)。(2)第二步:票据许可服务交换(Ticket-Granting Service Exchange):用户向票据许可服务器TGS索取访问服务器的服务许可票据(Service-Granting Ticket)。(3)第三步:用户与服务器交换(Authentication Exchange):使用所需服务。,总结起来,Kerberos认证协议可分为三大步骤 :,表 5-3-1 Kerberos 认证协议中的参数及其含义,在描述Kerberos协议的过程中,各个参数如表5-3-1所示。,Kerberos协议版本4如协议5-3-1所示。,消息(3)和消息(4)是票据许可服

39、务交换。在消息(3)中,IDs用来表示客户端C要求访问服务器IDs或与之通信;Tickettgs是消息(2)中所取得的、用来证明C已通过AS的认证的票据;与Tickettgs中的相关认证信息对应,认证符AUc1用来证明自己是Tickettgs的合法拥有者。AUc1是由客户端所产生,其使用期限应该很短,以减少遭受重放攻击(replay attack)的概率。认证符中包括时戳TS3,用来表示此认证符表示AUc1产生的时间;IDC和ADc都是用来与Tickettgs中的 IDc和ADc做对比,以证明客户端的身份。,在消息(4)中,所有内容均使用客户和票据准许服务器共享的密钥Kc,tgs加密传送,以避

40、免信息被窃听。此消息包含了客户端与服务器通信所需要的会话密钥K c, s;IDs用来表示Tickets是用来与服务器S通信的;时戳TS4用来表示此Tickets的产生时间,而Tickets是由票据准许服务器签发给客户端用来与服务器通信的票据(即通信证)。,消息(5)和消息(6)是用户与服务器交换。其中消息(5)的作用与消息(4)相似,主要用于服务器认证客户,读者可自行分析。消息(6)作为客户端认证服务器,以证明服务器具有解密消息(5)中的认证标识AUc2的能力,并回送另外一时戳信息TS5+1。通过消息(5)和消息(6)实现了客户端和服务器的双向认证。,新版本(版本v5)则提供了较版本4更为完善

41、的认证功能,且提供了跨域认证功能。Kerberos版本4与版本5的不同之处如表5-3-2所示。,表5-3-3 Kerberos V5中新增加的参数及其含义,表5-3-3是Kerberos V5 中新增加的符号及其说明,具体的协议5-3-2所示。由于V5与V4大致相同,读者可自行分析。,表5-3-4 Kerberos V5 的标志及其含义,一个完整的Kerberos环境包括一个Kerberos服务器,一组工作站和一组应用服务器。其中Kerberos服务器包括认证服务器AS和票据许可服务器TGS。所有用户和所有的应用服务器均在Kerberos服务器上注册。Kerberos 服务器的数据库中拥有所有

42、参与用户的 UID及其对应的口令散列表。Kerberos服务器必须与每一个应用服务器之间共享一个保密密钥,该密钥也保存在Kerveros服务器的数据库中。 根据用户和应用服务器在网络管理中的位置不同,Kerberos V5提供了域管理的能力。所谓域,就是依据网络管理的边界而划定的一个网络范围。属于同一个网络范围内的用户和服务器属于同一个域。一个用户可能需要访问另一个Kerberos领域中应用服务器。同样,一个应用服务器也可以向其它领域中的客户提供网络服务。为了提供跨域访问的能力,Kerberos提供了跨域认证的能力。领域间互通的前提是,支持不同领域之间进行用户身份鉴别的机制;互通领域中的Ker

43、beros服务器之间必须共享一个密钥;两个 Kerberos 服务器也必须进行相互注册。图5-3-7是Kerveros 跨域认证框架。,Kerveros跨域认证过程分为四步:(1)用户通过本地认证服务器AS,请求与本地票据许可服务器(local TGS)进行通信的票据许可票据;(2)用户通过本地的票据许可票据服务器,请求与远程票据许可服务器(remote TGS)通信的票据许可票据;(3)用户通过远程票据许可票据服务器,请求与远程服务器S通信的票据;(4)用户向远程服务器提出服务访问请求。,与通常的Kerveros协议相比,跨域认证多了一个获取访问远程票据许可服务器的步骤,具体的跨域认证协议如

44、协议5-3-3所示。,(1)X.509简介,从技术角度来看,X.509协议的实现基于公开密钥加密算法和数字签名技术。在公钥加密算法方面,虽然X.509没有规定使用某个特定的算法,但推荐使用RSA公钥算法,因此具有较高的安全性。在数字签名技术方面,X.509使用安全哈希函数(Hash Function),但是没有规定具体的Hash算法。,(2)X.509中的证书,证书(Certificate)是一个机构颁发给一个安全个体的证明。证书是公开密码体制的一种密钥管理媒介,是一种权威性的电子文档,用于证明某一主体(人或者设备)的身份及其公开密钥的合法性。证书的权威性取决于该证书颁发机构的权威性。一个证书

45、中,最重要的信息是个体名字、个体的公钥、机构的签名、算法和用途等。,自1988年开始,X.509总共定义了三种证书版本(X.509 v1,v2和3)。,在认证方面,X.509规定了三种认证协议:单向认证、双向认证和三向认证。,A. 单向认证协议,该协议如协议5-3-4所示。,(1)Alice生成一个随机数RA。(2)Alice生成一个消息M ,其中TA是Alice的时间标记,IDB是Bob的身份,而时可选的签名消息,用于保证消息的完整性和可信性。kab是可选的Alice和Bob之间的需要交换的共享密钥,如果需要交换kab ,则需要用Bob的公钥kB加密。此外,为了提供机密性,消息M可以使用Bo

46、b的公钥来kB加密。(3)Alice将消息CAA|M发送给Bob。其中,CAA是Alice的证书。(4)Bob验证CAA且取得Alice的公钥kA,并验证公钥是否过期。(5)Bob使用kA解密M的签名部分,并同时验证Alice的签名是否有效和消息是否完整。(6)Bob验证M中IDB的正确性。(7)Bob检查M中的TA,并验证此消息是最新的。(8)Bob检查M中的NA,比较原来收到消息的随机数信息,以确认消息不是被重放的。,双向协议由协议5-3-4扩展而来,在消息(1)的基础之上,增加了从Bob到Alice的类似于单向认证协议的消息,其过程如协议5-3-5所示。在执行上述步骤(1)步骤(8)之后

47、,双向协议的剩余流程如下所示。,(9)Bob生成另外一个一次性新鲜随机数NB。(10)Bob生成另外一个消息 ,其中TB是Bob的时戳,IDA是Alice的身份。同样,为了保密消息也可以用Alice的公钥kA加密。NA是Alice在步骤(1)中所生成的随机数。(11)Bob将消息CAB|M发送给Alice,其中CAB是Bob的证书。(12)Alice验证CAB且取得Bob公钥kB,并验证公钥是否过期。(13)Alice用kB解密消息M的签名部分,并同时验证了Bob的签名是否有效和消息是否完整。(14)Alice检查消息 M中IA的正确性。(15)Alice检查消息M中的TB,并确认消息是最新的

48、。(16)Alice检查消息M中NB,比较原来收到消息的随机数信息,以确认消息不是被重放的。,三向认证协议的目的与双向认证相同,其不同点在于三向认证协议没有使用时戳,其原因在于认证发起者Alice向Bob返回了一次性新鲜随机数NB。其中,三向认证协议的步骤(1)到步骤(16)与双向协议相同,只是其中的两个时戳 TA 和TB为可选内容(或TATB = 0。随后,三向认证协议加入了步骤(17)到步骤(20),如下所示。,(17)Alice检查收到的NA,并与她在步骤(3)发送给Bob的NA进行比较,看是否相同。(18)Alice送将消息发送给Bob。(19)Bob用Alice的公钥kA解密消息,同

49、时验证了Alice签名的有效性和消息的完整性。(20)Bob检查自己所收到NB,并与自己在步骤(10)发送给Alice的NB比较,看是否相同。,(1)攻击者Malice对Bob重放协议5-3-4中的消息(1): 由于Bob不验证时戳,因此Bob不会发现此消息是重放的。(2)Bob选取新的新鲜随机数NB,并将协议5-3-5中的消息(2): 发送给Alice。攻击者可以截获该消息,并利用Bob的公钥获得其中的NB。攻击者为了攻击成功,必须回应协议5-3-6中的消息(3): 。为此,攻击者Malice给Alice发送消息,并让Alice对自己进行认证。在Malie和Alice的认证过程结束时,Mal

50、ice获得了Alice发送回来的 (3)Malice利用获得的 冒充Alice成功。 上述攻击成功的原因在于Alice的签名被滥用,即Alice对消息NB的签名没有指出是签发给谁的,因而Malice可以利用消息 对Bob发起重放攻击。为此,针对上述攻击,仅需将协议5-3-6中的消息(3): 修改为 。因为这样修改之后,攻击者Malice在攻击步骤(2)中所获得的将是 (其中IDM是Malice的身份标识),而无法获得Malice所需要的 。,在三向认证协议中,时戳可以为空,因此可以不对时戳进行验证。但是,在上述三向认证协议中,存在协议漏洞,其攻击步骤如下:,认证是信息安全防护系统中的核心和基础

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号