IPsec
概述
IPsec是IP Security的简称。IPsec不是具体指哪个协议,而是一组开放的基于网络层的,应用密码学的安全通信协议族,它是IETF制定的,在IP层对IP报文提供安全服务,目标是为IP提供高安全性的特性。
IPsec本身定义了如何在IP数据中增加字段来保证IP包的完整性、私有性和真实性。
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的安全特性
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头结构
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包结构
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的两种模式比较
隧道模式可以适用于任何场景.传输模式只能适合PC到PC的场景。
隧道模式虽然可以适用于任何场景,但是隧道模式需要多一层IP头(通常为20字节长度)开销,所以在PC到PC的场景,建议还是使用传输模式。
传输模式:
传输模式在AH、ESP处理前后IP头部保持不变,主要用于End-to-End的应用场景。
隧道模式:
隧道模式在AH、ESP处理之后再封装了一个外网IP头,主要用于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地址不同,则应使用隧道模式。
本文标题:IPsec
文章作者:Mr Bluyee
发布时间:2019-09-23
最后更新:2019-10-27
原始链接:https://www.mrbluyee.com/2019/09/23/IPsec/
版权声明:The author owns the copyright, please indicate the source reproduced.