APP下载

面向移动虚拟化应用的安全传输协议研究与设计

2018-12-22李大卫杨兆元

计算机工程与设计 2018年12期
关键词:加密算法公钥数据包

李大卫,杨兆元,王 斌

(1.北京计算机技术及应用研究所,北京 100854;2.火箭军驻北京地区专装军代室,北京 100083)

0 引 言

目前,由于对移动应用的相关安全风险认识不足,在开发应用时没有将信息安全列入软件全生命周期,而导致移动终端应用中存在大量的恶意代码、漏洞等[1],用户在访问应用时恶意代码会被释放,对移动终端中所存储的数据进行窃取。为避免重要数据在传输过程中被窃取的损失,国内专家和学者们对移动终端数据安全进行了深入研究,采用了多种安全手段来实现移动终端数据的安全,如文献[2]提出了移动终端安全防护体系,从硬件层、系统层及应用层来分析如何应对移动终端数据所面临的安全威胁;文献[3]中提出的可信移动终端安全方案可以有效防止攻击者访问、窃取和篡改合法用户在服务中存储的隐私数据,通过利用ARMTrustZone硬件隔离技术构建可信移动终端;文献[4]提出了一种基于容器技术的虚拟化技术,使多个Android系统同时运行在一个设备上,并在Linux内核中生成多个相互隔离的运行空间,以用于保证用户数据的安全性。

然而,上述解决方案的移动终端数据仍然存储在终端上,无法保证数据安全。通过移动虚拟化技术在移动终端上显示服务器端的文档浏览页面,从而实现数据不落地,不易造成数据泄漏。由于移动虚拟化的高安全性主要体现在数据传输过程中所使用的通信协议,如何进行安全的数据传输则成为了移动虚拟化应用中数据安全防护的关键点。

1 RDP协议分析

1.1 RDP协议架构

远程桌面传输协议(remote desktop protocol)是一种支持多通道数据通信的网络通信协议,当与服务器成功建立通信后,可通过虚拟信道进行数据传输。RDP协议以传输控制协议(TCP)为基础,其架构是建立在传输层协议之上的,RDP协议上层的数据通过流结构体传输到网络连接层,再通过网络连接层的套接字进行发送[5]。该协议采用了与开放系统互连参考模型(OSI)类似的架构层次,协议栈由上至下主要分为5层,最底层为网络连接层,在其上面分别是传输服务数据层,虚拟通道层,加密解密层和功能数据层[6];其协议栈架构如图1所示。

图1 RDP协议架构

网络连接层的功能与传统的TCP/IP层功能一样,主要是采用握手过程建立通信双方稳定的网络连接。一个完整的RDP数据包格式[7]组成见表1,数据在最开始的时候,先添加的是功能数据层控制头,之后按RDP协议栈架构层次依次添加加密解密层控制头、虚拟通道层控制头及传输服务层控制头,最后将数据包传递到网络连接层,由TCP/IP协议对其进行标准的控制头封包。

表1 RDP数据报头结构

与网络连接层通信的上层为传输服务层,该层用于表示RDP数据的正常连接通信,可将网络连接层发送的连续数据信息打包或分割成大小不同的多个数据包进行传输,避免了RDP数据包过长而造成数据丢失;虚拟通道层是对不同的数据分不同的虚拟通道进行通信;再往上就是RDP协议的加密解密层,该层主要是对所有的通信数据进行加密、解密处理,从而实现RDP数据包的加密传输;功能数据层主要是对上层应用提供支持,用于完成RDP协议的最终交互,且所有的功能数据信息(如画面信息、声音数据、输入数据等)都通过该层进行处理。

1.2 RDP安全机制

RDP会话在建立连接和传输数据的过程中采取了多种安全机制,客户端和服务器互相发送请求以认证通信双方的身份有效性,并建立数据传输链路;然后双方之间进行密钥协商,使用协商出的密钥对数据进行加密传输[8]。会话建立过程如图2所示。

图2 建立RDP会话

(1)会话连接建立阶段

在建立连接阶段,RDP协议使用了单向认证安全策略,并使用RSA加密算法对进行密钥交换,但此过程中服务器仅对客户端进行身份验证。

1)客户端先向服务器发送初始化连接请求包,其中包含客户端可使用的加密算法、密钥交换算法、密钥协商算法和消息认证码等;

2)当服务器收到客户端发送的连接请求后,会返回一个包含加密算法、密钥交换算法和消息认证码的响应数据包,同时服务器会随机生成一个大整数和RSA公钥,将其一并发送给客户端;

3)客户端收到响应数据包后,获取服务器生成的大整数和公钥,随后随机产生客户端自己的大整数,并使用服务器的RSA公钥对大整数进行加密,最后将加密后的数据包发送给服务器。

(2)数据传输阶段

在数据传输的过程中,使用RC4对称加密算法对通信数据进行加密操作[9]。在通信双方进行会话连接的过程中,双方依据特定的算法使用各自产生的随机数进行密钥协商,生成RC4的密钥,并使用消息认证码进行完整性校验对比。密钥交换算法可保证密钥的安全性,双方使用生成的RC4密钥对数据进行加密。

1.3 RDP协议安全性分析

RDP协议在使用的过程中,由于通信双方只进行单向的身份认证,客户端无法验证服务器的身份和数据包的完整性。攻击者可伪造一个虚假服务器,利用ARP地址欺骗、DNS欺骗等攻击方式将伪造的服务器公钥传输至客户端,并构建一个完整的RDP会话,从而获取到传输过程中的敏感信息[10]。

高安全性的RDP协议需依赖于复杂的握手过程和较长的加密密钥,但会明显增加协议的响应时间、网络带宽和吞吐量等性能[11]。由于中间人攻击可利用RDP协议的单向认证机制对敏感数据进行窃取,需防范不同类型的地址欺骗,为保证移动虚拟化应用系统数据传输的可靠性和安全性,故结合安全套接层来设计实现一种客户端与服务端的严格双向验证安全协议。

2 移动虚拟化安全传输协议设计

通过对RDP协议进行安全性分析,RDP协议的单向身份认证机制无法抵御各种类型的地址欺骗,攻击者可对数据包进行捕捉,或伪造一个会话对客户端进行信息骗取,会导致数据泄漏。针对该协议的不足,提出了移动虚拟化安全传输协议架构,设计了一种基于椭圆曲线加密算法[12]的双向身份认证机制。通过对原有RDP协议栈进行结构重建,将安全套接层添加至协议栈的网络连接层之上,以实现客户端和服务器间的双重身份认证。改进后的安全传输协议框架如图3所示。

图3 移动虚拟化安全传输协议框架

2.1 移动虚拟化安全传输协议安全设计

在双方进行握手连接的过程中,客户端和服务器的认证机制分为3个级别:完全匿名,单向认证,双向认证。完全匿名或单向认证方式在建立连接过程中属于不安全的状态,中间人攻击可轻易骗取传输的信息。安全套接层采用了基于RSA的非对称加密算法来保证密钥在进行双方交换中的安全性,但在其握手过程中,服务器仅对客户端进行认证,而客户端不验证服务器的身份信息。同时,解密RSA私钥将大量占用服务器的计算时间,使客户端一直处于等待状态。

随着RSA加密解密过程复杂性的不断增加,需要的RSA随机数和密钥的长度也越来越大,这使整个的加解密运算过程速率过低。利用椭圆曲线加密算法的计算量小,存储空间占用小,处理速度快,且带宽要求低[13]这一优势,可通过椭圆加密算法实现同等的加密算法安全强度,故椭圆曲线加密算法(ECC)算法应用于安全套接层较RSA算法有更高的安全性。利用基于椭圆曲线加密算法扩展的Diffie-Hellman密钥交换算法(ECDH)和数字签名算法(ECDSA)来替换RSA公钥密码算法的密钥交换算法(DH)和数字签名算法(DSA),并通过RDP协议的加密解密层对应用层数据进行加密操作,因此数据是以密文的形式在虚拟通道中传输,只有消息认证码比对后的密钥才能解密密文,从而可对中间人攻击做出防范。

通过上述分析,为实现通信双方的双向身份认证,故在RDP协议的传输服务层与网络连接层之间插入安全套接层,并利用椭圆曲线加密算法来改进安全套接层(secure socket layer)的安全性,通信双方增加了相互的证书认证策略,新的层次结构如图4所示。服务器将对响应数据包格式进行修改,当服务器收到客户端发送RDP请求数据包后,直接发送一个包含数字签名和ECC公钥的证书;当客户端收到响应报文后,对服务器所发送的证书进行完整性校验,即利用客户端的消息认证码来验证ECC证书和数字签名的有效性及真实性,并共同协商出共享密钥。

图4 加入安全套接层的协议层次结构

RDP协议在使用安全套接层后,服务器的RSA公钥和随机数会以证书的形式发送给客户端,客户端使用消息认证码和数字签名对其来源进行认证,并校验它的完整性。中间人攻击的第一步为中间人向客户端发送一个伪造的服务器公钥,一旦在建立连接阶段增加了客户端对服务器的认证机制,则客户端可以检验该公钥的真实性。

2.2 移动虚拟化安全传输协议握手连接过程设计

通过使用椭圆曲线加密算法(ECC)来代替安全套接层中的RSA加密算法[14,15],实现了客户端与服务器身份信息的双向认证,且使用扩展的密钥交换算法(ECDH)代替RSA密钥交换算法,用ECDSA签名算法来实现协议的数字签名过程。当攻击者尝试通过客户端与服务器通信时,若篡改了通信过程中的公钥信息,则验证签名不成立。基于ECC加密算法的SSL握手过程如图5所示。

图5 基于椭圆加密算法的安全套接层握手过程

(1)第一阶段为通信双方建立连接的阶段。客户端向服务器发送连接请求数据报文即为Client Hello消息,消息中主要包括SSL协议版本号,消息认证码和支持的密码算法集合。服务器从接收到的Client Hello报文中得到客户端所支持的加密算法集合,并将会话ID和确认使用的SSL版本号及加解密算法集合(ECC-RC4)打包整合为响应消息Sever Hello,并发送给客户端;

(2)第二阶段为服务器发送证书并向客户端索要证书的阶段。

1)首先,服务器私钥KS由接口ECPrivateKey中的getS()函数生成;椭圆曲线域参数通过利用调用类ECParameterSpec中的函数ECParameterSpec()可直接获取;接下来,使用接口ECPublicKey中的getW()函数和私钥KS生成与之相对应的公钥QS=KS*P(P为椭圆曲线的基点)。与此同时,服务器使用自生的私钥KS生成签名,并利用私钥KS对公钥的散列值进行数字签名SigS=ECDSAKS(SHA(QS))。

2)其次,服务器发送Certificate消息,即服务器向客户端发送用于ECDH密钥协商的ECC证书,服务器公钥QS和公钥算法参数中的椭圆曲线基点P及数字签名SigS等信息。

3)服务器向客户端发送Certificate Request消息,要求客户端提供ECDSA数字签名证书;服务器端发送Server Hello Done消息,完成服务器与客户端之间的通信步骤,服务器等待客户端的响应。

(3)第三阶段为客户端发送证书和进行密钥交换的阶段。

1)客户端收到数据包后,将对服务器公钥QS和服务器的数字签名进行验证,判断签名是否为SHA(QS),判断失败则丢弃数据包;判断成功后,客户端随机生成私钥KC,获得公钥QC=KC*P,并生成自己的数字签名,利用私钥KC对公钥的哈希值进行签名SigC=ECDSAKC(SHA(QC))。

2)为响应服务器的Certificate-Request信息,客户端向服务器发送基于ECDSA签名的公钥证书,该证书可用于对客户端的身份认证。

3)客户端完成对ECDH密钥协商证书的完整性校验后,解析该证书,得到服务器公钥QS和椭圆曲线域参数;客户端利用生成的公钥和私钥进行ECDH密钥协商,从而计算出共享密钥k=QS*KC;随后,客户端将公钥QC、基点P及数字签名SigC等有效信息整合打包,并通过Client Key Exchange消息传送至服务器。

4)客户端利用其私钥KC对发送至服务器的消息进行ECDSA签名,并将签名信息嵌入在Certificate Verify消息中。

(4)第四阶段为双方协商共享密钥阶段。

1)服务器获得客户端的ECDSA签名证书后,先对证书的真实性和有效性进行校验,其次,通过对客户端所发送的证书内容进行比对,验证其是否与Certificate-Request消息中要求的类型相匹配;服务器通过解析证书获得用于密钥协商的公钥QC,并使用密钥协商算法协商出共享密钥k=QC*KS。

2)服务器使用ECDSA签名算法验证客户端的签名信息,若验证通过,客户端拥有与该公钥对应的私钥,并证明客户端的身份真实有效。

3)当通信双方发送Change Cipher Spec消息后,验证密钥交换是否成功,若密钥交换成功,则向对方发送Fini-shed消息,表示双方可以开始传输应用层数据。

2.3 移动虚拟化安全传输协议数据连接过程设计

通过改进RDP协议后,其安全性由安全套接层决定,数据连接流程图如图6所示。

图6 移动虚拟化安全传输协议数据连接流程

(1)首先,网络连接层进行套接字的建立,利用函数connect_tcp()在服务器与客户端间建立会话连接,使双方能够进行通信。

(2)使用安全套接层的目的是实现通信双方的双向身份认证;安全套接层利用生成的密钥对客户端和服务器端进行身份验证,若通信双方身份验证成功,则表示双方可进行收发有效信息。

(3)安全套接层的连接建立后,利用iso_init()对会话进行初始化,客户端通过函数send_connection_request()向服务器发送传输数据层的请求连接数据包,随后,服务器返回一个连接确认数据包,则传输数据层建立连接。

(4)传输数据层成功建立连接后,客户端利用函数send connection initial()产生多通道通信服务协议的初始化数据包,并将其发送至服务器;随之得到服务器发送的连接响应数据包。虚拟通道层的得到数据直接交由加密解密层处理,从而获得加密解密层所需的有效信息。

(5)加密解密层开始建立连接,利用双方会话过程中协商出的密钥对通道中的数据进行加密和解密操作,其加密算法为RC4。

(6)在加密解密层成功连接之后,客户端发送信息给服务器,服务器返回一个协议数据单元,表示功能数据层建立连接,可开始传输图像信息及相关数据,完成安全传输协议的最终交互。

2.4 移动虚拟化安全传输协议应用场景

在移动虚拟化数据传输过程中,由于安全传输协议会建立逻辑上的多数据传输通道,可实现应用与移动终端间的数据交互。虚拟通道是以不同数据类型为基准,主通道负责把服务器端的图像信息传送到终端并显示,指令通过输入输出通道来进行命令传输,且视频也具有独立的传输通道。当虚拟通道层建立连接后,虚拟通道创建成功,根据不同的数据类型就按照规定的数据通道进行传输,在传输和处理数据时相互隔离,并使用安全传输协议中的加密解密层对功能数据层数据进行加密(RC4加密算法),故数据在传输过程中是处于密文状态的。即使造成数据丢失,数据均为不完整的加密图像或文档数据,可保证移动终端数据的安全性。

3 移动虚拟化安全传输协议安全性分析及实验

3.1 实验分析

本文利用开源RDP源程序的基础上完成了基于椭圆曲线加密算法的安全套接层的扩展,通过搭建环境对移动虚拟化安全传输协议进行实验分析。硬件平台为普通台式机(2 G内存),操作系统为Windows 2000,为避免网络性能对测试数据的影响,只执行了本地连接的测试,并对其连接过程进行抓包,截取证书及密钥交换信息,如图7所示。

图7 证书和密钥交换数据包信息

3.2 安全性对比

移动虚拟化安全传输协议将椭圆曲线加密算法应用于身份认证和密钥协商阶段,通信双方提供了各自的数字签名和证书,并有效地验证了双方的身份信息,防止中间人对数据包进行攻击。通过对移动虚拟化安全传输协议与RDP协议进行安全性和性能分析,安全传输协议在握手连接过程中对通信双方的身份进行有效验证,并采用椭圆曲线算法证书对密钥及随机数进行封装发送,实现了可抵御中间人攻击的数据传输方案。

协议的安全性对比,见表2。

表2 协议的安全性对比

通过对移动虚拟化安全传输协议与远程桌面协议进行比较说明,在资源占用最多的握手连接和数据连接建立阶段,其响应时间只是略有增大(最大18.7%),可忽略不计。通信双方经过互相发送基于椭圆曲线算法的证书对身份进行确认,验证了身份有效性,确保了数据在网络中的安全传输。

4 结束语

当用户在外无法使用固定终端进行办公时,可通过移动虚拟化系统来访问后台服务器上的应用和数据,因此带来了一系列的数据安全传输及数据存储问题。由于移动终端计算能力不高,且椭圆曲线加密算法密钥长度较短,存储空间较小,故可利用基于椭圆曲线加密算法的安全套接层对远程桌面协议(RDP)来进行改进。服务器和客户端在通信时,在原本的单向身份认证的基础上增加了对双方身份的验证操作,提高了数据握手连接过程中的安全性。

猜你喜欢

加密算法公钥数据包
二维隐蔽时间信道构建的研究*
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
基于整数矩阵乘法的图像加密算法
一种基于混沌的公钥加密方案
基于混沌系统和DNA编码的量子图像加密算法
C#串口高效可靠的接收方案设计
神奇的公钥密码
混沌参数调制下RSA数据加密算法研究
P2X7 receptor antagonism in amyotrophic lateral sclerosis
基于小波变换和混沌映射的图像加密算法