发明内容
有鉴于此,本发明提供一种安全协商装置和方法,以解决现有技术存在的不足。
具体地,所述装置应用在网络安全服务器上,该装置包括:
协商模块,在安全协商的过程中,用于在接收到客户端发送的需要解密的安全协商报文后,从中获取该报文的安全协商特征信息以及需要解密的数据信息并把所述安全协商特征信息保存起来,生成对应的协商标识;
调用模块,用于将所述协商标识和所述需要解密的数据信息发送给解密部件进行解密;
恢复模块,用于接收解密部件返回的明文及协商标识,根据所述协商标识查找到对应的安全协商特征信息,并根据所述安全协商特征信息和所述明文,恢复与该安全协商特征信息对应的安全协商。
所述方法包括以下步骤:
步骤A、在接收到客户端发送的需要解密的安全协商报文后,从中获取该报文的安全协商特征信息以及需要解密的数据信息并把所述安全协商特征信息保存起来,生成对应的协商标识;
步骤B、将所述协商标识和所述需要解密的数据信息发送给解密部件进行解密;
步骤C、接收解密部件返回的明文及协商标识,根据所述协商标识查找到对应的安全协商特征信息,并根据所述安全协商特征信息和所述明文,恢复与该安全协商特征信息对应的安全协商。
由以上技术方案可见,相较于现有技术,本发明可以实现在安全协商的过程将CPU从等待协商结果的过程中解放出来,进一步地CPU可以处理其他报文,最大程度地提高了CPU的使用效率。
具体实施方式
为了解决现有技术中遇到大量用户访问时,连接速度较慢的问题,一种常见的思路是引入更多的硬件解密部件,这种方式适用于有灵活扩展架构的***,如果***的扩展性很差,则可能无法加入更多的硬件解密部件。这种方式在一定程度上能够改善连接速度较慢的问题,但是效果并不明显,最重要的是成本较高。本发明提供了一种安全协商装置和方法,应用在网络安全服务器上,以解决上述问题。
请参考图1,一个典型的SSL安全协商过程中服务器认证的流程包括以下步骤:
S101、客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;
S102、服务器接收客户端发送的上述信息,在响应客户端“Hello”信息的同时包含生成新的预主密钥所需的信息,并同时发送自己的证书;
S103、客户端根据收到的服务器响应信息,验证所述证书合法后根据所述主预密钥所需的信息产生一个预主密钥,并用服务器的公开密钥加密后传给服务器;
S104、服务器用私钥解密加密的预主密钥并回复,返回给客户端一个用主密钥认证的信息,以此让客户端认证服务器。
上述步骤104中,SSL服务器解密所述客户端发送的加密预主密钥,该预主密钥需要用其私钥来做解密操作,所述解密过程是大数运算,针对现有技术中该步骤占用大量CPU资源,本发明提供一种新的技术方案来解决此问题。为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
请参考图2和图3,在本发明一种优选的实施方式中,所述安全协商装置包括:协商模块、调用模块以及恢复模块。该装置在实现本发明时执行如下处理流程:
S201、在安全协商的过程中,用于在接收到客户端发送的需要解密的安全协商报文后,从中获取该报文的安全协商特征信息以及需要解密的数据信息并把所述安全协商特征信息保存起来,生成对应的协商标识。本步骤由协商模块执行。
在一种优选的实施方式中,所述安全协商是SSL协商,所述需要解密的安全协商报文是需要解密的SSL协商报文,所述需要解密的数据信息是预主密钥。本步骤中,网络安全服务器可以是SSL服务器,其接收到客户端发送的SSL协商报文后,从中获取预主密钥,所述预主密钥需要用服务器的私钥来做解密处理。
本步骤中,获取所述安全协商特征信息以及需要解密的数据信息后,将所述安全协商特征信息保存起来,并生成对应的协商标识。然后转步骤202。
需要注意的是,本步骤中所述协商标识可以是所述安全协商特征信息本身,也可以是指向内存地址的指针,或者是对应的ID值。在一种优选的实施方式中,所述协商模块前一部分运行在内核态层面,后一部分运行在驱动层面。具体地,所述协商模块将所述安全协商特征信息保存到内存里,然后将所述指向内存地址的指针传给驱动,驱动收到该指针后维护一个hash表,所述hash表主要包括所述内存地址指针、后半部分处理函数以及对应的ID值。在本实施方式中,考虑处理效率等因素,所述协商特征就是所述ID值。
所述安全协商特征信息包括解密所述数据信息,即所述预主密钥所需的密钥信息、安全协商的参数。其中,所述解密需要的密钥信息包括模、解密指数等,所述安全协商的参数包括协商过程中的随机值、加密套件、协议的版本号等。
步骤202、将所述协商标识和所述需要解密的数据信息发送给解密部件进行解密。本步骤由调用模块执行。
本步骤中,所述解密部件可以是CPU中负责解密运算的RSA核,也可以是解密卡。在一种优选的实施方式中,选用RSA核来进行解密工作。
所述调用模块运行在驱动层面,将上述信息发送给RSA核后,驱动程序会直接返回,而不必像现有技术中那样一直等待解密部件完成解密工作。此过程在CPU看来已经结束了,也就是相对于释放了CPU资源,将CPU从中解放出来,可以处理其他报文,从而提高CPU的使用效率。
步骤203、接收解密部件返回的明文及协商标识,根据所述协商标识查找到对应的安全协商特征信息,并根据所述安全协商特征信息和所述明文,恢复与该安全协商特征信息对应的安全协商。本步骤由恢复模块执行。
所述恢复模块前一部分运行在驱动层面,后一部分运行在内核态层面。具体地,解密部件完成解密后会在内部产生一个中断信号,驱动程序接收所述中断信号、解密后的明文以及对应的ID值后,查找hash表,获取该ID值对应的安全协商特征信息的内存地址指针以及回调函数,CPU调用所述回调函数根据所述明文和所述安全协商特征信息就可以恢复之前其暂时释放的与该安全协商特征信息对应的安全协商过程。
事实上,现有技术中,CPU在将大数运算交给硬件解密部件的后,CPU同时需要等待解密完成,在这个过程中CPU还是需要维护整个安全协商的过程,因为实际上最终该安全协商还是要由CPU来完成的。虽然硬件处理的速度有较大提升,但仍然需要一定的耗时,当安全协商数量较大的时候,CPU因为等待而造成资源浪费的总量也就相当可观的。在这种情况下,CPU的能力又成了整个处理中的瓶颈。在传统技术设计思路中,在一些有硬件加速处理的环境中,CPU瓶颈问题经常被忽略或轻视,相当多的设计中习惯性地依赖使用性能更为强劲的硬件部件来加速,从而将整体速度提升。本发明则打破了这种常规的技术构思。
本发明提供的技术方案可以实现在解密安全协商加密报文的过程中,解放CPU,使得CPU可以处理其他报文,进而提高CPU的利用率,提升网络安全服务器处理连接的速率。以SSL协商为例,本申请发明人采用专业的SSL测试仪Avalanche(Avalanche是著名的通信测试仪器厂商思博伦通信公司4到7层的旗舰产品)进行测试,模拟真实的使用环境,经实验测得,SSL服务器每秒钟处理SSL连接的数量可以从现有技术中的200多条上升到超过10000条,甚至接近或超过15000条,吞吐量从几十Mbps上升到Gbps这样的量级,甚至接近或超过2Gbps。SSL服务器的处理速率达到了质的飞跃,为实现大规模的SSL用户同时登陆、同时在线、同时处理文档以及使用业务等提供了有力保障。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。