一种基于国密TLS的VNC远程安全通信方法与流程

文档序号:27143483发布日期:2021-10-30 01:04阅读:415来源:国知局
一种基于国密TLS的VNC远程安全通信方法与流程
一种基于国密tls的vnc远程安全通信方法
技术领域
1.本发明涉及网络安全技术领域,尤其是涉及一种基于国密tls的vnc远程安全通信方法。


背景技术:

2.在计算机和网络技术日新月异的新年代,网络技术的不断创新使人们的办公地点不再局限于公司大楼的办公桌。远程桌面的兴起使企业办公可以实现异地化,下班在家或出差在外是随时远程登录公司个人电脑进行一系列操作,特别多的使用在于it运维人员通过远程桌面来管理服务器。
3.目前常用的远程桌面协议有spice、rdp、vnc中的rfb三种。其中,vnc中的rfb协议适用于windows系统和linux图形桌面系统,消耗网络流量较小,常用100k左右。vnc是由at&t实验室所开发的,其采用gpl(general public license)授权条款,任何人都可免费取得该软件。vnc软件要由两个部分组成:vnc server及vnc viewer。用户需先将vnc server安装在被远程操控的计算机上后,才能在主控端执行vnc viewer进行远程操控。vnc采用rfb通信协议,rfb(remote帧缓存)是一个远程图形用户的简单协议,因为它工作在帧缓存级别上,所以它可以应用于所有的窗口系统,用途非常广泛。
4.rfb协议有个漏洞就是允许客户端和服务端协商认证方法,中间人可以绕过认证选择无口令的方式远程访问服务端。例如vnc支持的安全类型有none认证(无需密码),协议使用明文发送;vnc认证,协议数据采用明文,服务端发送16为des加密的随机数;tls认证,使用tls协议认证加密后传输协议数据。假如服务端发送所支持的全部安全类型,中间人强制客户端从中选择安全类型为none认证发送给服务端,这样便可以轻松伪造客户端访问服务端,进而降低了安全传输服务及远程访问服务的安全性能。
5.另外,传统的tls认证采用国际通用的rsa算法进行加密,随着计算机运行速度的提高,rsa算法的安全性受到了严重威胁,vnc支持的tls认证更易被解密。


技术实现要素:

6.基于此,本发明的目的在于提供一种基于国密tls的vnc远程安全通信方法,提高安全传输服务和远程访问服务,确保远程控制过程中鼠标键盘等操作命令传输和结果显示的安全性。
7.为解决上述技术问题,本发明采用以下技术方案:
8.本发明提供了一种基于国密tls的vnc远程安全通信方法,其包括如下步骤:
9.步骤s110、对tls协议进行过国密算法适配,将国密算法融入tls协议中进行安全通信;
10.步骤s120、对vnc进行国密算法适配,将国密算法融入到vnc中进行安全通信;
11.步骤s130、进入握手请求阶段,判断服务端支持的版本号与客户端发送的版本号是否兼容,若否,则断开服务端与客户端的连接;若是,则执行步骤s140;
12.步骤s140、进入协商阶段,确定服务端与客户端连接的安全类型;
13.步骤s150、进入tls密钥认证阶段,判断服务端发送给客户端的随机数与服务端通过sm2算法解密获得的随机数是否一致;若否,则关闭服务端与客户端的连接;若是,则执行步骤s160;
14.步骤s160、进入初始化阶段,客户端发送clientinit初始化信息给服务端,服务端返回serverinit初始化信息;
15.步骤s170、进入交互阶段,客户端的操作指令发送给服务端,控制服务端进行相应的操作和结果显示。
16.在其中一个实施例中,所述步骤s130的方法,包括:
17.服务端向客户端发送版本协议信息;
18.客户端接收版本协议信息后,随机发送客户端的其中一个版本号与服务端进行协商;
19.判断服务端支持的版本号与客户端发送的版本号是否兼容,若否,则断开服务端与客户端的连接;若是,则执行步骤s140;其中,所述版本号为加入gm前缀的版本号。
20.在其中一个实施例中,所述步骤s140中的安全类型为tls认证,所述tls认证为国密算法融入tls协议中后的国密tls认证。
21.在其中一个实施例中,所述步骤s140的方法,具体操作包括:
22.服务端发送指定tls认证信息给客户端,通知客户端用tls加密的方式进行认证;
23.客户端接收指定tls认证信息后,发送安全类型为tls认证的返回信息给服务端,实现协商阶段操作。
24.在其中一个实施例中,所述tls加密的方式是基于国产密码套件sm2

sm3

sm4实现的tls加密。
25.在其中一个实施例中,所述步骤s150的方法,具体操作包括:
26.进入tls密钥认证阶段,服务端发送随机数信息发送给客户端;
27.客户端通过tls加密随机数并使用vnc连接密码作为密钥经加密处理生成返回消息发送给服务端;
28.服务端通过sm2算法对返回消息进行解密得到另一随机数;
29.判断服务端发送给客户端的随机数与服务端通过sm2算法解密获得的随机数是否一致;若否,则关闭服务端与客户端的连接;若是,则执行步骤s160。
30.在其中一个实施例中,所述vnc连接密码为访问服务端时客户端被要求输入的密码。
31.在其中一个实施例中,所述步骤s150中进入tls密钥认证阶段的方法,具体操作包括:
32.申请认证;
33.审核信息;
34.签发证书;
35.tls握手;
36.服务端发送证书;
37.服务端证书校验;
38.密钥协商;客户端发送随机数字并用证书公钥加密发送给服务端,并得到协商密钥,其中,协商密钥的生成通过sm2签名算法计算获得,协商密钥通过sm2签名算法计算时使用的参数包括哈希的随机数加上加密证书和证书的长度。
39.在其中一个实施例中,所述步骤tls握手的方法,具体操作包括:
40.客户端向服务端发送client hello信息,其中,client hello信息包含产生的随机数random_c以及客户端支持的加密算法,加密算法包括国产密码套件sm2

sm3

sm4;服务端接收client hello信息后,通过服务端支持的sm2

sm3

sm4算法得到随机数ramdom_s,并返回server hello信息给客户端,完成tls握手操作。
41.在其中一个实施例中,所述服务端证书校验的方法,具体操作包括:
42.客户端读取服务端发送的证书中的明文信息,采用sm3散列函数计算得到证书的信息摘要,然后利用客户端信任的ca机构的sm2公钥解密签名数据摘要,将解密后的签名数据摘要与证书的信息摘要进行对比;客户端信任的ca机构验证证书的域名信息、有效时间是否吊销,实现服务端证书校验操作。
43.综上所述,本发明提供的一种基于国密tls的vnc远程安全通信方法通过在vnc远程控制的基础上使用基于国密的tls加密,使得vnc的客户端和服务端建立连接过程中的认证阶段加密安全性更高,服务端验证客户端的连接,防止中间人的冒充客户端连接并控制攻击服务端,提高安全传输服务和远程访问服务,确保远程控制过程中鼠标键盘等操作指令传输和结果显示的安全性。
附图说明
44.图1为本发明实施例提供的一种基于国密tls的vnc远程安全通信方法的流程示意图。
具体实施方式
45.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
46.图1是本发明实施例提供的第一种基于国密tls的vnc远程安全通信方法的流程示意图,如图1所示,一种基于国密tls的vnc远程安全通信方法,具体包括如下步骤:
47.步骤s110、对tls协议进行过国密算法适配,将国密算法融入tls协议中进行安全通信,以较短的密钥长度实现了签名速度明显优于传统rsa算法且相当于rsa算法2048位安全级别的数据安全;具体地,修改tls协议源码中的cipher_suites.go以及key_agreement.go文件适配sm2国密算法,以使tls协议支持国密算法并对传输数据进行签名验证。
48.步骤s120、对vnc进行国密算法适配,将国密算法融入到vnc中进行安全通信,以在vnc认证类型为tls认证时,在vnc中增加国密算法适配;具体地,在vnc源码中的auth.c文件ecuritytype认证类型为tls认证时,对客户端及服务端的vnc源码中的auth.c文件进行国产密码套件sm2

sm3

sm4的适配,另外,在vnc的版本号中加入gm(国密)前缀,以表示版本号
适配国密算法。
49.其中,步骤s120可设置在步骤s110之前,步骤s120与步骤s110之间的顺序关系并不影响本发明一种基于国密tls的vnc远程安全通信方法的具体实现效果。
50.步骤s130、进入握手请求阶段,判断服务端支持的版本号与客户端发送的版本号是否兼容,若否,则断开服务端与客户端的连接;若是,则执行步骤s140。
51.具体地,所述步骤s130、进入握手请求阶段,判断服务端支持的版本号与客户端发送的版本号是否兼容,若否,则断开服务端与客户端的连接;若是,则执行步骤s140的方法,具体操作包括:
52.服务端向客户端发送版本协议信息;其中,版本协议信息为服务端能支持vnc的最高版本号信息;
53.客户端接收版本协议信息后,随机发送客户端的其中一个版本号与服务端进行协商;具体地,目前vnc发布支持的版本号为3.3、3.7和3.8,本实施例中,选用最常用的版本号3.8以003.008来传递。
54.判断服务端支持的版本号与客户端发送的版本号是否兼容,若否,则断开服务端与客户端的连接;若是,则执行步骤s140;其中,所述版本号为加入gm前缀的版本号。
55.步骤s140、进入协商阶段,确定服务端与客户端连接的安全类型,其中,安全类型为tls认证,所述tls认证为国密算法融入tls协议中后的国密tls认证。
56.具体地,所述步骤s140、进入协商阶段,确定服务端与客户端连接的安全类型的方法,具体操作包括:
57.服务端发送指定tls认证信息给客户端,通知客户端用tls加密的方式进行认证;本实施例中,vnc3.8版本支持tls加密类型,tls加密的方式是基于国产密码套件sm2

sm3

sm4实现的tls加密,对应命令为:vncserver

securitytypes=vencrypt,tlsvnc,设置时客户端被要求输入密码来访问服务端;
58.客户端接收指定tls认证信息后,发送安全类型为tls认证的返回信息给服务端,实现协商阶段操作。
59.本实施例步骤s130及步骤s140具体操作时,服务端向客户端发送支持的安全类型,安全类型常用值有0:invalid、1:none无认证、2:vnc认证、18:tls认证等,安全类型0表示连接失败,服务端返回失败原因,例如服务端不支持客户请求版本号;安全类型1为无口令认证;安全类型2为明文传输,只有安全类型18的tls加密传输能达到安全传输的目的,所以服务端发送安全类型为tls认证的信息给客户端,通知客户端用tls加密的方式进行认证,客户端回复相同的安全类型给服务端,表示确认。
60.步骤s150、进入tls密钥认证阶段,判断服务端发送给客户端的随机数与服务端通过sm2算法解密获得的随机数是否一致;若否,则返回授权结果为1,表示授权失败,关闭服务端与客户端的连接;若是,则返回授权结果为0,执行步骤s160。
61.具体地,所述步骤s150的方法,具体操作包括:
62.进入tls密钥认证阶段,服务端发送随机数信息发送给客户端;其中,服务端发送的随机数信息为一个十六字节的随机数;
63.客户端通过tls加密随机数并使用vnc连接密码作为密钥经加密处理生成返回消息发送给服务端;其中,tls加密是基于国产密码套件sm2

sm3

sm4实现的tls加密,tls加密
为采用sm2算法对随机数结合vnc连接密码作为密钥进行的加密,进一步地,tls加密为采用sm2椭圆曲线公钥密码算法对随机数及vnc连接密码进行加密,vnc连接密码为访问服务端时客户端被要求输入的密码。
64.服务端通过sm2算法对返回消息进行解密得到另一随机数;
65.判断服务端发送给客户端的随机数与服务端通过sm2算法解密获得的随机数是否一致;若否,则返回授权结果为1,表示授权失败,关闭服务端与客户端的连接;若是,则返回授权结果为0,执行步骤s160。
66.在其中一个实施例中,所述步骤s150中进入tls密钥认证阶段的方法,具体操作包括:
67.申请认证:服务器利用gmssl中sm2加密算法生成公钥(pub_svr)和私钥(pri_svr),根据公钥利用sm3签名算法生成请求文件(csr,)提交给ca机构,请求文件中含有公钥、组织信息、个人信息(域名)等信息;其中,ca机构由编译的gmssl搭建而成,同样具有颁发证书、签名验签、模拟用户和颁发机构、查看证书等功能;
68.审核信息:利用ca机构对申请者信息进行审核,以验证所提供信息的真实性、以及证书格式是否为标准的x509格式;
69.签发证书:当申请者信息审核通过时,ca机构会向申请者签发认证文件,即证书,所述证书包含以下信息:申请者公钥、申请者的组织信息和个人信息、签发机构即ca机构的信息、有效时间、证书序列号等信息的明文,同时包含一个签名;其中,所述签名的产生方法为首先使用sm3摘要算法计算公开的明文信息的信息摘要,然后采用ca机构的私钥对信息摘要进行加密获得密文即签名;
70.tls握手:客户端向服务端发送client hello信息,其中,client hello信息包含产生的随机数random_c以及客户端支持的加密算法,加密算法包括国产密码套件sm2

sm3

sm4;服务端接收client hello信息后,通过服务端支持的sm2

sm3

sm4算法得到随机数ramdom_s,并返回server hello信息给客户端,完成tls握手操作;
71.服务端发送证书:国密规范定义发送证书时需要发送两个证书,签名证书和加密证书(双证书体系);与标准tls报文格式一样,只是第一个证书是签名证书,第二个证书是加密证书;
72.服务端证书校验:客户端读取服务端发送的证书中的相关的明文信息,采用sm3散列函数计算得到证书的信息摘要,然后,利用客户端信任的ca机构的sm2公钥解密签名数据摘要,将解密后的签名数据摘要与证书的信息摘要进行对比,如果一致,则可以确认证书的合法性,即公钥合法;客户端信任的ca机构验证证书的域名信息、有效时间是否吊销等信息,以实现服务端证书校验操作;
73.密钥协商:客户端发送随机数字并用证书公钥加密发送给服务端,并得到协商密钥,其中,协商密钥的生成通过sm2签名算法计算获得,协商密钥通过sm2签名算法计算时使用的参数包括哈希的随机数加上加密证书和证书的长度。
74.具体地,客户端发送client_key_exchange和change_cipher_spec以及encrypted_handshake_message进行密钥协商,client_key_exchange为客户端产生随机数字hash_in以及数据的长度hash_len,并用证书公钥加密发送给服务端,并得到协商密钥,计算公示如下:
75.sm2_sign(random_c+random_s+hash_len+hash_in);
76.change_cipher_spec为客户端通知服务器后续的通信都采用协商密钥和sm2

sm3

sm4加密算法进行加密通信;encrypted_handshake_message为客户端结合之前所有通信参数的hash值与其它相关信息生成一段数据,采用协商密钥与sm2算法进行加密,然后发送给服务端用于数据与握手验证;
77.服务端用私钥解密客户端发送的随机数hansh_in并得到随机数长度hash_len,基于上述交换得到的random_c和ramdom_s,计算得到协商密钥。
78.本实施例中,在服务端证书验证通过之后,服务端同样发送change_cipher_spec给客户端,以告知客户端后续的通信都采用协商密钥与sm2

sm3

sm4加密算法进行加密通信。
79.步骤s160、进入初始化阶段,客户端发送clientinit初始化信息给服务端,服务端返回serverinit初始化信息,其中,serverinit初始化信息包含服务端的帧缓存的高度、宽度、像素格式和桌面名称等。
80.步骤s170、进入交互阶段,客户端的键盘及鼠标操作等操作指令发送给服务端,从而控制服务端进行相应的操作和结果显示;其中,客户端的键盘通过键符号值(keysym值)操作指令发送给服务端,鼠标按钮的各键采用1到8位掩码标识操作指令发送给服务端,0表示松开,1表示按下。
81.本实施例中,由于因为tls密钥认证阶段使用的是sm2非对称加密算法,速度相对比较慢,为了提高信息传输速率;在进入交互阶段后,客户端发送的鼠标、键盘等操作指令并经sm4算法加密后发送给服务端,以对服务端进行相应的操控。
82.本发明在vnc远程控制的基础上使用基于国密的tls加密,把日常使用的国际通用的易受中间人攻击的rsa算法换成国密算法,保障了vnc指令等信息通信安全可控;另外,针对tls安全通信的根基的密钥协商部分进行改进,如签名加密算法使用sm2非对称加密算法,信息摘要验证完整性使用sm3杂凑算法,加密后的数据传输使用sm4对称加密算法,利用vnc与基于国密的算法相结合,使得vnc的客户端和服务端建立连接过程中的认证阶段加密安全性更高,服务端验证客户端的连接,防止中间人的冒充客户端连接并控制攻击服务端,提高安全传输服务和远程访问服务,确保远程控制过程中鼠标键盘等操作命令传输和结果显示的安全性。
83.为了更加清晰本发明的技术方案,下面再阐述优选实施例。
84.步骤s110、对tls协议进行过国密算法适配,将国密算法融入tls协议中进行安全通信;
85.步骤s120、对vnc进行国密算法适配,将国密算法融入到vnc中进行安全通信;
86.步骤s130、进入握手请求阶段,判断服务端支持的版本号与客户端发送的版本号是否兼容,若否,则断开服务端与客户端的连接;若是,则执行步骤s140;
87.步骤s140、进入协商阶段,确定服务端与客户端连接的安全类型;
88.步骤s150、进入tls密钥认证阶段,判断服务端发送给客户端的随机数与服务端通过sm2算法解密获得的随机数是否一致;若否,则关闭服务端与客户端的连接;若是,则执行步骤s160;
89.步骤s160、进入初始化阶段,客户端发送clientinit初始化信息给服务端,服务端
返回serverinit初始化信息;
90.步骤s170、进入交互阶段,客户端的操作指令发送给服务端,控制服务端进行相应的操作和结果显示。
91.综上所述,本发明一种基于国密tls的vnc远程安全通信方法通过在vnc远程控制的基础上使用基于国密的tls加密,使得vnc的客户端和服务端建立连接过程中的认证阶段加密安全性更高,服务端验证客户端的连接,防止中间人的冒充客户端连接并控制攻击服务端,提高安全传输服务和远程访问服务,确保远程控制过程中鼠标键盘等操作指令传输和结果显示的安全性。
92.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
93.在本发明所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
94.本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例装置中的单元可以根据实际需要进行合并、划分和删减。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
95.以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1