首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

一种利用请求/数据聚合提高WebServer的https应用性能的方法 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:重庆大学

摘要:本发明公开了一种利用请求数据聚合提高WebServer的https应用性能的方法,将上层WebServer应用的多个加密请求进行请求聚合后,一次性下发给下层OpenSSL进行SSL数据处理,通过调用一次硬件加密引擎,完成多个请求加密操作;对于单个数据长度超过SSL最大源数据长度要求的加密请求,在OpenSSL层经过SSL数据处理后,对数据块进行数据聚合,通过调用一次硬件加密引擎,完成多个数据块加密操作。与传统https请求需要多次调用硬件引擎来完成加密操作对比,通过本发明公开的方法进行请求数据聚合后,可以有效的减少https加密过程中调用硬件的模式切换开销和上下文切换开销,提升了WebServer的https应用性能,硬件加密引擎的利用率也得到了提高。

主权项:一种利用请求聚合提高WebServer的https应用性能的方法,其特征在于,该方法包括:将上层WebServer应用的多个加密请求进行请求聚合后,一次性下发给下层OpenSSL进行SSL数据处理,通过调用一次硬件加密引擎,完成多个请求加密操作。

全文数据:一种利用请求数据聚合提高Webserver的https应用性能的方法技术领域[0001]本发明涉及信息安全技术领域,尤其涉及一种利用请求数据聚合提高Webserver的https应用性能的方法。背景技术[0002]为了保护敏感数据在传送过程中的安全,越来越多的政府、企业、银行开始部署基于SSL的https通信。安全套接层协议SSLSecureSocketLayer是使用公钥和私钥技术组合的安全网络通讯协议。SSL协议是Netscape推出的基于Web应用的安全协议,SSL协议指定了一种在应用程序协议如Http、Telenet、NMTP和FTP等和TCPIP协议之间提供数据安全性分层的机制,它为TCPIP连接提供数据加密、服务器认证、消息完整性以及可选的客户机认证,主要用于提高应用程序之间数据的安全性,对传送的数据进行加密和隐藏,使客户端服务器应用之间的通信不被攻击者窃听,确保数据在传送中不被改变,即确保数据的完整性。[0003]OpenSSL是一个开源代码的安全项目,目标是用强大的加密算法来实现安全的Socket层(SecureSocketsLayer,SSLv2v3和传输层的安全性(TransportLayerSeCUrity,TLSvl。它包含了完整的加密算法,数字签名算法及证书签名算法等。可以很好的保证数据的完整性、保密性和正确性。[0004]目前基于Webserver领域的硬件加解密系统的设计分为五个层次:Webserver应用层,OpenSSL层,CryptoDev层,硬件加解密驱动层,以及硬件加解密引擎层。如图1所示,其中Webserver应用层和OpenSSL层工作在用户空间。Webserver自身米用多线程方式维持系统负载均衡,监听用户的连接请求,并对客户端的请求做出响应。在处理客户端请求过程中,Webserver需要通过OpenSSL提供的加解密功能,完成用户的身份认证和安全检查等功能。启用https传输之后,Webserver将需要传输的数据通过OpenSSL进行SSL数据处理后再传输给客户端。OpenSSL将加解密请求和信息摘要请求发送给CryptoDevXryptoDev层和硬件驱动层工作在内核空间。CryptoDev将OpenSSL层下发的请求转换为硬件加解密驱动识别的请求发送给硬件加解密驱动。硬件加解密驱动将请求构造成硬件加解密引擎能够识别的数据结构,并将其填写到硬件加解密引擎的请求队列中。当硬件加解密引擎完成加解密或信息摘要操作后产生中断,异步返回结果。[0005]OpenSSL向上响应上层Web应用提交的各种加解密、信息摘要请求,向下通过与硬件驱动交互,实现硬件加解密引擎的调用和结果返回。[0006]上层Web应用将加解密请求下发给OpenSSL,OpenSSL对原始数据进行SSL数据处理后,将加解密请求下发给硬件,从而调用硬件加解密引擎实现加解密运算。若OpenSSL接收到的上层加解密请求中,原始数据大小超过SSL记录层最大源数据长度时,OpenSSL将以SSL最大源数据长度为单位将原始数据分割成多个数据块最后一个数据块可能小于SSL最大源数据长度),然后使用同步方式依次对每一个数据块进行压缩、MAC值计算以及封装处理,再将处理后的数据块下发到硬件驱动,调用硬件加密引擎进行相应的加解密运算。[0007]OpenSSL层分割及封装后的每一个数据块,通过调用硬件实现加解密操作都会涉及到内核态与用户态切换开销ModeSwitch和上下文切换开销ContextSwitch。包括以下切换开销:[0008]1用户态进程通过ioctl接口传递原始数据到内核驱动,ioctlctx-cfd,CIOCCRYPT,cryp,产生一次ModeSwitch;[0009]2内核提交请求给驱动之后,通过waitforO等待驱动执行完成,此时用户进程进入sleep状态,内核调度另外一个进程运行,产生一次ContextSwitch;[0010]3硬件异步执行加解密请求,执行完成之后产生中断,中断处理会产生一次ContextSwitch;[0011]4中断处理完成之后,通过complete〇函数通知用户进程该请求已经执行完成,内核会唤醒sleep状态的用户进程来完成后面的工作,这里产生一次ContextSwitch;[0012]5用户态进程提交的请求得到结果返回用户态,产生一次ModeSwitch。[0013]—个原始数据大小为nXSSL最大源数据长度的加解密请求,需要将其拆分为η个SSL最大源数据长度的数据块进行加密,每个数据块在运算过程中都会产生两次内核态与用户态切换开销ModeSwitch和上下文切换开销ContextSwitch,则传统技术方案存在如下缺陷:[0014]上层Webserver下发给OpenSSL的加密请求需要多次调用硬件引擎来完成加密操作,使得https加密过程中产生大量硬件的模式切换开销和上下文切换开销,降低了Webserver的https应用性能,造成硬件加密引擎的利用率下降。发明内容[0015]有鉴于此,本发明提供了一种利用请求数据聚合提高Webserver的https应用性能的方法,解决https加密过程中因多次调用硬件引擎完成加密操作而造成大量硬件切换开销的问题。[0016]本发明提供了如下方案:[0017]—种利用请求聚合提高Webserver的https应用性能的方法,该方法包括:将上层Webserver应用的多个加密请求进行请求聚合后,一次性下发给下层OpenSSL进行SSL数据处理,通过调用一次硬件加密引擎,完成多个请求加密操作。[0018]—种利用数据聚合提高Webserver的https应用性能的方法,该方法包括:对于单个数据长度超过SSL源数据长度要求的加密请求,在OpenSSL层经过SSL数据处理后,对数据块进行数据聚合,通过调用一次硬件加密引擎,完成多个数据块加密操作。[0019]进一步地,所述请求聚合的方法包括以下操作:[0020]a对上层Web应用接收到的每个加密请求,根据协商的加密算法,进行SSL数据处理预操作;[0021]b将经过SSL数据处理预操作后的多个请求进行聚合成为一个聚合加密请求,一次性下发给下层OpenSSL进行SSL数据处理。[0022]进一步地,所述SSL数据处理预操作具体为:[0023]a对数据长度不超过SSL源数据长度的加密请求,根据协商的加密算法,为SSL数据处理过程中的MC值计算、字节填充操作预留出相应的数据存储空间;[0024]b对数据长度超过SSL源数据长度的加密请求,按照SSL源数据长度大小进行分段;根据协商的加密算法,对每段数据SSL数据处理过程中的MC值计算、字节填充操作预留出相应的数据存储空间;将经过上述空间预留操作后的数据段进行聚合。[0025]进一步地,所述协商的加密算法在SSL数据处理过程中的MAC值计算、字节填充操作所需的数据存储空间为加密算法中设定的固定字节长度。[0026]进一步地,所述数据聚合的方法包括以下操作:[0027]a修改Webserver应用程序相关配置文件,使得Webserver应用程序可处理的SSL数据长度为ηXSSL源数据长度;[0028]b修改实现SSL数据写操作功能的函数,使得传递到SSL数据处理函数的数据长度为ηXSSL源数据长度;[0029]c修改写数据buffer的空间大小,支持聚合后的数据存储;[0030]d修改实现SSL数据处理功能的函数,按照SSL数据处理流程,对η段SSL源数据长度数据进行压缩、MAC值计算、添加MAC值、字节填充操作,再将这η段处理后的数据块进行聚合;[0031]e通过EVP封装的加密接口,将聚合后的nXSSL源数据长度数据一次下发给硬件进行数据加密操作;[0032]f将加密后的数据拆分成η段,并在每段数据前添加头部信息,通过SSL数据发送接口逐个发送η个TCP数据包。[0033]由此可见,本发明提供的一种利用请求数据聚合提高Webserver的https应用性能的方法,通过将上层Webserver应用的多个加密请求进行请求聚合,对在OpenSSL层经过SSL数据处理后的数据块进行数据聚合,通过调用一次硬件加密引擎,完成多个数据加密操作,减少了https加密过程中调用硬件的模式切换开销和上下文切换开销,提升了Webserver的https应用性能,进而提高了硬件加密引擎的利用率。附图说明[0034]图1基于Webserver领域的加解密硬件加速系统;[0035]图2为本发明实施例Nginx服务器应用的请求数据处理函数调用的流程图;[0036]图3为未使用本发明技术方案时对原始数据进行SSL数据处理的流程图;[0037]图4为本发明实施例中使用本发明技术方案时对原始数据进行数据聚合的流程图;[0038]图5为本发明实施例中使用本发明技术方案时对原始数据进行请求聚合的流程图。具体实施方式[0039]为使本技术领域的人员对本发明的目的、技术方案和优点理解更加清楚,下面将结合附图和实施例对本发明实施方式做进一步的描述,该实施例不构成对本发明实施例的限定。[0040]实施例:[0041]本发明实施例以nginx服务器应用为例来说明如何利用请求数据聚合提高Webserver的https应用性能。[0042]首先,以nginx为例,分析上层Webserver应用是如何通过OpenSSL对请求的原始数据进行SSL数据处理的。[0043]如图2所示,在nginx发送数据时,会调用ngx_output_chain函数发送缓存的https数据链,该函数会进一步调用ngx_ssl_send_chain函数来发送数据。而ngx_ssl_send_chain函数会调用ngx_ssl_write函数使用OpenSSL库中相关接口来对原始数据进行SSL数据加密和校验处理并将处理后的密文数据发送到客户端。[0044]ngx_ssl_send_chain函数会对发送的数据块大小进行相关的控制处理,具体如下:[0047]其中size用于控制传递到ngx_ssl_write〇函数中待进行SSL数据处理的数据大小。c-ssl-buffe;r_size在函数ngx_ssl_createngx_ssl_t*ssl,ngx_uint_tprotocols,void*data中被赋值:ssl-bufTer_size=NGX_SSL_BUFSIZE。[0048]NGX_SSL_BUFSIZE可以通过修改nginx·cfg中的配置参数ssl_buffer_size来设定,可以使得nginx传递到ssl3_write_byte函数的数据块大小增加到ηX2~14字节。[0049]但是当数据传输到do_SS13_Write函数后,数据块的大小会再次受到限制,使得实际进行ssl数据处理的数据大小不超过2~14字节,具体如下:[0051]do_ssl3_write〇函数会对原始数据进行SSL数据处理压缩、MAC计算、加密等操作),并将封装好的TCP数据包发送给客户端。下面将以ECDHE-RSA-AES256-SHA384加密套件为例对d〇_SS13_Write函数的详细过程进行分析,如图3所示,一个nX2~14字节的数据请求,需要分割为η个2~14字节大小的数据块,每个数据块都需要进行SSL数据处理操作。[0052]do_ssl3_write函数中具体SSL数据处理过程如下:[0053]1将ssl3_write_byte函数传递过来的原始数据进行memcpy到特定的地址中;[0054]2对原始数据进行MAC值计算,并将MAC结果添加到原始数据的后面;[0055]3调用RAND_bytes函数在原始数据前面添加explicitIV,并对explicitIV、原始数据、MAC整体进行Pading字节填充操作;[0056]4将上述处理后的数据块下发给硬件驱动,并调用硬件加密引擎进行加密计算;[0057]5再加密后的密文数据块前面添加TCP头部信息;[0058]6调用ssl3_write_pending函数发送TCP数据包。[0059]这η个数据块要依次串行完成上述操作,对下一个数据块的操作需要等待上一个数据块的所有操作完成才能开始,并且对每个2~14字节数据块都需要两次的模式切换开销和上下文切换开销。[0060]为减少硬件加密过程中不必要的开销,本发明提供了一种利用请求数据聚合提高Webserver的https应用性能的方法,以减少调用硬件的模式切换开销和上下文切换开销,提高了硬件加密引擎的利用率。[0061]本发明涉及到的数据聚合处理具体实现包括:[0062]1修改nginx服务器应用相关配置文件nginx.cfg,使得传递到ngx_ssl_write〇函数的数据长度为ηX2~14字节;[0063]2修改ssl3_write_byte函数,使得传递到do_ssl3_write函数的数据长度为nX2~14字节;[0064]3修改do_ssl3_write函数,按照SSL数据处理流程,对η段2~14字节数据进行压缩、MC值计算、添加MC值、字节填充操作,再将这η段处理后的数据块进行聚合;[0065]4修改写数据buffer的空间大小,支持聚合后的数据存储;[0066]5调用evp_cipher〇加密函数,将聚合后的nX2~14字节数据一次下发给硬件进行数据加密操作;[0067]6将加密后的数据分成η段,并在每段数据前添加TCP头部信息;[0068]7通过调用ssl3_write_pending函数逐个发送η个TCP数据包。[0069]基于以上说明,本发明将OpenSSL向硬件发送的加密数据块进行数据聚合。如图4所示,本发明对η个数据块进行MAC值计算,添加explicitIV和Pading字节填充,然后将经过上述处理的η个数据块聚合后一次性下发给下层硬件驱动,调用一次硬件引擎来同时完成η个数据块的加密计算。通过这样的数据聚合处理后,调用硬件时的模式切换开销和上下文切换开销减少到原来的1η,硬件加密引擎的利用率也得到了提高。[0070]本发明涉及到的请求聚合处理具体实现包括:[0071]1创建一个结构体用来存放请求聚合时每个请求对应的session信息;[0073]2对nginx接收到的每个加密请求,根据协商的加密算法,进行SSL数据处理预操作。下面以ECDHE-RSA-AES256-SHA384加密套件,具体操作包括:[0074]a对数据长度不超过2~14字节的加密请求,根据协商的加密算法,为SSL数据处理过程中的添加explicitIV预留出16字节存储空间、MAC值计算预留出48字节存储空间,同时为字节填充操作预留出相应的数据存储空间;[0075]b对数据长度超过SSL源数据长度的加密请求,按照2~14字节大小进行分段;根据协商的加密算法,对每段数据SSL数据处理过程中的添加explicitIV预留出16字节存储空间、MAC值计算预留出48字节存储空间,同时为字节填充操作预留出相应的数据存储空间;[0076]3将经过上述SSL数据处理预操作后的多个请求聚合成为一个聚合加密请求,一次性下发给下层OpenSSL进行SSL数据处理。具体包括:[0077]a对多个请求的分片数据分别进行MAC值计算,并将MAC值填充到预留的对应空间;[0078]b为每个数据块在对应的预留空间添加explicitIV;[0079]c根据协商的加密算法中规定的加密数据长度要求,对每个数据块进行字节填充到对应的预留空间。[0080]4将经过SSL数据处理的聚合加密请求一次性下发给底层硬件加密引擎来完成加密操作;[0081]5对加密后的聚合请求数据进行分片,根据之前创建的Session结构体中每个请求与session的对应信息,为每一个分片添加头部信息,通过SSL数据发送接口逐个发送TCP数据包给对应的客户端。[0082]基于以上说明,本发明将上层Webserver应用向OpenSSL发送的加密数据请求进行请求聚合。如图5所示,本发明对η个加密请求聚合后一次性下发给OpenSSL,对多个数据块进行MAC值计算,添加explicitIV和Pading字节填充,然后调用一次硬件引擎来同时完成η个加密请求数据块的加密计算。通过这样的请求聚合处理后,减少了https加密过程中调用硬件的模式切换开销和上下文切换开销,提升了Webserver的https应用性能,进而提高了硬件加密引擎的利用率。[0083]以上所述实施例并不用以限制本发明,凡在本发明的原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

权利要求:1.一种利用请求聚合提高Webserver的https应用性能的方法,其特征在于,该方法包括:将上层Webserver应用的多个加密请求进行请求聚合后,一次性下发给下层OpenSSL进行SSL数据处理,通过调用一次硬件加密引擎,完成多个请求加密操作。2.—种利用数据聚合提高Webserver的https应用性能的方法,其特征在于,该方法包括:对于单个数据长度超过SSL源数据长度要求的加密请求,在OpenSSL层经过SSL数据处理后,对数据块进行数据聚合,通过调用一次硬件加密引擎,完成多个数据块加密操作。3.—种实施权利要求1所述请求聚合的方法,其特征是,包括以下操作:a对上层Web应用接收到的每个加密请求,根据协商的加密算法,进行SSL数据处理预操作;b将经过SSL数据处理预操作后的多个请求进行聚合成为一个聚合加密请求,一次性下发给下层OpenSSL进行SSL数据处理。4.根据权利要求3所述的方法,其特征在于,所述SSL数据处理预操作具体为:a对数据长度不超过SSL最大源数据长度的加密请求,根据协商的加密算法,为SSL数据处理过程中的MC值计算、字节填充操作预留出相应的数据存储空间;b对数据长度超过SSL最大源数据长度的加密请求,按照SSL最大源数据长度大小进行分段;根据协商的加密算法,对每段数据SSL数据处理过程中的MAC值计算、字节填充操作预留出相应的数据存储空间;将经过上述空间预留操作后的数据段进行聚合。5.根据权利要求3所述的方法,其特征在于,所述协商的加密算法在SSL数据处理过程中的MC值计算、字节填充操作所需的数据存储空间为加密算法中设定的固定字节长度。6.—种实施权利要求2所述数据聚合的方法,其特征是,包括以下操作:a修改Webserver应用程序相关配置文件,使得Webserver应用程序可处理的SSL数据长度为ηXSSL最大源数据长度;b修改实现SSL数据写操作功能的函数,使得传递到SSL数据处理函数的数据长度为ηXSSL最大源数据长度;c修改写数据buffer的空间大小,支持聚合后的数据存储;d修改实现SSL数据处理功能的函数,按照SSL数据处理流程,对η段SSL最大源数据长度数据进行压缩、MAC值计算、添加MAC值、字节填充操作,再将这η段处理后的数据块进行聚合;e通过EVP封装的加密接口,将聚合后的ηXSSL最大源数据长度数据一次下发给硬件进行数据加密操作;f将加密后的数据拆分成η段,并在每段数据前添加头部信息,通过SSL数据发送接口逐个发送η个TCP数据包。

百度查询: 重庆大学 一种利用请求/数据聚合提高WebServer的https应用性能的方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。