CN102082796B - 一种基于http的产生会话密钥的方法及系统 - Google Patents
一种基于http的产生会话密钥的方法及系统 Download PDFInfo
- Publication number
- CN102082796B CN102082796B CN201110023350.6A CN201110023350A CN102082796B CN 102082796 B CN102082796 B CN 102082796B CN 201110023350 A CN201110023350 A CN 201110023350A CN 102082796 B CN102082796 B CN 102082796B
- Authority
- CN
- China
- Prior art keywords
- server
- client
- message
- session
- cryptographic algorithm
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明提供一种基于HTTP的产生会话密钥的方法及系统,包括:客户端向服务器发送握手消息;服务器生成回答并发送到客户端;客户端生成客户端密钥更改消息、确认加密算法集及客户端信道验证消息并将其发送到服务器;服务器生成服务器密钥更改消息、确认加密算法集、确认传输密钥安全级别及服务器信道验证消息并将其发送到客户端;客户端根据本次会话的加密算法集解密所述服务器密钥更改消息,验证签名并生成本次会话密钥,并将会话随机数保存在本地缓存供后续简化加密方法使用。本发明能够在任意HTTP业务流程中随时建立加密信道,实现了信道加密与身份认证的分离。
Description
技术领域
本发明是关于通信技术,特别是关于信道加密技术,具体的讲是关于一种基于HTTP的产生会话密钥的方法及系统。
背景技术
现有技术中,通常直接在客户端和服务器间使用TLS建立加密信道,然后在TLS通道之上使用HTTP协议传输内容,但是客户端的本地TLS实现规范不统一,不能保证加密强度和实现的质量,并且一些地区的移动运营商WAP网关对于建立TLS通道支持不稳定。HTTP协议在几乎所有的网络设备中(包括路由器、交换机、防火墙、WAP网关等)的支持程度非常好,所以,我们希望在HTTP之上建立一种信道加密方法,允许通信双方使用HTTP协议达成会话密钥并对于HTTP通信内容加密。
发明内容
本发明提供一种基于HTTP的产生会话密钥的方法及系统,以在任意业务流程中随时建立加密信道,实现信道加密与身份认证的分离。
为了实现上述目的,在一实施例中,本发明提供一种基于HTTP的产生会话密钥的方法,该方法包括:客户端向服务器发送包含客户端协议版本、客户端时间戳、客户端随机数、会话、支持的加密算法集的ClientHello;所述服务器接收客户端发送的ClientHello,建立会话,存储客户端时间戳、客户端随机数,根据所述支持的算法集选择本次会话的加密算法,并向所述客户端发送包含服务器协议版本号、服务器时间戳、服务器随机数、服务器会话、本次会话指定加密算法、服务器公钥证书的ServerHello;所述客户端接收所述的ServerHello,根据所述的ServerHello生成客户端信道验证Finished消息及包含客户端预主密钥PMS、客户端主密钥MS的ClientKeyExchange,并将ClientKeyExchange、确认加密算法集及客户端信道验证Finished消息发送到所述服务器;所述服务器接收所述ClientKeyExchange、确认加密算法集及客户端信道验证Finished消息,利用私钥解密并取出PMS,服务器时间戳、服务器随机数及扩展域,利用PMS、RNC及RNS计算MS,并提取所需扩展域数值;生成服务器预主密钥PMS2、服务器主密钥MS2、服务器信道验证Finished消息及下次使用的服务器随机数RNS2,根据本次会话的加密算法,对RNS2与PMS2执行HMAC,然后对称加密元组{RNS2,PMS2,HMacValue},并保存在ServerKeyExchange中,并将包含的ServerKeyExchange、确认加密算法集、确认传输密钥安全级别及服务器信道验证Finished消息与InitContent初始化消息发送到所述客户端;客户端接收ServerKeyExchange、确认加密算法集、确认传输密钥安全级别及服务器信道验证Finished消息,验证服务器信道验证Finished消息,根据本次会话的加密算法集解密所述ServerKeyExchange,验证所述HMAC摘要签名,利用PMS2、RNC、RNS生成MS2,通过MS2、RNC、RNS生成会话密钥素材,并将所述RNS2保存在本地缓存中。
为了实现上述目的,在另一实施例中,本发明提供一种基于HTTP的产生会话密钥的系统,该系统包括:ClientHello处理单元,用于客户端向服务器发送包含客户端协议版本、客户端时间戳、客户端随机数、会话、支持的加密算法集的ClientHello;ServerHello处理单元,用于所述服务器接收客户端发送的ClientHello,建立会话,存储客户端时间戳、客户端随机数,根据所述支持的算法集选择本次会话的加密算法,并向所述客户端发送包含服务器协议版本号、服务器时间戳、服务器随机数、服务器会话、本次会话指定加密算法、服务器公钥证书的ServerHello;ClientKeyExchange处理单元,用于所述客户端接收所述的ServerHello,根据所述的ServerHello生成客户端信道验证Finished消息及包含客户端预主密钥PMS、客户端主密钥MS的ClientKeyExchange,并将ClientKeyExchange、确认加密算法集及客户端信道验证Finished消息发送到所述服务器;ServerKeyExchange处理单元,用于所述服务器接收所述ClientKeyExchange、确认加密算法集及客户端信道验证Finished消息,利用私钥解密并取出PMS,服务器时间戳、服务器随机数及扩展域,利用PMS、RNC及RNS计算MS,并提取所需扩展域数值;生成服务器预主密钥PMS2、服务器主密钥MS2、服务器信道验证Finished消息及下次使用的服务器随机数RNS2,根据本次会话的加密算法对RNS2、PMS2计算生成HMacValue,然后对称加密元组{RNS2,PMS2,HMacValue},并保存在ServerKeyExchange中,并将包含的ServerKeyExchange、确认加密算法集、确认传输密钥安全级别及服务器信道验证Finished消息与InitContent初始化消息发送到所述客户端;加密验证单元,用于客户端接收ServerKeyExchange、确认加密算法集、确认传输密钥安全级别及服务器信道验证Finished消息,验证服务器信道验证Finished消息,根据本次会话的加密算法集解密所述ServerKeyExchange,验证所述HMAC摘要签名,利用PMS2、RNC、RNS生成MS2,再通过MS2、RNC、RNS生成会话密钥素材,并将所述RNS2保存在本地缓存中。
为了实现上述目的,在另一实施例中,本发明提供一种基于HTTP的产生会话密钥的方法,该方法包括:客户端利用服务器域名从本地缓存中获得元组{ServerDNS,ServerCertificate,RNS2,CertificateRequest.flag};生成PMS、客户端验证信道Finished消息及包含客户端协议版本、客户端时间戳、客户端随机数、会话、支持的加密算法集及服务器证书序列号的ClientHello;以RNS2作为RNS;加密包含在ClientKeyExchange中的元组{PMS,服务器时间戳,服务器随机数,扩展域},向服务器发送ClientHello、ClientKeyExchange,ChangeCipherSpe及客户端验证信道Finished;所述服务器建立会话,根据支持的加密集合选择本次会话的加密算法,根据服务器证书序列号验证证书有效性,如果服务器判断证书有效,解密元组{PMS,服务器时间戳,服务器随机数及扩展域},通过PMS、RNC、RNS计算客户端主密钥MS,验证客户端发送的Finished信息;生成下次使用的服务器随机数RNS2、服务器预主密钥PMS2,MS2及包含服务器时间戳协议版本、服务器时间戳,服务器随机数、会话、本次会话的加密算法的,根据本次会话的加密算法对RNS2、PMS2计算生成HMacValue,对称加密元组{RNS2,PMS2,HMacValue},并封装在ServerKeyExchange中;向所述客户端发送ServerHello,ServerKeyExchange,ChangeCipherSpec,服务器验证信道Finished信息;所述客户端接收ServerKeyExchange,ChangeCipherSpec,服务器验证信道Finished信息,验证服务器验证信道Finished,解密ServerKeyExchange,验证HMAC摘要签名,获取元组{RNS2,PMS2},缓存RNS2作为下次简化连接的RNS,利用PMS2、RNC、RNS生成MS2,再通过MS2、RNC、RNS生成会话密钥素材。
为了实现上述目的,在另一实施例中,本发明提供一种基于HTTP的产生会话密钥的系统,该系统包括:简化ClientHello处理单元,用于客户端利用服务器域名从本地缓存中获得元组{ServerDNS,ServerCertificate,RNS2,CertificateRequest.flag};生成PMS、客户端验证信道Finished消息及包含客户端协议版本、客户端时间戳、客户端随机数、会话、支持的加密算法集及服务器证书序列号的ClientHello;以RNS2作为RNS;加密包含在ClientKeyExchange中的元组{PMS,服务器时间戳,服务器随机数,扩展域},向服务器发送ClientHello、ClientKeyExchange,ChangeCipherSpe及客户端验证信道Finished;简化ServerHello处理单元,用于所述服务器建立会话,根据支持的加密集合选择本次会话的加密算法,根据服务器证书序列号验证证书有效性,如果服务器判断证书有效,解密元组{PMS,服务器时间戳,服务器随机数及扩展域},通过PMS、RNC、RNS计算客户端主密钥MS,验证客户端发送的Finished信息;生成下次使用的服务器随机数RNS2、服务器预主密钥PMS2,MS2及包含服务器时间戳协议版本、服务器时间戳,服务器随机数、会话、本次会话的加密算法的,根据本次会话的加密算法对RNS2、PMS2计算生成HMacValue,对称加密元组{RNS2,PMS2,HMacValue},并封装在ServerKeyExchange中;向所述客户端发送ServerHello,ServerKeyExchange,ChangeCipherSpec,服务器验证信道Finished信息;简化加密验证单元,用于所述客户端接收ServerKeyExchange,ChangeCipherSpec,服务器验证信道Finished信息,验证服务器验证信道Finished,解密ServerKeyExchange,验证HMAC摘要签名,获取元组{RNS2,PMS2},缓存RNS2作为下次简化连接的RNS,利用PMS2、RNC、RNS生成MS2,再通过MS2、RNC、RNS生成会话密钥素材。
本发明实施例的有益效果在于,本发明能够在基于HTTP通信的任意业务流程中随时建立加密信道,实现了信道加密与身份认证的分离。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本实用新型的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例基于HTTP的产生会话密钥的方法流程图;
图2为本发明实施例基于HTTP的产生会话密钥的系统结构框图;
图3为本发明实施例基于HTTP的产生会话密钥的完整方法的信令图;
图4为本发明实施例基于HTTP的产生会话密钥的方法流程图;
图5为本发明实施例基于HTTP的产生会话密钥的系统结构框图;
图6为本发明实施例基于HTTP的产生会话密钥的方法的信令图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
实施例一
如图1所示,本实施例提供一种基于HTTP的产生会话密钥的方法,该方法包括:
客户端向服务器发送包含客户端协议版本、客户端时间戳、客户端随机数、会话、支持的加密算法集的ClientHello S101。
所述服务器接收客户端发送的ClientHello,建立会话,存储客户端时间戳、客户端随机数,根据所述支持的算法集选择本次会话的加密算法,并向所述客户端发送包含服务器协议版本号、服务器时间戳、服务器随机数、服务器会话、本次会话指定加密算法、服务器公钥证书的ServerHello S102。
所述客户端接收所述的ServerHello,根据所述的ServerHello生成ClientKeyExchange、客户端预主密钥PMS、客户端主密钥MS及客户端信道验证Finished消息,并将ClientKeyExchange(客户端密钥更改消息)、确认加密算法集及客户端信道验证Finished消息发送到所述服务器S103。
所述服务器接收所述ClientKeyExchange、确认加密算法集及客户端信道验证Finished消息,利用私钥解密并取出PMS,服务器时间戳、服务器随机数及扩展域,利用PMS、RNC及RNS计算MS,并提取所需扩展域数值;生成服务器预主密钥PMS2、服务器主密钥MS2、服务器信道验证Finished消息及下次使用的服务器随机数RNS2,根据本次会话的加密算法对称加密元组{RNS2,PMS2,HmacValue},并保存在包含HMAC摘要签名的ServerKeyExchange中,并将包含的ServerKeyExchange、确认加密算法集、确认传输密钥安全级别及服务器信道验证Finished消息和InitContent初始化消息发送到所述客户端S104。
客户端接收ServerKeyExchange(服务器密钥更改消息)、确认加密算法集、确认传输密钥安全级别及服务器信道验证Finished消息,验证服务器信道验证Finished消息,根据本次会话的加密算法集解密所述ServerKeyExchange,验证所述HMAC摘要签名,利用PMS2、RNC、RNS生成MS2,再通过MS2、RNC、RNS生成会话密钥素材,并将所述RNS2保存在本地缓存中S15。
在上述方法中,如果服务器要求客户端使用证书验证身份,需要向客户端发送CertificateRequest。客户端收到CertificateRequest后,将ClientHello及ServerHello顺序连接,并使用本地私钥签名,并向服务器发送ClientCertificate及包含所述签名的CertificateVerify。
在客户端向服务器发送客户端信道验证Finished消息之前,向服务器发送的信息及服务器传来的信息顺序连接后,使用MS做PRF(伪随机函数Pseudorandom function)签名。
服务器接收到ClientKeyExchange后,如果服务器选择的本次会话的加密算法为传输一次一密,利用MS2与每次请求报文头中的X-SessionNum执行传输的一次一密。客户端接收到ServerKeyExchange后,如果服务器选择的本次会话的加密算法为传输一次一密,利用MS2与每次请求报文头中的X-SessionNum执行传输的一次一密。X-SessionNum的中文含义是用于参与每次会话传输生成不同的传输加密密钥的随机因子,用于实现传输加密密钥的一次一密。
如果服务器接收到ClientCertificate,验证客户端信道验证Finished消息,如果客户端信道验证Finished消息错误,返回失败信息。
如图2所示,本实施例还提供一种基于HTTP的产生会话密钥的系统,该系统包括:ClientHello处理单元201,ServerHello处理单元202,ClientKeyExchange处理单元203,ServerKeyExchange处理单元204及加密验证单元205。
ClientHello处理单元201向服务器发送包含客户端协议版本、客户端时间戳、客户端随机数、会话、支持的加密算法集的ClientHello;
ServerHello处理单元202服务器接收客户端发送的ClientHello,建立会话,存储客户端时间戳、客户端随机数,根据所述支持的算法集选择本次会话的加密算法,并向所述客户端发送包含服务器协议版本号、服务器时间戳、服务器随机数、服务器会话、本次会话指定加密算法、服务器公钥证书的ServerHello;
ClientKeyExchange处理单元203客户端接收所述的ServerHello,根据所述的ServerHello生成ClientKeyExchange、客户端预主密钥PMS、客户端主密钥MS及客户端信道验证Finished消息,并将ClientKeyExchange、确认加密算法集及客户端信道验证Finished消息发送到所述服务器;
ServerKeyExchange处理单元204接收所述ClientKeyExchange、确认加密算法集及客户端信道验证Finished消息,利用私钥解密并取出PMS,服务器时间戳、服务器随机数及扩展域,利用PMS、RNC及RNS计算MS,并提取所需扩展域数值;生成服务器预主密钥PMS2、服务器主密钥MS2、服务器信道验证Finished消息及下次使用的服务器随机数RNS2,根据本次会话的加密算法对称加密元组{RNS2,PMS2},并保存在包含HMAC摘要签名的ServerKeyExchange中,并将包含的ServerKeyExchange、确认加密算法集、确认传输密钥安全级别及服务器信道验证Finished消息发送到所述客户端;
加密验证单元205接收ServerKeyExchange、确认加密算法集、确认传输密钥安全级别及服务器信道验证Finished消息,验证服务器信道验证Finished消息,根据本次会话的加密算法集解密所述ServerKeyExchange,验证所述HMAC摘要签名,利用PMS2、RNC、RNS生成MS2,再通过MS2、RNC、RNS生成会话密钥素材,并将所述RNS2保存在本地缓存中。
客户端和服务器协议的基本流程如下:
客户端需要保存一个1024位RSA公钥证书,作为握手过程中对于服务器提交的公钥证书的认证。在认证服务器身份后,使用服务器公钥证书对于客户端PMS等信息的加密。这种设计允许我们可以随时更换服务器的私钥证书,从而降低服务器私钥流失引起的风险。
客户端在本地建立一个服务器证书缓存。当客户端收到服务器公钥证书后,如果Root CA验证无误,客户端需要以服务器域名作为加密密钥,在本地缓存中保存服务器证书。今后当访问这个服务器时,不再使用Root CA验证服务器证书合法性。如果在协议中,客户端检查到服务器证书更改,再进行Root CA验证。
如果一个会话断开,建立一个新的加密通道需要走完全部握手流程。本发明的加密算法包含RSA+AES+CBC+SHA;其中RSA为1024位,AES为256位。今后可能加入DHE-RSA、EC-DSA。
为尽量减少客户端、服务器交互,我们允许客户端在本地缓存服务器公钥证书以及其他信息,从而可以在后续一定数量的过程中,通过一次交互建立加密通道。
图3为本发明实施例基于HTTP的产生会话密钥的完整方法的信令图,下面结合图3详细说明本发明实施例。如图3所示,该完整流程包括:
1、客户端发送ClientHello到服务器:
生成ClientHello,该消息包括客户端协议版本Client.Version、客户端时间戳ClientHello.Timestamp、客户端随机数ClientHello.Random、会话编号sessionID、支持的算法集CipherSpecs、服务器证书序列号Certificate.SerialNumber(首次连接无证书,或需更新证书时重新走完整流程,将证书缓存清空)。
2服务器收到ClientHello并处理,然后执行ServerHello响应:
1)服务器建立会话编号sessionID,存储ClientHello.Timestamp与ClientHello.Random,根据CipherSpecs的支持加密集合选择本次会话的加密算法集CipherSuite。
2)ServerHello包含服务器协议版本号Server.Version、服务器时间戳ServerHello.Timestamp、服务器随机数ServerHello.Random、服务器会话编号sessionID、本次会话指定的加密算法CipherSuite、服务器公钥证书ServerCertificate。ServerCertificate为X509标准格式DER编码的服务器公钥证书。
3)如要求客户端使用证书验证身份,发送CertificateRequest。
3客户端收到ServerHello并处理,生成ClientKeyExchange等消息:
1)在本地缓存中保存ServerDNS、ServerCertificate、CertificateRequest.Flag(CertificateRequest的消息中将决定是否需要客户端的证书认证)、Certificate.SerialNumber。
2)生成客户端预主密钥PMS,PMS为客户端协议版本号+随机数。使用证书加密元组{PMS,ServerHello.Timestamp,ServerHello.Random,扩展域(最大32字节)}。其中,扩展域用以存放特定的扩展数据,如用户ID等信息。
3)如果服务器发送CertificateRequest(如需要该状态已缓存在客户端中,同时服务器如需要更改状态,需要重新走完整流程来更新,CertificateRequest.Flag),客户端将所有发送和接收到的数据(ClientHello,ServerHello)按顺序连接,使用客户端的私钥签名,在CertificateVerify中发送这个签名。
4)发送ChangeCipherSpec声明切换到加密信道传输。
5)计算客户端主密钥MS,生成信道验证的Finished消息。将Finished之前发出的和接收到消息(不包括Finished本身)的二进制数据,按照顺序连接后,使用PRF为MS签名。
4服务器收到ClientKeyExchange并处理,返回消息,完成信道协商:
使用私钥解密并取出{PMS,ServerHello.Timestamp,ServerHello.Random,扩展域}。使用PMS、(ClientHello.Timestamp+ClientHello.Random)[RNC]、(ServerHello.Timestamp+ServerHello.Random)[RNS]计算MS,并提取需要的扩展域数值。
生成服务器的预主密钥PMS2。使用PMS2、RNC、RNS生成服务器主密钥MS2,在会话中保存MS2作为传输密钥。
如服务器选择CipherSuite为传输一次一密的特性,则使用MS2与每次请求报文头中的X-SessionNum执行传输的一次一密。
生成下次使用的服务器缓存随机数(ServerHello.Timestamp+ServerHello.Random)[RNS2]。根据协商好的对称加密算法,使用MS对称加密元组{RNS2,PMS2},结果以二进制形式保存在消息ServerKeyExchange。其中该消息后有HMAC的摘要签名保障完整性。
如果有ClientCertificate,验证相关信息。验证客户端的Finished信息。如果错误,返回标准失败信息。
生成服务器的Finished,将Finished之前发出的和接收到消息(不包括Finished本身)的二进制数据,按照顺序连接后,使用MS做PRF签名。
回传:(1)ServerKeyExchange,(2)确认加密算法集ChangeCipherSpec,(3)确认传输密钥的安全级别,(4)发送自己的Finished消息。
5客户端收到服务器信息后:
验证服务器的Finished消息。如失败,切断当前连接。
根据协商好的对称加密算法,使用本地保存的MS解密ServerKeyExchange,使用MS对该消息后的HMAC摘要签名执行验证,取出元组{RNS2,PMS2}。使用PMS2、RNC、RNS生成MS2作为会话密钥。在缓存中保存RNS2。
如CipherSuite为传输一次一密的特性,则使用MS2与每次请求或响应报文头中的X-SessionNum执行传输的一次一密。
实施例二
如图4所示,本发明提供一种基于HTTP的产生会话密钥的方法,该方法包括:
客户端利用服务器域名从本地缓存中获得元组{ServerDNS,ServerCertificate,RNS2,CertificateRequest.flag};生成PMS、客户端验证信道Finished消息及包含客户端协议版本、客户端时间戳、客户端随机数、会话、支持的加密算法集及服务器证书序列号的ClientHello;以RNS2作为RNS;加密包含在ClientKeyExchange中的元组{PMS,服务器时间戳,服务器随机数,扩展域},向服务器发送ClientHello、ClientKeyExchange,ChangeCipherSpe及客户端验证信道Finished信息S401。
所述服务器建立会话,根据支持的加密集合选择本次会话的加密算法,根据服务器证书序列号验证证书有效性,如果服务器判断证书有效,解密元组{PMS,服务器时间戳,服务器随机数及扩展域},通过PMS、RNC、RNS计算客户端主密钥MS,验证客户端发送的Finished信息;生成下次使用的服务器随机数RNS2’、服务器预主密钥PMS2,MS2及包含服务器时间戳协议版本、服务器时间戳,服务器随机数、会话、本次会话的加密算法的,根据本次会话的加密算法,对称加密元组{RNS2,PMS2,HMacvalue},并封装在ServerKeyExchange中;向所述客户端发送ServerHello,ServerKeyExchange,ChangeCipherSpec,服务器验证信道Finished与InitContent初始化信息S402。
所述客户端接收ServerKeyExchange,ChangeCipherSpec,服务器验证信道Finished,验证服务器验证信道Finished,解密ServerKeyExchange,验证HMAC摘要签名,获取元组{RNS2,PMS2,HMacvalue},验证hmac摘要签名,缓存RNS2作为下次简化连接的RNS,利用PMS2、RNC、RNS生成MS2,再通过MS2、RNC、RNS生成会话密钥素材S403。
在上述EMP信道简化加密方法中,若服务器要求CertificateRequest,客户端将元组{ServerDNS,ServerCertificate,RNS2,CertificateRequest.flag},PMS、客户端验证信道Finished消息,ClientHello,RNS2及ClientKeyExchange中的数据连接为一个字符串,利用客户端私钥签名,并在CertificateVerify中将所述签名的数据发送给服务器。
本实施例中,如果服务器判断证书无效,向客户端返回错误报文,使客户端清空缓存证书。
服务器接收到ClientKeyExchange后,如果服务器选择的本次会话的加密算法为传输一次一密,利用MS2与每次请求报文头中的X-SessionNum执行传输的一次一密。客户端接收到ServerKeyExchange后,如果服务器选择的本次会话的加密算法为传输一次一密,利用MS2与每次请求报文头中的X-SessionNum执行传输的一次一密。
如图5所示,本实施例提供一种EMP信道简化加密系统,该系统包括:简化ClientHello处理单元501,简化ServerHello处理单元502及简化加密验证单元503。
简化ClientHello处理单元501利用服务器域名从本地缓存中获得元组{ServerDNS,ServerCertificate,RNS2,CertificateRequest.flag};生成PMS、客户端验证信道Finished消息及包含客户端协议版本、客户端时间戳、客户端随机数、会话、支持的加密算法集及服务器证书序列号的ClientHello;以RNS2作为RNS;加密包含在ClientKeyExchange中的元组{PMS,服务器时间戳,服务器随机数,扩展域},向服务器发送ClientHello、ClientKeyExchange,ChangeCipherSpec及客户端验证信道Finished与InitContent;
简化ServerHello处理单元502建立会话,根据支持的加密集合选择本次会话的加密算法,根据服务器证书序列号验证证书有效性,如果服务器判断证书有效,解密元组{PMS,服务器时间戳,服务器随机数及扩展域},通过PMS、RNC、RNS计算客户端主密钥MS,验证客户端发送的Finished信息;生成下次使用的服务器随机数RNS2、服务器预主密钥PMS2,MS2及包含服务器时间戳协议版本、服务器时间戳,服务器随机数、会话、本次会话的加密算法的,根据本次会话的加密算法,对称加密元组{RNS2,PMS2,HMacvalue},并封装在包含HMAC摘要签名的ServerKeyExchange中;向所述客户端发送ServerHello,ServerKeyExchange,ChangeCipherSpec,发送服务器验证信道Finished;
简化加密验证单元503接收ServerKeyExchange,ChangeCipherSpec,服务器验证信道Finished,验证服务器验证信道Finished,解密ServerKeyExchange,获取元组{RNS2,PMS2,HMacValue},验证HMAC摘要签名,缓存RNS2作为下次简化连接的RNS,利用PMS2、RNC、RNS生成MS2作为会话密钥。
当客户端和服务器建立首次连接后(即经过图3所示的流程之后),可以使用本地缓存简化连接流程。
图6为本发明实施例EMP信道简化加密方法的流程图,在简化流程中,客户端假设第一次和服务器间协商的协议版本号、加密算法、服务器密钥等均不变。如果上述任何假设变化,服务器需要返回一个错误信息,告知客户端重新启动完整的协议流程。如图6所示,EMP信道简化加密方法包括:
1客户端生成请求,其中包含消息:ClientHello,ClientCertificate(*),ClientKeyExchange,CertificateVerify(*),ChangeCipherSpec,Finished。其中,(*)为选项,只需在服务器要求客户端证书验证时包含:
1)客户端使用服务器域名从缓存中取出元组{ServerDNS,ServerCertificate(缓存中的服务器公钥证书),RNS2(缓存中的服务器随机数),CertificateRequest.flag(缓存中的CertificateRequest状态,Certificate.SerialNumber(缓存中的证书序列号)}。
2)简化版的ClientHello生成,该消息包括Client.Version、ClientHello.Timestamp、ClientHello.Random、sessionID、CipherSpecs、Certificate.SerialNumber。
3)使用RNS2作为当前的RNS,即作为ServerHello.Random。
4)生成PMS,通过ServerCertificate加密元组{PMS,ServerHello.Timestamp,ServerHello.Random,扩展域(最大32字节)},以二进制形式包含在ClientKeyExchange中。
5)如果服务器要求CertificateRequest,客户端将上述1-4中的所有消息数据连接为一个字符串,使用客户端私钥签名,包含在CertificateVerify消息中。
6)发送ChangeCipherSpe消息。
7)使用PMS、RNC、RNS计算MS,生成信道验证的Finished消息。
2服务器收到上述信息后处理,返回消息完成信道协商:包含ServerKeyExchange、ServerHello、ChangeCipherSpec、Finished:
1)建立session ID,存储RNC,根据CipherSpecs支持的加密集合选择本次会话的加密算法CipherSuite,根据Certificate.SerialNumber初步验证证书有效性。如果服务器判断证书失效,则应返回一个标准的Error报文,客户端清空缓存的证书,并重新走完整流程下载更新证书。
2)解密元组{PMS,ServerHelloTimestamp,ServerHello.Random,扩展域},通过PMS、RNC、RNS计算MS。
3)验证客户端发送的Finished信息。
4)生成下次使用的RNS2,生成服务器预主密钥PMS2。根据协商好的对称加密算法,对RNS2,PMS2生成HMacValue保障完整性,使用MS对称加密元组{RNS2,PMS2,HMacValue},封装在消息ServerKeyExchange中。其中该消息后有HMAC的摘要签名保障完整性。使用PMS2、RNC、RNS计算生成MS2,通过MS2、RNC、RNS生成会话密钥素材。
5)如服务器选择CipherSuite为传输一次一密的特性,则使用MS2与每次请求报文头中的X-SessionNum执行传输的一次一密。
6)简化版的ServerHello生成,包含Server.Version、ServerHello.Timestamp、ServerHello.Random(取自ClientKeyExchange中)、sessionID、CipherSuite。
7)发送消息:ServerKeyExchange,发送切换到加密信道消息ChangeCipherSpec,发送服务器的Finished。
3客户端收到上述信息后:
使用本地保存的MS解密ServerKeyExchange,使用MS对该消息后的HMAC摘要签名执行验证,取出元组{RNS2,PMS2,HMacValue},使用MS2对该消息后的HMacValue摘要签名执行验证。缓存RNS2作为下次简化连接的RNS。使用PMS2、RNC、RNS生成MS2,使用MS2验证服务器Finished消息。如失败,切断当前连接。再通过MS2、RNC、RNS生成会话密钥素材。
如果CipherSuite为传输一次一密的特性,则使用MS2与每次请求报文头中的X-SessionNum执行传输的一次一密。
信道保密分为默认传输加密及高级传输加密。
对于默认传输加密,服务器通过算法集的协商选择一次会话一密,加密解密的传输密钥在当前会话期间,密钥的值一直不变。对于高级传输加密,服务器通过算法集的协商选择一次一密,报文的加密密钥一直动态随机变化。一把密钥的生命周期只用于一次HTTP请求或响应的加密,使用后立即销毁并生成新的密钥。客户端写密钥与服务器写密钥均不同,因此任何一次HTTP请求或响应都不会出现重复的密钥,从而拥有高度安全的密钥隔离性。与一次会话一密的区别是,这种方式需要后台服务器每次请求和响应都通过PRF来计算密钥,而计算密钥的方式与一次会话一密类似,只是随机数发生器中需要加入一个HTTP报文头中的随机数。
请求传输密钥MS_Request由以下公式计算:PRF(MS2,labels,X-SessionNum+RNC+RNS)。响应传输密钥MS_Reponse由以下公式计算:PRF(MS2,labels,X-SessionNum+RNC+RNS)。X-SessionNum为一个48字节的随机数,保障动态密钥在2的8*48次方的概率组合内随机变化。
在加密信道建立后,出于性能考虑,客户端可能需要通过明文传输信息。例如,移动金融应用中,金融资讯等内容由于不包含用户信息,在用户登陆后可以通过明文传输。因此,如果有人改动了运营商的网关或路由器等软件,就能够篡改这些明文,从而诱使用户提交个人信息等资料。
以下办法可以解决这个问题:
首先,我们可以要求在客户端加载时,即和后台建立加密信道,得到当前MS2。对于所有明文传输的信息,服务器通过HTTP报文头X-Signature加入20字节的输出签名,HMAC_SHA1(X-Signature,MS2,HTTP Body)。客户端接收后,通过签名验证收到的明文(HTTP Body),从而保证明文传输的可靠性。
其次,如果需要在没有建立加密信道时进行明文传输,我们需要明确告知用户,哪些动作是通过安全信道完成的,哪些是通过明文信道完成的;这种做法和浏览器在加密信道时提醒用户是相同的;例如,可以通过客户端屏幕顶部的一些标记和状态提示用户。在加密信道建立后,客户端可以更改这种状态,提示用户已经进入完全保密安全的加密信道传输。
本发明实施例的有益效果在于,本发明能够在基于HTTP通信的任意业务流程中随时建立加密信道,实现了信道加密与身份认证的分离。
以上所述的具体实施例,对本实用新型的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本实用新型的具体实施例而已,并不用于限定本实用新型的保护范围,凡在本实用新型的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本实用新型的保护范围之内。
Claims (8)
1.一种基于HTTP的产生会话密钥的方法,其特征在于,所述的方法包括:
客户端向服务器发送包含客户端协议版本号、客户端时间戳、客户端随机数、会话编号sessionID、支持的加密算法集的ClientHello消息;
所述服务器接收客户端发送的ClientHello消息,建立会话,存储客户端时间戳、客户端随机数,根据所述支持的加密算法集选择本次会话的加密算法,并向所述客户端发送包含服务器协议版本号、服务器时间戳、服务器随机数、服务器会话编号、本次会话指定加密算法、服务器公钥证书的ServerHello消息;
所述客户端接收所述的ServerHello消息,根据所述的ServerHello消息生成包含客户端预主密钥PMS、客户端主密钥MS的ClientKeyExchange消息及客户端信道验证Finished消息,并将ClientKeyExchange消息、确认加密算法集及客户端信道验证Finished消息发送到所述服务器,其中,PMS为客户端协议版本号+随机数,MS使用PMS、RNC、RNS生成,RNC为客户端时间戳+客户端随机数、RNS为服务器时间戳+服务器随机数;
其中,所述客户端使用服务器公钥证书加密元组{PMS,服务器时间戳,服务器随机数及扩展域},扩展域用以存放特定的扩展数据,该加密的元组是以包含在ClientKeyExchange消息中的方式传递给服务器;
所述服务器接收所述ClientKeyExchange消息、确认加密算法集及客户端信道验证Finished消息,利用私钥解密并取出PMS,服务器时间戳、服务器随机数及扩展域,并提取所需扩展域数值;生成服务器预主密钥PMS2、服务器主密钥MS2、服务器信道验证Finished消息及下次使用的服务器随机数RNS2,根据本次会话的加密算法对RNS2、PMS2计算生成HMacValue,对称加密元组{RNS2,PMS2,HMacValue},并保存在包含HMAC摘要签名的ServerKeyExchange消息中,并将包含的ServerKeyExchange消息、确认加密算法集、确认传输密钥安全级别及服务器信道验证Finished消息发送到所述客户端;PMS2为服务器协议版本号+随机数,MS2使用PMS2、RNC、RNS生成;使用MS2、RNC、RNS生成会话密钥素材;
客户端接收ServerKeyExchange消息、确认加密算法集、确认传输密钥安全级别及服务器信道验证Finished消息,使用客户端主密钥MS,验证服务器信道验证Finished消息,根据本次会话的加密算法集解密所述ServerKeyExchange消息,取出元组{RNS2,PMS2,HMacValue};验证所述HMAC摘要签名,利用PMS2、RNC、RNS生成MS2,通过MS2、RNC、RNS生成会话密钥素材,并将所述RNS2保存在本地缓存中。
2.如权利要求1所述的方法,其特征在于,如果服务器要求客户端使用服务器公钥证书验证身份,向客户端发送CertificateRequest消息。
3.如权利要求2所述的方法,其特征在于,客户端收到CertificateRequest消息后,将ClientHello消息及ServerHello消息顺序连接,并使用本地私钥签名,并向服务器发送ClientCertificate消息及包含所述签名的CertificateVerify消息。
4.如权利要求1所述的方法,其特征在于,在客户端向服务器发送客户端信道验证Finished消息之前,将向服务器发送的信息及服务器传来的信息顺序连接后,使用MS做PRF签名,其中,PRF为伪随机函数。
5.如权利要求1所述的方法,其特征在于,服务器接收到ClientKeyExchange消息后,如果服务器选择的本次会话的加密算法为传输一次一密,利用MS2与每次请求中,HTTP报文头中的X-SessionNum执行传输的一次一密,所述请求由客户端生成;其中,X-SessionNum为用于参与每次会话传输生成不同的传输加密密钥的随机因子。
6.如权利要求5所述的方法,其特征在于,客户端接收到ServerKeyExchange消息后,如果服务器选择的本次会话的加密算法为传输一次一密,利用MS2与每次请求报文头中的X-SessionNum执行传输的一次一密。
7.如权利要求3所述的方法,其特征在于,如果服务器接收到ClientCertificate消息,验证客户端信道验证Finished消息,如果客户端信道验证Finished消息错误,返回失败信息。
8.一种基于HTTP的产生会话密钥的系统,其特征在于,所述的系统包括:客户端和服务器,客户端包括ClientHello处理单元、ClientKeyExchange处理单元、加密验证单元,服务器包括ServerHello处理单元、ServerKeyExchange处理单元;
ClientHello处理单元,用于向服务器发送包含客户端协议版本号、客户端时间戳、客户端随机数、会话编号sessionID、支持的加密算法集的ClientHello消息;
ServerHello处理单元,用于接收客户端发送的ClientHello消息,建立会话,存储客户端时间戳、客户端随机数,根据所述支持的加密算法集选择本次会话的加密算法,并向所述客户端发送包含服务器协议版本号、服务器时间戳、服务器随机数、服务器会话编号、本次会话指定加密算法、服务器公钥证书的ServerHello消息;
ClientKeyExchange处理单元,用于接收所述的ServerHello消息,根据所述的ServerHello消息生成包含客户端预主密钥PMS、客户端主密钥MS的ClientKeyExchange消息及客户端信道验证Finished消息,并将ClientKeyExchange消息、确认加密算法集及客户端信道验证Finished消息发送到所述服务器,其中,PMS为客户端协议版本号+随机数,MS使用PMS、RNC、RNS生成,RNC为客户端时间戳+客户端随机数、RNS为服务器时间戳+服务器随机数;其中,所述客户端使用服务器公钥证书加密元组{PMS,服务器时间戳,服务器随机数及扩展域},扩展域用以存放特定的扩展数据,该加密的元组是以包含在ClientKeyExchange消息中的方式传递给服务器;
ServerKeyExchange处理单元,用于接收所述ClientKeyExchange消息、确认加密算法集及客户端信道验证Finished消息,利用私钥解密并取出PMS,服务器时间戳、服务器随机数及扩展域,并提取所需扩展域数值;生成服务器预主密钥PMS2、服务器主密钥MS2、服务器信道验证Finished消息及下次使用的服务器随机数RNS2,根据本次会话的加密算法对RNS2、PMS2计算生成HMacValue,对称加密元组{RNS2,PMS2,HMacValue},并保存在包含HMAC摘要签名的ServerKeyExchange消息中,并将包含的ServerKeyExchange消息、确认加密算法集、确认传输密钥安全级别及服务器信道验证Finished消息发送到所述客户端;PMS2为服务器协议版本号+随机数,MS2使用PMS2、RNC、RNS生成;使用MS2、RNC、RNS生成会话密钥素材;
加密验证单元,用于接收ServerKeyExchange消息、确认加密算法集、确认传输密钥安全级别及服务器信道验证Finished消息,使用客户端主密钥MS,验证服务器信道验证Finished消息,根据本次会话的加密算法集解密所述ServerKeyExchange消息,取出元组{RNS2,PMS2,HMacValue};验证所述HMAC摘要签名,利用PMS2、RNC、RNS生成MS2,并使用MS2、RNC、RNS生成会话密钥的素材,并将所述RNS2保存在本地缓存中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110023350.6A CN102082796B (zh) | 2011-01-20 | 2011-01-20 | 一种基于http的产生会话密钥的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110023350.6A CN102082796B (zh) | 2011-01-20 | 2011-01-20 | 一种基于http的产生会话密钥的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102082796A CN102082796A (zh) | 2011-06-01 |
CN102082796B true CN102082796B (zh) | 2014-04-09 |
Family
ID=44088548
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110023350.6A Active CN102082796B (zh) | 2011-01-20 | 2011-01-20 | 一种基于http的产生会话密钥的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102082796B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8782774B1 (en) * | 2013-03-07 | 2014-07-15 | Cloudflare, Inc. | Secure session capability using public-key cryptography without access to the private key |
CN105577738B (zh) * | 2014-11-10 | 2019-08-02 | 中国移动通信集团公司 | 一种处理终端信息的方法、装置及系统 |
CN104468560B (zh) * | 2014-12-02 | 2017-09-19 | 中国科学院声学研究所 | 网络保密数据明文的采集方法及系统 |
CN104702611B (zh) * | 2015-03-15 | 2018-05-25 | 西安电子科技大学 | 一种保护安全套接层会话密钥的设备及方法 |
CN106817346B (zh) * | 2015-11-30 | 2020-06-12 | 珠海豹趣科技有限公司 | 一种数据传输方法、装置及电子设备 |
CN108833452B (zh) * | 2018-09-13 | 2021-01-19 | 国云科技股份有限公司 | 一种用于前后端分离数据加密的方法 |
CN109547471B (zh) * | 2018-12-24 | 2021-10-26 | 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) | 网络通信方法和装置 |
CN110380852B (zh) * | 2019-07-22 | 2023-06-16 | 中国联合网络通信集团有限公司 | 双向认证方法及通信系统 |
CN110781140B (zh) * | 2019-09-06 | 2023-08-18 | 平安科技(深圳)有限公司 | 区块链中数据签名的方法、装置、计算机设备及存储介质 |
CN111510460A (zh) * | 2020-04-24 | 2020-08-07 | 武汉火神信息科技有限公司 | 集中管理主机并拦截转发指令的安全服务系统 |
CN112055019B (zh) * | 2020-09-03 | 2022-09-27 | 深圳市百富智能新技术有限公司 | 一种建立通信信道的方法及用户终端 |
CN112995291B (zh) * | 2021-02-05 | 2023-02-21 | 厦门市美亚柏科信息股份有限公司 | 一种基于代理的http报文采集方法、终端设备及存储介质 |
CN113114621B (zh) * | 2021-03-04 | 2023-01-03 | 海信集团控股股份有限公司 | 一种用于公交调度系统的通信方法及公交调度系统 |
CN112995210B (zh) * | 2021-04-20 | 2023-04-07 | 全球能源互联网研究院有限公司 | 一种数据传输方法、装置及电子设备 |
WO2022236806A1 (en) * | 2021-05-14 | 2022-11-17 | Zte Corporation | Method, device, and system for physical channel encryption in wireless networks |
CN113472792B (zh) * | 2021-07-01 | 2023-05-05 | 北京玩蟹科技有限公司 | 一种长连接网络通信加密方法及系统 |
CN113765927A (zh) * | 2021-09-09 | 2021-12-07 | 图易(常熟)信息技术有限公司 | 一种云端上传内容网络版权加密方法及系统 |
CN114499882B (zh) * | 2022-01-27 | 2024-05-10 | 国网山西省电力公司营销服务中心 | 一种基于区块链的智能电表信息上载方法 |
CN115333839B (zh) * | 2022-08-15 | 2023-11-07 | 中国电信股份有限公司 | 数据安全传输方法、系统、设备及存储介质 |
CN117749413B (zh) * | 2023-11-15 | 2024-09-27 | 中金金融认证中心有限公司 | 基于tlcp商密协议的安全通信方法及安全通信系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1758586A (zh) * | 2004-10-07 | 2006-04-12 | 株式会社日立制作所 | 时间戳服务系统和时间戳信息验证服务器及计算机·软件 |
CN1819515A (zh) * | 2006-03-20 | 2006-08-16 | 胡祥义 | 一种保密型对称密码算法的实现方法 |
CN101807997A (zh) * | 2010-04-28 | 2010-08-18 | 中国工商银行股份有限公司 | 一种生成传输密钥的装置及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8654974B2 (en) * | 2007-10-18 | 2014-02-18 | Location Based Technologies, Inc. | Apparatus and method to provide secure communication over an insecure communication channel for location information using tracking devices |
-
2011
- 2011-01-20 CN CN201110023350.6A patent/CN102082796B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1758586A (zh) * | 2004-10-07 | 2006-04-12 | 株式会社日立制作所 | 时间戳服务系统和时间戳信息验证服务器及计算机·软件 |
CN1819515A (zh) * | 2006-03-20 | 2006-08-16 | 胡祥义 | 一种保密型对称密码算法的实现方法 |
CN101807997A (zh) * | 2010-04-28 | 2010-08-18 | 中国工商银行股份有限公司 | 一种生成传输密钥的装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102082796A (zh) | 2011-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102082796B (zh) | 一种基于http的产生会话密钥的方法及系统 | |
JP6844908B2 (ja) | セキュアセッションの確立と暗号化データ交換のためのコンピュータ利用システム及びコンピュータ利用方法 | |
CN104702611B (zh) | 一种保护安全套接层会话密钥的设备及方法 | |
CN103428221B (zh) | 对移动应用的安全登录方法、系统和装置 | |
CN105516157B (zh) | 基于独立加密的网络信息安全输入系统和方法 | |
US20110235806A1 (en) | Key distribution system | |
TWI581599B (zh) | 金鑰生成系統、資料簽章與加密系統和方法 | |
CN101631305B (zh) | 一种加密方法及系统 | |
CN101385274A (zh) | 受约束的密码术密钥 | |
CN111756529B (zh) | 一种量子会话密钥分发方法及系统 | |
CN110198295A (zh) | 安全认证方法和装置及存储介质 | |
CN101742508A (zh) | 一种wapi终端与应用服务器传输文件的系统及方法 | |
CN110753321A (zh) | 一种车载tbox与云服务器的安全通信方法 | |
CN110446177B (zh) | 物联网计量表的通信方法、装置及系统 | |
CN105208024A (zh) | 不使用https的数据安全传输方法及系统、客户端和服务端 | |
CN112672342B (zh) | 数据传输方法、装置、设备、系统和存储介质 | |
CN111756528B (zh) | 一种量子会话密钥分发方法、装置及通信架构 | |
CN105577365A (zh) | 一种用户接入wlan的密钥协商方法及装置 | |
EP3292662A1 (en) | A method and system for secure sms communications | |
CN102281303A (zh) | 一种数据交换方法 | |
CN111555879B (zh) | 一种卫星通信网管信道报文加解密方法及系统 | |
CN102413463B (zh) | 填充序列长度可变的无线媒体接入层鉴权和密钥协商方法 | |
CN113922974B (zh) | 一种信息处理方法及系统、前端、服务端、存储介质 | |
CN102045343A (zh) | 基于数字证书的通讯加密安全控制方法、服务器及系统 | |
CN112291196B (zh) | 适用于即时通信的端到端加密方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |