2009-4-5 追风 转载请注明出处。
本文主要参考英文版IPsec HOWTO
IPsec安全技术全接触
本篇为IPsec HOWTO的第二部分,介绍IPsec的两种协议AH和ESP。
IPsec协议IPsec
协议有两种:Authentication Header (AH,认证头标) and Encapsulated Security Payload
(ESP,封装化安全净荷)。这两种协议都是独立的IP协议,是IP协议的扩展。AH是IP协议51,ESP是IP协议50(可以查看/etc
/protocols得知),一下两小节将会分别阐述两种协议。
AH-认证头标(Authentication Header)AH
协议功能是保护IP包的完整性。AH协议通过计算HMAC(hash message authentication
codes)来实现保护完整性。AH协议是基于安全密钥,数据包负载,以及IP头中不可改变的部分来计算HMAC的。然后把AH头加到IP数据包上。不同
模式下,AH头添加的位置不同,参看图1。
AH头的总长度为24bytes,下面介绍AH头中包含的内容,参看图2
图2 AH头结构
Next
Header:该处填写的是一个数值,该数值表示下一个头的协议类型。例如,在通道模式中,此处数值为4,表示下一个头是IP头。因为通道模式中,新的
IP包头及IPsec协议包头(AH,ESP)将会封装整个原始IP数据包,那么在AH头后面跟的另一个头即是IP头,如图3
图3 通道模式数据包
在传输模式中,此处值为6,表示下一个是TCP头。因为传输模式是将IPsec协议包头(AH,ESP)插入IP和TCP头之间,如图4
图4 传输模式数据包
Payload Length:IP数据包中载荷的长度。
Reserved:跟在Payload Length之后是保留出来的2 bytes。
Security Parameter Index(SPI):安全参数索引,一个32bit的号码,用于识别和索引SAD中的SA。
Sequence Number:每个IP数据包独有的32bit序列号,用于抵御replay攻击。
Hash Message Authentication Code(HMAC):AH头的最后96bit存放HMAC。
注
意:一旦使用AH协议保护IP数据包,并且保护的内容还包括IP包头中固定不变的部分(IP地址)时,AH协议是无法通过NAT(网络地址传输设备)的,
即如果发送端和接收端之间有网络地址传输设备,则两端之间的AH通道将不能建立。因为发送端将用IPsec协议(AH,ESP)封装好的新IP数据包发给
NAT设备后,NAT设备会用另一个IP地址来替换新IP数据包包头中的IP地址,然后再将该包发送到接收端。此时接收端接受到包后,利用协商好的算法计
算HMAC,计算出的HMAC必然与AH头中存放的HMAC不同(因为IP地址变了,HMAC的计算是基于IP地址的),则接受失败,包被丢弃。
ESP-封装化安全净荷 (Encapsulated Security Payload)ESP协议既可以通过HMAC来保证文件的完整性,也可以通过对IP数据包中数据加密来保证文件的机密性。下面介绍AH头中包含的内容,参看图5
图5 ESP头结构
Security Parameter Index(SPI):安全参数索引,一个32bit的号码,用于识别和索引SAD中的SA。
Sequence Number:每个IP数据包独有的32bit序列号,用于抵御replay攻击。
Initialization Vector:用于加密,一共2bytes。这个数据保证了两个完全相同的IP数据包载荷在使用相同的加密算法加密后,得到的加密数据是不同的。
Padding:IPsec的加密过程是块加密,所以如果Date的内容长度不是块长度倍数的话,则需要补齐。
Padding Length:记录补充部分的长度。
Next Header:下一个头的协议类型,参看AH头结构介绍。
Hash Message Authentication Code(HMAC):ESP头的最后96bit存放HMAC。与AH协议不同的是,
此处HMAC的计算只是用了原始IP数据包的负载部分(数据部分),没有用IP地址。所以NAT设备不会影响ESP协议的数据传输, 但是需要正确配置才能使用(NAT-Traverasl )。
注意:在多数情况下,NAT对于IPsec协议的通信还是有影响的。NAT-Traverasl 提供了一个解决方案,即把ESP封装的包在封装到UDP协议中。
阅读(1500) | 评论(0) | 转发(0) |