概述

IPsec是IP Security的简称。IPsec不是具体指哪个协议,而是一组开放的基于网络层的,应用密码学的安全通信协议族,它是IETF制定的,在IP层对IP报文提供安全服务,目标是为IP提供高安全性的特性。
IPsec本身定义了如何在IP数据中增加字段来保证IP包的完整性、私有性和真实性。

IPsec协议族

IPsec协议族

IPsec协议族相关的RFC

RFC 内容
2401 IPsect体系结构
2402 AH(Authentication Header)协议
2403 HMAC-MD5-96在AH和ESP中的应用
2404 HMAC-SHA-1-96在AH和ESP中的应用
2405 DES-CBC在ESP中的应用
2406 ESP(Encapsulating Security Payload)协议
2407 IPsec DOI
2408 ISAKMP协议
2409 IKE(Internet Key Exchange)协议
2410 NULL加密算法及在IPsec中的应用
2411 IPsec文档路线图
2412 OAKLEY协议
IPsec安全体系框架

IPsec安全体系框架

IPsec的安全特性

1.无连接数据完整性(Data Integrity)
IPsec接收方对发送方发送来的包进行认证,以确保数据在传输过程中没有被篡改。

2.数据源认证(Data Authentication)
IPsec接收方对IPsec包的源地址进行认证。这项服务基于数据完整性服务。

3.抗重放服务(Anti-Replay)
IPsec接收方可检测并拒绝接收过时或重复的报文。

4.数据机密性(Confidentiality)
IPsec发送方在通过网络传输包前对包进行加密。

5.有限的数据流保护(Limited Traffic-flow Confidentiality)

AH和ESP的对比:

安全性 AH ESP
协议号 50 51
数据完整性校验 支持 支持(不验证IP头)
数据源验证 支持 支持
数据加解密 不支持 支持
抗重放服务 支持 支持
有限的数据流保护 不支持 支持
NAT-T(NAT穿越) 不支持 支持
IPsec ×××

是基于IPsec协议族构建的在IP层实现的安全虚拟专用网。通过在数据包中插入一个预定义头部的方式,
来保证OSI上层协议的安全,主要用于保护TCP、UDP、ICMP和隧道的IP数据包。

VPN是IPsec的一种应用方式,IPsec VPN的应用场景分为3种:
1.Site-to-Site(站点到站点或者网关到网关)
企业内网(若干PC)之间的数据通过这些网关建立的IPSec隧道实现安全互联。

2.End-to-End(端到端或者PC到PC)
两个PC之间的通信由两个PC之间的IPSec会话保护。

3.End-to-Site(端到站点或者PC到网关)
两个PC之间的通信由网关和异地PC之间的IPSec进行保护。

AH协议 (使用较少)

AH为报文验证头协议(协议号51),可以同时提供数据完整性确认、数据来源确认、防重放等安全特性。
AH插到标准IP包头后面,它保证数据包的完整性和真实性,防止黑客截断数据包或向网络中插入伪造的数据包。
AH常用摘要算法(单向hash函数)MD5和SHA1实现该特性。
为什么AH使用较少?
1.AH无法提供数据加密,所有数据在传输时以明文传输,而ESP提供数据加密。
2.AH因为提供数据来源确认(源IP地址一旦改变,AH校验失败),所以无法穿越NAT。

AH协议工作在传输模式

AH协议工作在传输模式

AH协议工作在隧道模式

AH协议工作在隧道模式

AH头结构

AH头结构
Next Header 下一头部 (8 bits)
标识认证头后面的下一个载荷类型(标识被传送数据所属的协议)。
Payload Len 载荷长度 (8 bits)
表示认证头包的大小,以32bit为单位的AH头部长度-2,default=4
Reserved 保留 (16 bits)
为将来的应用保留(当前都置为0)。
Security Parameters Index (SPI) 安全参数索引 (32 bits)
与IP地址一同用来标识安全参数,用于表示有相同IP地址和相同安全协议的不同SA。由SA的创建者定义,只有逻辑意义。
Sequence Number 序列号 (32 bits)
一个单向递增的计数器,用于防止重放攻击,SA建立之初初始化为0,序列号不允许重复。
Integrity Check Value (ICV) 完整性校验值 (multiple of 32 bits)
认证数据(包含了认证当前包所必须的数据),由SA初始化时指定的算法来计算。

ESP协议 (使用广泛)

ESP为报文安全封装协议(协议号50),它将需要保护的用户数据进行加密后再封装到IP包中,保证数据的完整性、真实性和私有性。
ESP可以同时提供数据完整性确认、数据加密、防重放等安全特性。
ESP通常使用DES、3DES、AES等加密算法实现数据加密,使用MD5或SHA1来实现数据完整性。

ESP协议工作在传输模式

ESP协议工作在传输模式

ESP协议工作在隧道模式

ESP协议工作在隧道模式

ESP包结构

ESP包结构
Security Parameters Index (SPI) 安全参数索引 (32 bits)
与IP地址一同用来标识安全参数,用于表示有相同IP地址和相同安全协议的不同SA。由SA的创建者定义,只有逻辑意义。
Sequence Number 序列号 (32 bits)
一个单向递增的计数器,用于防止重放攻击,SA建立之初初始化为0,序列号不允许重复。
Payload data 载荷数据 (variable)
包含由下一个头部字段给出的变长数据
Padding 填充字段 (0-255 octets)
大多数加密算法要求输入数据包含整数个分组,因此需要填充。
Pad Length 填充长度 (8 bits)
给出前面填充字段的长度,置0时表示没有填充。
Next Header 下一头部 (8 bits)
标识认证头后面的下一个载荷类型(标识被传送数据所属的协议)。
Integrity Check Value (ICV) 完整性校验值 (multiple of 32 bits)
认证数据(包含了认证当前包所必须的数据),由SA初始化时指定的算法来计算。

IPsec的两种模式比较

IPsec的两种模式应用场景
隧道模式可以适用于任何场景.传输模式只能适合PC到PC的场景。
隧道模式虽然可以适用于任何场景,但是隧道模式需要多一层IP头(通常为20字节长度)开销,所以在PC到PC的场景,建议还是使用传输模式。
传输模式:
传输模式在AH、ESP处理前后IP头部保持不变,主要用于End-to-End的应用场景。
隧道模式:
隧道模式在AH、ESP处理之后再封装了一个外网IP头,主要用于Site-to-site的应用场景。

为什么在Site-to-Site场景中只能使用隧道模式:
Site-to-Site场景分析
1.IPSec会话建立在发起方、响应方两个网关之间。
2.由于使用传输模式,所以IP头部并不会有任何变化,IP源地址是192.168.1.2,目的地址是10.1.1.2。
3.因为源、目的地址都是私有地址,Internet中不会维护企业自己网络的路由,该数据包在Internet中大概率被丢弃。
4.假设数据包成功穿越了Internet,因为目的地址不是响应方网关(2.17.1.2),所以响应方直接将包转发给内网PC。
5.最后响应方内网PC收到数据包,因为没有参与IPsec协商,没有对应的SA,所以密文数据无法解密而被PC丢弃。

在Site-to-Site情况下使用传输模式的充要条件:
兴趣流必须完全在发起方、响应方IP地址范围内的流量,协议可以是任意的。
比如发起方IP地址为6.24.1.2,响应方IP地址为2.17.1.2,那么兴趣流可以是源6.24.1.2/32、目的是2.17.1.2/32。
若数据包的源、目的IP地址不同,则应使用隧道模式。