一、IPsec安全框架
1、IPsec安全框架介绍
随着互联网技术迅速发展,越来越多的企业开始连接到Internet。数据作为企业的重要资产也会被传输到Internet,但是Internet基于IP协议,无法保证数据的机密性和完整性。基于企业对数据的安全需求以及考虑对IP协议的兼容,业内提出了很多安全协议,但是安全协议有一个缺点就是如果安全算法被爆出漏洞,那么就意味着采用该安全协议传输的数据的安全性降大大降低,于是为了避免该缺点,IETF(Internet Engineering Task Force,互联网工程任务组)提出了IPsec安全框架/解决方案。
IPsec不是一个单独的协议,而是应用于IP层上数据安全的一整套解决方案或者说是框架。IPsec安全框架是针对IP协议安全方面的补充协议,为IP数据包增加了安全功能。框架性协议指的是针对CIA(密码学三要素)进行框架设计,而每一层中采用了多种加密算法、单向散列函数。
图为IPsec安全框架
IPsec从以下几个方面保护企业数据安全性:
数据载荷加密:发送方加密点对数据载荷进行加密,接收方加密点对数据载荷进行解密,Internet只会传输密文数据。
数据载荷验证:接收方加密点对数据的完整性进行校验,防止数据被篡改。
数据发送方认证:接收方加密点针对数据的发送方进行身份认证。
防重放攻击:接收方加密点识别数据包是否重复,防止攻击者通过发送先前捕获到的数据包进行攻击。
IPsec是一种开放标准的框架结构,通信方之间在IP层通过加密和数据摘要等手段,来保证数据包在Internet传输时的机密性、完整性、认证性。以下内容具体讨论IPsec是如何保证数据的机密性、完整性、认证性。
2、封装协议
IPsec安全协议就是描述如何使用加密算法和散列函数来保护数据安全,并且定义了协议中的字段。IPsec拥有两种封装协议即ESP和AH。
以下讨论中负载和载荷是同义词
1)AH
AH(Authentication Header,认证头协议)是一种传输层协议,IP协议号为51。能够提供完整性校验、发送源身份认证,可以抵御重放攻击。但是AH存在两个重大缺陷,导致绝大多数IPsec VPN采用ESP协议作为封装协议:
不支持数据加密。
对IP首部进行认证,导致数据包经过NAT后无法通过身份认证而被丢弃。
2)ESP
ESP(Encapsulating Security Payload,封装安全载荷协议)是一种传输层协议,IP协议号为50。ESP能够提供数据加密(机密性)、完整性校验(完整性)、发送源身份认证(认证性),且可以抵御重放攻击。ESP特点:
支持数据加密。
支持IPsec NAT-T。
支持两种封装模式:
Transport:只验证IP负载数据,不验证原始IP首部。
Tunnel:验证整个IP报文。
图为Transport封装模式
ESP封装参数释义:
SPI(安全参数索引):用来标识处理数据包的SA(即安全关联),类似索引号,用于在SADB中查找SA。
Seq Number(序列号):单调增长的序号,用来标识一个ESP数据包。SN就是用来抵御重放攻击的重要参数。
重放攻击抵御案例:比如当前ESP的SN=X,下一个ESP的SN=X+1。如果下一个ESP的SN=X,则该包丢弃。
IV(Initialization Vector,初始化向量):一个随机数,解决相同明文加密得到相同密文的问题,加入IV后,相同明文也会得到不同的密文。
负载数据:该部分是IPsec加密的数据,不同的封装模式不会改变负载数据的内容。
Padding(填充):比如DES为块加密,分为64bits的块,但一个数据不可能一定被64整除,这时就需要Padding来补齐该块。
Pad Length(填充长度):表示填充字段的长度。
Next Header(下一首部):标识IPsec封装负载数据里面的下一个首部;不同的封装模式有不同的下一个首部。
Transport模式:下一个首部TCP/UDP。
Tunnel模式:下一个首部为IP。
Integrity Check Value(ICV,完整性校验认证数据):ESP会对ESP首部到ESP尾部加密后的数据进行HMAC计算,得到的散列值就会被放到认证数据,接收方通过该字段对ESP数据包进行完整性和认证性。
3、封装模式
封装模式是指将AH或ESP相关的字段插入到原始IP报文中,以实现对报文的认证和加密,封装模式有Transport和Tunnel两种。Transport和Tunnel模式各有优缺点:
安全性:Tunnel > Transport,Tunnel对原始IP数据包进行加密和验证,同时可以隐藏内部IP地址、协议类型、端口。
高效性:Transport > Tunnel,Transport少封装一个新IP首部,占用更少的带宽和硬件资源。
图为通信点&加密点
在理解下面的概念前,先对通信点和加密点有所认识。通信点是指具体进行数据通信的节点,加密点是指将数据包进行加解密的站点。加密点通常一般是防火墙或者路由器,通信点一般是园区网中的某网段内的节点。通常在加密点部署IPsec VPN来实现广域网数据的安全传输。
1)Transport
图为Transport封装模式报文
采用ESP封装协议的Transport模式下在原始IP首部和IP负载之间插入一个ESP首部,然后ESP会在最后追加ESP尾部和ESP验证数据部分:
加密部分:IP负载 + ESP尾部(加密算法使用对称加密算法)。
校验部分:ESP首部 + IP负载 + ESP尾部(验证算法使用散列函数,将ICV填入ESP认证字段中)。
Transport模式下,ESP完整性校验不包括原始IP首部,所以无法保证原始IP首部是否被篡改。同时原始首部如果不是公网IP的话,无法直接在互联网上传输,所以一般Transport模式用于内网节点传输/加密点和通信点都是公网IP的传输节点,同时其效率高。
Transport模式使用场景:Site-to-Site IPsec VPN,Intranet IPsec VPN。
IPsec首部尽管可以使用两种协议封装,但是AH无法进行数据加密以及无法穿透NAT这两大缺点而很少被使用,所以不管是传输模式还是隧道模式一般都采用ESP进行封装,所以此处插入ESP首部也是没有问题的。
2)Tunnel
图为Tunnel封装模式报文
采用ESP封装协议的Tunnel模式下将原始IP数据包整个封装到了一个新的IP数据包中,并且在新IP首部和原始首部之间插入ESP首部,然后ESP会在最后追加ESP尾部和ESP验证数据部分,以此对整个原始IP数据包进行加密和验证处理:
加密部分:原IP首部 + IP负载 + ESP尾部(加密算法使用对称加密算法)。
校验部分:ESP首部 + 原IP首部 + IP负载 + ESP尾部(验证算法使用散列函数,将ICV填入ESP认证字段中)。
Tunnel模式下,ESP加密和完整性校验包括整个原始IP数据包。封装整个原始数据包这个特点使得Tunnel模式用于公网节点传输/加密点是公网IP的传输节点(只要加密点出口地址是公网地址即可,新IP首部就会被封装成可路由的公网地址),但是其效率较低,因为多封装了一个新IP首部。
Tunnel模式使用场景:End-to-end IPsec VPN,Internet IPsec VPN。
二、因特网密钥交换协议
通常将生成、分发和存储密钥统称为密钥管理。IPsec采用对称密钥在加解密点对数据进行加解密,如何通过互联网安全的共享对称密钥是必须解决的问题(或叫密钥配送问题),常见的密钥配送方式有三种:线下约定共享密钥、公钥密码体系配送共享密钥、Diffie-Hellman密钥交换协议,人们迫切的希望采用一种智能化的方式去解决密钥管理问题,那么首先线下约定共享密钥的方式肯定不适合。工程师开发了IKE协议,IKE协议采用Diffie-Hellman算法在不安全的网络中安全的分发对称密钥,解决了密钥易泄露、扩展性差、维护困难、工作量增加的问题。
1、Diffie-Hellman算法
Whitefield Diffie和Martin Hellman于1976年公开Diffie-Hellman算法,该算法是以离散对数难题为基础。
图为Whitefield Diffie和Martin Hellman
我们来看下密码学如何通过DH算法实现共享密钥交换:
图为DH算法生成及交换对称密钥流程
尽管无法得到共享密钥,但是DH算法不提供双方的身份认证,这使得密钥交换过程中可能存在中间人攻击。为了保护不被中间人攻击,一般采用预共享密钥或者数字签名算法来帮忙进行身份认证,预共享密钥验证场景较多,且该认证方式只能使用主模式。
2、安全关联
SA(Security Association,安全关联)是指通信对等体之间的通信参数协商的结果。SA分为两种,IKE第一阶段的协商结果为ISAKMP SA,IKE第二阶段的协商结果为IPsec SA。
两种SA都是通过IKE协议在对等体之间确认的。一个正常的IPsec VPN会包含ISAKMP SA和IPsec SA两个阶段:
ISAKMP SA:管理连接;用于协商对IKE数据流进行加密以及对对等体进行验证的算法。ISAKMP SA是双向连接的,默认有效期为24hours。
IPsec SA:数据连接;用于协商对IP数据流进行加密的算法。IPsec SA是单向连接的,因此一般需要两个(一个用于入站数据流、一个用于出站数据流)。对等体之间可以有多对IPsec SA,用于描述不同的IP数据流。IPsec SA默认有效期短于ISAKMP SA,一般只有1 hour。
3、IKEv1原理
IKEv1(Internet Key Exchange Protocol version 1,因特网密钥交换协议第一版)为IPsec提供了密钥管理、建立及维护SA的协议,且能够简化IPsec的配置和维护工作。
IKE是一种混合协议,由ISAKMP、OAKLEY、SKEME三种协议构成。ISAKMP是IKE的本质协议,决定了IKE协商包的封装格式,交换过程和模式的切换;OAKLEY决定了IPsec的框架设计,让IPsec支持更多的协议;SKEME决定了IKE的密钥交换方式,IKE主要使用DH来实现密钥交换。IKE是为IPsec VPN建立服务的,用于执行协商任务,具体任务为:
执行身份认证,对建立IPsec的双方进行身份认证(需要预先协商认证方式)。
通过密钥交换,产生用于加密和HMAC的随机对称密钥。
ISAKMP是IKE的本质协议,在配置时称IKE为ISAKMP
IKE两个阶段:
IKE第一阶段:协商IKE策略并建立ISAKMP SA;用于保护IPsec SA的协商过程。
IKE第二阶段:协商IPsec策略并建立IPsec SA;用于保护敏感流量。
1)IKE第一阶段
IKE第一阶段的目标就是协商IKE策略并建立ISAKMP SA,而该目标可以由两种模式实现:
主模式(Main Mode):通过交换6个数据包,分为IKE策略提案匹配(1-2)、基于DH执行对称密钥交换(3-4)、加解密点身份认证(5-6)三步协商IKE策略并建立ISAKMP SA。思科设备默认采用该模式。
主动模式/野蛮模式(Aggressive Mode):通过交换3个数据包,分为两步协商IKE策略并建立ISAKMP SA。
主模式&主动模式的区别:主动模式协商的IKE策略少于主模式,而且不提供加解密点身份认证,导致主动模式安全性低于主模式。但是主动模式只交换3个数据包,所以速度快于主模式。
主模式(Main Mode)
Step1. 1-2包交换:协商IKE SA的保护提案;发起方将自己的IKE策略提议(必选参数包括加密算法、散列算法、DH组选择、身份认证方式,可选参数包括密钥有效期)发送给接收方。接收方对比本地IKE策略开始逐一检查,双方都会进行IKE策略匹配,匹配中的策略将会被双方采用。
图为ISAKMP策略
IKE1-2数据包交换时为明文,且使用500/udp进行通信。策略中的参数即使被中间人截获,因为采取了DH密钥交换,对方也无法解密出后续进行ISKAMP SA的对称加密密钥,也就无从破解信息。
Step2. 3-4包交换:基于DH进行对称密钥交换;因为IKE默认使用DH来进行对称密钥交换,所以当IKE策略协商完成后(相同DH组),双方交换DH公开值(公钥、原根、大质数)来执行密钥交换。
图为DH工作流程
IKE 3-4数据包交换时为明文,且完成后会建立一条双向的IKE SA。也就是意味着IKE 5-6数据包交换时执行加密和完整性校验。
Step3. 5-6包交换:加解密点身份认证;基于DH进行对称密钥交换后,加解密点有了对称加密密钥。加解密点双方发送认证散列值进行身份认证,单向散列函数和身份认证方式采用的是1-2包协商得到的IKE策略,采用单向散列函数将预共享密钥、基于DH生成的对称密钥、IKE策略、其他收发双方都知道的内容生成认证散列值1。发送给对方,随后对方使用同等方式生成认证散列值2,将认证散列值1和认证散列值2进行比对,一致则通过身份认证。
图为采用预共享密钥方式的协商流程
是否一定需要预共享密钥?必须,因为正常IPsec VPN不可能只有两个加解密点,存在多个加解密点,而IKE策略使用的是相同的话(主要是DH组选择、对称加密算法选择),则基于DH生成的对称密钥相同,无法根据对称密钥来进行身份认证。所以两个加解密点采用的预共享密钥相同则能表示双方的身份。
Step4. ISAKMP SA建立,写入SADB。
主动模式(Aggressive Mode)
主动模式交换与主模式差别在于主动模式不提供身份保护,只交换3个包,在对身份保护要求不高的场景下,使用包交换较少的主动模式可以提高协商的速度,在对身份保护要求较高的场景下,建议使用主模式。
IKE第一阶段的完成,不仅建立了双向的ISAKMP SA,同时验证了加解密点的合法性。该SA为IKE第二阶段的IPsec SA策略协商提供了安全保障(即为IPsec SA的策略协商提供加密和校验服务),采用ISAKMP SA来保护IKE第二阶段的快速模式1-3包交换。
2)IKE第二阶段
IKE第二阶段的目标就是协商IPsec策略并建立IPsec SA,而该目标只能由快速模式实现:
快速模式交换(Quick Mode):通过交换3个包,协商IPsec策略并建立IPsec SA。
快速模式(Quick Mode)
Step1. 发送方:将封装感兴趣流的IPsec策略、感兴趣流发送给对端。
Step2. 接收方:将IPsec策略保存,使用SPI标识一个IPsec策略,建立发送方到接收方的IPsec SA,随后发送自己的IPsec策略并携带SPI。
Step3. 发送方:将对方的IPsec策略保存,使用SPI标识一个IPsec策略,建立接收方到发送方的IPsec SA。
Step4. 建立了发送方到接收方的IPsec SA和接收方到发送方的IPsec SA。
快速模式交互仍采用500/udp,全程密文传输
PFS(完美向前保密):用于加密感兴趣流的密钥;默认每个小时都会更换密钥,该密钥是主模式3-4包基于DH生成的对称密钥衍生出来的,启用PFS后会做一次全新DH交换,产生全新的密钥用于下一个小时,密钥之间相互独立。PFS技术会消耗硬件资源,默认不启用PFS技术。
感兴趣流:匹配部分流量通过IPsec VPN而不是所有流量,所以IPsec VPN保护的流量就叫感兴趣流。
IPsec策略:称为转换集(即transform set),包括感兴趣流的封装协议、工作模式、加密算法、散列函数、IPsec SA密钥有效期。
在IKE第二阶段的快速模式中,发起方匹配感兴趣流,并将感兴趣流发送给接受方,接收方为该感兴趣流生成IPsec SA,用来保护该流量。相反接收方变成了发送方,匹配感兴趣流发送给原本是发送方的接收方,接收方再次为该感兴趣流生成IPsec SA。这样就会生成两个IPsec SA,双方的SADB更新关于各自接收到的感兴趣流的参数(包括封装协议和工作模式),SPD则记录通信点之间的感兴趣流。
IKE策略&IPsec策略:
IKE策略叫policy,policy用于第一阶段的ISAKMP SA建立策略。
IPsec策略叫transform-set,transform-set用于第二阶段的IPsec SA建立策略。
IKE第二阶段主要任务是基于具体需要加密的感兴趣流来协商相应的IPsec策略,IKE快速模式交换的三个数据包都得到了安全保护(加密、完整性校验和身份认证),建立单向的IPsec SA(即存在一个IPsec SA用于保护发起方到接收方的流量)。
评论