有效
基于随机数隐式协商的TLS协议会话密钥还原方法
陈荣茂、李杰、苏金树、陈曙晖、王小峰、张博锋、孙一品、王飞、刘宇靖
中国人民解放军国防科技大学
陈
陈荣茂 专利 19
中国人民解放军国防科技大学安全通信数字信息传输电通信技术
李
李杰 专利 96
中国人民解放军国防科技大学自动驾驶控制物理量控制控制调节
苏
苏金树 专利 88
中国人民解放军国防科技大学数据交换网数字信息传输电通信技术
陈
陈曙晖 专利 91
中国人民解放军国防科技大学数据交换网H04L29/00数字信息传输
王
王小峰 专利 49
中国人民解放军国防科技大学H04L29/00数字信息传输电通信技术
张
张博锋 专利 18
中国人民解放军国防科技大学H04L29/00数字信息传输电通信技术
孙
孙一品 专利 16
中国人民解放军国防科技大学H04L29/00数字信息传输电通信技术
王
王飞 专利 39
中国人民解放军国防科技大学数字信息传输电通信技术电子数据处理
刘
刘宇靖 专利 25
中国人民解放军国防科技大学数字信息传输电通信技术H04L29/00
摘要
针对现有TLS中间件安全防护方法无法满足目前以及未来的TLS中间件使用场景,本发明提供一种基于随机数隐式协商的TLS协议会话密钥还原方法:1.中间件生成公私钥对,将公钥发送给客户端;2.客户端保存公钥,和服务器进行握手,构造握手报文发送给服务器;3.中间件保存握手报文并转发到服务器;4.服务器向客户端发送报文;5.中间件计算握手报文加密密钥;6.中间件对报文进行解密,并通过计算,还原会话密钥,同时转发收到的报文;7.客户端收到服务器报文后,向中间件发送报文;8.中间件将报文转发给服务器,并生成会话复用主密;9.中间件解密TLS流量,执行中间件功能。本发明可用于TLS中间件技术,提供基于网络的安全属性,且大幅减少中间件的计算开销。
1.基于随机数隐式协商的TLS协议会话密钥还原方法,其特征在于,包括以下步骤:第一步,中间件生成公私钥对(sk m ,pk m ),sk m 为中间件的私钥,pk m 为中间件的公钥, 其中g为椭圆曲线x25519的生成元;中间件将私钥sk m 秘密保存,将公钥pk m 发送给客户端;第二步,客户端收到公钥pk m 后,保存到本地;客户端和服务器进行握手,使用中间件公钥pk m 构造握手报文ClientHello报文,并将握手报文ClientHello报文发送给服务器;第三步,中间件监听到握手报文ClientHello报文后,保存到本地,并将握手报文ClientHello报文转发到服务器;第四步,服务器收到握手报文ClientHello报文,向客户端发送ServerHello报文、EncryptedExtensions报文、Certificate报文、CertificateVerify报文、server Finished报文,其中,ServerHello报文为服务器握手报文,EncryptedExtensions报文为服务器加密扩展报文,Certificate报文为证书报文,CertificateVerify报文为证书判定报文,serverFinished报文为服务器握手结束报文;第五步,中间件监听到ServerHello报文,根据ServerHello报文密钥交换扩展key_share中选择的椭圆曲线计算客户端的握手临时私钥 并计算Diffie-Hellman密钥交换结果 其中epk s 为服务器所选择的临时握手公钥,name为椭圆曲线的名称,len为客户端握手临时私钥长度,r为随机数,HKDF函数定义参见RFC 8446;然后,中间件计算客户端加密握手报文密钥和服务器加密握手报文密钥;第六步,中间件收到EncryptedExtensions报文、Certificate报文、CertificateVerify报文、server Finished报文后,对EncryptedExtensions报文、Certificate报文、CertificateVerify报文、server Finished报文进行解密,并通过计算,还原会话密钥,得到主密钥master_secret,同时转发收到的EncryptedExtensions报文、Certificate报文、CertificateVerify报文、server Finished报文给客户端;第七步,客户端收到服务器报文后,向中间件发送客户端证书报文Certificate报文、证书判定报文CertificateVerify报文,以及客户端握手结束报文clientFinished报文;第八步,中间件收到客户端发送的Certificate报文、CertificateVerify报文和client Finished报文后,将Certificate报文、CertificateVerify报文和clientFinished报文转发给服务器,并利用函数Derive-Secret(master_secret,“res master”,ClientHello…client Finished)生成会话复用主密钥resumption_master_secret,其中master_secret为第六步生成的主密钥,ClientHello…client Finished为从客户端握手报文ClientHello报文到客户端握手结束报文client Finished报文之间所有的报文内容,其中,Derive-Secret函数的定义参见RFC 8446;第九步,客户端和服务器握手完成,中间件解密TLS流量,执行中间件功能。
2.如权利要求1所述的基于随机数隐式协商的TLS协议会话密钥还原方法,其特征在于,所述第二步具体包括以下步骤:2.1)客户端发起TLS连接,选择随机数r,计算g r ,客户端将g r 填充到握手报文ClientHello报文的随机数字段;2.2)对于客户端支持ECDHE密钥交换的每条椭圆曲线,客户端计算握手临时私钥 客户端将esk c 对应的公钥填充到握手报文ClientHello报文的密钥交换扩展key_share中;2.3)客户端将构造好的握手报文ClientHello报文发送给服务器。
3.如权利要求1所述的基于随机数隐式协商的TLS协议会话密钥还原方法,其特征在于,所述第五步中间件计算客户端加密握手报文密钥和服务器加密握手报文密钥,具体包括下述步骤,其中,HKDF-Extract、HKDF-Expand-Label和Derive-Secret函数的定义参见RFC 8446:5.1)利用HKDF-Extract(0,psk)生成初期密钥early_secret,其中psk为服务器和客户端之间的预共享密钥,early_secret为生成的初期密钥,用于生成后续其他密钥;5.2)利用Derive-Secret(early_secret,“derived”,“”)生成第一临时密钥temp_secret_1,其中early_secret为步骤5.1中生成的初期密钥,temp_secret_1为第一临时密钥,用于生成后续其他密钥;5.3)利用HKDF-Extract(temp_secret_1,Z)生成握手密钥handshake_secret,其中temp_secret_1为步骤5.2中生成的第一临时密钥,Z为服务器和客户端之间Diffie-Hellman密钥协商结果;5.4)利用Derive-Secret(handshake_secret,“c hs traffic”,ClientHello…ServerHello)生成客户端握手流量密钥client_handshake_traffic_secret,其中handshake_secret为步骤5.3中生成的握手密钥,ClientHello…ServerHello为从客户端ClientHello报文到服务器ServerHello报文之间的所有报文内容;5.5)利用Derive-Secret(handshake_secret,“s hs traffic”,ClientHello…ServerHello)生成服务器握手流量密钥server_handshake_traffic_secret,其中handshake_secret为步骤5.3中生成的握手密钥,ClientHello…ServerHello为从客户端ClientHello报文到服务器ServerHello报文之间所有的报文内容;5.6)利用HKDF-Expand-Label(client_handshake_traffic_secret,“iv”,“”,iv_length)生成客户端加密握手报文初始向量client_handshake_write_iv,其中client_handshake_traffic_secret为步骤5.4中生成的客户端握手流量密钥,iv_length为客户端加密握手报文初始向量长度;5.7)利用HKDF-Expand-Label(client_handshake_traffic_secret,“key”,“”,key_length)生成客户端加密握手报文密钥client_handshake_write_key,其中client_handshake_traffic_secret为步骤5.4中生成的客户端握手流量密钥,key_length为客户端加密握手报文密钥长度;5.8)利用HKDF-Expand-Label(server_handshake_traffic_secret,“iv”,“”,iv_length)生成服务器加密握手报文初始向量server_handshake_write_iv,其中server_handshake_traffic_secret为步骤5.5中生成的服务器握手流量密钥,iv_length为服务器加密握手报文初始向量长度;5.9)利用HKDF-Expand-Label(server_handshake_traffic_secret,“key”,“”,key_length)生成服务器加密握手报文密钥server_handshake_write_key,其中server_handshake_traffic_secret为步骤5.5中生成的服务器握手流量密钥,key_length为服务器加密握手报文密钥长度。
4.如权利要求3所述的基于随机数隐式协商的TLS协议会话密钥还原方法,其特征在于,所述第六步具体包括以下步骤:6.1)利用Derive-Secret(handshake_secret,“derived”,“”)生成第二临时密钥temp_secret_2,其中handshake_secret为步骤5.3中生成的握手密钥;6.2)利用HKDF-Extract(temp_secret_2,0)生成主密钥master_secret,其中temp_secret_2为步骤6.1中生成的第二临时密钥;6.3)利用Derive-Secret(master_secret,“c app traffic”,ClientHello…serverFinished)生成客户端应用流量密钥client_application_traffic_secret,其中master_secret为步骤6.2中生成的主密钥,ClientHello…server Finished为从客户端握手报文ClientHello报文到服务器握手结束报文server Finished报文之间的所有报文内容;6.4)利用Derive-Secret(master_secret,“s app traffic”,ClientHello…serverFinished)生成服务器应用流量密钥server_application_traffic_secret,其中master_secret为步骤6.2中生成的主密钥,ClientHello…server Finished为从客户端握手报文ClientHello报文到服务器握手结束报文server Finished报文之间的所有报文内容;6.5)利用HKDF-Expand-Label(client_application_traffic_secret,“iv”,“”,iv_length)生成客户端加密应用流量初始向量client_application_write_iv,其中client_application_traffic_secret为步骤6.3中生成的客户端应用流量密钥,iv_length为客户端加密应用流量初始向量长度;6.6)利用HKDF-Expand-Label(client_application_traffic_secret,“key”,“”,key_length)生成客户端加密应用流量密钥client_application_write_key,其中client_application_traffic_secret为步骤6.3中生成的客户端应用流量密钥,key_length为客户端加密应用流量密钥长度;6.7)利用HKDF-Expand-Label(server_application_traffic_secret,“iv”,“”,iv_length)生成服务器加密应用流量初始向量server_application_write_iv,其中server_application_traffic_secret为步骤6.4中生成的服务器应用流量密钥,iv_length为服务器加密应用流量初始向量长度;6.8)利用HDKF-Expand-Label(server_application_traffic_secret,“key”,“”,key_length)生成服务器加密应用流量密钥server_application_write_key,其中server_application_traffic_secret为步骤6.4中生成的服务器应用流量密钥,key_length为服务器加密应用流量密钥的长度。
5.如权利要求1所述的基于随机数隐式协商的TLS协议会话密钥还原方法,其特征在于,所述第九步中间件具体执行以下功能:对会话流量进行转发,对服务器发出的流量进行解密,对客户端发出的流量进行解密,然后,中间件在解密后的流量上执行病毒检测功能。



