本期引言:
本章主要讲解IPSec VPN相关理论概念,工作原理。从安全和加密原理入手,讲解了IPSec 在VPN对等体设备实现的安全特性,如数据的机密性、数据的完整性,数据验证等。重点分析IPSec封装模式,IPSec安全协议,IPSec密钥交换等知识为整个IPSec知识体系打下坚实的基础。
IPsec协议介绍:
需求背景
随着Internet的发展,由于IP协议未考虑安全性,而且Internet上有大量的不可靠用户和网络设备,所以业务数据要穿越这些未知网络,无法保证数据的安全性,数据易被伪造、篡改或窃取。为了解决上述问题,IPSec(Internet Protocol Security)应运而生。IPSec是对IP的安全性补充,其工作在IP层,为IP网络通信提供透明的安全服务。
IPsec简介:
IPSec是IETF(Internet Engineering Task Force)制定的一组开放的网络安全协议。它并不是一个单独的协议,而是一系列为IP网络提供安全性的协议和服务的集合,包括认证头AH(Authentication Header)和封装安全载荷ESP(Encapsulating Security Payload)两个安全协议、密钥交换和用于验证及加密的一些算法等。
通过这些协议,在两个设备之间建立一条IPSec隧道。数据通过IPSec隧道进行转发,实现保护数据的安全性。
IPSec对等体:IPSec用于在协商发起方和响应方这两个端点之间提供安全的IP通信,通信的两个端点被称为IPSec对等体。其中,端点可以是网关、路由器或者防火墙,也可以是主机。
IPSec隧道:IPSec为对等体间建立IPSec隧道来提供对数据流的安全保护。一对IPSec对等体间可以存在多条IPSec隧道,针对不同的数据流各选择一条隧道对其进行保护,例如有的数据流只需要认证、有的需要认证和加密。
IPSec对数据的加密是以数据包为单位,而不是以整个数据流为单位。发送方对要保护的数据包进行加密封装,在Internet上传输,接收方采用相同的参数对报文认证、解封装,以得到原始数据。
IPsec提供的安全服务
IPsec具有如下安全特性:机密性、完整性、数据来源验证、不可否认性及抗重放保护。
IPSec通过加密与验证等方式,从以下几个方面保障了用户业务数据在Internet中的安全传输:
数据来源验证:接收方验证发送方身份是否合法。数据加密:发送方对数据进行加密,以密文的形式在Internet上传送,接收方对接收的加密数据进行解密后处理或直接转发。数据完整性:接收方对接收的数据进行验证,以判定报文是否被篡改。抗重放:接收方拒绝旧的或重复的数据包,防止恶意用户通过重复发送捕获到的数据包所进行的攻击。
IPsec协议体系架构
IPSec VPN体系结构主要由验证头AH(Authentication Header)、封装安全载荷ESP(Encapsulating Security Payload)和因特网密钥交换IKE(Internet Key Exchange)协议套件组成。IPSec通过AH和ESP两个安全协议实现IP报文的安全保护,通过ESP来保障IP数据传输过程的机密性,使用AH/ESP提供数据完整性、数据源验证和抗报文重放功能。ESP和AH定义了协议和载荷头的格式及所提供的服务,但却没有定义实现以上能力所需具体转码方式,转码方式包括对数据转换方式,如算法、密钥长度等。为简化IPSec的使用和管理,IPSec还可以通过IKE进行自动协商交换密钥、建立和维护安全联盟的服务。具体介绍如下:
AH协议:AH是报文头验证协议,主要提供数据源验证、数据完整性验证和防报文重放功能,不提供加密功能。
ESP协议:ESP是封装安全载荷协议,主要提供加密、数据源验证、数据完整性验证和防报文重放功能。
IKE协议:IKE协议建立在Internet安全联盟和密钥管理协议ISAKMP(Internet Security Association and Key Management Protocol)框架之上,采用DH(Diffie-Hellman)算法在不安全的网络上安全地分发密钥、验证身份,以保证数据传输的安全性。IKE协议可提升密钥的安全性,并降低IPSec管理复杂度。
IPsec协议族
IPSec协议定义了两种通信保护机制:封装安全载荷(ESP,Encapsulating Security Payload)和鉴别头(AH,Authentication Header)。其中ESP机制为通信提供机密性和完整性;AH机制为通信提供完整性保护。ESP机制和AH机制都能为通信提供抗重放(Anti-replay)攻击。IPSec协议可以设置成在两种工作模式下运行:一种是隧道(tunnel)模式,另一种是传输(transport)模式。
IPSec协议使用IKE协议实现安全协议的自动安全参数协商。IKE协商的安全参数包括加密与鉴别算法、加密与鉴别密钥、通信的保护模式(传输或隧道模式)、密钥的生存期等。IKE将这些安全参数构成的集合称为安全关联(SA,security Association),还负责这些安全参数的刷新。
IPSec封装模式
传输模式
在传输模式中,AH头或ESP头被插入到IP头与传输层协议头之间,保护TCP/UDP/ICMP负载。传输模式不改变报文头,故隧道的源和目的地址必须与IP报文头中的源和目的地址一致,所以只适合两台主机或一台主机和一台VPN网关之间通信。
IPsec工作模式即IPSec协议封装模式,主要用于定义在不同工作模式下,数据包交互的封装格式。
这里的IPSec包头就是下面介绍的AH头或者ESP头部。
在传输模式下,IPSec协议处理模块会在IP报头和高层协议报头之间插入一个IPSec报头。在这种模式下,IP报头与原始IP分组中的IP报头是一致的,只是IP报文中的协议字段会被改成IPSec协议的协议号(50或者51) ,并重新计算IP报头校验和。传输模式保护数据包的有效载荷、高层协议,IPSec源端点不会修改IP报头中目的IP地址,原来的IP地址也会保持明文。传输模式只为高层协议提供安全服务。
传输模式报文封装方式
在传输模式下,以TCP报文为例,原始报文经过传输模式封装后,报文格式如上图所示。
传输模式下,AH协议的完整性验证范围为整个IP报文。ESP协议验证报文的完整性检查部分包括ESP头、传输层协议头、数据和ESP报尾,但不包括IP头,因此ESP协议无法保证IP头的安全。ESP的加密部分包括传输层协议头、数据和ESP报尾。
隧道模式
与传输模式不同,在隧道模式下,AH头或ESP头被插到原始IP头之前,另外生成一个新的报文头放到AH头或ESP头之前,保护IP头和负载。隧道模式主要应用于两台VPN网关之间或一台主机与一台VPN网关之间的通信。
与传输模式不同,在隧道模式下,原始IP分组被封装成一个新的IP报文,在内部报头以及外部报头之间插入一个IPSec报头,原IP地址被当作有效载荷的一部分收到IPSec的保护。另外,通过对数据加密,还可以隐藏原数据包中的IP地址,这样更有利于保护端到端通信中数据的安全性。
隧道模式报文封装方式
在隧道模式下,以TCP报文为例,原始报文经过隧道模式封装后,报文格式如上图所示。
隧道模式下,AH协议的完整性验证范围为包括新增IP头在内的整个IP报文。ESP协议的加密部分包括传输层协议头、数据和ESP报尾。ESP协议验证报文的完整性检查部分包括ESP包头、原IP头、传输层协议头、数据和ESP报尾,但不包括新IP头,因此ESP协议无法保证新IP头的安全。
IPsec封装模式对比
传输模式和隧道模式的区别在于:
从安全性来讲,隧道模式优于传输模式。它可以完全地对原始IP数据包进行验证和加密。隧道模式下可以隐藏内部IP地址,协议类型和端口。
从性能来讲,隧道模式因为有一个额外的IP头,所以它将比传输模式占用更多带宽。
从场景来讲,传输模式主要应用于两台主机或一台主机和一台VPN网关之间通信;隧道模式主要应用于两台VPN网关之间或一台主机与一台VPN网关之间的通信。当安全协议同时采用AH和ESP时,AH和ESP协议必须采用相同的封装模式。
IPsec安全协议
AH和ESP是IPSec的两个主要协议。
认证头(AH , Authentication Header)协议为IP通信提供数据源认证、数据完整性检验和防重放保证。
封装安全载荷(ESP, Encapsulating Security Payload)为IP通信提供完整性检验、认证、加密和防重放保证。
AH和ESP可以单独使用,也可以同时使用。在实际的组网中,ESP协议使用较多。IPSec通过AH(Authentication Header)和ESP(Encapsulating Security Payload)这两个安全协议来实现数据报文在网络上传输时的安全性(eg:私有性、完整性、真实性和防重放等)。
AH协议介绍
AH(Authentication Header,认证头):
AH提供的安全服务:
AH不提供任何保密性服务:它不加密所保护的数据包。
不论是传输模式还是隧道模式下,AH提供对数据包的保护时,它保护的是整个IP数据包(易变的字段除外,如IP头中的TTL和TOS字段)。
AH仅支持认证功能,不支持加密功能。AH在每一个数据包的标准IP报头后面添加一个AH报文头。AH对数据包和认证密钥进行Hash计算,接收方收到带有计算结果的数据包后,执行同样的Hash计算并与原计算结果比较,传输过程中对数据的任何更改将使计算结果无效,这样就提供了数据来源认证和数据完整性校验。AH协议的完整性验证范围为整个IP报文。
AH在传输模式下封装
AH在隧道模式下封装
ESP协议介绍
ESP(Encapsulating Security Payload,封装安全有效载荷):
保密服务通过使用密码算法加密 IP 数据包的相关部分来实现。
数据流保密由隧道模式下的保密服务提供。
ESP通常使用DES、3DES、AES等加密算法实现数据加密,使用MD5或SHA1来实现数据完整性认证。
ESP同样被当作一种IP协议对待,紧贴在ESP头前的IP头,以协议号50标志ESP头,ESP之前的IP头中的协议字段将是50,以表明IP头之后是一个ESP头。
并且,ESP不仅具备ESP头,还有一个包含有用信息的ESP尾。
在隧道模式中,ESP保护整个IP包,整个原始IP包将会以ESP载荷的方式加入新建的数据包,同时,系统根据隧道起点和终点等参数,建立一个隧道IP头,作为这个数据包的新IP头,ESP头夹在隧道IP头和原始IP包之间,并点缀ESP尾。
而ESP提供加密服务,所以原始IP包和ESP尾以密文的形式出现。
ESP在验证过程中,只对ESP头部、原始数据包IP包头、原始数据包数据进行验证;只对原始的整个数据包进行加密,而不加密验证数据。
p作为一个IPSec头,ESP头中必然包含一个SPI字段。这个值,和IP头之前的目标地址以及协议结合在一起,用来标识特定的安全联盟。SPI本身是个任意数,可以是使用者自己指定,也可交由一些密钥管理技术自行协商决定。需要注意的是, SPI可以经过了验证,但却无法被加密。这是必不可少的一种做法,因为SPI用于SA的标识,指定了采用的加密算法以及密钥,并用于对包进行解密。如果SPI本身已被加了密,我们会碰到一个非常严重的问题——“先有鸡,还是先有蛋”。
ESP在传输模式下封装
ESP通常使用DES、3DES、AES等加密算法实现数据加密,使用MD5或SHA1来实现数据完整性认证。
ESP同样被当作一种IP协议对待,紧贴在ESP头前的IP头,以协议号50标志ESP头,并且,ESP不仅具备ESP头,还有一个包含有用信息的ESP尾。
在隧道模式中,ESP保护整个IP包,整个原始IP包将会以ESP载荷的方式加入新建的数据包,同时,系统根据隧道起点和终点等参数,建立一个隧道IP头,作为这个数据包的新IP头,ESP头夹在隧道IP头和原始IP包之间,并点缀ESP尾。
而ESP提供加密服务,所以原始IP包和ESP尾以密文的形式出现。
ESP在验证过程中,只对ESP头部、原始数据包IP包头、原始数据包数据进行验证;只对原始的整个数据包进行加密,而不加密验证数据。
ESP在隧道模式下封装
ESP通常使用DES、3DES、AES等加密算法实现数据加密,使用MD5或SHA1来实现数据完整性认证。
ESP同样被当作一种IP协议对待,紧贴在ESP头前的IP头,以协议号50标志ESP头,并且,ESP不仅具备ESP头,还有一个包含有用信息的ESP尾。
在隧道模式中,ESP保护整个IP包,整个原始IP包将会以ESP载荷的方式加入新建的数据包,同时,系统根据隧道起点和终点等参数,建立一个隧道IP头,作为这个数据包的新IP头,ESP头夹在隧道IP头和原始IP包之间,并点缀ESP尾。
而ESP提供加密服务,所以原始IP包和ESP尾以密文的形式出现。
ESP在验证过程中,只对ESP头部、原始数据包IP包头、原始数据包数据进行验证;只对原始的整个数据包进行加密,而不加密验证数据。
IPsec密钥交换
安全联盟SA
定义:安全联盟是通信的IPSec对等体间对某些要素的约定,例如:对等体间使用何种安全协议、需要保护的数据流特征、对等体间传输的数据的封装模式、协议采用的加密算法、验证算法、密钥以及SA的生存周期等。IPSec安全联盟简称IPSec SA。
lSA由三元组来唯一标识 ,包括:
SA是单向的:In和Out方向各需要一个SA。
建立IPSec SA的方式:手工方式和IKE自动协商方式。
IPSec安全传输数据的前提是在IPSec对等体(即IPSec协议的两个端点)之间成功建立安全联盟SA(Security Association)。SA是通信的IPSec对等体间对某些要素的约定,例如:对等体间使用何种安全协议、需要保护的数据流特征、对等体间传输的数据的封装模式、协议采用的加密算法、验证算法,以及用于数据安全转换和传输的密钥以及SA的生存周期等。IPSec安全联盟简称IPSec SA。
SA由一个三元组来唯一标识,这个三元组包括安全参数索引SPI(Security Parameter Index)、目的IP地址和使用的安全协议号(AH或ESP)。其中,SPI是用于唯一标识SA的一个32比特数值,它在AH和ESP头中传输。在手工配置SA时,需要手工指定SPI的取值。使用IKE协商产生SA时,SPI将随机生成。
安全联盟是单向的,在两个对等体之间的双向通信,最少需要两个安全联盟来分别对两个方向的数据流进行安全保护。另外,SA的个数还与安全协议相关。如果您只使用AH或ESP来保护两个对等体之间的流量,则对等体之间就有两个SA,每个方向上一个。如果对等体同时使用了AH和ESP,那么对等体之间就需要四个SA,每个方向上两个,分别对应AH和ESP。
建立IPSec SA的方式:手工方式和IKE自动协商方式。二者的主要区别为:密钥生成方式不同:手工方式下,建立SA所需的全部参数,包括加密、验证密钥,都需要用户手工配置,也只能手工刷新,在中大型网络中,这种方式的密钥管理成本很高;IKE方式下,建立SA需要的加密、验证密钥是通过DH算法生成的,可以动态刷新,因而密钥管理成本低,且安全性较高。
生存周期不同:手工方式建立的SA,一经建立永久存在;IKE方式建立的SA,其生存周期由双方配置的生存周期参数控制。
IKE介绍
因特网密钥交换IKE(Internet Key Exchange)协议建立在Internet安全联盟和密钥管理协议ISAKMP定义的框架上,是基于UDP(User Datagram Protocol)的应用层协议。它为IPSec提供了自动协商密钥、建立IPSec安全联盟的服务,能够简化IPSec的使用和管理,大大简化IPSec的配置和维护工作。
用IPSec保护一个IP包之前,必须先建立一个安全联盟(SA)。IPSec的安全联盟可以通过手工配置的方式建立。但是当网络中节点较多时,手工配置将非常困难,而且难以保证安全性。这时就可以使用IKE(Internet Key Exchange)自动进行安全联盟建立与密钥交换的过程。Internet密钥交换(IKE)就用于动态建立SA,代表IPSec对SA进行协商。
密钥管理协议ISAKMP定义了消息交换的体系结构,包括两个IPSec对等体间分组形式和状态转变(定义封装格式和协商包交换的方式)。
IKE用途
IKE为IPSec协商生成密钥,供AH/ESP加解密和验证使用。
在IPSec通信双方之间,动态地建立安全联盟(SA:Security Association),对SA进行管理和维护。
IKE是UDP之上的一个应用层协议,是IPSec的信令协议。IKE为IPSec协商生成密钥,供AH/ESP加解密和验证使用。AH协议和ESP协议有自己的协议号,分别是51和50。
IKE的安全机制
IKE具有一套自保护机制,可以在不安全的网络上安全地认证身份、分发密钥、建立IPSec SA。
IKE具有一套自保护机制,可以在不安全的网络上安全地认证身份、分发密钥、建立IPSec SA:
-
身份认证:身份认证确认通信双方的身份(对等体的IP地址或名称)。
-
身份保护:通信双方的身份数据在密钥产生之后加密传送,实现了对身份数据的保护。
-
DH(Diffie-Hellman)密钥交换算法:IKE采用DH(Diffie-Hellman)算法在不安全的网络上安全地分发密钥。这种方式配置简单,可扩展性好,特别是在大型动态的网络环境下此优点更加突出。同时,通信双方通过交换密钥交换材料来计算共享的密钥,即使第三方截获了双方用于计算密钥的所有交换数据,也无法计算出真正的密钥。
-
完善的前向安全性PFS(Perfect Forward Secrecy):PFS是一种安全特性,指一个密钥被破解,并不影响其他密钥的安全性,因为这些密钥间没有派生关系。PFS是由DH算法保障的。
-
IKE的安全机制—身份认证
确认通信双方的身份(对等体的IP地址或名称),包括:
-
预共享密钥PSK(pre-shared key)认证。
-
数字证书RSA(rsa-signature)认证。
-
数字信封认证。
对于预共享密钥认证方法,当有1个对等体对应多个对等体时,需要为每个对等体配置预共享的密钥。该方法在小型网络中容易建立,但安全性较低。使用数字证书安全性高,但需要CA来颁发数字证书,适合在大型网络中使用。而数字信封认证用于设备需要符合国家密码管理局要求时使用,此认证方法只能在IKEv1的主模式协商过程中支持。
IKE支持的认证算法有:MD5、SHA-1、SHA2-256、SHA2-384、SHA2-512、AES-XCBC-MAC-96、SM3。
身份认证确认通信双方的身份(对等体的IP地址或名称),包括预共享密钥PSK(pre-shared key)认证、数字证书RSA(rsa-signature)认证和数字信封认证。
-
在预共享密钥认证中,认证字作为一个输入来产生密钥,通信双方采用共享的密钥对报文进行Hash计算,判断双方的计算结果是否相同。如果相同,则认证通过;否则认证失败。
-
在数字证书认证中,通信双方使用CA证书进行数字证书合法性验证,双方各有自己的公钥(网络上传输)和私钥(自己持有)。发送方对原始报文进行Hash计算,并用自己的私钥对报文计算结果进行加密,生成数字签名。接收方使用发送方的公钥对数字签名进行解密,并对报文进行Hash计算,判断计算结果与解密后的结果是否相同。如果相同,则认证通过;否则认证失败。
-
在数字信封认证中,发送方首先随机产生一个对称密钥,使用接收方的公钥对此对称密钥进行加密(被公钥加密的对称密钥称为数字信封),发送方用对称密钥加密报文,同时用自己的私钥生成数字签名。接收方用自己的私钥解密数字信封得到对称密钥,再用对称密钥解密报文,同时根据发送方的公钥对数字签名进行解密,验证发送方的数字签名是否正确。如果正确,则认证通过;否则认证失败。
IKE的安全机制-身份保护
身份数据在密钥产生之后加密传送,实现了对身份数据的保护。
lPSec工作过程中涉及数据加密和协议消息加密两种加密情况。
IPSec采用对称加密算法对数据进行加密和解密。对称加密算法是指数据发送方和接收方使用相同的密钥进行加密、解密。具体加密和解密的过程如上图所示。
用于加密和解密的对称密钥可以手工配置,也可以通过IKE协议自动协商生成。
IKE的安全机制- DH (Diffie-Hellman) 密钥交换算法
DH被称为公共密钥交换方法,它用于产生密钥材料,并通过ISAKMP消息在发送和接收设备之间进行密钥材料交换。然后,两端设备各自计算出完全相同的对称密钥。该对称密钥用于计算加密和验证的密钥。在任何时候,通信双方都不交换真正的密钥。DH密钥交换是IKE的精髓所在。但DH没有提供双方身份的任何信息,不能确定交换的数据是否发送给合法方,第三方可以通过截获的数据与通信双方都协商密钥、共享通信,从而获取和传递信息,所以,IKE还需要身份认证来对对等体身份进行认证。
发起方和响应方利用ISAKMP消息的Key Exchange和nonce载荷交换彼此的密钥材料。
pKey Exchange用于交换DH公开值。
pnonce用于传送临时随机数。
由于DH算法中IKE Peer双方只交换密钥材料,并不交换真正的共享密钥,即使黑客窃取了DH值和临时值也无法计算出共享密 钥,这一点正是DH算法的精髓所在。从抓包中可以看到IKE Peer双方交换密钥材料,以消息3为例:
IKE的安全机制-完美向前保密PFS
短暂的一次性密钥系统称为“完美向前保密”(Perfect Forward Secrecy,PFS)。如果加密系统中有一个秘钥是所有对称密钥的衍生者(始祖),便不能认为那是一个“完美向前保密”的系统。在这种情况下,一旦破解了根密钥,便能拿到其它衍生的所有密钥,受那些密钥保护的全部数据都会曝光。=
在IPSec里,PFS是通过在IPSec SA协商阶段重新进行一次DH交换来实现的。PFS是一种安全特性,指一个密钥被破解,并不影响其他密钥的安全性,因为这些密钥间没有派生关系。IPSec SA的密钥是从IKE SA的密钥导出的,由于一个IKE SA协商生成一对或多对IPSec SA,当IKE的密钥被窃取后,攻击者将可能收集到足够的信息来导出IPSec SA的密钥,PFS通过执行一次额外的DH交换,保证IPSec SA密钥的安全。
IKE协议版本
IKE协议分IKEv1和IKEv2两个版本,总体区别如下:
IKEv1
IKEv1使用两个阶段为IPSec进行密钥协商并建立IPSec SA。
-
第一阶段,通信双方协商和建立IKE本身使用的安全通道,建立一个IKE SA,有那种协商模式:主模式和野蛮模式。
-
第二阶段,利用这个已通过了认证和安全保护的安全通道,建立一对IPSec SA,产生真正可以用来加密数据流的密钥,用于最终的IP数据安全传送。
IKEv2
IKEv2简化了协商过程。在一次协商中可直接产生IPSec的密钥,生成IPSec SA。
本期作者:李忻蔚,深信服安全服务认证专家
深信服安全服务认证专家(SCSE-S),产业教育中心资深讲师,曾任职于中国电子科技网络信息安全有限公司,担任威胁情报工程师、渗透测试工程师、安全讲师;多年来为政府部门进行安全培训,安全服务;多次参与国家级、省级攻防比武的出题和保障任务,擅长Web安全、渗透测试与内网渗透方向。