IKE 第一阶段主模式由6个ISAKMP数据包来完成:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
第1-2 个数据包主要完成两个任务:
(1) 核对收到的 ISAKMP 数据包的源 IP 地址,来确认收到的 ISAKMP 数据包是否来自于合法的对等体。
(2) 协商 IKE 策略(加密策略,散列函数, DH 组,认证方式,密钥存活时间)
注: ISAKMP 数据包使用 UDP 传输,源和目的端口都是 500.
第3-4 个数据包的任务:
DH 交换,产生用于加密感兴趣流的密钥资源。
第5-6 个数据包的任务:
在安全的环境下进行认证,并建立 ISAKMP/IKE 双向安全关联 SA 。这个 SA 维护了处理 ISAKMP/IKE 流量的相关策略,对等体双方会继续使用这个 SA ,来安全保护后续的 IKE 快速模式 1-3 包交换。
IKE 第二阶段快速模式由3 个数据包来完成:
第1 个数据包的任务:
它把感兴趣流相关的 IPSEC 策略一起发送给接收方,并有接收方来选择适当的策略。
第2 个数据包的任务:
接收方产生 SPI ,并发送个发起方,建立单向 IPSEC SA 。
第3 个数据包的任务:
发起方产生另一个 SPI ,并发送给接收方,建立单向 IPSEC SA 。
DH 交换的过程:
(1) 发起方 X 首先随机产生 g , p , a 。 g 和 p 是素数,他们的大小有 IKE 第一阶段 1-2 个包交换的 DH 组大小来决定, DH 组 1 为 768 位, DH 组 2 为 1024 位,组越大表示 DH 交换产生的密钥强度越强。
(2) 发起方 X 使用离散对数函数计算出结果 A.( A=ga mod p ), 并在第 3 个 IKE 包中把 g , p , A 发送给接受方 Y 。
(3) 接收方 Y 收到后,随机产生 b ,并且使用从第 3 个 IKE 包中接收到的 g , p 通过离散对数函数计算出结果 B ( B=gb mod p ) . 然后通过第 4 个 IKE 包把 B 发送给发起方 A 。
(4) 计算密钥 K 。发送方 X 计算的密钥 K=Ba mod p 会等于接收方 Y 计算的密钥 K=Ab mod p