一种利用流水线硬件设计卸载SSL/TLS协议的方法与流程

文档序号:13559565阅读:686来源:国知局
一种利用流水线硬件设计卸载SSL/TLS协议的方法与流程

本发明涉及信息安全技术领域,尤其涉及一种利用流水线工作式的硬件设计卸载ssl/tls协议的方法。



背景技术:

为了保护敏感数据在传送过程中的安全,越来越多的政府、企业、银行开始部署基于ssl的https通信。安全套接层协议ssl(securesocketlayer)是使用公钥和私钥技术组合的安全网络通讯协议。ssl协议是netscape推出的基于web应用的安全协议,ssl协议指定了一种在应用程序协议(如http、telenet、nmtp和ftp等)和tcp/ip协议之间提供数据安全性分层的机制,它为tcp/ip连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证,主要用于提高应用程序之间数据的安全性,对传送的数据进行加密和隐藏,使客户端/服务器应用之间的通信不被攻击者窃听,确保数据在传送中不被改变,即确保数据的完整性。

openssl是一个开源代码的安全项目,目标是用强大的加密算法来实现安全的socket层(securesocketslayer,sslv2/v3)和传输层的安全性(transportlayersecurity,tlsvl)。它包含了完整的加密算法,数字签名算法及证书签名算法等。可以很好的保证数据的完整性、保密性和正确性。

目前基于webserver领域的硬件加/解密系统的设计分为五个层次:webserver应用层,openssl层,cryptodev层,硬件加/解密驱动层,以及硬件加/解密引擎层。如图1所示,其中webserver应用层和openssl层工作在用户空间。webserver自身采用多线程方式维持系统负载均衡,监听用户的连接请求,并对客户端的请求做出响应。在处理客户端请求过程中,webserver需要通过openssl提供的加/解密功能,完成用户的身份认证和安全检查等功能。启用https传输之后,webserver将需要传输的数据通过openssl进行ssl数据处理后再传输给客户端。openssl将加/解密请求和信息摘要请求发送给cryptodev。cryptodev层和硬件驱动层工作在内核空间。cryptodev将openssl层下发的请求转换为硬件加/解密驱动识别的请求发送给硬件加/解密驱动。硬件加/解密驱动将请求构造成硬件加/解密引擎能够识别的数据结构,并将其填写到硬件加/解密引擎的请求队列中。当硬件加/解密引擎完成加/解密或信息摘要操作后产生中断,异步返回结果。

openssl向上响应上层web应用提交的各种加/解密、信息摘要请求,向下通过与硬件驱动交互,实现硬件加/解密引擎的调用和结果返回。

上层web应用将加/解密请求下发给openssl,openssl对原始数据进行ssl数据处理后,将加/解密请求下发给硬件,从而调用硬件加/解密引擎实现加/解密运算。若openssl接收到的上层加/解密请求中,原始数据大小超过ssl记录层最大源数据长度时,openssl将以ssl最大源数据长度为单位将原始数据分割成多个数据块(最后一个数据块可能小于ssl最大源数据长度),

一个原始数据大小为n×ssl最大源数据长度的加解密请求,需要将其拆分为n个ssl最大源数据长度的数据块进行加密,每个数据块在运算过程中都会产生两次内核态与用户态切换开销(modeswitch)和上下文切换开销(contextswitch),则传统技术方案存在如下缺陷:上层webserver下发给openssl的加密请求需要多次调用硬件引擎来完成加密操作,使得https加密过程中产生大量硬件的模式切换开销和上下文切换开销,降低了webserver的https应用性能,造成硬件加密引擎的利用率下降。



技术实现要素:

本发明旨在https应用场景下,设计一种更好地利用硬件的i/o通路。这个通路将原来的hash操作等和数据整块加密操作全部交由硬件完成。为实现此通路,需要设计一种新型硬件,这个硬件结合ssl协议的功能和数据聚合加密的功能,实现对于待传输的数据直接由硬件完成ssl协议中由软件完成的功能。这种设计将简化上层应用安全传输的流程,减少cpu在整个过程中的参与,降低系统负载,提高系统性能。

本发明提供了针对数据安全传输过程中新型硬件和相应i/o通路的设计思想:

在操作系统中,提供新的相应用于硬件设置的上层应用接口;

上层应用代码的修改方式;

设计新型的具有卸载ssl协议和数据整合加密功能的硬件;

设计新型硬件所需要的数据结构。

所述硬件的上层应用接口,在原有的数据发送接口的基础上,提供额外的上层应用接口,用于设置硬件加密过程中所使用的密钥和初始向量等信息。

对上层应用原有数据传输流程进行相应的修改,简化现有流程。在安全传输的初始化过程中,对硬件加密所需的密钥和初始向量进行设置,在数据传输过程中,将原始数据的mac值添加、字符填充和添加随机数等多种操作合并为一种操作,再由数据加密模块完成数据加密,最后返回上层进行发送之前的准备工作。

新型的硬件具有代替上层协议完成hash操作和数据加密的功能,其中添加随机数和字符填充与数据整块加密关系紧密,因而将硬件功能主要划分为mac值添加、添加随机数和字符填充以及数据加密四个功能模块,如附图3所示。

硬件hash模块,根据和客户端连接过程中商定的密钥和选定的hash函数对每个分段大小等于16kb的数据块做计算和添加mac的操作。

添加随机数和字符填充模块,根据选定的数据加密算法,对分段数据在预留的空间进行添加explicitiv和pading操作,以供后续的数据加密模块可以正常地加密整个请求数据。

数据加密模块,将完成前三种操作的分段数据块一起调用加密功能模块完成加密操作,然后中断返回到上层。

新型的硬件在功能上实现ssl协议卸载和数据整合加密的合并,需要针对两种功能对硬件所需要的数据结构进行设计。该数据结构需要包括完成hash操作、添加随机数、字符填充和聚合加密等操作所要用的信息。

本发明更重要的是在硬件引擎的功能模块之间实现流水线式的工作模式,使得前三个功能模块之间可以并行工作,在请求数据很大的情况下,硬件模块的流水线式设计和模块之间的异步工作方式可以很好的加快硬件处理的速度,从而整体上提高硬件卸载cpu的效果。

附图说明

图1基于webserver领域的加/解密硬件加速系统

图2本发明实施例中的数据流和硬件模块示意图

图3本发明实施例中使用本发明技术方案时对原始数据进行处理的流程图

具体实施方式

为使本发明的目的、技术方案和优点更加清晰,下面将结合附图2对本发明做进一步的解释说明,该实施例不构成对本发明实施例的限定。

本发明实施例以nginx服务器应用为例来说明。

nginx在进行https协议传输数据的过程中,首先在握手过程中与客户机协商加密采用的算法以及相应的密钥、初始向量等信息。在采用本文设计的新i/o流程后,在握手过程中需要根据协议结果,通过新提供的数据发送的控制接口,设置相应的算法、密钥、初始向量等信息。

nginx将客户端的数据请求直接通过api交给新型硬件,当然还包括协商好的密钥和一些初始化信息。在硬件驱动层需要对请求数据进行分段和预留空间,即根据协商的加密算法对分段数据处理过程中的添加explicitiv预留出16字节存储空间、mac值计算预留出48字节存储空间,同时为字节填充操作预留相应的存储空间。

调用硬件引擎开始工作,对每个分段数据分别计算mac值,并将mac值填充到预留的对应空间,完成mac操作后的数据分段可以调用添加随机数模块在对应的预留空间添加explicitiv,而不用等待所有的数据全部做完mac操作之后再做加密之前的字符填充和随机数的添加。同样,完成添加随机数的数据段可以根据协商的加密算法中规定的加密数据长度要求完成字符填充。最后,数据加密模块会对用硬件完成ssl数据处理的数据请求聚合加密,这样硬件完成了它所有的功能,中断返回到上层应用。

本发明将服务器的ssl和加密请求数据一次性发送给硬件,而不是用mac运算单位16kb传送数据,因此在传送数据给硬件时,一次数据请求只产生一次用户态和内核态的切换。在硬件内部,各个模块之间是连续不断地工作的,不会产生之前设计中出现的频繁的上下文切换的开销。另外,模块之间流水线的工作方式和硬件模块的异步并发设计都使得新硬件能够更好地胜任卸载ssl协议的任务。

以上所述实施例并不用以限制本发明,凡在本发明的原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

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