CN116225614A - 一种安全密码模块分片虚拟化方法及*** - Google Patents
一种安全密码模块分片虚拟化方法及*** Download PDFInfo
- Publication number
- CN116225614A CN116225614A CN202310068698.XA CN202310068698A CN116225614A CN 116225614 A CN116225614 A CN 116225614A CN 202310068698 A CN202310068698 A CN 202310068698A CN 116225614 A CN116225614 A CN 116225614A
- Authority
- CN
- China
- Prior art keywords
- password
- module
- virtual
- request
- cryptographic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种安全密码模块分片虚拟化方法及***,该方法包括如下步骤:设备模拟,为虚拟机内部提供虚拟PCIE设备;地址翻译,将GPA转换为HPA,并且将DMA缓冲区固定在主机内存中,直通给虚拟机使用;虚拟密码模块内存队列初始化,为每一个虚拟密码模块的共享BAR空间中分配一组内存队列,并初始化其中的密码请求描述符;密码运算请求提交;密码运算请求优先级冲裁,实现基于优先级的密码请求任务调度;密码运算请求执行;密码运算请求完成通知。本发明具有便于部署便于移植的特性。
Description
技术领域
本发明涉及计算机I/O虚拟化技术领域,尤其涉及一种安全密码模块分片虚拟化方法及***。
背景技术
密码模块(cryptographic module)是2018年经全国科学技术名词审定委员会审定发布的计算机科学技术名词。定义为相对独立的软件或硬件模块,它完成密码运算功能并提供调用接口。硬件物理形态通常为PCI-E插卡式密码模块、USB密码模块、或集成在处理器SOC内的密码模块;以及非物理形态的软件密码模块。它以应用程序接口的方式为计算机应用***提供各种安全保密服务、包括数据加密、数字签名、信息完整性验证、身份认证和访问控制、抗抵赖等,主要应用于电子政务、电子商务、电子金融等行业。
但是,正是由于上述密码模块的使用方式决定了,它通常仅会给物理计算机提供应用程序接口,而无法直接在虚拟化环境中为各个虚拟机提供应用程序接口。为了满足多个虚拟机同时使用密码模块的需求,通过IO虚拟化的方式来复用有限的外部资源是一种高效的方式。从处理器角度看,密码模块是通过一组IO资源来进行访问的,对设备相关的虚拟化又被称为IO虚拟化。
目前,已有支持SRIOV的IO硬件虚拟化技术的密码模块,可以做到在虚拟机中使用密码模块,但对硬件要求较为苛刻,不但要PCI-E密码模块硬件支持SRIOV技术还要计算机平台支持IOMMU技术,并且也仅适用PCIE接口形态,对其他硬件接口的密码模块并不支持;此外也存在IO半虚拟化技术,如virtio技术框架来模拟密码模块,也会存在一定的效率损耗;最后,还存在采用非IO虚拟化的方式共享使用密码模块的场景——采用纯软件代理,如各个虚拟机通过网络数据报文的方式,将密码业务请求交给安装了密码模块的物理计算机来间接使用密码模块,意味着密码模块使用效率低、同时带来了一定软件开销及业务延迟。
随着用户在虚拟化平台中对密码设备使用需求的日益增长,为了在服务器中保证数据加密解密、高并发处理的性能,给数据中心密码模块性能提出了更高的要求。同时,服务器上密码模块需要一种更加高效的资源利用方式来进行统一管理,从而在有限的密码模块硬件运算资源需要被大量数据密集型任务进行分享时,尽可能保证所有服务的数据处理性能,体现密码模块设备的可扩展性。
VFIO-mdev是2016年之后Linux内核实现的一个虚拟设备(Mediated device)总线驱动模型,并在 VFIO 内核框架上进行了扩展,增加了对 mdev 这类虚拟设备的支持(mdev bus driver),从原来只支持从标准的硬件 PCI 设备和硬件 platform 设备获取透传信息,比如:PCI bar 空间,变成了既支持直接从硬件设备获取又可以从 mdev 设备驱动定义的虚拟设备接口来获取。这样,比如,当需要将一个 PCI 设备的 bar 空间作为资源切分的话,通过实现合适的 mdev 设备驱动,就可以将 bar 空间以 4KB(页面大小)为粒度,分别透传给不同虚机使用。
结合虚拟化的基本原理,不难发现,虚拟化为了保证安全性必须对敏感指令和特权指令进行模拟,对于一些影响性能但不会影响安全性的设备资源,其实应该更好地使用设备直通的思想来让虚拟机监控程序管理将这些性能相关的资源直接分配给虚拟机使用,对这些资源的操作的指令不使用指令模拟。而对于敏感指令资源,仍然使用指令的模拟。这样的设计思路,可以让虚拟设备在性能上取得接近于设备直通之后的虚拟设备的性能,同时兼具借鉴了设备模拟和半虚拟化方式下的借助虚拟机监控程序的管理模式下可以支持设备共享的功能。
分片虚拟化(Mediated Pass-Through)技术就是同时借鉴了设备模拟虚拟化和设备直传虚拟化的一种设备虚拟化的模式,其核心思想是将设备关键资源直通给客户虚拟机进行操作,同时让虚拟机监控程序对虚拟机需要访问的设备特权级资源进行模拟。
因此,本领域需要一种针对不同形态密码模块的通用IO虚拟化方法,将物理机中的真实密码模块共享给各个虚拟机使用,以便在虚拟化环境中使用密码模块,尤其解决上述列举密码模块虚拟化方式的通用性和性能问题。
发明内容
本发明的目的是提供一种安全密码模块分片虚拟化方法及***,以解决如何将物理机中的真实密码模块共享给各个虚拟机使用,以便在虚拟化环境中使用密码模块,尤其解决密码模块虚拟化方式的通用性和性能的问题。
本发明是采用以下技术方案实现的:一种安全密码模块分片虚拟化方法,包括如下步骤:
设备模拟,为虚拟机内部提供虚拟PCIE设备;
地址翻译,将GPA转换为HPA,并且将DMA缓冲区固定在主机内存中,直通给虚拟机使用;
虚拟密码模块内存队列初始化,为每一个虚拟密码模块的共享BAR空间中分配一组内存队列,并初始化其中的密码请求描述符;
密码运算请求提交;
密码运算请求优先级冲裁,实现基于优先级的密码请求任务调度;
密码运算请求执行;
密码运算请求完成通知。
进一步的,所述设备模拟具体为:通过区分特权敏感资源和性能敏感资源,有效地对特权敏感资源进行设备模拟和对性能敏感资源进行设备直通,为虚拟机内部提供一个完整的具有 PCIE 特性、有接近物理原生平台的性能、有设备共享特性的虚拟 PCIE 设备。
进一步的,所述地址翻译具体为:通过使用“vfio_pin_pages”地址转换,将 GPA转换为 HPA ,并且将DMA 缓冲区固定在主机内存中,直通给虚拟机使用。
进一步的,所述虚拟密码模块内存队列初始化具体为:为每一个虚拟密码模块的共享BAR空间中分配一组内存队列,并初始化其中的密码请求描述符,若同时运行多个虚拟机,则分配多组内存队列空间,同时按预设为每一个队列赋权值,该权值代表此队列的处理优先级。
进一步的,所述密码运算请求提交具体为:当虚拟机内用户有密码运算需要时,会通过应用程序调用虚拟密码模块驱动中的接口,填充共享BAR空间的密码请求描述符,并出发I/O指令。
进一步的,所述密码运算请求优先级冲裁具体为:当接收到请求时,首先获取该请求描述符所在队列的权值,该数值代表连续处理密码请求的数量,当处理个数超过该权值,则停止处理该队列上的密码请求,而轮换到下一待处理队列,以实现基于优先级的密码请求任务调度。
进一步的,所述密码运算请求执行具体为:当满足优先级仲裁的处理条件时,将解析密码请求描述符,描述符中含有密码请求数据的客户机物理内存地址,将该地址转换为宿主机的物理内存地址,并将该物理内存地址交给真实密码模块的驱动接口,进而交给真实密码模块的DMA引擎处理。
进一步的,所述密码运算请求完成通知具体为:每一次密码模块硬件处理完成有数据信息更新时,物理硬件首先会触发一个中断注入到物理机内核中,物理机操作***会更新相关寄存器,并且再向虚拟机内部注入一个中断,通知虚拟机中的虚拟密码模块驱动更新信息,进而将计算结果返回给应用程序。
一种安全密码模块分片虚拟化***,包括模拟模块、翻译模块、初始化模块、提交模块、仲裁模块、执行模块和通知模块,其中,所述模拟模块用以进行设备模拟,为虚拟机内部提供虚拟PCIE设备;所述翻译模块用以进行地址翻译,将GPA转换为HPA,并且将DMA缓冲区固定在主机内存中,直通给虚拟机使用;所述初始化模块用以进行虚拟密码模块内存队列初始化,为每一个虚拟密码模块的共享BAR空间中分配一组内存队列,并初始化其中的密码请求描述符;所述提交模块用以进行密码运算请求提交;所述仲裁模块用以进行密码运算请求优先级冲裁,实现基于优先级的密码请求任务调度;所述执行模块用以进行密码运算请求执行;所述通知模块用以进行密码运算请求完成通知。
本发明的有益效果在于:本发明基于 vfio-mdev 框架,差异于已存在的virtio半虚拟化方案--需要修改qemu源代码及Linux内核源码,在实现具有便于部署便于移植的特性;本发明中密码请求数据部分仅是在虚拟机中仅填充了一次,之后就是内存地址转换后交给真实密码模块的DMA引擎处理,整个过程没有数据拷贝过程,最大限度的保证了处理性能;本发明中设计了队列优先级仲裁机制,使各个虚拟机内的密码请求按权值比例使用真实硬件密码模块资源,以达到资源流量控制的效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1为本发明原理框图;
图2为地址转换原理图;
图3为龙芯SE分片虚拟化示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
实施例1:
参见图1,一种安全密码模块分片虚拟化方法,通过服务端虚拟化驱动软件(以下称分片虚拟化驱动),以创建可在多个虚拟机中共享的虚拟密码模块、提供给客户虚拟机使用;各个虚拟机可通过客户端驱动在用户层使用API库访问虚拟密码模块;客户虚拟机将运算请求发送值虚拟密码模块、运算请求会通过IO虚拟化方式汇聚集中到物理机分片虚拟化驱动中;通过运算请求优先级仲裁按先后顺序交由真实的密码模块处理,然后将运算结果返回给客户虚拟机。本发明提供了KVM云平台安全密码模块分片虚拟化方案,在物理机中分别提供虚拟密码模块(vCard)给多个虚拟机中的用户使用,密码模块与用户之间的关系不再是一对一,而是一对多。提高了密码模块的使用效率同时支持按不同的优先级将密码模块的运算资源分配给多个虚拟机。
总体来看,本申请基于 vfio-mdev 框架,为每一个虚拟机设计一个可以与 QEMU进行交互的接口,在所有虚拟机内部设计一整套 PCIE 特性的虚拟密码模块。将这个服务端虚拟化驱动软件实现在 Linux 内核模块中,简化物理机内核空间中文件***等软件栈;在不修改 QEMU源代码的前提下,尽可能地将性能相关资源直通进入虚拟机,将敏感资源进行设备模拟。
具体的,本发明的实施过程如下:
设备模拟。设备模拟是分片虚拟化驱动(图1中②vCard Server Driver)一个最基本的功能模块,通过区分特权敏感资源和性能敏感资源,有效地对特权资源进行设备模拟和对性能敏感资源进行设备直通,为虚拟机内部提供一个完整的具有 PCIE 特性、有接近物理原生平台的性能、有设备共享特性的虚拟 PCIE 设备,包括完整的配置空间和 BAR 空间读写功能。提供一个虚拟密码模块的所有功能,包括设备的创建和删除、DMA 的请求和具体寄存器操作等能力。
地址翻译。分片虚拟化驱动通过使用“vfio_pin_pages”地址转换,将 GPA 转换为HPA 并且将这一段 DMA 缓冲区固定在主机内存中,直通给虚拟机使用(参见图2)。不仅如此,“vfio_pin_pages”接口可以确保不同虚拟客户机之间的存储器的隔离性。这种设计可以从虚拟机监控程序层面,在翻译过程中防止某一个恶意虚拟机通过其虚拟 I/O 队列向映射分配给别的虚拟机使用的物理机 I/O 队列中填写恶意的命令。另外,在地址翻译这个过程不会允许一个虚拟机访问到其他虚拟机实际对应的物理机上的物理地址空间,保证了各个虚拟机内存访问的安全。以完成与客户机内相应的虚拟密码模块驱动(图1中③vCardClient Driver)BAR 空间的数据交互。
虚拟密码模块内存队列初始化。为每一个虚拟密码模块的共享BAR空间中分配一组内存队列,并初始化其中的密码请求描述符。若同时运行多个虚拟机,则分配多组内存队列空间,同时按预设为每一个队列赋权值,该权值代表此队列的处理优先级。
密码运算请求提交。当虚拟机内用户有密码运算需要时,会通过应用程序调用虚拟密码模块驱动中的接口,填充共享BAR空间的密码请求描述符,并出发I/O指令。当客户虚拟机中的 I/O 指令被提交到虚拟化监控程序中时,需要触发一个 MMIO 操作,而一个MMIO 操作需要触发“vm-exit”,进而调用分片虚拟化驱动中的相应接口,完成一次虚拟机密码请求提交。
密码运算请求优先级仲裁。分片虚拟化驱动接收到请求,首先获取该请求描述符所在队列的权值,该数值代表连续处理密码请求的数量。当处理个数超过该权值,则停止处理该队列上的密码请求,而轮换到下一待处理队列,以实现基于优先级的密码请求任务调度。
密码运算请求执行。当满足优先级仲裁的处理条件时,将解析密码请求描述符,描述符中含有密码请求数据的客户机物理内存地址,将该地址转换为宿主机的物理内存地址,并将该物理内存地址交给真实密码模块的驱动接口(图1中①Card Driver),进而交给真实密码模块的DMA引擎处理,通常是提交给密码模块硬件。
密码运算请求完成通知。每一次密码模块硬件处理完成有数据信息更新时,物理硬件首先会触发一个中断注入到物理机内核中,物理机操作***会更新相关寄存器,并且再向虚拟机内部注入一个中断,通知虚拟机中的虚拟密码模块驱动更新信息,进而将计算结果返回给应用程序。完成一个密码处理请求的生命周期。
参见图3,以下以龙芯安全SE为例对本发明做进一步说明,龙芯安全SE是目前国内唯一获得商用密码二级资质的CPU内置安全模块,符合国家商用密码行业标准。3A5000内置安全模块安全SE(Security Element)。它将密码计算技术和通用计算技术进行芯片级一体化融合设计,使其具有硬件级的密码算法处理能力和芯片级安全防护能力。此例将为其添加分片虚拟化功能,使其可被多个虚拟机用户共享使用。
步骤1:编写图3中的②vSE Server Driver,为虚拟机内部模拟一个完整的具有PCIE 特性、有接近物理原生平台的性能、有设备共享特性的虚拟 PCIE 设备,包括完整的配置空间和 BAR 空间读写功能。需注意的是SE安全模块为为cpu内部总线上模块,其驱动为图3中的①SE Driver。
步骤2:vSE虚拟模块BAR空间映射,编写图3中③vSE Client Driver,使其可与②vSE Server Driver读写同一片内存,便于后续两者之间的数据交互,以支持密码运算请求。
步骤3:宿主机加载vfio-mdev模块,启动qemu虚拟机并指定优先级权值,此时将在虚拟机内查看到图3中的②vSE Server Driver模拟出来的vSE虚拟模块。加载虚拟机内图3中③vSE Client Driver驱动模块,初始化vSE虚拟模块内存队列,并初始化其中的密码请求描述符。
步骤4:虚拟机业务产生密码运算需要,通过应用程序调用③vSE Client Driver中的接口,填充步骤3中的共享BAR空间的密码请求描述符,并出发I/O指令。当客户虚拟机中的 I/O 指令被提交到虚拟化监控程序中时,需要触发一个 MMIO 操作,而一个 MMIO 操作需要触发“vm-exit”,进而调用②vSE Server Driver中的相应接口,完成一次虚拟机密码请求提交。
步骤5:②vSE Server Driver接收到请求,首先获取该请求描述符所在队列的权值,比如该权值数值为3,即使该队列已堆积了7个密码请求描述符,此时根据优先级权值仅会取走3个描述符,待下一轮任务调度再取走最大3个描述符。
步骤6:解析步骤5密码请求描述符,描述符中含有密码请求数据的客户机物理内存地址,将该地址转换为宿主机的物理内存地址,并将该物理内存地址交给真实密码模块的驱动接口(图3中的①SE Driver),进而交给硬件SE安全密码模块。
步骤7:硬件SE安全密码模块处理完数据后,DMA引擎会将结果搬运到请求描述符中的物理内存地址中。SE硬件首先会触发一个中断注入到物理机内核中,物理机操作***会更新相关寄存器,并且再向虚拟机内部注入一个中断,通知虚拟机中的③vSE ClientDriver更新信息,进而将计算结果返回给应用程序。完成一个密码处理请求的生命周期。
本发明至少具有以下技术效果:
本发明基于 vfio-mdev 框架,差异于已存在的virtio半虚拟化方案--需要修改qemu源代码及Linux内核源码,在实现具有便于部署便于移植的特性;本发明中密码请求数据部分仅是在虚拟机中仅填充了一次,之后就是内存地址转换后交给真实密码模块的DMA引擎处理,整个过程没有数据拷贝过程,最大限度的保证了处理性能;本发明中设计了队列优先级仲裁机制,使各个虚拟机内的密码请求按权值比例使用真实硬件密码模块资源,以达到资源流量控制的效果。
需要说明的是,对于前述的实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某一些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例属于优选实施例,所涉及的动作并不一定是本申请所必须的。
上述实施例中,描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
Claims (9)
1.一种安全密码模块分片虚拟化方法,其特征在于,包括如下步骤:
设备模拟,为虚拟机内部提供虚拟PCIE设备;
地址翻译,将GPA转换为HPA,并且将DMA缓冲区固定在主机内存中,直通给虚拟机使用;
虚拟密码模块内存队列初始化,为每一个虚拟密码模块的共享BAR空间中分配一组内存队列,并初始化其中的密码请求描述符;
密码运算请求提交;
密码运算请求优先级冲裁,实现基于优先级的密码请求任务调度;
密码运算请求执行;
密码运算请求完成通知。
2. 如权利要求1所述的一种安全密码模块分片虚拟化方法,其特征在于,所述设备模拟具体为:通过区分特权敏感资源和性能敏感资源,有效地对特权敏感资源进行设备模拟和对性能敏感资源进行设备直通,为虚拟机内部提供一个完整的具有 PCIE 特性、有接近物理原生平台的性能、有设备共享特性的虚拟 PCIE 设备。
3. 如权利要求1所述的一种安全密码模块分片虚拟化方法,其特征在于,所述地址翻译具体为:通过使用“vfio_pin_pages”地址转换,将 GPA 转换为 HPA ,并且将DMA 缓冲区固定在主机内存中,直通给虚拟机使用。
4.如权利要求1所述的一种安全密码模块分片虚拟化方法,其特征在于,所述虚拟密码模块内存队列初始化具体为:为每一个虚拟密码模块的共享BAR空间中分配一组内存队列,并初始化其中的密码请求描述符,若同时运行多个虚拟机,则分配多组内存队列空间,同时按预设为每一个队列赋权值,该权值代表此队列的处理优先级。
5.如权利要求1所述的一种安全密码模块分片虚拟化方法,其特征在于,所述密码运算请求提交具体为:当虚拟机内用户有密码运算需要时,会通过应用程序调用虚拟密码模块驱动中的接口,填充共享BAR空间的密码请求描述符,并出发I/O指令。
6.如权利要求1所述的一种安全密码模块分片虚拟化方法,其特征在于,所述密码运算请求优先级冲裁具体为:当接收到请求时,首先获取该请求描述符所在队列的权值,该数值代表连续处理密码请求的数量,当处理个数超过该权值,则停止处理该队列上的密码请求,而轮换到下一待处理队列,以实现基于优先级的密码请求任务调度。
7.如权利要求1所述的一种安全密码模块分片虚拟化方法,其特征在于,所述密码运算请求执行具体为:当满足优先级仲裁的处理条件时,将解析密码请求描述符,描述符中含有密码请求数据的客户机物理内存地址,将该地址转换为宿主机的物理内存地址,并将该物理内存地址交给真实密码模块的驱动接口,进而交给真实密码模块的DMA引擎处理。
8.如权利要求1所述的一种安全密码模块分片虚拟化方法,其特征在于,所述密码运算请求完成通知具体为:每一次密码模块硬件处理完成有数据信息更新时,物理硬件首先会触发一个中断注入到物理机内核中,物理机操作***会更新相关寄存器,并且再向虚拟机内部注入一个中断,通知虚拟机中的虚拟密码模块驱动更新信息,进而将计算结果返回给应用程序。
9.一种安全密码模块分片虚拟化***,用以实现权利要求1~8任意一项所述的一种安全密码模块分片虚拟化方法,其特征在于,包括模拟模块、翻译模块、初始化模块、提交模块、仲裁模块、执行模块和通知模块,其中,所述模拟模块用以进行设备模拟,为虚拟机内部提供虚拟PCIE设备;所述翻译模块用以进行地址翻译,将GPA转换为HPA,并且将DMA缓冲区固定在主机内存中,直通给虚拟机使用;所述初始化模块用以进行虚拟密码模块内存队列初始化,为每一个虚拟密码模块的共享BAR空间中分配一组内存队列,并初始化其中的密码请求描述符;所述提交模块用以进行密码运算请求提交;所述仲裁模块用以进行密码运算请求优先级冲裁,实现基于优先级的密码请求任务调度;所述执行模块用以进行密码运算请求执行;所述通知模块用以进行密码运算请求完成通知。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310068698.XA CN116225614A (zh) | 2023-02-06 | 2023-02-06 | 一种安全密码模块分片虚拟化方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310068698.XA CN116225614A (zh) | 2023-02-06 | 2023-02-06 | 一种安全密码模块分片虚拟化方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116225614A true CN116225614A (zh) | 2023-06-06 |
Family
ID=86586669
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310068698.XA Pending CN116225614A (zh) | 2023-02-06 | 2023-02-06 | 一种安全密码模块分片虚拟化方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116225614A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117453352A (zh) * | 2023-12-21 | 2024-01-26 | 麒麟软件有限公司 | 一种Xen下的设备直通方法 |
-
2023
- 2023-02-06 CN CN202310068698.XA patent/CN116225614A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117453352A (zh) * | 2023-12-21 | 2024-01-26 | 麒麟软件有限公司 | 一种Xen下的设备直通方法 |
CN117453352B (zh) * | 2023-12-21 | 2024-04-09 | 麒麟软件有限公司 | 一种Xen下的设备直通方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101782398B1 (ko) | 보안된 가상 머신간 공유된 메모리 통신을 위한 기술 | |
US8832352B2 (en) | Hypervisor-driven protection of data from virtual machine clones | |
US8775715B2 (en) | Protection of data from virtual machine clones via paravirtualization | |
CN107924325B (zh) | 用于多级虚拟化的设备和方法 | |
Amiri Sani et al. | I/O paravirtualization at the device file boundary | |
CN103177212B (zh) | 一种基于轻量虚拟机监控器的计算机安全输入***与方法 | |
Perez et al. | Virtualization and hardware-based security | |
Hosseinzadeh et al. | Security in container-based virtualization through vTPM | |
CN106970823B (zh) | 高效的基于嵌套虚拟化的虚拟机安全保护方法及*** | |
CN112817780B (zh) | 一种实现安全与高性能进程间通信的方法和*** | |
CN107704308B (zh) | 虚拟平台vTPM管理***、信任链构建方法及装置、存储介质 | |
US11308230B2 (en) | Direct access to host memory for guests | |
US20220083347A1 (en) | Adding cycle noise to enclaved execution environment | |
CN105556473A (zh) | 一种i/o任务处理的方法、设备和*** | |
Nagesh et al. | A Survey on Security Aspects of Server Virtualization in Cloud Computing. | |
US11954198B2 (en) | Unifying hardware trusted execution environment technologies using virtual secure enclave device | |
CN116225614A (zh) | 一种安全密码模块分片虚拟化方法及*** | |
Wang et al. | CAGE: Complementing Arm CCA with GPU Extensions | |
Dalton et al. | Trusted virtual platforms: a key enabler for converged client devices | |
Chang et al. | Virtualization technology for TCP/IP offload engine | |
US9135046B1 (en) | Preventing host operating system from inspecting or modifying data received by hardware controller by moving host operating system into a virtual machine after boot up | |
US20220335109A1 (en) | On-demand paging support for confidential computing | |
Dai et al. | Design and verification of a lightweight reliable virtual machine monitor for a many-core architecture | |
Im et al. | On-Demand Virtualization for Post-Copy OS Migration in Bare-Metal Cloud | |
Aguiar et al. | Current techniques and future trends in embedded system's virtualization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |