




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9讲网络层的安全性:IPSec目录9.1 两种模式19.2 两个安全协议29.2.1 验证文件头(AH)29.2.2封装安全载荷(ESP)39.2.3 IPv4和IPv639.2.4 AH和ESP39.2.5 IPSec提供的服务49.3安全关联49.3.1安全关联的概念59.3.2安全关联数据库(SAD)594安全策略595互联网密钥交换(IKE)69.5.1 改进的Diffie-Hellman密钥交换79.5.2 IKE阶段89.5.3 阶段和模式89.5.4 阶段I:主模式99.5.5阶段l:野蛮模式101 8.5.6 阶段II:快速模式119.5.7 SA算法129.6 ISAKMP129.6.1一般文件头129.6.2有效载荷13前面两章已经讨论了在应用层和传输层上的安全性。不过,在某种情况下上述两个层上的安全也许是不够的。首先,在应用层上并不是所有客户服务器程序都受到了保护。例如,PGP和S/MIME只保护电子邮件。其次,并不是所有应用层的程序都使用由SSL或TLS保护的服务,有一些程序使用的是UDP服务。第三,许多应用,像路由选择协议,直接使用IP服务,它们需要的是在IP层上的安全服务。IP安全(IPSec)是一个由互联网工程任务组(IETF)设计的协议的组合,用来为网络层的数据包提供安全。互联网上的网络层通常是指互联网协议或IP层。IPSec帮助IP层建立可信数据包和机密数据包,如图9-1所示。IPSec可以运用在几个领域。首先,它可以增强那些如电子邮件这类使用自己本身的安全协议的客户服务器程序的安全性。第二,它还可以增强那些像HTTP那样的客户服务器程序的安全性,这些程序都使用由传输层提供的安全。它可以为那些不使用传输层提供的安全服务的客户服务器程序提供安全。它也可以为像路由选择协议一样的点对点通信程序提供安全。9.1 两种模式IPSec是在两种不同模式的一种当中起作用,即传输模式或隧道模式。1.传输模式在传输模式中,IPSec保护从传输层传递到网络层的信息。也就是说,传输模式保护网络层的载荷,这种载荷在网络层还要封装起来。注意,传输模式不保护IP文件头。也就是说,传输模式不保护整个的IP数据包,它只保护来自传输层的数据包(IP层载荷)。在这种模式中,要把IPSec文件头(和尾)加到来自传输层的信息上。IP文件头是后来加上去的。传输模式下的IPSec不能保护IP文件头;只能保护来自传输层的信息。当我们需要主机到主机(端到端)的数据保护时,通常就会使用传输模式。发送端主机使用IPSec对从传输层上传递过来的载荷进行验证和或加密。接收端的主机使用IPSec检验IP数据包的可信性和或对数据包进行解密,再把它发送到传输层。图9-3所示,就是这个概念。2.隧道模式在隧道模式中,IPSec保护整个的IP数据包。它接受一个包括文件头的IP数据包,并对整个的数据包使用IPSec安全方法,然后再在这个数据包上加一个新的IP文件头。如图9-4所示。我们简单地了解一下这个新的IP文件头,它具有和原IP文件头不同的信息。隧道模式通常使用在主机到路由器的路由器或路由器到主机的路由器上,如图9-5所示。也就是说,当发送者和接收者不都是主机的时候,才用隧道模式。整个的原数据包都要保护起来,以免在发送者和接收者之问遭受入侵,就好像整个的数据包在通过一个假想的隧道一样。隧道模式中的IPSec保护原IP文件头。比较在传输模式中,IPSec层出现在传输层和网络层之间。在隧道模式中,流是从网络层到IPSec层,然后再返回到网络层。图9-6所示,就是这两种模式的比较。9.2 两个安全协议IPSec定义两种协议:验证文件头(AH)协议和封装安全载荷(ESP)协议。其目的是在IP层上为数据包提供验证和或加密。9.2.1 验证文件头(AH)验证文件头(AH)协议是设计用来验证源主机的,并确保在IP数据包中传输的有效载荷的完整性。该协议用散列函数和一个对称密钥来创建一个信息摘要,再把摘要插入到验证文件头中。根据这种模式(传输或隧道),再把AH放到适当的位置。图9-7表示出了传输模式中,验证文件头的位置和域。当IP数据包传输验证文件头时,IP文件头协议域中的初始值就被值51取代。验证文件头当中的一个域(下一个文件名域)保存协议域(数据报所传输载荷的类型)的初始值。下面就是增加一个验证文件名的步骤:(1)把验证文件头加到验证数据域的值设置为0的载荷上。(2)也许还要增加一些填充,使得总长度和特殊的散列算法相一致。(3)散列处理是基于整个数据包的。不过,只有那些在传输过程中不发生改变的IP文件头的域包含在这种信息摘要(验证数据)的计算中。(4)验证数据要插入到验证文件头中。(5)把协议域的值改变为51后,加上IP文件头。下面我们就把每一个域简单描述一下:下一个文件头下一个8比特的文件头域定义在IP数据报(如TCP、UDP、ICMP或OSPE)中传输的有效载荷的类型。在封装之前,它和IP文件头中的协议域的作用是相同的。也就是说,这个过程把IP数据报中协议域的值复制到这个域中了。在新的数据报中协议域的值现在是51,表明该数据报传输了一个验证文件头。有效载荷长度这个8比特域的名称容易引起误解。它并不定义有效载荷的长度,它只在4字节的域中定义验证文件头的长度,但是并不包括第一个8字节。安全参数索引 这个32比特的安全参数索引(SPI)域起虚拟电路标识符的作用,并 且与称为安全关联(后面讨论)的一个连接中发送的所有数据包相同。序列号 一个32比特的序列号为一个数据报序列提供有序信息。序列号可以用来预防重放。注意,即使重新传输一个数据包,序列号也不能重复使用。一个序列号达到2弛后,就不能再返回来了,必须要建立一个新的连接。验证数据最后,除非验证数据域在传输过程中改变(如,生存时间),否则它就是对IP数据报使用散列函数的结果。AH协议提供源验证和数据完整性,但不提供机密性。9.2.2封装安全载荷(ESP)AH协议不提供机密性,只提供源验证和数据完整性。IPSec后来定义了一个选择性协议:封装安全载荷(ESP),这个协议提供源验证、信息完整性和机密性。ESP加一个文件头和一个文件尾。注意,ESP的验证数据要加在数据包的末尾,这样就可以使它的计算更容易。图98所示,就是ESP文件头和文件尾的位置。在IP数据报传输一个ESP文件头和文件尾的时候,IP文件头中的协议域的值是50。ESP文件尾中的一个域(下一个文件头域)保存协议域(由IP数据报传输的有效载荷的类型,如T TCP或UDP)的初始值。ESP程序遵循以下步骤:(1)把一个ESP文件尾加在有效载荷上。(2)对有效载荷和文件尾加密。(3)加上ESP文件名。(4)运用ESP文件头、有效载荷和ESP文件尾创建验证数据。(5)把验证数据加在ESP文件尾的末尾。(6)协议值改变为50后,加上文件头。文件头域和文件尾域如下。安全参数索引 这个32比特的安全参数索引域与由AH协议定义的域相同。序列号 这个32比特的序列号域与AH协议定义的域相同。扩展位 把这个0s的可变长度的域(0255字节)当作扩展位。扩展位长度 这个8比特的附加长度域确定扩展位的数目。其值在0255之间,很少出现最大值。下一个文件头 这个8比特的下一个文件头域与在AH协议中定义的域相同。在封装之前,它的作用和IP文件头中的协议域相同。验证数据 最后,验证数据域是把验证方案应用于数据报的某些部分的结果。要注意AH中和ESP中验证数据的不同。在AH中,IP文件头的部分包含在验证数据的计算中;在ESP中,则不是这样。ESP提供源验证、数据完整性和机密性。9.2.3 IPv4和IPv6IPSec支持IPv4和IPv6。不过,在IPv6中,AH和ESP是扩展文件头的部分。9.2.4 AH和ESPESP协议是在AH协议投入使用以后才设计出来的。不管AH是否具有附加的作用(机密),ESP总是起作用的。问题是,我们为什么需要AH呢?答案是我们不需要。不过,A的使用总是包含在一些商业性的产品中,这就意味着AH还将保留在互联网的部分中,到这些商业产品逐步停止。9.2.5 IPSec提供的服务两个协议,AH和ESP,都可以为互联网上的数据包提供几种安全服务。表9.1所厅就县对每一种协议都可用的服务列表。1访问控制IPSec运用安全关联数据库(SAD)间接地提供访问控制,我们在以后将要了解到。当一个数据包到达目的端时,如果还没有为这个数据包建立安全关联,那这个数据包就被丢弃了。2信息完整性信息完整性是保存在AH和ESP中的。数据摘要是由发送者创建并发送的,由接收者检查。3实体验证发送者发出来的安全关联和数据的密钥散列摘要,可以在AH和ESP中验证数据的发送者。4机密性在ESP中,信息的加密提供了机密性。不过,AH不提供机密性。如果需要机密性,我们就应当使用ESP,而不是AH。5重放攻击的防护在这两种协议中,都是通过使用序列号和滑动接收窗口来避免重发攻击的。安全关联建立后,每一个IPSec文件头只包含一个唯一的序号。这个数字从0开始,直到232-1(序号域的大小是32比特)。当序号达到最大值时,再重新设置为0,同时,要删除旧的安全关联(参看下一部分),要建立新的安全关联。为了避免处理重复数据包,IPSec要求在接收者这一方使用固定大小的窗口。窗口的大小是由接收者用默认值64决定的。图9-9所示,就是一个重放窗口。固定大小的窗口用W表示。遮蔽数据包表示已接收并检查和验证过的数据包。当一个数据包到达接收端时,根据序列号值,下面三件事情当中有一件要发生:(1)数据包的序列号小N。这就把数据包放在了窗口的左端。这样,数据包就被丢弃了。这个数据包要不是重复的,要不就是到达时间超时。(2)数据包的序列号N和(N+W-1)之间(包含这两个值)。这就把数据包放到了窗口中。这样,如果数据包是新的(没有标记的)并通过了验证测试,序列号是标记过的,数据包就接收。否则,就丢弃。(3)数据包的序列号大于(N+W-1)。这就把数据包放到了窗口的右侧。这样,如果数据包已经验证,相关序列号是标记过的,并且窗口滑到右侧覆盖了新标记过的序列号。否则,这个数据包就要丢弃。注意,数据包的序列号远大于(N+W)(离窗口的右边缘很远1也是有可能的。这样,窗口的滑动也许会引起许多未标记的数字落在窗口的左侧。这些数据包到达时不能接收,它们已经超时。例如,在图99中,如果序列号为(N+W+3)的数据包到达,窗口就滑动并且其左侧边缘在(N+3)的开端。这就意味着现在的序列号(N+2)不在窗口中。如果这种序列号的数据包到达,就要丢弃。9.3安全关联安全关联是IPSec非常重要的一个方面。在两个主机之间,IPSec需要有一个称为安全关联(SA)的逻辑关系。在这一部分中,我们首先讨论这个概念,然后说明在IPSec中怎样使用安全关联。9.3.1安全关联的概念安全关联是通信双方之间的一个契约,可以在通信双方之间创建一个安全信道。我们假定爱丽丝需要与鲍勃进行单向通信。如果爱丽丝和鲍勃只对安全方面的机密性有兴趣,他们就可以得到一个他们之间的共享的密钥。我们就可以说在爱丽丝和鲍勃之间有两个安全关联(SA):一个是输出SA,一个是输入SA。每一种安全关联都把密钥值储存在另一种安全关联的加密解密算法的名称和变量中。爱丽丝运用这种算法和密钥加密发给鲍勃的信息;当需要对来自爱丽丝的信息解密时,鲍勃就运用这种算法和密钥。图9.10所示,就是一个简单的SA。如果通信双方需要信息的完整性和可信性,就更要涉及到安全关联。每一种关联都需要其他数据如信息完整性、密钥和别的参数的算法。如果通信双方针对不同的协议要使用特别的算法和特别的参数,如IPSec AH或IPSec ESP,安全关联就会更复杂。9.3.2安全关联数据库(SAD)安全关联可能是非常复杂的。这一点会很明显,例如爱丽丝要发送信息给许多人,或鲍勃要从许多人那里接收信息。此外每一方都要既有输入SA又有输出SA,才能进行双向通信。也就是说,我们要有一列可以集中在数据库中的SA。这个数据库就称为安全关联数据库(SAD)。这个数据库可以认为是一个每一行定义一个单个的SA的二维表。通常有两种SAD,一种是输出,一种是输入。图9-11所示,就是一个实体的输出SAD和输入SAD的概念。当一个主机要发送一个必须传送IPSec文件头的数据包时,主机需要找出输出SAD的相关项,这样才能找到应用安全于数据包的信息。同样地,当一个主机接收到一个传输IPSec文件头的数据包时,主机需要找出输入SAD的相关项,才能找到检查数据包安全性的信息。搜索过程必须要是精确而又详细的,因为接收方主机需要确认处理这个数据包所用的是正确的信息。输入SAD的项是用三个索引选出来的,这三个索引是:安全参数索引、目的地址和协议。安全参数索引 安全参数索引是一个32比特的数字,在目的端中定义SA。就像我们后面将要了解到的那样,SPI是在SA判定过程中确定的。相同的SPI都包含在属于相同输入SA的所有IPSec数据包中。 目的地址第二个索引就是主机的目的地址。我们要记住,一个互联网中的主机通常有一个单播目的地址,但是它可能有几个组播地址。IPSec要求SAs对每一个目的地址都是唯一的。协议IPSec具有两种不同的安全协议:AH和:ESP。为了把运用在每个协议中的参数和信息分开,IPSec要求目的文件为每一个协议定义一个不同的SA。每一行的条目称为SA参数。典型的参数如表9-2所示。94安全策略IPSec的另一个重要方面就是安全策略(SP),在数据包被发送或到达的时候,安全策略可以定义安全的类型。我们在前面已经讨论过,在应用SAD之前,一个主机要为数据包确定预设的策略。安全策略数据库每一个使用IPSec协议的主机都要有一个安全策略数据库(SPD)。还要有一个输入SPD和一个输出SPD。SPD中的每一个条目运用下列六种索引都可以访问:源地址、171的地址、名称、协议、源端口和目的端口。如图9-12所示。源地址和目的地址可以是单播地址、组播地址或掩码地址。名称通常可以确定一个DNS条目。协议不是AH就是ESP。源端口和目的端就是运行于源主机和目的主机上的程序的端口地址。1输出SPD一个数据包要发送出去时,就要考虑输出SPD。图9-13所示,就是发送数据包的过程。对于输出SPD的输入是六重索引,输出是下列三种情况之一:掉落 这就表明由索引确定的数据包不能发送;它掉落了。旁路 这就意味着没有关于这种策略索引数据包的策略,发送这种数据包时绕过了安全文件头的应用程序。应用 在这种情况下,要应用安全文件头。两种情况可能会发生。a如果已经建立了一个输出SA。要把从输出SAD中选出相应SA的三重SA索引返回。就形成了AH或ESP文件头,加密、验证或加密和验证二者的应用都基于SA的选择。数据包就发送。b如果还没有建立输出SA,就要调用互联网密钥交换(IKE)协议(参看下面这一部分)来为这种传输创建输出SA和输入SA。输出SA由源信息加到输出SAD上:输入SA由目的信息加到输入SAD上。2输入SPD 一个数据包到达时,就要考虑使用输入SPD。输入SPD中的每一个条目都要用相同的六重索引存取。图9-14所示,就是接收者处理数据包的过程。对输入SPD的输入是六重索引,输出就是下面三种情况中的一种:丢弃 这就意味着由安全策略定义的数据包必须要掉落。旁路 这就意味着对带有这种安全索引的数据包没有安全策略,处理数据包时忽略了来自AH或ESP文件头的信息。数据包要传送到传输层。应用 在这种情况下,必须要处理安全文件头。两种情况都有可能发生。a如果已经创建了一个输入SA,从输出SAD中选出相应输入SA的三重SA索引被返回。解密、验证或二者都要应用。如果数据包通过了安全标准,就要丢弃AH或ESP文件头,并且要把数据包传送到传输层上。b如果还没有创建一个SA,那数据包就肯定要丢弃。95互联网密钥交换(IKE)互联网密钥交换(IKE)是设计用来创建输入安全关联和输出安全关联的协议。像我们在前面讨论的那样,如果一个同级的客户要发送IP数据包,那就要考虑使用安全策略数据库(SPDB),来了解是不是有针对这种传输类型的SA。如果没有SA,就要用IKE创建一个。IKE为IPSec创建SA。IKE是一种基于另外三种协议的复杂协议,这三种协议是:Oakley协议、SKEME协议和ISAKMP协议,如图9-15所示。Oakley协议是由Hilarie Orman提出来的。这是一种基于Diffie-Hellman的密钥交换方法的密钥创建协议,不过我们将要简单了解的这种Oakley协议已经有了一些改进。因为Oakley协议不改变所交换信息的格式,所以这种协议是一种自由格式协议。本章中我们不直接讨论Oakley协议,但是我们要说明IKE怎样使用这种概念。SKEME协议是由。Hugo Krawcyzk设计的,这是针对密钥交换的另一个协议。在密钥交换协议中,它运用公钥为实体验证加密。我们即将了解到IKE使用的一种方法是基于SKEME的。互联网安全关联和密钥管理协议(ISAKMP)是一个由国家安全局(NSA)设计的协议,由IKE定义的交换实际上就是由国家安全局执行的。这种协议定义几种可以使IKE交换发生在标准化、格式化信息中的数据包、协议和参数来创建SA中。我们将把ISAKMP作为执行IKE的传输协议,在下面这部分中讨论。在这一部分中,我们讨论IKE本身和为IPSec创建SA的机制。9.5.1 改进的Diffie-Hellman密钥交换IKE中密钥交换的概念是基于Diffie-Hellman协议的。在不需要任何以前的秘密存在的情况下,这个协议在两个同等的实体之间提供了一个会话密钥。在第15章中,我们已经讨论了Diffie-Hellman协议,这个概念归纳在图9.16中。在原Diffie-Hellman密钥交换中,通信双方创建一个对称会话密钥来交换数据,并且不需要记忆或储存将来使用的密钥。建立对称密钥之前,通信双方需要选择两个数字p和g。第一个数字p,是一个数量级为300个十进制数位(1024比特)的大素数。第二个数g,是群的一个生成元。爱丽丝选择了个大的随机数i并计算出KE-I=gimod p,她把KE-I发送给鲍勃;鲍勃选择另一个大的随机数r并计算出KE-R=grmod p,他把KE-R发送给爱丽丝。因为每一个都是由同级的群生成的半密钥,我们把KE-I和KE-R称为Diffie-Hellman半密钥。他们必须联合起来才能创建一个全密钥,这就是K=girmod p。K是对话的对称密钥。Diffie-Hellman协议有一些缺点,要把它作为一个互联网密钥交换来使用的话,就要消除这些缺点。1.堵塞攻击有关协议的第一个问题就是堵塞攻击或拒绝服务攻击。恶意攻击者可以发送许多半密钥(gx mod q)信息给鲍勃,伪称这些信息来自不同的信息源。然后,鲍勃就要计算不同的应答mod曰),且同时要计算全密钥(gxymod q)。这样就会使鲍勃特别地忙,就不能对其他信息做出应答。他就拒绝了对客户的服务。因为Diffie-Hellman协议在计算方面是精深的,这种情况就有可能发生。为了避免这种堵塞攻击,我们可以把两个额外的信息加到协议上,来迫使通信双方发送cookie。图9-17明确地表示出了避免clogging攻击的方法。cookie是对同等各方(如IP地址、端口号和协议)的唯一标识符进行散列处理的结果,是被生成cookie和时间戳的一方知道的秘密随机数。发起者把它本身的cookie发送出去,应答者返回它本身的cookie。在下列每一个信息中,两个cookie都要重复,但并不改变。半密钥和会话密钥的计算要推迟到这个cookie返回。如果对等各方的任意一方是一个企图进行堵塞攻击的黑客,cookie就不会返回了,相关的通信方也就不会花费时间和精力去计算半密钥和会话密钥了。例如,发起者如果是一个使用假IP地址的黑客,发起者就收不到第二个信息也不能发送第三个信息了。这个过程就被取消了。为了避免堵塞攻击,IKE要使用cookies。2重放攻击和我们到目前为止了解的别的协议一样,Diffie-Hellman也容易遭受重放攻击。来自个会话的信息在将来的会话中可能被恶意入侵者重放。为了避免这种攻击,我们可以把一个nonce加到第三和第四个信息上,来保持信息的更新。为了避免重放攻击,IKE要使用nonces。3中间相遇攻击第三个针对协议的攻击,也是最危险的攻击,就是中间相遇攻击,以前我们在第15章中讨论过。伊夫可以来到中间,在爱丽丝和她自己之间创建一个密钥,并在她和鲍勃之间创建另一个密钥。要阻止她的攻击并不像阻止其他两种攻击那样简单。我们需要对通信的每一方进行验证。爱丽丝和鲍勃需要确定信息的完整性是否受到保护,并且双方都要相互进行验证。信息交换的验证(信息完整性)和所涉及的通信各方(实体验证)的验证要求每一方证明他她声称的身份。为此,每一方都要证明自己拥有一个秘密。为了避免中间相遇攻击,IKE要求每一方都表明它拥有一个秘密。在IKE中,秘密可以是下列某一个:(1)一个预共享密钥。(2)一个事先知道的加密解密公钥对。一个实体必须要表明:一个用公布的公钥加密的信息可以用相关私钥解密。(3)一个事先知道的数字签名公钥对。一个实体必须表明:它可以用它的私钥给信息签名,这个私钥可以用公布的公钥来验证。9.5.2 IKE阶段IKE为像IPSec一类的信息交换协议创建SA。不过IKE要交换的信息是机密信息和可信信息。什么协议可以为IKE本身提供SA呢?读者也许会意识到,这就要有一个无终止的SA的链:IKE必须要为IPSec创建SA,协议X要为IKE创建SA,协议Y要为协议X创建SA,如此等等。为了解决这一难题,同时也为了使IKE能够独立于IPSec协议,IKE的设计者把IKE分成了两个阶段。在阶段I中,IKE为阶段II创建SA。在阶段II中,IKE为IPSec或一些别的协议创建SA。阶段I是一般性的;阶段II对协议来说是特别的。IKE分为两个阶段:阶段I和阶段II。阶段I为阶段II创建SA;阶段II为与IPSec样的数字交换协议创建SA。不过,问题依然存在:怎样来保护阶段I呢?在下面这些部分中,我们要阐明阶段I怎样使用逐渐形成的SA。早期的信息是在明文当中交换;后来的信息是使用从早期信息当中创建的密钥进行验证和加密的。9.5.3 阶段和模式考虑到多种不同的交换,IKE已经为阶段定义了几种模式。到目前为止,阶段I有两种模式:主模式和野蛮模式。阶段II只有一种模式就是快速模式。图9.9所示,就是阶段和模式之间的关系。基于通信双方之间预秘密的本质,阶段I的模式可以使用四种不同的验证方法中的一种,这四种验证方法是:预共享密钥方法、源公钥方法、修正的公钥方法或数字签名方法,如图9-19所示。9.5.4 阶段I:主模式在主模式中,发起者和应答者要交换六个信息。在前两个信息中,他们要交换cookies(避免堵塞攻击)并协商SA参数。发起者发送一系列的协议;应答者选出其中的一个。交换前两个信息时,发起者和应答者都知道了SA参数,并且确信别的通信方存在(没有发生堵塞攻击)。在第三和第四个信息中,发起者和应答者通常要交换半密钥(Diffie-Hellman方法的gi和gr和nonce(为了重放保护)。在某些方法中,也要交换别的信息,这在以后讨论。注意,因为通信双方必须首先确定堵塞攻击是不可能的,所以半密钥和nonce不与最初的两个信息一起发送。交换第三和第四个信息后,通信的每一方都能够计算出除它个人的散列摘要之外,它们之间的普通秘密。普通秘密SKEYID(密钥ID)依赖于如下所示的计算方法。在等式中,prf(伪函数)是在协商阶段确定的密钥散列函数。其他普通秘密的计算如下:SKEYID_d(导出密钥)是一种创建别的密钥的密钥。SKEYlD_a是验证密钥,SKEYID_e用作加密密钥;这两种密钥都是在协商阶段使用的。分别计算出每一次密钥交换方法的第一个参数(SKEYID)。第二个参数是不同数据的串联。注意,prf的密钥总是SKEYID。通信双方也计算出两个散列摘要,散列-I和散列-R,这两种散列摘要都运用在主模式四种方法的二种当由一计算过程如下:注意,第一个摘要运用ID-I,而第二个摘要运用ID-R,两个摘要都要用SA-I,全部的SA数据都是由发起者发送的。他们当中没有一个包含由应答者选出的建议。这一想法就是要通过避免入侵者改变信息来保护由发起者发送的建议。例如,入侵者可能会试图发送更易遭受攻击的列表。同样,如果不包含SA,入侵者也许就会把选出的建议改变为对自己更为有利的形式。注意,在散列计算中,通信的一方不需要知道另一方的ID。计算出密钥和散列后,为了对它自己进行验证,通信的每一方都把散列发送给另一方。发起者把散列I发送给应答者,作为她是爱丽丝的证据。只有爱丽丝可以知道验证秘密,也只有她可以计算出散列-I。如果鲍勃后来计算出来的散列-I与爱丽丝发送的散列-I匹配,爱丽丝就通过了验证。同样,鲍勃也可以通过发送散列-R向爱丽丝验证他自己。注意,这里有一个微妙的问题。鲍勃在计算散列-I时,需要有爱丽丝的ID,反之亦然。在有些方法中,ID由以前的信息发送;在别的方法中,ID和散列一起发送,这两种情况下散列和ID都要用SKEYIDl_e加密。1预共享密钥方法在预共享密钥方法中,对称密钥用来对同等实体之间作相互验证。图9-20所示,就是主模式中的共享密钥验证。在最初的两个信息中,发起者和应答者交换cookie(在一般文件头中)和SA参数。在接下来的两个信息中,他们交换半密钥和nonces(参看第十五章)。现在,通信双方可以创建SKEYID和两个密钥散列(散列-I和散列-R)。在第五和第六个信息中,通信双方交换创建散列和他们的ID。为了保护ID和散列,最后的两个信息要用SKEYID_e来加密。注意,预共享密钥是爱丽丝(发起者)和鲍勃(应答者)之间的秘密。伊夫(入侵者)不能访问这个密钥。伊夫不能创建SICEYID,所以既不能创建散列-I也不能创建散列-R。注意,只有在第五个信息和第六个信息中交换ID后,才能计算散列。对于这种方法还有一个问题。除非鲍勃知道预共享密钥,也就是意味着他必须知道爱丽丝是谁(知道她的ID),他才能解密信息。但是,爱丽丝的ID是在第五个信息当中加过密的。这种方法的设计者认为这种情况下的ID必须是每一方的IP地址。如果爱丽丝是在一个固定的主机(IP地址是固定的)上,这就不是问题。不过,如果爱丽丝是从一个网络到另一个网络移动的,这就是问题了。2源公钥方法在源公钥方法中,发起者和应答者通过表明拥有与所公布的公钥相关的私钥来证明自己的身份。图92l所示,就是使用源公钥方法的信息交换。就像在前一种方法中那样,最初的两种信息是相同的。在第三种信息中,发起人发送它的半密钥、nonce和ID。在第四个信息中,应答者也这样做。不过,nonce和ID要用接收者的公钥加密,用接收者的私钥解密。就像我们从图9-21中看到的那样,nonce和ID要分别加密,因为,我们以后会了解到,他们是从分开的有效载荷中分别编码的。这种方法和以前的方法之间的一个不同就是,ID是在第三和第四个信息当中交换的,而不是在第五个和第六个信息中。第五和第六个信息只传送散列。在这种方法中,SKEYID的计算基于nonces和对称密钥的散列。nonces的散列用作密钥HMAC函数的密钥。注意,这里我们有一个双重散列。虽然有SKEYID,因此,散列不是直接依赖于每一方都拥有的秘密,它们之间的关系是间接的。SKEYID依赖于nonce和仅由接收者私钥(秘密)解密的nonce。所以,如果计算出的散列和接收的相匹配,那就证明通信的每一方都和它们所声称的相符。3.修正的公钥方法源公钥方法有一些缺陷。首先,在公钥加密解密这两种情况下,都给发起者和应答者增加了很重的负担。第二,发起者不能把由应答者公钥加密过的证书发送出去,因为任何人都能用一个假的证书这样做。因此就要修正这种方法,使得公钥只能用来创建临时密钥,如图9.22所示。注意,要从nonces和cookies的一个散列中创建两个临时密钥。发起者用应答者的公钥发送其nonce。应答者解密这个nonce并算出发起者的临时密钥。之后,半密钥、ID和选择证书都可以被解密。两个临时密钥,K-I和K-R的计算如下:4.数字签名方法在这种方法中,通信的每一方都表明,它拥有和数字签名相关的认证私钥。图9-23所示,就是这种方法中的交换。这与除SKEYID计算以外的预公享密钥方法相似。注意,在这种方法中,证书的发送是选择性的。因为证书可以用SKEYID_e加密,所以也可以在这里发送,不过不依赖于签名密钥。在第五个信息中,发起者用其签名密钥,对在第一到第四个信息中交换的所有信息签名。应答者用可以验证发起者的发起者公钥来验证签名。同样,在第六个信息中,应答者对在它的签名密钥中交换的所有信息签名。然后发起者验证这个签名。9.5.5阶段l:野蛮模式每一种野蛮模式都是相关主模式的压缩版。在这种模式中只交换三个信息,而不是六个。信息l和信息3组合起来生成了第一个信息。信息2、信息4和信息6组合起来生成了第二个信息。信息5如第三个信息那样发送出去。概念是相同的。1.预共享密钥方法图9-24所示,就是野蛮模式中的预共享密钥方法。注意,收到第一个信息后,应答者可以算出SKEYID,随后还可以算出散列-R。发起者直到收到第二个信息才能算出SKEYID。第三个信息中的散列-I就可以被解密。2.源公钥方法图9-25所示,就是在野蛮模式中,运用源公钥方法进行的信息交换。注意,应答者收到第一个信息后,就可以算出SKEYID和散列-R,但是发起者要收到第二个信息才行。3.修正公钥方法图9-26所示,就是野蛮模式中的修正公钥方法。除过一些组合起来的信息以外,这个概念和在主模式中的概念是相同的。4.数字签名方法图9-27所示,就是野蛮模式中的数字签名方法。除一些组合起来的信息以外,这个概念和主模式中的概念是相同的。1 8.5.6 阶段II:快速模式无论是在主模式中还是在野蛮模式中,SA创建后,阶段II就可以开始了。迄今为止,在阶段II中只定义了一种模式,那就是快速模式。这种模式是在由阶段I所创建的IKE SA监管之下的。不过,每一个快速模式都可以跟随在任意一个主模式或野蛮模式后面。这种快速模式运用IKE SA创建IPSec SA(或任何其他协议的SA)。图9-28所示,就是在快速模式中交换的信息。在阶段II中,无论哪一方都可以是发起者。那就是说,阶段II中的发起者可以是阶段I中的发起者或阶段I中的应答者。发起者发出第一个信息,这个信息包含密钥HMAC散列l(后面将作说明),整个的SA都是在阶段I创建的,包括一个新nonce(N-I)、一个选择性的新Diffie-Hellman半密钥(KE-I)和双方的选择性ID。第二个信息和第一个信息相似,但是传送的是密钥HMAC散列2和应答者nonce(N-R),如果存在的话,Diffie-Hellman半密钥是由应答者创建的。第三个信息只包含密钥HMAC散列3。信息要用三个密钥-HMAC验证:散列1、散列2和散列3。计算如下:每个HMAC都包含信息ID(MsgID),这个信息ID是在ISAKMP文件头的文件头中使用的。这样就可以在阶段II中使用多路技术。MsgID避免了在阶段II中同时创建的信息会相互冲撞。为了获得机密性,所有三个信息都要使用在阶段I中创建的SKEYlD_e加密。1完美前向安全(PFS)在阶段I中建立IKE SA并计算出SKEYID_d后,快速模式的所有密钥都来自于SKEYID_ d。因为多元的阶段II来自于单元的阶段I,如果入侵者已经访问了SKEYID_d,阶段II的安全性就面临威胁。为了避免发生这类事情,IKE允许把完美前向安全(PFS)作为一种选择。在这种选择中,要交换一个附加的Diffie-Hellman半密钥,并且在IPSec密钥材料(参写下一部分)的计算中要使用结果共享密钥(gir)。如果计算出每一个快速模式的密钥材料后,立即删除Diffie-Hellman密钥,那么PFS就是有效的。2密钥材料在阶段II的交换之后,创建了一个包含密钥材料的IPSec的SA,我们用K表示,这个SA可以运用于IPSec中。其值是这样求出来的:对于选出的特别密码来说,如果K的长度太短的话,就要创建一个密钥序列,每一个密钥都是从前面的那一个导出的,并且要把密钥串联起来,以便生成更长的密钥。我们已经说明了没有PES的情形,我们还必须要把gir加到有PES的这个例子中。创建的密钥材料是单向的。因为在每一个方向上所用的SPI是不同的,所以每一方都要创建不同的密钥材料。 阶段II后创建的密钥材料是单向的;每一个方向上都有一个密钥。9.5.7 SA算法在完成这一部分之前,我们给出在最初两个IKE交换中进行协商的算法。1. Diffie-Hellman群最初的协商包括用来交换半密钥的Diffie-Hellman群。已经定义了五个群,如表9-3所示。2散列算法用来验证的散列算法如表9-4所示。3加密算法用来增强机密性的加密算法如表9-5所示。所有这些通常都是在CBC模式中使用。9.6 ISAKMPISAKMP协议是设计用来为IKE交换传送信息的。9.6.1一般文件头一般文件头的格式如图9-29所示。发起者cookie 这个32比特的域定义实体的cookie,该实体发起SA的建立、SA的宣告或SA的删除。应答者cookie 这个32比特的域定义应答实体的cookie。在发起者发送第一个信息时,这个域的值是0。下一个有效载荷 这个8比特的域定义直接跟在文件头后面的有效载荷的类型。在下一部分中我们讨论有效载荷的不同类型。主版本 这个4比特的版本定义协议的主版本。当前,这个域的值是1。次版本 这个4比特的版本定义协议的次版本。当前,这个域的值是0。交换类型 这个8比特的域定义由ISAKMP数据包传送的交换类型。在前面的部分中我们已经讨论了几种不同的交换类型。标记 这是一个8比特的域,其中每一个位确定交换的一个选择。到现在为止,只确定了三个最不重要的位。当加密位设置为1时,就说明有效载荷的其余部分要用加密密钥和由SA确定的算法进行加密。当承诺位设置为1时,说明在SA建立之前还没有收到加密材料。当验证位设置为1时,说明有效载荷的其余部分,虽然没有加密,但验证结果信息是完整的。信息ID 这个32比特的域是唯一的定义协议状态的信息标识。这个域只在协商的 第二阶段中使用,并且在第一阶段中要把它设置为O。信息长度 因为可以把不同的载荷加到每一个数据包上,对于各个数据包来说信息的长度可以是不同的。这个32比特的域确定整个信息的长度,包含文件头和所有有效载荷。9.6.2有效载荷实际上,有效载荷是设计用来传输信息的。表9-6所示,就是有效载荷的类型。每一个有效载荷都具有一个一般的文件头和一些特殊的域。一般文件头的格式如图9-30所示。下一个有效载荷保留有效载荷长度下一个有效载荷这个8比特的域识别下一个有效载荷的类型。如果没有下一个有效载荷,这个域的值就是0。注意,没有当前的有效载荷的类型域。当前有效载荷的类型是由前面的有效载荷或一般文件头决定的(如果有效载荷是第一个)。有效载荷长度这个16比特的域定义整个有效载荷以字节为单位的长度(包括一般文件头) 1. SA有效载荷SA有效载荷是用来协商安全参数的。不过,这些参数并不包括在SA有效载荷当中;只包括在我们将在后面讨论的两个其他的有效载荷(建议和转换)中。一个SA有效载荷后面要跟随一个或更多个建议有效载荷,每一个建议有效载荷后面还要跟一个或多个转换有效载荷。SA有效载荷只定义解释域和位置域。图9-31所示,就是SA有效载荷的格式。一般文件头中的域我们已经讨论过了。下面我们就说明其他的域:解释域(DOI)这是一个32比特的域。在阶段I中,这个域的一个为0的值确定一个一般SA为l的值确定IPSec。位置这是一个可变长度的域,确定发生协商的位置。2.建议有效载荷协商的机制是由建议有效载荷发起的。虽然它本身没有提出任何参数,但是它定义了协议认证和SPI。协商的参数是在后面的转换有效载荷中发送的。每一个建议有效载荷都跟随着一个或多个转换有效载荷,这种有效载荷给出了可供选择的参数系列。建议有效载荷的格式如图9-32所示。一般文件头中的域我们已经讨论过了。下面我们就介绍其他的几种域:建议# 发起者为建议确定一个数字,以便使应答者可以参考这个数字。注意,一个SA有效载荷可以包含几个建议有效载荷。如果所有的建议都属于相同的协议系列,对这个系列中的每一个协议来说,建议数必须是相同的。否则,协议就要具有不同的建议数。协议ID 这个8比特的域确定协商的协议。例如,IKE阶段I=0,ESP=1,AH=2,等等。SPl的大小 这个8比特的域以字节为单位定SPI的大小。转换数 这个8比特的域确定跟在建议有效载荷后面的转换有效载荷的数目。SPI 这个可变长度的域实际上就是一个SPI。注意,如果SPI不填充这个32比特的空间,就不再增加扩展位。3转换有效载荷转换有效载荷实际上传送SA协商的属性。图9-33所示,就是转换有效载荷的格式。一般文件头中的域我们已经讨论过了。下面我们说明其他的域:转换# 这个8比特的域定义转换数。如果在建议有效载荷中有多于一个的转换有效载荷,那么每一个有效载荷都必须有它自己的数。转换ID 这个8比特的域定义有效载荷的标识。属性 每一个转换有效载荷都可以传送几种属性。每一种属性本身可以有三个或两个子域(参看图9-33)。属性类型子域就像在DOI中一样定义属性类型。如果存在的话,属性长度子域定义属性值的长度。属性值在短格式中是两字节,在长格式中是可变长度的。4密钥交换有效载荷密钥交换有效载荷运用于需要发送预备密钥来创建会话密钥的交换中。例如,它可以用来发送Diffie-Hellman半密钥。图l8-34所示,就是密钥交换有效载荷的格式。一般文件头中的域我们已经讨论过了。下面我们介绍一下KE域:KE 这个可变长度的域传送创建会话密钥所需要的数据。5标识有效载荷标识有效载荷允许实体相互之间发送其身份标识,图9-35所示,就是标识有效载荷的格式。一般文件头中的域我们已经讨论过了,下面就介绍别的几种域:ID类型 这个8比特的域详细说明并确定所用ID的类型。ID数据 这个24比特的域通常设置为O。标识数据 每一个实体的实际标识都是在这个可变长度的域中传送的。6证书有效载荷在交换过程中的任何时间,实体都可以发送证书(针对公共加密解密密钥或签名密钥)。虽然在这个交换过程中,是否包含证书有效载荷通常是选择性的,但是如果没有可用的安全目录来分配证书的话,还是要涉及到证书有效载荷。图9-36所示,就是证书有效载荷的格式。我们已经讨论了一般文件头中的域,下面就介绍别的几种域。证书编码 这个8比特的域,定义证书的编码(类型)。表9-7所示,就是到目前为止已经定义的类型。证书数据 这个可变长度的域传送证书的实际值。注意,前面的域已经决定了这个域的大小。7证书请求有效载荷每一个实体都可以运用证书请求有效载荷明确地向别的实体请求一个证书。图9-37所示,就是这种载荷的格式。我们已经讨论了一般文件头中的域。下面就讨论别的几种域:证书类型这个8比特的域就像在前面证书有效载荷中那样,定义证书的类型。认证机关这是一个可变长度的域,定义所发证书类型的权威性。8散列有效载荷散列有效载荷包含由散列函数生成的数据,就像我们在IKE交换中描述的那样。散列数据保证ISAKMP状态的信息或机构的完整性。图9-38所示,就是这种散列有效载荷的格式。我们已经讨论了一般文件头中的域。下面讨论一下最后的域:散列数据 这个可变长度的域传送散列数据,这些数据是把散列函数应用于 ISAKMP状态下的信息和端口生成的。9签名有效载荷签名有效载荷包含一些数据,这些数据是把数字签名程序应用于一些信息端口或ISAKMP状态生成的。图9-39显示了签名有效载荷的格式。我们已经讨论了一般文件头巾的域。下面就介绍一下最后的域。签名 这个可变长度的域传送把签名应用于信息端口或ISAKMP状态产生的摘要。10nonce有效载荷nonce有效载荷包含作为nonce,可以确保信息新鲜性并包含了可以使信息避免重放攻击的随机数。图9-40显示了nonce有效载荷的格式。我们已经讨论了一般文件头中的域。下面介绍最后一个域:nonce这是一个可变长度的域,可以传送nonce的值。11通告有效载荷在协商过程中,有时通信的一方需要把状态和错误通知其他各方。通告有效载荷的设计就是为了这两
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年新疆甜菜种植与糖厂收购合同协议
- 2025年贵州社区工作者考试复习重点试题(附答案)
- 大学分层考试题目及答案
- 2025年广西忻城县卫生系统招聘考试(护理学专业知识)题含答案
- 商务谈判策略与合同签订模板
- 企业社会责任与环保意识提升互动方案
- 湖北警方考试题库及答案
- 消防国考考试试卷及答案
- 中医骨二科考试题及答案
- 软通动力 笔试题及答案
- 保安投诉管理制度
- 2025年高考江苏卷物理真题(原卷版)
- 【公开课】种子植物+第2课时课件-2024-2025学年人教版生物七年级上册
- 2024年贵州贵州贵安发展集团有限公司招聘笔试真题
- 人教部编版四年级上册语文第1单元(看拼音写词语)
- 房屋在别人名下协议书
- TSGR0005-2011移动式压力容器安全技术监察规程现行
- 智能型大型变压器企业数字化转型与智慧升级战略研究报告
- 幼儿园九一八爱国教育
- 农家乐消防知识培训课件
- 养老院突发事件应急预案演练计划
评论
0/150
提交评论