IPSec IKE-ISAKMP-DH AH-ESP MD5-SHA1 DES-3DES-AES-RSA

http://www.manew.com/blog-166065-16404.html
http://blog.csdn.net/bytxl/article/details/16825251
http://www.h3c.com.cn/service/channel_service/operational_service/icg_technology/201005/675214_30005_0.htm
http://www.voidcn.com/blog/bytxl/article/p-4727117.html


IPsec(IP Security)是IETF制定的三层隧道加密协议,它为Internet上传输的数据提供了高质量的、可互操作的、基于密码学的安全保证.
IPsec由4部分组成,如下图:
- IKE:Internet Key Exchange Protocol,用于通信双方交换密钥;
- SA:Security Associations, 负责将安全服务与使用该服务的通信流相联系的安全关联;
- AH,ESP:Authentication Header,Encapsulated Security Payload,用于提供安全服务;
- 认证、加密算法:

IPSec <wbr>IKE-ISAKMP-DH <wbr>AH-ESP <wbr>MD5-SHA1 <wbr>DES-3DES-AES-RSA

1. IKE
IKE使用了两阶段的ISAKMP协议
Phase1:协商创建一个通信通道(IKE SA), 并对该信道进行验证,为双方进一步的IKE通信提供机密性、消息完整性以及消息源验证服务;
Phase2:第二阶段,使用已建立的IKE SA建立IPsec SA(V2中叫Child SA)

ISAKMP:Internet Security Association and Key Management Protocol, Internet 安全关联和密钥管理协议 在这个框架中,安全关联是指两个网络实体间共享的一组安全属性,比如加密算法和模式等.

从宏观上来看,ISAKMP主要做了三件事情:

1.      SA协商

2.      密钥交换

3.      认证

SA协商的目的是为了在通信双方间协商出一组双方都认可的安全参数。比如两端采用相同的加密算法和完整性算法。

密钥交换的目的是为已经协商好的算法生成必要的密钥信息。

认证的目的是鉴别对方的身份,保证自己不是在跟一个伪造的对象通信。


一般有两种方式。第一种叫做密钥传输,第二种叫做密钥生成。

密钥生成与密钥传输有着本质的不同。由于密钥是不在网络上传输的,这样,即便一个攻击者截取了密钥交换信息,也无法取得密钥。密钥生成通常使用Diffie-Hellman算法。首先通信的双方各自独立的生成一个私钥,记为Xi和Xr。然后利用Xi和Xr生成可以公开的密钥信息Yi和Yr。双方交换Yi和Yr,于是发起端拥有Xi和Yr,而接收端拥有Yi和Xr。利用这些信息和DH算法,两端就可以生成相同的密钥。


DH算法最大的一个缺陷在于,它无法防止中间人攻击,因此需要认证。

ISAKMP一般使用UDP传输,port为500;


2.SA - Security Association

SA是IPsec的基础。IPsec在两个端点(end point)之间提供安全通信,SA是两个端点之间某些参数的约定。

比如:

- 使用哪种协议,AH,ESP,还是二者同时;

- 认证算法,MD5,还是SHA1等;

- 加密算法,DES,3DES,还是其它;

- 协议的封装模式,传输模式还是隧道模式;

- 特定流中的Key,以及Key的生存周期;


SA是单向的,连个端点需要双向通信时,至少需要一对SA;

如果需要同时使用AH和ESP,那么每个端点都需要针对AH和ESP建立单独的SA,即双向通信时需要2对SA;


SA的建立方式:

- 手工建立;

- IKE自动协商建立;


SA的生存周期

- 手工建立,永久的;

- IKE自动建立的SA,有两种生存周期,基于时间的和基于流量的,分别在达到一定时长或者流量的情况下过期;


3. AH和ESP

AH(authentication header)和ESP(Encapsulating Security Payload)用于提供安全服务。

IPsec协议中的:

AH协议定义了认证的应用方法,提供数据源认证和完整性保证;IP协议号为51,认证算法有MD5,SHA1等;

ESP协议定义了加密和可选认证的应用方法,提供数据可靠性保证;IP协议号为50,加密算法有DES,3DES,AES等,作为可选项,可以使用MD5,SHA1等进行认证;

AH和ESP都可以提供认证服务,不过,AH提供的认证服务要强于ESP。同时使用AH和ESP时,设备支持的AH和ESP联合使用的方式为:先对报文进行ESP封装,再对报文进行AH封装,封装之后的报文从内到外依次是原始IP报文、ESP头、AH头和外部IP头。

IPSec <wbr>IKE-ISAKMP-DH <wbr>AH-ESP <wbr>MD5-SHA1 <wbr>DES-3DES-AES-RSA


AH:

IPSec <wbr>IKE-ISAKMP-DH <wbr>AH-ESP <wbr>MD5-SHA1 <wbr>DES-3DES-AES-RSA

next hdr 下一个报头:使用 IP 协议 ID来标识 IP 负载,。从下图可知,表示被AH协议包含的那一个协议的类型。例如,TCP数据中,传输模式值 6 表示 TCP,隧道模式表示下一个报头为IP报头。

AH len 长度:表示 AH 报头的长度。

Reserved 保留字段

SPI 安全参数索引 :与目标地址及安全协议(AH 或 ESP)组合使用,以确保通信的正确安全关联。接收方使用该值确定数据包是使用哪一安全关联标识的。

Sequence Number 序数 :为该数据包提供抗重播保护。序数是 32 位、递增的数字(从 1 开始),它表示通过通信的安全关联所发送的数据包数。在快速模式安全关联的生存期内序列号不能重复。接收方将检查该字段,以确认使用该数字的安全关联数据包还没有被接收过。如果一个已经被接收,则数据包被拒绝。

 

Authentication Data 身份验证数据 :包含完整性校验值 (ICV),也称为消息身份验证码,用于验证消息身份验证与完整性。接收方计算 ICV 值并对照发送方计算的值校验它,以验证完整性。ICV 是通过 IP 报头、AH 报头与 IP 负载来计算的。AH可对整个数据包(IP 报头与数据包中的数据负载)提供身份验证、完整性与抗重播保护。所以不论是传输模式还是隧道模式,AH协议都不能穿越nat设备。



下图中黄色部分表示被AH协议签名保护的部分。

ipsec协议的操作模式

 

在传输模式下,AH或 ESP被插入到IP头之后但在所有传输层协议之前,或所有其他 IPSec协议之前。

在隧道模式下,AH或 ESP插在原始 IP头之前,另外生成一个新IP头放到 AH或 ESP之前。不同安全协议在传输模式和隧道模式下的数据封装形式(传输协议以 TCP为例)如下图所示:

IPSec <wbr>IKE-ISAKMP-DH <wbr>AH-ESP <wbr>MD5-SHA1 <wbr>DES-3DES-AES-RSA


IPSec <wbr>IKE-ISAKMP-DH <wbr>AH-ESP <wbr>MD5-SHA1 <wbr>DES-3DES-AES-RSA


IPSec <wbr>IKE-ISAKMP-DH <wbr>AH-ESP <wbr>MD5-SHA1 <wbr>DES-3DES-AES-RSA


ESP:

IPsec 封装安全负载(IPsec Encapsulating Security Payload)是 IPsec 体系结构中的一种主要协议,其主要设计来在 IPv4 和 IPv6 中提供安全服务的混合应用。IPsec ESP 通过加密需要保护的数据以及在 IPsec ESP 的数据部分放置这些加密的数据来提供机密性和完整性。且ESP加密采用的是对称密钥加密算法,能够提供无连接的数据完整性验证、数据来源验证和抗重放攻击服务。根据用户安全要求,这个机制 既可以用于加密一个传输层的段(如:TCP、UDP、ICMP、IGMP),也可以用于加密一整个的 IP 数据报。封装受保护数据是非常必要的,这样就可以为整个原始数据报提供机密性。

 

ESP 头可以放置在 IP 头之后、上层协议头之前 (传输层),或者在被封装的 IP 头之前 (隧道模式)。IANA 分配给 ESP 一个协议数值 50,在 ESP 头前的协议头总是在“next head”字段(IPv6)或“协议”(IPv4)字段里包含该值 50。 ESP 包含一个非加密协议头,后面是加密数据。该加密数据既包括了受保护的 ESP 头字段也包括了受保护的用户数据,这个用户数据可以是整个 IP 数据报,也可以是 IP 的上层协议帧(如:TCP 或 UDP)。

封闭安全载荷ESP包格式

ESP不仅为IP 负载提供身份验证、完整性和抗重播保护,还提供机密性传输模式中的 ESP 不对整个数据包进行签名。只对IP 负载(而不对IP 报头)进行保护。ESP 可以独立使用,也可与 AH 组合使用。

ESP属于IPSec的一种协议,ESP提供机密性、数据起源验证、无连接的完整性、抗重播服务和有限业务流机密性。ESP本身是一个IP协议,协议号是50


IPSec <wbr>IKE-ISAKMP-DH <wbr>AH-ESP <wbr>MD5-SHA1 <wbr>DES-3DES-AES-RSAESP头包含下面一些字段:

SPI 安全参数索引32位):这个值,和IP头之前的目标地址以及协议结合在一起,用来标识用于处理数据包的特定的那个安全关联。SPI本身是个任意数,一般是在IKE交换过程中由目标主机选定的。

Sequence Number 序列号(32位):序列号是一个独一无二的、单向递增的、并由发送端插在ESP头的一个号码。发送方的计数器和接收方的计数器在一个SA建立时被初始化为0,使用给定SA发送的第一个分组的序列号为1如果激活抗重播服务(默认地),传送的序列号不允许循环。因此,在SA上传送第232个分组之前,发送方计数器和接收方计数器必须重新置位(通过建立新SA和获取新密钥),序列号使ESP具有了抵抗重播攻击的能力。

受保护数据(可变):通过加密保护的传输层协议内容(传输模式)或IP包(隧道模式)。如果受保护数据需要加密同步数据,那么初始化向量IV可以在受保护数据字段的开头携带,并且IV通常不加密,但经常被看作是密文的一部分。

填充(0~255字节):主要用于加密算法要求明文使某个数目字节的倍数、保证填充长度字段和下一个头字段排列在32位字的右边、提供部分业务流机密性。

填充长度(8位):指出填充字节的数目。

下一个头(8位):标识受保护数据的第一个协议头。例如,IPv6中的扩展头或者上层协议标识符。

验证数据(可变):完整性检查值。验证数据是可变长字段,它包含一个完整性校验值(ICV),ESP分组中该值的计算不包含验证数据本身。字段长度由选择的验证函数指定。验证数据字段是可选的,只有SA选择验证服务,才包含验证数据字段。验证算法规范必须指定ICV长度、验证的比较规则和处理步骤。

 

ESP 验证尾端(即上面的验证数据)包含下列字段:

身份验证数据:包含完整性校验值 (ICV),也称为消息身份验证码,用于验证消息身份验证与完整性。接收方计算 ICV 值并对照发送方计算的值校验它,以验证完整性。ICV 是通过 ESP 报头、负载数据与 ESP 尾端计算的。

数据包签名与加密:ESP 可为 IP 负载提供保护。数据包的签名部分表示数据包的完整性和身份验证签名是在哪里进行的。数据包的加密部分表示什么信息受到机密性保护。

ESP在传输模式时会保护TCP/UDP头,但是并不保护IP 头,因此修改IP 地址并不会破坏整个数据包的完整性。但是如果数据包是TCP/UDP数据包,NAT设备就需要修改数据包的校验值,而这个校验值是被ESP 所保护的,这样却会导致完整性校验失败。所以ESP在传输模式不能用于NAT穿越。

ESP在隧道模式下, NAT会修改新增的IP头,新增IP协议的数据时ESP,就不需要想TCP/UDP一样修改ESP的验证,所以最终能和NAT一起工作的只能是隧道模式下的ESP。


IPSec <wbr>IKE-ISAKMP-DH <wbr>AH-ESP <wbr>MD5-SHA1 <wbr>DES-3DES-AES-RSA


IPSec <wbr>IKE-ISAKMP-DH <wbr>AH-ESP <wbr>MD5-SHA1 <wbr>DES-3DES-AES-RSA


  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值