在前一章讲解了IPSec采用的安全技术,那什么是IPSec安全协议呢?本章将会很透彻的讲解IPSec安全协议。
IPSec在IP层提供安全服务,它使系统能按需选择安全协议,决定服务所使用的算法及放置需求服务所需密钥到相应位置。IPSec用来保护一条或多条主机与主机间、安全网关与安全网关间、安全网关与主机间的路径。
IPSec能提供的安全服务集包括访问控制、无连接的完整性、数据源认证、拒绝重发包(部分序列完整性形式)、保密性和有限传输流保密性。因为这些服务均在IP层提供,所以任何高层协议均能使用它们,例如TCP、UDP、ICMP、BGP等。
这些目标是通过使用两大传输安全协议,头部认证(AH)和封装安全负载(ESP)以及密钥管理程序和协议的使用来完成的。
所需的IPSec协议集内容及其使用方式是由用户、应用程序和/或站点、组织对安全和系统的需求来决定。
IPSec结构包括众多协议和算法,这些协议之间的相互关系如图所示。
由图可知,IPSec协议不是一个单独的协议,它给出了应用于IP层上网络数据安全的一整套体系结构。
IPSec规定了如何在对等层之间选择安全协议、确定安全算法和密钥交换,向上提供访问控制、数据源认证、数据加密等网络安全服务。
IPSce提供了两种机制:认证和加密
认证机制使IP通信的数据接收方能够确认数据发送方的真实身份,以及数据在传输过程中是否遭篡改。加密机制通过对数据进行编码来保证数据的机密性,以防数据在传输过程中被窃听。
其中,AH协议定义了认证的应用方法,提供数据源认证和完整性保证:ESP协议定义了加密和可选认证的应用方法,提供可靠性保证。
在实际进行IP通信时,可以根据实际需求同时使用这两种协议或选择使用其中的一种。AH和ESP都可以提供认证服务,不过,AH提供的认证服务要强于ESP。
Authentication Header(AH)协议主要提供认证机制,保证数据包接收者得到的源地址是可靠的,同时也提供了数据的完整性,抗重播攻击的能力。
它使通信免受篡改,但不能防止窃听,适合用于传输非机密数据。
AH的工作原理是在每一个数据包上添加一个身份验证包头。
此包头包含一个带密钥的Hash散列(可以将其当做数字签名,只是它不使用证书),此Hash散列在整个数据包中计算,因此对数据的任何更改将致使散列无效,提供对数据的完整性保护。
AH包头位置在IP包头和传输层协议包头之间,如图所示。AH由IP协议号“51”标识,该值包含在AH包头之前的协议包头中,如IP包头。AH可以单独使用,也可以与ESP协议结合使用。
AH由5个固定长度域和一个变长的认证数据域组成,如图所示。
其中的字段意义如下。
ICV,全称integrity check value。是在对无格式文本安全列表和补充的计算得到的,用于信息安全的完整性检查。ICV的算法是32位的自身反码加法,每个32位块跟随32个0位。
如图3-5所示,在传输模式下,AH包头插在IP包头之后,TCP、UDP或者ICMP等上层协议包头之前。
一般AH为整个数据包提供完整性检查,但是在传输过程中,某些IP头字段会发生变化,且发送方无法预测数据包到达接收端时此字段的值。
例如生存期(Time To Live)或服务类型(Type of Service)等值可变字段(可变字段如图3-6中灰色字段),在进行完整性检查时,应将这些值的可变字段置为0。AH尽可能为IP头和上层协议数据提供足够多的认证,但AH并不能保护可变字段值,因此,AH提供给IP头的保护有些是零碎的。
通常,当用于IPv6时,AH出现在IPv6逐跳路由头之后,IPv6目的选项之前;而用于IPv4时,AH跟随主IPv4头。
以上介绍的是传输模式下的AH协议,AH隧道模式与传输模式略有不同。