IPSec and IKE

2018/11/07 网络

在usenix 2018顶会上,第一作者Dennis Felsch发表了论文The Dangers of Key Reuse: Practical Attacks on IPsec IKE。论文主要描述在IKE的不同版本和模式之间,重用密码对导致跨协议认证绕过,从而使攻击者可以模仿受害主机或者网络。下面是对该论文中的知识背景与细节进行讨论。

IPSec

互联网安全协议(Internet Protocol Security),是一个协议包,透过对IP协议的分组进行加密和认证来保护IP协议的网络传输协议族。

IPSec mode

IPSec支持两种模式,分别是tunnel mode和transport mode。下面是这两种模式的特点:

  1. Tunnel mode (隧道模式)

    • 隧道模式下IPSec加密整个IP头和数据报文。
    • 广泛应用于入口到入口(site to site)的VPN场景
    • 支持NAT
  2. Transport mode (传输模式)

    • 传输模式下IPSec仅加密数据报文和ESP尾部,不会处理原来的IP头部。
    • 广泛应用于客户-服务器端的VPN场景
    • 不支持NAT

他们的最关键区别在于对待原IP包的加密部分不同。有些资料显示隧道模式是site to site,而传输模式是point to point,我的理解是,对于隧道模式针对的是防火墙或者是网关,主机通过委托IPSec的网关来获得相应的服务,因此隧道模式还需要NAT,而传输模式是直接建立在两台主机之上,由此也不需要额外的IP头。

IPSec Proctol

IPSec主要由三个协议组成,分别是AH、ESP和SA。AH为IP数据报提供无连接数据完整性、消息认证以及防重放攻击保护;ESP提供机密性、数据源认证、无连接完整性、防重放和有限的传输流机密性;SA提供算法和数据包,提供AH和ESP操作所需要的参数。

  1. Authentication Header

    AH的目标是验证数据完整性和消息认证,并没有提供加密的功能,AH下使用端口号是51。

    AH在隧道模式相比于传输模式下多了新的IP头,这里不详细展开AH Header的格式。

  2. Encapsulation Security Payload

    ESP相比于AH提供了加密的功能。在隧道模式下,ESP会加密整个原IP包,而传输模式下,ESP仅加密数据部分。ESP下使用端口号是50。

  3. Security Associations

    SA定义了如何协商、使用哪些Policy以及参数。

    • Authentication method
    • Encryption algorithm & hashing algorithm
    • Life time of SA
    • Sequence number

    SA的建立由IKE来确定,SA就好比是两个合作方之间的合同,上面罗列了双方认可的协议。SA又分为IKE SA和IPSec SA,具体内容在IKE小节中描述。

Internet Key Exchange

IKE的作用是在IPSec协议族中建立SA,目前有IKEv1和IKEv2两个版本。如果用wireshark工具抓捕相关的数据报,分类器中显示的是ISAKMP协议。

IKE运行的时候分为两个阶段。IKE phase1阶段主要做的事情是完成IKE SA的构建,IKE phase2阶段主要做的事情是完成IPSec SA的构建。第一阶段的目的是认证和协商密钥,第二阶段是依据第一阶段的密钥来进行加密数据,所以涉及到对传输数据的处理是发生在第二阶段。根据传输模式和协议的不同,两个阶段的运行细节也有很大区别。

IKEv1

在IKEv1下,phase1、phase2和ESP的关系如下图:

IKEv1 Phase 1有两种模式,分别是main mode(主模式)和aggressive mode(野蛮模式)。主模式需要6条ISAKMP消息完成协商,而野蛮模式下需要3次ISAKMP。野蛮模式的优点是建立IKE SA的速度较快,缺点是由于密钥交换和身份认证同时进行,无法提供身份保护。它们的目的是3个,分别是协商、密钥生成、密钥确认。以主模式为例,首先完成双方的加密算法、认证方式等的协商,然后使用DH算法完成双方的密钥共享,最后确认上一步生成的密钥是否正确。

IKEv1 Phase 2只有一个模式,是Quick mode(快速模式),通过3条ISAKMP消息完成。依据Phase1的相关参数加载IPSec AH或者是ESP,完成用来传输数据IPSec SA。

IKEv2

在IKEv2下,phase1、phase2和ESP的关系如下图:

IKEv2简化了SA的协商过程,正常情况下2次交换共4条消息就可以完成一个IKE SA和一对IPSec SA。如果要求建立的IPSec SA数量大于一对时,每一对SA只需要额外增加1次交换共2条消息就可以完成。

Attacks

论文中提到的攻击针对IKEv1和IKEv2的phase 1过程。上面的分析可知,phase 1构建IKE SA,如果攻击者成功发起对phase 1的攻击,就能够控制phase 2,完成对整个协议的攻击。这里的攻击是基于Bleichenbacher oracles攻击以及离线字典攻击。

Bleichenbacher

安全协议通信中对所传输的密文,通过实施符合密码学严格程度的数据完整性保护,确保接收者能够判断解密后的明文是否被篡改,从而让接收者丢弃那些有问题的解密明文。例如,PKCS#1 v1.5规定了RSA算法使用明文padding格式,如下图所示:

公式中00|02|PS|00就是完整性校验字符串,其中PS是随机的不含00的填充字符串,m是明文负荷。如果接收方解密后发现消息带有这样完整性校验字符串,就认为密文c没有被篡改,后缀明文m也是有效的。然而这种简单粗糙的完整性判断方式是容易受到攻击的,显然一个被篡改的RSA密文仍然存在不可忽略的概率使得明文呈现出上述格式,因此造成密文完整性判定错误。Bleichenbacher攻击基于此漏洞,向服务器提交大量伪造密文,令其对攻击者的伪造密文作出答复,在二者之间大量的交互过程中攻击者解出消息明文。上当而不断答复攻击者询问的在线服务器叫做oracle(源于古埃及、希腊神话故事中替神做出的难解答复),攻击者要向oracle服务器提交百万量级的伪造密文询问,每次得到1比特信息量的Yes或者No答复,攻击者从服务器大量答复中通过复杂的计算逐渐逼近正确的解密明文。

IKEv1 Phase 1

下图是IKEv1阶段1主模式的6条消息内容:

消息1、2是通信双方的协议协商,cI和cR是随机数,IKE称之为Cookie。消息3、4传递的anc是根据协商的协议内容附带的参数,gx和gy是DH算法的参数。至消息4为止,通信双方得到一组密钥,分别用于消息5、6的认证和IPSec SA阶段。

消息3、4的anc参数主要分为3种,分别是Signature、PKE & RPKE和PSK。下面分别针对这3种情况展开分析。

IKEv1 in Phase 1 using main mode with PKE

消息3中Initiator(下面简称In)使用Responder(下面简称Re)的公钥pkR加密两组消息,Re用自己的私钥解开取出nI,将nI和nR作为参数交给PRF函数生成共享密钥。下面是攻击者思路:

图中A作为Re方,攻击者作为In方,攻击者的目标是伪造B的身份。攻击者关注的是消息3和消息4,要生成共享密钥必须要得到nI和nR,其中攻击者自己生成nI,而nR已经被加密。攻击者试图从消息4中获取被加密的nR,正常情况下只有B的私钥才能解开。此时攻击者对B发起Bleichenbacher攻击,大量伪造密文CnR,逼近nR。当攻击者成功解出nR之后,就能计算出共享密钥,继而完成消息5、6的密钥认证。

此攻击方式对于使用RPKE认证是类似的,细节参阅论文第7小节Bleichenbacher Oracle in Huawei Secospace USG2000 series。

IKEv2 in Phase 1/2 with Signature

在IKEv1主模式下使用签名认证的攻击方式与IKEv2类似的,对于签名认证的攻击以IKEv2为例。

消息1、2除了完成协商协议外,还携带了DH算法的参数,因此消息1、2完成后,双方都计算出共享密钥。因此攻击者关注点在于消息1、2。注意到这里nI和nR都是明文传输,因此攻击者可以直接计算出共享密钥,关键在于如何伪造消息3、4的签名。

图中A作为Re方,攻击者作为In方,攻击者的目标是伪造B的身份。攻击者关注的是消息3和消息4,攻击者在消息3中需要伪造B的签名。我们用H来表示消息(cI,0,m1,nR,MACi),攻击者要伪造B的签名,需要使用B的私钥来加密H,也就是攻击者的目标是消息H^d。此时攻击者对B发起Bleichenbacher攻击,伪造大量密文c=(H*r^e)发送给B,逼近明文m = c^d = (H*r^e)^d = H^d*r,此时对m乘以r的逆就可以得到H^d从而伪造签名。

IKEv1 in Phase 1 using main mode with PSK

该模式下与上面签名认证的方式有类似的地方,关键在于消息3、4中共享密钥k的计算需要用PSK,这就允许攻击者对弱PSK发起离线字典攻击。这不是论文的重点,不做详细讨论。参见论文第9小节Offline Dictionary Attack against Weak PSKs。

Conclusion

这篇论文展示了对IKE下所有版本、所有协议的攻击方式,主要是通过Bleichenbacher Oracle攻击和弱PSK两点入手展开分析,其中Bleichenbacher Oracle攻击针对PKE、RPKE和Signature认证。

抖机灵

论文下载: The Dangers of Key Reuse: Practical Attacks on IPsec IKE

你有没有注意到,论文的标题是Key Reuse,翻译过来是密钥重用,但是论文的重点是Bleichenbacher Oracle攻击和弱PSK,正文中词汇reuse只出现了2次,对此我感到很奇怪。

Search

    Table of Contents