一种面向自主可控环境下的应用虚拟化安全通信方法转让专利

申请号 : CN201811121343.8

文献号 : CN109347809B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李大卫王斌曾颖明石波吴朝雄刘滋润姜琦

申请人 : 北京计算机技术及应用研究所

摘要 :

本发明涉及一种面向自主可控环境下的应用虚拟化安全通信方法,涉及网络安全技术领域。本发明通过对原有RDP协议栈进行结构重建,在RDP协议的基础上扩展一种基于国产商用密码套件的安全套接层,将安全套接层添加至协议栈的网络连接层之上,可为客户端到服务器提供安全传输服务,实现了客户端和服务器间的双重身份认证,完成了客户端对服务器的身份信息验证。

权利要求 :

1.一种面向自主可控环境下的应用虚拟化安全通信方法,其特征在于,包括以下步骤:

步骤S1、由网络连接层对套接字进行创建,完成对服务器与客户端之间通信网络的连接,为通信双方的数据交互和网络通信提供基础,当网络连接建立完成,通过使用安全套接层来完成对通信双方的双向身份认证,客户端对网络连接层所生成的套接字发起连接,并向服务器发送请求报文,服务器收到请求后对客户端进行响应;

步骤S2、服务器向客户端发送其证书报文及签名信息,证书中包括服务器生成的随机数、公钥这些用于进行密钥交换的信息,客户端接收到服务器发送的数据报文后,对服务器进行认证,若认证成功则生成客户端随机数与公钥,并将客户端证书与签名发送至服务器,否则结束,认证过程中,安全套接层利用生成的国密加密套件对客户端和服务器端进行双向身份验证,若通信双方身份验证成功,则表示双方可进行收发有效信息,否则结束,通信双方身份验证成功时服务器对客户端所发送的证书与签名进行验证,若验证成功则利用客户端的随机数与服务器公钥生成共享密钥,从而对双方所生成的共享密钥进行配对,验证不成功则结束;当双方的共享密钥一致时,则安全套接层建立成功,可对通信数据进行基于SM4对称加密算法的加密解密;

步骤S3、安全套接层成功连接建立后,传输数据层对通信会话进行初始化,客户端向服务器发送传输数据层的请求连接数据包,服务器收到后对其进行响应,从而返回一个连接确认数据包,则传输数据层建立连接,客户端生成多虚拟通道的初始化数据包,并与服务器进行交互,将初始化数据包发送至服务器,等待服务器发送响应数据包;服务器接收到初始化数据包后,发送连接响应数据包,当虚拟通道层建立连接后,完成对多虚拟通道的创建,将数据直接传送至加密解密层,加密解密层为数据传输提供安全传递服务,加密解密操作将在安全套接层建立连接后,利用密钥协商过程中所生成的共享密钥,对虚拟应用数据实现基于SM4分组密码算法的加密处理,当功能数据层之上的其他层均成功建立连接后,客户端向服务器发送报文,服务器返回一个协议数据单元作为响应,表示功能数据层建立连接,即可开始传输虚拟应数据及图像块信息,从而完成安全传输协议的最终交互。

2.如权利要求1所述的方法,其特征在于,步骤S1中,由客户端向服务器发送所述请求报文Client hello,客户端请求报文包括由版本号Version、随机数Random、会话标识符Session、加密套件Cipher suite和压缩方法Compression method,其中版本号为客户端所支持协议的最高版本;随机数为通信双方的身份验证提供加密服务;会话标识符为客户端与服务器的通信连接进行标识,若会话标识符为0则通信双方需创建一个新的连接,若该值为非0值则表示通信双方连接已建立成功;加密套件提供客户端支持加密算法的列表,并根据各算法的优先级进行排序;压缩方法为服务器提供客户端可支持的压缩算法;

当客户端将hello请求报文发送至服务器后,等待服务器对其进行响应,服务器响应客户端的请求报文对其发送hello响应报文,此响应报文中包含的字段与客户端的请求报文字段相同,但服务器的响应报文可对客户端提供的加密算法、压缩算法及版本号进行比对与选择,服务器根据客户端所发送的请求报文中的字段与服务器自身所支持的协议版本号选择通信双方均可支持的版本,并根据客户端的会话标识符生成服务器响应报文中的会话标识符,由于服务器的响应报文与客户端的请求报文相同,故服务器依据请求报文中的随机数字段生成独立于客户端的随机大整数,以作为响应报文中的随机数字段发送至客户端,同时,服务器根据客户端请求报文中的加密套件与压缩算法,选取用于此通信过程中的加密套件及压缩算法,当服务器将所有字段生成完毕后,对其进行封装作为响应报文发送至客户端,以建立客户端与服务器间的通信连接;

当通信双方在建立通信连接的过程中,客户端的Client Hello请求报文中包含了客户端支持的所有通信加密套件,服务器需通过对客户端支持的加密套件进行选取,以实现客户端与服务器之间的双向身份认证及密钥协商,在建立连接时,服务器所选取的加密算法以标准的加密套件为依据,包括密钥交换算法、对称加密算法及杂凑算法,安全通信方法所使用的加密套件为国产商用密码算法SM2-SM3-SM4,该加密套件为双方的通信连接提供安全服务,从而实现通信双方的身份校验、密钥协商及加密传输,其中密钥交换算法及通信双方的认证算法采用国密SM2算法,杂凑算法采用国密SM3算法,并以国密SM4算法实现对远程虚拟应用的数据进行加密。

3.如权利要求1所述的方法,其特征在于,步骤S2中,当客户端与服务器成功建立通信连接后,服务器将封装完成的服务器证书报文、密钥交换报文发送至客户端,以实现客户端对服务器的有效验证,在此过程中,服务器根据非对称加密算法SM2随机生成的私钥KS产生签名,利用公式QS=KS*P计算出服务器用于验证与加密的公钥QS,P是公钥算法参数中的椭圆曲线基点,并利用随机生成的私钥KS对公钥QS的摘要值进行SM3杂凑算法计算,从而得到服务器的Hash值,将利用数字签名算法的签名函数继续对公钥的Hash值进行签名操作,生成数字签名 当签名完成后,服务器发送Certificate消息,即服务器向客户端发送用于ECDH密钥协商的数字证书,服务器公钥QS和公钥算法参数中的椭圆曲线基点P及数字签名SigS一并发送至客户端,同时,服务器向客户端发送客户端证书请求报文,客户端需向服务器提供基于ECDSA数字签名算法的证书,以实现服务器对客户端的证书进行身份认证,服务器端向客户端继续发送Server Hello Done报文,以向客户端表示完成服务器证书及密钥交换信息的发送,服务器等待客户端的响应,若客户端对服务器验证成功,则客户端将向服务器发送响应报文。

4.如权利要求3所述的方法,其特征在于,步骤S2中,客户端通过服务器发送的证书、签名和证书请求报文,完成对服务器的证书签名校验,客户端响应服务器的证书请求报文,将证书报文传送至服务器以实现服务器对客户端的验证;

当客户端进行密钥交换时,将根据通信双方在建立连接阶段所发送的hello请求报文中定义的密钥交换算法及使用的位数,通过基于国密SM2算法的随机数生成器生成客户端的固定字节的整数,利用服务器证书中的服务器公钥对其进行加密存放于客户端密钥交换报文中;客户端生成的随机数通过计算生成客户端公钥,利用SM3算法对公钥的摘要信息进行哈希值计算,将其一并与客户端证书发送至服务器,以实现服务器对客户端的身份校验。

5.如权利要求4所述的方法,其特征在于,步骤S2中,当客户端接收到服务器发送的证书报文、密钥交换信息及证书请求报文后,客户端将对服务器公钥QS和服务器证书中的数字签名信息进行计算与校验,验证其签名是否为SM3(QS),若验证不通过则丢弃该数据报文包;若验证成功后,客户端将根据通信双方在建立连接阶段所发送的hello请求报文中定义的密钥交换算法及使用的位数,客户端通过基于国密SM2算法的随机数生成器生成客户端的固定字节的大整数私钥KC,获得公钥QC=KC*P,并生成自己的数字签名,利用私钥KC对公钥的哈希值进行签名 为响应服务器的Certificate-Request信息,客户端向服务器发送包含随机数、公钥和签名这些封装的数字证书,该证书用于对客户端的身份认证;

当客户端完成对服务器ECDH密钥协商证书的完整性校验后,解析该证书,得到服务器公钥QS和椭圆曲线域参数;客户端利用服务器公钥和客户端私钥进行ECDH密钥协商,从而计算出共享密钥k=QS*KC;随后,客户端将共享密钥通过Client Key Exchange消息传送至服务器;

客户端利用其私钥KC对发送至服务器的消息进行ECDSA签名,并将签名信息嵌入在Certificate Verify消息中,客户端继续发送change cipher specs报文,表示为通信连接提供安全服务的安全参数与算法发送完毕,同时,发送finished报文以向服务器表示客户端握手完成。

6.如权利要求5所述的方法,其特征在于,步骤S2中,服务器获得客户端的SM2算法签名证书后,先对证书的真实性和有效性进行校验,其次,通过对客户端所发送的证书内容进行比对,验证其是否与Certificate-Request消息中要求的类型相匹配;服务器使用SM2签名算法验证客户端的签名信息,若验证通过,客户端拥有与该公钥对应的私钥,并证明客户端的身份真实有效;

服务器通过解析证书获得用于密钥协商的公钥QC,并使用密钥协商算法协商出共享密钥k=QC*KS,当通信双方发送Change Cipher Spec消息后,验证密钥交换是否成功,若交换不成功则断开连接,若密钥交换成功,生成唯一的共享密钥,则向对方发送Finished消息,表示双方可以开始利用SM4对称加密算法进行应用层数据的传输。

说明书 :

一种面向自主可控环境下的应用虚拟化安全通信方法

技术领域

[0001] 本发明涉及网络安全技术领域,具体涉及一种面向自主可控环境下的应用虚拟化安全通信方法。

背景技术

[0002] 由于RDP协议在使用的过程中,通信双方仅为单向身份认证,客户端无法验证服务器的身份和数据包的完整性。在网络传输过程中,此类只具有单向身份认证机制的协议易被中间人攻击的方式对其进行数据窃取。攻击者可伪造一个虚假服务器,利用ARP地址欺骗、DNS欺骗等攻击方式将伪造的服务器公钥传输至客户端,并构建一个完整的RDP会话,从而获取到传输过程中的敏感信息。中间人攻击的具体流程可由图1所示。
[0003] 在数据传输的过程中,攻击者在客户端面前伪装为服务器,在服务器面前以客户端的身份进行通信,并将所欺骗获得的消息用于与客户端和服务器间的通信。这说明客户端不能对服务器进行身份鉴别,在此种攻击模式下,攻击者充当了一个“代理”的角色。中间人攻击方式具体的攻击流程可以分为以下几个步骤:
[0004] 第一步,攻击者利用欺骗等方法将自身伪装为服务器,与客户端进行通信,并将原有通信双方的通信数据流进行控制。通过客户端发送的请求数据信息,攻击者将生成自己的公私钥对(QP,KP)。在客户端与服务器进行请求信息发送的过程中,客户端先将请求发送给攻击者,攻击者再伪装为客户端与服务器进行通信。
[0005] 第二步,当攻击者收到客户端的请求信息后,将客户端的连接请求信息替换为攻击者的连接请求信息,然后向服务器发送自己的连接请求信息。服务器接收到攻击者发送的连接请求信息后,服务器将以明文的形式对服务器产生的公钥QS和随机数KS进行封装,最后将封装完成的数据包发送至攻击者。
[0006] 第三步,服务器对攻击者发送的请求进行响应,攻击者获得服务器的公钥QS和随机数KS,利用攻击者生成的公钥QP和随机数KS对服务器的公钥和随机数进行互换,将自己伪装为服务器与客户端进行通信,从而发送包含攻击者公钥及随机数的数据包至客户端,以对客户端进行欺骗。
[0007] 第四步,由于客户端对服务器不进行身份验证,当接收到由攻击者所发送的公钥QP和随机数KS后,将其进行保存。客户端使用攻击者的公钥QP对客户端的产生的随机数KC进行非对称加密,从而生成加密后的私钥KC',客户端对加密后的私钥进行封装,以完成对攻击者的请求响应。
[0008] 第五步,当攻击者接收到客户端发送来的私钥KC'后,通过使用产生的私钥KP对客户端私钥KC'进行解密,从而获取到客户端所生成的私钥KC。由于RDP协议的单向认证安全策略使服务器需要对客户端的身份信息进行验证,则将通过服务器所生成的公钥QS对客户端私钥KC进行非对称加密,以密文的形式进行密钥传输,生成加密后的客户端私钥KC”,攻击者将非对称加密后的私钥KC”封装发送至服务器,以完成对服务器的响应。
[0009] 第六步,当服务器收到攻击者发送的私钥后,用服务器私钥KS对加密后的私钥KC”进行解密,从而得到客户端的私钥KC,服务器对客户端验证通过。攻击者以代理的身份完成了对客户端和服务器的欺骗,并获取到了通信双方的随机数KS和KC。攻击者利用自己的随机数KP和服务器私钥KS生成服务器与攻击者之间的会话密钥KPS,同时,与客户端也生成了会话密钥KPC。此时,攻击者分别建立了与服务器和客户端的会话通信连接,攻击者可利用生成的会话密钥获取通信双方的数据信息,通过代理窃听的攻击方法以窃取通信通道中的有效信息。

发明内容

[0010] (一)要解决的技术问题
[0011] 本发明要解决的技术问题是:为国产化信息技术所面临的不足提供安全传输服务与远程访问服务,有效对虚拟应用资源进行全面的访问,确保业务数据在传输过程中的安全性,解决自主可控环境下难以适配及移植Windows平台的商用软件的问题。
[0012] (二)技术方案
[0013] 为了解决上述技术问题,本发明提供了一种面向自主可控环境下的应用虚拟化安全通信方法,包括以下步骤:
[0014] 步骤S1、由网络连接层对套接字进行创建,完成对服务器与客户端之间通信网络的连接,为通信双方的数据交互和网络通信提供基础,当网络连接建立完成,通过使用安全套接层来完成对通信双方的双向身份认证,客户端对网络连接层所生成的套接字发起连接,并向服务器发送请求报文,服务器收到请求后对客户端进行响应;
[0015] 步骤S2、服务器向客户端发送其证书报文及签名信息,证书中包括服务器生成的随机数、公钥这些用于进行密钥交换的信息,客户端接收到服务器发送的数据报文后,对服务器进行认证,若认证成功则生成客户端随机数与公钥,并将客户端证书与签名发送至服务器,否则结束,该过程中,安全套接层利用生成的国密加密套件对客户端和服务器端进行双向身份验证,若通信双方身份验证成功,则表示双方可进行收发有效信息,否则结束,通信双方身份验证成功时服务器对客户端所发送的证书与签名进行验证,若验证成功则利用客户端的随机数与服务器公钥生成共享密钥,从而对双方所生成的共享密钥进行配对,验证不成功则结束;当双方的共享密钥一致时,则安全套接层建立成功,可对通信数据进行基于SM4对称加密算法的加密解密;
[0016] 步骤S3、安全套接层成功连接建立后,传输数据层对通信会话进行初始化,客户端向服务器发送传输数据层的请求连接数据包,服务器收到后对其进行响应,从而返回一个连接确认数据包,则传输数据层建立连接,客户端生成多虚拟通道的初始化数据包,并与服务器进行交互,将初始化数据包发送至服务器,等待服务器发送响应数据包;服务器接收到初始化数据包后,发送连接响应数据包,当虚拟通道层建立连接后,完成对多虚拟通道的创建,将数据直接传送至加密解密层,加密解密层为数据传输提供安全传递服务,加密解密操作将在安全套接层建立连接后,利用密钥协商过程中所生成的共享密钥,对虚拟应用数据实现基于SM4分组密码算法的加密处理,当功能数据层之上的其他层均成功建立连接后,客户端向服务器发送报文,服务器返回一个协议数据单元作为响应,表示功能数据层建立连接,即可开始传输虚拟应数据及图像块信息,从而完成安全传输协议的最终交互。
[0017] 优选地,步骤S1中,由客户端向服务器发送所述请求报文Client hello,客户端请求报文包括由版本号Version、随机数Random、会话标识符Session、加密套件Cipher suite和压缩方法Compression method,其中版本号为客户端所支持协议的最高版本;随机数为通信双方的身份验证提供加密服务;会话标识符为客户端与服务器的通信连接进行标识,若该值为0则通信双方需创建一个新的连接,若该值为非0值则表示通信双方连接已建立成功;加密套件提供客户端支持加密算法的列表,并根据各算法的优先级进行排序;压缩方法为服务器提供客户端可支持的压缩算法;
[0018] 当客户端将hello请求报文发送至服务器后,等待服务器对其进行响应,服务器响应客户端的请求报文对其发送hello响应报文,此响应报文中包含的字段与客户端的请求报文字段相同,但服务器的响应报文可对客户端提供的加密算法、压缩算法及版本号进行比对与选择,服务器根据客户端所发送的请求报文中的字段与服务器自身所支持的协议版本号选择通信双方均可支持的版本,并根据客户端的会话标识符生成服务器响应报文中的会话标识符,由于服务器的响应报文与客户端的请求报文相同,故服务器依据请求报文中的随机数字段生成独立于客户端的随机大整数,以作为响应报文中的随机数字段发送至客户端,同时,服务器根据客户端请求报文中的加密套件与压缩算法,选取用于此通信过程中的加密套件及压缩算法,当服务器将所有字段生成完毕后,对其进行封装作为响应报文发送至客户端,以建立客户端与服务器间的通信连接;
[0019] 当通信双方在建立通信连接的过程中,客户端的Client Hello请求报文中包含了客户端支持的所有通信加密套件,服务器需通过对客户端支持的加密套件进行选取,以实现客户端与服务器之间的双向身份认证及密钥协商,在建立连接时,服务器所选取的加密算法以标准的加密套件为依据,包括密钥交换算法、对称加密算法及杂凑算法,安全通信方法所使用的加密套件为国产商用密码算法SM2-SM3-SM4,该加密套件为双方的通信连接提供安全服务,从而实现通信双方的身份校验、密钥协商及加密传输,其中密钥交换算法及通信双方的认证算法采用国密SM2算法,杂凑算法采用国密SM3算法,并以国密SM4算法实现对远程虚拟应用的数据进行加密。
[0020] 优选地,步骤S2中,当客户端与服务器成功建立通信连接后,服务器将封装完成的服务器证书报文、密钥交换报文发送至客户端,以实现客户端对服务器的有效验证,在此过程中,服务器根据非对称加密算法SM2随机生成的私钥KS产生签名,利用公式QS=KS*P计算出服务器用于验证与加密的公钥QS,P是公钥算法参数中的椭圆曲线基点,并利用随机生成的私钥KS对公钥QS的摘要值进行SM3杂凑算法计算,从而得到服务器的Hash值,将利用数字签名算法的签名函数继续对公钥的Hash值进行签名操作,生成数字签名当签名完成后,服务器发送Certificate消息,即服务器向客户
端发送用于ECDH密钥协商的数字证书,服务器公钥QS和公钥算法参数中的椭圆曲线基点P及数字签名SigS一并发送至客户端,同时,服务器向客户端发送客户端证书请求报文,客户端需向服务器提供基于ECDSA数字签名算法的证书,以实现服务器对客户端的证书进行身份认证,服务器端向客户端继续发送Server Hello Done报文,以向客户端表示完成服务器证书及密钥交换信息的发送,服务器等待客户端的响应,若客户端对服务器验证成功,则客户端将向服务器发送响应报文。
[0021] 优选地,步骤S2中,客户端通过服务器发送的证书、签名和证书请求报文,完成对服务器的证书签名校验,客户端响应服务器的证书请求报文,将证书报文传送至服务器以实现服务器对客户端的验证;
[0022] 当客户端进行密钥交换时,将根据通信双方在建立连接阶段所发送的hello请求报文中定义的密钥交换算法及使用的位数,通过基于国密SM2算法的随机数生成器生成客户端的固定字节的整数,利用服务器证书中的服务器公钥对其进行加密存放于客户端密钥交换报文中;客户端生成的随机数通过计算生成客户端公钥,利用SM3算法对公钥的摘要信息进行哈希值计算,将其一并与客户端证书发送至服务器,以实现服务器对客户端的身份校验。
[0023] 优选地,步骤S2中,当客户端接收到服务器发送的证书报文、密钥交换信息及证书请求报文后,客户端将对服务器公钥QS和服务器证书中的数字签名信息进行计算与校验,验证其签名是否为SM3(QS),若验证不通过则丢弃该数据报文包;若验证成功后,客户端将根据通信双方在建立连接阶段所发送的hello请求报文中定义的密钥交换算法及使用的位数,客户端通过基于国密SM2算法的随机数生成器生成客户端的固定字节的大整数私钥KC,获得公钥QC=KC*P,并生成自己的数字签名,利用私钥KC对公钥的哈希值进行签名为响应服务器的Certificate-Request信息,客户端向服务器发送包含随机数、公钥和签名这些封装的数字证书,该证书用于对客户端的身份认证;
[0024] 当客户端完成对服务器ECDH密钥协商证书的完整性校验后,解析该证书,得到服务器公钥QS和椭圆曲线域参数;客户端利用服务器公钥和客户端私钥进行ECDH密钥协商,从而计算出共享密钥k=QS*KC;随后,客户端将共享密钥通过ClientKey Exchange消息传送至服务器;
[0025] 客户端利用其私钥KC对发送至服务器的消息进行ECDSA签名,并将签名信息嵌入在CertificateVerify消息中,客户端继续发送change cipher specs报文,表示为通信连接提供安全服务的安全参数与算法发送完毕,同时,发送finished报文以向服务器表示客户端握手完成。
[0026] 优选地,步骤S2中,服务器获得客户端的SM2算法签名证书后,先对证书的真实性和有效性进行校验,其次,通过对客户端所发送的证书内容进行比对,验证其是否与Certificate-Request消息中要求的类型相匹配;服务器使用SM2签名算法验证客户端的签名信息,若验证通过,客户端拥有与该公钥对应的私钥,并证明客户端的身份真实有效;
[0027] 服务器通过解析证书获得用于密钥协商的公钥QC,并使用密钥协商算法协商出共享密钥k=QC*KS,当通信双方发送Change Cipher Spec消息后,验证密钥交换是否成功,若交换不成功则断开连接,若密钥交换成功,生成唯一的共享密钥,则向对方发送Finished消息,表示双方可以开始利用SM4对称加密算法进行应用层数据的传输。
[0028] (三)有益效果
[0029] 本发明通过通信方法的设计,将基于国产商用密码算法的安全套接层置于网络连接层上层,由于原有RDP协议负责对应用数据进行加密和解密工作的加密解密层与基于国产商用密码算法的安全套接层中的数据加密解密功能重复,故在数据传输过程中,加密解密层不对报文数据进行任何处理,即要求加密解密层不对上层的功能数据层发送的数据进行加密与解密的操作,加密解密层仅负责对数据进行传输。当数据传输到基于国产商用密码算法的安全套接层再由国产商用密码算法对其进行加密处理,从整个协议层次架构来看,强安全等级中的安全套接层将接管了弱安全等级的加密解密层的工作。利用RDP协议与基于国产商用密码算法的安全套接层相结合,服务器的公钥和随机数会以证书的形式发送给客户端,客户端使用消息认证码和数字签名对其来源进行认证,并校验它的完整性。通过在建立连接阶段增加客户端对服务器的认证机制,客户端将验证服务器公钥的真实性,则中间人攻击难以伪造服务器公钥与客户端进行通信。

附图说明

[0030] 图1为现有技术的中间人攻击方式示意图;
[0031] 图2为本发明加入安全套接层的通信原理框图;
[0032] 图3为本发明的数据连接流程图;
[0033] 图4为本发明所述握手连接的流程图;
[0034] 图5为与RDP协议连接时间对比图。

具体实施方式

[0035] 为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
[0036] 在分析了现有RDP协议的安全机制后可知,RDP协议的单向身份认证机制无法抵御各种类型的地址欺骗,尤其是在密钥交换过程中。这使得原始协议加密解密层已经不能抵抗目前网络环境中存在的风险和层出不穷的攻击软件。针对其不足,本发明通过对原有RDP协议栈进行结构重建,在RDP协议的基础上扩展一种基于国产商用密码套件的安全套接层,将安全套接层添加至协议栈的网络连接层之上,可为客户端到服务器提供安全传输服务,实现了客户端和服务器间的双重身份认证,完成了客户端对服务器的身份信息验证,新的层次结构如图2所示。
[0037] 在利用基于国产商用密码算法的安全套接层协议进行数据通信的过程中,通信双方首先在握手过程中进行会话的建立与通信双方的身份验证,并进行密钥协商以获取安全参数,成功创建安全的通信连接。国密SM2算法负责对通信双方的密钥进行交换与协商,并完成客户端对服务器的有效验证;SM3杂凑算法主要完成对消息摘要值的计算,SM4算法负责对传输数据进行加密,因此数据是以密文的形式在虚拟通道中传输,且客户端与服务器互相对其身份进行有效验证,从而可对中间人攻击做出防范。
[0038] 服务器将对响应数据包格式进行修改,当服务器收到客户端发送RDP请求数据包后,直接发送一个由SM2算法生成的数字签名和ECC公钥的证书;当客户端收到响应报文后,对服务器所发送的证书进行完整性校验,即使用客户端中的SM3算法生成消息认证码来验证ECC证书和数字签名的有效性及真实性,并共同协商出共享密钥,从而使用SM4对称加密算法进行密文传输。
[0039] 本发明通过通信方法的设计,将基于国产商用密码算法的安全套接层置于网络连接层上层,由于原有RDP协议负责对应用数据进行加密和解密工作的加密解密层与基于国产商用密码算法的安全套接层中的数据加密解密功能重复,故在数据传输过程中,加密解密层不对报文数据进行任何处理,即要求加密解密层不对上层的功能数据层发送的数据进行加密与解密的操作,加密解密层仅负责对数据进行传输。当数据传输到基于国产商用密码算法的安全套接层再由国产商用密码算法对其进行加密处理,从整个协议层次架构来看,强安全等级中的安全套接层将接管了弱安全等级的加密解密层的工作。利用RDP协议与基于国产商用密码算法的安全套接层相结合,服务器的公钥和随机数会以证书的形式发送给客户端,客户端使用消息认证码和数字签名对其来源进行认证,并校验它的完整性。通过在建立连接阶段增加客户端对服务器的认证机制,客户端将验证服务器公钥的真实性,则中间人攻击难以伪造服务器公钥与客户端进行通信。
[0040] 本发明通过对利用基于国产商用密码算法的安全套接层对安全通信方法进行设计,对其进行双向身份认证机制的扩展,完成了通信双方间的数据连接。在客户端与服务器进行通信的过程中,由基于国产商用密码算法的安全套接层提供安全服务,以完成对通信双方的双向身份验证、密钥交换、摘要值计算及数据通信加密,从而将协议栈原有的加密解密层作为数据传输中转站,仅提供数据与上、下两层的连接和传输,不对其进行加密处理。本发明提出的一种面向自主可控环境下应用虚拟化的安全通信的方法中数据连接流程图如图3所示,包括以下步骤:
[0041] 步骤S1、由网络连接层对套接字进行创建,完成对服务器与客户端之间通信网络的连接,为通信双方的数据交互和网络通信提供基础。当网络连接建立完成,通过使用安全套接层来完成对通信双方的双向身份认证,客户端对网络连接层所生成的套接字发起连接,并向服务器发送请求报文,服务器收到请求后对客户端进行响应。
[0042] 步骤S2、服务器向客户端发送其证书报文及签名信息,证书中包括服务器生成的随机数、公钥等用于进行密钥交换的信息。客户端接收到服务器发送的数据报文后,对服务器进行认证,若认证成功则生成客户端随机数与公钥,并将客户端证书与签名发送至服务器,否则结束,该过程中,安全套接层利用生成的国密加密套件对客户端和服务器端进行双向身份验证,若通信双方身份验证成功,则表示双方可进行收发有效信息,否则结束,通信双方身份验证成功时服务器对客户端所发送的证书与签名进行验证,若验证成功则利用客户端的随机数与服务器公钥生成共享密钥,从而对双方所生成的共享密钥进行配对,验证不成功则结束;当双方的共享密钥一致时,则安全套接层建立成功,可对通信数据进行基于SM4对称加密算法的加密解密。
[0043] 步骤S3、安全套接层成功连接建立后,传输数据层对通信会话进行初始化,客户端向服务器发送传输数据层的请求连接数据包,服务器收到后对其进行响应,从而返回一个连接确认数据包,则传输数据层建立连接。由于安全传输协议仅对安全套接层进行设计与实现,对虚拟通道层无响应,故与原有协议栈中的虚拟通道层执行同样的操作,客户端生成多虚拟通道的初始化数据包,并与服务器进行交互,将初始化数据包发送至服务器,等待服务器发送响应数据包;服务器接收到初始化数据包后,发送连接响应数据包。当虚拟通道层建立连接后,完成对多虚拟通道的创建,将数据直接传送至加密解密层。通过对安全传输协议的协议栈进行优化与改进,故加密解密层仅为数据传输提供安全传递服务,加密解密操作将在安全套接层建立连接后,利用密钥协商过程中所生成的共享密钥,对虚拟应用数据实现基于SM4分组密码算法的加密处理。因此,数据连接过程中均无体现加密解密层与虚拟通道层的通信连接。当功能数据层之上的其他层均成功建立连接后,客户端向服务器发送报文,服务器返回一个协议数据单元作为响应,表示功能数据层建立连接,即可开始传输虚拟应数据及图像块信息,从而完成安全传输协议的最终交互。
[0044] 在整个数据连接过程中,对基于国产商用密码算法的安全套接层的握手过程进行设计,基于国密商用算法安全套接层主要提供协商版本号、加密算法、摘要算法、加密密钥等初始化服务,并完成通信双方建立连接、服务器认证与密钥交换、客户端认证与密钥交换及密钥协商四个阶段,实现通信双方的身份验证,如图4所示。
[0045] (1)建立连接阶段
[0046] 安全套接层握手协议的第一阶段为建立客户端与服务器的连接,其中包括Client hello和Sever hello报文。首先由客户端向服务器发送所述请求报文Client hello,客户端请求报文主要是由版本号(Version)、随机数(Random)、会话标识符(Session)、加密套件(Cipher suite)和压缩方法(Compression method)组成,其中版本号为客户端所支持协议的最高版本;随机数为通信双方的身份验证提供加密服务;会话标识符为客户端与服务器的通信连接进行标识,若该值为0则通信双方需创建一个新的连接,若该值为非0值则表示通信双方连接已建立成功;加密套件提供客户端支持加密算法的列表,并根据各算法的优先级进行排序;压缩方法为服务器提供客户端可支持的压缩算法。
[0047] 当客户端将hello请求报文发送至服务器后,等待服务器对其进行响应。服务器响应客户端的请求报文对其发送hello响应报文,此响应报文中包含的字段与客户端的请求报文字段相同,但服务器的响应报文可对客户端提供的加密算法、压缩算法及版本号进行比对与选择。服务器根据客户端所发送的请求报文中的字段与服务器自身所支持的协议版本号选择通信双方均可支持的版本,并根据客户端的会话标识符生成服务器响应报文中的会话标识符。由于服务器的响应报文与客户端的请求报文相同,故服务器依据请求报文中的随机数字段生成独立于客户端的随机大整数,以作为响应报文中的随机数字段发送至客户端。同时,服务器根据客户端请求报文中的加密套件与压缩算法,选取用于此通信过程中的加密套件及压缩算法。当服务器将所有字段生成完毕后,对其进行封装作为响应报文发送至客户端,以建立客户端与服务器间的通信连接。
[0048] 当通信双方在建立通信连接的过程中,客户端的Client Hello请求报文中包含了客户端支持的所有通信加密套件,服务器需通过对客户端支持的加密套件进行选取,以实现客户端与服务器之间的双向身份认证及密钥协商。在建立连接时,服务器所选取的加密算法以标准的加密套件为依据,包括密钥交换算法、对称加密算法及杂凑算法。安全通信方法所使用的加密套件为国产商用密码算法SM2-SM3-SM4,该加密套件为双方的通信连接提供安全服务,从而实现通信双方的身份校验、密钥协商及加密传输,其中密钥交换算法及通信双方的认证算法采用国密SM2算法,杂凑算法采用国密SM3算法,并以国密SM4算法实现对远程虚拟应用的数据进行加密。
[0049] (2)服务器认证与密钥交换
[0050] 当客户端与服务器成功建立通信连接后,服务器将封装完成的服务器证书报文、密钥交换报文发送至客户端,以实现客户端对服务器的有效验证。在此过程中,服务器根据非对称加密算法SM2随机生成的私钥KS产生签名,利用公式QS=KS*P计算出服务器用于验证与加密的公钥QS,P是公钥算法参数中的椭圆曲线基点,并利用随机生成的私钥KS对公钥QS的摘要值进行SM3杂凑算法计算,从而得到服务器的Hash值,将利用数字签名算法的签名函数继续对公钥的Hash值进行签名操作,生成数字签名 当签名完成后,服务器发送Certificate消息,即服务器向客户端发送用于ECDH密钥协商的数字证书,服务器公钥QS和公钥算法参数中的椭圆曲线基点P及数字签名SigS一并发送至客户端。
同时,服务器向客户端发送客户端证书请求报文,客户端需向服务器提供基于ECDSA数字签名算法的证书,以实现服务器对客户端的证书进行身份认证。服务器端向客户端继续发送Server Hello Done报文,以向客户端表示完成服务器证书及密钥交换信息的发送,服务器等待客户端的响应,若客户端对服务器验证成功,则客户端将向服务器发送响应报文。
[0051] (3)客户端认证与密钥交换
[0052] 由于该过程是实现通信双方双向验证的主要阶段,客户端通过服务器发送的证书、签名和证书请求报文,完成对服务器的证书签名校验,客户端响应服务器的证书请求报文,将证书报文传送至服务器以实现服务器对客户端的验证。
[0053] 当客户端进行密钥交换时,将根据通信双方在建立连接阶段所发送的hello请求报文中定义的密钥交换算法及使用的位数,通过基于国密SM2算法的随机数生成器生成客户端的固定字节的大整数,利用服务器证书中的服务器公钥对其进行加密存放于客户端密钥交换报文中。客户端生成的随机数通过计算生成客户端公钥,利用SM3算法对公钥的摘要信息进行哈希值计算,将其一并与客户端证书发送至服务器,以实现服务器对客户端的身份校验。
[0054] 具体而言,当客户端接收到服务器发送的证书报文、密钥交换信息及证书请求报文后,客户端将对服务器公钥QS和服务器证书中的数字签名信息进行计算与校验,验证其签名是否为SM3(QS),若验证不通过则丢弃该数据报文包;若验证成功后,客户端将根据通信双方在建立连接阶段所发送的hello请求报文中定义的密钥交换算法及使用的位数,客户端通过基于国密SM2算法的随机数生成器生成客户端的固定字节的大整数私钥KC,获得公钥QC=KC*P,并生成自己的数字签名,利用私钥KC对公钥的哈希值进行签名为响应服务器的Certificate-Request信息,客户端向服务器发送包含随机数、公钥和签名等封装的数字证书,该证书可用于对客户端的身份认证。
[0055] 当客户端完成对服务器ECDH密钥协商证书的完整性校验后,解析该证书,得到服务器公钥QS和椭圆曲线域参数;客户端利用服务器公钥和客户端私钥进行ECDH密钥协商,从而计算出共享密钥k=QS*KC;随后,客户端将共享密钥通过ClientKey Exchange消息传送至服务器。
[0056] 客户端利用其私钥KC对发送至服务器的消息进行ECDSA签名,并将签名信息嵌入在CertificateVerify消息中。客户端继续发送change cipher specs报文,表示为通信连接提供安全服务的安全参数与算法发送完毕,同时,发送finished报文以向服务器表示客户端握手完成。
[0057] (4)密钥协商
[0058] 服务器获得客户端的SM2算法签名证书后,先对证书的真实性和有效性进行校验,其次,通过对客户端所发送的证书内容进行比对,验证其是否与Certificate-Request消息中要求的类型相匹配;服务器使用SM2签名算法验证客户端的签名信息,若验证通过,客户端拥有与该公钥对应的私钥,并证明客户端的身份真实有效。
[0059] 服务器通过解析证书获得用于密钥协商的公钥QC,并使用密钥协商算法协商出共享密钥k=QC*KS。当通信双方发送Change Cipher Spec消息后,验证密钥交换是否成功,若交换不成功则断开连接。若密钥交换成功,生成唯一的共享密钥,则向对方发送Finished消息,表示双方可以开始利用SM4对称加密算法进行应用层数据的传输。
[0060] 下面给出本发明与RDP协议的安全性对比情况。
[0061] 可以看出,本发明在RDP协议原有的协议栈上添加了安全套接层,在原有的单向身份认证机制的基础上,利用国密SM2算法和SM3算法对其增加了通信双方的双向身份认证体系,利用共享密钥完成SM4算法加密实现通信内容的密文传输。通过对该通信方法与RDP协议进行安全性对比与分析,该通信方法连接速度与远程桌面协议(RDP)相比有所下降,但提高了在主可控环境下通过安全传输协议访问虚拟应用的安全性。该通信方法是在自主可控环境下为虚拟应用访问提供安全数据传输服务,且同等安全强度的密钥长度比、同等签名认证安全性性能比均优于RDP协议,利用基于国产商用密码算法的通信方案对远程桌面协议(RDP)来进行改进,从而提高了整个虚拟应用数据传输过程的安全性。本发明与RDP协议的安全性对比如表1所示。
[0062] 表1本发明与RDP协议的安全性对比
[0063]
[0064] 在与RDP协议在进行对比的过程,定义连接时间为从国产化客户端发起虚拟应用访问请求直至客户端打开虚拟应用所需的时间。本发明和RDP协议分别同时访问十次相同的应用,计算每次完成应用访问的连接时间,并取其平均值作为协议的连接时间以完成分析与对比,连接时间T计算公式如公式(1)所示。
[0065]
[0066] 当使用本发明和RDP协议访问Windows平台下Visio2013时,其连接时间折线图如图5所示。
[0067] 通过对通信方法与远程桌面协议进行比较说明,在资源占用最多的握手连接和数据连接建立阶段。通过对本发明连接时间TFM与RDP协议连接时间TRDP进行比对,利用公式(2)可根据连接时间对比图计算出连接时间的延时率Ty为6.54%。
[0068]
[0069] 因此,本发明提出的一种面向自主可控环境下的应用虚拟化安全通信方法,可为国产化信息技术所面临的不足提供安全传输服务与远程访问服务,能够有效对虚拟应用资源进行全面的访问,确保业务数据在传输过程中的安全性,解决了自主可控环境下难以适配及移植Windows平台的商用软件的问题。
[0070] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。