CN112416525A - 设备驱动初始化方法、直接存储访问方法及相关装置 - Google Patents

设备驱动初始化方法、直接存储访问方法及相关装置 Download PDF

Info

Publication number
CN112416525A
CN112416525A CN202011362410.2A CN202011362410A CN112416525A CN 112416525 A CN112416525 A CN 112416525A CN 202011362410 A CN202011362410 A CN 202011362410A CN 112416525 A CN112416525 A CN 112416525A
Authority
CN
China
Prior art keywords
virtual machine
encrypted
identifier
hpa
information
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.)
Granted
Application number
CN202011362410.2A
Other languages
English (en)
Other versions
CN112416525B (zh
Inventor
姜新
应志伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN202011362410.2A priority Critical patent/CN112416525B/zh
Publication of CN112416525A publication Critical patent/CN112416525A/zh
Application granted granted Critical
Publication of CN112416525B publication Critical patent/CN112416525B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Abstract

本申请实施例提供一种设备驱动初始化方法、直接存储访问方法及相关装置,其中设备驱动初始化方法包括:获取加密虚拟机用于设备驱动初始化的初始化信息,初始化信息至少包括进行设备驱动初始化的DMA设备的设备标识;基于初始化信息生成配置信息,配置信息至少包括所述设备标识,加密虚拟机的虚拟机标识,以及加密内存页面对应的HPA,其中所述虚拟机标识与所述加密虚拟机的密钥相绑定;将所述配置信息发送给与所述DMA设备连接的IOMMU,以使IOMMU在与所述设备标识对应的数据项中配置所述虚拟机标识并建立所述虚拟机标识与所述HPA的对应关系。本申请实施例能为DMA设备能够直接、高效的与加密内存空间进行数据传输提供基础,提升DMA的传输效率。

Description

设备驱动初始化方法、直接存储访问方法及相关装置
技术领域
本申请实施例涉及虚拟机技术领域,具体涉及一种设备驱动初始化方法、直接存储访问方法及相关装置。
背景技术
通过虚拟化技术(Virtualization),主机可虚拟化出多台虚拟机(VirtualMachine,VM),从而高效利用主机的硬件资源;虚拟化出的虚拟机可在物理内存中分配虚拟机内存空间,每台虚拟机的虚拟机内存空间主要用于任务消耗及支持虚拟化。
为保护虚拟机内存空间中的虚拟机数据,可进一步利用安全虚拟化技术对部分或所有虚拟机的虚拟机内存空间进行加密,其中,被加密的虚拟机内存空间可称为加密内存空间,相应的虚拟机可称为加密虚拟机;在安全虚拟化技术下,当主机连接DMA(DirectMemory Access,直接存储访问)设备时,由于加密内存空间中的虚拟机数据处于加密状态,这将导致DMA设备无法直接、高效的与加密内存空间进行数据传输,因此如何提供改进方案,以为DMA设备能够直接、高效的与加密内存空间进行数据传输提供基础,成为了本领域技术人员亟需解决的技术问题。
发明内容
有鉴于此,本申请实施例提供一种设备驱动初始化方法、直接存储访问方法及相关装置,以为DMA设备能够直接、高效的与加密内存空间进行数据传输提供基础。
为实现上述目的,本申请实施例提供如下技术方案:
一种设备驱动初始化方法,应用于安全处理器,所述方法包括:
获取加密虚拟机用于设备驱动初始化的初始化信息,所述初始化信息至少包括进行设备驱动初始化的直接存储访问DMA设备的设备标识;
基于所述初始化信息生成配置信息,所述配置信息至少包括所述设备标识,所述加密虚拟机的虚拟机标识,以及所述加密虚拟机的加密内存页面对应的主机物理地址HPA;其中,所述加密内存页面中的数据以所述加密虚拟机的密钥加密,且所述虚拟机标识与所述加密虚拟机的密钥相绑定;
将所述配置信息发送给与所述DMA设备连接的输入输出内存管理单元IOMMU,以使所述IOMMU在与所述设备标识对应的数据项中配置所述虚拟机标识并建立所述虚拟机标识与所述HPA的对应关系。
本申请实施例还提供一种设备驱动初始化方法,应用于输入输出内存管理单元IOMMU,所述方法包括:
获取安全处理器发送的配置信息,所述配置信息至少包括:进行设备驱动初始化的直接存储访问DMA设备的设备标识,加密虚拟机的虚拟机标识,以及所述加密虚拟机的加密内存页面对应的主机物理地址HPA;其中,所述加密内存页面中的数据以所述加密虚拟机的密钥加密,且所述虚拟机标识与所述加密虚拟机的密钥相绑定;
确定与所述DMA设备的设备标识对应的数据项;
在所述数据项中配置所述加密虚拟机的虚拟机标识并建立所述虚拟机标识与所述HPA的对应关系。
本申请实施例还提供一种直接存储访问方法,基于上述所述的设备驱动初始化方法,所述直接存储访问方法应用于输入输出内存管理单元IOMMU,包括:
获取针对直接存储访问DMA设备的DMA请求;
确定所述DMA请求对应的主机物理地址HPA;
从所述DMA设备的数据项中,确定与所述HPA对应的虚拟机标识;
将所述HPA与所述虚拟机标识相结合,形成目标HPA,所述目标HPA中的加密标识的数值设置为表示加密的第一值;
利用所述目标HPA控制内存控制器,以使内存控制器基于与所述虚拟机标识绑定的密钥,在所述HPA对应的加密内存页面进行数据传输。
本申请实施例还提供一种设备驱动初始化装置,应用于安全处理器,所述设备驱动初始化装置包括:
初始化信息获取模块,用于获取加密虚拟机用于设备驱动初始化的初始化信息,所述初始化信息至少包括进行设备驱动初始化的直接存储访问DMA设备的设备标识;
配置信息生成模块,用于基于所述初始化信息生成配置信息,所述配置信息至少包括所述设备标识,所述加密虚拟机的虚拟机标识,以及所述加密虚拟机的加密内存页面对应的主机物理地址HPA;其中,所述加密内存页面中的数据以所述加密虚拟机的密钥加密,且所述虚拟机标识与所述加密虚拟机的密钥相绑定;
配置信息发送模块,用于将所述配置信息发送给与所述DMA设备连接的输入输出内存管理单元IOMMU,以使所述IOMMU在与所述设备标识对应的数据项中配置所述虚拟机标识并建立所述虚拟机标识与所述HPA的对应关系。
本申请实施例还提供一种设备驱动初始化装置,应用于输入输出内存管理单元IOMMU,所述设备驱动初始化装置包括:
配置信息获取模块,用于获取安全处理器发送的配置信息,所述配置信息至少包括:进行设备驱动初始化的直接存储访问DMA设备的设备标识,加密虚拟机的虚拟机标识,以及所述加密虚拟机的加密内存页面对应的主机物理地址HPA;其中,所述加密内存页面中的数据以所述加密虚拟机的密钥加密,且所述虚拟机标识与所述加密虚拟机的密钥相绑定;
数据项确定模块,用于确定与所述DMA设备的设备标识对应的数据项;
配置模块,用于在所述数据项中配置所述加密虚拟机的虚拟机标识并建立所述虚拟机标识与所述HPA的对应关系。
本申请实施例还提供一种直接存储访问装置,应用于输入输出内存管理单元IOMMU,所述直接存储访问装置包括:
DMA请求获取模块,用于获取针对直接存储访问DMA设备的DMA请求;
HPA确定模块,用于确定所述DMA请求对应的主机物理地址HPA;
虚拟机标识确定模块,用于从所述DMA设备的数据项中,确定与所述HPA对应的虚拟机标识;
目标HPA形成模块,用于将所述HPA与所述虚拟机标识相结合,形成目标HPA,所述目标HPA中的加密标识的数值设置为表示加密的第一值;
目标HPA利用模块,用于利用所述目标HPA控制内存控制器,以使内存控制器基于与所述虚拟机标识绑定的密钥,在所述HPA对应的加密内存页面进行数据传输。
本申请实施例还提供一种安全处理器,所述安全处理器被配置为执行如上述所述的应用于安全处理器的设备驱动初始化方法。
本申请实施例还提供一种输入输出内存管理单元IOMMU,所述IOMMU被配置为执行如上述所述的应用于IOMMU的设备驱动初始化方法,和/或,执行如上述所述的应用于IOMMU的直接存储访问方法。
本申请实施例还提供一种电子设备,包括如上述所述的安全处理器,以及如上述所述的输入输出内存管理单元IOMMU。
本申请实施例提供的设备驱动初始化方法中,安全处理器可获取加密虚拟机用于设备驱动初始化的初始化信息,所述初始化信息至少包括DMA设备的设备标识;从而,安全处理器基于所述初始化信息可生成配置信息,所述配置信息至少包括所述设备标识,所述加密虚拟机的虚拟机标识,以及所述加密虚拟机的加密内存页面对应的主机物理地址HPA,其中,所述加密内存页面中的数据以所述加密虚拟机的密钥加密,且所述虚拟机标识与所述加密虚拟机的密钥相绑定;进而,安全处理器可将所述配置信息发送给与所述DMA设备连接的IOMMU,以使所述IOMMU在与所述设备标识对应的数据项中配置所述虚拟机标识并建立所述虚拟机标识与所述HPA的对应关系。
可以看出,本申请实施例提供的设备驱动初始化方法中,在进行DMA设备的设备驱动初始化时,IOMMU可在安全处理器的控制下,在DMA设备的数据项中配置加密虚拟机的虚拟机标识,并建立所述虚拟机标识与加密虚拟机的加密内存页面的HPA的对应关系,从而在DMA设备与所述加密内存页面以DMA方式进行数据传输时,IOMMU可至少结合所述HPA与所述数据项中配置的虚拟机标识,形成新的目标HPA,进而内存控制器可基于目标HPA中的虚拟机标识,调用与所述虚拟机标识相绑定的密钥,对所述HPA的加密内存页面中的数据进行加解密,来实现与DMA设备进行直接交互,避免了需要先将加密内存页面中的数据解密后再存储到普通内存空间的过程,可实现DMA设备与加密内存空间直接、高效的数据传输,提升DMA传输效率。本申请实施例提供的设备驱动初始化方法,能够在DMA设备的设备驱动初始化过程中,在DMA设备的数据项中配置与加密虚拟机的密钥相绑定的虚拟机标识,从而为DMA设备能够直接、高效的与加密内存空间进行数据传输提供基础。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为基于虚拟化技术的云服务架构图;
图2为云服务场景的虚拟化技术架构图;
图3为安全虚拟化技术的系统架构示意图;
图4为目前的DMA示意图;
图5为本申请实施例提供的虚拟化技术架构示意图;
图6为本申请实施例提供的设备驱动初始化方法的流程图;
图7为IOMMU中设备表的示意图;
图8为本申请实施例提供的设备驱动初始化方法的另一流程图;
图9为本申请实施例提供的设备驱动初始化方法的再一流程图;
图10为本申请实施例提供的DMA方法的流程图;
图11为本申请实施例提供的形成目标HPA的示例图;
图12为本申请实施例提供的目标HPA的结构示例图;
图13为本申请实施例提供的IOMMU中加密地址控制装置的示例结构图;
图14为本申请实施例提供的内存控制器读写数据的示例图;
图15为本申请实施例提供的设备驱动初始化装置的框图;
图16为本申请实施例提供的设备驱动初始化装置的另一框图;
图17为本申请实施例提供的设备驱动初始化装置的再一框图;
图18为本申请实施例提供的直接存储访问装置的框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
虚拟化技术可应用于多种场景,特别的,随着云服务的发展,虚拟化技术在云服务这一场景中得到了越来越广泛的应用;为便于理解虚拟化技术,下面以基于虚拟化技术的云服务为例,对虚拟化技术进行介绍。
参照图1所示基于虚拟化技术的云服务可选架构,该云服务架构可以包括:云主机10,网络20,用户31至3n;
其中,云主机10为云服务提供方(如云服务厂商)部署在网络侧的用于提供云服务的主机设备(主机设备的形式可以是服务器);基于不同用户的需求,云主机可通过虚拟化技术为不同用户创建一台或多台虚拟机,例如,用户可以根据业务需求,请求云主机为用户创建适应其业务需求的多台虚拟机,从而用户可以在属于其的多台虚拟机上分别运行应用,以通过多台虚拟机运行的应用来协作完成用户特定的业务;
网络20可以认为是互联网,或者其他形式的具有通信功能的网络,云主机与用户之间通过网络实现通信和数据传输,本申请实施例并不限制网络20的具体网络形式;
用户31至3n为使用云服务的注册用户,其数量可以为多个,本申请实施例并不限制n的具体数值;在云服务场景下,每一个用户可以在云主机中拥有属于其的一台或多台虚拟机,以利用属于用户的虚拟机来完成用户特定的业务。
为便于进一步清楚的了解云服务场景的虚拟化技术,参照图2所示云服务场景的虚拟化技术架构,云主机可以包括:CPU(Central Processing Unit,中央处理器)11,内存控制器12,物理内存13;
其中,CPU 11可通过软件形式配置虚拟机管理器,在云服务场景下,虚拟机管理器可基于云主机获得的用户需求,为用户创建一台或多台虚拟机,所创建的虚拟机可由虚拟机管理器进行内存管理,如由虚拟机管理器管理虚拟机在物理内存13中的虚拟机内存空间,物理内存13的部分或全部空间可作为为虚拟机分配的虚拟机内存空间;
内存控制器12是控制物理内存13,并且使物理内存13与CPU 11之间交互数据的硬件。
随着云服务的广泛应用,越来越多的用户对于云服务的数据安全提出了更高的要求,而在图2所示的虚拟化技术架构中,云主机运行多个虚拟机且虚拟机的虚拟机数据未采取安全保护措施,这使得主机操作系统、虚拟机管理器等极容易获取虚拟机的数据(即虚拟机数据),造成用户数据的泄露;为提升虚拟机数据的安全性,安全虚拟化技术应运而生,安全虚拟化技术是可对虚拟机的虚拟机内存空间进行安全保护的虚拟化技术,通过安全虚拟化技术可对部分或所有虚拟机的虚拟机内存空间进行加密,而且不同虚拟机的虚拟机内存空间通过不同的密钥进行加密,即使虚拟机管理器、主机操作系统也无法访问密钥,从而防止物理主机、虚拟机管理器对虚拟机内存空间中的虚拟机数据的访问和篡改,提升了虚拟机数据的安全性;
作为一种示例说明,图3示出了安全虚拟化技术的系统架构示意图,结合图2和图3所示,图3所示系统架构相比于图2所示系统架构还可以包括:安全处理器14,以及内存控制器12中设置的密码协处理器15;其中,安全处理器14是安全虚拟化技术专门设置的负责虚拟机数据安全的处理器,密码协处理器15是内存控制器中用于实现对虚拟机内存空间进行加解密的器件;
在安全虚拟化技术中,安全处理器14可为不同虚拟机分配不同的密钥,并将虚拟机的密钥存储在内存控制器12中;在具体实现中,不同虚拟机可使用不同的虚拟机标识进行区分,安全处理器14为虚拟机分配的密钥可与虚拟机的虚拟机标识相绑定,从而内存控制器12可基于与虚拟机的虚拟机标识相绑定的密钥,对虚拟机的虚拟机内存空间进行加解密,以实现虚拟机与主机操作系统、以及不同虚拟机之间的数据安全隔离;虚拟机标识的一种形式例如ASID(Address Space ID,地址空间ID),其中ID为Identity document(身份标识号)的缩写;
由于可能并不是所有的虚拟机都被分配密钥,为便于说明,结合图3所示,本申请实施例将分配密钥的虚拟机称为加密虚拟机,加密虚拟机的虚拟机内存空间称为加密内存空间,加密内存空间中的内存页称为加密内存页面;而未分配密钥的虚拟机称为普通虚拟机,普通虚拟机的虚拟机内存空间称为普通内存空间,普通内存空间中的内存页称为普通内存页面;由图3可以看出,应用进程与普通虚拟机的数据存储在普通内存空间,加密虚拟机的数据存储在加密内存空间;
在一种可选实现中,关于物理内存中的内存页是否为加密内存页面,可通过内存页对应的虚拟机页表中PTE(Page Table Entry,页表项)的加密标识(c-bit)的数值进行区分,如当虚拟机页表中PTE的加密标识为第一值(第一值如1),则表示相应内存页为加密内存页面,而当虚拟机页表中PTE的加密标识为第二值(第二值如0),则表示相应内存页为普通内存页面。
基于上述说明,安全虚拟化技术的运作原理可以如下所示:当加密虚拟机启动时,安全处理器为加密虚拟机分配密钥,并将密钥与加密虚拟机的虚拟机标识相绑定;当存在针对内存页的数据读写操作时,如果内存页对应的c-bit为1,则表示内存页为加密内存页面,内存控制器中的密码协处理器利用与虚拟机标识相绑定的密钥进行内存页的数据读写,如果c-bit为0,则表示内存页为普通内存页面,内存控制器以明文方式读写内存页的数据。可见,在安全虚拟化技术中,由于加密虚拟机的密钥由安全处理器进行管理,主机操作系统不可能获取加密虚拟机的密钥,因此主机操作系统从加密内存空间中读取的数据为密文形式,这极大的提高了加密虚拟机的数据安全性;并且每个加密虚拟机启动时,都具有唯一的虚拟机标识(如ASID),安全处理器为不同虚拟机标识的加密虚拟机创建不同的密钥,这样加密虚拟机之间也不能读取彼此的数据,可实现虚拟机之间的数据隔离,提升虚拟机数据的安全性。
需要说明的是,上述虽然是以云服务场景为示例来说明虚拟化技术架构和安全虚拟化技术架构,但是上述说明的虚拟化技术架构和安全虚拟化技术架构也可适用于其他场景,云服务场景仅是一种可选场景。
本申请的发明人发现,在安全虚拟化技术的情境下,当主机(如云主机)连接能够进行DMA的DMA设备时,由于加密虚拟机的加密内存空间中的数据以密文形式存在,这将导致DMA设备无法直接、高效的与加密内存空间进行数据传输,下面将对此进行具体说明:
DMA技术是可使得与主机连接的外部设备不通过CPU(该外部设备特指具有DMA能力的DMA设备),即可直接与物理内存交换数据的接口技术;具体的,在虚拟化技术中,通过引入IOMMU(Input/Output Memory Management Unit,输入输出内存管理单元),虚拟机可以直接配置虚拟机的GPA(Guest Physical Address,虚拟机物理地址)到DMA设备中,当虚拟机发起DMA请求时,IOMMU负责把DMA设备中虚拟机的GPA转换为HPA(Host PhysicalAddress,主机物理地址),从而IOMMU可基于该HPA,使得DMA设备与物理内存以DMA方式进行数据传输;
而在安全虚拟化技术中,加密虚拟机的加密内存空间中的数据是加密的,当DMA设备与加密内存空间进行数据传输时,得到的数据为加密的数据,从而影响DMA技术的实施;因此,目前当加密虚拟机利用IOMMU来实现DMA传输时,加密虚拟机每次都需要利用内存控制器将加密内存空间中的数据解密后,再拷贝到普通内存空间中,从而基于普通内存空间中解密后的数据实现DMA;具体的,如图4所示:
①当加密虚拟机向IOMMU上的DMA设备发起DMA请求之前,加密虚拟机利用内存控制器将加密内存空间中的数据解密并读取出来;②加密虚拟机利用内存控制器,将读取的解密后数据拷贝到普通内存空间中;③加密虚拟机基于普通内存空间中解密的数据,向DMA设备发起DMA请求,DMA设备利用IOMMU实现与普通内存空间之间的数据传输。
通过上述介绍可以看出,在安全虚拟化技术下,由于加密虚拟机在加密内存空间中的数据为加密状态,加密虚拟机每次在向DMA设备发起DMA请求前,都需要将待传输的数据从加密内存空间中拷贝到普通内存空间,这无疑大大降低了DMA效率,存在DMA设备无法直接、高效的与加密内存空间进行数据传输的问题;为解决该问题,本申请的发明人经研究后提出改进的方案,以为DMA设备能够直接、高效的与加密内存空间进行数据传输提供基础,提升DMA的传输效率。
本申请的发明人发现,IOMMU的IO(输入输出)页表负责转换DMA设备进行DMA时的主机物理地址(HPA),然而由于IO页表是主机操作系统创建,因此在安全虚拟化技术下,IOMMU在转换HPA时并无法配置加密虚拟机的虚拟机标识(如ASID),这就导致DMA设备以DMA方式与加密内存空间进行数据传输时,内存控制器单纯以HPA并无法解密加密内存空间中的数据,致使加密虚拟机需要先将加密内存空间中的数据解密后再存储在普通内存空间中,才能实现DMA;
基于上述情况,本申请实施例考虑在DMA设备的设备驱动初始化时,由IOMMU在DMA设备的数据项中至少配置加密虚拟机的虚拟机标识,从而DMA设备以DMA方式与加密内存空间进行数据传输时,IOMMU能够将IO页表转换得到的HPA与所述虚拟机标识相结合,形成新的目标HPA,以使得内存控制器能够基于所述目标HPA中的虚拟机标识,调用与所述虚拟机标识绑定的密钥,对HPA对应的加密内存页面进行数据加解密,达到DMA设备与加密内存空间可实现直接、高效的数据传输的目的;
在此思路下,本申请实施例提供改进的设备驱动初始化方法,以在DMA设备的设备驱动初始化过程中,使得IOMMU能够在DMA设备的数据项中配置加密虚拟机的虚拟机标识,为DMA设备能够直接、高效的与加密内存空间进行数据传输提供基础;并且,提供相应的DMA方法,提升DMA的传输效率。
下面将对本申请实施例提供的设备驱动初始化方案,以及DMA方案进行详细介绍。
在可选实现中,图5示出了本申请实施例提供的可选的虚拟化技术架构示意图,如图5所示,该虚拟化技术架构基于安全虚拟化技术实现,具体可以包括:CPU11,内存控制器12,物理内存13,安全处理器14,IOMMU15,PCI(Peripheral Component Interconnect,外设部件互连标准)控制器16,DMA设备17,MMU(Memory Management Unit,内存管理单元)18;
CPU11,内存控制器12,物理内存13,安全处理器14,IOMMU15的基本介绍可参照前文相应部分的描述,下文将进一步说明这些部件在本申请实施例中的改进作用和关系;值得注意的是,为使得安全处理器能够控制IOMMU在DMA设备的数据项中配置加密虚拟机的虚拟机标识,本申请实施例在图5所示技术架构中还设置了安全处理器与IOMMU的交互接口,以使得安全处理器能够与IOMMU进行交互;
另外,DMA设备17作为主机连接的外部设备,IOMMU15可通过负责外设部件互连的PCI控制器16与DMA设备17连接,当然本申请实施例也可选用其他具备外设互连功能的器件,并不一定使用PCI控制器16;MMU18是负责处理CPU的内存访问请求的计算机硬件,它的功能包括虚拟内存管理、内存保护等,虚拟内存管理的作用主要是实现虚拟机虚拟地址(Guest Virtual Address,GVA)到主机物理地址(Host Physical Address,HPA)的转换等。
基于图5所示可选架构,在一种可选实现中,图6示出了本申请实施例提供的设备驱动初始化方法的可选流程,如图6所示,该流程可以包括:
步骤S10、加密虚拟机向安全处理器发送用于设备驱动初始化的初始化信息,所述初始化信息至少包括DMA设备的设备标识。
加密虚拟机在进行DMA设备的设备驱动初始化工作时,加密虚拟机可向安全处理器发起进行设备驱动初始化工作的请求,在本申请实施例中,加密虚拟机可向安全处理器发送用于设备驱动初始化的初始化信息,以触发后续的设备驱动初始化流程;在可选实现中,所述初始化信息可以包括所述DMA设备的设备标识,以标识具体进行设备驱动初始化的DMA设备,示例的,DMA设备的设备标识例如DMA设备的设备号(Device ID)等。
在进一步的可选实现中,为防止所述初始化信息被篡改,所述初始化信息中还可携带用于完整性校验的完整性校验数据,具体的,加密虚拟机可计算所述初始化信息的第一完整性校验数据(本申请实施例可将加密虚拟机计算的所述初始化信息的完整性校验数据,称为第一完整性校验数据),并在所述初始化信息中携带所述第一完整性校验数据。
需要说明的是,在虚拟化技术下,加密虚拟机运行于虚拟机模式,主机内存、安全处理器运行于主机模式;其中虚拟机模式可用来运行虚拟化的客户操作系统,在虚拟机模式下,部分指令将改变其特性以方便虚拟化实现;与虚拟机模式相对应的是主机模式,当CPU复位或者虚拟机模式退出之后,则处于主机模式,而主机内核通过VMRUN(虚拟机运行)指令可进入虚拟机模式;因此,在虚拟化技术下,加密虚拟机与安全处理器之间的交互,可通过加密虚拟机申请的加密内存页面进行,并且加密虚拟机在虚拟机模式下是以GPA访问加密内存页面,安全处理器在主机模式下是以HPA访问加密内存页面;从而,加密虚拟机向安全处理器发送数据是:加密虚拟机将数据写入GPA对应的加密内存页面,并由安全处理器读取HPA对应的加密内存页面中的数据来实现;
具体的,加密虚拟机在虚拟机模式下,可将所述初始化信息写入GPA对应的加密内存页面,然后加密虚拟机退出虚拟机模式,在进入主机模式后,安全处理器从HPA对应的加密内存页面中读取出初始化信息;需要说明的是,加密内存页面中的数据以加密虚拟机的密钥加密,因此加密虚拟机写入的初始化信息是加密状态的,而安全处理器读取的初始化信息是解密后的信息。
步骤S11、安全处理器基于所述初始化信息生成配置信息,所述配置信息至少包括所述设备标识,所述加密虚拟机的虚拟机标识,以及所述加密虚拟机的加密内存页面对应的HPA。
安全处理器在获取所述初始化信息后,可基于所述初始化信息生成配置信息,该配置信息用于在DMA设备的设备驱动初始化过程中,使得IOMMU在DMA设备的数据项中至少配置加密虚拟机的虚拟机标识。
可选的,安全处理器应告知IOMMU进行设备驱动初始化的DMA设备,因此所述配置信息中应携带DMA设备的设备标识;同时,本申请实施例在DMA设备的设备驱动初始化过程中,旨在使得DMA设备的数据项中至少配置加密虚拟机的虚拟机标识(如ASID),以便于DMA设备直接、高效的以DMA方式进行数据传输,因此所述配置信息中还应携带加密虚拟机的虚拟机标识;进一步,所述配置信息中还应携带加密虚拟机的加密内存页面对应的HPA,以使得后续进行DMA时,加密虚拟机的虚拟机标识与HPA存在结合的基础,可选的,所述HPA可以是加密虚拟机与安全处理器进行交互的加密内存页面对应的HPA;
基于上述描述,本申请实施例可在所述配置信息中携带包括DMA设备的设备标识,加密虚拟机的虚拟机标识,加密虚拟机的加密内存页面对应的HPA,其中,所述加密内存页面中的数据以所述加密虚拟机的密钥加密,且所述虚拟机标识与所述加密虚拟机的密钥相绑定。
在进一步的可选实现中,安全处理器在获取初始化信息后,可先校验初始化信息的完整性,在校验初始化信息完整的情况下,才执行步骤S11;具体的,如果初始化信息中携带第一完整性校验数据,安全处理器在获取所述初始化信息后,可计算初始化信息的第二完整性校验数据(为区分加密虚拟机计算的初始化信息的第一完整性校验数据,本申请实施例将安全处理器计算的初始化信息的完整性校验数据称为第二完整性校验数据),从而安全处理器可基于第二完整性校验数据与第一完整性校验数据,来校验初始化信息是否完整,如在第二完整性校验数据与第一完整性校验数据相等时,确定初始化信息完整,进入执行步骤S11,而在第二完整性校验数据与第一完整性校验数据不相等时,确定初始化信息不完整;
可选的,初始化信息的完整性校验数据例如初始化信息的摘要值,本申请实施例可通过哈希(hash)等算法计算初始化信息的摘要值,如第一完整性校验数据可以是加密虚拟机计算的初始化信息的第一摘要值,第二完整性校验数据可以是安全处理器计算的初始化信息的第二摘要值。
步骤S12、安全处理器将所述配置信息发送给IOMMU。
安全处理器生成所述配置信息后,可通过安全处理器与IOMMU的接口,将所述配置信息发送给与DMA设备连接的IOMMU。
步骤S13、IOMMU确定与所述DMA设备的设备标识对应的数据项。
步骤S14、IOMMU在所述数据项中配置所述加密虚拟机的虚拟机标识并建立所述虚拟机标识与所述HPA的对应关系。
IOMMU获取所述配置信息后,可基于配置信息中DMA设备的设备标识确定与所述设备标识对应的数据项,基于IOMMU确定的所述数据项,IOMMU可在所述数据项中记录配置信息中携带的加密虚拟机的虚拟机标识,并建立所述虚拟机标识与配置信息中携带的HPA的对应关系。
可选的,DMA设备的数据项例如IOMMU中设备表(Device Table)的设备表项(DTE,Device Table Entry),如图7所示,在IOMMU设计架构中,IOMMU内部具有设备表(DeviceTable),设备表中具有多项的设备表项(DTE,Device table entry),每一项设备表项保存IOMMU连接的一台外部设备的设备基本信息,并以设备标识(如设备号)进行索引;从而,IOMMU可从IOMMU中的设备表中查找与所述配置信息携带的设备标识对应的设备表项,在查找到的设备表项中配置所述加密虚拟机的虚拟机标识,并建立所述虚拟机标识与所述HPA的对应关系;
在一种示例中,以虚拟机标识为ASID为例,IOMMU可在查找到的设备表项中的保留字段中记录所述ASID,以实现在所述设备表项中配置加密虚拟机的虚拟机标识;当然,本申请实施例也可通过扩展设备表项的数据结构,来记录加密虚拟机的虚拟机标识,例如,通过扩展设备表项的字段,IOMMU可在扩展的字段中记录加密虚拟机的虚拟机标识;
需要说明的是,以设备表项作为DMA设备的数据项仅是一种可选实现,本申请实施例也可在IOMMU中设置其他的数据形式作为数据项,以实现配置加密虚拟机的虚拟机标识。
可以理解的是,在本申请实施例中,IOMMU是在安全处理器的控制下,在DMA设备的数据项(如设备表项)中配置虚拟机标识,因此数据项中的虚拟机标识仅安全处理器和IOMMU能够访问,即使主机操作系统也无法访问数据项中的虚拟机标识,可极大的保障数据项中虚拟机标识的安全性。
可选的,IOMMU在所述数据项中配置所述虚拟机标识之后,可以向安全处理器发送配置成功通知,以通知安全处理器成功在所述数据项中配置虚拟机标识,从而安全处理器可向加密虚拟机反馈表示配置成功的配置结果信息,以使得加密虚拟机确定DMA设备的设备驱动初始化成功;可以理解的是,由于安全处理器与加密虚拟机是通过加密内存页面进行交互,因此安全处理器可通过在加密内存页面中写入配置结果信息(加密状态),来向加密虚拟机进行反馈。
本申请实施例提供的设备驱动初始化方法中,安全处理器可获取加密虚拟机用于设备驱动初始化的初始化信息,所述初始化信息至少包括DMA设备的设备标识;从而,安全处理器基于所述初始化信息可生成配置信息,所述配置信息至少包括所述设备标识,所述加密虚拟机的虚拟机标识,以及所述加密虚拟机的加密内存页面对应的主机物理地址HPA,其中,所述加密内存页面中的数据以所述加密虚拟机的密钥加密,且所述虚拟机标识与所述加密虚拟机的密钥相绑定;进而,安全处理器可将所述配置信息发送给与所述DMA设备连接的IOMMU,以使所述IOMMU在与所述设备标识对应的数据项中配置所述虚拟机标识并建立所述虚拟机标识与所述HPA的对应关系。
可以看出,本申请实施例提供的设备驱动初始化方法中,在进行DMA设备的设备驱动初始化时,IOMMU可在安全处理器的控制下,在DMA设备的数据项中配置加密虚拟机的虚拟机标识,并建立所述虚拟机标识与加密虚拟机的加密内存页面的HPA的对应关系,从而在DMA设备与所述加密内存页面以DMA方式进行数据传输时,IOMMU可至少结合所述HPA与所述数据项中配置的虚拟机标识,形成新的目标HPA,进而内存控制器可基于目标HPA中的虚拟机标识,调用与所述虚拟机标识相绑定的密钥,对所述HPA的加密内存页面中的数据进行加解密,来实现与DMA设备进行直接交互,避免了需要先将加密内存页面中的数据解密后再存储到普通内存空间的过程,可实现DMA设备与加密内存空间直接、高效的数据传输,提升DMA传输效率。本申请实施例提供的设备驱动初始化方法,能够在DMA设备的设备驱动初始化过程中,在DMA设备的数据项中配置与加密虚拟机的密钥相绑定的虚拟机标识,从而为DMA设备能够直接、高效的与加密内存空间进行数据传输提供基础。
在进一步的可选实现中,图8示出了本申请实施例提供的设备驱动初始化方法的另一可选流程,图8所示流程相比于图6所示流程加入了初始化信息的完整性校验过程,并且安全处理器可基于完整性校验的不同结果执行不同的流程分支,图8所示流程步骤中与图6所示流程步骤中相同、类似的部分可以相互参照,如图8所示,该流程可以包括:
步骤S20、加密虚拟机向安全处理器发送初始化信息,所述初始化信息至少包括DMA设备的设备标识,以及加密虚拟机计算的所述初始化信息的第一完整性校验数据。
步骤S21、安全处理器计算所述初始化信息的第二完整性校验数据。
步骤S22、安全处理器基于所述第一完整性校验数据和所述第二完整性校验数据,校验所述初始化信息是否完整,若否,执行步骤S23,若是,执行步骤S25。
步骤S23、安全处理器向加密虚拟机反馈表示配置失败的第一配置结果信息。
安全处理器校验初始化信息不完整,说明初始化信息存在被篡改等情况,无法继续后续配置DMA设备的数据项的流程,此时安全处理器可向加密虚拟机反馈表示配置失败的第一配置结果信息,以使得加密虚拟机确定DMA设备的设备驱动初始化失败;在可选实现中,安全处理器可在主机模式下,将第一配置结果信息写入与加密虚拟机交互的加密内存页面,以实现向加密虚拟机反馈第一配置结果信息。
步骤S24、加密虚拟机基于第一配置结果信息,确定DMA设备的设备驱动初始化失败。
在可选实现中,所述第一配置结果信息可以包括配置失败的应答信息,加密虚拟机可基于第一配置结果信息中配置失败的应答信息,确定DMA设备的设备驱动初始化失败;可选的,加密虚拟机可在虚拟机模式下,从加密内存页面中读取第一配置结果信息,从而基于第一配置结果信息中配置失败的应答信息,确定DMA设备的设备驱动初始化失败。
在进一步的可选实现中,为防止第一配置结果信息存在被篡改的情况,安全处理器还可在第一配置结果信息中携带安全处理器计算的第三完整性校验数据,如安全处理器可计算第一配置结果信息对应的第三完整性校验数据,将第三完整性校验数据以及配置失败的应答信息携带在第一配置结果信息中并写入加密内存页面;从而,加密虚拟机在读取第一配置结果信息后,除基于配置失败的应答信息确定DMA设备的设备驱动初始化失败,还可基于第三完整性校验数据,校验第一配置结果信息是否完整,并在校验第一配置结果信息不完整时,加密虚拟机也可确定DMA设备的设备驱动初始化失败。
步骤S25、安全处理器基于所述初始化信息生成配置信息,所述配置信息至少包括所述设备标识,所述加密虚拟机的虚拟机标识,以及所述加密虚拟机的加密内存页面对应的HPA。
安全处理器在校验初始化信息完整的情况下,可基于初始化信息生成配置信息。
步骤S26、安全处理器将所述配置信息发送给IOMMU。
步骤S27、IOMMU确定与所述DMA设备的设备标识对应的数据项。
步骤S28、IOMMU在所述数据项中配置所述加密虚拟机的虚拟机标识并建立所述虚拟机标识与所述HPA的对应关系。
步骤S29、IOMMU向安全处理器发送配置成功通知。
IOMMU在所述数据项中配置(记录)加密虚拟机的虚拟机标识之后,IOMMU可向安全处理器发送配置成功通知,以通知安全处理器DMA设备的数据项配置成功。
步骤S30、安全处理器向加密虚拟机反馈表示配置成功的第二配置结果信息。
在DMA设备的数据项配置加密虚拟机的虚拟机标识的情况下,为使得后续加密虚拟机能够确定DMA设备的设备驱动初始化工作成功,安全处理器可向加密虚拟机反馈表示配置成功第二配置结果信息;在可选实现中,安全处理器可在主机模式下,将第二配置结果信息写入与加密虚拟机交互的加密内存页面,以实现向加密虚拟机反馈第二配置结果信息。
步骤S31、加密虚拟机基于第二配置结果信息,确定DMA设备的设备驱动初始化成功。
在可选实现中,所述第二配置结果信息可以包括配置成功的应答信息,加密虚拟机可基于第二配置结果信息中配置成功的应答信息,确定DMA设备的设备驱动初始化成功;可选的,加密虚拟机可在虚拟机模式下,从加密内存页面中读取第二配置结果信息,从而基于第二配置结果信息中配置成功的应答信息,确定DMA设备的设备驱动初始化成功。
在进一步的可选实现中,为防止第二配置结果信息存在被篡改的情况,安全处理器还可在第二配置结果信息中携带安全处理器计算的第四完整性校验数据,如安全处理器可计算第二配置结果信息对应的第四完整性校验数据,将第四完整性校验数据以及配置成功的应答信息携带在第二配置结果信息中并写入加密内存页面;从而,加密虚拟机在读取第二配置结果信息后,可基于第四完整性校验数据,校验第二配置结果信息是否完整,在校验第二配置结果信息完整时,加密虚拟机可基于配置成功的应答信息,确定DMA设备的设备驱动初始化成功;而加密虚拟机在校验第二配置结果信息不完整时,就算第二配置结果信息中的应答信息表示配置成功,此时由于第二配置结果信息存在被篡改可能,加密虚拟机确定DMA设备的设备驱动初始化失败。
在可选实现中,上述步骤S29可以是可选步骤,安全处理器可在校验初始化信息完整并向IOMMU发送配置信息后,默认IOMMU能够成功配置DMA设备的数据项,从而安全处理器可直接向加密虚拟机反馈表示配置成功的第二配置结果信息,如安全处理器可直接在HPA对应的加密内存页面写入加密的第二配置结果信息。
本申请实施例提供的设备驱动初始化方法中,加入了对初始化信息的完整性校验过程,安全处理器可在校验初始化信息不完整的情况下,直接向加密虚拟机反馈配置失败的第一配置结果信息,以使加密虚拟机确定设备驱动初始化失败;安全处理器在校验初始化信息完整的情况下,才控制IOMMU在DMA设备的数据项中配置加密虚拟机的虚拟机标识,并向加密虚拟机反馈配置成功的第二配置结果信息;本申请实施例通过引入初始化信息的完整性校验过程,可在保障初始化信息未篡改的情况下,准确实现DMA设备的数据项配置,为DMA设备能够直接、高效的与加密内存空间进行数据传输提供基础。进一步,加密虚拟机还可对第一配置结果信息或第二配置结果信息进行完整性校验,以在第一配置结果信息或第二配置结果信息未被篡改的情况下,准确确定DMA设备的设备驱动初始化结果。
在更进一步的可选实现中,加密虚拟机与安全处理器可通过加密内存页面进行交互,且加密虚拟机运行于虚拟机模式,安全处理器运行主机模式,相应的,图9示出了本申请实施例提供的设备驱动初始化方法的再一可选流程,如图9所示,该流程可以包括:
步骤S40、虚拟机模式下,加密虚拟机申请GPA对应的加密内存页面。
在虚拟机模式下,步骤S40可以是在加密虚拟机开始执行DMA设备的设备驱动初始化工作时执行,本申请实施例通过DMA设备的设备驱动初始化过程,旨在DMA设备的数据项中至少配置加密虚拟机的虚拟机标识。由于加密虚拟机运行于虚拟机模式,主机内核和安全处理器运行于主机模式,且加密虚拟机的虚拟机标识由安全处理器管理,因此在DMA设备的数据项中配置加密虚拟机的虚拟机标识需安全处理器进行参与,基于此,加密虚拟机需建立与安全处理器进行交互的数据通道;本申请实施例中,加密虚拟机可以申请加密内存空间中的加密内存页面,以作为加密虚拟机与安全处理器进行交互的数据通道,由于加密虚拟机运行于虚拟机模式,因此加密虚拟机是以GPA(虚拟机物理地址)申请对应的加密内存页面。
步骤S41、加密虚拟机将DMA设备的初始化信息加密后写入所述GPA对应的加密内存页面。
在加密虚拟机申请GPA对应的加密内存页面后,加密虚拟机可将DMA设备的初始化信息加密后,再写入所述GPA对应的加密内存页面,以使得GPA对应的加密内存页面保存加密的初始化信息;可选的,加密虚拟机可利用内存控制器,基于与加密虚拟机的虚拟机标识相绑定的密钥加密初始化信息。
在可选实现中,DMA设备的初始化信息可以至少包括DMA设备的设备标识、第一完整性校验数据等。进一步,由于加密虚拟机的虚拟机标识由安全处理器进行管理,因此本申请实施例还可在DMA设备的初始化信息中携带安全处理器的请求命令(该请求命令用于请求安全处理器进行后续处理),以便后续可由安全处理器控制IOMMU在DMA设备的数据项中配置加密虚拟机的虚拟机标识,即在一种可选实现中,DMA设备的初始化信息可以包括:DMA设备的设备标识,第一完整性校验数据,请求安全处理器处理的请求命令等。
可选的,加密虚拟机可按照预设的格式,在初始化信息中携带DMA设备的设备标识、第一完整性校验数据、安全处理器的请求命令等内容,并将初始化信息加密后写入所述GPA对应的加密内存页面。
步骤S42、加密虚拟机退出虚拟机模式,以进入主机模式。
步骤S43、主机模式下,主机内核获取所述GPA对应的HPA。
步骤S44、主机内核将所述HPA发送给安全处理器。
在虚拟机模式下,虚拟机是以GPA进行内存页面的交互,而在主机模式下,主机内核、安全处理器是以HPA进行内存页面的交互;因此在加密虚拟机退出虚拟机模式后,在主机模式下,主机内核需基于加密虚拟机申请的加密内存页面的GPA获取对应的HPA,以便主机、安全处理器可基于HPA在加密内存页面进行交互;在可选实现中,主机内核可通过查找加密虚拟机的虚拟机嵌套页表,来获取所述GPA对应的HPA,其中嵌套页表(Nested pagetable,NPT)为CPU架构中为实现内存虚拟化引入的装置,用于虚拟机物理地址(GPA)到主机物理地址(HPA)的转换。
主机内核在获取所述HPA后,可将所述HPA发送给安全处理器,由安全处理器进行后续处理;需要说明的是,由于加密虚拟机申请的加密内存页面中的数据为加密状态,因此主机内核无法篡改加密内存页面中的初始化信息,就算是主机内核篡改了HPA,安全处理器在后续也可通过初始化信息中的第一完整性校验数据,及时发现主机内核发送的HPA是不正确的,从而保障DMA设备的设备驱动初始化工作的正确性和安全性。
步骤S45、安全处理器从所述HPA对应的加密内存页面中读取解密后的初始化信息。
安全处理器获取主机内核发送的HPA后,可访问所述HPA对应的加密内存页面,从所述HPA对应的加密内存页面中读取出解密后的初始信息;可选的,由于加密虚拟机的密钥由安全处理器进行管理器,安全处理器可控制内存控制器,以加密虚拟机的密钥,对所述HPA对应的加密内存页面中加密的初始化信息进行解密后读取出来。
可选的,安全处理器在读取解密的初始化信息后,可基于初始化信息中携带的安全处理器的请求命令,触发后续流程,即该请求命令可用于触发安全处理器执行加密虚拟机发起的DMA设备的设备驱动初始化的后续流程,具体情况如下步骤所示。
步骤S46、安全处理器计算初始化信息的第二完整性校验数据。
步骤S47、安全处理器基于所述第一完整性校验数据和所述第二完整性校验数据,校验初始化信息是否完整,若否,执行步骤S48,若是,执行步骤S50。
安全处理器读取解密的初始化信息后,为防止所述初始化信息被篡改,安全处理器可计算初始化信息的第二完整性校验数据,从而安全处理器可基于第二完整性校验数据与初始化信息中携带的第一完整性校验数据,来校验初始化信息是否完整。
在可选实现中,安全处理器可将第一完整性校验数据与第二完整性校验数据进行比对,以校验初始化信息是否完整;如果第一完整性校验数据与第二完整性校验数据不相等,则校验初始化信息不完整,说明初始化信息被篡改过或者HPA不正确,安全处理器不能继续后续配置DMA设备的数据项的流程,此时安全处理器可通过执行S48,以在后续控制加密虚拟机确定DMA设备的设备驱动初始化工作失败;如果第一完整性校验数据与第二完整性校验数据相等,则校验初始化信息完整,安全处理器可通过执行步骤S50,以正常实现配置DMA设备的数据项。
步骤S48、安全处理器在HPA对应的加密内存页面写入加密的第一配置结果信息,所述第一配置结果信息包括表示配置失败的应答信息以及所述第一配置结果信息对应的第三完整性校验数据。
在安全处理器校验初始化信息不完整的情况下,为使得后续加密虚拟机能够确定DMA设备的设备驱动初始化工作失败,安全处理器可在与加密虚拟机交互的加密内存页面中写入第一配置结果信息,由于加密内存页面中的数据应处于加密状态,因此安全处理器在加密内存页面中写入的第一配置结果信息应是加密的;在本申请实施例中,由于DMA设备的数据项配置失败,因此此时表达DMA设备的配置结果的第一配置结果信息中应携带表示配置失败的应答信息,同时,为在后续能够校验第一配置结果信息的完整性,第一配置结果信息中还可携带安全处理器计算的该第一配置结果信息对应的第三完整性校验数据;由于安全处理器是以HPA进行页面访问,因此安全处理器是在HPA对应的加密内存页面写入上述加密的第一配置结果信息。
步骤S49、安全处理器控制主机内核执行虚拟机运行指令,返回虚拟机模式以运行加密虚拟机。
校验初始化信息不完整的情况下,需回退到加密虚拟机退出虚拟机模式的节点,以使得加密虚拟机确定DMA设备的设备驱动初始化工作失败,由于加密虚拟机运行在虚拟机模式,此时,安全处理器可控制主机内核通过执行VMRUN(虚拟机运行)指令,来返回虚拟机模式。可以理解的是,HPA对应的加密内存页面中的数据为加密状态,主机内核并无法读取和篡改,此时主机内核可在安全处理器的控制下,执行VMRUN(虚拟机运行)指令,来退出主机模式返回虚拟机模式。
需要说明的是,步骤S48和步骤S49是安全处理器在校验初始化信息不完整情况下的处理流程;而在安全处理器校验初始化信息完整的情况下,安全处理器可通过执行步骤S50,来实现正常配置DMA设备的数据项。
步骤S50、安全处理器将配置信息发送给IOMMU,所述配置信息至少包括DMA设备的设备标识,所述HPA以及加密虚拟机的虚拟机标识。
步骤S51、IOMMU确定与所述DMA设备的设备标识对应的数据项。
步骤S52、IOMMU在所述数据项中配置加密虚拟机的虚拟机标识并建立所述虚拟机标识与所述HPA的对应关系。
步骤S53、IOMMU向安全处理器发送配置成功通知。
步骤S54、安全处理器在HPA对应的加密内存页面写入加密的第二配置结果信息,所述第二配置结果信息包括表示配置成功的应答信息以及所述第二配置结果信息对应的第四完整性校验数据。
步骤S55、安全处理器控制主机内核执行虚拟机运行指令,返回虚拟机模式以运行加密虚拟机。
步骤S56、加密虚拟机从所述GPA对应的加密内存页面中读取解密后的配置结果信息。
基于上述流程,本申请实施例可在执行步骤S49之后(即DMA设备的数据项配置失败的情况下),和执行步骤S55之后(即DMA设备的数据项配置成功的情况下),通过主机内核执行VMRUN(虚拟机运行)指令,来返回虚拟机模式,进入到加密虚拟机上次退出虚拟机模式时的节点;在返回虚拟机模式之后,加密虚拟机需确定对DMA设备的设备驱动初始化工作是否成功,由于在本申请实施例中设备驱动初始化工作成功的标志之一是DMA设备的数据项配置成功,因此加密虚拟机可从所述GPA对应的加密内存页面中读取,安全处理器在主机模式下写入的配置结果信息;可以理解的是,在DMA设备的数据项配置失败的情况下,加密虚拟机读取出的是安全处理器写入的第一配置结果信息,在DMA设备的数据项配置成功的情况下,加密虚拟机读取出的是安全处理器写入的第二配置结果信息。
步骤S57、加密虚拟机计算读取出的配置结果信息对应的第五完整性校验数据,基于配置结果信息中应答信息判断DMA设备的数据项是否配置成功,且基于所述第五完整性校验数据,校验读取出的配置结果信息是否完整;若判断结果均为是,执行步骤S58,若判断结果存在任一否,执行步骤S59。
步骤S58、加密虚拟机确定DMA设备的设备驱动初始化成功。
步骤S59、加密虚拟机确定DMA设备的设备驱动初始化失败。
加密虚拟机在读取出加密内存页面中的配置结果信息后,可基于配置结果信息中的应答信息以及配置结果信息的完整性,判断DMA设备的设备驱动初始化工作是否成功;在本申请实施例中,配置结果信息中存在表示配置是否成功的应答信息,以及安全处理器计算的配置结果信息的完整性数据,从而加密虚拟机可直接基于配置结果信息中的应答信息判断DMA设备的数据项是否配置成功,并且加密虚拟机可计算配置结果信息对应的第五完整性校验数据,以基于第五完整性校验数据和配置结果信息中携带的完整性校验数据,校验配置结果信息是否完整;如果加密虚拟机基于应答信息确定DMA设备的数据项配置成功(即应答信息表示配置成功),且校验配置结果信息完整,则加密虚拟机可确定DMA设备的设备驱动初始化成功;如果加密虚拟机基于应答信息确定DMA设备的数据项配置失败(即应答信息表示配置失败),和/或,校验配置结果信息不完整,则加密虚拟机可确定DMA设备的设备驱动初始化失败。
在具体实现中,如果加密内存页面中写入的配置结果信息为第一配置结果信息,则由于第一配置结果信息中的应答信息表示配置失败,因此加密虚拟机无论比对第五完整性校验数据与第一配置结果信息中的第三完整性校验数据是否相等,则加密虚拟机均确定DMA设备的设备驱动初始化失败;
如果加密内存页面中写入的配置结果信息为第二配置结果信息,则由于第二配置结果信息中的应答信息表示配置成功,因此加密虚拟机需进一步比对第五完整性校验数据与第二配置结果信息中的第四完整性校验数据是否相等;如果第五完整性校验数据与第四完整性校验数据相等,则加密虚拟机可确定DMA设备的设备驱动初始化成功;如果第五完整性校验数据与第四完整性校验数据不相等,这可能是由于第二配置结果信息中的内容存在被篡改的情况,第二配置结果信息并不可靠,因此加密虚拟机可确定DMA设备的设备驱动初始化失败。
本申请实施例提供的设备驱动初始化方法,能够在DMA设备的设备驱动初始化过程中,在DMA设备的数据项中配置与加密虚拟机的密钥相绑定的虚拟机标识,从而为DMA设备能够直接、高效的与加密内存空间进行数据传输提供基础。
在DMA设备的数据项已配置加密虚拟机的虚拟机标识的情况下,本申请实施例提供相应的DMA方法,在可选实现中,图10示出了本申请实施例提供的DMA方法的可选流程,该方法流程可由IOMMU执行实现,如图10所示,该流程可以包括:
步骤S60、获取针对DMA设备的DMA请求。
加密虚拟机可向IOMMU连接的DMA设备发起DMA请求,以使得DMA设备与加密虚拟机的加密内存页面,使用DMA方式进行数据传输,此时,IOMMU可获取针对DMA设备的DMA请求。
步骤S61、确定所述DMA请求对应的HPA。
IOMMU在获取DMA请求后,可确定所述DMA请求对应的HPA,即DMA设备是在所述HPA的加密内存页面,以DMA方式进行数据传输。在可选实现中,IOMMU可通过查找IO页面,获取所述DMA请求对应的HPA。
步骤S62、从所述DMA设备的数据项中,确定与所述HPA对应的虚拟机标识。
在IOMMU已在DMA设备的数据项(如设备表项)配置加密虚拟机的虚拟机标识并与HPA建立对应关系的情况下,IOMMU基于步骤S61确定的HPA,可从所述DMA设备的数据项中,确定出与所述HPA对应的虚拟机标识;例如,IOMMU可从所述DMA设备的设备表项中,确定与所述HPA对应的虚拟机标识。
步骤S63、将所述HPA与所述虚拟机标识相结合,形成目标HPA,所述目标HPA中的加密标识的数值设置为表示加密的第一值。
IOMMU在确定所述HPA对应的虚拟机标识后,可将所述HPA与所述虚拟机标识相结合,形成新的目标HPA,IOMMU可利用该目标HPA,实现DMA设备与所述HPA对应的加密内存页面的数据传输;在本申请实施例中,目标HPA中的加密标识(c-bit)的数值可设置为第一值,以标识所述HPA对应的内存页面为加密状态的加密内存页面。
在进一步的可选实现中,IOMMU确定与所述HPA对应的虚拟机标识后,可判断所述虚拟机标识是否为空(如虚拟机标识的数值是否为0);若虚拟机标识为空,则不执行步骤S63,IOMMU可直接输出所述HPA;若虚拟机标识不为空,则IOMMU可将所述HPA与所述虚拟机标识相结合,形成目标HPA,并将目标HPA中的加密标识(c-bit)设置为第一值;具体过程可以如图11示例:
IOMMU遍历IO页表得到DMA请求对应的HPA,判断DMA设备的数据项中与所述HPA对应的ASID是否为0,若是,输出HPA,若否,结合所述HPA和所述ASID并设置c-bit的数值为1,输出目标HPA。
在一种示例中,以虚拟机标识为ASID为例,图12示出了目标HPA的示例结构可进行参照,当然,图12所示目标HPA的结构仅是示例性的,本申请实施例也可采用其他结构形式的能结合HPA,ASID和c-bit的目标HPA。
可选的,步骤S62和步骤63可由IOMMU中设置的加密地址控制装置实现,加密地址控制装置的示例结构可如图13所示,该加密地址控制装置通过将DTE中配置的ASID,与IO页表输出的HPA相结合,并设置c-bit的数值,可输出目标HPA。
步骤S64、利用所述目标HPA控制内存控制器,以使内存控制器基于与所述虚拟机标识绑定的密钥,在所述HPA对应的加密内存页面进行数据传输。
IOMMU在得到目标HPA后,可利用所述目标HPA对内存控制器进行控制,使得内存控制器基于与所述虚拟机标识绑定的密钥,在所述HPA对应的加密内存页面进行数据传输,实现DMA设备与加密内存页面直接、高效的数据传输,避免了加密虚拟机需要先将加密内存页面中的数据解密后再存储到普通内存空间的过程,提升了DMA的传输效率。
可选的,IOMMU可将所述目标HPA发送给内存控制器,以使得内存控制器基于与所述虚拟机标识绑定的密钥,在所述HPA对应的加密内存页面进行数据传输;在更为具体的可选实现中,DMA设备在所述HPA对应的加密内存页面的数据传输可以分为写数据和读数据的过程,可以理解的是,由于加密内存页面为加密状态,因此在写数据时,需要将数据以加密虚拟机的密钥加密后,写入加密内存页面,在读数据时,需要将加密内存页面中的数据以加密虚拟机的密钥解密后,再读取出来;
在一种示例中,如图14所示,在写数据时,内存控制器获取目标HPA后,可解析目标HPA,在判断目标HPA中的c-bit为第一值后,内存控制器可调用与ASID绑定的密钥,对数据进行加密后,写入目标HPA中HPA对应的加密内存页面;在读数据时,内存控制器获取目标HPA后,可解析目标HPA,在判断目标HPA中的c-bit为第一值后,内存控制器可从目标HPA中HPA对应的加密内存页面,读取出加密数据,使用与ASID绑定的密钥,对读取的加密数据进行解密后,传递给DMA设备。
在本申请实施例的一种实现中,本申请实施例可在IOMMU的设备表中,与DMA设备对应的设备表项中配置加密虚拟机的ASID,该ASID仅由安全处理器来控制写入,而对主机操作系统不可见,因此可提升设备表项中ASID的安全性;从而在DMA设备进行DMA时,IOMMU可查询IO页表得到HPA,将HPA与DMA设备的设备表项中配置的ASID相结合,并通过设置C-bit为第一值,来得到新的目标HPA,进而IOMMU可利用目标HPA,来控制内存控制器对加密内存页面的数据进行加解密,实现DMA设备直接、高效的与加密内存页面的数据传输,提升DMA的传输效率。
上文描述了本申请实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本申请实施例披露、公开的实施例方案。
下面从安全处理器的角度,对本申请实施例提供的设备驱动初始化装置进行介绍,下文描述的设备驱动初始化装置可以认为是,安全处理器为实现本申请实施例提供的设备驱动初始化方法,所需设置的功能模块;下文描述的设备驱动初始化装置的内容,可与上文描述的方法内容相互对应参照。
在可选实现中,图15示出了本申请实施例提供的设备驱动初始化装置的可选框图,该设备驱动初始化装置可应用于安全处理器,如图15所示,该设备驱动初始化装置可以包括:
初始化信息获取模块100,用于获取加密虚拟机用于设备驱动初始化的初始化信息,所述初始化信息至少包括进行设备驱动初始化的直接存储访问DMA设备的设备标识;
配置信息生成模块110,用于基于所述初始化信息生成配置信息,所述配置信息至少包括所述设备标识,所述加密虚拟机的虚拟机标识,以及所述加密虚拟机的加密内存页面对应的主机物理地址HPA;其中,所述加密内存页面中的数据以所述加密虚拟机的密钥加密,且所述虚拟机标识与所述加密虚拟机的密钥相绑定;
配置信息发送模块120,用于将所述配置信息发送给与所述DMA设备连接的输入输出内存管理单元IOMMU,以使所述IOMMU在与所述设备标识对应的数据项中配置所述虚拟机标识并建立所述虚拟机标识与所述HPA的对应关系。
可选的,所述初始化信息还包括:所述加密虚拟机计算的所述初始化信息的第一完整性校验数据;相应的,图16示出了本申请实施例提供的设备驱动初始化装置的另一可选框图,结合图15和图16所示,该设备驱动初始化装置还可以包括:
完整性校验模块130,用于在配置信息生成模块110基于所述初始化信息生成配置信息之前,计算所述初始化信息的第二完整性校验数据;基于所述第一完整性校验数据和所述第二完整性校验数据,校验所述初始化信息是否完整,若校验所述初始化信息完整,则使配置信息生成模块110进入执行所述基于所述初始化信息生成配置信息的步骤。
可选的,完整性校验模块130还可用于:若校验所述初始化信息不完整,向所述加密虚拟机反馈第一配置结果信息,其中,所述第一配置结果信息至少包括配置失败的应答信息,以使所述加密虚拟机确定所述DMA设备的设备驱动初始化失败。
可选的,所述第一配置结果信息还包括:所述安全处理器计算的所述第一配置结果信息对应的第三完整性校验数据,所述第三完整性校验数据用于所述加密虚拟机校验所述第一配置结果信息的完整性;其中,若所述加密虚拟机基于所述第三完整性校验数据,校验所述第一配置结果信息不完整,则所述加密虚拟机确定所述DMA设备的设备驱动初始化失败。
可选的,进一步结合图16所示,该设备驱动初始化装置还可以包括:
配置结果反馈模块140,用于若所述数据项中成功配置所述虚拟机标识,向所述加密虚拟机反馈第二配置结果信息,其中,所述第二配置结果信息至少包括配置成功的应答信息,以使所述加密虚拟机确定所述DMA设备的设备驱动初始化成功。
可选的,所述第二配置结果信息还包括:所述安全处理器计算的所述第二配置结果信息对应的第四完整性校验数据,所述第四完整性校验数据用于所述加密虚拟机校验所述第二配置结果信息的完整性;其中,若所述加密虚拟机确定应答信息表示配置成功,但基于所述第四完整性校验数据校验所述第二配置结果信息不完整,则所述加密虚拟机确定所述DMA设备的设备驱动初始化失败。
可选的,所述数据项中配置所述虚拟机标识的情况包括:获取所述IOMMU发送的配置成功通知,或,在校验所述初始化信息完整且将所述配置信息发送给所述IOMMU后,默认所述数据项中成功配置所述虚拟机标识。
可选的,所述加密虚拟机的虚拟机标识具体为所述加密虚拟机的地址空间身份标识号ASID,所述数据项具体为设备表中的设备表项DTE,其中,一项DTE用于记录IOMMU连接的一台外部设备的基本设备信息,并以外部设备的设备标识进行索引。
可选的,所述安全处理器与所述加密虚拟机通过所述加密内存页面进行交互;
其中,所述加密虚拟机运行于虚拟机模式,以虚拟机物理地址GPA访问所述内存加密内存页面,所述安全处理器运行于主机模式,以所述HPA访问所述内存加密内存页面,所述GPA与所述HPA通过嵌套页表NPT进行转换;并且,加密虚拟机通过退出虚拟机模式以进入主机模式,在主机模式下,安全处理器通过控制主机内核执行虚拟机运行指令,以返回虚拟机模式。
本申请实施例还提供一种安全处理器,该安全处理器可被配置为执行本申请实施例提供的安全处理器角度的设备驱动初始化方法,具体内容可参照上文相应部分的描述,此处不再进一步展开介绍。
下面从IOMMU的角度,对本申请实施例提供的设备驱动初始化装置进行介绍,下文描述的设备驱动初始化装置可以认为是,IOMMU为实现本申请实施例提供的设备驱动初始化方法,所需设置的功能模块;下文描述的设备驱动初始化装置的内容,可与上文描述的方法内容相互对应参照。
在可选实现中,图17示出了本申请实施例提供的设备驱动初始化装置的再一可选框图,该设备驱动初始化装置可应用于IOMMU,如图17所示,该设备驱动初始化装置可以包括:
配置信息获取模块200,用于获取安全处理器发送的配置信息,所述配置信息至少包括:进行设备驱动初始化的直接存储访问DMA设备的设备标识,加密虚拟机的虚拟机标识,以及所述加密虚拟机的加密内存页面对应的主机物理地址HPA;其中,所述加密内存页面中的数据以所述加密虚拟机的密钥加密,且所述虚拟机标识与所述加密虚拟机的密钥相绑定;
数据项确定模块210,用于确定与所述DMA设备的设备标识对应的数据项;
配置模块220,用于在所述数据项中配置所述加密虚拟机的虚拟机标识并建立所述虚拟机标识与所述HPA的对应关系。
可选的,所述数据项具体为设备表中的设备表项DTE,其中,一项DTE用于记录IOMMU连接的一台外部设备的基本设备信息,并以外部设备的设备标识进行索引;
相应的,数据项确定模块210,用于确定与所述DMA设备的设备标识对应的数据项包括:
从IOMMU中的设备表中查找与所述设备标识对应的DTE。
可选的,所述加密虚拟机的虚拟机标识具体为所述加密虚拟机的地址空间身份标识号ASID;
相应的,配置模块220,用于在所述数据项中配置所述加密虚拟机的虚拟机标识并建立所述虚拟机标识与所述HPA的对应关系,具体包括:
在所述设备标识对应的DTE中配置所述加密虚拟机的ASID并建立所述ASID与所述HPA的对应关系。
可选的,配置模块220,用于在所述设备标识对应的DTE中配置所述加密虚拟机的ASID,具体包括:
在所述DTE中的保留字段配置所述加密虚拟机的ASID,或者,在所述DTE中扩展的字段配置所述加密虚拟机的ASID。
可选的,本申请实施例提供的设备驱动初始化装置还可用于:向所述安全处理器发送配置成功通知。
下面从IOMMU的角度,对本申请实施例提供的直接存储访问装置进行介绍,下文描述的直接存储访问装置可以认为是,IOMMU为实现本申请实施例提供的直接存储访问方法,所需设置的功能模块;下文描述的直接存储访问装置的内容,可与上文描述的方法内容相互对应参照。
在可选实现中,图18示出了本申请实施例提供的直接存储访问装置的可选框图,该直接存储访问装置可应用于IOMMU,如图18所示,该直接存储访问装置可以包括:
DMA请求获取模块300,用于获取针对直接存储访问DMA设备的DMA请求;
HPA确定模块310,用于确定所述DMA请求对应的主机物理地址HPA;
虚拟机标识确定模块320,用于从所述DMA设备的数据项中,确定与所述HPA对应的虚拟机标识;
目标HPA形成模块330,用于将所述HPA与所述虚拟机标识相结合,形成目标HPA,所述目标HPA中的加密标识的数值设置为表示加密的第一值;
目标HPA利用模块340,用于利用所述目标HPA控制内存控制器,以使内存控制器基于与所述虚拟机标识绑定的密钥,在所述HPA对应的加密内存页面进行数据传输。
可选的,本申请实施例提供的直接存储访问装置还可用于:
在确定与所述HPA对应的虚拟机标识之后,判断所述虚拟机标识是否为空,若否,进入所述将所述HPA与所述虚拟机标识相结合,形成目标HPA的步骤,若是,输出所述HPA。
可选的,虚拟机标识确定模块320,用于从所述DMA设备的数据项中,确定与所述HPA对应的虚拟机标识,包括:
从所述DMA设备的设备表项中,确定与所述HPA对应的虚拟机标识。
本申请实施例还提供一种IOMMU,该IOMMU可被配置为执行本申请实施例提供的IOMMU角度的设备驱动初始化方法,或者,本申请实施例提供的IOMMU角度的DMA方法,具体内容可参照上文相应部分的描述,此处不再进一步展开介绍。
本申请实施例还提供一种电子设备,该电子设备例如云主机,该电子设备可以包括上述所述的安全处理器和IOMMU,该电子设备的可选结构可如图5所示,此处不再进一步展开介绍。
虽然本申请实施例披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。

Claims (23)

1.一种设备驱动初始化方法,其特征在于,应用于安全处理器,所述方法包括:
获取加密虚拟机用于设备驱动初始化的初始化信息,所述初始化信息至少包括进行设备驱动初始化的直接存储访问DMA设备的设备标识;
基于所述初始化信息生成配置信息,所述配置信息至少包括所述设备标识,所述加密虚拟机的虚拟机标识,以及所述加密虚拟机的加密内存页面对应的主机物理地址HPA;其中,所述加密内存页面中的数据以所述加密虚拟机的密钥加密,且所述虚拟机标识与所述加密虚拟机的密钥相绑定;
将所述配置信息发送给与所述DMA设备连接的输入输出内存管理单元IOMMU,以使所述IOMMU在与所述设备标识对应的数据项中配置所述虚拟机标识并建立所述虚拟机标识与所述HPA的对应关系。
2.根据权利要求1所述的设备驱动初始化方法,其特征在于,所述初始化信息还包括:所述加密虚拟机计算的所述初始化信息的第一完整性校验数据;
在基于所述初始化信息生成配置信息之前,所述方法还包括:
计算所述初始化信息的第二完整性校验数据;
基于所述第一完整性校验数据和所述第二完整性校验数据,校验所述初始化信息是否完整,若校验所述初始化信息完整,进入执行所述基于所述初始化信息生成配置信息的步骤。
3.根据权利要求2所述的设备驱动初始化方法,其特征在于,还包括:
若校验所述初始化信息不完整,向所述加密虚拟机反馈第一配置结果信息,其中,所述第一配置结果信息至少包括配置失败的应答信息,以使所述加密虚拟机确定所述DMA设备的设备驱动初始化失败。
4.根据权利要求3所述的设备驱动初始化方法,其特征在于,所述第一配置结果信息还包括:所述安全处理器计算的所述第一配置结果信息对应的第三完整性校验数据,所述第三完整性校验数据用于所述加密虚拟机校验所述第一配置结果信息的完整性;其中,若所述加密虚拟机基于所述第三完整性校验数据,校验所述第一配置结果信息不完整,则所述加密虚拟机确定所述DMA设备的设备驱动初始化失败。
5.根据权利要求2所述的设备驱动初始化方法,其特征在于,还包括:
若所述数据项中成功配置所述虚拟机标识,向所述加密虚拟机反馈第二配置结果信息,其中,所述第二配置结果信息至少包括配置成功的应答信息,以使所述加密虚拟机确定所述DMA设备的设备驱动初始化成功。
6.根据权利要求5所述的设备驱动初始化方法,其特征在于,所述第二配置结果信息还包括:所述安全处理器计算的所述第二配置结果信息对应的第四完整性校验数据,所述第四完整性校验数据用于所述加密虚拟机校验所述第二配置结果信息的完整性;其中,若所述加密虚拟机确定应答信息表示配置成功,但基于所述第四完整性校验数据校验所述第二配置结果信息不完整,则所述加密虚拟机确定所述DMA设备的设备驱动初始化失败。
7.根据权利要求5所述的设备驱动初始化方法,其特征在于,所述数据项中配置所述虚拟机标识的情况包括:获取所述IOMMU发送的配置成功通知,或,在校验所述初始化信息完整且将所述配置信息发送给所述IOMMU后,默认所述数据项中成功配置所述虚拟机标识。
8.根据权利要求1所述的设备驱动初始化方法,其特征在于,所述加密虚拟机的虚拟机标识具体为所述加密虚拟机的地址空间身份标识号ASID,所述数据项具体为设备表中的设备表项DTE,其中,一项DTE用于记录IOMMU连接的一台外部设备的基本设备信息,并以外部设备的设备标识进行索引。
9.根据权利要求1-8任一项所述的设备驱动初始化方法,其特征在于,所述安全处理器与所述加密虚拟机通过所述加密内存页面进行交互;
其中,所述加密虚拟机运行于虚拟机模式,以虚拟机物理地址GPA访问所述内存加密内存页面,所述安全处理器运行于主机模式,以所述HPA访问所述内存加密内存页面,所述GPA与所述HPA通过嵌套页表NPT进行转换;并且,加密虚拟机通过退出虚拟机模式以进入主机模式,在主机模式下,安全处理器通过控制主机内核执行虚拟机运行指令,以返回虚拟机模式。
10.一种设备驱动初始化方法,其特征在于,应用于输入输出内存管理单元IOMMU,所述方法包括:
获取安全处理器发送的配置信息,所述配置信息至少包括:进行设备驱动初始化的直接存储访问DMA设备的设备标识,加密虚拟机的虚拟机标识,以及所述加密虚拟机的加密内存页面对应的主机物理地址HPA;其中,所述加密内存页面中的数据以所述加密虚拟机的密钥加密,且所述虚拟机标识与所述加密虚拟机的密钥相绑定;
确定与所述DMA设备的设备标识对应的数据项;
在所述数据项中配置所述加密虚拟机的虚拟机标识并建立所述虚拟机标识与所述HPA的对应关系。
11.根据权利要求10所述的设备驱动初始化方法,其特征在于,所述数据项具体为设备表中的设备表项DTE,其中,一项DTE用于记录IOMMU连接的一台外部设备的基本设备信息,并以外部设备的设备标识进行索引;
所述确定与所述DMA设备的设备标识对应的数据项包括:
从IOMMU中的设备表中查找与所述设备标识对应的DTE。
12.根据权利要求11所述的设备驱动初始化方法,其特征在于,所述加密虚拟机的虚拟机标识具体为所述加密虚拟机的地址空间身份标识号ASID;
所述在所述数据项中配置所述加密虚拟机的虚拟机标识并建立所述虚拟机标识与所述HPA的对应关系包括:
在所述设备标识对应的DTE中配置所述加密虚拟机的ASID并建立所述ASID与所述HPA的对应关系。
13.根据权利要求12所述的设备驱动初始化方法,其特征在于,所述在所述设备标识对应的DTE中配置所述加密虚拟机的ASID包括:
在所述DTE中的保留字段配置所述加密虚拟机的ASID,或者,在所述DTE中扩展的字段配置所述加密虚拟机的ASID。
14.根据权利要求10所述的设备驱动初始化方法,其特征在于,还包括:
向所述安全处理器发送配置成功通知。
15.一种直接存储访问方法,其特征在于,基于权利要求10-14任一项所述的设备驱动初始化方法,所述直接存储访问方法应用于输入输出内存管理单元IOMMU,包括:
获取针对直接存储访问DMA设备的DMA请求;
确定所述DMA请求对应的主机物理地址HPA;
从所述DMA设备的数据项中,确定与所述HPA对应的虚拟机标识;
将所述HPA与所述虚拟机标识相结合,形成目标HPA,所述目标HPA中的加密标识的数值设置为表示加密的第一值;
利用所述目标HPA控制内存控制器,以使内存控制器基于与所述虚拟机标识绑定的密钥,在所述HPA对应的加密内存页面进行数据传输。
16.根据权利要求15所述的直接存储访问方法,其特征在于,在确定与所述HPA对应的虚拟机标识之后,还包括:
判断所述虚拟机标识是否为空,若否,进入所述将所述HPA与所述虚拟机标识相结合,形成目标HPA的步骤,若是,输出所述HPA。
17.根据权利要求15或16所述的直接存储访问方法,其特征在于,所述从所述DMA设备的数据项中,确定与所述HPA对应的虚拟机标识包括:
从所述DMA设备的设备表项中,确定与所述HPA对应的虚拟机标识。
18.一种设备驱动初始化装置,其特征在于,应用于安全处理器,所述设备驱动初始化装置包括:
初始化信息获取模块,用于获取加密虚拟机用于设备驱动初始化的初始化信息,所述初始化信息至少包括进行设备驱动初始化的直接存储访问DMA设备的设备标识;
配置信息生成模块,用于基于所述初始化信息生成配置信息,所述配置信息至少包括所述设备标识,所述加密虚拟机的虚拟机标识,以及所述加密虚拟机的加密内存页面对应的主机物理地址HPA;其中,所述加密内存页面中的数据以所述加密虚拟机的密钥加密,且所述虚拟机标识与所述加密虚拟机的密钥相绑定;
配置信息发送模块,用于将所述配置信息发送给与所述DMA设备连接的输入输出内存管理单元IOMMU,以使所述IOMMU在与所述设备标识对应的数据项中配置所述虚拟机标识并建立所述虚拟机标识与所述HPA的对应关系。
19.一种设备驱动初始化装置,其特征在于,应用于输入输出内存管理单元IOMMU,所述设备驱动初始化装置包括:
配置信息获取模块,用于获取安全处理器发送的配置信息,所述配置信息至少包括:进行设备驱动初始化的直接存储访问DMA设备的设备标识,加密虚拟机的虚拟机标识,以及所述加密虚拟机的加密内存页面对应的主机物理地址HPA;其中,所述加密内存页面中的数据以所述加密虚拟机的密钥加密,且所述虚拟机标识与所述加密虚拟机的密钥相绑定;
数据项确定模块,用于确定与所述DMA设备的设备标识对应的数据项;
配置模块,用于在所述数据项中配置所述加密虚拟机的虚拟机标识并建立所述虚拟机标识与所述HPA的对应关系。
20.一种直接存储访问装置,其特征在于,应用于输入输出内存管理单元IOMMU,所述直接存储访问装置包括:
DMA请求获取模块,用于获取针对直接存储访问DMA设备的DMA请求;
HPA确定模块,用于确定所述DMA请求对应的主机物理地址HPA;
虚拟机标识确定模块,用于从所述DMA设备的数据项中,确定与所述HPA对应的虚拟机标识;
目标HPA形成模块,用于将所述HPA与所述虚拟机标识相结合,形成目标HPA,所述目标HPA中的加密标识的数值设置为表示加密的第一值;
目标HPA利用模块,用于利用所述目标HPA控制内存控制器,以使内存控制器基于与所述虚拟机标识绑定的密钥,在所述HPA对应的加密内存页面进行数据传输。
21.一种安全处理器,其特征在于,所述安全处理器被配置为执行如权利要求1-9任一项所述的设备驱动初始化方法。
22.一种输入输出内存管理单元IOMMU,其特征在于,所述IOMMU被配置为执行如权利要求10-14任一项所述的设备驱动初始化方法,和/或,执行如权利要求15-17任一项所述的直接存储访问方法。
23.一种电子设备,其特征在于,包括如权利要求21所述的安全处理器,以及如权利要求22所述的输入输出内存管理单元IOMMU。
CN202011362410.2A 2020-11-27 2020-11-27 设备驱动初始化方法、直接存储访问方法及相关装置 Active CN112416525B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011362410.2A CN112416525B (zh) 2020-11-27 2020-11-27 设备驱动初始化方法、直接存储访问方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011362410.2A CN112416525B (zh) 2020-11-27 2020-11-27 设备驱动初始化方法、直接存储访问方法及相关装置

Publications (2)

Publication Number Publication Date
CN112416525A true CN112416525A (zh) 2021-02-26
CN112416525B CN112416525B (zh) 2022-06-03

Family

ID=74843135

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011362410.2A Active CN112416525B (zh) 2020-11-27 2020-11-27 设备驱动初始化方法、直接存储访问方法及相关装置

Country Status (1)

Country Link
CN (1) CN112416525B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114238185A (zh) * 2021-12-20 2022-03-25 海光信息技术股份有限公司 直接存储访问及命令数据传输方法、装置及相关设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7421533B2 (en) * 2004-04-19 2008-09-02 Intel Corporation Method to manage memory in a platform with virtual machines
CN102521054A (zh) * 2011-12-15 2012-06-27 中国人民解放军国防科学技术大学 一种sun4v架构下的虚拟机DMA资源分配方法
US20170026171A1 (en) * 2015-07-20 2017-01-26 Intel Corporation Cryptographic protection of i/o data for dma capable i/o controllers
CN106445628A (zh) * 2015-08-11 2017-02-22 华为技术有限公司 一种虚拟化方法、装置和系统
CN109858288A (zh) * 2018-12-26 2019-06-07 中国科学院信息工程研究所 实现虚拟机安全隔离的方法与装置
CN111108487A (zh) * 2017-09-19 2020-05-05 微软技术许可有限责任公司 管理程序直接存储器访问
CN111966468A (zh) * 2020-08-28 2020-11-20 海光信息技术有限公司 用于直通设备的方法、系统、安全处理器和存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7421533B2 (en) * 2004-04-19 2008-09-02 Intel Corporation Method to manage memory in a platform with virtual machines
CN102521054A (zh) * 2011-12-15 2012-06-27 中国人民解放军国防科学技术大学 一种sun4v架构下的虚拟机DMA资源分配方法
US20170026171A1 (en) * 2015-07-20 2017-01-26 Intel Corporation Cryptographic protection of i/o data for dma capable i/o controllers
CN106445628A (zh) * 2015-08-11 2017-02-22 华为技术有限公司 一种虚拟化方法、装置和系统
CN111108487A (zh) * 2017-09-19 2020-05-05 微软技术许可有限责任公司 管理程序直接存储器访问
CN109858288A (zh) * 2018-12-26 2019-06-07 中国科学院信息工程研究所 实现虚拟机安全隔离的方法与装置
CN111966468A (zh) * 2020-08-28 2020-11-20 海光信息技术有限公司 用于直通设备的方法、系统、安全处理器和存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114238185A (zh) * 2021-12-20 2022-03-25 海光信息技术股份有限公司 直接存储访问及命令数据传输方法、装置及相关设备

Also Published As

Publication number Publication date
CN112416525B (zh) 2022-06-03

Similar Documents

Publication Publication Date Title
US9998464B2 (en) Storage device security system
US10409990B2 (en) Encryption and decryption method and apparatus in virtualization system, and system
US10262130B2 (en) System and method for providing cryptographic operation service in virtualization environment
US9317316B2 (en) Host virtual machine assisting booting of a fully-encrypted user virtual machine on a cloud environment
US8156503B2 (en) System, method and computer program product for accessing a memory space allocated to a virtual machine
CN102404314A (zh) 远程资源单点登录
US9948616B2 (en) Apparatus and method for providing security service based on virtualization
CN112433817B (zh) 信息配置方法、直接存储访问方法及相关装置
WO2008035450A1 (fr) Authentification par un identifiant ponctuel
CN111967065B (zh) 一种数据保护方法、处理器及电子设备
EP4332810A1 (en) Method for realizing virtualized trusted platform module, and secure processor and storage medium
US20030217278A1 (en) Computer, hard disk device, disk device sharing system composed of the plural said computers and shared hard disk device, and sharing method applied to the said sharing system
CN112416525B (zh) 设备驱动初始化方法、直接存储访问方法及相关装置
CN114238185A (zh) 直接存储访问及命令数据传输方法、装置及相关设备
CN111858094A (zh) 一种数据复制粘贴方法、系统及电子设备
CN112416526B (zh) 一种直接存储访问方法、装置及相关设备
CN111158857A (zh) 数据加密方法、装置、设备及存储介质
CN116450281A (zh) 访问处理方法、虚拟机标识配置方法、芯片及计算机设备
US11481759B2 (en) Method and system for implementing a virtual smart card service
CN114329574B (zh) 基于域管平台的加密分区访问控制方法、系统及计算设备
US20230403138A1 (en) Agentless single sign-on techniques
US20230267214A1 (en) Virtual trusted platform module implementation method and related apparatus
CN113485790B (zh) 一种虚拟机的重启方法、迁移方法和相关设备
CN117910057A (zh) 可信执行环境的运行方法、计算机架构系统、加密硬盘
CN116841691A (zh) 加密硬件的配置方法、数据机密计算方法及相关设备

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
GR01 Patent grant
GR01 Patent grant