IKE( ISAKMP/Oakley/SKEME):internet key exchange,internet 密钥交换协议,它是一个混合协议,并非为IPSec专用,只要其他协议需要,都可用它协商具体的安全服务。
ISAKMP : Internet安全关联和密钥管理协议, 负责定义交换密钥和验证信息的载荷(信息的格式)
SA:(Security Association,安全联盟)是两个IPSec实体(主机、安全网关)之间经过协商建立起来的一种协定,内容包括采用何种IPSec协议(AH还是ESP)、运行模式(传输模式还是隧道模式)、验证算法、加密算法、加密密钥、密钥生存期、抗重放窗口、计数器等,从而决定了保护什么、如何保护以及谁来保护。可以说SA是构成IPSec的基础。
每个SA由三元组(SPI,IP目的地址,IPSec协议)来惟一标识 SPI(Security Parameter Index,安全参数索引)是32位的安全参数索引,用于标识具有相同IP地址和相同安全协议的不同的SA,它通常被放在AH或ESP头中 。 IP目的地址:IP目的地址,它是SA的终端地址。IPSec协议:采用AH或ESP。
AH和ESP两个协议都使用SA来保护通信,而IKE的主要功能就是在通信双方协商SA。
AH:Authentication Header,验证头部协议。HMAC(HMAC-MD5、HMAC-SHA1)https://tools.ietf.org/html/rfc2402
ESP:Encapsulating Security Payload,封装安全载荷,RFC2406。https://tools.ietf.org/html/rfc2406 ESP协议除了可以提供无连接的完整性、数据来源验证和抗重放攻击服务之外,还提供数据包和数据流加密服务。与AH相比,ESP验证的数据范围要小一些。不校验IP头,可以NAT透传。
Transport传输模式 Tunnel隧道模式 传输模式要保护的是IP包的载荷,通常情况下,只用于两台主机之间的安全通信。 隧道模式保护的是整个IP包。通常情况下,只要IPSec双方有一方是安全网关或路由器,就应该使用隧道模式。

提供抗回放攻击:通过在数据包中包括加密的序列号确保来自中间人攻击设备的抗回放攻击不能发生。

IPSec流程实例,为简单起见,我们假设这是一个Intranet例子,每台主机都有处于激活状态的IPSec策略:
1.用户甲(在主机A上)向用户乙(在主机B上)发送一消息 2.主机A上的IPSec驱动程序检查IP筛选器,查看数据包是否需要受保护以及需要受到何种保护 3.驱动程序通知IKE开始安全协商 4.主机B上的IKE收到请求安全协商通知 5.两台主机建立第一阶段SA,各自生成共享”主密钥” (DH交互密钥)注:若两机在此前通信中已经建立起第一阶段SA,则可直接进行第二阶段SA协商 6.协商建立第二阶段SA对:入站SA和出站SA。SA包括密钥和SPI。 7.主机A上IPSec驱动程序使用出站SA对数据包进行签名(完整性检查)与/或加密。 8.驱动程序将数据包递交IP层,再由IP层将数据包转发至主机B 9.主机B网络适配器驱动程序收到数据包并提交给IPSec驱动程序。 10.主机B上的IPSec驱动程序使用入站SA检查完整性签名与/或对数据包进行解密。 11.驱动程序将解密后的数据包提交上层TCP/IP驱动程序,再由TCP/IP驱动程序将数据包提交主机B的接收应用程序。

第一阶段作用—–对等体之间彼此验证对方,并确定会话密钥,这个阶段用DH进行密钥交换,并协商出IKE SA,保护第二阶段中IPSEC SA协商过程。
第二阶段作用—–协商IPSEC 单向SA,为保护IPS数据流而创建。快速模式 协商IPSEC SA使用的安全参数,创建IPSEC SA,使用AH或ESP来加密IP数据流。

以上是IPSec的一个完整工作流程,虽然看起来很复杂,但所有操作对用户是完全透明的。中介路由器或转发器仅负责数据包的转发,如果中途遇到防火墙、安全路由器或代理服务器,则要求它们具有IP转发功能,以确保IPSec和IKE数据流不会遭拒绝。

这里需要指出的一点是,使用IPSec保护的数据包不能通过网络地址译码NAT。因为IKE协商中所携带的IP地址是不能被NAT改变的,对地址的任何修改都会导致完整性检查失效。

IPSec-VPN协议和算法

  • IP安全协议:AH,ESP
  • 数据加密标准:DES,3DES
  • 公共密钥密码协议:Diffe-Hellman(D-H)
  • 散列算法:MD5,SHA-1
  • 公钥加密算法:RSA
  • Internet密钥交换:IKE
  • 证书授权中心:CA