【技术实现步骤摘要】
一种面向异构加解密计算资源的统一半虚拟化框架
[0001]本专利技术涉及信息安全领域,尤其涉及一种面向异构加解密计算资源的统一半虚拟化框架。
技术介绍
[0002]自从互联网开始蓬勃发展以来,隐私安全问题就始终是云计算中摆脱不了的困扰,如何避免隐私安全泄露给用户造成损失始终是当今云安全和网络安全领域中的重要课题。隐私安全问题大致可以分为三个重要的子课题:(1)窃听嗅探风险,即第三方可能可以截获通信数据;(2)身份伪造风险,即第三方可以冒充他人身份参与通信;(3)数据篡改风险,即第三方获取到通信数据后可能会进行恶意修改。隐私安全问题的有效解决高度依赖于加解密技术的发展,加解密技术可以具体分为对称加密算法、非对称加密算法、数字摘要算法等多种类型的算法,能够提供内容加密、身份认证、数据完整性校验等一系列功能,高性能、高安全性的加解密技术具有抵御恶意用户各种攻击的能力,对隐私安全问题的解决具有重大意义。但遗憾的是,随着5G技术的蓬勃发展、社交网络的大规模普及、攻击方法的日益多样化,加解密技术在承担更大压力的情况下对CPU资源等计算资源的开销也愈发繁重,产生了新的性能瓶颈。
[0003]随着硬件加速技术的发展,工程师们开始逐渐尝试利用GPU(Graphic Processing Unit)、FPGA(Field Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)等硬件来卸载加速加解密请求对CPU资源等计算资源的开销,这类硬件可以统 ...
【技术保护点】
【技术特征摘要】
1.一种面向异构加解密计算资源的统一半虚拟化框架,其特征在于,包括半虚拟化后端模块、虚拟机监控程序、驱动模块、半虚拟化前端模块,其中,所述半虚拟化后端模块接收来自所述虚拟机监控程序的控制面sess会话请求并在本地进程创建会话对象后返回会话ID;所述半虚拟化后端模块接收来自所述半虚拟化前端模块的数据面crypto加解密请求并构造本地crypto加解密请求;所述半虚拟化后端模块将本地crypto加解密请求下发给物理硬件设备并取回已处理完成的crypto加解密请求;所述驱动模块运行在虚拟机中,虚拟机完成启动后,代替虚拟机操作系统内核接管虚拟机加解密设备,并向上层暴露统一的接口;所述半虚拟化前端模块能够被虚拟机中的应用程序通过通用的接口对虚拟加解密设备的引擎进行加载并执行初始化流程;所述半虚拟化前端模块接收来自应用进程的加解密元数据并构造sess会话请求,通过控制面队列下发给所述虚拟机监控程序获取到会话对象;所述半虚拟化前端模块接收来自应用进程的加解密数据并构造crypto加解密请求,通过数据面队列下发给所述半虚拟化后端模块;所述半虚拟化前端模块监测crypto加解密请求的完成状态,在请求完成后批量取回并通知唤醒应用进程;所述半虚拟化前端模块基于OpenSSL提供的纤程机制提供加解密请求异步处理模式;所述半虚拟化前端模块包括引擎前端模块、引擎后端模块。2.如权利要求1所述的面向异构加解密计算资源的统一半虚拟化框架,其特征在于,所述半虚拟化后端模块为每个虚拟加解密设备维护一个控制面队列和一个数据面队列来实现与所述虚拟机监控程序和所述半虚拟化前端模块的通信,所述控制面队列和所述数据面队列均通过virtqueue实现;所述控制面队列传递包含加解密元数据的sess会话请求用于创建会话对象;所述数据面队列传递包含加解密数据的crypto加解密请求下发并监测请求完成状态;所述半虚拟化后端模块维护一个unix socket文件描述符用于和所述虚拟机监控程序建立通信链路,通过socket接口实现基于vhost
‑
user协议的消息传输;所述虚拟机监控程序使用宿主机大页内存为虚拟机提供虚拟内存支持,所述半虚拟化后端模块基于Linux文件描述符共享机制与所述虚拟机监控程序共同管理该大页内存,能够以零拷贝的方式在所述数据面队列上与所述半虚拟化前端模块交换crypto加解密请求,减少VM
‑
Exit次数;所述半虚拟化后端模块构建资源池,允许各个异构加解密资源将完整的物理硬件设备功能划分为更细粒度的资源组,从而实现多个异构加解密资源共同支持一个虚拟设备;所述半虚拟化后端模块实现顺序排序层,维护一个额外的中间队列按照加解密请求下发的顺序回收已完成的请求,强制保证多个异构加解密资源实现FIFO的要求,避免了乱序执行被应用程序观察到。3.如权利要求1所述的面向异构加解密计算资源的统一半虚拟化框架,其特征在于,所述引擎前端模块被实现为一个动态链接库,基于OpenSSL提供的引擎机制注册到OpenSSL的引擎库中并提供初始化入口函数,使得所述引擎前端模块能够被虚拟机中的应用程序加载为虚拟加解密设备的引擎,在此基础上接收应用程序下发的加解密元数据和加解密数据构建控制面sess会话请求和数据面crypto加解密请求。4.如权利要求1所述的面向异构加解密计算资源的统一半虚拟化框架,其特征在于,所述引擎后端模块在应用进程构造sess会话请求期望获取会话对象时,与所述虚拟机监控程
序和所述半虚拟化后端模块协作创建会话对象;所述引擎后端模块在本地维护会话对象的表单用于缓存,并允许其中的会话对象被具有相同加解密元数据的不同加解密流程所复用;基于DPDK提供的多进程内存共享机制,所述引擎前端模块、所述引擎后端模块分别实现为primary进程和secondary进程,能够具备完全相同的大页内存拓扑结构,进而能够在共享内存中创建数据传输队列并以零拷贝的形式传输crypto加解密请求;所述引擎后端模块在轮询各个数据传输队列获取到所述引擎前端模块下发的加解密请求后会先在本地进行缓存,当加解密请求累积到一定数量后再一起批处理下发;所述引擎后端模块作为守护进程,单进程单独负责轮询所有加解密请求的完成状态。5.一种面向异构加解密计算资源的统一半虚拟化方法,其特征在于,基于如权利要求1至4任一所述的面向异构加解密计算资源的统一半虚拟化框架,所述方法包括以下步骤:步骤1、虚拟机初始化时启动引擎后端模块;所述引擎后端模块在虚拟机中被实现为一个守护进程,在虚拟机初始化阶段负责执行资源的初始化和虚拟加解密设备的初始化;所述资源的初始化包括crypto加解密请求初始化;所述虚拟加解密设备的初始化包括所述引擎后端模块调用驱动模块提供的接口完成控制面队列和数据面队列两个virtqueue的创建,并通过VM
‑
Exit实现与半虚拟化后端模块的通信,并向其共享所述控制面队列和所述数据面队列;步骤2、客户机应用程序加载引擎前端模块作为引擎;客户机应用程序通过调用OpenSSL提供的接口对虚拟加解密设备的引擎进行加载并执行其所提供的初始化流程;被客户机应用程序加载的引擎即为被实现为动态链接库的所述引擎前端模块,初始化流程包括所述引擎前端模块主动与所述引擎后端模块建立连接,所述引擎后端模块创建数据传输队列,并将数据传输队列与crypto加解密请求一同共享给所述引擎前端模块;步骤3、应用进程初始化加解密元数据;客户机应用程序通过OpenSSL提供的纤程机制启动多个纤程fibre,并依次切换到各个纤程fib...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。