CN109428876B - 一种握手连接方法及装置 - Google Patents

一种握手连接方法及装置 Download PDF

Info

Publication number
CN109428876B
CN109428876B CN201710777483.XA CN201710777483A CN109428876B CN 109428876 B CN109428876 B CN 109428876B CN 201710777483 A CN201710777483 A CN 201710777483A CN 109428876 B CN109428876 B CN 109428876B
Authority
CN
China
Prior art keywords
algorithm
handshake
rsa
algorithm parameters
encryption 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
Application number
CN201710777483.XA
Other languages
English (en)
Other versions
CN109428876A (zh
Inventor
罗成
毛文韬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201710777483.XA priority Critical patent/CN109428876B/zh
Publication of CN109428876A publication Critical patent/CN109428876A/zh
Application granted granted Critical
Publication of CN109428876B publication Critical patent/CN109428876B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0442Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3006Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters
    • H04L9/302Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy underlying computational problems or public-key parameters involving the integer factorization problem, e.g. RSA or quadratic sieve [QS] schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • H04L9/3066Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy involving algebraic varieties, e.g. elliptic or hyper-elliptic curves
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/168Implementing security features at a particular protocol layer above the transport layer

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Algebra (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了一种握手连接方法及装置,其中该方法包括:接收客户端发送的握手请求;确定握手请求待采用的公钥加密算法;从公钥加密算法中确定出待分离计算的算法参数;将算法参数发送至预设的分布式计算集群,并在分布式计算集群对算法参数进行计算的同时,基于公钥加密算法进行握手连接。本发明实施例中待分离计算的算法参数为需要大量消耗控制服务器资源的算法参数,将这些算法参数分离到分布式计算集群进行计算,可以大大的降低控制服务器本地计算资源的消耗,从而能提高控制服务器整体性能。

Description

一种握手连接方法及装置
技术领域
本发明属于通信技术领域,尤其涉及一种握手连接方法及装置。
背景技术
目前为了客户端在使用各种业务时能保证用户的账号等信息不被截获,或者不会连接到假冒的服务器等,通常在数据传输上采用了安全套接层(SSL,Secure SocketsLayer)协议的方式。
SSL协议指定了一种应用程序协议和传输控制协议(TCP,Transmission ControlProtocol)之间提供数据安全性分层的机制,主要用于提高应用程序之间数据的安全性;以使用最为广泛的超文本传输协议(HTTP,Hyper Text Transfer Protocol)为例,HTTPS对服务器中央处理器(CPU,Central Processing Unit)计算资源的消耗比较大,特别是在完全握手时需要进行公钥加密算法(或者称非对称加密算法)计算,加上公钥加密密钥的安全长度至少为2048位,因此会导致服务器CPU计算负载较大,服务器整体性能偏低的问题。
发明内容
本发明的目的在于提供一种握手连接方法及装置,旨在降低服务器计算资源的消耗,提高服务器整体性能。
为解决上述技术问题,本发明实施例提供以下技术方案:
本发明第一方面提供一种握手连接方法,其中包括:
接收客户端发送的握手请求;
确定所述握手请求待采用的公钥加密算法;
从所述公钥加密算法中确定出待分离计算的算法参数;
将所述算法参数发送至预设的分布式计算集群,并在所述分布式计算集群对所述算法参数进行计算的同时,基于所述公钥加密算法进行握手连接。
本发明第二方面提供一种握手连接装置,其中包括:
第一接收模块,用于接收客户端发送的握手请求;
第一确定模块,用于确定所述握手请求待采用的公钥加密算法;
第二确定模块,用于从所述公钥加密算法中确定出待分离计算的算法参数;
发送模块,用于将所述算法参数发送至预设的分布式计算集群,并在所述分布式计算集群对所述算法参数进行计算的同时,基于所述公钥加密算法进行握手连接。
本发明实施例,控制服务器在接收客户端发送的握手请求时,根据该握手请求确定待采用的公钥加密算法;对该公钥加密算法进行分析,确定出待分离计算的算法参数;并且将这些算法参数发送至预设的分布式计算集群,以使得分布式计算集群对该算法参数进行计算,完成与客户端之间的握手连接。其中,待分离计算的算法参数为需要大量消耗控制服务器资源的算法参数,将这些算法参数分离到分布式计算集群进行计算,可以大大的降低控制服务器本地CPU计算资源的消耗,从而能提高控制服务器整体性能。
附图说明
下面结合附图,通过对本发明的具体实施方式详细描述,将使本发明的技术方案及其它有益效果显而易见。
图1是本发明实施例提供的握手连接系统的场景示意图;
图2是本发明实施例提供的握手连接方法的流程示意图;
图3为本发明实施例提供的握手连接方法的流程示意图;
图4a为本发明实施例提供的握手连接方法的流程示意图;
图4b为本发明实施例提供的公钥加密算法分析示意图;
图4c为本发明实施例提供的公钥加密算法中握手消息的组成示意图;
图4d为本发明实施例提供的同步处理握手请求的简单示意图;
图4e本发明实施例提供的为异步处理握手请求的简单示意图;
图5a为本发明实施例提供的握手连接装置的结构示意图;
图5b为本发明实施例提供的握手连接装置的另一结构示意图;
图5c为本发明实施例提供的握手连接装置的另一结构示意图;
图6a为本发明实施例提供的握手连接装置的结构示意图;
图6b为本发明实施例提供的握手连接装置的另一结构示意图;
图7为本发明实施例提供的控制服务器的结构示意图;
图8为本发明实施例提供的分布式计算服务器的结构示意图。
具体实施方式
请参照图式,其中相同的组件符号代表相同的组件,本发明的原理是以实施在一适当的运算环境中来举例说明。以下的说明是基于所例示的本发明具体实施例,其不应被视为限制本发明未在此详述的其它具体实施例。
在以下的说明中,本发明的具体实施例将参考由一部或多部计算机所执行的步骤及符号来说明,除非另有述明。因此,这些步骤及操作将有数次提到由计算机执行,本文所指的计算机执行包括了由代表了以一结构化型式中的数据的电子信号的计算机处理单元的操作。此操作转换该数据或将其维持在该计算机的内存系统中的位置处,其可重新配置或另外以本领域测试人员所熟知的方式来改变该计算机的运作。该数据所维持的数据结构为该内存的实体位置,其具有由该数据格式所定义的特定特性。但是,本发明原理以上述文字来说明,其并不代表为一种限制,本领域测试人员将可了解到以下所述的多种步骤及操作亦可实施在硬件当中。
本文所使用的术语「模块」可看做为在该运算系统上执行的软件对象。本文所述的不同组件、模块、引擎及服务可看做为在该运算系统上的实施对象。而本文所述的装置及方法优选的以软件的方式进行实施,当然也可在硬件上进行实施,均在本发明保护范围之内。
本发明实施例提供握手连接方法及装置;其中,一种握手连接装置应用于控制服务器,另一种握手连接装置应用于分布式计算集群。
参见图1,该图为本发明实施例所提供的握手连接系统的场景示意图,该握手连接系统可以包括控制服务器,该控制服务器可具体为开源的反向代理服务器(Nginx),也可以为调用开放式安全套接层协议(Openssl,Open Secure Sockets Layer)的应用层程序,等等。
该控制服务器主要用于接收客户端发送的握手请求,然后,确定握手请求待采用的公钥加密算法,如ECDHE_RSA加密算法或者RSA加密算法,等等;并且,从公钥加密算法中确定出待分离计算的算法参数,如需要大量消耗CPU计算资源的算法参数,将待分离计算的算法参数发送至预设的分布式计算集群,在所述分布式计算集群对待分离计算的算法参数进行计算的同时,控制服务器基于所述公钥加密算法进行握手连接,如可以对与RSA签名相关的算法参数、或者对与RSA解密相关的算法参数等需要大量消耗CPU计算资源的算法参数计算。
此外,该握手连接系统还可以包括分布式计算集群等设备,该分布式计算集群具体为安全传输层协议(TLS,Transport Layer Security)的分布式计算集群,可以包括多个计算设备,如安全套接层(SSL,Secure Sockets Layer)硬件加速卡或者空闲CPU模块,等等,主要用于接收控制服务器发送的待分离计算的算法参数,其中待分离计算的算法参数由控制服务器根据公钥加密算法确定得到,公钥加密算法由控制服务器根据握手请求确定得到;然后,在控制服务器基于公钥加密算法进行握手连接时,分布式计算集群可以对分离出来的算法参数,如与RSA签名相关的算法参数、或者对与RSA解密相关的算法参数等进行计算。
当然,该握手连接系统还可以包括客户端以及业务服务器集群,包括多个业务服务器,其中客户端用于向控制服务器发送握手请求,并且在控制服务器建立与客户端之间的握手连接后,基于该握手连接向控制服务器发送加密的应用数据,以便控制服务器对加密的应用数据进行解密;进而,业务服务器用于接收控制服务器发送的解密后的应用数据并存储,以便于客户端调用。
以下将分别进行详细说明。
在本实施例中,将从应用于控制服务器的握手连接装置的角度进行描述,该控制服务器可具体为开源的反向代理服务器(Nginx),也可以为调用开放式Openssl的应用层程序,等等。
一种握手连接方法,包括:接收客户端发送的握手请求;确定握手请求待采用的公钥加密算法;从公钥加密算法中确定出待分离计算的算法参数;将待分离计算的算法参数发送至预设的分布式计算集群,并在分布式计算集群对该算法参数进行计算的同时,基于公钥加密算法进行握手连接。
请参阅图2,图2是本发明实施例提供的握手连接方法的流程示意图。该方法包括:
在步骤S101中,接收客户端发送的握手请求。
本发明实施例中,握手请求具体为安全传输层协议(TLS)握手请求,用于对每次发送的数据量进行跟踪协商,使得数据的发送和接收同步,并建立连接。其中,握手也可称为交握,是指在建立客户端和控制服务器之间的对话过程中控制信息的交换。
在步骤S102中,确定握手请求待采用的公钥加密算法。
可以理解的是,在建立握手连接的过程中,控制服务器需确定该连接过程中使用的公钥加密算法,使用的公钥加密算法的信息可以携带在握手请求中,也可以由控制服务器与客户端共同协商确定,此处不作具体限定。
本发明实施例中,公钥加密算法也可称为非对称加密算法,它指的是由对应的一对唯一性密钥(即公开密钥和私有密钥)组成的加密方法,其中可以具体包括RSA加密算法、椭圆曲线密钥交换RSA(ECDHE_RSA,elliptic curve Diffie-Hellman exchange RSA)算法、以及加密协议连接RSA(DHE_RSA,Diffie-Hellman exchange RSA)算法,等等。
其中,RSA(Ron Rivest,Adi Shamir,Leonard Adleman)即RSA算法,RSA算法是一种非对称密码算法,非对称就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密,即使用不同的加密密钥与解密密钥。
椭圆曲线密钥交换RSA(ECDHE_RSA)算法是一个匿名的密钥协商算法,允许双方各有一个椭圆曲线公钥-私钥对,在不安全的信道上建立一个共享的秘密。这个共享的秘密可以直接作为密钥,或者更好的是,得出另一个密钥可用于使用对称密钥加密,加密后的通信。这是一个变异的密钥交换利用椭圆曲线密码协议。
密钥交换RSA(DHE_RSA)算法是一个离散对数的公钥加密算法,它允许密钥协商双方利用不对称的信息和离散对数的保密性质协商出一致的对称密钥。
在步骤S103中,从公钥加密算法中确定出待分离计算的算法参数。
可以理解的是,本发明实施例中待分离计算的算法参数具体是指一些需要大量消耗本地CPU资源的算法参数,因此可以将这类算法参数进行分离计算,从而可以减轻本地CPU的负载。
需说明的是,对于使用的公钥加密算法的不同,需要分离计算的算法参数也会不一样;本发明实施例中,根据公钥加密算法,确定出待分离计算的算法参数的实施方式有很多,比如可以预先设定公钥加密算法与待分离计算的算法参数的对应关系,然后存储于控制服务器中,待确定待采用的公钥加密算法后,根据设定好的对应关系查询出相应的待分离计算的算法参数。
又比如,控制服务器可以在确定待采用的公钥加密算法后,实时对公钥加密算法进行算法分离分析,得到大量消耗本地CPU资源的待分离计算的算法参数,等等,此处不作具体限定。
例如,目前密钥证书主要使用RSA签名证书,因此在本发明实施例中,可以针对RSA签名证书最常用的公钥加密算法来进行分析,如从公钥加密算法中提取与RSA签名或与RSA解密相关的算法参数,并将这些与RSA签名或与RSA解密相关的算法参数确定为待分离计算的算法参数。
可具体的,在一种实施方式中,“根据公钥加密算法,确定出待分离计算的算法参数”可包括如下步骤:
(1)若根据握手请求确定出公钥加密算法为ECDHE_RSA加密算法或DHE_RSA加密算法,则从ECDHE_RSA加密算法或DHE_RSA加密算法中提取与RSA签名相关的算法参数。
(2)将与RSA签名相关的算法参数确定为待分离计算的算法参数。
也就是说,通过分析,在握手过程中,ECDHE_RSA加密算法和DHE_RSA加密算法中最消耗CPU计算资源的是与RSA签名相关的计算过程,如在接收到握手消息“ServerKeyExchange”(服务端密钥交换)时,由于需要执行生成公钥和RSA签名两个步骤,因此可将与RSA签名相关的算法参数分离出来,不占用本地CPU对这个过程进行同步计算。
在另一种实施方式中,可包括如下步骤:
(1)若根据握手请求确定出公钥加密算法为RSA加密算法,则从RSA加密算法中提取与RSA解密相关的算法参数。
(2)将与RSA解密相关的算法参数确定为待分离计算的算法参数。
该实施方式中,通过分析,在握手过程中RSA加密算法最消耗CPU计算资源的是与RSA解密相关的计算过程,如在接收到握手消息“Decrypt_premaster_secret”(翻译预主密钥)时,将与RSA解密相关的算法参数分离出来,不占用本地CPU对这个过程进行同步计算。
可以理解的是,本发明实施例中,以RSA签名证书最常用的公钥加密算法,ECDHE_RSA加密算法、RSA加密算法和DHE_RSA加密算法为例进行分析说明,此处举例不构成对本发明的限定。
在步骤S104中,将待分离计算的算法参数发送至预设的分布式计算集群,并在分布式计算集群对该算法参数进行计算的同时,基于公钥加密算法进行握手连接。
其中,该分布式计算集群可具体为TLS分布式计算集群,可以包括多个计算设备,如SSL硬件加速卡或者空闲CPU模块,等等,用于对控制服务器分离出来的算法参数进行计算,并将计算结果反馈至控制服务器。
在某些实施方式中,为了提高计算速率,还可以对异步处理多个握手请求,比如,在“将待分离计算的算法参数发送至预设的分布式计算集群”之后,还可以包括:
接收客户端发送的下一握手请求,并异步处理接收到的握手请求。
基于此,控制服务器“将待分离计算的算法参数发送至预设的分布式计算集群”可以具体包括:确定下一握手请求待分离计算的算法参数,并将确定出的待分离计算的算法参数异步发送至所述分布式计算集群。
即在分布式计算集群在进行计算时,控制服务器可以返回执行下一个握手请求,以达到异步处理多个握手请求,并且将待分离计算的算法参数异步发送至分布式计算集群的目的,加快了控制服务器的计算速率。
比如,在分布式计算集群在处理“ServerKeyExchange”消息或“Decrypt_premaster_secret”消息时,控制服务器当前进程无需等待其计算结果的返回,可以马上执行其他的请求。
某些实施方式中,在“将待分离计算的算法参数发送至预设的分布式计算集群”之后,还可以包括:
1、接收分布式计算集群发送的计算结果。
2、根据计算结果,建立与客户端之间的握手连接。
当分布式计算集群将算法参数计算完成后,把计算结果返回至控制服务器,控制服务器根据该计算结果继续执行握手验证过程,并建立与客户端之间的握手连接,其中此处对握手验证过程不作具体描述。进一步的,在“根据计算结果,建立与客户端之间的握手连接”(步骤2)之后还可以包括如下步骤:
3、基于该握手连接,接收客户端发送的加密的应用数据。
4、对该加密的应用数据进行解密,并将解密后的应用数据发送至相应的业务服务器。
即在控制服务器与客户端完成握手交互后,客户端基于该握手连接向控制服务器发送加密的应用数据(如HTTPS应用数据),控制服务器本地对该加密的应用数据进行解密,并将解密后的应用数据(如HTTP应用数据)转发给相应的业务服务器。
其中,业务服务器(RS,real server)是为客户端应用程序提供真实服务的物理服务器,接收解密后的应用数据并保存,以便于客户端调用。
由上述可知,本实施例提供的握手连接方法,控制服务器在接收客户端发送的握手请求时,根据该握手请求确定待采用的公钥加密算法;对该公钥加密算法进行分析,确定出待分离计算的算法参数;并且将这些算法参数发送至预设的分布式计算集群,以使得分布式计算集群对该算法参数进行计算,完成与客户端之间的握手连接。其中,待分离计算的算法参数为需要大量消耗控制服务器资源的算法参数,将这些算法参数分离到分布式计算集群进行计算,可以大大的降低控制服务器本地CPU计算资源的消耗,从而能提高控制服务器整体性能。
在本实施例中,将从应用于分布式计算集群的握手连接装置的角度进行描述,该分布式计算集群可具体为TLS分布式计算集群,可以包括多个计算设备,如SSL硬件加速卡或者空闲CPU模块。
请参阅图3,图3是本发明实施例提供的握手连接方法的流程示意图。该方法包括:
在步骤S201中,接收控制服务器发送的待分离计算的算法参数,该待分离计算的算法参数由控制服务器根据公钥加密算法确定得到,该公钥加密算法由控制服务器根据握手请求确定得到。
可以理解的是,本发明实施例中待分离计算的算法参数具体是指一些需要大量消耗本地CPU(即控制服务器)资源的算法参数,因此可以将这类算法参数进行分离计算,从而可以减轻本地CPU的负载。
需说明的是,对于使用的公钥加密算法的不同,需要分离计算的算法参数也会不一样;比如,若公钥加密算法为ECDHE_RSA加密算法或DHE_RSA加密算法,则需要在分布式计算集群计算的算法参数为与RSA签名相关的算法参数,又比如,若公钥加密算法为RSA加密算法,则需要在分布式计算集群计算的算法参数为与RSA解密相关的算法参数。
其中,算法分离分析,得到待分离计算的算法参数的方式有很多,具体可参考上述实施例的相关描述,此处不作赘述。
在步骤S202中,在基于公钥加密算法进行握手连接时,对算法参数进行计算。
可以理解的是,对于RSA计算,目前大多是使用本地CPU进行同步计算,这里的同步是指上层应用必须等待CPU执行完RSA计算后才能返回执行其他工作,由于进程间或者网络间的开销,同步过程也会严重制约Nginx服务器的整体性能,因此可对握手请求进行异步分析和异步发送。
比如,在某些实施方式中,控制服务器异步分析多个握手请求,并将这多个握手请求异步发送至分布式计算集群,则“接收控制服务器发送的待分离计算的算法参数”可以具体包括:接收控制服务器异步发送的多个待分离计算的算法参数。
基于此,分布式计算集群“在基于公钥加密算法进行握手连接时,对算法参数进行计算”可以具体为:在基于公钥加密算法进行握手连接时,对多个待分离计算的算法参数进行并行计算。
也就是说,将并发接收到的请求依赖于并行计算结果完成,并响应给客户端,大大的缩短了计算结果消耗的时间,提升整体性能。
进一步的,在对算法参数进行计算之后,将对算法参数进行计算得到的计算结果反馈至控制服务器,以使控制服务器根据计算结果建立与客户端之间的握手连接。
即当分布式计算集群将算法参数计算完成后,把计算结果返回至控制服务器,控制服务器根据该计算结果继续执行握手验证过程,至此,完成与客户端之间的握手连接。
可以理解的是,在该实施例中没有详述的部分,可以参见上述实施例的相关描述,此处不再赘述。
由上述可知,本实施例提供的握手连接方法,分布式计算集群对控制服务器发送的待分离计算的算法参数进行计算,并将该计算结果返回至控制服务器,完成与客户端之间的握手连接。其中,待分离计算的算法参数为需要大量消耗控制服务器资源的算法参数,将这些算法参数分离到分布式计算集群进行计算,可以大大的降低控制服务器本地CPU计算资源的消耗,从而能提高控制服务器整体性能。
根据上述实施例所描述的方法,以下将举例作进一步详细说明。
该实施例中,将从握手连接系统的角度进行描述,如图1所示,该握手连接系统包括控制服务器(如Nginx服务器)以及分布式计算集群(如engine计算集群)。
请一并参阅图4a,图4a为本发明实施例提供的握手连接方法的流程示意图。该方法包括:
S31、客户端向Nginx服务器发起建立HTTPS连接的握手请求。
由于HTTPS对Nginx服务器计算资源的消耗比较大,特别是完全握手时需要进行非对称密钥交换计算,使用较多的公钥加密算法包括RSA加密算法和ECDHE_RSA加密算法。目前的RSA密钥的安全长度至少为2048位,而RSA计算过程大约消耗整体计算资源的75%;另外,如果此时完全握手请求数量大,服务端的性能会严重下降。因此考虑将大量消耗Nginx服务器资源的算法参数进行分离计算。
其中,HTTPS全称为Hypertext Transfer Protocol over Secure Socket Layer,是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL。
S32、Nginx服务器对使用的公钥加密算法进行算法分离分析,确定待分离计算的算法参数。
比如,客户端向Nginx服务器发送“client hello”(客户端你好)消息开始SSL完全握手,Nginx服务器协商使用的公钥加密算法,并对该公钥加密算法算法分离分析,确定待分离计算的算法参数。其中,算法分离的思想是分析公钥加密算法的完整过程,将最消耗CPU的计算过程剥离出来,避免在本地CPU上进行同步计算。
需说明的是,对于使用的公钥加密算法的不同,需要分离计算的算法参数也会不一样;本发明实施例中,对于算法的分离分析,得到待分离计算的算法参数的实施方式有很多,比如可以预先设定公钥加密算法与待分离计算的算法参数的对应关系,然后存储于控制服务器中,待确定待采用的公钥加密算法后,根据设定好的对应关系查询出相应的待分离计算的算法参数。
又比如,控制服务器可以在确定待采用的公钥加密算法后,实时对公钥加密算法进行算法分离分析,得到大量消耗本地CPU资源的待分离计算的算法参数,等等,此处不作具体限定。
可具体的,由于目前证书主要使用RSA签名,而RSA签名证书最常用的公钥加密算法(即密钥交换算法)是ECDHE_RSA加密算法,DHE_RSA加密算法和RSA加密算法,所以本发明实施例中主要对这三个算法进行算法分离分析,如图4b所示,为公钥加密算法的整体分析示意图。
比如,RSA加密算法最主要的计算过程为RSA解密计算的过程,ECDHE_RSA加密算法最主要的计算过程为ECC(椭圆曲线密码)公钥生成和RSA签名的计算过程,DHE_RSA加密算法最主要的计算过程为DH(密钥交换)公钥生成和RSA签名的计算过程。
可以理解的是,由于DHE_RSA加密算法性能不佳,因此优先使用ECDHE_RSA和RSA公钥加密算法。下面将详细描述一下两个算法的具体分离过程。
(一)ECDHE_RSA加密算法
在SSL完全握手过程中,ECDHE_RSA加密算法涉及到的最消耗CPU的握手消息为“ServerKeyExchange”(服务端密钥交换),其中ServerKeyExchange消息主要包括两个操作:
1、选择椭圆曲线密码ECC(Elliptic curve cryptography)的曲线类型、基点、曲线系数等曲线参数,并根据这些曲线参数生成公钥。
2、对曲线参数和公钥进行RSA签名。
可一并参考图4c,为ECDHE_RSA加密算法中的ServerKeyExchange消息组成示意图,可知,由于ServerKeyExchange消息中涉及以上两个操作,RSA签名相比公钥生成是较为消耗CPU计算的过程,因此这个过程应该分离出来,即不能使用本地CPU进行同步计算。
(二)RSA加密算法
RSA加密算法的过程相对简单,因为没有ECC参数及公钥生成的过程。根据RFC5246(Request For Comments,请求注解)描述,客户端使用RSA公钥对premaster secrect内容进行加密,服务端需要使用私钥解密premaster secrect,即对premaster secrect内容进行RSA解密,从而生成最终的master secrect。
同样地,根据之前的分析,RSA解密相比master secrect的计算过程要消耗更多的CPU计算量。
根据上述分析,ECDHE_RSA加密算法的分离结论如下:在本地CPU完成ECC曲线参数和公钥的生成计算,对上述内容进行签名的RSA计算需要分离;RSA密钥交换算法的分离结论如下:对premaster secrect内容的RSA解密计算需要分离。
S33、Nginx服务器异步处理多个握手请求,并将待分离计算的算法参数异步发送至engine计算集群。
对于RSA计算,目前大多是使用本地CPU进行同步计算,这里的同步是指上层应用必须等待CPU执行完RSA计算后才能返回执行其他工作。比如,Nginx服务器的当前进程必须等待openssl完成ServerKeyExchange或者premaster secret的处理后才能返回进行其他工作。
如图4d所示,为Nginx服务器目前处理握手请求的简单示意,其中假设请求1需要进行RSA签名操作,Nginx服务器必须等待图中b到g共6个步骤全部完成才能处理请求2。
其中“RSA_sign”为RSA签名函数,“RSA_private_encrypt”为RSA私钥加密函数,是RSA签名的核心函数,主要是使用RSA私钥对哈希值进行加密,“BN_mod_exp”为RSA模指数运算函数,指大数的模幂计算,这是个非常消耗CPU的运算。
显然,同步请求的实现弊端是:由于该过程需要消耗大量的CPU,Nginx服务器整体性能受到严重制约。由于进程间或者网络间的开销,同步过程也会严重制约Nginx服务器的整体性能。
可以理解的是,图4d只是简单说明了RSA签名的同步计算过程,事实上RSA解密的计算过程类似。
基于上诉分析,本发明实施例提出将上述计算过程异步进行,即在openssl进行高强度CPU计算时,比如处理serverKeyExchange或者premaster secret消息时,Nginx服务器当前进程无需等待计算结果的返回,可以马上执行其他工作。
请一并参考图4e所示,为本发明实施例中Nginx服务器异步处理握手请求的简单示意,其中,异步过程包括:
步骤a、Nginx服务器接收到请求1。
步骤b、Nginx服务器调用RSA_sign函数。
步骤c、RSA_sign函数此时会调用RSA_private_encrypt函数,然后直接返回,无需等待RSA的签名结果(即无需等待步骤x至步骤x+4)。
步骤d、Nginx服务器此时可以处理其他请求(请求2)。
由于最消耗CPU的计算由于已经被分离到engine计算集群(其他CPU或者硬件加速卡),所以不会消耗本地CPU,同时由于这个过程是异步的,因此也不会阻塞上层的Nginx。
S34、engine计算集群接收Nginx服务器异步发送的多个待分离计算的算法参数。
S35、engine计算集群对多个待分离计算的算法参数进行并行计算,并将计算结果返回至Nginx服务器。
可以理解的是,算法分离和异步虽然能够提升Nginx服务器并发接收握手请求的性能,但是从本质上却没有提升计算能力,并发接收到的请求还是依赖于串行计算结果完成才能响应给客户端,所以如果计算结果消耗的时间多,整体性能还是无法提升。
比如,假设T0时刻Nginx服务器接收到4个请求,但是最消耗CPU计算的过程依然需要串行完成,则单位时间T内的能够处理的请求数是:
T/(T1+T1+T1+T1)=T/4T1;其中,T1为一个请求计算需要消耗的时间。
为了提升单位时间T内处理的性能,本发明可以减少单个请求的计算时间以及提升请求并发计算能力,比如,减少单个请求的计算时间可以通过采用更高频率和性能的CPU或者专用硬件加速卡的方案来解决,本实施例对此不作具体描述,提升请求并发计算能力是指同一时刻使用多个CPU或者多个硬件加速卡的方案实现性能的提升。
比如,如果Nginx服务器接收到4个请求,且engine计算集群中包含有4个CPU或硬件加速单元,则同样单位时间T内,能够同时处理的请求数为T/T1,并行计算能力得到了显著提升,相比串行计算,并行能力提升了4倍。
即,如果engine计算集群中使用更多个数的CPU和硬件加速单元,并行计算能力就得到了显著提升,同样单位时间T内够处理更多请求数。Nginx服务器接收到计算结果后,还原用户场景,按照TLS本地计算流程继续运行即可。
S36、客户端向Nginx服务器发送HTTPS应用数据。
S37、Nginx服务器对HTTPS应用数据进行解密,并将解密后的HTTPS应用数据转发至业务服务器。
可以理解的是,当Nginx服务器接收到公钥后,生成相同的对称密钥,至此,完成了完全握手的交互,并协商出对称密钥,客户端向Nginx服务器发送对称密钥加密的HTTPS应用层数据,Nginx服务器接收到加密的HTTPS应用数据后,使用对称密钥解密成HTTP明文,再HTTP明文转发给业务服务器(即业务RS)。
综上,本发明握手连接方法,首先,Nginx服务器将涉及到公钥加密算法(RSA、ECDHE_RSA和DHE_RSA加密算法等)的RSA私钥计算(RSA解密或RSA签名)时,就将该计算过程分离出来,不让该计算过程消耗本地CPU资源;其次将分离出来的RSA算法参数,通过自有的对称加密算法,发送给分布式的engine计算集群(包括SSL硬件加速卡或者空闲CPU);进一步的,发送给engine计算集群后,不需要同步等待计算结果的返回,可异步返回后直接处理其他的请求;engine计算集群接收到RSA参数后,调用SSL硬件加速卡或者CPU计算资源,完成相应的私钥运算,完成计算后,将计算结果返回给Nginx服务器,还原用户现场,完成当前请求的握手过程。
在某些实施方式中,可以对分布式的engine计算集群进行容灾设计,第一方面,当engine计算集群可用时,可使用加权循环调度(WRR,Weighted Round Robin)的方式随机从engine集群挑选一台engine机器进行计算,如果当前engine机器不可用,重新从engine计算集群中挑选另一台engine机器;第二方面,当engine计算集群不可用时,比如Nginx服务器和engine机器连接超时或连接出错,或者engine机器返回错误码,如找不到证书等等,控制使用Nginx服务器(即本地CPU)进行同步计算。
另外,Nginx服务器和engine计算集群之间的数据虽然在内网传输,但是考虑到Nginx服务器和engine计算集群之间的数据非常敏感,这部分内容还是需要进行高级加密标准(AES,Advanced Encryption Standard)加密,确保数据安全性。
由上述可知,本实施例提供的握手连接方法,控制服务器(Nginx服务器)在接收客户端发送的握手请求时,根据该握手请求确定待采用的公钥加密算法;对该公钥加密算法进行分析,确定出待分离计算的算法参数;并且将这些算法参数发送至预设的分布式计算集群,分布式计算集群(engine计算集群)对该算法参数进行计算,并将计算结果返回至控制服务器,完成控制服务器与客户端之间的握手连接。其中,待分离计算的算法参数为需要大量消耗控制服务器资源的算法参数,将这些算法参数分离到分布式计算集群进行计算,可以大大的降低控制服务器本地CPU计算资源的消耗,从而能提高控制服务器整体性能。进一步的,异步处理多个握手请求,因此也不会阻塞上层的Nginx,分布式计算集群并行计算多个RSA算法参数,大大提高了并行能力,提高计算速率,从而提升完全握手性能。减少接入机器成本,提升计算型防攻击能力,并且高可靠性,具备故障快速迁移和互联网数据中心(IDC,Internet Data Center)容灾能力。
为便于更好的实施本发明实施例提供的握手连接方法,本发明实施例还提供一种基于上述握手连接方法的装置。其中名词的含义与上述握手连接的方法中相同,具体实现细节可以参考方法实施例中的说明。
请参阅图5a,图5a为本发明实施例提供的握手连接装置的结构示意图,该握手连接装置300应用于控制服务器上,可以包括第一接收模块301、第一确定模块302、第二确定模块303以及发送模块304。
其中第一接收模块301,用于接收客户端发送的握手请求。
本发明实施例中,握手请求具体为TLS协议握手请求,用于对每次发送的数据量进行跟踪协商,使得数据的发送和接收同步,并建立连接。其中,握手也可称为交握,是指在建立客户端和控制服务器之间的对话过程中控制信息的交换。
第一确定模块302,用于确定握手请求待采用的公钥加密算法。
可以理解的是,在建立握手连接的过程中,控制服务器需确定该连接过程中使用的公钥加密算法,使用的公钥加密算法的信息可以携带在握手请求中,也可以由控制服务器与客户端共同协商确定,此处不作具体限定。
本发明实施例中,公钥加密算法也可称为非对称加密算法,它指的是由对应的一对唯一性密钥(即公开密钥和私有密钥)组成的加密方法,其中可以具体包括RSA加密算法、椭圆曲线密钥交换RSA(ECDHE_RSA)算法、以及加密协议连接RSA(DHE_RSA)算法,等等。
其中,RSA即RSA算法,RSA算法是一种非对称密码算法,非对称就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密,即使用不同的加密密钥与解密密钥。
椭圆曲线密钥交换RSA(ECDHE_RSA)算法是一个匿名的密钥协商算法,允许双方各有一个椭圆曲线公钥-私钥对,在不安全的信道上建立一个共享的秘密。这个共享的秘密可以直接作为密钥,或者更好的是,得出另一个密钥可用于使用对称密钥加密,加密后的通信。这是一个变异的密钥交换利用椭圆曲线密码协议。
密钥交换RSA(DHE_RSA)算法是一个离散对数的公钥加密算法,它允许密钥协商双方利用不对称的信息和离散对数的保密性质协商出一致的对称密钥。
第二确定模块303,用于从公钥加密算法中确定出待分离计算的算法参数。
可以理解的是,本发明实施例中待分离计算的算法参数具体是指一些需要大量消耗本地CPU资源的算法参数,因此可以将这类算法参数进行分离计算,从而可以减轻本地CPU的负载。
需说明的是,对于使用的公钥加密算法的不同,需要分离计算的算法参数也会不一样;本发明实施例中,根据公钥加密算法,确定出待分离计算的算法参数的实施方式有很多,比如可以预先设定公钥加密算法与待分离计算的算法参数的对应关系,然后存储于控制服务器中,待确定待采用的公钥加密算法后,根据设定好的对应关系查询出相应的待分离计算的算法参数。
又比如,控制服务器可以在确定待采用的公钥加密算法后,实时对公钥加密算法进行算法分离分析,得到大量消耗本地CPU资源的待分离计算的算法参数,等等,此处不作具体限定。
发送模块304,用于将该算法参数发送至预设的分布式计算集群,并在分布式计算集群对算法参数进行计算的同时,基于公钥加密算法进行握手连接。
其中,该分布式计算集群可具体为TLS分布式计算集群,可以包括多个计算设备,如SSL硬件加速卡或者空闲CPU模块,等等,用于对控制服务器分离出来的算法参数进行计算,并将计算结果反馈至控制服务器。
可具体的,例如,目前密钥证书主要使用RSA签名证书,因此在本发明实施例中,可以针对RSA签名证书最常用的公钥加密算法来进行分析,如从公钥加密算法中提取与RSA签名或与RSA解密相关的算法参数,并将这些与RSA签名或与RSA解密相关的算法参数确定为待分离计算的算法参数。
基于此,请一并参阅图5b,图5b为本发明实施例提供的数据更新装置300的另一结构示意图,在一种实施方式中,该握手连接装置300中第二确定模块303可以包括:
(1)第一提取子模块3031
用于若根据该握手请求确定出公钥加密算法为ECDHE_RSA加密算法或DHE_RSA加密算法,则从ECDHE_RSA加密算法或DHE_RSA加密算法中提取与RSA签名相关的算法参数。
(2)第一确定子模块3032
用于将该与RSA签名相关的算法参数确定为待分离计算的算法参数。
也就是说,通过分析,在握手过程中,ECDHE_RSA加密算法和DHE_RSA加密算法中最消耗CPU计算资源的是与RSA签名相关的计算过程,如在接收到握手消息“ServerKeyExchange”(服务端密钥交换)时,由于需要执行生成公钥和RSA签名两个步骤,因此可将与RSA签名相关的算法参数分离出来,不占用本地CPU对这个过程进行同步计算。
在另一种实施方式中,如图5b所示,握手连接装置300中第二确定模块303还可以包括:
(1)第二提取子模块3033
用于若根据该握手请求确定出公钥加密算法为RSA加密算法,则从RSA加密算法中提取与RSA解密相关的算法参数。
(2)第二确定子模块3034
用于将该与RSA解密相关的算法参数确定为待分离计算的算法参数。
该实施方式中,通过分析,在握手过程中RSA加密算法最消耗CPU计算资源的是与RSA解密相关的计算过程,如在接收到握手消息“Decrypt_premaster_secret”(翻译预主密钥)时,将与RSA解密相关的算法参数分离出来,不占用本地CPU对这个过程进行同步计算。
可以理解的是,本发明实施例中,以RSA签名证书最常用的公钥加密算法,ECDHE_RSA加密算法、RSA加密算法和DHE_RSA加密算法为例进行分析说明,此处举例不构成对本发明的限定。
在某些实施方式中,为了提高计算速率,还可以对异步处理多个握手请求,比如,如图5c所示,为本发明实施例提供的数据更新装置300的另一结构示意图,该握手连接装置300还可以包括:
异步处理模块305,用于接收客户端发送的下一握手请求,并异步处理接收到的握手请求。
基于此,该发送模块304具体用于确定下一握手请求待分离计算的算法参数,并将确定出的待分离计算的算法参数异步发送至所述分布式计算集群。
即在分布式计算集群在进行计算时,控制服务器可以返回执行下一个握手请求,以达到异步处理多个握手请求,并且将待分离计算的算法参数异步发送至分布式计算集群的目的,加快了控制服务器的计算速率。
比如,在分布式计算集群在处理“ServerKeyExchange”消息或“Decrypt_premaster_secret”消息时,控制服务器当前进程无需等待其计算结果的返回,可以马上执行其他的请求。
某些实施方式中,该握手连接装置300还可以包括:
第二接收模块306,用于接收该分布式计算集群发送的计算结果。
连接模块307,用于根据该计算结果,建立与客户端之间的握手连接。
当分布式计算集群将算法参数计算完成后,把计算结果返回至控制服务器,控制服务器根据该计算结果继续执行握手验证过程,并建立与客户端之间的握手连接,其中此处对握手验证过程不作具体描述。进一步的,如图5c所示,该握手连接装置300还可以包括:
第三接收模块308,用于基于该握手连接,接收客户端发送的加密的应用数据。
解密转发模块309,用于对该加密的应用数据进行解密,并将解密后的应用数据发送至相应的业务服务器。
即在控制服务器与客户端完成握手交互后,客户端基于该握手连接向控制服务器发送加密的应用数据(如HTTPS应用数据),控制服务器本地对该加密的应用数据进行解密,并将解密后的应用数据(如HTTP应用数据)转发给相应的业务服务器。
其中,业务服务器(RS,real server)是为客户端应用程序提供真实服务的物理控制服务器,接收解密后的应用数据并保存,以便于客户端调用。
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
图5a、图5b以及图5c所示握手连接装置具体可以集成在控制服务器中,该控制服务器可具体为开源的反向代理控制服务器(Nginx),也可以为调用开放式安全套接层协议Openssl的应用层程序,等等。
可以理解的是,在该实施例中没有详述的部分,可以参见上文针对应用于控制服务器的握手连接方法,以及基于握手连接系统的方法的详细描述,此处不再赘述。
由上述可知,本实施例提供的握手连接装置,在接收客户端发送的握手请求时,根据该握手请求确定待采用的公钥加密算法;对该公钥加密算法进行分析,确定出待分离计算的算法参数;并且将这些算法参数发送至预设的分布式计算集群,以使得分布式计算集群对该算法参数进行计算,完成与客户端之间的握手连接。其中,待分离计算的算法参数为需要大量消耗控制服务器资源的算法参数,将这些算法参数分离到分布式计算集群进行计算,可以大大的降低控制服务器本地CPU计算资源的消耗,从而能提高控制服务器整体性能。
请参阅图6a,图6a为本发明实施例提供的握手连接装置的结构示意图,其中握手连接装置400应用于分布式计算集群中,可包括:
第四接收模块401,用于接收控制服务器发送的待分离计算的算法参数,该待分离计算的算法参数由控制服务器根据公钥加密算法确定得到,该公钥加密算法由控制服务器根据握手请求确定得到。
可以理解的是,本发明实施例中待分离计算的算法参数具体是指一些需要大量消耗本地CPU(即控制服务器)资源的算法参数,因此可以将这类算法参数进行分离计算,从而可以减轻本地CPU的负载。
需说明的是,对于使用的公钥加密算法的不同,需要分离计算的算法参数也会不一样;比如,若公钥加密算法为ECDHE_RSA加密算法或DHE_RSA加密算法,则需要在分布式计算集群计算的算法参数为与RSA签名相关的算法参数,又比如,若公钥加密算法为RSA加密算法,则需要在分布式计算集群计算的算法参数为与RSA解密相关的算法参数。
其中,算法分离分析,得到待分离计算的算法参数的方式有很多,具体可参考上述实施例的相关描述,此处不作赘述。
计算模块402,用于在基于该公钥加密算法进行握手连接时,对该算法参数进行计算。
可以理解的是,对于RSA计算,目前大多是使用本地CPU进行同步计算,这里的同步是指上层应用必须等待CPU执行完RSA计算后才能返回执行其他工作,由于进程间或者网络间的开销,同步过程也会严重制约Nginx服务器的整体性能,因此可对握手请求进行异步分析和异步发送。
比如,在某些实施方式中,控制服务器异步分析多个握手请求,并将这多个握手请求异步发送至分布式计算集群,则在该第四接收模块401,可用于接收控制服务器异步发送的多个待分离计算的算法参数。
基于此,计算模块402可具体用于在基于该公钥加密算法进行握手连接时,对多个待分离计算的算法参数进行并行计算。
也就是说,将并发接收到的请求依赖于并行计算结果完成,并响应给客户端,大大的缩短了计算结果消耗的时间,提升整体性能。
请一并参阅图6b,图6b为本发明实施例提供的数据更新装置400的另一结构示意图,该握手连接装置400还可以包括:反馈模块403,用于将对算法参数进行计算得到的计算结果反馈至控制服务器,以使控制服务器根据计算结果建立与客户端之间的握手连接。
即当分布式计算集群将算法参数计算完成后,把计算结果返回至控制服务器,控制服务器根据该计算结果继续执行握手验证过程,至此,完成与客户端之间的握手连接。
可以理解的是,在该实施例中没有详述的部分,可以参见上述实施例的相关描述,此处不再赘述。
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
图6a和图6b所示握手连接装置应用于分布式计算集群,该分布式计算集群可具体为TLS分布式计算集群,可以包括多个计算设备,如SSL硬件加速卡或者空闲CPU模块。
可以理解的是,在该实施例中没有详述的部分,可以参见上文针对应用于分布式计算集群的握手连接方法,以及基于握手连接系统的方法的详细描述,此处不再赘述。
由上述可知,本实施例提供的握手连接装置,对控制服务器发送的待分离计算的算法参数进行计算,并将该计算结果返回至控制服务器,完成与客户端之间的握手连接。其中,待分离计算的算法参数为需要大量消耗控制服务器资源的算法参数,将这些算法参数分离到分布式计算集群进行计算,可以大大的降低控制服务器本地CPU计算资源的消耗,从而能提高控制服务器整体性能。
本发明实施例还提供一种控制服务器,如图7所示,其示出了本发明实施例所涉及的控制服务器500的结构示意图,其中该控制服务器500具体为开源的反向代理服务器(Nginx),也可以为调用开放式Openssl的应用层程序,等等。具体来讲:
该控制服务器可以包括一个或者一个以上处理核心的处理器501、一个或一个以上计算机可读存储介质的存储器502、电源503和输入单元504等部件。本领域技术人员可以理解,图7中示出的控制服务器结构并不构成对控制服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器501是该控制服务器的控制中心,利用各种接口和线路连接整个控制服务器的各个部分,通过运行或执行存储在存储器502内的软件程序和/或模块,以及调用存储在存储器502内的数据,执行控制服务器的各种功能和处理数据,从而对控制服务器进行整体监控。可选的,处理器501可包括一个或多个处理核心;优选的,处理器501可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器501中。
存储器502可用于存储软件程序以及模块,处理器501通过运行存储在存储器502的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器502可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据控制服务器的使用所创建的数据等。此外,存储器502可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器502还可以包括存储器控制器,以提供处理器501对存储器502的访问。
控制服务器还包括给各个部件供电的电源503,优选的,电源503可以通过电源管理系统与处理器501逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源503还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该控制服务器还可包括输入单元504,该输入单元504可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,控制服务器还可以包括显示单元等,在此不再赘述。具体在本实施例中,控制服务器中的处理器501会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器502中,并由处理器501来运行存储在存储器502中的应用程序,从而实现各种功能,如下:
接收客户端发送的握手请求;确定握手请求待采用的公钥加密算法;从公钥加密算法中确定出待分离计算的算法参数;将待分离计算的算法参数发送至预设的分布式计算集群,并在分布式计算集群对该算法参数进行计算的同时,基于公钥加密算法进行握手连接。
其中,若根据该握手请求确定出公钥加密算法为椭圆曲线密钥交换ECDHE_RSA加密算法或密钥交换DHE_RSA加密算法,则从ECDHE_RSA加密算法或DHE_RSA加密算法中提取与RSA签名相关的算法参数;将该与RSA签名相关的算法参数确定为待分离计算的算法参数。
若根据该握手请求确定出公钥加密算法为RSA加密算法,则从RSA加密算法中提取与RSA解密相关的算法参数;将该与RSA解密相关的算法参数确定为待分离计算的算法参数。
在将该算法参数发送至预设的分布式计算集群之后,接收客户端发送的下一握手请求,并异步处理接收到的握手请求;确定下一握手请求待分离计算的算法参数,并将确定出的待分离计算的算法参数异步发送至所述分布式计算集群。
接收该分布式计算集群发送的计算结果;根据该计算结果,建立与客户端之间的握手连接。
在根据该计算结果,建立与客户端之间的握手连接之后,基于该握手连接,接收客户端发送的加密的应用数据;对该加密的应用数据进行解密,并将解密后的应用数据发送至相应的业务服务器。
由上述可知,本实施例提供的控制服务器中,在接收客户端发送的握手请求时,根据该握手请求确定待采用的公钥加密算法;对该公钥加密算法进行分析,确定出待分离计算的算法参数;并且将这些算法参数发送至预设的分布式计算集群,以使得分布式计算集群对该算法参数进行计算,完成与客户端之间的握手连接。其中,待分离计算的算法参数为需要大量消耗控制服务器资源的算法参数,将这些算法参数分离到分布式计算集群进行计算,可以大大的降低控制服务器本地CPU计算资源的消耗,从而能提高控制服务器整体性能。
本发明实施例还提供一种分布式计算服务器,如图8所示,其示出了本发明实施例所涉及的分布式计算服务器600的结构示意图,其中多个分布式计算服务器600可组成分布式计算集群,如可具体为TLS分布式计算集群,分布式计算服务器600可具体为如SSL硬件加速卡或者空闲CPU模块。具体来讲:
该分布式计算服务器可以包括一个或者一个以上处理核心的处理器601、一个或一个以上计算机可读存储介质的存储器602、电源603和输入单元604等部件。本领域技术人员可以理解,图8中示出的分布式计算服务器结构并不构成对分布式计算服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器601是该分布式计算服务器的控制中心,利用各种接口和线路连接整个分布式计算服务器的各个部分,通过运行或执行存储在存储器602内的软件程序和/或模块,以及调用存储在存储器602内的数据,执行分布式计算服务器的各种功能和处理数据,从而对分布式计算服务器进行整体监控。可选的,处理器601可包括一个或多个处理核心;优选的,处理器601可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器601中。
存储器602可用于存储软件程序以及模块,处理器601通过运行存储在存储器602的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器602可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据分布式计算服务器的使用所创建的数据等。此外,存储器602可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器602还可以包括存储器控制器,以提供处理器601对存储器602的访问。
分布式计算服务器还包括给各个部件供电的电源603,优选的,电源603可以通过电源管理系统与处理器601逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源603还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该分布式计算服务器还可包括输入单元604,该输入单元604可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,分布式计算服务器还可以包括显示单元等,在此不再赘述。具体在本实施例中,分布式计算服务器中的处理器601会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器602中,并由处理器601来运行存储在存储器602中的应用程序,从而实现各种功能,如下:
接收控制服务器发送的待分离计算的算法参数,该待分离计算的算法参数由控制服务器根据公钥加密算法确定得到,该公钥加密算法由控制服务器根据握手请求确定得到;在基于该公钥加密算法进行握手连接时,对该算法参数进行计算。
其中,接收控制服务器异步发送的多个待分离计算的算法参数;在基于该公钥加密算法进行握手连接时,对多个待分离计算的算法参数进行并行计算。
在基于该公钥加密算法进行握手连接时,对该算法参数进行计算之后,将对算法参数进行计算得到的计算结果反馈至控制服务器,以使控制服务器根据计算结果建立与客户端之间的握手连接。
由上述可知,本实施例提供的分布式计算服务器中,对控制服务器发送的待分离计算的算法参数进行计算,并将该计算结果返回至控制服务器,完成与客户端之间的握手连接。其中,待分离计算的算法参数为需要大量消耗控制服务器资源的算法参数,将这些算法参数分离到分布式计算集群进行计算,可以大大的降低控制服务器本地CPU计算资源的消耗,从而能提高控制服务器整体性能。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对握手连接方法的详细描述,此处不再赘述。
本发明实施例提供的所述握手连接装置,譬如为计算机、平板电脑、具有触摸功能的手机等等,所述握手连接装置与上文实施例中的握手连接方法属于同一构思,在所述握手连接装置上可以运行所述握手连接方法实施例中提供的任一方法,其具体实现过程详见所述握手连接方法实施例,此处不再赘述。
需要说明的是,对本发明所述握手连接方法而言,本领域普通测试人员可以理解实现本发明实施例所述握手连接方法的全部或部分流程,是可以通过计算机程序来控制相关的硬件来完成,所述计算机程序可存储于一计算机可读取存储介质中,如存储在终端的存储器中,并被该终端内的至少一个处理器执行,在执行过程中可包括如所述握手连接方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储器(ROM,Read OnlyMemory)、随机存取记忆体(RAM,Random Access Memory)等。
对本发明实施例的所述握手连接装置而言,其各功能模块可以集成在一个处理芯片中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中,所述存储介质譬如为只读存储器,磁盘或光盘等。
以上对本发明实施例所提供的一种握手连接方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (12)

1.一种握手连接方法,其特征在于,包括:
接收客户端发送的握手请求;
确定所述握手请求待采用的公钥加密算法;
从所述公钥加密算法中确定出待分离计算的算法参数,其中,所述待分离计算的算法参数为消耗本地CPU资源多的算法参数;
将所述算法参数发送至预设的分布式计算集群,并在所述分布式计算集群对所述算法参数进行计算的同时,基于所述公钥加密算法进行握手连接,所述分布式计算集群为TLS分布式计算集群,所述算法参数是异步发送到所述TLS分布式计算集群的。
2.根据权利要求1所述的握手连接方法,其特征在于,所述根据所述公钥加密算法,确定出待分离计算的算法参数包括:
若根据所述握手请求确定出公钥加密算法为椭圆曲线密钥交换ECDHE_RSA加密算法或密钥交换DHE_RSA加密算法,则从所述ECDHE_RSA加密算法或DHE_RSA加密算法中提取与RSA签名相关的算法参数;
将所述与RSA签名相关的算法参数确定为待分离计算的算法参数。
3.根据权利要求1所述的握手连接方法,其特征在于,所述根据所述公钥加密算法,确定出待分离计算的算法参数包括:
若根据所述握手请求确定出公钥加密算法为RSA加密算法,则从所述RSA加密算法中提取与RSA解密相关的算法参数;
将所述与RSA解密相关的算法参数确定为待分离计算的算法参数。
4.根据权利要求1至3任一项所述的握手连接方法,其特征在于,所述将所述算法参数发送至预设的分布式计算集群之后,还包括:
接收客户端发送的下一握手请求,并异步处理接收到的握手请求;
所述将所述算法参数发送至预设的分布式计算集群包括:确定下一握手请求待分离计算的算法参数,并将确定出的待分离计算的算法参数异步发送至所述分布式计算集群。
5.根据权利要求1所述的握手连接方法,其特征在于,所述方法还包括:
接收所述分布式计算集群发送的计算结果;
根据所述计算结果,建立与客户端之间的握手连接。
6.根据权利要求5所述的握手连接方法,其特征在于,所述根据所述计算结果,建立与客户端之间的握手连接之后,还包括:
基于所述握手连接,接收客户端发送的加密的应用数据;
对所述加密的应用数据进行解密,并将解密后的应用数据发送至相应的业务服务器。
7.一种握手连接装置,其特征在于,包括:
第一接收模块,用于接收客户端发送的握手请求;
第一确定模块,用于确定所述握手请求待采用的公钥加密算法;
第二确定模块,用于从所述公钥加密算法中确定出待分离计算的算法参数,其中,所述待分离计算的算法参数为消耗本地CPU资源多的算法参数;
发送模块,用于将所述算法参数发送至预设的分布式计算集群,并在所述分布式计算集群对所述算法参数进行计算的同时,基于所述公钥加密算法进行握手连接,所述分布式计算集群为TLS分布式计算集群,所述算法参数是异步发送到所述TLS分布式计算集群的。
8.根据权利要求7所述的握手连接装置,其特征在于,所述第二确定模块包括:
第一提取子模块,用于若根据所述握手请求确定出公钥加密算法为椭圆曲线密钥交换ECDHE_RSA加密算法或密钥交换DHE_RSA加密算法,则从所述ECDHE_RSA加密算法或DHE_RSA加密算法中提取与RSA签名相关的算法参数;
第一确定子模块,用于将所述与RSA签名相关的算法参数确定为待分离计算的算法参数。
9.根据权利要求8所述的握手连接装置,其特征在于,所述第二确定模块包括:
第二提取子模块,用于若根据所述握手请求确定出公钥加密算法为RSA加密算法,则从所述RSA加密算法中提取与RSA解密相关的算法参数;
第二确定子模块,用于将所述与RSA解密相关的算法参数确定为待分离计算的算法参数。
10.根据权利要求7至9任一项所述的握手连接装置,其特征在于,所述装置还包括:
异步处理模块,用于接收客户端发送的下一握手请求,并异步处理接收到的握手请求;
所述发送模块,用于确定下一握手请求待分离计算的算法参数,并将确定出的待分离计算的算法参数异步发送至所述分布式计算集群。
11.根据权利要求7所述的握手连接装置,其特征在于,所述装置还包括:
第二接收模块,用于接收所述分布式计算集群发送的计算结果;
连接模块,用于根据所述计算结果,建立与客户端之间的握手连接。
12.根据权利要求11所述的握手连接装置,其特征在于,所述装置还包括:
第三接收模块,用于基于所述握手连接,接收客户端发送的加密的应用数据;
解密转发模块,用于对所述加密的应用数据进行解密,并将解密后的应用数据发送至相应的业务服务器。
CN201710777483.XA 2017-09-01 2017-09-01 一种握手连接方法及装置 Active CN109428876B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710777483.XA CN109428876B (zh) 2017-09-01 2017-09-01 一种握手连接方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710777483.XA CN109428876B (zh) 2017-09-01 2017-09-01 一种握手连接方法及装置

Publications (2)

Publication Number Publication Date
CN109428876A CN109428876A (zh) 2019-03-05
CN109428876B true CN109428876B (zh) 2021-10-08

Family

ID=65505649

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710777483.XA Active CN109428876B (zh) 2017-09-01 2017-09-01 一种握手连接方法及装置

Country Status (1)

Country Link
CN (1) CN109428876B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110071933B (zh) * 2019-04-28 2021-11-12 深圳前海微众银行股份有限公司 安全套接层加速方法、装置、设备及可读存储介质
CN111131455B (zh) * 2019-12-24 2021-06-04 深信服科技股份有限公司 数据代理方法、装置、设备及存储介质
CN112839108B (zh) * 2021-03-02 2023-05-09 北京金山云网络技术有限公司 连接建立方法、装置、设备、数据网络及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102739799A (zh) * 2012-07-04 2012-10-17 合一网络技术(北京)有限公司 一种分布式应用中的分布式通讯方法
CN102833253A (zh) * 2012-08-29 2012-12-19 五八同城信息技术有限公司 建立客户端与服务器安全连接的方法及服务器
CN103701928A (zh) * 2014-01-02 2014-04-02 山东大学 应用于负载均衡器提高服务器和ssl网关运行效率的方法
CN106027646A (zh) * 2016-05-19 2016-10-12 杜在东 一种加速https的方法及装置
CN106341417A (zh) * 2016-09-30 2017-01-18 贵州白山云科技有限公司 一种基于内容分发网络的https加速方法和系统
CN106341375A (zh) * 2015-07-14 2017-01-18 腾讯科技(深圳)有限公司 实现资源加密访问的方法及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102739799A (zh) * 2012-07-04 2012-10-17 合一网络技术(北京)有限公司 一种分布式应用中的分布式通讯方法
CN102833253A (zh) * 2012-08-29 2012-12-19 五八同城信息技术有限公司 建立客户端与服务器安全连接的方法及服务器
CN103701928A (zh) * 2014-01-02 2014-04-02 山东大学 应用于负载均衡器提高服务器和ssl网关运行效率的方法
CN106341375A (zh) * 2015-07-14 2017-01-18 腾讯科技(深圳)有限公司 实现资源加密访问的方法及系统
CN106027646A (zh) * 2016-05-19 2016-10-12 杜在东 一种加速https的方法及装置
CN106341417A (zh) * 2016-09-30 2017-01-18 贵州白山云科技有限公司 一种基于内容分发网络的https加速方法和系统

Also Published As

Publication number Publication date
CN109428876A (zh) 2019-03-05

Similar Documents

Publication Publication Date Title
EP3916604B1 (en) Method and apparatus for processing privacy data of block chain, device, storage medium and computer program product
EP3391620B1 (en) Systems and methods for secure multi-party communications using a proxy
US8331568B2 (en) Efficient distribution of computation in key agreement
US11128447B2 (en) Cryptographic operation method, working key creation method, cryptographic service platform, and cryptographic service device
US20180013555A1 (en) Data transmission method and apparatus
US20200007328A1 (en) Location aware cryptography
US20140195804A1 (en) Techniques for secure data exchange
US20200021430A1 (en) Synchronizable hardware security module
CN110661748B (zh) 一种日志的加密方法、解密方法及装置
CN109428876B (zh) 一种握手连接方法及装置
EP3720164A1 (en) Message authentication method for communication network system, communication method and communication network system
CN108574687B (zh) 通信连接建立方法、装置、电子设备和计算机可读介质
CN115174267B (zh) 一种tls协议协商方法、设备及介质
CN109905229B (zh) 基于群组非对称密钥池的抗量子计算Elgamal加解密方法和系统
US10313123B1 (en) Synchronizable hardware security module
CN113434905B (zh) 数据传输方法、装置、计算机设备及存储介质
Parrilla et al. Elliptic curve cryptography hardware accelerator for high-performance secure servers
CN111193704B (zh) Http通信方法、装置及可读存储介质
Ayub et al. Parallelized RSA algorithm: An analysis with performance evaluation using OpenMP library in high performance computing environment
CN114338179A (zh) 页面加密方法、页面解密方法、装置、终端和服务器
CN108848094B (zh) 数据安全验证方法、装置、系统、计算机设备及存储介质
CN115021919A (zh) Ssl协商方法、装置、设备及计算机可读存储介质
CN115484080A (zh) 小程序的数据处理方法、装置、设备以及存储介质
CN114338629A (zh) 数据处理方法、装置、设备及介质
CN110855439A (zh) Http加密方法、装置、计算机设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant