“Internet 协议安全性 (IPSec)”是一种开放标准的框架结构,通过使用加密的安全服务以确保在 Internet 协议 (IP) 网络上进行保密而安全的通讯。Microsoft® Windows® 2000Windows XP Windows Server 2003 家族实施 IPSec 是基于“Internet 工程任务组 (IETF)”IPSec 工作组开发的标准。

IPSec 是安全联网的长期方向。它通过端对端的安全性来提供主动的保护以防止专用网络与 Internet 的***。在通信中,只有发送方和接收方才是唯一必须了解 IPSec 保护的计算机。在 Windows XP Windows Server 2003 家族中,IPSec 提供了一种能力,以保护工作组、局域网计算机、域客户端和服务器、分支机构(物理上为远程机构)、Extranet 以及漫游客户端之间的通信。

 

ipsec 提供两种数据包格式

AH authentication head   51  保证数据的完整性以及认证 不能加密 是使用单向的 hash 算法进行加密

ah 报文放到 ip 数据包头与传输层数据的中间,通过加密算法进行计算出来的一个 ah 头,这样保证数据在传输中不能被篡改。

100117012604.jpg
·Next Header (下一个报头): 识别下一个使用 IP 协议号的报头,例如, Next Header 值等于 "6" ,表示紧接其后的是 TCP 报头。
   ·Length (长度): AH 报头长度。
   ·Security Parameters Index (SPI ,安全参数索引 ) 这是一个为数据报识别安全关联的 32 位伪随机值。 SPI 0 被保留来表明 " 没有安全关联存在 "
   ·Sequence Number (序列号):从 1 开始的 32 位单增序列号,不允许重复,唯一地标识了每一个发送数据包,为安全关联提供反重播保护。接收端校验序列号为该字段值的数据包是否已经被接收过,若是,则拒收该数据包。
   ·Authentication Data AD ,认证数据): 包含完整性检查和。接收端接收数据包后,首先执行 hash 计算,再与发送端所计算的该字段值比较,若两者相等,表示数据完整,若在传输过程中数据遭修改,两个计算结果不一致,则丢弃该数据包。

esp encapsolution security payload  50 保证数据的负载加密 同样也保证完整性以及认证,超级 AH" 因为它提供机密性并可防止篡改。 ESP 服务依据建立的安全关联( SA )是可选的。然而,也有一些限制:
  
   · 完整性检查和认证一起进行。
   · 仅当与完整性检查和认证一起时, " 重播( Replay " 保护才是可选的。
   ·" 重播 " 保护只能由接收方选择。

100117012627.jpg
esp 在选择了加密的同时 也提供了数据包的安全性检查以及认证

如图可以看到 esp 是在 ip 报头以后添加 esp 报头 然后在应用数据以后添加 esp 包尾提供完整性,最后加上 esp 认证包尾完成认证功能。

100117012642.jpg
可以看到 esp 报头 esp 包尾是用来进行安全性检查的   应用程序数据和 esp 包尾进行了加密。

ESP 报头的位置在 IP 报头之后, TCP UDP ,或者 ICMP 等传输层协议报头之前。如果已经有其他 IPSec 协议使用,则 ESP 报头应插在其他任何 IPSec 协议报头之前。 ESP 认证报尾的完整性检查部分包括 ESP 报头、传输层协议报头,应用数据和 ESP 报尾,但不包括 IP 报头,因此 ESP 不能保证 IP 报头不被篡改。 ESP 加密部分包括上层传输协议信息、数据和 ESP 报尾。

ESP 隧道模式和 AH 隧道模式

在隧道模式下,整个原数据包被当作有效载荷封装了起来,外面附上新的 IP 报头。其中 " 内部 "IP 报头(原 IP 报头)指定最终的信源和信宿地址,而 " 外部 "IP 报头(新 IP 报头)中包含的常常是做中间处理的安全网关地址。

100117012701.jpg
下面是 ah 的隧道模式:

100117012819.jpg
Internet 密钥交换( IKE   internet key exchange

两台 IPSec 计算机在交换数据之前,必须首先建立某种约定,这种约定,称为 " 安全关联 "

安全关联 SA Security Association )是单向的,在一次通信中, IPSec 需要建立两个 SA ,一个用于入站通信,另一个用于出站通信。若某台主机,如文件服务器或远程访问服务器,需要同时与多台客户机通信,则该服务器需要与每台客户机分别建立不同的 SA 。每个 SA 用唯一的 SPI 索引标识,当处理接收数据包时,服务器根据 SPI 值来决定该使用哪种 SA

第一阶段 SA (主模式 SA ,为建立信道而进行的安全关联)

并对该信道进行认证,为双方进一步的 IKE 通信提供机密性、数据完整性以及数据源认证服务;第二阶段,使用已建立的 IKE SA 建立 IPsec SA 。分两个阶段来完成这些服务有助于提高密钥交换的速度。 第一阶段协商(主模式协商)步骤:

1 .策略协商,在这一步中,就四个强制性参数值进行协商:

1 )加密算法:选择 DES 3DES

2 hash 算法:选择 MD5 SHA

3 )认证方法:选择证书认证、预置共享密钥认证或 Kerberos v5 认证

4 Diffie-Hellman 组的选择

DH 交换

虽然名为 " 密钥交换 " ,但事实上在任何时候,两台通信主机之间都不会交换真正的密钥,它们之间交换的只是一些 DH 算法生成共享密钥所需要的基本材料信息。 DH 交换,可以是公开的,也可以受保护。在彼此交换过密钥生成 " 材料 " 后,两端主机可以各自生成出完全一样的共享 " 主密钥 " ,保护紧接其后的认证过程。

3
.认证 DH 交换需要得到进一步认证,如果认证不成功,通信将无法继续下去。 " 主密钥 " 结合在第一步中确定的协商算法,对通信实体和通信信道进行认证。在这一步中,整个待认证的实体载荷,包括实体类型、端口号和协议,均由前一步生成的 " 主密钥 " 提供机密性和完整性保证。

第二阶段 SA (快速模式 SA ,为数据传输而建立的安全关联)

这一阶段协商建立 IPsec SA ,为数据交换提供 IPSec 服务。第二阶段协商消息受第一阶段 SA 保护,任何没有第一阶段 SA 保护的消息将被拒收。

第二阶段协商(快速模式协商)步骤:

1
.策略协商,双方交换保护需求:

·
使用哪种 IPSec 协议: AH ESP

·
使用哪种 hash 算法: MD5 SHA

·
是否要求加密,若是,选择加密算法: 3DES DES 在上述三方面达成一致后,将建立起两个 SA ,分别用于入站和出站通信。

2
.会话密钥 " 材料 " 刷新或交换

在这一步中,将生成加密 IP 数据包的 " 会话密钥 " 。生成 " 会话密钥 " 所使用的 " 材料 " 可以和生成第一阶段 SA " 主密钥 " 的相同,也可以不同。如果不做特殊要求,只需要刷新 " 材料 " 后,生成新密钥即可。若要求使用不同的 " 材料 " ,则在密钥生成之前,首先进行第二轮的 DH 交换。

3
SA 和密钥连同 SPI ,递交给 IPSec 驱动程序。

第二阶段协商过程与第一阶段协商过程类似,不同之处在于:在第二阶段中,如果响应超时,则自动尝试重新进行第一阶段 SA 协商。

第一阶段 SA 建立起安全通信信道后保存在高速缓存中,在此基础上可以建立多个第二阶段 SA 协商,从而提高整个建立 SA 过程的速度。只要第一阶段 SA 不超时,就不必重复第一阶段的协商和认证。允许建立的第二阶段 SA 的个数由 IPSec 策略属性决定。