CN112416526A - 一种直接存储访问方法、装置及相关设备 - Google Patents

一种直接存储访问方法、装置及相关设备 Download PDF

Info

Publication number
CN112416526A
CN112416526A CN202011362417.4A CN202011362417A CN112416526A CN 112416526 A CN112416526 A CN 112416526A CN 202011362417 A CN202011362417 A CN 202011362417A CN 112416526 A CN112416526 A CN 112416526A
Authority
CN
China
Prior art keywords
dma
table entry
hpa
virtual machine
target
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
CN202011362417.4A
Other languages
English (en)
Other versions
CN112416526B (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 CN202011362417.4A priority Critical patent/CN112416526B/zh
Publication of CN112416526A publication Critical patent/CN112416526A/zh
Application granted granted Critical
Publication of CN112416526B publication Critical patent/CN112416526B/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表中配置与所述第一HPA对应的目标DMA表项,所述目标DMA表项至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识,以使内存控制器在所述加密虚拟机基于所述第一HPA发起DMA时,所述内存控制器基于所述目标DMA表项,调用与所述虚拟机标识绑定的密钥,对所述第一加密内存页面中的数据进行加解密。本申请实施例可使得加密虚拟机与DMA设备能够进行直接数据传输,提升DMA效率。

Description

一种直接存储访问方法、装置及相关设备
技术领域
本申请实施例涉及虚拟机技术领域,具体涉及一种直接存储访问方法、装置及相关设备。
背景技术
通过虚拟化技术(Virtualization),主机可虚拟化出多台虚拟机(VirtualMachine,VM),从而高效利用主机的硬件资源;虚拟化出的虚拟机可在物理内存中分配虚拟机内存空间,每台虚拟机的虚拟机内存空间主要用于任务消耗及支持虚拟化。
为保护虚拟机内存空间中的虚拟机数据,可进一步利用安全虚拟化技术对部分或所有虚拟机的虚拟机内存空间进行加密,其中,被加密的虚拟机内存空间可称为加密内存空间,相应的虚拟机可称为加密虚拟机;虚拟机本身具有完整的计算机系统,同样需要与外部设备(如硬盘,网卡,鼠标,键盘等)进行交互,而在安全虚拟化技术下,当加密虚拟机连接外部的DMA(Direct Memory Access,直接存储访问)设备时,由于加密虚拟机的加密内存空间中的数据处于加密状态,这导致加密虚拟机与DMA设备无法利用加密的数据进行直接数据传输,因此如何提供改进方案,以使得加密虚拟机与DMA设备能够进行直接数据传输,成为了本领域技术人员亟需解决的技术问题。
发明内容
有鉴于此,本申请实施例提供一种直接存储访问方法、装置及相关设备,以使得加密虚拟机与DMA设备能够进行直接数据传输。
为实现上述目的,本申请实施例提供如下技术方案:
一种直接存储访问方法,应用于安全处理器,所述方法包括:
获取配置请求信息,所述配置请求信息至少包括:加密虚拟机请求用于DMA的第一加密内存页面对应的第一HPA;
基于所述配置请求信息,在内存控制器的DMA表中配置与所述第一HPA对应的目标DMA表项,所述目标DMA表项至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识,以使内存控制器在所述加密虚拟机基于所述第一HPA发起DMA时,所述内存控制器基于所述目标DMA表项,调用与所述虚拟机标识绑定的密钥,对所述第一加密内存页面中的数据进行加解密。
本申请实施例还提供一种直接存储访问方法,应用内存控制器,所述方法包括:
获取DMA的地址信息,所述地址信息至少包括用于DMA的内存页面对应的HPA;
在DMA表中查找是否存在与所述HPA对应的目标DMA表项;
若DMA表中存在与所述HPA对应的目标DMA表项,基于所述目标DMA表项中记录的加密虚拟机的虚拟机标识,调用与所述虚拟机标识相绑定的所述加密虚拟机的密钥,对所述HPA对应的内存页面中的数据进行加解密。
本申请实施例还提供一种直接存储访问装置,应用于安全处理器,所述直接存储访问装置包括:
配置请求信息获取模块,用于获取配置请求信息,所述配置请求信息至少包括:加密虚拟机请求用于DMA的第一加密内存页面对应的第一HPA;
配置模块,用于基于所述配置请求信息,在内存控制器的DMA表中配置与所述第一HPA对应的目标DMA表项,所述目标DMA表项至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识,以使内存控制器在所述加密虚拟机基于所述第一HPA发起DMA时,所述内存控制器基于所述目标DMA表项,调用与所述虚拟机标识绑定的密钥,对所述第一加密内存页面中的数据进行加解密。
本申请实施例还提供一种直接存储访问装置,应用于内存控制器,所述直接存储访问装置包括:
地址信息获取模块,用于获取DMA的地址信息,所述地址信息至少包括用于DMA的内存页面对应的HPA;
查找模块,用于在DMA表中查找是否存在与所述HPA对应的目标DMA表项;
第一加解密模块,用于若DMA表中存在与所述HPA对应的目标DMA表项,基于所述目标DMA表项中记录的加密虚拟机的虚拟机标识,调用与所述虚拟机标识相绑定的所述加密虚拟机的密钥,对所述HPA对应的内存页面中的数据进行加解密。
本申请实施例还提供一种安全处理器,所述安全处理器被配置为执行如上述所述的直接存储访问方法。
本申请实施例还提供一种内存控制器,所述内存控制器被配置为执行如上述所述的直接存储访问方法。
本申请实施例还提供一种电子设备,包括如上述所述的安全处理器,以及如上述所述的内存控制器。
本申请实施例提供的直接存储访问方法中,安全处理器可获取配置请求信息,所述配置请求信息至少包括加密虚拟机请求用于DMA的第一加密内存页面对应的第一HPA;从而安全处理器可基于所述配置请求信息,在内存控制器的DMA表中配置与所述第一HPA对应的目标DMA表项,实现在目标DMA表项中至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识。基于安全处理器配置的目标DMA表项,内存控制器可在加密虚拟机基于第一HPA发起DMA时,基于所述目标DMA表项,调用与所述虚拟机标识绑定的密钥,对第一加密内存页面中的数据进行加解密,实现加密虚拟机与DMA设备能够基于第一加密内存页面进行直接数据传输,避免了加密虚拟机需要先将第一加密内存页面中的数据解密后存储到普通内存空间的过程,提升了DMA效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为基于虚拟化技术的云服务架构图;
图2为云服务场景的虚拟化技术架构图;
图3为安全虚拟化技术的系统架构示意图;
图4为目前DMA的示例图;
图5为本申请实施例提供的虚拟化技术架构示意图;
图6为本申请实施例提供的直接存储访问方法的流程图;
图7为本申请实施例提供的直接存储访问方法的另一流程图;
图8为DMA表的示例图;
图9为DMA表的另一示例图;
图10为本申请实施例提供的配置目标DMA表项的方法流程图;
图11为CPU架构中的UMC分布示例图;
图12为本申请实施例提供的直接存储访问方法的再一流程图;
图13为本申请实施例提供的直接存储访问方法的又一流程图;
图14为本申请实施例提供的DMA的地址信息的示例图;
图15为本申请实施例提供的直接存储访问方法的又另一流程图;
图16为本申请实施例提供的直接存储访问装置的框图;
图17为本申请实施例提供的直接存储访问装置的另一框图;
图18为本申请实施例提供的直接存储访问装置的再一框图;
图19为本申请实施例提供的直接存储访问装置的又一框图;
图20为本申请实施例提供的直接存储访问装置的又另一框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
虚拟化技术可应用于多种场景,特别的,随着云服务的发展,虚拟化技术在云服务这一场景中得到了越来越广泛的应用;为便于理解虚拟化技术,下面以基于虚拟化技术的云服务为例,对虚拟化技术进行介绍。
参照图1所示基于虚拟化技术的云服务可选架构,该云服务架构可以包括:云主机10,网络20,用户31至3n;
其中,云主机10为云服务提供方(如云服务厂商)部署在网络侧的用于提供云服务的主机设备(主机设备的形式可以是服务器);基于不同用户的需求,云主机可通过虚拟化技术为不同用户创建一台或多台虚拟机,例如,用户可以根据业务需求,请求云主机为用户创建适应其业务需求的多台虚拟机,从而用户可以在属于其的多台虚拟机上分别运行应用,以通过多台虚拟机运行的应用来协作完成用户特定的业务;
网络20可以认为是互联网,或者其他形式的具有通信功能的网络,云主机与用户之间通过网络实现通信和数据传输,本申请实施例并不限制网络20的具体网络形式;
用户31至3n为使用云服务的注册用户,其数量可以为多个,本申请实施例并不限制n的具体数值;在云服务场景下,每一个用户可以在云主机中拥有属于其的一台或多台虚拟机,以利用属于用户的虚拟机来完成用户特定的业务。
为便于进一步清楚的了解云服务场景的虚拟化技术,参照图2所示云服务场景的虚拟化技术架构,云主机可以包括:CPU(Central Processing Unit,中央处理器)11,内存控制器12,物理内存13;内存控制器例如UMC(Unified Memory controller,统一内存控制器);
其中,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可以看出,应用进程与普通虚拟机的数据存储在普通内存空间,加密虚拟机的数据存储在加密内存空间;
在一种可选实现中,关于物理内存中的内存页面是否为加密内存页面,可通过加密标识(c-bit)的数值进行区分,如当加密标识为第一值(第一值如1),则表示相应内存页面为加密内存页面,而当加密标识为第二值(第二值如0),则表示相应内存页面为普通内存页面。
基于上述说明,安全虚拟化技术的运作原理可以如下所示:当加密虚拟机启动时,安全处理器为加密虚拟机分配密钥,并将密钥与加密虚拟机的虚拟机标识相绑定;当存在针对内存页面的数据读写操作时,如果内存页面对应的c-bit为1,则表示内存页面为加密内存页面,内存控制器中的密码协处理器利用与虚拟机标识相绑定的密钥进行内存页面的数据读写,如果c-bit为0,则表示内存页面为普通内存页面,内存控制器以明文方式读写内存页面的数据。可见,在安全虚拟化技术中,由于加密虚拟机的密钥由安全处理器进行管理,主机操作系统不可能获取加密虚拟机的密钥,因此主机操作系统从加密内存空间中读取的数据为密文形式,这极大的提高了加密虚拟机的数据安全性;并且每个加密虚拟机启动时,都具有唯一的虚拟机标识(如ASID),安全处理器为不同虚拟机标识的加密虚拟机创建不同的密钥,这样加密虚拟机之间也不能读取彼此的数据,可实现虚拟机之间的数据隔离,提升虚拟机数据的安全性。
需要说明的是,上述虽然是以云服务场景为示例来说明虚拟化技术架构和安全虚拟化技术架构,但是上述说明的虚拟化技术架构和安全虚拟化技术架构也可适用于其他场景,云服务场景仅是一种可选场景。
本申请的发明人发现,在安全虚拟化技术的情境下,加密虚拟机同样也需要与外部设备(如硬盘,网卡,鼠标,键盘等)进行交互,而当加密虚拟机连接外部的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设备无法对加密的数据进行解密,这将影响DMA技术的实施;因此,目前加密虚拟机与DMA设备进行数据传输时,加密虚拟机每次都需要利用内存控制器将加密内存空间中的数据解密后,再拷贝到普通内存空间中,从而基于普通内存空间中解密的数据实现DMA;具体的,如图4所示:
①加密虚拟机将位于加密内存空间中进行DMA的数据,解密后拷贝到普通内存空间;②基于普通内存空间的地址,加密虚拟机利用解密的数据发起DMA请求。
通过上述介绍可以看出,在安全虚拟化技术下,由于加密虚拟机在加密内存空间中的数据为加密状态,加密虚拟机每次在向DMA设备发起DMA请求前,都需要将进行DMA的数据从加密内存空间中解密后拷贝到普通内存空间,这引入了额外的CPU拷贝内存数据的开销,极大的降低了DMA效率;为解决该问题,本申请的发明人经研究后提出改进的方案,以使得加密虚拟机与DMA设备能够进行直接数据传输,提升DMA效率。
本申请的发明人发现,在安全虚拟化技术中,加密虚拟机在加密内存空间中的数据,主要由内存控制器调用与加密虚拟机相绑定的密钥进行加解密,而在加密虚拟机与DMA设备进行数据传输时,内存控制器只能获取到进行DMA的加密内存页面的HPA,而无法获知此时进行DMA的加密虚拟机的虚拟机标识,因此内存控制器无法利用相应的密钥对加密内存页面的数据进行加解密,这导致目前加密虚拟机与DMA设备进行DMA时,只能由加密虚拟机先将加密内存空间中数据解密后拷贝到普通内存空间中;
基于此,本申请实施例考虑在内存控制器中增加设置DMA表(DMA table),该DMA表可由多个DMA表项(DMA table entry)构成,每个DMA表项可以至少记录进行DMA的HPA和加密虚拟机的虚拟机标识(如ASID),从而在加密虚拟机与DMA设备进行DMA时,内存控制器可利用进行DMA时的HPA,从DMA表中查询相应的DMA表项;进而,基于查询到的DMA表项中的虚拟机标识,内存控制器可调用相应绑定的密钥,对HPA相应的加密内存页面进行数据加解密,从而使得加密虚拟机与DMA设备可基于内存控制器加解密的数据,实现直接数据传输,避免加密虚拟机需要先将加密内存空间中的数据解密后存储到普通内存空间的过程,提升DMA效率。
基于上述思路,在可选实现中,图5示出了本申请实施例提供的可选的虚拟化技术架构示意图,如图5所示,该虚拟化技术架构基于安全虚拟化技术实现,具体可以包括:CPU11,内存控制器12,物理内存13,安全处理器14,DMA设备16;其中,DMA设备可通过IOMMU(输入输出内存管理单元)与内存控制器连接,内存控制器12中具有密码协处理器15;
在本申请实施例中,内存控制器中设置有DMA表,安全处理器可在DMA表的DMA表项中至少记录进行DMA的HPA和加密虚拟机的虚拟机标识,从而内存控制器可基于DMA表项中记录的加密虚拟机的虚拟机标识,从密钥slot(名单)中获取与虚拟机标识绑定的密钥,进而内存控制器中的密码协处理器(CCP,Crypto Co-processor)可基于该密钥,对HPA相应的内存加密页面中的数据进行加解密,以实现加密虚拟机与DMA设备之间的直接数据传输。
基于图5所示可选架构,在可选实现中,图6示出了本申请实施例提供的直接存储访问方法的可选流程,如图6所示,该流程可以包括:
步骤S10、在虚拟机模式下,加密虚拟机申请用于DMA的第一加密内存页面。
步骤S11、加密虚拟机至少将所述第一加密内存页面对应的第一GPA发送给主机内核。
在加密虚拟机与DMA设备进行DMA前,加密虚拟机可在加密内存空间中申请用于DMA的第一加密内存页面(为便于说明,本申请实施例将用于DMA的加密内存页面称为第一加密内存页面),由于在虚拟化技术下,加密虚拟机运行于虚拟机模式,以GPA访问内存页面,而主机内核、安全处理器运行于主机模式,以HPA访问内存页面,因此加密虚拟机在申请用于DMA的第一加密内存页面后,可确定该第一加密内存页面对应的第一GPA(为便于说明,本申请实施例将用于DMA的第一加密内存页面的GPA,称为第一GPA)。
为使得安全处理器在主机模式下,能够在内存控制器的DMA表中的DMA表项至少记录进行DMA的加密内存页面的HPA和加密虚拟机的虚拟机标识,加密虚拟机在申请进行DMA的第一加密内存页面后,可退出虚拟机模式以进入主机模式,并至少将第一加密内存页面的第一GPA发送给主机内核,以便主机内核在转换得到第一GPA对应的HPA后,能够基于该HPA向安全处理器发起配置DMA表项的配置请求;因此,在本申请实施例的可选实现中,加密虚拟机申请用于DMA的第一加密内存页面,并确定第一加密内存页面对应的第一GPA后,可至少将所述第一GPA发送给主机内核并退出虚拟机模式,以进入主机模式。
在进一步的可选实现中,加密虚拟机在向主机内核发送第一GPA的同时,还可将第一加密内存页面的页面大小(size)发送给主机内核。
步骤S12、在主机模式下,主机内核获取所述第一GPA对应的第一HPA。
步骤S13、主机内核至少基于所述第一HPA生成配置请求信息,将所述配置请求信息发送给安全处理器。
在进入主机模式后,主机内核可基于加密虚拟机反馈的进行DMA的第一加密内存页面的第一GPA,转换得到对应的第一HPA(为便于说明,本申请实施例将第一GPA对应的HPA称为第一HPA);在一种示例实现中,主机内核可从主机VMM(虚拟机管理器)进程页表获取所述第一GPA对应的第一HPA。
主机内核获取第一HPA后,可至少基于第一HPA向安全处理器发起配置DMA表项的请求,以便安全处理器在内存控制器的DMA表中的DMA表项至少记录进行DMA的加密内存页面的HPA和加密虚拟机的虚拟机标识。
在进一步的可选实现中,若加密虚拟机同时向主机内核反馈了第一加密内存页面的页面大小,则主机内核还可在配置请求信息中携带第一加密内存页面的页面大小。
在更进一步的可选实现中,为防止主机内核对第一加密内存页面的第一HPA进行篡改,加密虚拟机在向主机内核反馈第一GPA之前,还可计算第一加密内存页面中的数据对应的第一摘要值(如加密虚拟机可利用哈希运算,计算第一加密内存页面中的数据对应的第一摘要值),从而将所述第一摘要值写入第二加密内存页面(为区别进行DMA的第一加密内存页面,本申请实施例可将写入第一摘要值的加密内存页面称为第二加密内存页面),进而加密虚拟机在向主机内核反馈第一GPA的同时,还可向主机内核反馈第二加密内存页面对应的第二GPA(为区别于第一加密内存页面对应的第一GPA,本申请实施例将第二加密内存页面的GPA称为第二GPA);
基于此,主机内核在获取第一GPA对应的第一HPA的同时,还可获取第二GPA对应的第二HPA(为区别于第一HPA,本申请实施例将第二GPA对应的HPA称为第二HPA),从而主机内核还可在配置请求信息中携带第二HPA,以便安全处理器可基于第二HPA访问第二加密内存页面,从而基于第二加密内存页面中写入的第一摘要值,对第一HPA对应的第一加密内存页面进行完整性校验,防止主机修改第一HPA而无法及时发现的情况发生。
步骤S14、安全处理器基于所述配置请求信息,在内存控制器的DMA表中配置与所述第一HPA对应的目标DMA表项,所述目标DMA表项中至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识。
安全处理器在获取主机内核发送的配置请求信息后,可基于配置请求信息中携带的第一HPA,在内存控制器的DMA表中配置与所述第一HPA对应的目标DMA表项,从而在所述目标DMA表项中至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识(如ASID),进而后续加密虚拟机以第一加密内存页面进行DMA时,内存控制器可基于所述目标DMA表项中记录的虚拟机标识,调用相应绑定的密钥,对第一加密内存页面的数据进行加解密,以使得加密虚拟机与DMA设备能够基于第一加密内存页面,实现直接数据传输。
可以理解的是,加密虚拟机的虚拟机标识由安全处理器进行管理,在安全处理器获取所述配置请求信息后,可基于配置请求信息中至少携带的第一HPA,在内存控制器的DMA表中查找对应的目标DMA表项,从而在目标DMA表项中记录所述第一HPA以及安全处理器管理的所述加密虚拟机的虚拟机标识,以实现对目标DMA表项的配置。
在进一步的可选实现中,如果配置请求信息中还携带第一加密内存页面的页面大小,则安全处理器还可在目标DMA表项中记录第一加密内存页面的页面大小。
在更进一步的可选实现中,如果配置请求信息中还携带第二HPA,则安全处理器可对第一加密内存页面的数据进行完整性校验后,再在完整性校验通过的情况下,执行步骤S14来实现配置目标DMA表项;在可选的具体实现中,安全处理器可基于第二HPA获取第二加密内存页面中写入的第一摘要值,基于第一HPA对第一加密内存页面中的数据计算第二摘要值,通过比对第一摘要值和第二摘要值,以校验第一加密内存页面的数据完整性;具体的,如果第一摘要值与第二摘要值相等,则第一加密内存页面的数据完整,可进入步骤S14实现配置目标DMA表项,如果第一摘要值与第二摘要值不相等,则第一加密内存页面的数据不完整,这可能是主机内核篡改了第一HPA等原因导致,安全处理器不继续进行后续配置DMA表项的工作,此时,安全处理器可通过主机内核返回配置失败信息给加密虚拟机,以使加密虚拟机进行异常退出处理。
本申请实施例提供的直接存储访问方法中,安全处理器可获取配置请求信息,所述配置请求信息至少包括加密虚拟机请求用于DMA的第一加密内存页面对应的第一HPA;从而安全处理器可基于所述配置请求信息,在内存控制器的DMA表中配置与所述第一HPA对应的目标DMA表项,实现在目标DMA表项中至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识。基于安全处理器配置的目标DMA表项,内存控制器可在加密虚拟机基于第一HPA发起DMA时,基于所述目标DMA表项,调用与所述虚拟机标识绑定的密钥,对第一加密内存页面中的数据进行加解密,实现加密虚拟机与DMA设备能够基于第一加密内存页面进行直接数据传输,避免了加密虚拟机需要先将第一加密内存页面中的数据解密后存储到普通内存空间的过程,提升了DMA效率。
在进一步的可选实现中,安全处理器可对第一加密内存页面进行完整性校验,且完整性校验通过后才配置目标DMA表项,基于此,图7示出了本申请实施例提供的直接存储访问方法的另一可选流程,图7所示流程与图6所示流程相同、类似的部分可相互参照,参照图7,该流程可以包括:
步骤S20、在虚拟机模式下,加密虚拟机申请用于DMA的第一加密内存页面。
步骤S21、加密虚拟机计算所述第一加密内存页面中的数据的第一摘要值,将所述第一摘要值写入第二加密内存页面。
为后续安全处理器校验第一加密内存页面的完整性提供基础,加密虚拟机在申请第一加密内存页面后,可利用哈希等运算计算第一加密内存页面中的数据对应的第一摘要值,并将第一摘要值写入与第一加密内存页面不同的第二加密内存页面,该第二加密内存页面可以认为是存储哈希摘要值的哈希页面。可以理解的是,由于加密内存空间中的加密内存页面处于加密状态,因此第一加密内存页面和第二加密内存页面中的数据应是加密状态。
步骤S22、加密虚拟机至少将所述第一加密内存页面对应的第一GPA,第二加密内存页面对应的第二GPA发送给主机内核。
可选的,加密虚拟机在将第一摘要值写入第二加密内存页面后,可退出虚拟机模式,并将所述第一GPA和所述第二GPA发送给主机内核。在进一步的可选实现中,加密虚拟机还可将第一加密内存页面的页面大小发送给主机内核。
步骤S23、在主机模式下,主机内核获取所述第一GPA对应的第一HPA,以及所述第二GPA对应的第二HPA。
加密虚拟机退出虚拟机模式后,主机内核处于主机模式下运行,主机内核可至少获取到加密虚拟机反馈的第一GPA和第二GPA(进一步还可能获取到加密虚拟机反馈的第一加密内存页面的页面大小),从而主机内核可获取第一GPA对应的第一HPA,以便确定出后续进行DMA的第一加密内存页面对应的HPA,并且主机内核可获取到第二GPA对应的第二HPA,以便后续安全处理器可校验第一加密内存页面的完整性。在可选实现中,主机内核可从主机VMM进程页表中获取所述第一GPA对应的第一HPA,以及所述第二GPA对应的第二HPA。
步骤S24、主机内核至少基于所述第一HPA和所述第二HPA生成配置请求信息,将所述配置请求信息发送给安全处理器。
主机内核获取所述第一GPA和所述第二GPA后,可生成用于请求安全处理器配置DMA表项的配置请求信息,并在所述配置请求信息中携带第一HPA和第二HPA,同时将所述配置请求信息发送给安全处理器。进一步的可选实现中,所述配置请求信息中还可携带第一加密内存页面的页面大小。
步骤S25、安全处理器基于第二HPA从第二加密内存页面获取第一摘要值,并基于第一HPA计算第一加密内存页面中的数据的第二摘要值。
步骤S26、安全处理器基于第一摘要值和第二摘要值,校验第一加密内存页面是否完整,若否,执行步骤S27,若是,执行步骤S28。
安全处理器获取配置请求信息后,可先校验第一加密内存页面的完整性,以判断第一HPA等数据是否存在被主机内核篡改的情况,具体的,安全处理器可基于配置请求信息中携带的第二HPA,从第二HPA对应的第二加密内存页面中获取加密虚拟机写入的第一摘要值,同时,安全处理器可基于配置请求信息中携带的第一HPA,计算第一HPA对应的第一加密内存页面中的数据的第二摘要值,从而安全处理器可基于第一摘要值和第二摘要值,对第一加密内存页面进行完整性校验;在更为具体的可选实现中,安全处理器可比对第一摘要值和第二摘要值是否相等,若是,则校验第一加密内存页面完整,可继续后续配置DMA表项的流程,若否,则校验第二加密内存页面不完整,这可能是主机内核篡改了第一加密内存页面的HPA等原因造成,此时,安全处理器需通知加密虚拟机执行相应的异常退出处理。
需要说明的是,第一加密内存页面和第二加密内存页面中的数据处于加密状态,安全处理器读取第一加密内存页面中数据并计算第二摘要值时,可先对第一加密内存页面中的数据进行解密,同理,安全处理器在获取第二加密内存页面中的第一摘要值时,可先对第二加密内存页面进行解密。
步骤S27、安全处理器通过主机内核,通知加密虚拟机执行异常退出处理。
在校验第一加密内存页面不完整的情况下,安全处理器不进行DMA表项的配置,而是通过主机内核返回失败信息给加密虚拟机,以通知加密虚拟机执行异常退出处理;进一步的,加密虚拟机可释放申请的用于DMA的第一加密内存页面,进一步,加密虚拟机也可释放第二加密内存页面。
步骤S28、安全处理器基于配置请求信息,在内存控制器的DMA表中配置与所述第一HPA对应的目标DMA表项,所述目标DMA表项中至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识。
安全处理器在校验第一加密内存页面完整的情况下,可进行DMA表项的配置,从而安全处理器可基于配置请求信息,在内存控制器的DMA表中配置与第一HPA对应的目标DMA表项,使得目标DMA表项至少记录第一HPA以及加密虚拟机的虚拟机标识,为后续加密虚拟机可基于第一加密内存页面与DMA设备进行直接数据传输提供基础。
在可选实现中,内存控制器中的DMA表可记录多个DMA表项,每个DMA表项除至少记录用于DMA的加密内存页面的HPA外,还可记录用于DMA的加密内存页面的页面大小(size),进行DMA的加密虚拟机的虚拟机标识(如ASID),表示DMA表项是否空闲的有效位(如valid位),指示下一DMA表项的链接索引(index)等;在一种示例中,图8示出了DMA表的可选结构示例,可进行参照,如图8所示,DMA表中记录有多个DMA表项,每个DMA表项具体记录如下内容(可选的,一个DMA表项可占用16字节):
1)HPA,表示一次DMA的加密内存页面的主机物理地址,示例的,也可使用phys_addr(一次DMA的加密内存页面的起始物理地址)来表示;
2)size,表示一次DMA的加密内存页面的页面大小;
3)ASID,当前HPA所属的加密虚拟机的虚拟机标识,即进行DMA的加密虚拟机的虚拟机标识;
4)valid位,表示DMA表项是否空闲的有效位,如当有效位的数值为第一值(如1)时,表示DMA表项已被使用,而当有效位的数值为第二值(如0)时,表示DMA表项空闲;
5)index,表示链接索引,用于指示具有相同表项索引的下一个DMA表项;可选的,表项索引可以用于索引DMA表项,且表项索引的数值可基于HPA确定,并且不同的HPA可具有相同的表项索引,以对容量有限的DMA表进行高效利用;同时,在具有相同表项索引的DMA表项中,上一DMA表项可使用链接索引(index),来指示下一DMA表项,且当链接索引的数值为第二值(第二值例如0)时,表示当前DMA表项没有下一个链接的DMA表项;可选的,具有相同表项索引的DMA表项可通过链接索引依序链接,并且在其中的最后一个DMA表项中设置链接索引为第二值,以表示后续没有下一链接的DMA表项。
在可选实现中,本申请实施例可基于用于DMA的加密内存页面的HPA,生成DMA表项的表项索引,如取HPA的第31字节(bit31)的数值、第20至第22字节(bit20-bit22)的数值、以及第13至16字节(bit13-bit16)的数值,组合成8字节大小的表项索引;需要说明的是,由于DMA表的容量有限,而物理内存的大小较大,因此不可能使得物理内存中的每个HPA都指向唯一的DMA表项,基于此,本申请实施例可使不同HPA具有相同表项索引(如不同HPA以上述8字节大小的数值,组合成的表项索引可能是相同的),且具有相同表项索引的DMA表项可基于链接索引(index)依序链接,并在相同表项索引的最后一个DMA表项中设置链接索引的数值为第二值,以实现DMA表的高效利用;
在一种示例中,结合图9所示,为了减少DMA表对于内存带宽的影响,内存控制器中可设置一定存储空间(如2兆字节,该存储空间的具体数值可根据实际情况调整)用于DMA表,在图9所示中,DMA表中开始的256个(具体数值可视实际情况调整)DMA表项可以基于HPA确定的表项索引来实现快速查找,如取HPA中bit31、bit20-bit22以及bit13-bit16组合成8bit大小的表项索引(当然,也可根据实际需要,在HPA中选取合适的bit位或者增、减bit位来作为表项索引,本申请实施例对此并不限制);当不同的HPA具有相同的表项索引时,多个DMA表项的表项索引相同,此时针对具有相同表项索引的多个DMA表项,本申请实施例可从具有相同表项索引的第一个DMA表项开始(该第一个DMA表项直接由基于HPA确定的表项索引查找),依序利用DMA表项中的链接索引(index),指向具有相同表项索引的下一个DMA表项,直至指向的当前DMA表项的链接索引为第二值(如0)时,表示当前DMA表项为该具有相同表项索引的DMA表项中的最后一个DMA表项,以此方式,本申请实施例可实现DMA表的高效利用。
基于上述描述,安全处理器在内存控制器中配置与第一HPA对应的目标DMA表项时,可基于第一HPA确定的目标表项索引,从DMA表中查找对应的目标DMA表项,从而在目标DMA表项中至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识,以实现配置目标DMA表项;可选的,图10示出了本申请实施例提供的配置目标DMA表项的可选方法流程,该方法流程可由安全处理器执行实现,如图10所示,该流程可以包括:
步骤S30、基于第一HPA确定目标表项索引。
安全处理器可基于配置请求信息中携带的第一HPA,确定目标表项索引,在可选实现中,安全处理器可选取第一HPA中设定比特位的数值作为目标表项索引,例如选择第一HPA中bit31、bit20-bit22以及bit13-bit16的数值,组合成目标表项索引。
步骤S31、基于所述目标表项索引,查找DMA表中与所述目标表项索引对应的第一个DMA表项。
目标表项索引在DMA表中可能存在索引的多个DMA表项,该多个DMA表项中的第一个DMA表项可由目标表项索引直接查找到,因此本申请实施例可查找DMA表中所述目标表项索引对应的第一个DMA表项。
步骤S32、判断所述第一个DMA表项是否空闲,若是,执行步骤S33,若否,执行步骤S34。
可选的,本申请实施例可基于所述第一个DMA表项中的有效位(valid位),判断所述第一个DMA表项是否空闲,例如,判断所述第一个DMA表项中的有效位是否为第一值(如1),若是,则表示所述第一个DMA表项已被使用,即所述第一个DMA表项不空闲,若否,则此时所述第一个DMA表项的数值为第二值(如0),表示所述第一个DMA表项未被使用,即所述第一个DMA表项空闲。
步骤S33、在所述第一个DMA表项中至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识,并设置所述第一个DMA表项已被使用,且设置所述第一个DMA表项未链接有下一个DMA表项。
在所述第一个DMA表项空闲的情况下,本申请实施例可直接将所述第一个DMA表项作为目标DMA表项,来实现配置目标DMA表项;在可选实现中,本申请实施例可在所述第一个DMA表项中至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识(如ASID),同时,设置所述第一个DMA表项已被使用,如设置所述第一个DMA表项中的有效位(valid位)为第一值(如1),同时,设置所述第一个DMA表项未链接有下一个DMA表项,如设置所述第一个DMA表项中的链接索引(index)为第二值(如0)。
基于步骤S33的处理,本申请实施例可在所述目标表项索引对应的第一个DMA表项空闲的情况下,将所述第一个DMA表项作为目标DMA表项,以实现目标DMA表项的配置。
步骤S34、基于所述第一个DMA表项中的链接索引,从具有所述目标表项索引的多个DMA表项中,查找最后一个DMA表项。
步骤S35、从空闲链表中确定一个空闲DMA表项作为目标DMA表项,在所述目标DMA表项中至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识。
可选的,步骤S34和步骤S35可以同步执行。
步骤S36、将所述最后一个DMA表项的链接索引设置为所述目标DMA表项的链接索引,并使所述最后一个DMA表项指向所述目标DMA表项,且设置所述目标DMA表项已被使用并且未链接有下一个DMA表项。
在所述第一个DMA表项已被使用(即不空闲)的情况下,本申请实施例无法从目标表项索引直接查找的DMA表项中,配置目标DMA表项,因此需要从链接索引(如index)检索指向的DMA表项中配置目标DMA表项,此时本申请实施例可基于所述第一个DMA表项中的链接索引(如index),从具有所述目标表项索引的多个DMA表项中,查找最后一个DMA表项,如基于所述第一个DMA表项中的链接索引,依序检索指向的下一个DMA表项,直至找到最后一个DMA表项(如找到的最后一个DMA表项的链接索引的值为第二值)。
在找到所述最后一个DMA表项后,该最后一个DMA表项可能已被使用,因此本申请实施例并不直接在该最后一个DMA表项配置目标DMA表项,而是需确定一个空闲DMA表项作为目标DMA表项,在该目标DMA表项中至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识;在可选实现中,本申请实施例可维护记录空闲DMA表项的空闲链表,从而从空闲链表中确定一个空闲DMA表项作为目标DMA表项,在一种示例实现中,该空闲链表可记录由index检索指向的空闲DMA表项,如在图9示例中,第256(具体数值仅是示例)个DMA表项之后的DMA表项不能由表项索引直接查找,则本申请实施例可通过空闲链表记录第256个DMA表项之后的空闲DMA表项,如空闲链表可记录第256个DMA表项之后的有效位(valid位)为第二值(如0)的DMA表项;
同时,将步骤S34查找到的所述最后一个DMA表项的链接索引设置为,步骤S35确定的目标DMA表项的链接索引,并使所述最后一个DMA表项指向所述目标DMA表项,且设置所述目标DMA表项已被使用并未链接有下一个DMA表项,则可使得所述目标DMA表项成为所述最后一个DMA表项的下一指向的DMA表项,且所述目标DMA表项成为所述目标表项索引对应的最后一个DMA表项;即步骤S34查找到的所述最后一个DMA表项不再作为最后的DMA表项,而所述目标DMA表项成为最后一个DMA表项,以实现对目标DMA表项的配置。
也就是说,在所述第一个DMA表项已被使用的情况下,本申请实施例需要通过插入一条新的DMA表项,来实现配置目标DMA表项,此时,本申请实施例可找到一个空闲DMA表项作为目标DMA表项,并在目标DMA表项中至少记录所述第一HPA和加密虚拟机的虚拟机标识;从而将当前索引的最后一个DMA表项的链接索引(如index)由0设置为该空闲DMA表项的链接索引,然后把该空闲DMA表项的链接索引置0,此时该空闲DMA表项变成当前索引的最后一条DMA表项,完成了新增DMA表项的过程,并可在该新增的DMA表项中记录所述第一HPA和加密虚拟机的虚拟机标识,完成目标DMA表项的配置。
在进一步的可选实现中,CPU架构中一般设置多个统一内存控制器(UMC),示例的,如图11所示,在CPU的SOC(片上系统)结构中可设置多个UMC,且不同的HPA地址分布对应不同的UMC,则安全处理器在内存控制器中配置与第一HPA对应的目标DMA表项时,可先基于各个UMC与HPA地址分布的映射关系,确定第一HPA对应的UMC,从而在第一HPA对应的UMC的DMA表中,配置与第一HPA对应的目标DMA表项,可选的,配置目标DMA表项的可选实现过程可如图10所示。
在安全处理器在内存控制器中配置目标DMA表项后,安全处理器可通知加密虚拟机启动DMA,并且在DMA过程中,内存控制器可基于所述目标DMA表项,调用与所述虚拟机标识绑定的密钥,对第一加密内存页面中的数据进行加解密,使得加密虚拟机与DMA设备能够基于第一加密内存页面进行直接数据传输;可选的,图12示出了本申请实施例提供的直接存储访问方法的再一可选流程,该流程可在安全处理器已配置目标DMA表项的情况下执行,如在安全处理器基于图10所示可选流程配置目标DMA表项的情况下,执行图12所示流程;参照图12,该流程可以包括:
步骤S40、安全处理器通知加密虚拟机启动DMA。
安全处理器可在配置目标DMA表项后,通知加密虚拟机启动DMA,从而加密虚拟机可发起DMA请求,实现加密虚拟机与DMA设备的直接数据传输;具体的,内存控制器在获取用于DMA的第一HPA后,可确定所述第一HPA对应的目标DMA表项,从而基于目标DMA表项中的虚拟机标识,调用相应的密钥,对第一HPA对应的加密内存页面中的数据进行加解密,以使得加密虚拟机与DMA设备能够实现直接数据传输。
需要说明的是,安全处理器、主机内核运行于主机模式,而加密虚拟机运行于虚拟机模式,因此安全处理器可通过主机内核通知加密虚拟机启动DMA,并通过主机内核执行虚拟机运行指令,来返回虚拟机模式,使得加密虚拟机返回上次退出虚拟机模式时的节点。
步骤S41、加密虚拟机启动DMA。
加密虚拟机可在虚拟机模式下,启动DMA,以在内存控制器的DMA表中已配置目标DMA表项的情况下,实现DMA时的直接数据传输。
步骤S42、在DMA结束时,加密虚拟机向主机内核至少发送第一GPA,以请求释放目标DMA表项。
在加密虚拟机与DMA设备完成DMA,DMA结束时,本申请实施例可释放目标DMA表项,以释放DMA表的数据空间;此时,加密虚拟机可向主机内核至少发送第一GPA,以便主机内核在转换第一GPA对应的第一HPA后,将至少携带第一HPA的目标DMA表项的释放请求,发送给安全处理器。
可选的,加密虚拟机可向主机内核至少发送第一GPA,并退出虚拟机模式,以进入主机内核和安全处理器运行的主机模式;在进一步的可选实现中,加密虚拟机在向主机内核发送第一GPA时,还可向主机内核发送第一GPA对应的第一加密内存页面的页面大小(size)。
步骤S43、主机内核向安全处理器发送目标DMA表项的释放请求,所述释放请求中至少包括所述第一GPA对应的第一HPA。
在进入主机模式后,主机内核可获取所述第一GPA对应的第一HPA,至少基于所述第一HPA向安全处理器发送目标DMA表项的释放请求,以使得安全处理器释放目标DMA表项;在更进一步的可选实现中,所述释放请求中还可携带第一加密内存页面的页面大小。
步骤S44、安全处理器在内存控制器中的DMA表中,释放与所述第一HPA对应的目标DMA表项。
安全处理器在获取所述释放请求后,可基于释放请求中携带的第一HPA,对内存控制器的DMA表中,与所述第一HPA对应的目标DMA表项进行释放;在可选实现中,安全处理器可在内存控制器的DMA表中,查找与所述第一HPA对应的目标DMA表项,将所述目标DMA表项的有效位(valid位)设置为第二值(如0),以实现释放所述目标DMA表项;在更为具体的实现中,本申请实施例还可将所述目标DMA表项加入到维护的空闲链表中;
安全处理器在内存控制器的DMA表中,查找与所述第一HPA对应的目标DMA表项的可选实现中,安全处理器可基于第一HPA确定目标表项索引,确定DMA表中与所述目标表项索引对应的第一个DMA表项;若该第一个DMA表项的链接索引(如index)为第二值(如0),则说明该第一个DMA表项没有下一个指向的DMA表项,该第一个DMA表项可作为目标DMA进行释放;若该第一个DMA表项的链接索引不为第二值,则可基于该第一个DMA表项的链接索引,依序检索指向的下一个DMA表项,直至找到最后一个DMA表项(即链接索引为第二值的DMA表项),将该最后一个DMA表项作为目标DMA表项进行释放;
在进一步的可能的实现中,如果释放的DMA表项的链接索引不为第二值,则本申请实施例可将释放的DMA表项指向的上一DMA表项的链接索引修改为,该释放的DMA表项的链接索引,如此处理,则可在释放的DMA表项的链接索引不为第二值的情况下,避免释放的DMA表项后面的DMA表项无法被查找到,这是因为释放的DMA表项将指向的前后联系打断了,因此需要修改释放的DMA表项指向的上一DMA表项的链接索引,让该上一DMA表项指向释放的DMA表项的下一DMA表项。
可选的,为防止主机内核篡改第一HPA,本申请实施例也可加入完整性校验过程,例如,加密虚拟机可将第一GPA对应的第一加密内存页面对应的第一摘要值,写入第二加密内存页面,从而加密虚拟机在向主机内核发送第一GPA的同时,还可发送第二加密内存页面对应的第二GPA;主机内核在获取第一GPA对应的第一HPA时,还可获取第二GPA对应的第二HPA,从而主机内核向安全处理器发送的释放请求可携带所述第一HPA和所述第二HPA,进而安全处理器可基于第二HPA读取第二加密内存页面中的第一摘要值,并基于第一HPA计算第一加密内存页面对应的第二摘要值,从而通过第一摘要值和第二摘要值,校验第一HPA是否被篡改过,在校验第一HPA未被篡改的情况下,安全处理器才释放第一HPA对应的目标DMA表项。
本申请实施例提供的DMA方法,可在内存控制器的DMA表中配置第一HPA对应的目标DMA表项后,由加密虚拟机基于第一HPA启动DMA,从而在DMA结束后,本申请实施例可对DMA表中第一HPA对应的目标DMA表项进行释放,以在实现加密虚拟机与DMA设备的直接数据传输的情况下,有效利用内存控制器中容量有限的DMA表。
在可选实现中,虚拟机启动DMA时,内存控制器执行直接存储访问方法的可选流程可如图13所示,该流程可在虚拟机启动DMA时,由内存控制器执行实现,参照图13,该流程可以包括:
步骤S50、获取DMA的地址信息,所述地址信息至少包括用于DMA的内存页面对应的HPA。
虚拟机启动DMA时,内存控制器可获取进行DMA的地址信息,在本申请实施例中,该地址信息可以至少包括用于DMA的内存页面对应的HPA。
步骤S51、在DMA表中查找是否存在与所述HPA对应的目标DMA表项。
步骤S52、若存在与所述HPA对应的目标DMA表项,基于所述目标DMA表项中记录的加密虚拟机的虚拟机标识,调用所述加密虚拟机的密钥,对所述HPA对应的内存页面中的数据进行加解密。
内存控制器在获取DMA的地址信息后,可基于所述地址信息中用于DMA的HPA,查找DMA表中是否存在与所述HPA对应的目标DMA表项,若是,则说明用于DMA的内存页面为加密内存页面,进行DMA的虚拟机为加密虚拟机,此时,内存控制器可基于目标DMA表项中记录的加密虚拟机的虚拟机标识(如ASID),调用与该虚拟机标识绑定的加密虚拟机的密钥,对该HPA对应的内存页面中的数据进行加解密,以使得加密虚拟机与DMA设备能够实现直接数据传输,达到提升DMA效率的目的。
在进一步的可选实现中,所述地址信息还可以包括进行DMA的虚拟机的虚拟机标识(如ASID),以及用于DMA的内存页面的加密标识(c-bit),其中,若加密标识不为第二值(如0),即加密标识为第一值(如1),则表示该内存页面为加密内存页面,若加密标识为第二值,则表示该内存页面为普通内存页面;示例的,图14示出了DMA的地址信息的可选示例结构,可进行参照;
从而,内存控制器可先通过所述地址信息中的虚拟机标识和加密标识,判断当前用于DMA的内存页面为加密内存页面,进而在确定当前用于DMA的内存页面为加密内存页面时,直接基于所述地址信息中携带的虚拟机标识,调用相应的密钥,对所述HPA对应的内存页面中的数据进行加解密;
在可选实现中,图15示出了本申请实施例提供的直接存储访问方法的又另一可选流程,该流程可在虚拟机启动DMA时,由内存控制器执行实现,参照图15,该流程可以包括:
步骤S60、获取DMA的地址信息,所述地址信息至少包括用于DMA的内存页面对应的HPA,进行DMA的虚拟机的虚拟机标识,以及所述内存页面的加密标识。
步骤S61、判断所述地址信息中虚拟机标识是否为空,若否,执行步骤S62,若是,执行步骤S64。
本申请实施例可先判断所述地址信息中的虚拟机标识是否为空,若所述地址信息中的虚拟机标识不为空,本申请实施例可执行步骤S62,进一步判断当前DMA的内存页面是否为加密内存页面;若所述地址信息中的虚拟机标识为空,则本申请实施例可执行步骤S64,通过所述地址信息中的HPA进一步判断内存控制器的DMA表中是否存在对应的目标DMA表项,来判断当前DMA的内存页面是否为加密内存页面。
步骤S62、判断所述地址信息中的加密标识是否为第二值,若否,执行步骤S67,若是,执行步骤S63。
如果所述地址信息中的加密标识(c-bit)不为第二值(如0),即加密标识为第一值(如1),说明当前DMA的内存页面为加密内存页面,可在地址信息中已具有不为空的虚拟机标识的情况下,执行步骤S66,通过调用与所述地址信息中的虚拟标识相绑定的密钥,对所述HPA对应的内存页面中的数据进行加解密;如果所述地址信息中的加密标识为第二值,说明当前DMA的内存页面为普通内存页面,则此种情况不适用于本申请实施例提供的方式进行DMA,本申请实施例可结束流程,以便直接基于所述HPA对应的内存页面中的数据进行DMA。
步骤S63、结束流程。
步骤S64、在DMA表中查找是否存在与所述HPA对应的目标DMA表项,若否,执行步骤S63,若是,执行步骤S65。
在所述地址信息中的虚拟机标识为空时,本申请实施例可基于所述地址信息中的HPA,在内存控制器的DMA表中查找是否存在与所述HPA对应的目标DMA表项,若否,则该HPA在DMA表中未对应有DMA表项,这可能是当前DMA的内存页面为普通内存页面等原因造成,此时可执行步骤S63,结束流程;若在内存控制器的DMA表中查找到与所述HPA对应的目标DMA表项,则本申请实施例可执行步骤S65,确定目标DMA表项中记录的加密虚拟机的虚拟机标识,以便后续基于该虚拟机标识绑定的密钥,对所述HPA对应的内存页面中的数据进行加解密,实现直接DMA传输。
可选的,本申请实施例可基于地址信息中的HPA确定目标表项索引,在DMA表中确定所述目标表项索引对应的第一个DMA表项;若该第一个DMA表项的链接索引(如index)为第二值(如0),则说明该第一个DMA表项没有下一个指向的DMA表项,该第一个DMA表项为目标DMA;若该第一个DMA表项的链接索引不为第二值,则可基于该第一个DMA表项的链接索引,依序检索指向的下一个DMA表项,直至找到最后一个DMA表项(即链接索引为第二值的DMA表项),将该最后一个DMA表项作为目标DMA表项。若以上过程均未查找到目标DMA表项,则可确定DMA表中不存在与所述地址信息中的HPA对应的目标DMA表项。
步骤S65、确定所述目标DMA表项中记录的加密虚拟机的虚拟机标识。
步骤S66、调用与所述虚拟标识相绑定的所述加密虚拟机的密钥,对所述HPA对应的内存页面中的数据进行加解密。
步骤S67、调用与所述地址信息中的虚拟标识相绑定的密钥,对所述HPA对应的内存页面中的数据进行加解密。
可选的,在步骤S66或步骤S67的实现中,本申请实施例在DMA时,若向内存页面写数据,则内存控制器可调用所述虚拟标识绑定的密钥,对数据进行加密后写入内存页面;若从内存页面读取数据,则内存控制器可调用所述虚拟标识绑定的密钥,对数据进行解密并读取出。
本申请实施例提供的直接存储访问方法中,基于安全处理器配置的目标DMA表项,内存控制器可在加密虚拟机基于加密内存页面的HPA发起DMA时,基于所述目标DMA表项,调用与所述加密虚拟机的虚拟机标识绑定的密钥,对加密内存页面中的数据进行加解密,实现加密虚拟机与DMA设备能够基于加密内存页面进行直接数据传输,避免了加密虚拟机需要先将加密内存页面中的数据解密后存储到普通内存空间的过程,提升了DMA效率。
上文描述了本申请实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本申请实施例披露、公开的实施例方案。
下面站在安全处理器的角度,对本申请实施例提供的直接存储访问装置进行介绍,下文描述的直接存储访问装置,可以认为是安全处理器为实现本申请实施例提供的直接存储访问方法,所需设置的功能模块。下文描述的直接存储访问装置的内容,可与上文描述的方法内容,相互对应参照。
在可选实现中,图16示出了本申请实施例提供的直接存储访问装置的可选框图,该直接存储访问装置可应用于安全处理器,如图16所示,该直接存储访问装置可以包括:
配置请求信息获取模块100,用于获取配置请求信息,所述配置请求信息至少包括:加密虚拟机请求用于DMA的第一加密内存页面对应的第一HPA;
配置模块110,用于基于所述配置请求信息,在内存控制器的DMA表中配置与所述第一HPA对应的目标DMA表项,所述目标DMA表项至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识,以使内存控制器在所述加密虚拟机基于所述第一HPA发起DMA时,所述内存控制器基于所述目标DMA表项,调用与所述虚拟机标识绑定的密钥,对所述第一加密内存页面中的数据进行加解密。
可选的,所述配置请求信息还包括:第二加密内存页面对应的第二HPA,其中,所述第二加密内存页面写入有所述加密虚拟机计算的所述第一加密内存页面中的数据的第一摘要值;
相应的,图17示出了本申请实施例提供的直接存储访问装置的另一可选框图,结合图16和图17所示,该直接存储访问装置还可以包括:
完整性校验模块120,用于在配置模块110基于所述配置请求信息,在内存控制器的DMA表中配置与所述第一HPA对应的目标DMA表项之前,基于所述第二HPA从第二加密内存页面获取第一摘要值,并基于所述第一HPA计算第一加密内存页面中的数据的第二摘要值;基于所述第一摘要值和第二摘要值,校验第一加密内存页面是否完整,若是,使配置模块110进入所述基于所述配置请求信息,在内存控制器的DMA表中配置与所述第一HPA对应的目标DMA表项的步骤;
可选的,进一步如图17所示,该直接存储访问装置还可以包括:
异常通知模块130,用于在完整性校验模块120校验第一加密内存页面不完整时,通知加密虚拟机执行异常退出处理。
可选的,配置模块110,用于基于所述配置请求信息,在内存控制器的DMA表中配置与所述第一HPA对应的目标DMA表项,所述目标DMA表项至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识,具体包括:
基于所述配置请求信息中的第一HPA确定目标表项索引;
根据所述目标表项索引在DMA表中确定目标DMA表项,在所述目标DMA表项至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识。
可选的,配置模块110,用于基于所述配置请求信息中的第一HPA确定目标表项索引,具体包括:
选取所述第一HPA中设定比特位的数值作为目标表项索引。
可选的,配置模块110,用于根据所述目标表项索引在DMA表中确定目标DMA表项,在所述目标DMA表项至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识,具体包括:
基于所述目标表项索引,查找DMA表中与所述目标表项索引对应的第一个DMA表项;
判断所述第一个DMA表项是否空闲,若是,将所述第一个DMA表项作为所述目标DMA表项,在所述第一个DMA表项中至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识,并设置所述第一个DMA表项已被使用,且设置所述第一个DMA表项未链接有下一个DMA表项。
可选的,配置模块110,用于根据所述目标表项索引在DMA表中确定目标DMA表项,在所述目标DMA表项至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识,还包括:
若所述第一个DMA表项不空闲,基于所述第一个DMA表项中的链接索引,从具有所述目标表项索引的多个DMA表项中,查找最后一个DMA表项,其中,具有相同表项索引的多个DMA表项使用链接索引依序链接;
从空闲链表中确定一个空闲DMA表项作为目标DMA表项,在所述目标DMA表项中至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识,其中,空闲链表记录有空闲的DMA表项;
将所述最后一个DMA表项的链接索引设置为所述目标DMA表项的链接索引,并使所述最后一个DMA表项指向所述目标DMA表项,且设置所述目标DMA表项已被使用并且未链接有下一个DMA表项。
可选的,一个DMA表项还记录有效位以及链接索引;其中,有效位的数值为第一值表示DMA表项不空闲,有效位的数值为第二值表示DMA表项空闲;链接索引用于指向具有相同表项索引的下一个DMA表项,且在链接索引为第二值时表示DMA表项未链接有下一个DMA表项。
可选的,所述配置请求信息还包括:第一加密内存页面的页面大小。
可选的,图18示出了本申请实施例提供的直接存储访问装置的再一可选框图,结合图16和图18所示,该直接存储访问装置还可以包括:
释放模块140,用于在DMA结束时,获取目标DMA表项的释放请求,所述释放请求中至少包括所述第一HPA;在内存控制器中的DMA表中,释放与所述第一HPA对应的目标DMA表项。
可选的,释放模块140,用于在内存控制器中的DMA表中,释放与所述第一HPA对应的目标DMA表项,包括:
在内存控制器的DMA表中,查找与所述第一HPA对应的目标DMA表项;
将所述目标DMA表项的有效位设置为表示空闲的第二值,并将所述目标DMA表项加入到记录空闲的DMA表项的空闲链表中。
可选的,释放模块140,用于在内存控制器的DMA表中,查找与所述第一HPA对应的目标DMA表项包括:
基于第一HPA确定目标表项索引;
确定DMA表中与所述目标表项索引对应的第一个DMA表项;
若所述第一个DMA表项的链接索引为第二值,将所述第一个DMA表项作为目标DMA表项,其中,DMA表项的链接索引为第二值,则表示DMA表项未链接有下一个DMA表项;
若所述第一个DMA表项的链接索引不为第二值,基于所述第一个DMA表项的链接索引,依序检索指向的下一个DMA表项,直至找到链接索引为第二值的最后一个DMA表项,将所述最后一个DMA表项作为目标DMA表项。
可选的,释放模块140还用于:若释放的DMA表项的链接索引不为第二值,将释放的DMA表项指向的上一DMA表项的链接索引修改为,该释放的DMA表项的链接索引。
可选的,配置模块110,用于基于所述配置请求信息,在内存控制器的DMA表中配置与所述第一HPA对应的目标DMA表项包括:
基于各个统一内存控制器UMC与HPA地址分布的映射关系,确定所述第一HPA对应的UMC;在所述第一HPA对应的UMC的DMA表中,配置与所述第一HPA对应的目标DMA表项。
本申请实施例还提供一种安全处理器,该安全处理器可以通过装载上述所述的直接存储访问装置,以实现本申请实施例提供的安全处理器角度执行的直接存储访问方法。相应的,本申请实施例提供一种安全处理器,所述安全处理器被配置为执行本申请实施例提供的安全处理器角度执行的直接存储访问方法。
下面站在内存控制器的角度,对本申请实施例提供的直接存储访问装置进行介绍,下文描述的直接存储访问装置,可以认为是内存控制器为实现本申请实施例提供的直接存储访问方法,所需设置的功能模块。下文描述的直接存储访问装置的内容,可与上文描述的方法内容,相互对应参照。
可选的,图19示出了本申请实施例提供的直接存储访问装置的又一可选框图,该直接存储访问装置可应用于内存控制器,参照图19,该直接存储访问装置可以包括:
地址信息获取模块200,用于获取DMA的地址信息,所述地址信息至少包括用于DMA的内存页面对应的HPA;
查找模块210,用于在DMA表中查找是否存在与所述HPA对应的目标DMA表项;
第一加解密模块220,用于若DMA表中存在与所述HPA对应的目标DMA表项,基于所述目标DMA表项中记录的加密虚拟机的虚拟机标识,调用与所述虚拟机标识相绑定的所述加密虚拟机的密钥,对所述HPA对应的内存页面中的数据进行加解密。
可选的,所述地址信息还包括:进行DMA的虚拟机的虚拟机标识,以及所述内存页面的加密标识;
相应的,图20示出了本申请实施例提供的直接存储访问装置的又另一可选框图,结合图19和图20所示,该直接存储访问装置还可以包括:
地址信息第一判断模块230,用于在查找模块210在DMA表中查找是否存在与所述HPA对应的目标DMA表项之前,判断所述地址信息中的虚拟机标识是否为空,若是,使查找模块210进入所述在DMA表中查找是否存在与所述HPA对应的目标DMA表项的步骤;
地址信息第二判断模块240,用于在地址信息第一判断模块230判断所述地址信息中的虚拟机标识不为空时,判断所述地址信息中的加密标识是否为第二值,其中,加密标识为第一值表示内存页面为加密内存页面,加密标识为第二值表示内存页面为普通内存页面;
第二加解密模块250,用于在地址信息第二判断模块240判断所述地址信息中的加密标识不为第二值时,调用与所述地址信息中的虚拟标识相绑定的密钥,对所述HPA对应的内存页面中的数据进行加解密。
本申请实施例还提供一种内存控制器,该内存控制器可以通过装载上述所述的直接存储访问装置,以实现本申请实施例提供的内存控制器角度执行的直接存储访问方法。相应的,本申请实施例提供一种内存控制器,所述内存控制器被配置为执行本申请实施例提供的内存控制器角度执行的直接存储访问方法。
本申请实施例还提供一种电子设备,该电子设备例如主机(如主机),在本申请实施例中,该电子设备可以包括上述所述的安全处理器和上述所述的内存控制器,该电子设备的可选结构可结合图5所示,可相互参照,此处不再进一步展开说明。
虽然本申请实施例披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。

Claims (22)

1.一种直接存储访问方法,其特征在于,应用于安全处理器,所述方法包括:
获取配置请求信息,所述配置请求信息至少包括:加密虚拟机请求用于直接存储访问DMA的第一加密内存页面对应的第一主机物理地址HPA;
基于所述配置请求信息,在内存控制器的DMA表中配置与所述第一HPA对应的目标DMA表项,所述目标DMA表项至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识,以使内存控制器在所述加密虚拟机基于所述第一HPA发起DMA时,所述内存控制器基于所述目标DMA表项,调用与所述虚拟机标识绑定的密钥,对所述第一加密内存页面中的数据进行加解密。
2.根据权利要求1所述的直接存储访问方法,其特征在于,所述配置请求信息还包括:第二加密内存页面对应的第二HPA,其中,所述第二加密内存页面写入有所述加密虚拟机计算的所述第一加密内存页面中的数据的第一摘要值;
在基于所述配置请求信息,在内存控制器的DMA表中配置与所述第一HPA对应的目标DMA表项之前,所述方法还包括:
基于所述第二HPA从第二加密内存页面获取第一摘要值,并基于所述第一HPA计算第一加密内存页面中的数据的第二摘要值;
基于所述第一摘要值和第二摘要值,校验第一加密内存页面是否完整,若是,进入所述基于所述配置请求信息,在内存控制器的DMA表中配置与所述第一HPA对应的目标DMA表项的步骤。
3.根据权利要求2所述的直接存储访问方法,其特征在于,还包括:
若校验第一加密内存页面不完整,通知加密虚拟机执行异常退出处理。
4.根据权利要求1所述的直接存储访问方法,其特征在于,所述基于所述配置请求信息,在内存控制器的DMA表中配置与所述第一HPA对应的目标DMA表项,所述目标DMA表项至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识包括:
基于所述配置请求信息中的第一HPA确定目标表项索引;
根据所述目标表项索引在DMA表中确定目标DMA表项,在所述目标DMA表项至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识。
5.根据权利要求4所述的直接存储访问方法,其特征在于,所述基于所述配置请求信息中的第一HPA确定目标表项索引包括:
选取所述第一HPA中设定比特位的数值作为目标表项索引。
6.根据权利要求4所述的直接存储访问方法,其特征在于,所述根据所述目标表项索引在DMA表中确定目标DMA表项,在所述目标DMA表项至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识包括:
基于所述目标表项索引,查找DMA表中与所述目标表项索引对应的第一个DMA表项;
判断所述第一个DMA表项是否空闲,若是,将所述第一个DMA表项作为所述目标DMA表项,在所述第一个DMA表项中至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识,并设置所述第一个DMA表项已被使用,且设置所述第一个DMA表项未链接有下一个DMA表项。
7.根据权利要求6所述的直接存储访问方法,其特征在于,所述根据所述目标表项索引在DMA表中确定目标DMA表项,在所述目标DMA表项至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识还包括:
若所述第一个DMA表项不空闲,基于所述第一个DMA表项中的链接索引,从具有所述目标表项索引的多个DMA表项中,查找最后一个DMA表项,其中,具有相同表项索引的多个DMA表项使用链接索引依序链接;
从空闲链表中确定一个空闲DMA表项作为目标DMA表项,在所述目标DMA表项中至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识,其中,空闲链表记录有空闲的DMA表项;
将所述最后一个DMA表项的链接索引设置为所述目标DMA表项的链接索引,并使所述最后一个DMA表项指向所述目标DMA表项,且设置所述目标DMA表项已被使用并且未链接有下一个DMA表项。
8.根据权利要求7所述的直接存储访问方法,其特征在于,一个DMA表项还记录有效位以及链接索引;其中,有效位的数值为第一值表示DMA表项不空闲,有效位的数值为第二值表示DMA表项空闲;链接索引用于指向具有相同表项索引的下一个DMA表项,且在链接索引为第二值时表示DMA表项未链接有下一个DMA表项。
9.根据权利要求1-8任一项所述的直接存储访问方法,其特征在于,所述配置请求信息还包括:第一加密内存页面的页面大小。
10.根据权利要求1所述的直接存储访问方法,其特征在于,还包括:
在DMA结束时,获取目标DMA表项的释放请求,所述释放请求中至少包括所述第一HPA;
在内存控制器中的DMA表中,释放与所述第一HPA对应的目标DMA表项。
11.根据权利要求10所述的直接存储访问方法,其特征在于,所述在内存控制器中的DMA表中,释放与所述第一HPA对应的目标DMA表项包括:
在内存控制器的DMA表中,查找与所述第一HPA对应的目标DMA表项;
将所述目标DMA表项的有效位设置为表示空闲的第二值,并将所述目标DMA表项加入到记录空闲的DMA表项的空闲链表中。
12.根据权利要求11所述的直接存储访问方法,其特征在于,所述在内存控制器的DMA表中,查找与所述第一HPA对应的目标DMA表项包括:
基于第一HPA确定目标表项索引;
确定DMA表中与所述目标表项索引对应的第一个DMA表项;
若所述第一个DMA表项的链接索引为第二值,将所述第一个DMA表项作为目标DMA表项,其中,DMA表项的链接索引为第二值,则表示DMA表项未链接有下一个DMA表项;
若所述第一个DMA表项的链接索引不为第二值,基于所述第一个DMA表项的链接索引,依序检索指向的下一个DMA表项,直至找到链接索引为第二值的最后一个DMA表项,将所述最后一个DMA表项作为目标DMA表项。
13.根据权利要求10所述的直接存储访问方法,其特征在于,还包括:
若释放的DMA表项的链接索引不为第二值,将释放的DMA表项指向的上一DMA表项的链接索引修改为,该释放的DMA表项的链接索引。
14.根据权利要求1所述的直接存储访问方法,其特征在于,所述基于所述配置请求信息,在内存控制器的DMA表中配置与所述第一HPA对应的目标DMA表项包括:
基于各个统一内存控制器UMC与HPA地址分布的映射关系,确定所述第一HPA对应的UMC;在所述第一HPA对应的UMC的DMA表中,配置与所述第一HPA对应的目标DMA表项。
15.一种直接存储访问方法,其特征在于,应用于内存控制器,所述方法包括:
获取直接存储访问DMA的地址信息,所述地址信息至少包括用于DMA的内存页面对应的主机物理地址HPA;
在DMA表中查找是否存在与所述HPA对应的目标DMA表项;
若DMA表中存在与所述HPA对应的目标DMA表项,基于所述目标DMA表项中记录的加密虚拟机的虚拟机标识,调用与所述虚拟机标识相绑定的所述加密虚拟机的密钥,对所述HPA对应的内存页面中的数据进行加解密。
16.根据权利要求15所述的直接存储访问方法,其特征在于,所述地址信息还包括:进行DMA的虚拟机的虚拟机标识,以及所述内存页面的加密标识;
在DMA表中查找是否存在与所述HPA对应的目标DMA表项之前,所述方法还包括:
判断所述地址信息中的虚拟机标识是否为空,若是,进入所述在DMA表中查找是否存在与所述HPA对应的目标DMA表项的步骤。
17.根据权利要求16所述的直接存储访问方法,其特征在于,还包括:
若所述地址信息中的虚拟机标识不为空,判断所述地址信息中的加密标识是否为第二值,其中,加密标识为第一值表示内存页面为加密内存页面,加密标识为第二值表示内存页面为普通内存页面;
若所述加密标识不为第二值,调用与所述地址信息中的虚拟标识相绑定的密钥,对所述HPA对应的内存页面中的数据进行加解密。
18.一种直接存储访问装置,其特征在于,应用于安全处理器,所述直接存储访问装置包括:
配置请求信息获取模块,用于获取配置请求信息,所述配置请求信息至少包括:加密虚拟机请求用于直接存储访问DMA的第一加密内存页面对应的第一主机物理地址HPA;
配置模块,用于基于所述配置请求信息,在内存控制器的DMA表中配置与所述第一HPA对应的目标DMA表项,所述目标DMA表项至少记录所述第一HPA以及所述加密虚拟机的虚拟机标识,以使内存控制器在所述加密虚拟机基于所述第一HPA发起DMA时,所述内存控制器基于所述目标DMA表项,调用与所述虚拟机标识绑定的密钥,对所述第一加密内存页面中的数据进行加解密。
19.一种直接存储访问装置,其特征在于,应用于内存控制器,所述直接存储访问装置包括:
地址信息获取模块,用于获取直接存储访问DMA的地址信息,所述地址信息至少包括用于DMA的内存页面对应的主机物理地址HPA;
查找模块,用于在DMA表中查找是否存在与所述HPA对应的目标DMA表项;
第一加解密模块,用于若DMA表中存在与所述HPA对应的目标DMA表项,基于所述目标DMA表项中记录的加密虚拟机的虚拟机标识,调用与所述虚拟机标识相绑定的所述加密虚拟机的密钥,对所述HPA对应的内存页面中的数据进行加解密。
20.一种安全处理器,其特征在于,所述安全处理器被配置为执行如权利要求1-14任一项所述的直接存储访问方法。
21.一种内存控制器,其特征在于,所述内存控制器被配置为执行如权利要求15-17任一项所述的直接存储访问方法。
22.一种电子设备,其特征在于,包括如权利要求20所述的安全处理器,以及如权利要求21所述的内存控制器。
CN202011362417.4A 2020-11-27 2020-11-27 一种直接存储访问方法、装置及相关设备 Active CN112416526B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011362417.4A CN112416526B (zh) 2020-11-27 2020-11-27 一种直接存储访问方法、装置及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011362417.4A CN112416526B (zh) 2020-11-27 2020-11-27 一种直接存储访问方法、装置及相关设备

Publications (2)

Publication Number Publication Date
CN112416526A true CN112416526A (zh) 2021-02-26
CN112416526B CN112416526B (zh) 2023-02-17

Family

ID=74842271

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011362417.4A Active CN112416526B (zh) 2020-11-27 2020-11-27 一种直接存储访问方法、装置及相关设备

Country Status (1)

Country Link
CN (1) CN112416526B (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 (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7249241B1 (en) * 2004-04-29 2007-07-24 Sun Microsystems, Inc. Method and apparatus for direct virtual memory address caching
US20160239430A1 (en) * 2015-02-12 2016-08-18 Red Hat Israel, Ltd. Local access dma with shared memory pool
CN110928646A (zh) * 2019-11-22 2020-03-27 海光信息技术有限公司 一种访问共享内存的方法、装置、处理器和计算机系统
CN111090869A (zh) * 2019-12-16 2020-05-01 海光信息技术有限公司 一种数据加密方法、处理器及计算机设备
CN111381926A (zh) * 2018-12-27 2020-07-07 中兴通讯股份有限公司 一种虚拟化方法和装置
CN111949372A (zh) * 2020-08-17 2020-11-17 海光信息技术有限公司 一种虚拟机迁移方法、通用处理器及电子设备

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7249241B1 (en) * 2004-04-29 2007-07-24 Sun Microsystems, Inc. Method and apparatus for direct virtual memory address caching
US20160239430A1 (en) * 2015-02-12 2016-08-18 Red Hat Israel, Ltd. Local access dma with shared memory pool
CN111381926A (zh) * 2018-12-27 2020-07-07 中兴通讯股份有限公司 一种虚拟化方法和装置
CN110928646A (zh) * 2019-11-22 2020-03-27 海光信息技术有限公司 一种访问共享内存的方法、装置、处理器和计算机系统
CN111090869A (zh) * 2019-12-16 2020-05-01 海光信息技术有限公司 一种数据加密方法、处理器及计算机设备
CN111949372A (zh) * 2020-08-17 2020-11-17 海光信息技术有限公司 一种虚拟机迁移方法、通用处理器及电子设备

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
CN112416526B (zh) 2023-02-17

Similar Documents

Publication Publication Date Title
CN109858265B (zh) 一种加密方法、装置及相关设备
CN109800050B (zh) 一种虚拟机的内存管理方法、装置、相关设备及系统
US6839437B1 (en) Method and apparatus for managing keys for cryptographic operations
US20180218156A1 (en) Encryption and Decryption Method and Apparatus in Virtualization System, and System
CN112433817B (zh) 信息配置方法、直接存储访问方法及相关装置
US10164955B1 (en) Volatile encryption keys
CN107590395B (zh) 适用于云环境的多层数据加密方法、装置、设备及系统
CA3176858A1 (en) Data processing method and system
CN109726575B (zh) 一种数据加密方法及装置
US20230106435A1 (en) Application processing method and apparatus, cloud environment, medium, and program product
CN111967065B (zh) 一种数据保护方法、处理器及电子设备
CN115225269A (zh) 分布式密码卡的密钥管理方法、装置和系统
JP5524355B2 (ja) 仮想計算機管理方法、計算機システム及び計算機
CN110334531B (zh) 虚拟机密钥的管理方法、主节点、系统、存储介质及装置
KR20080029687A (ko) 암호화 기능이 내장된 메모리를 이용한 고속 대용량의암호화 장치 및 그 구현 방법
CN112416526B (zh) 一种直接存储访问方法、装置及相关设备
CN111858094A (zh) 一种数据复制粘贴方法、系统及电子设备
CN112416525B (zh) 设备驱动初始化方法、直接存储访问方法及相关装置
CN116126463A (zh) 内存访问方法、配置方法、计算机系统及相关器件
US9135449B2 (en) Apparatus and method for managing USIM data using mobile trusted module
CN113569265B (zh) 一种数据处理方法、系统及装置
WO2021164167A1 (zh) 一种密钥存取方法、装置、系统、设备和存储介质
KR20140088962A (ko) 클라우드 환경에서의 데이터 저장 시스템 및 방법
CN108449358B (zh) 基于云的低延时安全计算方法
CN117375804B (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