加速设备以及基于加速设备获取会话秘钥的方法与流程

文档序号:12821835阅读:193来源:国知局
加速设备以及基于加速设备获取会话秘钥的方法与流程

本发明涉及互联网技术领域,尤其涉及一种加速设备以及基于加速设备获取会话秘钥的方法。



背景技术:

数据压缩是广域网加速的基本手段之一,经过ssl(securesocketslayer,安全套接层)加密的数据如果想要通过数据压缩来获得加速效果,那么必须先对数据进行解密。

目前加速ssl加密数据常用的方法是,参照图1所示,客户端处的加速设备代理服务端与真实的客户端建立ssl连接1,服务端处的加速设备代理客户端与真实的服务端建立ssl连接2,这样就把原始的客户端与服务端之间的一条ssl连接拆为了两条ssl连接,而不同的ssl连接协商出的会话秘钥是不一样的,也就是说,客户端与代理服务端的加速设备之间协商出会话秘钥a,服务端与代理客户端的加速设备之间协商出会话秘钥b,两台加速设备在接收到加密数据时,分别需要通过各自的会话秘钥将数据解密后,再压缩传输,这就导致客户端和服务端收发的解密前数据流发生了改变,即服务端接收到的解密前的数据流与客户端发出的解密前的数据流不一致,此时,如果服务端上的应用要校验解密前数据流,或者要校验协商出的会话秘钥时就会出现校验失败的现象,从而导致应用访问异常。



技术实现要素:

本发明提供一种加速设备以及基于加速设备获取会话秘钥的方法,其主要目的在于解决现有加速ssl应用技术中采用加速设备分别作为代理客户端与代理服务端和真实的服务器与客户端进行ssl握手时导致传输客户端与服务端之间的数据时引起的数据流变化从而影响应用正常访问的技术问题。

为实现上述目的,本发明提供一种基于加速设备获取会话秘钥的方法,该基于加速设备获取会话秘钥的方法包括:

位于客户端与服务端之间的加速设备拦截所述客户端与所述服务端之间的ssl握手信息;

所述加速设备根据存储的服务器私钥以及拦截到的所述握手信息计算所述客户端与所述服务端之间协商出的会话秘钥;

所述加速设备存储所述会话秘钥,以供所述加速设备基于所述会话秘钥对所述客户端与所述服务端之间加密传输的数据进行解密和加密。

可选地,所述加速设备根据拦截到的所述握手信息获取所述客户端与所述服务端之间协商出的会话秘钥的步骤包括:

所述加速设备解析所述握手信息获取客户端随机数、服务端随机数、ssl版本、ssl加密套件以及加密后的预主秘钥;

基于获取到的所述客户端随机数、服务端随机数、ssl版本、ssl加密套件和加密后的预主秘钥,以及所述服务器私钥,基于ssl的rfc文档计算出所述会话秘钥。

可选地,所述位于客户端与服务端之间的加速设备拦截所述客户端与所述服务端之间的ssl握手信息的步骤包括:

所述加速设备获取所述客户端向所述服务端发起ssl握手请求的请求信息,从所述请求信息中获取所述客户端随机数;

在拦截到所述服务端对所述ssl握手请求的响应信息时,从所述响应信息中获取所述服务端随机数、所述ssl版本和所述ssl加密套件;

所述加速设备获取所述客户端在接收到所述响应信息后向所述服务端发送的秘钥交换信息,从所述秘钥交换信息中获取所述加密后的预主秘钥。

可选地,所述加速设备包括与所述客户端通信的第一加速设备,以及与所述服务端通信的第二加速设备;

所述加速设备存储所述会话秘钥的步骤之后,所述基于加速设备获取会话秘钥的方法还包括:

所述第一加速设备在接收到所述客户端发送的加密后的数据时,通过所述会话秘钥将所述数据解密,并将解密后的所述数据压缩处理后发送至所述第二加速设备,所述第二加速设备将压缩处理后的所述数据解压缩后,基于所述会话秘钥将解压缩后的所述数据加密后发送至所述服务端;

或者,所述第二加速设备在接收到所述服务端发送的加密后的数据时,通过所述会话秘钥将所述数据解密,并将解密后的所述数据压缩处理后发送至所述第一加速设备,所述第一加速设备将压缩处理后的所述数据解压缩后,基于所述会话秘钥将解压缩后的所述数据加密后发送至所述客户端。

可选地,所述会话秘钥包括服务端验证密钥、客户端验证密钥、服务端加密密钥、客户端加密密钥、服务端初始化向量、客户端初始化向量。

此外,为实现上述目的,本发明还提供一种加速设备,该加速设备包括:

数据拦截模块,用于拦截所述客户端与所述服务端之间的ssl握手信息,所述加速设备连接于所述客户端与所述服务端之间;

秘钥计算模块,用于根据存储的服务器私钥以及拦截到的所述握手信息计算所述客户端与所述服务端之间协商出的会话秘钥;

秘钥存储模块,用于存储所述会话秘钥,以供所述加速设备基于所述会话秘钥对所述客户端与所述服务端之间加密传输的数据进行解密和加密。

可选地,所述秘钥计算模块还用于:解析所述握手信息获取客户端随机数、服务端随机数、ssl版本、ssl加密套件以及加密后的预主秘钥;以及,基于获取到的所述客户端随机数、服务端随机数、ssl版本、ssl加密套件和加密后的预主秘钥,以及所述服务器私钥,基于ssl的rfc文档计算出所述会话秘钥。

可选地,所述数据拦截模块用于:获取所述客户端向所述服务端发起ssl握手请求的请求信息,从所述请求信息中获取所述客户端随机数;在拦截到所述服务端对所述ssl握手请求的响应信息时,从所述响应信息中获取所述服务端随机数、所述ssl版本和所述ssl加密套件;以及,获取所述客户端在接收到所述响应信息后向所述服务端发送的秘钥交换信息,从所述秘钥交换信息中获取所述加密后的预主秘钥。

可选地,所述加速设备包括与所述客户端通信的第一加速设备,以及与所述服务端通信的第二加速设备;所述第一加速设备包括第一解密模块、第一压缩模块、第一解压缩模块以及第一加密模块;所述第二加速设备包括第二解密模块、第二压缩模块、第二解压缩模块以及第二加密模块

所述第一解密模块用于:在接收到所述客户端发送的加密后的数据时,通过所述会话秘钥将所述数据解密;

所述第一压缩模块用于:将解密后的所述数据压缩处理后发送至所述第二加速设备,所述第二解压缩模块将压缩处理后的所述数据解压缩后,通过第二加密模块基于所述会话秘钥将解压缩后的所述数据加密后发送至所述服务端;

所述第二解密模块用于:在接收到所述服务端发送的加密后的数据时,通过所述会话秘钥将所述数据解密;

所述第二压缩模块用于:将解密后的所述数据压缩处理后发送至所述第一加速设备,所述第一解压缩模块将压缩处理后的所述数据解压缩后,通过第一加密模块基于所述会话秘钥将解压缩后的所述数据加密后发送至所述客户端。

可选地,所述会话秘钥包括服务端验证密钥、客户端验证密钥、服务端加密密钥、客户端加密密钥、服务端初始化向量、客户端初始化向量。

本发明提出的加速设备以及基于加速设备获取会话秘钥的方法,通过位于客户端与服务端之间的加速设备拦截客户端与服务端之间的ssl握手信息,并对ssl握手信息进行解析,并结合存储的服务器私钥计算出客户端与服务端之间协商出的会话秘钥并存储所述会话秘钥,客户端与服务端之间的数据在通过加速设备进行压缩传输时,可以通过会话秘钥对加密传输的数据进行加密和解密,采用这样的方式,客户端与加速设备以及服务端之间实际上只建立了一条ssl连接,该条ssl连接产生了一个会话秘钥,因此,在数据压缩传输的过程中不会改变原始数据流,如果服务端上的应用要校验解密前数据流,或者要校验协商出的会话秘钥时,可以成功校验,即应用可以成功访问,解决了现有加速ssl应用技术中采用加速设备分别作为代理服务端与代理客户端和真实的服务器与客户端进行ssl握手时导致传输客户端与服务端之间的数据时引起的数据流变化从而影响应用正常访问的技术问题。

附图说明

图1为现有技术中客户端、服务端以及加速设备之间的通信连接示意图;

图2为本发明基于加速设备获取会话秘钥的方法第一实施例的流程图;

图3为本发明基于加速设备获取会话秘钥的方法第一实施例中客户端、服务端以及加速设备之间的通信连接示意图;

图4为本发明基于加速设备获取会话秘钥的方法第一实施例中拦截握手信息的过程的示意图;

图5为本发明加速设备第一实施例的功能模块示意图;

图6为本发明加速设备第二实施例中第一加速设备的功能模块示意图;

图7为本发明加速设备第二实施例中第二加速设备的功能模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明提供一种基于加速设备获取会话秘钥的方法。参照图2所示,为本发明基于加速设备获取会话秘钥的方法第一实施例的流程图。

在本实施例中,该基于加速设备获取会话秘钥的方法包括:

步骤s10,位于客户端与服务端之间的加速设备拦截所述客户端与所述服务端之间的ssl握手信息。

步骤s20,所述加速设备根据存储的服务器私钥以及拦截到的所述握手信息计算所述客户端与所述服务端之间协商出的会话秘钥。

参照图3所示,为本实施例中客户端、服务端以及加速设备之间的通信连接示意图。该实施例中分别为客户端以及服务端提供一台加速设备用于他们之间的数据压缩传输,包括客户端处的客户端加速设备以及服务端处的服务端加速设备,这两台设备之间进行数据的压缩传输,客户端与服务端之间建立一条ssl连接,产生一个会话秘钥c,以下实施例中所述的会话秘钥均是指会话秘钥c。在该实施例中,可以由客户端加速设备或者服务端加速设备中的任意一台设备拦截ssl握手信息并解析获取到会话秘钥后传输给另一台,或者可以由两台设备同时进行拦截并各自进行解析获取会话秘钥。以下以两台设备同时进行ssl握手信息的拦截为例进行说明。

客户端与服务端之间进行ssl会话之前,会先基于ssl协议进行握手,握手的过程中产生握手信息。预先在加速设备中导入ssl证书,基于该ssl证书获取服务器私钥并预先存储在加速设备中,加速设备可以在客户端与服务端进行握手时拦截握手信息,结合存储的服务器私钥和拦截到的握手信息计算出会话密钥。

具体地,步骤s10可以包括如下细化步骤:所述加速设备解析所述握手信息获取客户端随机数、服务端随机数、ssl版本、ssl加密套件以及加密后的预主秘钥;基于获取到的所述客户端随机数、服务端随机数、ssl版本、ssl加密套件和加密后的预主秘钥,以及所述服务器私钥,基于ssl的rfc(requestforcomments,请求测评)文档计算出所述会话秘钥,具体地,根据上述获取到的各个参数、服务器私钥以及ssl的rfc文档中公布的方法计算出会话秘钥。

一般完整的握手过程为:客户端向服务端发起ssl握手请求,请求信息为client_hello,服务端接收到client_hello时,向客户端返回响应信息,包括server_hello、certificate、server_hello_done;客户端在接收到响应信息后,向服务端发送一个秘钥交换信息,即client_key_exchange,以与服务端协商会话秘钥;最后,客户端再发送一个加密指示信息,即change_cipher_spec,以告知服务端从现在开始发送的消息都是加密过的,最后,服务端向客户端发送一个完成信息,即finishd,该信息包含了前面所有握手信息的哈希值,可以让客户端验证握手过程是否被第三方篡改,完成握手过程。

加速设备拦截的握手信息包括:请求信息、响应信息以及秘钥交换信息,即client_hello、server_hello、certificate、server_hello_done以及client_key_exchange。在拦截得到这些信息后,进行解析获取到客户端随机数、服务端随机数、ssl版本、ssl加密套件以及加密后的预主秘钥,然后根据ssl的rfc文档计算出所述会话秘钥,该会话秘钥就是客户端与服务端后续会话过程中使用的数据加密秘钥。

具体地,拦截握手信息的过程参照图4所示,客户端发送client_hello给服务端,客户端加速设备收到client_hello时,记录下数据包中的客户端随机数,然后把client_hello发送给服务端加速设备,服务端加速设备收到client_hello,记录下数据包中的客户端随机数,把client_hello发送给服务端。

服务端发送server_hello、certificate、server_hello_done给客户端,服务端加速设备收到server_hello、certificate、server_hello_done,记录下数据包中的服务端随机数、ssl版本、ssl算法套件,把server_hello发送给客户端加速设备,客户端加速设备收到server_hello、certificate、server_hello_done,记录下数据包中的服务端随机数、ssl版本、ssl算法套件,把server_hello、certificate、server_hello_done发送给客户端。

客户端发送client_key_exchange给服务端,客户端加速设备收到client_key_exchange,记录下数据包中加密后的预主密钥,把client_key_exchange发送给服务端加速设备,服务端加速设备收到client_key_exchange,记录下数据包中加密后的预主密钥,把client_key_exchange发送给服务端。

客户端发送change_cipher_spec给服务端,客户端加速设备收到change_cipher_spec,根据前面记录的客户端随机数、服务端随机数、ssl版本、ssl加密套件、加密后的预主密钥计算出加密、解密原始数据需要的服务端验证密钥、客户端验证密钥、服务端加密密钥、客户端加密密钥、服务端初始化向量、客户端初始化向量,把change_cipher_spec发送给服务端加速设备,服务端加速设备收到change_cipher_spec,和客户端加速设备做一样的操作后change_cipher_spec发送给服务端。

上述计算得到的服务端验证密钥、客户端验证密钥、服务端加密密钥、客户端加密密钥、服务端初始化向量、客户端初始化向量构成所述会话秘钥。其中,客户端加速设备使用客户端验证密钥、客户端加密密钥、客户端初始化向量进行数据的解密,服务端加速设备使用服务端验证密钥、服务端加密密钥、服务端初始化向量进行数据的解密,服务端加速设备使用客户端验证密钥、客户端加密密钥、客户端初始化向量进行数据的加密,客户端加速设备使用服务端验证密钥、服务端加密密钥、服务端初始化向量进行数据的加密。

步骤s30,所述加速设备存储所述会话秘钥,以供所述加速设备基于所述会话秘钥对所述客户端与所述服务端之间加密传输的数据进行解密和加密。

加速设备在获取到上述会话秘钥后进行存储,并在客户端与服务端后续的数据传输过程中,使用该会话秘钥对压缩前的数据进行解密操作、对解压缩后的数据进行加密操作。

此外,如果客户端与服务端之间建立的通信协议支持会话秘钥的复用,则存储的会话秘钥可以在多次会话中重复使用,例如https,其全称为hypertexttransferprotocoloversecuresocketlayer,是以安全为目标的超文本传输协议通道,可以支持会话秘钥的复用,在其他不支持会话秘钥的复用的情况下,加速设备需要对于每一次握手进行握手信息的拦截,并解析获取相应的会话秘钥。

本实施例提出的基于加速设备获取会话秘钥的方法,通过位于客户端与服务端之间的加速设备拦截客户端与服务端之间的ssl握手信息,并对ssl握手信息进行解析,并结合存储的服务器私钥计算出客户端与服务端之间协商出的会话秘钥并存储所述会话秘钥,客户端与服务端之间的数据在通过加速设备进行压缩传输时,可以通过会话秘钥对加密传输的数据进行加密和解密,采用这样的方式,客户端与加速设备以及服务端之间实际上只建立了一条ssl连接,该条ssl连接产生了一个会话秘钥,因此,在数据压缩传输的过程中不会改变原始数据流,如果服务端上的应用要校验解密前数据流,或者要校验协商出的会话秘钥时,可以成功校验,即应用可以成功访问,解决了现有加速ssl应用技术中采用加速设备分别作为代理客户端与代理服务端和真实的服务器与客户端进行ssl握手时导致传输客户端与服务端之间的数据引起的数据流变化从而影响应用正常访问的技术问题。

基于第一实施例提出本发明基于加速设备获取会话秘钥的方法的第二实施例。在本实施例中,所述加速设备包括与所述客户端通信的第一加速设备,以及与所述服务端通信的第二加速设备;在步骤s30之后,该基于加速设备获取会话秘钥的方法还包括:

所述第一加速设备在接收到所述客户端发送的加密后的数据时,通过所述会话秘钥将所述数据解密,并将解密后的所述数据压缩处理后发送至所述第二加速设备;所述第二加速设备将压缩处理后的所述数据解压缩后,基于所述会话秘钥将解压缩后的所述数据加密后发送至所述服务端;

或者,所述第二加速设备在接收到所述服务端发送的加密后的数据时,通过所述会话秘钥将所述数据解密,并将解密后的所述数据压缩处理后发送至所述第一加速设备;所述第一加速设备将压缩处理后的所述数据解压缩后,基于所述会话秘钥将解压缩后的所述数据加密后发送至所述客户端。

在该实施例中,第一加速设备为客户端加速设备,第二加速设备为服务端加速设备。在客户端与服务端之间的数据压缩传输的过程中,会有加密后的数据的相互传输:客户端发送加密后的数据给服务端,客户端加速设备收到加密后的数据,用前面计算出的客户端验证密钥、客户端加密密钥、客户端初始化向量解密数据,把解密后的数据压缩处理后发送给服务端加速设备,服务端加速设备收到数据后先解压缩处理,然后用前面计算出的客户端验证密钥、客户端加密密钥、客户端初始化向量把解压缩后的数据重新加密,把加密后的数据发送给服务端;服务端发送加密后的数据给客户端,服务端加速设备收到加密后的数据,用前面计算出的服务端验证密钥、服务端加密密钥、服务端初始化向量解密数据,把解密后的数据压缩处理后发送给客户端加速设备,客户端加速设备收到数据后先解压缩处理,然后用前面计算出的服务端验证密钥、服务端加密密钥、服务端初始化向量把解压缩得到的数据重新加密处理,把加密后的数据发送给客户端。

在上述过程中,客户端加速设备与加速设备解密前的数据流是一样的,未发生改变,实现了在不修改原始数据流的情况下,对ssl加密数据进行解密,对解密的数据进行压缩,从而获得加速效果。

此外,本发明提出的方法中,还可以根据使用了ssl的应用是否需要进行上层校验,采用不同的解密方式,对于需要进行上层校验的应用来说,可以采用本发明提出这种建立单条ssl连接的方式对ssl数据解密,对于不需要上层校验的应用来说,可以采用现有的通过两台加速设备代理客户端与服务端,分别与真实的服务端和客户端建立两条ssl连接的方式对ssl数据解密。可以预先配置应用识别表,在该应用识别表中为不同的应用配置不同的解密方式,将该应用识别表存储在设备内。

本发明还提出一种加速设备。

参照图5所示,为本发明加速设备第一实施例的功能模块示意图。

在该实施例中,该加速设备包括:

数据拦截模块10,用于拦截所述客户端与所述服务端之间的ssl握手信息,所述加速设备连接于所述客户端与所述服务端之间;

秘钥计算模块20,用于根据存储的服务器私钥以及拦截到的所述握手信息计算所述客户端与所述服务端之间协商出的会话秘钥。

参照图3所示,为本实施例中客户端、服务端以及加速设备之间的通信连接示意图。该实施例中分别为客户端以及服务端提供一台加速设备用于他们之间的数据压缩传输,包括客户端处的客户端加速设备以及服务端处的服务端加速设备,这两台设备之间进行数据的压缩传输,客户端与服务端之间建立一条ssl连接,产生一个会话秘钥c,以下实施例中所述的会话秘钥均是指会话秘钥c。本实施例提出的加速设备可以是客户端加速设备,也可以是服务端加速设备。在该实施例中,可以由客户端加速设备或者服务端加速设备中的任意一台设备拦截ssl握手信息并解析获取到会话秘钥后传输给另一台,或者可以由两台设备同时进行拦截并各自进行解析获取会话秘钥。以下以两台设备同时进行ssl握手信息的拦截为例进行说明。

客户端与服务端之间进行ssl会话之前,会先基于ssl协议进行握手,握手的过程中产生握手信息。预先在加速设备中导入ssl证书,基于该ssl证书获取服务器私钥并预先存储在加速设备中,加速设备可以在客户端与服务端进行握手时拦截握手信息,结合存储的服务器私钥和拦截到的握手信息计算出会话密钥。

具体地,秘钥计算模块20还用于:解析所述握手信息获取客户端随机数、服务端随机数、ssl版本、ssl加密套件以及加密后的预主秘钥;以及,基于获取到的所述客户端随机数、服务端随机数、ssl版本、ssl加密套件和加密后的预主秘钥,以及所述服务器私钥,基于ssl的rfc(requestforcomments,请求测评)文档计算出所述会话秘钥,具体地,根据上述获取到的各个参数、服务器私钥以及ssl的rfc文档中公布的方法计算出会话秘钥。

一般完整的握手过程为:客户端向服务端发起ssl握手请求,请求信息为client_hello,服务端接收到client_hello时,向客户端返回响应信息,包括server_hello、certificate、server_hello_done;客户端在接收到响应信息后,向服务端发送一个秘钥交换信息,即client_key_exchange,以与服务端协商会话秘钥;最后,客户端再发送一个加密指示信息,即change_cipher_spec,以告知服务端从现在开始发送的消息都是加密过的,最后,服务端向客户端发送一个完成信息,即finishd,该信息包含了前面所有握手信息的哈希值,可以让客户端验证握手过程是否被第三方篡改,完成握手过程。

加速设备的数据拦截模块10拦截的握手信息包括:请求信息、响应信息以及秘钥交换信息,即client_hello、server_hello、certificate、server_hello_done以及client_key_exchange。在拦截得到这些信息后,进行解析获取到客户端随机数、服务端随机数、ssl版本、ssl加密套件以及加密后的预主秘钥,然后根据ssl的rfc文档计算出所述会话秘钥,该会话秘钥就是客户端与服务端后续会话过程中使用的数据加密秘钥。

具体地,拦截握手信息的过程参照图4所示,客户端发送client_hello给服务端,客户端加速设备收到client_hello时,记录下数据包中的客户端随机数,然后把client_hello发送给服务端加速设备,服务端加速设备收到client_hello,记录下数据包中的客户端随机数,把client_hello发送给服务端。

服务端发送server_hello、certificate、server_hello_done给客户端,服务端加速设备收到server_hello、certificate、server_hello_done,记录下数据包中的服务端随机数、ssl版本、ssl算法套件,把server_hello发送给客户端加速设备,客户端加速设备收到server_hello、certificate、server_hello_done,记录下数据包中的服务端随机数、ssl版本、ssl算法套件,把server_hello、certificate、server_hello_done发送给客户端。

客户端发送client_key_exchange给服务端,客户端加速设备收到client_key_exchange,记录下数据包中加密后的预主密钥,把client_key_exchange发送给服务端加速设备,服务端加速设备收到client_key_exchange,记录下数据包中加密后的预主密钥,把client_key_exchange发送给服务端。

客户端发送change_cipher_spec给服务端,客户端加速设备收到change_cipher_spec,根据前面记录的客户端随机数、服务端随机数、ssl版本、ssl加密套件、加密后的预主密钥计算出加密、解密原始数据需要的服务端验证密钥、客户端验证密钥、服务端加密密钥、客户端加密密钥、服务端初始化向量、客户端初始化向量,把change_cipher_spec发送给服务端加速设备,服务端加速设备收到change_cipher_spec,和客户端加速设备做一样的操作后change_cipher_spec发送给服务端。

秘钥计算模块20计算得到的服务端验证密钥、客户端验证密钥、服务端加密密钥、客户端加密密钥、服务端初始化向量、客户端初始化向量构成所述会话秘钥。其中,客户端加速设备使用客户端验证密钥、客户端加密密钥、客户端初始化向量进行数据的解密,服务端加速设备使用服务端验证密钥、服务端加密密钥、服务端初始化向量进行数据的解密,客户端加速设备使用服务端验证密钥、服务端加密密钥、服务端初始化向量进行数据的加密,服务端加速设备使用客户端验证密钥、客户端加密密钥、客户端初始化向量进行数据的加密。

秘钥存储模块30,用于存储所述会话秘钥,以供所述加速设备基于所述会话秘钥对所述客户端与所述服务端之间加密传输的数据进行解密和加密。

加速设备在获取到上述会话秘钥后,秘钥存储模块30存储会话秘钥,并在客户端与服务端后续的数据传输过程中,由加速设备使用该会话秘钥对压缩前的数据进行解密操作、对解压缩后的数据进行加密操作。

此外,如果客户端与服务端之间建立的通信协议支持会话秘钥的复用,则存储的会话秘钥可以在多次会话中重复使用,例如https,其全称为hypertexttransferprotocoloversecuresocketlayer,是以安全为目标的超文本传输协议通道,可以支持会话秘钥的复用,在其他不支持会话秘钥的复用的情况下,加速设备需要对于每一次握手进行握手信息的拦截,并解析获取相应的会话秘钥。

本实施例通过位于客户端与服务端之间的加速设备拦截客户端与服务端之间的ssl握手信息,并对ssl握手信息进行解析,并结合存储的服务器私钥计算出客户端与服务端之间协商出的会话秘钥并存储所述会话秘钥,客户端与服务端之间的数据在通过加速设备进行压缩传输时,可以通过会话秘钥对加密传输的数据进行加密和解密,采用这样的方式,客户端与加速设备以及服务端之间实际上只建立了一条ssl连接,该条ssl连接产生了一个会话秘钥,因此,在数据压缩传输的过程中不会改变原始数据流,如果服务端上的应用要校验解密前数据流,或者要校验协商出的会话秘钥时,可以成功校验,即应用可以成功访问,解决了现有加速ssl应用技术中采用加速设备分别作为代理客户端与代理服务端和真实的服务器与客户端进行ssl握手时导致传输客户端与服务端之间的数据时引发的数据流变化从而影响应用正常访问的技术问题。

基于第一实施例提出本发明加速设备的第二实施例。在本实施例中,参照图6所示,加速设备包括与客户端通信的第一加速设备,以及与服务端通信的第二加速设备;第一加速设备还包括第一解密模块40、第一压缩模块50、第一解压缩模块60以及第一加密模块70;第二加速设备还包括第二解密模块80、第二压缩模块90、第二解压缩模块100以及第二加密模块110。

第一解密模块40用于:在接收到所述客户端发送的加密后的数据时,通过所述会话秘钥将所述数据解密;

第一压缩模块50用于:将解密后的所述数据压缩处理后发送至所述第二加速设备,第二解压缩模块100将压缩处理后的所述数据解压缩后,通过第二加密模块110基于所述会话秘钥将解压缩后的所述数据加密后发送至所述服务端;

第二解密模块80用于:在接收到所述服务端发送的加密后的数据时,通过所述会话秘钥将所述数据解密;

第二压缩模块90用于:将解密后的所述数据压缩处理后发送至所述第一加速设备,第一解压缩模块60将压缩处理后的所述数据解压缩后,通过第一加密模块70基于所述会话秘钥将解压缩后的所述数据加密后发送至所述客户端。

在该实施例中,第一加速设备为客户端加速设备,第二加速设备为服务端加速设备,可以理解的是,一台加速设备中可以同时包括第一解密模块40、第一压缩模块50、第一解压缩模块60和第一加密模块70,以及第二解密模块80、第二压缩模块90、第二解压缩模块100和第二加密模块110,当他与客户端连接时,作为客户端加速设备,第一解密模块40、第一压缩模块50、第一解压缩模块60和第一加密模块70工作;当它与服务端连接时,作为服务端加速设备,第二解密模块80、第二压缩模块90、第二解压缩模块100和第二加密模块110工作。在客户端与服务端之间的数据压缩传输的过程中,会有加密后的数据的相互传输:客户端发送加密后的数据给服务端,客户端加速设备收到加密后的数据,用前面计算出的客户端验证密钥、客户端加密密钥、客户端初始化向量解密数据,把解密后的数据压缩处理后发送给服务端加速设备,服务端加速设备收到数据后先解压缩处理,然后用前面计算出的客户端验证密钥、客户端加密密钥、客户端初始化向量把解压缩后的数据重新加密,把加密后的数据发送给服务端;服务端发送加密后的数据给客户端,服务端加速设备收到加密后的数据,用前面计算出的服务端验证密钥、服务端加密密钥、服务端初始化向量解密数据,把解密后的数据压缩处理后发送给客户端加速设备,客户端加速设备收到数据后先解压缩处理,然后用前面计算出的服务端验证密钥、服务端加密密钥、服务端初始化向量把解压缩得到的数据重新加密处理,把加密后的数据发送给客户端。

在上述过程中,客户端加速设备与加速设备解密前的数据流是一样的,未发生改变,实现了在不修改原始数据流的情况下,对ssl加密数据进行解密,对解密的数据进行压缩,从而获得加速效果。

此外,本发明提出的加速设备,还可以根据使用了ssl的应用是否需要进行上层校验,采用不同的解密方式,对于需要进行上层校验的应用来说,可以采用本发明提出这种建立单条ssl连接的方式对ssl数据解密,对于不需要上层校验的应用来说,可以采用现有的通过两台加速设备代理客户端与服务端,分别与真实的服务端和客户端建立两条ssl连接的方式对ssl数据解密。可以预先配置应用识别表,在该应用识别表中为不同的应用配置不同的解密方式,将该应用识别表存储在设备内。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1