本发明涉及安全通信,尤其涉及一种基于tlcp商密协议的安全通信方法及安全通信系统。
背景技术:
1、tlcp(transport layer cryptographic protocol,传输层密码协议)是在国家标准gb/t 38636—2020中定义的一种基于商密算法加密的安全通信协议,也可以简称为商密ssl/tls(secure sockets layer/transport layer security,安全套接字层/传输层安全)协议。tlcp协议在tls1.2的基础上使用商密算法替换国际标准算法(如使用sm2或sm9算法替换rsa算法)、使用sm3算法替换sha1、sha256算法,使用sm4算法替换aes算法,并且必须使用双证证书。其中,双证证书包含签名证书和加密证书,签名证书用于认证,加密证书用于加密和协商密钥。tlcp协议基于公钥加密技术可以在不同的通信双方之间建立一个安全的链接,实现数据的加密传输。
2、然而,tlcp商密协议仅支持公钥加密技术,且通信双方必须配置双证证书才能正常通信,这就限制了tlcp商密协议的使用范围;另外,虽然公钥加密技术相对安全,但也存在以下缺点:运算量大,需要较高的计算能力和存储空间,导致通信成本增加和效率降低,无法在cpu性能受限的环境中使用;容易受到中间人攻击,即攻击者可以截获通信双方的公钥,然后伪造自己的公钥进行欺骗,从而窃取或篡改数据;需要依赖可信的第三方机构来验证公钥的真实性,增加了通信的复杂性和风险。另外,采用tlcp协议进行通信的双方需要进行两次交互才能建立安全的通信通道。
技术实现思路
1、本发明提供一种基于tlcp商密协议的安全通信方法及安全通信系统,用以解决现有技术中tlcp商密协议的使用范围受限以及tlcp商密协议使用公钥加密技术存在的缺陷,实现tlcp商密协议使用范围的拓展以及安全通信。
2、本发明提供一种基于tlcp商密协议的安全通信方法,其包括以下步骤:
3、客户端向服务器发送clienthello消息及其扩展消息;
4、服务器接收clienthello消息及其扩展消息后向客户端发送severhello消息及其扩展消息;
5、服务器向客户端发送finished消息;
6、客户端对接收到的finished消息进行解密,以验证客户端主密钥的正确性,并获取客户端权限信息;
7、客户端向服务器发送加密的finished消息,同时根据客户端操作发送相应的加密的客户端应用数据;
8、服务器对接收到的加密的finished消息进行解密,以验证服务器主密钥的正确性,并对接收到的加密的客户端应用数据进行解密,以根据用户的权限执行相应的操作或返回相应的结果。
9、根据本发明提供的一种基于tlcp商密协议的安全通信方法,所述clienthello消息中的密码套件为ecdhe_psk套件,所述ecdhe_psk套件是结合sm2证书、sm2密钥交换算法和psk机制进行身份认证和密钥交换的套件;所述ecdhe_psk套件为ecdhe_psk_sm4_cbc_sm3和ecdhe_psk_sm4_gcm_sm3中的一种。
10、根据本发明提供的一种基于tlcp商密协议的安全通信方法,所述clienthello消息的扩展消息包括psk标识列表、客户端信息和客户端临时公钥;
11、所述客户端信息包括网络环境、用户身份和设备信息;
12、所述客户端临时公钥的计算过程为:
13、客户端随机选择一个整数k并将其作为客户端临时私钥,利用所述客户端临时私钥k和sm2密钥生成算法中椭圆曲线的基点g计算得到客户端临时公钥p=kg。
14、进一步地,所述severhello消息的扩展消息包括psk标识和服务器临时公钥;
15、所述psk标识由服务器按照预设选取规则从接收到的psk标识列表中选择;
16、所述服务器临时公钥的计算过程为:
17、服务器随机选择一个整数l并将其作为服务器临时私钥,利用所述服务器临时私钥l和sm2密钥生成算法中椭圆曲线的基点g计算得到服务器临时公钥q=lg。
18、更进一步地,所述finished消息包括服务器验证信息和服务器生成的客户端权限信息;
19、服务器利用服务器工作密钥并采用sm4-gcm加密算法加密得到finished消息f,f=sm4-gcm(wks,vs||pi),wks表示服务器工作密钥,vs表示服务器验证信息,pi表示服务器生成的客户端权限信息。
20、更进一步地,所述服务器工作密钥wks由服务器利用服务器主密钥、两个随机数以及服务器工作密钥标签"wks"并采用sm3杂凑算法计算得到,wks=sm3(mks||rc||rs||"wks"),其中,mks表示服务器主密钥,rc表示clienthello消息中的客户端随机数,rs表示serverhello消息中的服务器随机数;
21、所述服务器主密钥mks由服务器利用预主密钥以及clienthello消息中的客户端随机数rc和serverhello消息中的服务器随机数rs并采用sm3杂凑算法计算得到,mks=sm3(pmks||rc||rs),pmks表示服务器预主密钥;
22、所述服务器预主密钥pmks由服务器利用服务器共享密钥zs和两个随机数并采用sm3杂凑算法计算得到,pmks=sm3(zs||rc||rs)。
23、更进一步地,所述服务器共享密钥zs的计算过程为:
24、服务器根据从接收到的psk标识列表中选择的psk标识在服务器端的数据库中查询到该psk标识对应的psk密钥;
25、服务器利用服务器临时私钥l和接收到的客户端临时公钥p计算得到服务器临时共享密钥s,s=lp;
26、服务器利用服务器临时共享密钥s和psk密钥并采用sm3杂凑算法计算得到服务器共享密钥zs,zs=sm3(s||psk)。
27、进一步地,所述服务器验证信息vs由服务器利用服务器主密钥mks、clienthello消息中的客户端随机数rc和serverhello消息中的服务器随机数rs以及服务器验证信息标签"vs"并采用sm3杂凑算法计算得到,vs=sm3(mks||rc||rs||"vs")。
28、进一步地,所述客户端权限信息pi由服务器根据用户的属性信息、设备信息和网络环境动态地分配用户的访问权限,所述客户端权限信息pi为权限码和权限列表中的一种。
29、根据本发明提供的一种基于tlcp商密协议的安全通信方法,所述客户端对接收到的finished消息进行解密,以验证客户端主密钥的正确性的过程为:
30、客户端利用客户端工作密钥并采用sm4-gcm加密算法对接收到的finished消息进行解密,得到服务器验证信息和客户端权限信息vs||pi;
31、客户端利用客户端主密钥mkc、clienthello消息中的客户端随机数rc和serverhello消息中的服务器随机数rs以及服务器验证信息标签"vs",并采用sm3杂凑算法计算得到服务器验证信息vcs,vcs=sm3(mkc||rc||rs||"vs");
32、客户端将计算得到的服务器验证信息vcs与解密得到的服务器验证信息vs进行比较,如果二者相同,则表示客户端主密钥mkc正确;否则,表示客户端主密钥mkc错误。
33、进一步地,所述客户端工作密钥wkc由客户端利用客户端主密钥以及clienthello消息中的客户端随机数rc和serverhello消息中的服务器随机数rs并采用sm3杂凑算法计算得到,wkc=sm3(mkc||rc||rs||"wkc");
34、所述客户端主密钥mkc由客户端利用预主密钥以及clienthello消息中的客户端随机数rc和serverhello消息中的服务器随机数rs并采用sm3杂凑算法计算得到,mkc=sm3(pmkc||rc||rs),pmkc表示客户端预主密钥;
35、所述客户端预主密钥pmkc由客户端利用客户端共享密钥zc以及clienthello消息中的客户端随机数rc和serverhello消息中的服务器随机数rs并采用sm3杂凑算法计算得到,pmkc=sm3(zc||rc||rs)。
36、更进一步地,所述客户端共享密钥zc的计算过程为:
37、客户端根据接收到的psk标识在客户端的数据库中查询到该psk标识对应的psk密钥;
38、客户端利用服客户端临时私钥k和接收到的服务器临时公钥q计算得到临时共享密钥c,c=kq;
39、客户端利用临时共享密钥c和psk密钥并采用sm3杂凑算法计算得到客户端共享密钥zc,zc=sm3(c||psk)。
40、根据本发明提供的一种基于tlcp商密协议的安全通信方法,所述客户端加密的finished消息包括客户端验证信息和空的权限信息;
41、所述客户端加密的finished消息fm由客户端利用客户端工作密钥并采用sm4-gcm加密算法加密得到,fm=sm4-gcm(wkc,vc||null),其中,wkc表示客户端工作密钥,null表示空的权限信息;
42、客户端验证信息vc由客户端利用客户端主密钥、clienthello消息中的客户端随机数rc和serverhello消息中的服务器随机数rs以及客户端验证信息标签"vc"并采用sm3杂凑算法计算得到,vc=sm3(mkc||rc||rs||"vc")。
43、进一步地,所述服务器对接收到的加密的finished消息进行解密,以验证服务器主密钥的正确性的过程为:
44、服务器利用服务器工作密钥并采用sm4-gcm加密算法对接收到的加密的finished消息进行解密,得到客户端验证信息和空的权限信息vc||null;
45、服务器利用服务器主密钥mks、两个随机数以及客户端验证信息标签"vc",并采用sm3杂凑算法计算得到客户端验证信息vsc,vsc=sm3(mks||rc||rs||"vc");
46、服务器将计算得到的客户端验证信息vsc与解密得到的客户端验证信息vc进行比较,如果二者相同,则表示服务器主密钥mks正确;否则,表示服务器主密钥mks错误。
47、本发明还提供一种采用如上述任一项所述方法的基于tlcp商密协议的安全通信系统,其包括客户端和服务器,所述客户端和服务器基于tlcp商密协议进行安全通信;
48、所述客户端向服务器发送clienthello消息及其扩展消息,其中,clienthello消息的扩展消息包括psk标识列表、客户端信息和客户端临时公钥;
49、所述服务器接收clienthello消息及其扩展消息后向客户端发送severhello消息及其扩展消息,其中,severhello消息的扩展消息包括psk标识和服务器临时公钥;
50、所述服务器向客户端发送finished消息,其中,finished消息包括服务器验证信息和服务器生成的客户端权限信息;
51、所述客户端对接收到的finished消息进行解密,以验证客户端主密钥的正确性,并获取服务器生成的客户端权限信息;
52、所述客户端向服务器发送加密的finished消息,同时根据客户端操作发送相应的加密的客户端应用数据,其中,客户端加密的finished消息包括客户端验证信息和空的权限信息;
53、所述服务器对接收到的加密的finished消息进行解密,以验证服务器主密钥的正确性;并对接收到的加密的客户端应用数据ad进行解密,以根据用户的权限执行相应的操作或返回相应的结果。
54、本发明提供的基于tlcp商密协议的安全通信方法及安全通信系统通过tlcp商密协议结合psk和ecdhe安全机制,建立以身份为中心的访问控制机制,拓宽了tlcp商密协议的使用范围,并且能够解决公钥加密技术存在的运算量大、通信成本高、中间人攻击和依赖第三方机构等问题。
55、本发明提供的基于tlcp商密协议的安全通信方法及安全通信系统中客户端发送应用数据前仅需要1个往返时间,能够简化客户端与服务器之间的交互流程;通过增加访问控制机制,能够有效地防止未经授权的用户或恶意软件访问敏感或关键的资源或功能;通过使用psk作为用户的身份标识,能够简化用户的认证过程,并提高安全性,结合echde协议,实现双方的安全通行,防止中间人攻击或重放攻击,具有前向安全性;通过动态地调整用户的访问权限,能够实现精细和动态的控制,并满足不同的场景和需求。