第9讲网络层的安全性.docx
《第9讲网络层的安全性.docx》由会员分享,可在线阅读,更多相关《第9讲网络层的安全性.docx(36页珍藏版)》请在冰豆网上搜索。
第9讲网络层的安全性
第9讲网络层的安全性:
IPSec
目录
9.1两种模式1
9.2两个安全协议2
9.2.1验证文件头(AH)2
9.2.2封装安全载荷(ESP)3
9.2.3IPv4和IPv63
9.2.4AH和ESP3
9.2.5IPSec提供的服务4
9.3安全关联4
9.3.1安全关联的概念5
9.3.2安全关联数据库(SAD)5
9.4安全策略5
9.5互联网密钥交换(IKE)6
9.5.1改进的Diffie-Hellman密钥交换7
9.5.2IKE阶段8
9.5.3阶段和模式8
9.5.4阶段I:
主模式9
9.5.5阶段l:
野蛮模式10
18.5.6阶段II:
快速模式11
9.5.7SA算法12
9.6ISAKMP12
9.6.1一般文件头12
9.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的验证数据要加在数据包的末尾,这样就可以使它的计算更容易。
图9—8所示,就是ESP文件头和文件尾的位置。
在IP数据报传输一个ESP文件头和文件尾的时候,IP文件头中的协议域的值是50。
ESP文件尾中的一个域(下一个文件头域)保存协议域(由IP数据报传输的有效载荷的类型,如TTCP或UDP)的初始值。
ESP程序遵循以下步骤:
(1)把一个ESP文件尾加在有效载荷上。
(2)对有效载荷和文件尾加密。
(3)加上ESP文件名。
(4)运用ESP文件头、有效载荷和ESP文件尾创建验证数据。
(5)把验证数据加在ESP文件尾的末尾。
(6)协议值改变为50后,加上文件头。
文件头域和文件尾域如下。
·安全参数索引这个32比特的安全参数索引域与由AH协议定义的域相同。
·序列号这个32比特的序列号域与AH协议定义的域相同。
·扩展位把这个0s的可变长度的域(0~255字节)当作扩展位。
·扩展位长度这个8比特的附加长度域确定扩展位的数目。
其值在0~255之间,很少出现最大值。
·下一个文件头这个8比特的下一个文件头域与在AH协议中定义的域相同。
在封装之前,它的作用和IP文件头中的协议域相同。
·验证数据最后,验证数据域是把验证方案应用于数据报的某些部分的结果。
要注意AH中和ESP中验证数据的不同。
在AH中,IP文件头的部分包含在验证数据的计算中;在ESP中,则不是这样。
ESP提供源验证、数据完整性和机密性。
9.2.3IPv4和IPv6
IPSec支持IPv4和IPv6。
不过,在IPv6中,AH和ESP是扩展文件头的部分。
9.2.4AH和ESP
ESP协议是在AH协议投入使用以后才设计出来的。
不管AH是否具有附加的作用(机密),ESP总是起作用的。
问题是,我们为什么需要AH呢?
答案是我们不需要。
不过,A的使用总是包含在一些商业性的产品中,这就意味着AH还将保留在互联网的部分中,到这些商业产品逐步停止。
9.2.5IPSec提供的服务
两个协议,AH和ESP,都可以为互联网上的数据包提供几种安全服务。
表9.1所厅就县对每一种协议都可用的服务列表。
1.访问控制
IPSec运用安全关联数据库(SAD)间接地提供访问控制,我们在以后将要了解到。
当一个数据包到达目的端时,如果还没有为这个数据包建立安全关联,那这个数据包就被丢弃了。
2.信息完整性
信息完整性是保存在AH和ESP中的。
数据摘要是由发送者创建并发送的,由接收者检查。
3.实体验证
发送者发出来的安全关联和数据的密钥散列摘要,可以在AH和ESP中验证数据的发送者。
4.机密性
在ESP中,信息的加密提供了机密性。
不过,AH不提供机密性。
如果需要机密性,我们就应当使用ESP,而不是AH。
5.重放攻击的防护
在这两种协议中,都是通过使用序列号和滑动接收窗口来避免重发攻击的。
安全关联建立后,每一个IPSec文件头只包含一个唯一的序号。
这个数字从0开始,直到
-1(序号域的大小是32比特)。
当序号达到最大值时,再重新设置为0,同时,要删除旧的安全关联(参看下一部分),要建立新的安全关联。
为了避免处理重复数据包,IPSec要求在接收者这一方使用固定大小的窗口。
窗口的大小是由接收者用默认值64决定的。
图9-9所示,就是一个重放窗口。
固定大小的窗口用W表示。
遮蔽数据包表示已接收并检查和验证过的数据包。
当一个数据包到达接收端时,根据序列号值,下面三件事情当中有一件要发生:
(1)数据包的序列号小N。
这就把数据包放在了窗口的左端。
这样,数据包就被丢弃了。
这个数据包要不是重复的,要不就是到达时间超时。
(2)数据包的序列号N和(N+W-1)之间(包含这两个值)。
这就把数据包放到了窗口中。
这样,如果数据包是新的(没有标记的)并通过了验证测试,序列号是标记过的,数据包就接收。
否则,就丢弃。
(3)数据包的序列号大于(N+W-1)。
这就把数据包放到了窗口的右侧。
这样,如果数据包已经验证,相关序列号是标记过的,并且窗口滑到右侧覆盖了新标记过的序列号。
否则,这个数据包就要丢弃。
注意,数据包的序列号远大于(N+W)(离窗口的右边缘很远1也是有可能的。
这样,窗口的滑动也许会引起许多未标记的数字落在窗口的左侧。
这些数据包到达时不能接收,它们已经超时。
例如,在图9—9中,如果序列号为(N+W+3)的数据包到达,窗口就滑动并且其左侧边缘在(N+3)的开端。
这就意味着现在的序列号(N+2)不在窗口中。
如果这种序列号的数据包到达,就要丢弃。
9.3安全关联
安全关联是IPSec非常重要的一个方面。
在两个主机之间,IPSec需要有一个称为安全关联(SA)的逻辑关系。
在这一部分中,我们首先讨论这个概念,然后说明在IPSec中怎样使用安全关联。
9.3.1安全关联的概念
安全关联是通信双方之间的一个契约,可以在通信双方之间创建一个安全信道。
我们假定爱丽丝需要与鲍勃进行单向通信。
如果爱丽丝和鲍勃只对安全方面的机密性有兴趣,他们就可以得到一个他们之间的共享的密钥。
我们就可以说在爱丽丝和鲍勃之间有两个安全关联(SA):
一个是输出SA,一个是输入SA。
每一种安全关联都把密钥值储存在另一种安全关联的加密/解密算法的名称和变量中。
爱丽丝运用这种算法和密钥加密发给鲍勃的信息;当需要对来自爱丽