问题描述
当用 IPSec 保护 IP Packet 之前,必须先建立一个 SA (安全联盟)。
IPSec SA 可以通过手工配置的方式建立。
但是当网络中节点较多时,手工配置将非常困难,而且难以保证安全性。
解决方案
这时就可以使用 IKE(Internet Key Exchange,Internet密钥交换)自动进行 安全联盟建立 与 密钥交换 的过程。
IKE 就用于动态建立 SA,然后再代表 IPSec 对 SA 进行协商。(在 IPSec VPN 中,连接的建立分为两个阶段,后面会展开说明)。
IKE 作为秘钥协商协议,存在两个版本:IKEv1 和 IKEv2,我们主要学习 IKEv1 版本,IKEv2 内容可参考产品文档对应内容。
原理简述
根据 RFC2409 描述,ISAKMP、Oakley、SKEME 这三个协议构成 IKE 的基础,所以我们说 IKE 是一种“混合型”协议。它建立在由 Internet SA 和 ISAKMP 定义的一个框架上,详情可见 RFC2408 文件。同时,IKE 还实现 Oakley 和 SKEME 两种密钥管理协议的一部分。它沿用 ISAKMP 的基础、Oakley 的模式、SKEME 的共享和密钥更新技术,从而定义出自己独一无二的验证加密材料生成技术,以及协商共享策略。在 IKE 规范中,三种技术发挥的作用可在后文对 IKE 本身的讨论中略见一二,其中 ISAKMP 发挥的作用最为巨大。
此外,IKE 还定义了它自己的两种密钥交换方式(野蛮模式,主模式);
Oakley 是由亚利桑那大学的安全专家 Hilarie Orman 开发的一种基于 DH(Diffie-Hellman)算法的协议。它是一种自由形态的协议,允许各研究机构根据自身的水平改进协议状态。IKE 在其基础上定义了正规的密钥交换方法。尽管由于降低了 Oakley 模型的灵活性,但仍然提供了多种交换模式供用户选择,所以最终还是成为一个非常适宜的密钥交换技术。
SKEME 则是另外一种密钥交换协议,由加密专家 Hugo Krawczyk 设计。SKEME 定义了如何验证密钥交换。其中,通信各方利用公共密钥加密实现相互间的验证,同时“共享”交换的组件。每一方都要用对方的公共密钥来加密一个随机数字,两个随机数(解密后)都会对最终的密钥产生影响。IKE 在它的一种验证方法(公共密钥加密验证)中,直接借用 SKEME 的这种技术。
ISAKMP 是个密钥管理协议,由 NSA(美国国家安全局)公开的一项技术,是由其研究人员开发出来的。ISAKMP 定义 通信双方沟通的方式、信息的格式、保障通信安全的状态变换过程。 但 ISAKMP 本身没有定义具体的密钥交换技术,密钥交换的定义留给其他协议处理,对IPSec 而言,已定义的密钥交换就是 IKE。IKE 利用 ISAKMP 语言来定义密钥交换,是对安全服务进行协商的手段。
IKE 交换的最终结果是:一个通过验证的密钥以及建立在双方同意基础上的安全服务(即所谓的 IPSec 安全联盟,IPSec SA)”。
特性特征
IKE 具有一套自保护机制,可以在不安全的网络上安全地分发密钥、验证身份、建立 IPSec 安全联盟。
DH 交换及密钥分发:Diffie-Hellman 算法是一种公共密钥算法。通信双方在不传送密钥的情况下通过交换一些数据,计算出共享的密钥。加密的前提是交换加密数据的双方必须要有共享的密钥。IKE 的精髓就在于它永远不在不安全的网络上直接传送密钥,而是通过一系列数据的交换,最终计算出双方共享的密钥。即使第三者(如黑客)截获了双方用于计算密钥的所有交换数据,也不足以计算出真正的密钥。
完善的前向安全性(Perfect Forward Secrecy):PFS 是一种安全特性,指一个密钥被破解,并不影响其他密钥的安全性,因为这些密钥间没有派生关系。PFS 是由DH 算法保障的。此特性是通过在 IKE Phase 2 的协商中增加密钥交换来实现的。
身份验证:身份验证确认通信双方的身份。对于pre-shared key 验证方法,验证字用来作为一个输入产生密钥,验证字不同是不可能在双方产生相同的密钥的。验证字是验证双方身份的关键。
身份保护:身份数据在密钥产生之后加密传送,实现了对身份数据的保护。
应用场景
在 IPSec 中,IKE 具有如下作用:
1)降低手工配置的复杂度;
2)密钥定时更新;
3)SA 定时更新。IKE 的 DH 交换过程,每次的计算和产生结果都是毫无关系的。为保证每个 SA 所使用的密钥互不相关,必须每次安全联盟的建立都运行DH交换过程。
4)允许 IPSec 提供反重放服务:IPSec 使用 IP Header 中 32-bit 的序列号实现防重放,但此数溢出后,为实现防重放,SA 需要重新建立,这个过程与要 IKE 的配合;
5)允许在端与端之间动态认证。对安全通信的各方身份的的验证和管理,将影响到IPSec的部署。IPSec 的大规模使用,需要 CA 或其他集中管理身份数据的机构的参与;
只要其他协议需要,例如 RIPv2 或 OSPF,也可以使用 IKE 来提供安全服务。
流程概述
IKE 的工作流程如下:
1)当一个报文从某接口外出时,如果对此接口应用 IPSec 策略,会进行安全策略的匹配;
2)如果找到匹配的安全策略,会查找相应的 SA。如果 SA 还没有建立,则触发 IKE 进行协商。IKE 首先建立 Phase 1 SA ,即 IKE SA;
3)在 IKE SA 的保护下,协商第二阶段的 SA,即 IPSec SA;
4)使用 IPSec SA 保护通讯数据;
IKEv2 通过一次协商便能产生 IPSec 使用的密钥。
协商阶段
IKE 使用两个阶段的 ISAKMP 为 IPSec 进行密钥协商并建立安全联盟:第一阶段建立 IKE SA,第二阶段利用该既定的安全联盟,为 IPSec 协商具体的安全联盟。
第一阶段交换
通信各方彼此间建立了一个已通过身份验证和安全保护的通道,此阶段的交换建立了一个ISAKMP安全联盟,即 ISAKMP SA(也可称为 IKE SA)。
IKEv1 Phase 1 的目的是建立 IKE SA。当 IKE SA 建立后,对等体间的所有 ISAKMP 消息都将通过加密和验证,这条安全通道可以保证 IKEv1 Phase 2 的协商能够安全进行。IKE SA 是一个双向的逻辑连接,两个 IPSec 对等体间只建立一个 IKE SA。
协商模式包括:主模式、野变模式。在 RFC2409 中,规定 IKE 第一阶段的协商可以采用两种模式:主模式(Main Mode)和野蛮模式(Aggressive Mode)。这两种模式各自做着相同的事情:建立一个加密和验证无误的通信信道(IKE SA),以及生成验证过的密钥,为双方的IKE通信提供机密性、消息完整性以及消息源验证服务。IKE中定义的其他所有交换都要求一个验证过的 IKE SA 作为首要条件。所以无论主模式还是野蛮模式,第一阶段都必须在其他任何交换之前完成。
对比 主模式、野变模式:
1)交换的消息:主模式为 6 个;野蛮模式为 3 个;
2)身份保护:主模式的最后两条消息有加密,可以提供身份保护功能;而野蛮模式消息集成度过高,因此无身份保护功能;
3)对等体标识:对于预共享密钥方式,主模式只能采用 IP-ADDR 标识对等体;而野变模式可以采用 IP-ADDR 或 Name方式标识对等体。
认证方式包括预共享客钥、数字符名方式、公钥加密。
第二阶段交换
用已在 Phase 1 中建立的 IKE SA 为 IPSec 协商安全服务,即为 IPSec 协商具体的安全联盟,建立 IPSec SA 以用于最终的IP数据安全传送。
IKEv1 Phase 2 的目的就是建立用来安全传输数据的 IPSec SA,并为数据传输衍生出密钥。该阶段使用 IKEv1 Phase 1 中生成的密钥对 ISAKMP 消息的完整性和身份进行验证,并对 ISAKMP 消息进行加密,故保证了交换的安全性。
协商模式为快速模式。
最终结果
IKE 协商成功意味着双向的 IPSec 隧道已经建立,可以通过ACL方式或者安全框架方式定义IPSec“感兴趣流”,符合感兴趣流流量特征的数据都将被送入IPSec隧道进行处理。
IKE SA vs. IPSec SA
从协商的内容上来看,由于 IKE SA 的主要作用是为 IPSec SA 协商出所使用的安全协议,因此IKE SA的主要协商内容为AH或ESP协议所使用的认证算法和加密算法,以及IPSec所使用的认证方法。
IPSec SA 是要建立 IPSec Tunnel 的通信双方对隧道参数的约定,包括隧道两端的 IP-ADDR,隧道采用的验证方式、验证算法、验证密钥、加密算法、加密密钥、共享密钥以及生存周期等一系列参数。
密钥保护
密钥生存周期
密钥具有一定生存期,当生存期到达时,用新的密钥替代原有密钥
密钥生命周期设置决定何时把旧密钥替换成新密钥。密钥生命周期决定了在一定的时间段内,新旧密钥交替的周期。例如,在某业务通信中需要1000秒,而我们设定密钥生命周期为100秒,那么整个数据报文传输期间将会产生10个密钥。由于在此业务通信周期内使用了10个密钥,即使攻击者破解了某个密钥对数据报文进行解密处理,也无法实现对所有数据报文的解密。
完美向前保密(PFS)
定义两个密钥之间无任何关系
完美向前保密,即每一密钥均是“独一无二”的,这样一个密钥被破解,并不影响其他密钥的安全性,因为这些密钥间没有派生关系。所以若有攻击者破解了一个密钥后,只能访问受这个密钥保护的所有数据报文,而受其它密钥保护的数据报文还是无法破解。PFS是由DH算法保障的。此特性是通过在IKE阶段2的协商中增加密钥交换来实现的。
DH Group
公共密钥加密系统,可在一个公共的、不受安全保护通讯信道(Internet)交换共享密钥生成过程信息;
DH 算法是一种公共密钥算法。通信双方在不传送密钥的情况下通过交换一些数据,计算出共享的密钥。加密的前提是交换加密数据的双方必须要有共享的密钥。IKE的精髓在于它永远不在不安全的网络上直接传送密钥,而是通过一系列数据的交换,最终计算出双方共享的密钥。即使第三方(如黑客)截获了双方用于计算密钥的所有交换数据,也不足以计算出真正的密钥。IKE共定义了5个DH组,组1定义的密钥长度为768位;组2长度为1024位。密钥长度越长,所生成的密钥安全度也就越高,越难被破译。DH组的选择很重要,因为DH组只在第一阶段的SA协商中确定,第二阶段的协商不再重新选择DH组,两个阶段使用的是同一个DH组,因此该DH组的选择将影响所有“会话密钥”的生成。在协商过程中,对等的实体间应选择同一个DH组,即密钥长度应该相等。若DH组不匹配,将视为协商失败。
常用工具
ike-scan
discover and fingerprint IKE hosts (IPsec VPN Servers) ike-scan discovers IKE hosts and can also fingerprint them using the retransmission backoff pattern.
参考文献
A Comprehensive Guide to PPTP, L2TP, and Other VPN Protocols