IaaS环境中支持自定义算法的VPNaaS框架

2018-05-10 01:47陈兴蜀王毅桐
郑州大学学报(理学版) 2018年2期
关键词:中间层租户内核

车 奔, 陈兴蜀, 王毅桐, 葛 龙

(四川大学 网络空间安全研究院 四川 成都 610065)

0 引言

云计算基础设施即服务(IaaS)技术作为IT业的新兴技术,将大量基础设施资源进行抽象,形成巨大规模的共享基础设施资源池[1-2].CSA认为这样的做法不仅为租户带来了便捷,还节约了租户用于购买基础设施和维护等方面的投资,但也带来了巨大的安全挑战[3].NIST指出,特别是在基于IaaS的公有云环境中,同一个虚拟化基础设施的资源池会被多租户共享,租户保存在云环境中的数据安全和数据在迁移过程中的安全成为主要面临的安全挑战[4].针对IaaS云环境中的这些安全风险,通过引入虚拟专用网络(VPN)技术可以有效保障租户数据的安全性[5].

目前,Amazon、阿里云等IaaS服务提供商都提供了基本的VPN服务.其中Amazon AWS提供了可以在公司数据中心和VPC之间创建硬件VPN连接的服务[6].阿里云提供的VPN服务基于IPSec协议,通过加密通道将企业数据中心和阿里云专有网络连接起来.常见的开源IaaS平台OpenStack上的VPN服务从Havana版本开始提供给租户,在租户边缘虚拟路由器处建立IPSec VPN站点连接[7].上述IaaS平台上的VPN服务,所提供的算法都为公开算法,并且算法种类较少,主要包括AES、DES、SHA1、MD5等算法[8],缺少支持用户自定义算法的能力,这些限制因素使租户的多样化需求很难被满足.

针对向VPNaaS引入自定义算法的问题,现有研究主要集中于传统VPN,基本没有涉及云计算及IaaS环境,并且可实施的方法较少.文献[9-10]实现了添加第三方算法的IPSec VPN服务器,但其算法都是由硬件加密卡实现,这种做法性价比较低,灵活性和可扩展性不足,整体部署较为不便,不适用于IaaS这样的大规模网络环境,并且硬件加密卡对主板插槽的类型也有要求,无法满足普适性.文献[11]对云计算中的VPN应用场景进行了研究,但其实现的是传统VPN在实体机和虚拟机混合的局域网中的简单应用,没有对基础设施完全虚拟化的IaaS环境进行讨论,也没有形成体系或框架.针对当前IaaS环境下的VPN服务存在的这些问题,本文提出了一种在IaaS环境中通过全软件方式实现的VPNaaS框架,将IaaS环境中的VPN以服务的形式提供给租户,并支持向其添加自定义算法.

1 相关技术

1.1 传统VPN

传统VPN是通过网络安全协议将虚拟的专用网络建立在公共网络环境上,从而满足安全通信的要求[12].本文主要研究基于IPSec协议的VPN.IPSec是通过对IP数据包的分组进行加密和认证来保障IP协议安全的网络传输协议族[13].

1.2 云计算IaaS

IaaS是云计算三大服务模式之一,NIST对其做了明确的定义:IaaS为用户提供了处理、存储、网络及其他基础性的计算资源,以供用户部署和运行任意的软件,包括操作系统或应用软件.用户并不管理或控制底层的云基础设施,但是拥有对操作系统、存储和所部署的应用的控制,以及一些指定网络组件的有限控制(例如主机防火墙等).

2 IaaS环境中支持自定义算法的VPNaaS框架

以传统IPSec VPN实现方式OpenSwan以及常用开源IaaS平台OpenStack为参考,将传统IPSec VPN和云计算IaaS环境相结合,设计了IaaS环境中支持自定义算法的VPNaaS框架,实现租户不同虚拟网络域之间的安全通信,提高了云平台上租户的数据安全性和数据在迁移过程中的安全性.

图1 IaaS环境中VPNaaS总体框架Fig.1 The architecture of VPNaaS in IaaS

图1为 IaaS环境中VPNaaS总体框架.IaaS环境中支持自定义算法的VPNaaS框架分为控制层、中间层和驱动层3个层面,主要由VPN控制模块、配置生成模块、IKE模块和IPSec模块4个组件以及2种数据库组成,均部署在IaaS环境中虚拟化网络基础设施的节点上.

1) 控制层

a) VPN控制模块.从租户下发的请求中获取建立IPSec VPN连接过程中需要的元数据,交给配置生成模块处理,同时操作上层安全策略数据库.

b) 配置生成模块.接收VPN控制模块发送的元数据并将其填入配置文件中,供中间层的IKE模块和IPSec模块调用.

c) 控制层策略数据库:存放租户、虚拟网络和虚拟机等数据以及租户下发的VPN连接请求的相关参数.

2) 中间层

图2 控制层工作流程Fig.2 The control plane workflow

a) IKE模块.运行在用户空间,实现2个阶段的密钥协商过程,所使用的算法由中间层算法库提供.

b) IPSec模块.运行在内核空间,实现IPSec协议栈,对进入或发出的IP数据包进行安全处理,如加密、认证等.该过程的算法通过调用内核算法库实现.

c) 算法库.包括中间层算法库和内核算法库,分别为IKE模块和IPSec模块提供算法支持.

d) 中间层策略数据库.存放与VPN连接相关的算法、群组、密钥等信息.

3) 驱动层

包括虚拟网卡驱动,接收和发送数据包.

2.1 控制层工作流程

控制层包含VPN控制模块、配置生成模块以及控制层策略数据库,其主要工作流程如图2所示.

在租户下发创建IPSec VPN连接请求之前,需要下发有关IKE策略、IPSec策略以及VPN连接两端相关信息的请求.这3个部分只进行向上层策略数据库添加或更新记录的工作.

当租户下达创建IPSec VPN连接的请求之后,通过RESTful API的形式,请求中的参数被传给IaaS环境中负责实现虚拟网络的组件.这些参数的最终作用点是在租户虚拟网络域的边界路由上.在配置边界路由时,配置生成模块会将参数变量写入配置文件模板中,从而生成配置文件供IKE模块和IPSec模块调用.配置文件主要包括两个:一个保存VPN连接两端的相关信息,如网关IP、子网IP以及IKE、IPSec模块所使用的算法和群组等;另一个保存连接双方相互认证的参数,如预共享密钥.

2.2 中间层工作流程

中间层的设计基于传统IPSec VPN的实现方式OpenSwan和Linux内核IPSec协议栈NETKEY.该层的主要工作由IKE模块和IPSec模块完成,此外还包括数据库操作模块、中间层策略数据库以及2个算法库.

2.2.1IKE模块 IKE模块工作在用户空间,主要完成2个阶段的安全联盟(SA)和密钥的协商工作.SA可以理解为与VPN连接相关的一组规则.第1阶段协商的SA为第2阶段服务.图3为 IKE模块协商SA的工作流程.当IKE模块监听到IKE消息载荷后,会根据载荷的状态选择进入IKE协商的第1阶段或第2阶段流程.协商SA的2个阶段都需要通过安全数据库操作模块向存放安全规则的中间层策略数据库查询密钥协商过程中应使用的算法、群组等信息,并且从中间层算法库中调用对应算法,对IKE消息进行加密、哈希.

在IKE模块完成密钥协商后,通过与内核层的接口将协商的SA通知数据库操作模块,该模块解析消息,完成向中间层数据库添加、更新SA等相关操作.

2.2.2IPSec模块 在完成SA协商和数据库的更新之后,建立IPSec连接的两端就可以根据中间层策略数据库中对应的算法以及协商的密钥来进行安全通信,这些工作由IPSec模块来完成,运行在内核空间内.IPSec模块发送数据包的工作流程如图4所示.用户应用程序提交的待发送的IP数据包都需要在数据库中查找其处理策略.如果数据包不需要进行IPSec处理,则该包直接添加IP头,并交由下一层处理;如果要求进行IPSec处理,根据IP数据包中的目的地址,在数据库中找到相应SA,然后进行SA中规定的IPSec处理.经过处理之后的IPSec数据包再交由下一层处理.如果相应的SA还没有建立或SA已过期,就需要请求IKE模块与远程主机协商建立SA.

图3 IKE模块协商SA的工作流程Fig.3 The workflow of IKE module to agree SA

图4 IPSec模块发送数据包的工作流程Fig.4 The workflow of IPSec module to send packets

接收并处理IPSec数据包的流程与上述发送流程类似.

2.3 添加自定义算法的通用方法

为了使所提出的IaaS环境下的VPNaaS框架支持自定义算法,研究了向其添加自定义算法的通用方法.根据所提出的VPNaaS框架,在建立IPSec VPN连接时,IKE模块和IPSec模块所调用的算法库不同.IKE模块调用的是中间层算法库,而IPSec模块使用的算法通过调用Linux内核的算法库实现.所以在添加自定义算法时,主要涉及对中间层算法库和内核算法库的修改和添加.此外,还需对调用上述算法库的IKE模块和IPSec模块进行自定义算法标识的添加和算法接口的定义等.

针对控制层,由于控制层主要对自定义算法的名称进行识别,无须对算法进行标识以及将标识与算法名进行对应,所以在添加自定义算法时,无须对控制层各模块进行修改和添加.

2.3.1IKE模块 IKE模块沿用国际标准RFC IKEv1工作流程,从IKE协商第1阶段的首包开始,就涉及到加解密和哈希算法的协商.在协商的过程中,均用算法标识代表算法.所以在添加自定义算法时,首先需要对IKE模块2个阶段的新算法标识进行添加.在代码中,算法标识通常以宏定义的形式供后续流程调用.在添加算法标识后,需将标识与算法名进行对应,并向中间层数据库注册新算法与其他加密算法或哈希算法,还进行群组的组合.

2.3.2中间层算法库 从IKE协商第1阶段的第3个数据包开始,就需要使用中间层算法库中的算法进行数据包的处理,也就需要向中间层算法库注册新算法并实现.注册新算法的接口通常为结构体,如图5所示.以OpenSwan为例,OpenSwan在该处注册新算法的接口就是一个encrypt_desc结构体, 该结构体包括新算法的名称、标识、类型、密钥长度等信息,并在do_crypt字段指明实现自定义的新算法的函数,最后在该函数中实现自定义算法.

2.3.3IPSec模块 IPSec模块主要依托于NETKEY模块来实现.在建立IPSec VPN后,连接两端所有的通信流,均由内核NETKEY模块调用内核算法库中的算法进行加解密或哈希.在添加自定义的新算法时,新算法需要注册到NETKEY模块中.注册新算法的动作在ealg_list数组中实现,即在该数组中加入新算法的数据结构,如图6所示.该数据结构包括新算法的名称、块长度、标识和密钥长度等信息.新算法标识仍以宏定义的形式向内核中添加.

图5 算法接口结构体Fig.5 The struct of the algorithm api

图6 注册算法数据结构Fig.6 The struct to register the algorithm

2.3.4内核算法库 在向内核算法库中添加自定义算法时,新算法以可加载的内核模块的形式实现.针对分组加密算法,这里的新算法的实现方式与中间层算法库中的新算法有所不同,由于内核已经提供了分组加密模式(如ECB、CBC等)的实现,所以这里的新算法的实现只针对基本加解密单元.

自定义新算法的模块中,需要包含算法的接口供IPSec模块调用.以加密算法为例,内核加密算法接口均是一个crypto_alg结构体.该结构体包括新算法名称、类型、密钥长度、密钥生成函数和加解密函数等信息.实现自定义的新算法,即实现crypto_alg结构体中的密钥生成函数和加解密函数.最后,添加模块初始化函数和释放函数.

3 测试与分析

3.1 测试环境

图7 测试虚拟网络拓扑Fig.7 The testing virtual network topology

以OpenStack平台的Icehouse版本作为控制层的实现方式,在其上部署云计算IaaS虚拟网络环境.以OpenSwan作为中间层的实现方式,完成底层IPSec VPN虚拟连接的建立工作.其中,OpenSwan的版本为2.6.32,Linux内核采用2.6.32- 431版本,操作系统为CentOS 6.5,自定义算法以国密分组加密算法SM4为例.国密算法是由国家密码局制定标准的一系列国产密码算法.测试采用的虚拟网络拓扑如图7所示.

3.2 VPN功能有效性测试

对IPSec VPN功能有效性进行测试,测试结果为:在建立VPN连接之前,子网1和子网2无法通信;创建IPSec VPN连接后,连接显示ACTIVE状态,子网1和子网2可以通信,IPSec VPN功能生效.

3.3 添加自定义算法有效性测试

在创建IKE策略和IPSec策略时,分别选择新添加的SM4加密算法,并在2个子网通信的过程中,于虚拟边界路由器外网端口处抓包,发现数据包均按ESP协议进行了加密处理.查看OpenSwan日志文件,IKE模块和IPSec模块均采用了新添加的SM4算法进行加解密.IKE模块算法和IPSec模块算法分别如图8和图9所示,其中sm4_cbc_128即为IKE模块所用加密算法,SM4_128即为IPSec模块所用加密算法.

图8 IKE模块算法Fig.8 The algorithm of IKE module

图9 IPSec模块算法Fig.9 The algorithm of IPSec module

3.4 性能测试

使用ping命令进行通信延迟时间测试,测试时选用新添加的国密SM4算法.建立IPSec VPN后的时延测试结果如图10所示,可以看出,时延在1.3 ms左右波动,在可接受的范围内.系统资源占用率如图11所示.CPU(3.5 GHz单核)的使用率为1.7%左右,内存(2 G)的使用率基本保持在3.3%,均在可接受的范围内.

图10 时延测试Fig.10 Delay time test

图11 系统资源占用率Fig.11 System resource usage rate

4 结束语

针对云计算IaaS环境下的VPN服务中,算法种类少且均为公开算法的问题,提出了一种在IaaS环境中通过全软件方式实现的支持自定义算法的VPNaaS框架.测试结果表明,该框架具有良好的扩展性和稳定性,并且可以较好地支持自定义算法,可以为IaaS环境中高安全要求的通信场景提供一定的帮助.但本文的研究工作主要基于IPSec VPN,下一步的研究可以扩展到其他协议.由于云计算平台上的VPN服务提供给用户的时间较短,仍存在一些明显的漏洞,所以完善云计算平台上的VPN服务的要求也会越来越迫切.

参考文献:

[1] MELL P,GRANCE T.The NIST definition of cloud computing[R].Gaithersburg:National Institute of Standards and Technology,2011.

[2] 刘振鹏,刘晓丹,张锡忠,等.云环境下一种多维QoS约束的工作流调度算法[J].郑州大学学报(理学版),2017,49(2):91-96.

[3] BRUNETTE G,MOGULL R.Security guidance for critical areas of focus in cloud computing V3.0[R].Toronto:Cloud Security Alliance,2011.

[4] SCARFONE K,SOUPPAYA M,HOFFMAN P.Guide to security for full virtualization technologies[R].Gaithersburg:National Institute of Standards and Technology,2011.

[5] MOSHARAF K C,RAOUF B.A survey of network virtualization[J].Computer networks,2010,54(5):862-876.

[6] Amazon Web Services Inc.Overview of security processes[EB/OL].[2017-09-01]. http://media.Amazonwebservices.com/pdf/AWS_Security_Whitepaper.pdf.

[7] LOCATI F A.OpenStack cloud security[M].Birmingham:Packt Publishing Ltd, 2015.

[8] VARIA J.Migrating your existing applications to the AWS cloud[EB/OL].[2017-07-16]. http://media.Amazonwebservices.com/CloudMigration-main.pdf.

[9] 邓旻昊,汪海航.为IPSec添加新对称加密算法[J].计算机安全,2008(12):24-28.

[10] 郑艺斌.基于国密标准的IPSec VPN服务器设计与实现[D].西安:西安电子科技大学,2014.

[11] 龙艳,郭华.云计算中的VPN应用研究[J].甘肃科技纵横,2013,42(3):13-16.

[12] GLEESON B, LIN A, HEINANEN J, et al.A framework for IP based virtual private networks[G].RFC Publisher,2000.

[13] CHENG P C, GARAY J A, HERZBERG A, et al.Security architecture for the internet protocol[J].Computer standards and interfaces, 1999,20(6):409.

猜你喜欢
中间层租户内核
多内核操作系统综述①
Zn-15Al-xLa中间层对镁/钢接触反应钎焊接头性能影响
强化『高新』内核 打造农业『硅谷』
活化非遗文化 承启设计内核
多租户数据隔离及加密研究
基于多租户隔离的云安全建设
微软发布新Edge浏览器预览版下载换装Chrome内核
一种新型高效的多租户共享数据模型
如何利用合作教学激发“中间层”的活跃
浅谈通信综合营帐数据中间层设计原则与处理流程