概念

IKE属于一种混合型协议,它建立在由Internet安全联盟和密钥管理协议ISAKMPInternetSecurity Association and Key Management Protocol)定义的一个框架上。它能够为IPsec提供自动协商交换密钥、建立安全联盟的服务,以简化IPsec的使用和管理。

IKE具有一套自保护机制,可以在不安全的网络上安全地分发密钥、验证身份、建立IPsec安全联盟。

IKE的安全机制

IKE的安全机制有:

·        DHDiffie-Hellman)交换及密钥分发

Diffie-Hellman算法是一种公共密钥算法。通信双方在不传送密钥的情况下通过交换一些数据,计算出共享的密钥。加密的前提是交换加密数据的双方必须要有共享的密钥。IKE的精髓在于它永远不在不安全的网络上直接传送密钥,而是通过一系列数据的交换,最终计算出双方共享的密钥。即使第三者(如***)截获了双方用于计算密钥的所有交换数据,也不足以计算出真正的密钥。

·        完善的前向安全性PFSPerfect Forward Secrecy

指一个密钥被破解,并不影响其他密钥的安全性,因为这些密钥间没有派生关系。PFS是由DH算法保障的。此特性是通过在IKE阶段2的协商中增加密钥交换来实现的。

·        身份验证(PSK

身份验证用于确认通信双方的身份。对于pre-sharedkey验证方法,验证字用来作为一个输入产生密钥,验证字不同是不可能在双方产生相同的密钥的。验证字是验证双方身份的关键。

·        身份保护

身份数据在密钥产生之后加密传送,实现了对身份数据的保护。

IKE的交换阶段

IKE使用了两个阶段为IPsec进行密钥协商并建立安全联盟:

·        第一阶段交换,建立一个保密和验证无误的通信信道IKESA,以及建立验证过的密钥,为双方的IKE通信提供机密性、消息完整性以及消息源验证服务。

IKE第一阶段交换定义了两种模式:

§  主模式(Main Mode

主模式分为三次交换,总共用到六条消息,最终建立IKESA。这三次交换是:

1.    策略协商

2.    DHnonce交换

3.    对对方身份的验证

主模式被设计成将密钥交换信息与身份、认证信息相分离。这种分离保护了身份信息;交换的身份信息受已生成的Diffie-Hellman共享密钥的保护。但增加了消息的开销。

§  野蛮模式(Aggressive Mode

野蛮模式允许同时传送与SA、密钥交换和认证相关的载荷。将这些载荷组合到一条消息中减少了消息的往返次数,野蛮模式仅交换3个消息就可以完成IKESA的建立。由于对消息的数量进行了限制,野蛮模式同时限制了它的协商能力,而且不会提供身份保护。

虽然野蛮模式存在一些功能限制,但可以满足某些特定的网络环境需求。例如:远程访问时,如果响应者(服务器端)无法预先知道发起者(终端用户)的地址或者发起者的地址总在变化,而双方都希望采用预共享密钥验证方法来创建IKESA,不进行身份保护的野蛮模式就是唯一可行的交换方法;如果发起者已知响应者的策略,或者对响应者的策略有全面的了解,采用野蛮模式能够更快地创建IKESA

·        第二阶段交换,利用在第一阶段建立的安全联盟为IPsec协商安全服务,即为IPsec协商具体的安全联盟,建立IPsec SAIPsec SA用于最终的IP数据安全传送。

第二阶段通过快速交换模式来实现。在一次快速交换模式中,通信双方需要协商拟定IPsec安全联盟的各项特征,并为其生成密钥

 


wKioL1eIKYOSzoTzAABrbOl3ruk130.jpg-wh_50

安全联盟分为IKE SAIPSec SA

引入IKEv2

IKEv2与传统IKE相比有以下优点:

·        4条消息就可以完成一个IKE SA和一对IPsecSA的协商建立,提高了协商效率。

·        删除了原有协议中的DOISIT以及域名标识符、提交位这些功能不强且难以理解、容易混淆的数据结构。

·        定义了独立的通讯量选择载荷,分担了原有ID载荷的部分功能,增加了协议灵活性。

·        加入对EAP身份认证方式的支持,提高了认证方式的灵活性和可扩展性。

IKEv2的协商过程

要建立一对IPsec SA,传统IKE需要经历两个阶段:主模式+快速模式或者野蛮模式+快速模式。前者需要交换至少9条消息,后者也至少需要6条消息。而IKEv2建立一对IPsecSA,正常情况使用两次交换4条消息就可以完成一个IKESA和一对IPsecSA的协商建立,如果要求建立的IPsecSA大于一对时,每一对SA只需额外增加一次交换,也就是两条消息就可以完成。这比传统IKE要简化很多。

IKEv2的安全性分析

·        抵御中间人***

中间人***(Man-in-the-middleAttack)是一种主动***,指***者对通信双方进行窃听,截获通信双方的消息并进行任意插入、删除或篡改消息,之后返回消息给发送者,或者重放旧消息以及重定向消息,是最危险的***。IKEv2中抵御中间人***的机制和方法:

§  密钥材料生成方式

与传统IKE相比,IKEv2的密钥材料发生了变化,双方用于后继交互使用的加密密钥与认证密钥都是不同的。这些密钥是从prf+输出流中依次提取,从而增加了***者猜测密钥的难度,减少了密钥泄漏的可能性,增强了传输的安全性,一定程度上可以抵御中间人***。

§  身份认证

IKEv2使用预共享密钥和数字签名方式进行身份认证。身份认证方式具有交互性,参与协商的实体彼此都对对方的身份进行认证;具有对称性,参与协商的双方都使用相同的机制或方法对对方的身份进行认证。双向的身份认证可以有效地抵御中间人***。同时IKEv2定义了扩展认证交互,即使用扩展认证协议(EAP)描述的方法对IKEv2协商进行身份认证,支持非对称双向认证,进一步加强了认证的灵活性和协商的可扩展性。

§  消息交换

IKEv2将传统IKE主模式交换的六条消息修订为四条消息,将SA载荷和KE载荷、nonce载荷一同发送,这样,消息中包含随机的nonce值,如果***者伪装成响应方进行应答,将收到的发起方的消息基本上不做改变,再发回给发起方,发起方可以根据消息内容判断消息的真假,在一定程度上可以抵御重放***。每个IKEv2消息的头都包含了一个消息ID,用于匹配对应的请求和响应消息以及识别消息重传。当发送和接收到请求时,必须对消息ID值顺序增加,且除了IKE_SA_INIT交互外其值受加密和完整性保护,使得它能够防重放***。同时IKEv2加入了滑动窗口机制,使交互能够更加有效地抵御重放***的威胁。

·        抵御DDoS***

IKEv2中抵御DDoS***的机制和方法:

§  SPI

IKEv2消息头部有发起方SPIi和响应方SPIr,它们是内核产生的8字节的随机数,用来标识SA,同时也可以标识进行消息交换的一对节点。具有相同SPI值的请求处理一次(重传消息除外),而把其他请求作为重复数据报丢弃,可以在一定程度上防止DDoS***。

§  Cookie交互

IKEv2中使用N载荷携带Cookie的辅助交换来抵御拒绝服务***。在通信过程中,响应方认为自己正受到DDoS***时,可以向发起方请求回复一个无状态cookie

响应方收到对方发来的第一条消息后并不急于进行IKE_SA_INIT交互,而是再产生一个新的cookie,封装在通知载荷中发送给对方。如果发起方不是***者,就可以收到这条消息,然后重新开始协商,并将响应方的cookie封装在该消息中,其它载荷内容保持不变。

§  重传约定

IKEv2中所有消息都是成对出现,在每对消息中,发起方负责重传事件,响应方不必对其响应消息进行重传,除非收到对方的一个重传请求。避免了双方同时发起重传,造成资源的浪费,同时也可以防止***者截获消息后,伪装成协商者不断地发送重传消息,耗费协商双方的资源。

§  丢弃半开(half-open)连接

IKEv2只能通过两种情况判断对方是否失效:一种是重复尝试联系对方,直到应答时间过期;另一种是收到对方的不同IKESA加密保护下的INITIALCONTACT通知消息。IKEv2发起方允许多个响应方响应第一条消息,并把所有的响应方视为合法并作回应。发起方发送一些消息后,一旦收到一个有效的加密的响应消息,将其他的响应消息忽略,并将其他所有的无效的半连接丢弃。这样在协商开始时就可以避免受到DDoS***。

·        完善的前向安全性PFS

完善的前向安全性,即限制单密钥只能解密受该单密钥保护的数据。即使***者攻克了一个密钥,也只能破解这个密钥保护的数据,而不能破解受其它密钥保护的数据。对于IPsec×××来说,是指在IKE协商阶段所用的加密密钥同IPsec使用的加密密钥,源于不同密钥衍生材料,即使***者攻克IKE协商阶段密钥,也并不能破解IPsec加密消息。

IKEv2初始交互的密钥衍生材料不被用于衍生供IPsecSA使用的相关密钥,而是通过在CREATE_IPsec_SA交互中引入可选的KE载荷重新生成密钥材料,以此有效完成PFS服务要求。