IPSec(Internet Protocol Security)是IETF(Internet Engineering Task Force)制定的一组开放的网络安全协议。它并不是一个单独的协议,而是一系列为IP网络提供安全性的协议和服务的集合。
IPSec用来解决IP层安全性问题的技术。IPSec被设计为同时支持IPv4和IPv6网络。
IPSec主要包括安全协议AH(Authentication Header)和ESP(Encapsulating Security Payload),密钥管理交换协议IKE(Internet Key Exchange)以及用于网络认证及加密的一些算法等。
IPSec主要通过加密与验证等方式,为IP数据包提供安全服务。
IPSEC工作模式
传输模式(Transport mode)
在传输模式下,IPSec协议处理模块会在IP报头和高层协议报头之间插入一个IPSec报头。
IP报头与原始IP分组中的IP报头是一致的,只是IP报文中的协议字段会被改成IPSec协议的协议号(50或者51) ,并重新计算IP报头校验和。传输模式保护数据包的有效载荷、高层协议,IPSec源端点不会修改IP报头中目的IP地址,原来的IP地址也会保持明文。
传输模式只为高层协议提供安全服务。
主要应用场景:经常用于主机和主机之间端到端通信的数据保护。
封装方式:不改变原有的IP包头,在原数据包头后面插入IPSec包头,将原来的数据封装成被保护的数据。
隧道模式(Tunnel mode)
传输模式不同,在隧道模式下,原始IP分组被封装成一个新的IP报文,在内部报头以及外部报头之间插入一个IPSec报头,原IP地址被当作有效载荷的一部分受到IPSec的保护。
通过对数据加密,还可以隐藏原数据包中的IP地址,这样更有利于保护端到端通信中数据的安全性。
封装方式:增加新的IP(外网IP)头,其后是ipsec包头,之后再将原来的整个数据包封装。
主要应用场景:经常用于私网与私网之间通过公网进行通信,建立安全VPN通道。
IPSEC通信协议
AH协议
AH分配到的协议号是51。即使用AH协议进行安全保护的IPv4数据报文的IP头部中协议字段将是51,表明IP头之后是一个AH头。AH头比ESP头简单得多,因为它没有提供机密性。由于不需要填充和一个填充长度指示器,因此也不存在尾部字段。另外,也不需要一个初始化向量。
AH提供的安全服务:
1.无连接数据完整性:通过哈希函数产生的校验来保证。
2.数据源认证:通过在计算验证码时加入一个共享秘钥来实现。
3.抗重放服务:AH报头中的序列号可以防止重放攻击。
AH不提供任何保密性服务:它不加密所保护的数据包。
不论是传输模式还是隧道模式下,AH提供对数据包的保护时,它保护的是整个IP数据包
ESP协议
ESP同样被当作一种IP协议对待,紧贴在ESP头前的IP头,以协议号50标志ESP头,ESP之前的IP头中的协议字段将是50,以表明IP头之后是一个ESP头,ESP不仅具备ESP头,还有一个包含有用信息的ESP尾。
在隧道模式中,ESP保护整个IP包,整个原始IP包将会以ESP载荷的方式加入新建的数据包,同时,系统根据隧道起点和终点等参数,建立一个隧道IP头,作为这个数据包的新IP头,ESP头夹在隧道IP头和原始IP包之间,并点缀ESP尾。
ESP提供加密服务,所以原始IP包和ESP尾以密文的形式出现。
ESP在验证过程中,只对ESP头部、原始数据包IP包头、原始数据包数据进行验证;只对原始的整个数据包进行加密,而不加密验证数据。
ESP提供的安全服务:
1.无连接数据完整性。
2.数据源认证。
3.抗重放服务。
4.数据保密。
5.有限的数据流保护
保密服务通过使用密码算法加密IP数据包的相关部分来实现。
数据流保密由隧道模式下的保密服务提供。
ESP通常使用DES、3DES、AES等加密算法实现数据加密,使用MD5或SHA1来实现数据完整性认证。
IKE阶段1–主模式协商:
IKE阶段1–野蛮模式协商:
野蛮模式下有三个交互包:
1.第一个交互包发起方建议SA,发起DH交换
2.第二个交互包接收方接受SA
3.第三个交互包发起方认证接受方
野蛮模式交互过程少,所以在传输过程中,其传输的数据比较多,并且前两个数据为明文传输,3为加密传输。和主模式不同,野蛮模式不提供身份保护。
IKE阶段1两种模式对比: