IKE¶
IKE(internet key exchange)用来建立SA隧道。
IKE主要有IKEv1(IKEv1.0)和IKEv2(IKEv2.0)两个版本。
IKEv1.1与IKEv1类似。
IKEv1¶
IKEv1分两个阶段协商,简称为IKE-阶段1,IKE-阶段2.
下面介绍IKEv1.0的协商流程
阶段1¶
建立ISAMKP管道,为阶段2做准备。

协商模式¶
第一阶段有两种协商模式可选,主要模式和侵略模式
主要模式¶

主模式一共使用6条消息完成协商。过程如下:
- 1.协商算法
- 哈希算法:使用那种哈希算法,md5或者sha.
- 认证:每个通信实体需要证明自己得身份。通过预共享密钥或者数字证书。
- DH(diffie Hellman)group: 决定将要交换得密钥得长度。
- 生命周期:阶段1建立得管道存在时间,一般为1天。
- 加密算法:DES,3DES,AES.
- 2.DH key交换
完成参数交换后,两个实体将会交换随机数,得到以一共随机数。
- 3.认证
使用预共享密钥或者x590证书认证。
消息流程¶
- 第一条消息
主要给出版本信息,工作模式,以及需要协商得参数。

- 第二条消息
根据消息一协商

- 第三条消息
DH密钥交换。

- 第四条消息
提供自己得DH nonces.

此时双方可以计算DH参数。 - 第五六条消息
最后两条消息主要是做认证使用,
因为消息已经加密,无法看到明文。


侵略模式¶
使用3条消息.主要是在前两条消息,增加了DH交换需要得参数。
- 第一条消息
消息1带了需要协商得参数,并且带了DH nonces和标识。

- 第二条消息
认证时使用得hash参数也带上了。

- 第三条消息
初始方发送自己得认证hash值,完成身份认证。

IKE阶段2¶
在阶段1协商的隧道上建立数据报文加密隧道。

协商参数¶
- IPsec protocol:AH or ESP?
- 封装模式:传输模式或隧道模式
- 加密算法:DES,3DES,AES
- 认证:MD5,SHA
- 存活期:管道2得存活时间,当超时后,需要重新刷新密钥相关参数。
- (可选)DH 交换:用于PFS(Perfect Forward Secrecy)。
- PFS 是可选得,强制实体在IKE 阶段2使用DH 密钥交换产生新的共享密钥。
阶段二的只有一种协商模式,即快速模式



IKEv2¶
IKE phase1得交互叫做IKE_SA_INIT交换,
IKE phase2 的交互叫做IKE_AUTH交换。

IKEv2改进¶
在RFC4306附录中,提出了一下问题:
--更少的RDC:IKE之前的实现已经使用至少3个RFC文档。IKV2将整合这些,并加上NAT穿越和防火墙穿越。
--标准流动性支持:在IKEv2中有一个标准扩展,名为MOBIKE。它用来支持流动性和多宿主用户。
--NAT穿越:IKE和ESP封装后,使用UDP,端口4500,完成NAT穿越和防火墙穿越。
--SCTP支持:在VoIP中使用sctp协议
--简单消息交互:IKEv2使用4条消息交互,IKEv1使用8条消息交互。每个都有优缺点。
--更少的加密机制:
--可靠性和状态管理:
--拒绝访问式攻击恢复:
--内置keepalive机制
协议扩展:
--IKE会话恢复:恢复一个失败的IKE/IPsec ‘会话,不需要再重新协商。
--IKE重定向:可以再多个IKE终端间实现负载均衡。
--IPsec流量可见:只认证不加密ESP,便于中间设备分析流量
--EAP相互认证:使用现代的基于密码的认证方法。
--冲突奔溃检测:当对端奔溃后,在最短时间内能检测到。
--高可用性:在集群间实现IKE/IPsec-level同步,减少failover事件后的连接下降的可能性。
参考¶
RFC 2408 - Internet Security Association and Key Management Protocol (ISAKMP)
RFC 2409 - The Internet Key Exchange (IKE)
RFC 3947 - Negotiation of NAT-Traversal in the IKE
RFC 4109 - Algorithms for Internet Key Exchange version 1 (IKEv1)
RFC 4301 - Security Architecture for the Internet Protocol
RFC 4306 - Internet Key Exchange (IKEv2) Protocol
RFC 5996 - Internet Key Exchange Protocol Version 2 (IKEv2)
RFC 7296 - Internet Key Exchange Protocol Version 2 (IKEv2)