Bootstrap

杨元原博士国密课堂 · 第三期 | 商用密码应用安全性评估:IPSecVAN协议的原理和测评验证(一)


IP数据包本身并不提供任何安全特性。很容易伪造出IP包的地址、修改其内容、重播以前的包以及在传输途中拦截并查看包的内容。IPSec提供了一种标准的、健壮的机制,可为IP及上层协议(如UDP和TCP)提供数据机密性、完整性、真实性等安全保证。

本文首先介绍了协议、密码协议等概念,之后基于密码国家标准和行业标准对IPSec VPN协议的技术规范进行了说明,并通过实际案例,说明了IPSec VPN协议测评验证方法。


                              密码协议的基本概念?

(1)协议的定义

所谓协议,就是两个或两个以上的参与者为完成某项特定的任务而采取的一系列步骤。包含以下三层含义:

1)协议自始至终是有序的过程,每一个步骤 必须依次执行,在前一步没有执行完之前,后面的步骤不能执行;

2)协议至少需要两个参与者;

3)通过执行协议必须能够完成某项任务。

协议运行前,协议中的每个参与者都必须预先拥有或知道运行协议所需的资源,都必须预先知道所要完成的协议步骤,并同意遵守它。协议本身必须被明确定义,不能产生歧义,并且必须是完整的,对每种可能的情况都必须规定具体的动作。

(2)密码协议

密码协议又叫做安全协议,它以密码算法为基础,运行在网络或分布式系统中、借助于密码算法为有安全需求的各方提供一系列步骤,以达到身份鉴别、密钥分配、信息传输保护等目的。

密码协议按照其完成的功能可以分成以下三类:

1)身份认证协议:在密码协议中,认证是最基本的安全服务,是信息安全的基础。密码协议的认证过程包括标识和验证两个步骤,标识是指主体对自己的身份进行声明的过程,而验证是指通信的另一方对主体声明的身份进行验证的过程。当某个主体声称自己的身份时,认证服务应保证通信的另一方声称身份的真实性。

2)密钥交换协议:密钥交换协议是指在参与协议的两个或者多个主体之间建立一个共享的密钥的协议,这种密钥通常都是临时性的,只用于一次会话,在新的会话中共享的密钥都会被更新。通常使用基于公钥的算法来实现密钥交换协议。

3)认证和密钥交换协议:认证和密钥交换协议是指将认证和密钥交换结合在一起,能够同时实现身份认证和密钥交换两种功能的协议。它是网络通信中应用范围最广,也最普遍的密码协议。在认证和密钥交换协议中,通信主体首先运用协议的认证功能对另一端主体的身份进行认证,如果认证成功,再通过密钥交换功能协商出通信使用的会话密钥。

(3)密码协议的安全特性

密码协议的主要目的在于通过消息的传递来实现某种安全需求,这些安全需求也被称为安全特性,包括机密性、认证性、完整性、不可否认性、新鲜性等等。简单地说,密码协议的目的就是确保这些安全特性在协议执行完毕时能够得以实现。下面列出了密码协议的几种安全特性:

1)机密性:机密性的目的是保护敏感信息不泄露给非授权用户。即使攻击者能够截获含有敏感信息的消息,他也无法得到其中的敏感信息。保证协议机密性最直接的办法就是对消息进行加密。

2)认证性:认证性用来抵抗身份假冒攻击,确保通信另一方主体身份的真实性。在认证协议中,当某一成员(声称者)提交一个主体身份并声称他是那个主体时,另一方需要运用协议的认证功能证明该身份就是其声称的身份。

3)完整性:完整性的目的是保护协议消息不被非法篡改、删除和替代。最常用的办法是电子信封、数字签名、消息认证码等;

4)不可否认性:不可否认性指通信主体能够提供另外某个主体与其进行协议通信的证明,以保证自身合法利益不受侵害。不可否认性要求协议的主体必须对自己的行为负责,不能进行事后否认;

5)新鲜性:新鲜性用来保证消息的实时性,即保证该消息不是上次或者之前用过的消息,新鲜性通常用随机数或时间戳来实现。


IPSec VPN协议

(1)VPN协议

VPN(Virtual Private Network)即虚拟专用网,用于在公用网络上构建私人专用虚拟网络,并在此虚拟网络中传输重要数据。

VPN具有以下两个基本特征:

1)专用(Private):VPN网络是专供VPN用户使用的网络,对于VPN用户,使用VPN与使用传统专网没有区别。VPN能够提供足够的安全保证,确保VPN内部信息不受外部侵扰。VPN与底层承载网络(一般为IP网络)之间保持资源独立,即VPN资源不被网络中非该VPN的用户所使用。

2)虚拟(Virtual):VPN用户内部的通信是通过公共网络进行的,而这个公共网络同时也可以被其他非VPN用户使用,VPN用户获得的只是一个逻辑意义上的专网。

VPN的基本原理是利用隧道(Tunnel)技术,对传输报文进行封装,利用VPN技术建立专用数据传输通道,实现报文的安全传输。

隧道技术使用一种协议封装另外一种协议报文(通常是IP报文),而封装后的报文也可以再次被其他封装协议所封装。对用户来说,隧道是其所在网络的逻辑延伸,在使用效果上与实际物理链路相同。

图片

图1

在图1所展示的网络中,当分支机构员工访问总部服务器时,报文封装过程如下:

1) 报文发送到网关时,网关1识别出该用户为VPN用户后,发起与总部网关即网关2的隧道连接,从而网关1和网关2之间建立VPN隧道。

2) 网关1将数据封装在VPN隧道中,发送给网关2。

3)网关2收到报文后进行解封装,并将原始数据发送给最终接收者,即服务器。

反向的处理也一样。VPN网关在封装时可以对报文进行加密处理,使Internet上的非法用户无法读取报文内容,因而通信是安全可靠的。

(2)IPSec VPN

IPSec 是Internet工程任务组(IETF)制定的一个开放的网络层安全框架协议,它不是一个单一的协议,而是一套协议簇。它工作在ISO参考模型第三层,为IP网络通信提供透明的安全服务,即在不修改应用系统和服务的情况下,对传输的数据进行机密性和完整性保护。

图片

图2

IPSec协议如图2所示,它为网络层上的通信数据提供一整套的安全体系结构,包括IKE(Internet Key Exchange)协议、认证头(Authentication Header,AH)协议、封装安全载荷(Encapsulating Security Payload,ESP)协议和用于网络身份鉴别及加密的一些算法等。从工作流程上看,IPSec协议可分为两个环节:IKE是第一个环节,完成通信双方的身份鉴别、确定通信时使用的IPSec安全策略和密钥,即安全联盟(SA,Security Associations);第二个环节是使用数据报文封装协议和IKE中协定的IPSec安全策略和密钥,实现对通信数据的安全传输。其中AH协议定义了认证的应用方法,提供数据源认证和完整性保证;ESP协议定义了加密和可选认证的应用方法,提供机密性保证。在实际进行IP通信时,可以根据实际安全需求同时使用这两种协议或选择使用其中的一种。

图片

图3

IPSec的安全特性包括(图3):

1) 真实性(不可否认性):“真实性”可以证实消息发送方是唯一可能的发送者,发送者不能否认发送过消息。“真实性”是采用公钥技术的一个特征,当使用公钥技术时,发送方用私钥产生一个数字签名随消息一起发送,接收方用发送者的公钥来验证数字签名。由于在理论上只有发送者才唯一拥有私钥,也只有发送者才可能产生该数字签名,所以只要数字签名通过验证,发送者就不能否认曾发送过该消息。

2) 防重放:“防重放”确保每个IP包的唯一性,保证信息万一被截取复制后,不能再被重新利用、重新传输回目的地址。该特性可以防止攻击者截取破译信息后,再用相同的信息包冒取非法访问权。

3)完整性:防止传输过程中数据被篡改,确保发出数据和接收数据的一致性。IPSec利用Hash函数为每个数据包产生一个杂凑值,接收方在打开包前先计算杂凑值,若数据包遭篡改导致杂凑值不相符,则该数据包即被丢弃。

4) 机密性:在传输前,对数据进行加密,可以保证在传输过程中,即使数据包遭截取,信息也无法被读取。

为规范IPSec VPN产品的研制、检测、使用和管理,国家先后发布了《GM/T 0022-2014 IPSec VPN技术规范》、《GB/T 36968-2018 信息安全技术 IPSecVPN 技术规范》、《GM/T 0023-2014 IPSec VPN 网关产品规范》等标准,规定了基于商用密码算法的IPSec VPN协议实现。其中IKE、AH和ESP的规定如下:

(2.1)IKE

IKE协议用于鉴别通信双方身份、创建安全联盟(SA,也称为安全关联)、协商加密算法以及生成共享会话密钥等,其中ISAKMP(互联网安全联盟和密钥管理协议,Internet Security Association and Key Management Protocol)是IKE的核心协议,定义了建立、协商、修改和删除SA的过程和报文格式,并定义了密钥交换数据和身份鉴别数据的载荷格式。它是IPSec的基础,协议的内容包括数据报文封装协议、IPSec工作模式、密码算法等安全策略和密钥。IPSec的两种封装协议(AH和ESP)均使用SA中协商的内容保护通信安全。另外,SA是单向的,一个SA为单一通信方向上传输的数据提供一种安全服务,通信双方需要产生属于自己的SA。

1)安全联盟

安全联盟(SA,也称为安全关联)是构成IPSec的基础。安全联盟是两个通信实体经协商建立起来的一种协定。它们决定了用来保护数据包安全的IPSec协议、转码方式、密钥以及密钥的有效存在时间等等。任何IPSec实施方案始终会构建一个SA数据库(SADB),由它来维护IPSec协议用来保障数据包安全的SA记录。

SA是一个单向的逻辑连接,也就是说,IPSec 需要建立两个SA,一个用于入站通信,另一个用于出站通信。例如,有两个主机(比如A和B)正在通过ESP进行安全通信,那么主机A就需要有一个SA,即SA(out),用来处理外发的数据包;另外还需要有一个不同的SA

;