CN114238185A - 直接存储访问及命令数据传输方法、装置及相关设备 - Google Patents

直接存储访问及命令数据传输方法、装置及相关设备 Download PDF

Info

Publication number
CN114238185A
CN114238185A CN202111561726.9A CN202111561726A CN114238185A CN 114238185 A CN114238185 A CN 114238185A CN 202111561726 A CN202111561726 A CN 202111561726A CN 114238185 A CN114238185 A CN 114238185A
Authority
CN
China
Prior art keywords
dma
command
virtual machine
channel
data
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
Application number
CN202111561726.9A
Other languages
English (en)
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 CN202111561726.9A priority Critical patent/CN114238185A/zh
Publication of CN114238185A publication Critical patent/CN114238185A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • 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
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/45587Isolation or security of virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)

Abstract

本发明实施例提供一种直接存储访问及命令数据传输方法、装置及相关设备,所述直接存储访问方法在向DMA设备发出DMA命令时,同时发送对应该加密虚拟机的虚拟机标识,从而DMA设备进行与加密内存的数据传输时,IOMMU能够将IO页表转换得到的HPA与该虚拟机标识相结合,形成新的目标HPA,以使得内存控制器能够基于所述目标HPA中的虚拟机标识,调用与所述虚拟机标识对应的密钥,对HPA对应的加密内存页面进行数据的加/解密和数据的传输,使得DMA设备与加密内存空间实现直接、高效的数据传输的目的。

Description

直接存储访问及命令数据传输方法、装置及相关设备
技术领域
本发明实施例涉及虚拟机技术领域,具体涉及一种直接存储访问及命令数据传输方法、装置及相关设备。
背景技术
DMA(Direct Memory Access,直接存储访问)技术是使与主机连接的外部设备不通过CPU,即可直接与物理内存交换数据的接口技术;在安全虚拟化技术下,由于加密虚拟机的加密内存空间中的数据以密文形式存在,导致DMA设备无法直接、高效的与加密内存空间进行数据传输。
因此如何提供改进方案,以为DMA设备能够直接、高效的与加密内存空间进行数据传输提供基础,成为了本领域技术人员亟需解决的技术问题。
发明内容
有鉴于此,本发明实施例提供一种直接存储访问及命令数据传输方法、装置及相关设备,以为DMA设备能够直接、高效的与加密内存空间进行数据传输提供基础。
为实现上述目的,本发明实施例提供如下技术方案:
一种直接存储访问方法,应用于输入输出内存管理单元IOMMU,所述方法包括:
获取直接存储访问DMA设备的DMA请求,所述DMA请求包括虚拟机标识;
确定所述DMA请求所需访问的内存数据的主机物理地址HPA;
将所述HPA与所述虚拟机标识相结合,形成目标HPA;
利用所述目标HPA控制内存控制器,以使内存控制器基于与所述虚拟机标识对应的密钥,对所述HPA对应的加密内存进行数据的加/解密和数据的传输。
可选的,所述虚拟机标识设置在所述DMA请求所需访问的内存的GPA中,所述确定所述DMA请求所需访问的内存的主机物理地址HPA,包括:
获取所述DMA请求中,所需访问的内存的GPA;
去除所述GPA中的虚拟机标识;
基于去除虚拟机标识后的GPA,查找与之对应的HPA。
可选的,所述DMA请求所需访问的内存数据的GPA中设置有加密标识,所述去除所述GPA中的虚拟机标识的步骤中,还包括:去除所述GPA中的加密标识。
可选的,所述将所述HPA与所述虚拟机标识相结合,形成目标HPA,包括:
在所述GPA中提取所述虚拟机标识;
将所述虚拟机标识设置在所述HPA中,形成目标HPA。
可选的,所述在所述GPA中提取所述虚拟机标识,还包括:在所述GPA中提取所述加密标识;
所述将所述虚拟机标识设置在所述HPA中,还包括:将所述加密标识设置在所述HPA中。
本发明实施例还提供一种直接存储访问方法,应用于直接存储访问DMA设备,包括:
接收DMA命令,所述DMA命令包括虚拟机标识;
响应于所述DMA命令,向输入输出内存管理单元IOMMU发送DMA请求;所述DMA请求包括所述虚拟机标识,以使内存控制器基于与所述虚拟机标识对应的密钥,对所需访问的加密内存进行数据的加/解密和数据的传输;
在内存控制器响应所述DMA请求进行加密内存的数据传输时,接收所述内存控制器传输的数据。
可选的,所述DMA请求中,所述虚拟机标识设置在所述DMA设备所需访问的内存的客户机物理地址GPA中。
可选的,所述响应于所述DMA命令,向输入输出内存管理单元IOMMU发送DMA请求的步骤之前,还包括:
构建用于传输命令数据的安全通道。
可选的,所述构建用于传输命令数据的安全通道,包括:
接收第一密文,所述第一密文由芯片公钥为设备驱动生成的公钥加密得到;
采用芯片私钥对所述第一密文解密,得到所述设备驱动生成的公钥;
生成通道密钥信息;
以解密得到的公钥为所述通道密钥信息加密,形成第二密文;
将所述第二密文发送至设备驱动,以使设备驱动基于其所生成的私钥为所述第二密文解密,获取所述通道密钥信息,形成具有加密保护的安全通道。
可选的,所述接收第一密文,具体为,接收安全通道创建命令,所述安全通道创建命令包括所述第一密文。
可选的,所述接收DMA命令的步骤之后,所述响应于所述DMA命令,向输入输出内存管理单元IOMMU发送DMA请求的步骤之前,还包括:
基于所述安全通道的通道密钥信息为所述DMA命令解密。
可选的,所述接收所述内存控制器传输的数据的步骤之后,还包括:
基于所传输数据的上下文标识,将所传输数据存储至与所述上下文标识对应的片上内存。
本发明实施例还提供一种直接存储访问方法,应用于设备驱动,包括:
在加密虚拟机生成直接存储访问DMA命令后,获取所述DMA命令对应的虚拟机标识;
在DMA命令中设置所述虚拟机标识;
将带有所述虚拟机标识的DMA命令发送至DMA设备。
可选的,所述获取DMA命令之后,所述获取所述DMA命令对应的虚拟机标识之前,还包括:
获取生成DMA命令的虚拟机的安全状态;
在生成DMA命令的虚拟机为加密虚拟机时,执行所述获取所述DMA命令对应的虚拟机标识。
可选的,所述获取所述DMA命令对应的虚拟机标识,具体为,读取模型特定寄存器中存储的虚拟机标识,所述模型特定寄存器与生成所述DMA命令的加密虚拟机相对应。
可选的,所述获取所述DMA命令对应的虚拟机标识,包括:
向加密虚拟机发送虚拟机标识获取请求,以使加密虚拟机安全调用安全处理器中的虚拟机标识;
获取加密虚拟机安全调用得到的虚拟机标识。
可选的,所述DMA命令包括DMA设备所需访问的内存的客户机物理地址GPA,所述在DMA命令中设置所述虚拟机标识,具体为,在所述客户机物理地址GPA中,设置所述虚拟机标识。
可选的,所述在DMA命令中设置所述虚拟机标识的步骤中,还包括,在DMA命令中设置加密标识,所述加密标识用于指示所述DMA命令中,所需访问的内存是否为加密内存。
可选的,所述DMA命令包括用于传输至DMA设备的内存数据的客户机物理地址GPA,所述在DMA命令中设置加密标识,具体为,在所述客户机物理地址GPA中,设置所述加密标识。
可选的,所述将带有所述虚拟机标识的DMA命令发送至DMA设备之前,还包括:
构建用于传输命令数据的安全通道;
所述将带有所述虚拟机标识的DMA命令发送至DMA设备,包括:
基于所述安全通道的通道密钥信息为所述DMA命令加密,形成加密命令数据;
将所述加密命令数据发送至DMA设备。
可选的,所述构建用于传输命令数据的安全通道,包括:
生成相匹配的公钥和私钥;
获取DMA设备的芯片公钥,并以所述芯片公钥为所生成的公钥加密,形成第一密文;
发送所述第一密文至所述DMA设备,以使所述DMA设备生成通道密钥信息,并基于解密得到的公钥为所述通道密钥信息加密,形成第二密文;
接收所述第二密文;
采用私钥为所述第二密文解密,获取所述通道密钥信息,以形成具有加密保护的安全通道。
可选的,所述发送所述第一密文至所述DMA设备,包括:
发送安全通道创建命令,所述安全通道创建命令包括所述第一密文。
本发明实施例还提供一种命令数据传输方法,应用于设备驱动,包括:
构建用于传输命令数据的安全通道,其中,所述安全通道基于数据加解密机制实现数据传输;
基于所述安全通道的通道密钥信息,加密待传输的命令数据,形成加密命令数据;
发送所述加密命令数据。
可选的,所述设备驱动与直接存储访问DMA设备之间的数据传输通道还包括引导通道,所述引导通道通过明文进行传输;所述构建用于传输命令数据的安全通道的步骤之后,所述基于所述安全通道的通道密钥信息,加密待传输的命令数据的步骤之前,还包括:
判断设备驱动待传输的命令数据所访问的资源是否为安全资源;
在设备驱动待传输的命令数据所访问的资源为安全资源时,执行所述基于所述安全通道的通道密钥信息,加密待传输的命令数据,形成加密命令数据的步骤;在设备驱动待传输的命令数据所访问的资源不为安全资源时,通过所述引导通道发送所述命令数据。
可选的,所述判断设备驱动发送的命令数据所访问的资源是否为安全资源之后,所述基于所述安全通道的通道密钥信息,加密待传输的命令数据,形成加密命令数据之前,还包括,判断待传输的命令数据中,是否包括读取命令;
若是,则确定访问错误,若否,则执行所述基于所述安全通道的通道密钥信息,加密待传输的命令数据,形成加密命令数据的步骤。
可选的,所述构建用于传输命令数据的安全通道,包括:
接收第一密文,所述第一密文由芯片公钥为设备驱动生成的公钥加密得到;
采用芯片私钥对所述第一密文解密,得到所述设备驱动生成的公钥;
生成通道密钥信息;
以解密得到的公钥为所述通道密钥信息加密,形成第二密文;
将所述第二密文发送至设备驱动,以使设备驱动基于其所生成的私钥为所述第二密文解密,获取所述通道密钥信息,形成具有加密保护的安全通道。
可选的,所述接收第一密文,具体为,接收安全通道创建命令,所述安全通道创建命令包括所述第一密文。
可选的,所述通道密钥信息包括通道密钥,以及,完整性密钥、初始向量、轮值中的至少一个或多个。
可选的,所述通道密钥信息包括通道密钥、完整性密钥、初始向量和轮值;
所述基于所述安全通道的通道密钥信息,加密待传输的命令数据,形成加密命令数据,包括:
利用通道密钥加密待传输的命令数据,得到加密密文;
利用完整性密钥、加密密文和轮值,计算得到完整性验证密文;
所述加密密文和所述完整性验证密文,作为所述加密命令数据。
本发明实施例还提供一种命令数据传输方法,应用于直接存储访问DMA设备,包括:
构建用于传输命令数据的安全通道,其中,所述安全通道基于数据加解密机制实现数据传输;
获取加密命令数据;
基于所述安全通道的通道密钥信息,解密所述加密命令数据,得到命令数据。
可选的,所述构建用于传输命令数据的安全通道,包括:
生成相匹配的公钥和私钥;
获取DMA设备的芯片公钥,并以所述芯片公钥为所生成的公钥加密,形成第一密文;
发送所述第一密文至所述DMA设备,以使所述DMA设备生成通道密钥信息,并基于解密得到的公钥为所述通道密钥信息加密,形成第二密文;
接收所述第二密文;
采用私钥为所述第二密文解密,获取所述通道密钥信息,以形成具有加密保护的安全通道。
可选的,所述通道密钥信息包括通道密钥,以及,完整性密钥、初始向量、轮值中的至少一个或多个。
可选的,所述通道密钥信息包括通道密钥、完整性密钥、初始向量和轮值;所述加密命令数据包括加密密文和完整性验证密文;
所述基于所述安全通道的通道密钥信息,解密所述加密命令数据,得到命令数据,包括:
利用完整性密钥、加密密文和轮值,验证完整性验证密文;
若验证通过,利用通道密钥对加密密文进行解密,得到命令数据。
可选的,所述解密所述加密命令数据,得到命令数据的步骤之后,还包括:
基于所述命令数据中的上下文标识,为对应的命令分配片上内存。
可选的,所述基于所述命令数据中的上下文标识,为对应的命令分配片上内存,包括:
在标识记录表中更新当前的上下文标识及其所分配的片上内存,所述标识记录表用于记录上下文标识及其所分配的片上内存的对应关系。
可选的,所述基于所述命令数据中的上下文标识,为对应的命令分配片上内存之后,还包括:
基于所述命令数据中的上下文标识,将所述命令数据存储至与所述上下文标识对应的片上内存。
本发明实施例还提供一种直接存储访问装置,包括:
请求获取模块,用于获取直接存储访问DMA设备的DMA请求,所述DMA请求包括虚拟机标识;
地址确定模块,用于确定所述DMA请求所需访问的内存数据的主机物理地址HPA;
地址形成模块,用于将所述HPA与所述虚拟机标识相结合,形成目标HPA;
数据传输模块,用于利用所述目标HPA控制内存控制器,以使内存控制器基于与所述虚拟机标识对应的密钥,对所述HPA对应的加密内存进行数据的加/解密和数据的传输。
本发明实施例还提供一种直接存储访问装置,包括:
命令接收模块,用于接收DMA命令,所述DMA命令包括虚拟机标识;
请求发送模块,用于响应于所述DMA命令,向输入输出内存管理单元IOMMU发送DMA请求;所述DMA请求包括所述虚拟机标识,以使内存控制器基于与所述虚拟机标识对应的密钥,对所需访问的加密内存进行数据的加/解密和数据的传输;
数据接收模块,用于在内存控制器响应所述DMA请求进行加密内存的数据传输时,接收所述内存控制器传输的数据。
本发明实施例还提供一种直接存储访问装置,包括:
标识获取模块,用于在加密虚拟机生成直接存储访问DMA命令后,获取所述DMA命令对应的虚拟机标识;
标识设置模块,用于在DMA命令中设置所述虚拟机标识;
命令发送模块,用于将带有所述虚拟机标识的DMA命令发送至DMA设备。
本发明实施例还提供一种命令数据传输装置,包括:
第三通道构建模块,用于构建用于传输命令数据的安全通道,其中,所述安全通道基于数据加解密机制实现数据传输;
加密命令形成模块,用于基于所述安全通道的通道密钥信息,加密待传输的命令数据,形成加密命令数据;
加密命令发送模块,用于发送所述加密命令数据。
本发明实施例还提供一种命令数据传输装置,包括:
第四通道构建模块,用于构建用于传输命令数据的安全通道,其中,所述安全通道基于数据加解密机制实现数据传输;
加密命令获取模块,用于获取加密命令数据;
命令解密模块,用于基于所述安全通道的通道密钥信息,解密所述加密命令数据,得到命令数据。
本发明实施例还提供一种输入输出内存管理单元IOMMU,所述IOMMU被配置为执行本发明实施例提供的直接存储访问方法。
本发明实施例还提供一种直接存储访问DMA设备,所述DMA设备被配置为执行本发明实施例提供的直接存储访问方法,和/或,执行本发明实施例提供的所述的命令数据传输方法。
可选的,所述DMA设备包括密码协处理器,所述密码协处理器用于为DMA设备提供加解密服务和摘要计算服务。
本发明实施例还提供一种电子设备,包括本发明实施例提供的输入输出内存管理单元,本发明实施例提供的直接存储访问DMA设备,以及设备驱动,其中,所述设备驱动被配置为执行本发明实施例提供的直接存储访问方法,和/或,执行本发明实施例提供的命令数据传输方法。
本发明实施例提供一种直接存储访问及命令数据传输方法、装置及相关设备,所述方法在向DMA设备发出DMA命令时,同时发送对应该加密虚拟机的虚拟机标识,从而DMA设备进行与加密内存的数据传输时,IOMMU能够将IO页表转换得到的HPA与该虚拟机标识相结合,形成新的目标HPA,以使得内存控制器能够基于所述目标HPA中的虚拟机标识,调用与所述虚拟机标识对应的密钥,对HPA对应的加密内存页面进行数据的加/解密和数据的传输,使得DMA设备与加密内存空间实现直接、高效的数据传输的目的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为云服务场景的虚拟化技术架构;
图2为一种云主机的可选架构;
图3为本发明实施例提供的可选的虚拟化技术架构示意图;
图4为本发明实施例提供的直接存储访问方法的可选流程图;
图5为本发明实施例提供的一种可选的MSR结构图;
图6为本发明实施例提供的虚拟机标识安全调用的可选流程图;
图7为本发明实施例提供的一种可选的GPA格式示例图;
图8为本发明实施例提供的步骤S15的可选流程图;
图9为本发明实施例提供的步骤S16的可选流程图;
图10为本发明实施例提供的一种可选的HPA格式示例图;
图11为本发明实施例提供的DMA设备的可选结构示意图;
图12为本发明实施例提供的命令数据传输方法的可选流程图;
图13为本发明实施例提供的命令数据传输方法的另一可选流程图;
图14为本发明实施例提供的建立DMA设备与加密虚拟机的设备驱动的安全通道的可选流程;
图15为本发明实施例提供的context结构示例图;
图16为本发明实施例提供的直接存储访问装置的可选框图;
图17为本发明实施例提供的直接存储访问装置的另一可选框图;
图18为本发明实施例提供的直接存储访问装置的再一可选框图;
图19为本发明实施例提供的命令数据传输装置的可选框图;
图20为本发明实施例提供的命令数据传输装置的另一可选框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
随着云服务的发展,虚拟化技术在云服务这一场景中得到了越来越广泛的应用。虚拟化技术可以使用户将业务系统以虚拟机的形式部署在云主机上,从而降低自身的运营成本。
为避免云主机的主机操作系统获取虚拟机中的内存数据,保证用户云计算的安全,参照图1所示云服务场景的虚拟化技术架构,虚拟机的内存数据可以在加密后再进行存储。其中,虚拟机VM(Virtual Machine)运行在主机操作系统host OS和虚拟机管理器VMM(Virtual Machine Monitor)上,相应的内存数据则可以通过加密引擎(例如SM4国标分组加密引擎)进行加/解密,并在加密后存储在云主机的内存DRAM上。
其中,为进一步保证各虚拟机之间的数据的独立性,不同虚拟机对应有不同的密钥,以图1为例,对应asid=1的虚拟机对应有密钥1,对应asid=2的虚拟机对应有密钥2,以此类推,对应asid=n的虚拟机n对应有密钥n,其中,asid(Address Space ID)用于指示虚拟机的虚拟机标识,不同虚拟机对应有不同的asid。
具体在虚拟机的运行过程中,硬件基于虚拟机标识标记对应该虚拟机的代码和数据,而在内存数据的加/解密过程中,加密引擎则基于虚拟机标识确定虚拟机的密钥,并进一步基于该密钥对内存数据进行加/解密。
在云主机中,并非所有的虚拟机都进行内存数据的加/解密,也并非所有的内存数据都执行加/解密流程,为便于说明,本发明实施例将分配密钥的虚拟机称为加密虚拟机,未分配密钥的虚拟机称为普通虚拟机;同时,将存储加密内存数据的内存称为加密内存,存储未加密内存数据的内存称为普通内存。需要说明的是,采用国标加密的安全虚拟化技术生成的虚拟机为CSV VM,其中,CSV为China Secure Virtualization,国标安全虚拟化技术。
为提高系统的运行效率,降低CPU(Central Processing Unit,中央处理器)的负载,云主机上可以进一步部署DMA设备,实现DMA与物理内存进行直接的数据交换。其中,所述DMA设备,可以理解为能够实现DMA功能的设备,相应的,在本发明实施例中,能够实现DMA功能的硬盘、GPU(Graphic Processor Unit,图形处理单元)、FPGA(Field ProgrammableGate Array,现场可编程逻辑门阵列)等设备,都可以理解为DMA设备。以DMA设备为GPU为例,参考图2示出的一种云主机的可选架构,所述云主机包括:CPU SOC(CPU片上系统)、GPU和内存。
CPU SOC可以理解为设置有CPU的芯片,该芯片上除了设置有CPU以外,还可以设置有辅助CPU运行的硬件结构,其中,主机操作系统(host OS)运行在CPU SOC上,加密虚拟机运行在主机操作系统上。
加密虚拟机可以通过提前配置的虚拟GPU设备与真实的GPU设备交互。具体的,在需要使用GPU设备的资源时,调用GPU驱动和/GPU运行库进行GPU设备的访问,从而控制GPU设备执行相应的命令。
CPU SOC通过MMIO(memory mapped io,内存映射I/O)接口连接GPU设备,并通过MMIO向GPU中的命令缓存区(command buffer)内注入命令。
GPU中可以设置用于实现DMA功能的DMA模块,并利用CPU SOC中的IOMMU(Input/Output Memory Management Unit,输入输出内存管理单元)实现内存数据的传输。
CPU SOC中,密码处理器将内存数据加密后存储在内存的加密内存中。然而,当主机操作系统连接DMA设备时,由于加密虚拟机的加密内存空间中的数据以密文形式存在,导致DMA设备并不能直接的获取到其所需要的内存数据(即虚拟机的原内存数据,在此可以理解为加密前,或密文经解密后得到的内存数据),而是需要加密虚拟机首先将密文进行解密,并拷贝至普通内存中之后,由DMA设备从普通内存中将内存数据拷贝至DMA设备。
基于上述情况,本发明实施例考虑在向DMA设备发出DMA命令时,同时发送对应该加密虚拟机的虚拟机标识,从而DMA设备进行与加密内存的数据传输时,IOMMU能够将IO页表转换得到的HPA与该虚拟机标识相结合,形成新的目标HPA,以使得内存控制器能够基于所述目标HPA中的虚拟机标识,调用与所述虚拟机标识对应的密钥,对HPA对应的加密内存页面进行数据的加/解密和数据的传输,使得DMA设备与加密内存空间实现直接、高效的数据传输的目的。
在此思路下,本发明实施例提供改进的直接存储访问方法,以在直接存储访问过程中,使得IOMMU能够在DMA设备的数据项中配置加密虚拟机的虚拟机标识,使得DMA设备能够直接、高效的与加密内存空间进行数据的加/解密和数据的传输,提升DMA的传输效率。
下面将对本发明实施例提供的直接存储访问方法进行详细介绍。
在可选实现中,图3示出了本发明实施例提供的可选的虚拟化技术架构示意图,如图3所示,该虚拟化技术架构基于安全虚拟化技术实现,具体可以包括:CPU SOC、GPU设备和内存。
其中,CPU SOC、GPU设备和内存的基本介绍可参照前文相应部分的描述,下文将进一步说明这些部件在本发明实施例中的改进作用和关系;值得注意的是,在本发明实施例中,加密虚拟机中的设备驱动(即GPU驱动)支持asid查询功能,IOMMU支持带有asid的IO页表功能。
在本发明实施例中,图3所示技术架构中还设置了安全处理器,用于为加密虚拟机的内存配置相应的密钥,并以加密虚拟机的虚拟机标识asid进行标记,以使得密码处理器基于虚拟机标识asid进行内存数据的加解密;
另外,内存管理器MMU是负责处理CPU的内存访问请求的计算机硬件,它的功能包括虚拟内存管理、内存保护等,虚拟内存管理主要包括页表的构建、虚拟机虚拟地址(GuestVirtual Address,GVA)到主机物理地址(Host Physical Address,HPA)的转换等。例如,在进行加密虚拟机的页表的构建流程中,内存管理器基于虚拟机管理器VMM的命令,为加密虚拟机建立虚拟页表gPT和嵌套页表nPT。其中,在一个可选的示例中,所建立的嵌套页表nPT中,客户机物理地址GPA中可以带有虚拟机标识asid。
基于图3所示可选架构,在一种可选实现中,图4示出了本发明实施例提供的直接存储访问方法的可选流程图,如图4所示,该流程可以包括:
步骤S10、设备驱动在加密虚拟机生成DMA命令后,获取所述DMA命令对应的虚拟机标识;
可以理解的是,在加密虚拟机生成DMA命令后,会调用设备驱动访问DMA设备。而设备驱动加密虚拟机生成DMA命令后,可以获取该DMA命令,从而获取所述DMA命令对应的虚拟机标识。
其中,所述DMA命令对应的虚拟机标识,指的是生成所述DMA命令的虚拟机的虚拟机标识。在本示例中,在获取DMA命令后,即可基于所述DMA命令,确定生成DMA命令的虚拟机,进而可以获取生成所述DMA命令的虚拟机的虚拟机标识。
需要说明的是,云主机中,虚拟机可以仅包括加密虚拟机,也可以同时包括普通虚拟机和加密虚拟机,基于本发明实施例针对加密虚拟机的加密内存数据的DMA,在虚拟机同时包括普通虚拟机和加密虚拟机时,还进一步确定生成DMA命令的虚拟机的安全状态,进而可以确定生成DMA命令的虚拟机是否为加密虚拟机,从而在生成DMA命令的虚拟机为加密虚拟机时,执行所述获取所述DMA命令对应的虚拟机标识的步骤。
在一个可选的示例中,可以从所述加密虚拟机对应的模型特定寄存器(ModelSpecific Register,MSR)中读取所述虚拟机标识。
模型特定寄存器用于存储加密虚拟机的asid。其中,安全处理器拥有对该MSR的读写权限,加密虚拟机对MSR中存储的asid只读,相应的,加密虚拟机中的设备驱动对MSR只读。在加密虚拟机的启动阶段,安全处理器负责把asid写入MSR。一种可选的MSR结构可以参考图5所示,受asid的长度限制,bit0-8可以为asid使用,剩余空间可以为保留(reserved)空间。
在另一个可选的示例中,所述设备驱动还可以通过加密虚拟机安全调用安全处理器中的asid。具体的,参考图6所示的虚拟机标识安全调用的可选流程图,步骤S10可以包括:
步骤S101、设备驱动向加密虚拟机发送虚拟机标识获取请求,以使加密虚拟机安全调用安全处理器中的虚拟机标识;
相应的,加密虚拟机在接收到所述虚拟机标识获取请求后,安全调用安全处理器中的虚拟机标识,从而得到所述加密虚拟机对应的虚拟机标识。
步骤S102、设备驱动获取加密虚拟机安全调用得到的虚拟机标识。
通过获取加密虚拟机的虚拟机标识,用于使发出的DMA命令中携带有改虚拟机标识,从而可以基于该虚拟机标识,实现需访问的内存数据的加解密。
继续参考图4,执行步骤S11、设备驱动在DMA命令中设置所述虚拟机标识;
通过在DMA命令中设置所述虚拟机标识,以使得后续中的DMA流程可以基于所述虚拟机标识实现内存数据的解密。
在DMA命令中,包含有需访问的内存的客户机物理地址GPA,以指示所需访问的内存的位置。其中,本示例所述的访问,包括对数据的读取和写入。在一个可选的示例中,可以在DMA命令中的客户机物理地址GPA中,设置所述虚拟机标识。参考图7示出的一种可选的GPA格式示例图,其中,GPA的48至56位可以定义为虚拟机标识位,所述虚拟机标识可以设置在所述虚拟机标识位中,从而在GPA中设置对应的虚拟机标识。
在进一步的可选示例中,还可以同时在所述DMA命令中设置加密标识c-bit,以指示所述DMA命令中,所需访问的内存是否为加密内存。具体的,可以定义所述加密标识为第一值(例如c-bit为1)时,指示DMA设备所需访问的内存为加密内存,所述加密标识为第二值(例如c-bit为0)时,指示用于DMA设备所需访问的内存为普通内存。
相应的,可以在DMA命令中,DMA设备所需访问的内存的客户机物理地址GPA中设置加密标识。参考图7示出的GPA格式示例图,其中,GPA的47位可以定义为加密标识位,所述加密标识可以设置在所述加密标识位中,从而在GPA中设置对应的加密标识。
继续参考图4,执行步骤S12、设备驱动将带有所述虚拟机标识的DMA命令发送至DMA设备;
在将所述虚拟机标识设置完毕后,可以将该DMA命令发送至DMA设备。相应的,所述DMA设备可以接收所述DMA命令。
继续参考图4,执行步骤S13、DMA设备响应于所述DMA命令,向IOMMU发送DMA请求;
所述DMA请求包括所述虚拟机标识,以使内存控制器基于与所述虚拟机标识对应的密钥,对所需访问的加密内存进行数据的加/解密和数据的传输;
其中,所述虚拟机标识可以通过解析DMA命令后得到,并在生成DMA请求时,将所述虚拟机标识设置在所述DMA请求中。或者,在可选示例中,考虑基于所述DMA命令生成的DMA请求中,必然在DMA请求中设置所需访问的内存数据对应的地址信息,因此,在所述虚拟机标识设置在GPA中时,可以直接基于原有的流程进行DMA请求的生成和发送,而不必特意执行所述虚拟机标识设置于所述DMA请求中的步骤。
步骤S14、IOMMU获取DMA设备的DMA请求;
其中,所述DMA请求包括虚拟机标识,从而基于所述虚拟机标识,实现对所需访问的加密内存进行数据的加/解密。
继续参考图4,执行步骤S15、IOMMU确定所述DMA请求所需访问的内存数据的主机物理地址HPA;
IOMMU在获取DMA请求后,可确定所述DMA请求对应的HPA。在可选实现中,IOMMU可通过查找IO页表,获取所述DMA请求对应的HPA。
可以理解的是,IOMMU需要基于DMA请求中,所需访问的内存数据的GPA,查到IO页表,从而获取对应该GPA的HPA。
在所述虚拟机标识设置在GPA中时,IOMMU可以将所述GPA中的虚拟机标识去除,进而执行相应的HPA查找流程。具体的,参考图8所示的步骤S15的可选流程图,步骤S15包括:
步骤S150、获取所述DMA请求中,所需访问的内存的GPA;
步骤S151、去除所述GPA中的虚拟机标识;
其中,所述去除可以为将对应的信息清零(mask)。
步骤S152、基于去除虚拟机标识后的GPA,查找与之对应的HPA。
其中,需要说明的是,在步骤S151去除所述GPA中的虚拟机标识的过程中,若所述GPA中还包括加密标识时,则步骤S151同时去除所述GPA中的加密标识。
另外,可以理解的是,在查找所述HPA失败时,可以产生缺页错误,从而使得主机操作系统为该GPA分配物理内存,并更新IO页表。
继续参考图4,执行步骤S16、IOMMU将所述HPA与所述虚拟机标识相结合,形成目标HPA;
IOMMU在确定所述HPA对应的虚拟机标识后,可将所述HPA与所述虚拟机标识相结合,形成新的目标HPA,IOMMU可利用该目标HPA,实现DMA设备与所述HPA对应的加密内存页面的数据加/解密和数据传输。
其中,所述虚拟机标识可以从所述DMA请求中获取。在虚拟机标识设置在所述DMA请求所需访问的内存数据的GPA中时,参考图9示出的步骤S16的可选流程图,步骤S16可以包括:
步骤S160、在所述GPA中提取所述虚拟机标识;
具体的,可以基于GPA中预设的虚拟机标识位中提取所述虚拟机标识。在DMA请求所需访问的内存的GPA中还设置有加密标识时,本步骤还可以同时包括,在GPA中提取所述加密标识(c-bit)。
步骤S161、将所述虚拟机标识设置在所述HPA中,形成目标HPA。
其中,所述HPA的格式可以参考图10示出的HPA格式示例图,HPA的48至56位可以定义为虚拟机标识位,所述虚拟机标识可以设置在所述虚拟机标识位中;
在DMA请求所需访问的内存数据的GPA中还设置有加密标识时,本步骤还可以同时包括,将所述加密标识设置在所述HPA中。
具体的,参考图10示出的HPA格式示例图,HPA的47位可以定义为加密标识位,所述加密标识可以设置在所述加密标识位中。当然,图10所示目标HPA的结构仅是示例性的,本发明实施例也可采用其他结构形式的能结合HPA,asid和c-bit的目标HPA。
继续参考图4,执行步骤S17、IOMMU利用所述目标HPA控制内存控制器,以使内存控制器基于与所述虚拟机标识对应的密钥,对所述HPA对应的加密内存进行数据的加/解密和数据的传输;
IOMMU在得到目标HPA后,可利用所述目标HPA对内存控制器进行控制,使得内存控制器基于与所述虚拟机标识绑定的密钥,在所述HPA对应的加密内存进行数据的加/解密和数据的传输,实现DMA设备与加密内存直接、高效的数据传输,避免了加密虚拟机需要先将加密内存中的数据解密后再存储到普通内存空间的过程,提升了DMA的传输效率。
可选的,IOMMU可将所述目标HPA发送给内存控制器,以使得内存控制器基于与所述虚拟机标识绑定的密钥,在所述HPA对应的加密内存进行数据的加/解密和数据的传输;在更为具体的可选实现中,DMA设备在所述HPA对应的加密内存页面的数据传输可以分为写数据和读数据的过程,可以理解的是,由于加密内存页面为加密状态,因此,在写数据时,需要将数据以加密虚拟机的密钥加密后,写入加密内存页面,在读数据时,需要将加密内存页面中的数据以加密虚拟机的密钥解密后,再读取出来;
在一种示例中,在写数据时,内存控制器获取目标HPA后,可解析目标HPA,在判断目标HPA中的c-bit为第一值后,内存控制器可调用与asid绑定的密钥,对数据进行加密后,写入目标HPA中HPA对应的加密内存页面;在读数据时,内存控制器获取目标HPA后,可解析目标HPA,在判断目标HPA中的c-bit为第一值后,内存控制器可从目标HPA中HPA对应的加密内存页面,读取出加密数据,使用与asid绑定的密钥,对读取的加密数据进行解密后,传递给DMA设备。
可以理解的是,DMA设备作为主机的外设设备,辅助主机进行数据的存储和处理。参考图3所示,以DMA设备为GPU设备为例,GPU设备可以为虚拟机提供额外的算力服务,特别是在进行AI(Artificial Intelligence,人工智能)模型计算时,GPU设备可以作为AI加速卡,为AI模型提供独立的数据处理设备。
具体的,在GPU设备协助进行AI数据处理时,加密虚拟机内可以启动AI模型,调用GPU运行库和GPU驱动,将AI模型的命令数据(例如模型加载命令、内存拷贝命令等)注入至GPU设备内的命令缓冲区,而GPU设备则进一步基于DMA模块将AI模型的模型数据从内存拷贝到GPU设备的片上内存,并基于片上内存中的数据,运行对AI模型的计算,并在运行结束后,将计算结果通过DMA模块拷贝至内存。
基于本发明前述实施例,在内存为加密内存时,可以基于本发明前述实施例提供的直接存储访问方法进行数据的加/解密和数据的传输,从而直接、高效的与加密内存空间进行数据传输。
然而,若DMA设备(例如GPU设备)的数据处理环境保持开放,以明文的方式接受主机发送的命令数据,可能造成主机操作系统窥视并篡改注入至DMA设备的命令,造成数据的泄漏。
有鉴于此,为保证DMA设备的数据安全,本发明实施例中进一步提供了一种支持命令数据加密传输功能的DMA设备,通过在该DMA设备与主机中的设备驱动之间建立安全通道,基于设备驱动为加密虚拟机内部的虚拟设备,其数据并不会被主机操作系统所获取,从而可以实现命令数据在DMA设备与设备驱动之间的加密传输,保障DMA设备的数据安全。
具体的,参考图11示出的DMA设备的可选结构示意图,所述DMA设备例如可以为GPU,其进一步设置有密码协处理器,用于为DMA设备提供加解密服务(sm4/aes等算法)、摘要计算服务(sm3/sha3等算法)等。其中,密码协处理器内部固化设置有芯片私钥,该芯片私钥不允许密码协处理以外的任何设备读取。
在本发明实施例中,可以基于上述DMA设备,建立DMA设备与加密虚拟机的设备驱动的安全通道,并基于该安全通道的通道密钥信息,传输主机发送的命令数据,从而为DMA设备创建一封闭的可信环境,保障设备的数据安全。
基于图3和图11所示可选架构,在一种可选实现中,图12示出了本发明实施例提供的命令数据传输方法的可选流程图,如图12所示,该流程可以包括:
步骤S20、设备驱动和DMA设备构建用于传输命令数据的安全通道;
所述安全通道,可以基于数据加解密机制实现数据传输,从而可以在数据的传输过程中,以密文的形式传输,提高数据传输的安全性。相应的,所述安全通道基于数据加解密机制进行数据传输。
步骤S22、设备驱动基于所述安全通道的通道密钥信息,加密待传输的命令数据,形成加密命令数据;
在构建所述安全通道后,即可获得所述安全通道的通道密钥信息,从而可以基于该通道密钥信息进行命令数据的加密,保证命令数据的传输安全。
步骤S24、设备驱动向DMA设备发送加密命令数据。
在设备驱动向DMA设备发送加密命令数据后,相应的,DMA设备可以获取该加密命令数据。
步骤S26、DMA设备基于所述安全通道的通道密钥信息,解密加密命令数据,得到命令数据。
在构建所述安全通道后,即可获得所述安全通道的通道密钥信息,从而可以基于该通道密钥信息进行加密命令数据的解密,得到对应的命令数据。
可以看出,在本发明实施例中,可以在DMA设备与主机(例如加密虚拟机的设备驱动)之间建立安全通道,并基于该安全通道传输主机发送的命令数据,可以为DMA设备创建一封闭的可信环境,保障设备的数据安全。
其中,在命令数据不必或不能通过安全通道进行传输时,则可以通过原有的MMIO接口进行明文传输,为便于区别,通过MMIO接口进行明文传输的通道可以称为引导通道。在本发明实施例中,对设备非安全资源的访问命令,可以通过引导通道进行传输,对设备安全资源的访问命令,则可以通过安全通道进行传输。
具体的,图13示出了本发明实施例提供的命令数据传输方法的另一可选流程图,如图13所示,在设备驱动执行步骤S20之后,执行步骤S22之前,还可以进一步包括:
步骤S21、设备驱动判断待传输的命令数据所访问的资源是否为安全资源;
具体的,可以基于待传输的命令数据中的地址信息,确定所访问的资源是否为安全资源,或者,可以基于待传输的命令数据中的加密标识,确定所访问的资源是否为安全资源。其中,待传输的命令数据中的地址信息或待传输的命令数据中的加密标识,都可以表明其所访问资源是否为安全资源,从而可以基于判断结果确定后续步骤的执行流程。
具体的,在设备驱动待传输的命令数据所访问的资源为安全资源时,执行步骤S22;在设备驱动待传输的命令数据所访问的资源不为安全资源时,则执行步骤S23。
步骤S23、设备驱动通过所述引导通道发送所述命令数据。
其中,所述引导通道中基于明文形式进行命令数据的传输,从而可以直接进行所述命令数据的发送。
在另一个可选的示例中,引导通道可以传输例如安全通道创建命令、设备信息查询命令等,安全通道可以传输例如设备内存分配相关的命令、设备内核(kernel)代码加载、数据拷贝(例如DMA)命令等。
可以理解的是,DMA设备(例如GPU设备)在获取相应的命令数据后,可以在内部进行数据的处理,并经过DMA模块执行数据的传输,因此,本发明实施例中,可以设置安全通道仅支持写入命令的命令数据的传输,不支持读取命令的命令数据的传输,具体在设备驱动端,在步骤S21之后,在步骤S22之前,还可以进一步判断待传输的命令数据中,是否包括读取命令,若是,则确定访问错误,若否,则执行步骤S22。
在进一步的可选示例中,GPU设备内还包括命令处理器(command processor),用于利用密码协处理器进行数据的加/解密。
具体的,参考图14所示的建立DMA设备与加密虚拟机的设备驱动的安全通道的可选流程,所述流程可以包括:
步骤S200、设备驱动生成相匹配的公钥和私钥;
其中,公钥和私钥也称为密钥对,用于进行数据的加解密。具体的,可以基于国密SM2生成该密钥对。
步骤S201、设备驱动获取DMA设备的芯片公钥,并以所述芯片公钥为所生成的公钥加密,形成第一密文;
其中,所述芯片公钥可以基于引导通道获取,并进一步基于该芯片公钥为生成的公钥加密,从而使得GPU设备生成的通道密钥可以基于该公钥进行加密传输。
步骤S202、设备驱动发送所述第一密文至所述DMA设备;
其中,设备驱动可以通过引导通道,向GPU发送安全通道创建命令,所述安全通道创建命令可以包括所述第一密文,从而实现所述第一密文的发送。
相应的,DMA设备可以接收所述第一密文,或者,DMA设备可以接收安全通道创建命令,该安全通道创建命令可以包括所述第一密文。
步骤S203、DMA设备采用芯片私钥对所述第一密文解密,得到所述设备驱动生成的公钥;
DMA设备可以利用芯片私钥进行第一密文的解密,进而得到所述设备驱动生成的公钥。
步骤S204、DMA设备生成通道密钥信息;
所述通道密钥信息,用于对通过安全通道进行传输的命令数据进行加解密,从而使得相应的命令数据通过安全通道加密传输。其中,通道密钥信息至少包括通道密钥(channel encrypt key,CEK),在其他可选的示例中,所述通道密钥信息还可以进一步包括完整性密钥(channel integrity key,CIK)、初始向量(initialization vector,IV)、轮值(round value)中的至少一个或多个。
其中,通道密钥用于加密命令数据,完整性密钥用于进行数据的完整性验证,初始向量和轮值用于作为完整性计算中的参数,参与相应的完整性计算。其中,round value为可变值,在每次计算后可以加1,从而用于抵御重放攻击。
步骤S205、DMA设备以解密得到的公钥为所述通道密钥信息加密,形成第二密文;
其中,在生成通道密钥信息,通过加密传输所述通道密钥信息,以保障通道密钥信息的数据安全。
在进一步的可选示例中,还可以进一步利用芯片私钥为所述第二密文签名,进一步提高第二密文的数据安全。
步骤S206、DMA设备将所述第二密文发送至设备驱动;
在生成第二密文后,将所述第二密文发送至设备驱动,以使得设备驱动基于密文中的信息,得到安全通道的通道密钥信息。
其中,在可选示例中,第二密文为芯片私钥签名后的第二密文,相应的,则将该芯片私钥签名后的第二密文发送至设备驱动。
相应的,设备驱动可以接收所述第二密文。
步骤S207、设备驱动采用私钥为所述第二密文解密,获取所述通道密钥信息,以形成具有加密保护的安全通道;
在接收所述第二密文后,设备驱动可以采用私钥为第二密文解密,进而获取所述通道密钥信息,形成具有加密保护的安全通道。
可以理解的是,在获取所述通道密钥信息后,可以基于所述通道密钥信息将需要经安全通道进行传输的命令数据进行加密,进而传输至DMA设备,提高命令数据的安全性。
在可选示例中,第二密文为芯片私钥签名后的第二密文,相应的,本步骤可以利用芯片公钥为第二密文验签后,在验签通过后,再执行第二密文的解密,保障第二密文的数据安全。
相应的,在利用所述安全通道进行DMA命令的传输时,具体可以在步骤S11在DMA命令中设置虚拟机标识后,步骤S12进一步基于所述安全通道的通道密钥信息为所述DMA命令加密,形成加密命令数据,进而将所述加密命令数据发送至DMA设备。
相应的,在利用所述安全通道进行DMA命令的传输时,在DMA设备接收加密命令数据后,还进一步需要进行加密命令数据的解密,得到所述DMA命令。具体可以在接收DMA命令后,进一步基于所述安全通道的通道密钥信息为所述DMA命令解密,进而在步骤S13中,响应于所述DMA命令,发送DMA请求。
在一个可选的示例中,所述通道密钥信息可以包括:通道密钥(channel encryptkey,CEK)、完整性密钥(channel integrity key,CIK)、初始向量(initializationvector,IV)、轮值(round value)。在步骤S22加密待传输的命令数据时,可以基于所述通道密钥信息为待传输的命令数据加密,具体可以为利用通道密钥CEK加密待传输的命令数据,得到加密密文,利用CIK、加密密文、round value计算得到完整性验证密文,以所述加密密文和所述完整性验证密文,作为所述加密命令数据。完整性验证密文可以为CIK、加密密文、round value计算得到的摘要MAC。其中,round value每执行一次计算后加1。
其中,具体在DMA命令的传输过程中,所述命令数据可以为DMA命令。相应的,所述DMA命令加密,具体可以为利用通道密钥CEK加密DMA命令,得到加密密文,利用CIK、加密密文、round value计算得到完整性验证密文,以所述加密密文和所述完整性验证密文,作为所述加密命令数据。
在一个可选的示例中,在步骤S26解密加密命令数据时,可以基于所述通道密钥信息为所述加密命令数据解密,具体可以为,利用CIK、加密密文、round value进行完整性验证密文的验证,在验证通过后,利用通道密钥CEK对加密密文进行解密,得到命令数据。其中,完整性验证可以为CIK、加密密文、round value计算得到的摘要MAC,并将计算得到的MAC与完整性验证密文进行比对,若一致,则验证通过,若不一致,则验证不通过。相应的,位于DMA设备侧的round value每执行一次计算后加1。
其中,具体在DMA命令的传输过程中,所述命令数据可以为DMA命令。相应的,基于所述通道密钥信息为所述DMA命令解密,具体可以为,利用CIK、加密密文、round value进行完整性验证密文的验证,在验证通过后,利用加密通道密钥CEK对加密密文进行解密,得到DMA命令。
需要说明的是,同一DMA设备可能分配给不同的加密虚拟机,相应的,在进行安全通道的构建时,对应不同的加密虚拟机,对应有不同的设备驱动,进而可以基于不同的设备驱动构建不同的安全通道,从而保障不同加密虚拟机之间的数据的隔离,提高数据的安全性。
可以理解的是,基于不同的加密虚拟机,对应有不同的命令,而不同的命令具有不同的上下文(context),从而对应有不同的上下文标识(context id),因此,可以基于命令数据中的上下文标识(context id)进行安全通道的构建,从而基于不同的上下文标识构建不同的安全通道,从而保障不同加密虚拟机之间的数据的隔离,提高数据的安全性。
在一个可选的示例中,为进一步保障GPU中的数据的隔离,还可以在GPU设备设置片上内存管理模块(graphic memory ownership management,GMOM),为不同的命令配置不同的内存页面,从而避免不同命令之间的数据访问。
可以理解的是,基于不同的命令,具有不同的上下文(context),从而对应有不同的上下文标识(context id),因此,基于命令数据中的上下文标识(context id)进行片上内存的隔离,可以避免内存数据的相互访问,提高数据的安全性。
在一个可选的示例中,可以在得到相应的命令数据后,基于所述命令数据中的上下文标识,为对应的命令分配片上内存,并在GPU的片上内存中划分一块内存用于存储GPU片上内存所属的上下文标识,基于GPU获取的命令数据中的上下文标识,可以与命令数据所访问的片上内存对应的上下文标识进行比对,在两上下文标识一致时,再进行相应的访问。例如,在DMA设备接收内存控制器传输的数据时,即可基于所传输数据的上下文标识,将所传输数据存储至所述DMA设备的片上内存。其中,可以以标识记录表记录GPU片上内存所属的上下文标识。
其中,在GPU分配片上内存时,在标识记录表中更新当前的context id及其所分配的内存;当GPU释放片上内存时,把内存所在标识记录表上的context id字段清空。
在分配对应的片上内存后,可以基于命令数据的上下文标识,将命令数据存储至与所述上下文标识对应的片上内存。而在进行DMA数据传输时,则可以基于所传输数据的上下文标识,将所传输数据存储至与所述上下文标识对应的片上内存。其中,所述上下文标识与所述片上内存相对应。
参考图15所示的上下文context结构示例图,context中至少包括有根页表的物理地址(graphic page table addr),以及该context对应的上下文标识(context id)。
在一个可选的示例中,context对应的channel描述符中保存有根页表的物理地址,从而可以根据该根页表的物理地址,获取对应的根页表,并查询该根页表,得到命令数据中显存虚拟地址VHVA对应的显存物理地址VHPA,进而,GMOM可以基于该显存物理地址VHPA查询对应的context id,并与命令数据中的context id进行比较,从而可以确定两上下文标识一致,并在两上下文标识一致时,再执行相应的命令。
上文描述了本发明实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本发明实施例披露、公开的实施例方案。
下面从IOMMU的角度,对本发明实施例提供的直接存储访问装置进行介绍,下文描述的直接存储访问装置可以认为是,IOMMU为实现本发明实施例提供的直接存储访问方法,所需设置的功能模块;下文描述的直接存储访问装置的内容,可与上文描述的方法内容相互对应参照。
在可选实现中,图16示出了本发明实施例提供的直接存储访问装置的可选框图,该直接存储访问装置可应用于IOMMU,如图16所示,该直接存储访问装置可以包括:
请求获取模块300,用于获取直接存储访问DMA设备的DMA请求,所述DMA请求包括虚拟机标识;
地址确定模块310,用于确定所述DMA请求所需访问的内存数据的主机物理地址HPA;
地址形成模块320,用于将所述HPA与所述虚拟机标识相结合,形成目标HPA;
数据传输模块330,用于利用所述目标HPA控制内存控制器,以使内存控制器基于与所述虚拟机标识对应的密钥,对所述HPA对应的加密内存进行数据的加/解密和数据的传输。
可选的,所述虚拟机标识设置在所述DMA请求所需访问的内存的GPA中,所述地址确定模块310,用于确定所述DMA请求所需访问的内存的主机物理地址HPA,包括:
获取所述DMA请求中,所需访问的内存的GPA;
去除所述GPA中的虚拟机标识;
基于去除虚拟机标识后的GPA,查找与之对应的HPA。
可选的,所述DMA请求所需访问的内存数据的GPA中设置有加密标识,所述地址确定模块310,用于去除所述GPA中的虚拟机标识的步骤中,还包括:去除所述GPA中的加密标识。
可选的,所述地址形成模块320,用于将所述HPA与所述虚拟机标识相结合,形成目标HPA,包括:
在所述GPA中提取所述虚拟机标识;
将所述虚拟机标识设置在所述HPA中,形成目标HPA。
可选的,所述地址形成模块320,用于在所述GPA中提取所述虚拟机标识,还包括:在所述GPA中提取所述加密标识;
所述地址形成模块320,用于将所述虚拟机标识设置在所述HPA中,还包括:将所述加密标识设置在所述HPA中。
下面从DMA设备的角度,对本发明实施例提供的直接存储访问装置进行介绍,下文描述的直接存储访问装置可以认为是,DMA设备为实现本发明实施例提供的直接存储访问方法,所需设置的功能模块;下文描述的直接存储访问装置的内容,可与上文描述的方法内容相互对应参照。
在可选实现中,图17示出了本发明实施例提供的直接存储访问装置的另一可选框图,该直接存储访问装置可应用于DMA设备,如图17所示,该直接存储访问装置可以包括:
命令接收模块400,用于接收DMA命令,所述DMA命令包括虚拟机标识;
请求发送模块410,用于响应于所述DMA命令,向输入输出内存管理单元IOMMU发送DMA请求;所述DMA请求包括所述虚拟机标识,以使内存控制器基于与所述虚拟机标识对应的密钥,对所需访问的加密内存进行数据的加/解密和数据的传输;
数据接收模块420,用于在内存控制器响应所述DMA请求进行加密内存的数据传输时,接收所述内存控制器传输的数据。
可选的,所述DMA请求中,所述虚拟机标识设置在所述DMA设备所需访问的内存的客户机物理地址GPA中。
可选的,所述直接存储访问装置还包括:
第一通道构建模块430,用于构建用于传输命令数据的安全通道。
可选的,所述第一通道构建模块430,用于构建用于传输命令数据的安全通道,包括:
接收第一密文,所述第一密文由芯片公钥为设备驱动生成的公钥加密得到;
采用芯片私钥对所述第一密文解密,得到所述设备驱动生成的公钥;
生成通道密钥信息;
以解密得到的公钥为所述通道密钥信息加密,形成第二密文;
将所述第二密文发送至设备驱动,以使设备驱动基于其所生成的私钥为所述第二密文解密,获取所述通道密钥信息,形成具有加密保护的安全通道。
可选的,所述第一通道构建模块430,用于接收第一密文,具体为,接收安全通道创建命令,所述安全通道创建命令包括所述第一密文。
可选的,所述直接存储访问装置,还包括:
命令解密模块440,用于基于所述安全通道的通道密钥信息为所述DMA命令解密。
可选的,所述直接存储访问装置,还包括:
数据存储模块450,用于基于所传输数据的上下文标识,将所传输数据存储至与所述上下文标识对应的片上内存。
下面从设备驱动的角度,对本发明实施例提供的直接存储访问装置进行介绍,下文描述的直接存储访问装置可以认为是,设备驱动为实现本发明实施例提供的直接存储访问方法,所需设置的功能模块;下文描述的直接存储访问装置的内容,可与上文描述的方法内容相互对应参照。
在可选实现中,图18示出了本发明实施例提供的直接存储访问装置的再一可选框图,该直接存储访问装置可应用于设备驱动,如图18所示,该直接存储访问装置可以包括:
标识获取模块500,用于在加密虚拟机生成直接存储访问DMA命令后,获取所述DMA命令对应的虚拟机标识;
标识设置模块510,用于在DMA命令中设置所述虚拟机标识;
命令发送模块520,用于将带有所述虚拟机标识的DMA命令发送至DMA设备。
可选的,所述标识获取模块500,还用于:
获取生成DMA命令的虚拟机的安全状态;
在生成DMA命令的虚拟机为加密虚拟机时,执行所述获取所述DMA命令对应的虚拟机标识。
可选的,所述标识获取模块500,用于获取所述DMA命令对应的虚拟机标识,具体为,读取模型特定寄存器中存储的虚拟机标识,所述模型特定寄存器与生成所述DMA命令的加密虚拟机相对应。
可选的,所述标识获取模块500,用于获取所述DMA命令对应的虚拟机标识,包括:
向加密虚拟机发送虚拟机标识获取请求,以使加密虚拟机安全调用安全处理器中的虚拟机标识;
获取加密虚拟机安全调用得到的虚拟机标识。
可选的,所述DMA命令包括DMA设备所需访问的内存的客户机物理地址GPA,所述标识设置模块510,用于在DMA命令中设置所述虚拟机标识,具体为,在所述客户机物理地址GPA中,设置所述虚拟机标识。
可选的,所述标识设置模块510,还用于,在DMA命令中设置加密标识,所述加密标识用于指示所述DMA命令中,所需访问的内存是否为加密内存。
可选的,所述DMA命令包括用于传输至DMA设备的内存数据的客户机物理地址GPA,所述标识设置模块510,还用于在DMA命令中设置加密标识,具体为,在所述客户机物理地址GPA中,设置所述加密标识。
可选的,所述直接存储访问装置,还包括:
第二通道构建模块530,用于构建用于传输命令数据的安全通道;
所述命令发送模块520,用于将带有所述虚拟机标识的DMA命令发送至DMA设备,包括:
基于所述安全通道的通道密钥信息为所述DMA命令加密,形成加密命令数据;
将所述加密命令数据发送至DMA设备。
可选的,所述第二通道构建模块530,用于构建用于传输命令数据的安全通道,包括:
生成相匹配的公钥和私钥;
获取DMA设备的芯片公钥,并以所述芯片公钥为所生成的公钥加密,形成第一密文;
发送所述第一密文至所述DMA设备,以使所述DMA设备生成通道密钥信息,并基于解密得到的公钥为所述通道密钥信息加密,形成第二密文;
接收所述第二密文;
采用私钥为所述第二密文解密,获取所述通道密钥信息,以形成具有加密保护的安全通道。
可选的,所述第二通道构建模块530,用于发送所述第一密文至所述DMA设备,包括:
发送安全通道创建命令,所述安全通道创建命令包括所述第一密文。
下面从设备驱动的角度,对本发明实施例提供的命令数据传输装置进行介绍,下文描述的命令数据传输装置可以认为是,设备驱动为实现本发明实施例提供的命令数据传输方法,所需设置的功能模块;下文描述的命令数据传输装置的内容,可与上文描述的方法内容相互对应参照。
在可选实现中,图19示出了本发明实施例提供的命令数据传输装置的可选框图,该命令数据传输装置可应用于设备驱动,如图19所示,该命令数据传输装置可以包括:
第三通道构建模块600,用于构建用于传输命令数据的安全通道,其中,所述安全通道基于数据加解密机制实现数据传输;
加密命令形成模块610,用于基于所述安全通道的通道密钥信息,加密待传输的命令数据,形成加密命令数据;
加密命令发送模块620,用于发送所述加密命令数据。
可选的,所述设备驱动与直接存储访问DMA设备之间的数据传输通道还包括引导通道,所述引导通道通过明文进行传输;所述命令数据传输装置,还包括:
资源判断模块630,用于判断设备驱动待传输的命令数据所访问的资源是否为安全资源;
在设备驱动待传输的命令数据所访问的资源为安全资源时,加密命令形成模块610基于所述安全通道的通道密钥信息,加密待传输的命令数据,形成加密命令数据;在设备驱动待传输的命令数据所访问的资源不为安全资源时,通过所述引导通道发送所述命令数据。
可选的,所述命令数据传输装置,还包括:
命令判断模块640,用于判断待传输的命令数据中,是否包括读取命令;
若是,则确定访问错误,若否,则所述加密命令形成模块610基于所述安全通道的通道密钥信息,加密待传输的命令数据,形成加密命令数据。
可选的,所述第三通道构建模块600,用于构建用于传输命令数据的安全通道,包括:
接收第一密文,所述第一密文由芯片公钥为设备驱动生成的公钥加密得到;
采用芯片私钥对所述第一密文解密,得到所述设备驱动生成的公钥;
生成通道密钥信息;
以解密得到的公钥为所述通道密钥信息加密,形成第二密文;
将所述第二密文发送至设备驱动,以使设备驱动基于其所生成的私钥为所述第二密文解密,获取所述通道密钥信息,形成具有加密保护的安全通道。
可选的,所述第三通道构建模块600,用于接收第一密文,具体为,接收安全通道创建命令,所述安全通道创建命令包括所述第一密文。
可选的,所述通道密钥信息包括通道密钥,以及,完整性密钥、初始向量、轮值中的至少一个或多个。
可选的,所述通道密钥信息包括通道密钥、完整性密钥、初始向量和轮值;
所述加密命令形成模块610,用于基于所述安全通道的通道密钥信息,加密待传输的命令数据,形成加密命令数据,包括:
利用通道密钥加密待传输的命令数据,得到加密密文;
利用完整性密钥、加密密文和轮值,计算得到完整性验证密文;
所述加密密文和所述完整性验证密文,作为所述加密命令数据。
下面从DMA设备的角度,对本发明实施例提供的命令数据传输装置进行介绍,下文描述的命令数据传输装置可以认为是,DMA设备为实现本发明实施例提供的命令数据传输方法,所需设置的功能模块;下文描述的命令数据传输装置的内容,可与上文描述的方法内容相互对应参照。
在可选实现中,图20示出了本发明实施例提供的命令数据传输装置的另一可选框图,该命令数据传输装置可应用于DMA设备,如图20所示,该命令数据传输装置可以包括:
第四通道构建模块700,用于构建用于传输命令数据的安全通道,其中,所述安全通道基于数据加解密机制实现数据传输;
加密命令获取模块710,用于获取加密命令数据;
命令解密模块720,用于基于所述安全通道的通道密钥信息,解密所述加密命令数据,得到命令数据。
可选的,所述第四通道构建模块700,用于构建用于传输命令数据的安全通道,包括:
生成相匹配的公钥和私钥;
获取DMA设备的芯片公钥,并以所述芯片公钥为所生成的公钥加密,形成第一密文;
发送所述第一密文至所述DMA设备,以使所述DMA设备生成通道密钥信息,并基于解密得到的公钥为所述通道密钥信息加密,形成第二密文;
接收所述第二密文;
采用私钥为所述第二密文解密,获取所述通道密钥信息,以形成具有加密保护的安全通道。
可选的,所述通道密钥信息包括通道密钥,以及,完整性密钥、初始向量、轮值中的至少一个或多个。
可选的,所述通道密钥信息包括通道密钥、完整性密钥、初始向量和轮值;所述加密命令数据包括加密密文和完整性验证密文;
所述命令解密模块720,用于基于所述安全通道的通道密钥信息,解密所述加密命令数据,得到命令数据,包括:
利用完整性密钥、加密密文和轮值,验证完整性验证密文;
若验证通过,利用通道密钥对加密密文进行解密,得到命令数据。
可选的,所述命令数据传输装置,还包括:
内存分配模块730,用于基于所述命令数据中的上下文标识,为对应的命令分配片上内存。
可选的,所述内存分配模块730,用于基于所述命令数据中的上下文标识,为对应的命令分配片上内存,包括:
在标识记录表中更新当前的上下文标识及其所分配的片上内存,所述标识记录表用于记录上下文标识及其所分配的片上内存的对应关系。
可选的,所述命令数据传输装置,还包括:
命令数据存储模块740,用于基于所述命令数据中的上下文标识,将所述命令数据存储至与所述上下文标识对应的片上内存。
本发明实施例还提供一种IOMMU,该IOMMU可被配置为执行本发明实施例提供的IOMMU角度的直接存储访问方法,具体内容可参照上文相应部分的描述,此处不再进一步展开介绍。
本发明实施例还提供一种DMA设备,该DMA设备可被配置为执行本发明实施例提供的DMA设备角度的直接存储访问方法,或者,本发明实施例提供的DMA设备角度的命令数据传输方法,具体内容可参照上文相应部分的描述,此处不再进一步展开介绍。
本发明实施例还提供一种电子设备,该电子设备例如云主机,该电子设备可以包括上述所述的IOMMU、DMA设备以及设备驱动,该设备驱动可被配置为执行本发明实施例提供的设备驱动角度的直接存储访问方法,或者,本发明实施例提供的设备驱动角度的命令数据传输方法,该电子设备的可选结构可如图3所示,此处不再进一步展开介绍。
虽然本发明实施例披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

Claims (45)

1.一种直接存储访问方法,其特征在于,应用于输入输出内存管理单元IOMMU,包括:
获取直接存储访问DMA设备的DMA请求,所述DMA请求包括虚拟机标识;
确定所述DMA请求所需访问的内存数据的主机物理地址HPA;
将所述HPA与所述虚拟机标识相结合,形成目标HPA;
利用所述目标HPA控制内存控制器,以使内存控制器基于与所述虚拟机标识对应的密钥,对所述HPA对应的加密内存进行数据的加/解密和数据的传输。
2.根据权利要求1所述的方法,其特征在于,所述虚拟机标识设置在所述DMA请求所需访问的内存的GPA中,所述确定所述DMA请求所需访问的内存的主机物理地址HPA,包括:
获取所述DMA请求中,所需访问的内存的GPA;
去除所述GPA中的虚拟机标识;
基于去除虚拟机标识后的GPA,查找与之对应的HPA。
3.根据权利要求2所述的方法,其特征在于,所述DMA请求所需访问的内存数据的GPA中设置有加密标识,所述去除所述GPA中的虚拟机标识的步骤中,还包括:去除所述GPA中的加密标识。
4.根据权利要求3所述的方法,其特征在于,所述将所述HPA与所述虚拟机标识相结合,形成目标HPA,包括:
在所述GPA中提取所述虚拟机标识;
将所述虚拟机标识设置在所述HPA中,形成目标HPA。
5.根据权利要求4所述的方法,其特征在于,所述在所述GPA中提取所述虚拟机标识,还包括:在所述GPA中提取所述加密标识;
所述将所述虚拟机标识设置在所述HPA中,还包括:将所述加密标识设置在所述HPA中。
6.一种直接存储访问方法,其特征在于,应用于直接存储访问DMA设备,包括:
接收DMA命令,所述DMA命令包括虚拟机标识;
响应于所述DMA命令,向输入输出内存管理单元IOMMU发送DMA请求;所述DMA请求包括所述虚拟机标识,以使内存控制器基于与所述虚拟机标识对应的密钥,对所需访问的加密内存进行数据的加/解密和数据的传输;
在内存控制器响应所述DMA请求进行加密内存的数据传输时,接收所述内存控制器传输的数据。
7.根据权利要求6所述的方法,其特征在于,所述DMA请求中,所述虚拟机标识设置在所述DMA设备所需访问的内存的客户机物理地址GPA中。
8.根据权利要求6所述的方法,其特征在于,所述响应于所述DMA命令,向输入输出内存管理单元IOMMU发送DMA请求的步骤之前,还包括:
构建用于传输命令数据的安全通道。
9.根据权利要求8所述的方法,其特征在于,所述构建用于传输命令数据的安全通道,包括:
接收第一密文,所述第一密文由芯片公钥为设备驱动生成的公钥加密得到;
采用芯片私钥对所述第一密文解密,得到所述设备驱动生成的公钥;
生成通道密钥信息;
以解密得到的公钥为所述通道密钥信息加密,形成第二密文;
将所述第二密文发送至设备驱动,以使设备驱动基于其所生成的私钥为所述第二密文解密,获取所述通道密钥信息,形成具有加密保护的安全通道。
10.根据权利要求9所述的方法,其特征在于,所述接收第一密文,具体为,接收安全通道创建命令,所述安全通道创建命令包括所述第一密文。
11.根据权利要求8所述的方法,其特征在于,所述接收DMA命令的步骤之后,所述响应于所述DMA命令,向输入输出内存管理单元IOMMU发送DMA请求的步骤之前,还包括:
基于所述安全通道的通道密钥信息为所述DMA命令解密。
12.根据权利要求6所述的方法,其特征在于,所述接收所述内存控制器传输的数据的步骤之后,还包括:
基于所传输数据的上下文标识,将所传输数据存储至与所述上下文标识对应的片上内存。
13.一种直接存储访问方法,其特征在于,应用于设备驱动,包括:
在加密虚拟机生成直接存储访问DMA命令后,获取所述DMA命令对应的虚拟机标识;
在DMA命令中设置所述虚拟机标识;
将带有所述虚拟机标识的DMA命令发送至DMA设备。
14.根据权利要求13所述的方法,其特征在于,所述获取DMA命令之后,所述获取所述DMA命令对应的虚拟机标识之前,还包括:
获取生成DMA命令的虚拟机的安全状态;
在生成DMA命令的虚拟机为加密虚拟机时,执行所述获取所述DMA命令对应的虚拟机标识。
15.根据权利要求13所述的方法,其特征在于,所述获取所述DMA命令对应的虚拟机标识,具体为,读取模型特定寄存器中存储的虚拟机标识,所述模型特定寄存器与生成所述DMA命令的加密虚拟机相对应。
16.根据权利要求13所述的方法,其特征在于,所述获取所述DMA命令对应的虚拟机标识,包括:
向加密虚拟机发送虚拟机标识获取请求,以使加密虚拟机安全调用安全处理器中的虚拟机标识;
获取加密虚拟机安全调用得到的虚拟机标识。
17.根据权利要求13所述的方法,其特征在于,所述DMA命令包括DMA设备所需访问的内存的客户机物理地址GPA,所述在DMA命令中设置所述虚拟机标识,具体为,在所述客户机物理地址GPA中,设置所述虚拟机标识。
18.根据权利要求13所述的方法,其特征在于,所述在DMA命令中设置所述虚拟机标识的步骤中,还包括,在DMA命令中设置加密标识,所述加密标识用于指示所述DMA命令中,所需访问的内存是否为加密内存。
19.根据权利要求18所述的方法,其特征在于,所述DMA命令包括用于传输至DMA设备的内存数据的客户机物理地址GPA,所述在DMA命令中设置加密标识,具体为,在所述客户机物理地址GPA中,设置所述加密标识。
20.根据权利要求13所述的方法,其特征在于,所述将带有所述虚拟机标识的DMA命令发送至DMA设备之前,还包括:
构建用于传输命令数据的安全通道;
所述将带有所述虚拟机标识的DMA命令发送至DMA设备,包括:
基于所述安全通道的通道密钥信息为所述DMA命令加密,形成加密命令数据;
将所述加密命令数据发送至DMA设备。
21.根据权利要求20所述的方法,其特征在于,所述构建用于传输命令数据的安全通道,包括:
生成相匹配的公钥和私钥;
获取DMA设备的芯片公钥,并以所述芯片公钥为所生成的公钥加密,形成第一密文;
发送所述第一密文至所述DMA设备,以使所述DMA设备生成通道密钥信息,并基于解密得到的公钥为所述通道密钥信息加密,形成第二密文;
接收所述第二密文;
采用私钥为所述第二密文解密,获取所述通道密钥信息,以形成具有加密保护的安全通道。
22.根据权利要求21所述的方法,其特征在于,所述发送所述第一密文至所述DMA设备,包括:
发送安全通道创建命令,所述安全通道创建命令包括所述第一密文。
23.一种命令数据传输方法,其特征在于,应用于设备驱动,包括:
构建用于传输命令数据的安全通道,其中,所述安全通道基于数据加解密机制实现数据传输;
基于所述安全通道的通道密钥信息,加密待传输的命令数据,形成加密命令数据;
发送所述加密命令数据。
24.根据权利要求23所述的方法,其特征在于,所述设备驱动与直接存储访问DMA设备之间的数据传输通道还包括引导通道,所述引导通道通过明文进行传输;所述构建用于传输命令数据的安全通道的步骤之后,所述基于所述安全通道的通道密钥信息,加密待传输的命令数据的步骤之前,还包括:
判断设备驱动待传输的命令数据所访问的资源是否为安全资源;
在设备驱动待传输的命令数据所访问的资源为安全资源时,执行所述基于所述安全通道的通道密钥信息,加密待传输的命令数据,形成加密命令数据的步骤;在设备驱动待传输的命令数据所访问的资源不为安全资源时,通过所述引导通道发送所述命令数据。
25.根据权利要求24所述的方法,其特征在于,所述判断设备驱动发送的命令数据所访问的资源是否为安全资源之后,所述基于所述安全通道的通道密钥信息,加密待传输的命令数据,形成加密命令数据之前,还包括,判断待传输的命令数据中,是否包括读取命令;
若是,则确定访问错误,若否,则执行所述基于所述安全通道的通道密钥信息,加密待传输的命令数据,形成加密命令数据的步骤。
26.根据权利要求23所述的方法,其特征在于,所述构建用于传输命令数据的安全通道,包括:
接收第一密文,所述第一密文由芯片公钥为设备驱动生成的公钥加密得到;
采用芯片私钥对所述第一密文解密,得到所述设备驱动生成的公钥;
生成通道密钥信息;
以解密得到的公钥为所述通道密钥信息加密,形成第二密文;
将所述第二密文发送至设备驱动,以使设备驱动基于其所生成的私钥为所述第二密文解密,获取所述通道密钥信息,形成具有加密保护的安全通道。
27.根据权利要求26所述的方法,其特征在于,所述接收第一密文,具体为,接收安全通道创建命令,所述安全通道创建命令包括所述第一密文。
28.根据权利要求26所述的方法,其特征在于,所述通道密钥信息包括通道密钥,以及,完整性密钥、初始向量、轮值中的至少一个或多个。
29.根据权利要求28所述的方法,其特征在于,所述通道密钥信息包括通道密钥、完整性密钥、初始向量和轮值;
所述基于所述安全通道的通道密钥信息,加密待传输的命令数据,形成加密命令数据,包括:
利用通道密钥加密待传输的命令数据,得到加密密文;
利用完整性密钥、加密密文和轮值,计算得到完整性验证密文;
所述加密密文和所述完整性验证密文,作为所述加密命令数据。
30.一种命令数据传输方法,其特征在于,应用于直接存储访问DMA设备,包括:
构建用于传输命令数据的安全通道,其中,所述安全通道基于数据加解密机制实现数据传输;
获取加密命令数据;
基于所述安全通道的通道密钥信息,解密所述加密命令数据,得到命令数据。
31.根据权利要求30所述的方法,其特征在于,所述构建用于传输命令数据的安全通道,包括:
生成相匹配的公钥和私钥;
获取DMA设备的芯片公钥,并以所述芯片公钥为所生成的公钥加密,形成第一密文;
发送所述第一密文至所述DMA设备,以使所述DMA设备生成通道密钥信息,并基于解密得到的公钥为所述通道密钥信息加密,形成第二密文;
接收所述第二密文;
采用私钥为所述第二密文解密,获取所述通道密钥信息,以形成具有加密保护的安全通道。
32.根据权利要求31所述的方法,其特征在于,所述通道密钥信息包括通道密钥,以及,完整性密钥、初始向量、轮值中的至少一个或多个。
33.根据权利要求32所述的方法,其特征在于,所述通道密钥信息包括通道密钥、完整性密钥、初始向量和轮值;所述加密命令数据包括加密密文和完整性验证密文;
所述基于所述安全通道的通道密钥信息,解密所述加密命令数据,得到命令数据,包括:
利用完整性密钥、加密密文和轮值,验证完整性验证密文;
若验证通过,利用通道密钥对加密密文进行解密,得到命令数据。
34.根据权利要求30所述的方法,其特征在于,所述解密所述加密命令数据,得到命令数据的步骤之后,还包括:
基于所述命令数据中的上下文标识,为对应的命令分配片上内存。
35.根据权利要求34所述的方法,其特征在于,所述基于所述命令数据中的上下文标识,为对应的命令分配片上内存,包括:
在标识记录表中更新当前的上下文标识及其所分配的片上内存,所述标识记录表用于记录上下文标识及其所分配的片上内存的对应关系。
36.根据权利要求34所述的方法,其特征在于,所述基于所述命令数据中的上下文标识,为对应的命令分配片上内存之后,还包括:
基于所述命令数据中的上下文标识,将所述命令数据存储至与所述上下文标识对应的片上内存。
37.一种直接存储访问装置,其特征在于,包括:
请求获取模块,用于获取直接存储访问DMA设备的DMA请求,所述DMA请求包括虚拟机标识;
地址确定模块,用于确定所述DMA请求所需访问的内存数据的主机物理地址HPA;
地址形成模块,用于将所述HPA与所述虚拟机标识相结合,形成目标HPA;
数据传输模块,用于利用所述目标HPA控制内存控制器,以使内存控制器基于与所述虚拟机标识对应的密钥,对所述HPA对应的加密内存进行数据的加/解密和数据的传输。
38.一种直接存储访问装置,其特征在于,包括:
命令接收模块,用于接收DMA命令,所述DMA命令包括虚拟机标识;
请求发送模块,用于响应于所述DMA命令,向输入输出内存管理单元IOMMU发送DMA请求;所述DMA请求包括所述虚拟机标识,以使内存控制器基于与所述虚拟机标识对应的密钥,对所需访问的加密内存进行数据的加/解密和数据的传输;
数据接收模块,用于在内存控制器响应所述DMA请求进行加密内存的数据传输时,接收所述内存控制器传输的数据。
39.一种直接存储访问装置,其特征在于,包括:
标识获取模块,用于在加密虚拟机生成直接存储访问DMA命令后,获取所述DMA命令对应的虚拟机标识;
标识设置模块,用于在DMA命令中设置所述虚拟机标识;
命令发送模块,用于将带有所述虚拟机标识的DMA命令发送至DMA设备。
40.一种命令数据传输装置,其特征在于,包括:
第三通道构建模块,用于构建用于传输命令数据的安全通道,其中,所述安全通道基于数据加解密机制实现数据传输;
加密命令形成模块,用于基于所述安全通道的通道密钥信息,加密待传输的命令数据,形成加密命令数据;
加密命令发送模块,用于发送所述加密命令数据。
41.一种命令数据传输装置,其特征在于,包括:
第四通道构建模块,用于构建用于传输命令数据的安全通道,其中,所述安全通道基于数据加解密机制实现数据传输;
加密命令获取模块,用于获取加密命令数据;
命令解密模块,用于基于所述安全通道的通道密钥信息,解密所述加密命令数据,得到命令数据。
42.一种输入输出内存管理单元IOMMU,其特征在于,所述IOMMU被配置为执行如权利要求1-5任一项所述的直接存储访问方法。
43.一种直接存储访问DMA设备,其特征在于,所述DMA设备被配置为执行如权利要求6-12任一项所述的直接存储访问方法,和/或,执行如权利要求30-36任一项所述的命令数据传输方法。
44.根据权利要求43所述的设备,其特征在于,所述DMA设备包括密码协处理器,所述密码协处理器用于为DMA设备提供加解密服务和摘要计算服务。
45.一种电子设备,其特征在于,包括如权利要求42所述的输入输出内存管理单元,如权利要求43~44任一项所述的直接存储访问DMA设备,以及设备驱动,其中,所述设备驱动被配置为执行权利要求13-22任一项所述的直接存储访问方法,和/或,执行如权利要求23-29任一项所述的命令数据传输方法。
CN202111561726.9A 2021-12-20 2021-12-20 直接存储访问及命令数据传输方法、装置及相关设备 Pending CN114238185A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111561726.9A CN114238185A (zh) 2021-12-20 2021-12-20 直接存储访问及命令数据传输方法、装置及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111561726.9A CN114238185A (zh) 2021-12-20 2021-12-20 直接存储访问及命令数据传输方法、装置及相关设备

Publications (1)

Publication Number Publication Date
CN114238185A true CN114238185A (zh) 2022-03-25

Family

ID=80759147

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111561726.9A Pending CN114238185A (zh) 2021-12-20 2021-12-20 直接存储访问及命令数据传输方法、装置及相关设备

Country Status (1)

Country Link
CN (1) CN114238185A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114461406A (zh) * 2022-04-13 2022-05-10 麒麟软件有限公司 DMA OpenGL优化方法
CN116150740A (zh) * 2023-04-17 2023-05-23 杭州鸿钧微电子科技有限公司 资源隔离方法、装置、芯片系统及电子设备
WO2024098594A1 (zh) * 2022-11-07 2024-05-16 海光信息技术股份有限公司 代码保护系统、方法、虚拟系统架构、芯片及电子设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020124108A1 (en) * 2001-01-04 2002-09-05 Terrell William C. Secure multiprotocol interface
US20180107608A1 (en) * 2016-10-19 2018-04-19 Advanced Micro Devices, Inc. Direct memory access authorization in a processing system
CN109445905A (zh) * 2018-06-22 2019-03-08 华为技术有限公司 虚拟机数据通信方法和系统以及虚拟机配置方法和装置
CN111090869A (zh) * 2019-12-16 2020-05-01 海光信息技术有限公司 一种数据加密方法、处理器及计算机设备
CN111966468A (zh) * 2020-08-28 2020-11-20 海光信息技术有限公司 用于直通设备的方法、系统、安全处理器和存储介质
CN112416525A (zh) * 2020-11-27 2021-02-26 海光信息技术股份有限公司 设备驱动初始化方法、直接存储访问方法及相关装置
CN112416526A (zh) * 2020-11-27 2021-02-26 海光信息技术股份有限公司 一种直接存储访问方法、装置及相关设备
CN112433817A (zh) * 2020-11-27 2021-03-02 海光信息技术股份有限公司 信息配置方法、直接存储访问方法及相关装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020124108A1 (en) * 2001-01-04 2002-09-05 Terrell William C. Secure multiprotocol interface
US20180107608A1 (en) * 2016-10-19 2018-04-19 Advanced Micro Devices, Inc. Direct memory access authorization in a processing system
CN109445905A (zh) * 2018-06-22 2019-03-08 华为技术有限公司 虚拟机数据通信方法和系统以及虚拟机配置方法和装置
CN111090869A (zh) * 2019-12-16 2020-05-01 海光信息技术有限公司 一种数据加密方法、处理器及计算机设备
CN111966468A (zh) * 2020-08-28 2020-11-20 海光信息技术有限公司 用于直通设备的方法、系统、安全处理器和存储介质
CN112416525A (zh) * 2020-11-27 2021-02-26 海光信息技术股份有限公司 设备驱动初始化方法、直接存储访问方法及相关装置
CN112416526A (zh) * 2020-11-27 2021-02-26 海光信息技术股份有限公司 一种直接存储访问方法、装置及相关设备
CN112433817A (zh) * 2020-11-27 2021-03-02 海光信息技术股份有限公司 信息配置方法、直接存储访问方法及相关装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
龙怡清;: "嵌入式虚拟机管理器内存虚拟化方法研究", 科技资讯, no. 06, 23 February 2020 (2020-02-23), pages 20 - 21 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114461406A (zh) * 2022-04-13 2022-05-10 麒麟软件有限公司 DMA OpenGL优化方法
WO2024098594A1 (zh) * 2022-11-07 2024-05-16 海光信息技术股份有限公司 代码保护系统、方法、虚拟系统架构、芯片及电子设备
CN116150740A (zh) * 2023-04-17 2023-05-23 杭州鸿钧微电子科技有限公司 资源隔离方法、装置、芯片系统及电子设备
CN116150740B (zh) * 2023-04-17 2023-12-12 杭州鸿钧微电子科技有限公司 资源隔离方法、装置、芯片系统及电子设备

Similar Documents

Publication Publication Date Title
US11783081B2 (en) Secure public cloud
CN109858265B (zh) 一种加密方法、装置及相关设备
CN103069428B (zh) 不可信云基础设施中的安全虚拟机引导
KR100737628B1 (ko) 고정형 토큰 및 이동형 토큰 모두를 이용한 어테스테이션
KR101224322B1 (ko) 마이크로제어기 내의 데이터 보안 처리를 위한 방법, 장치 및 집적 회로
CN114238185A (zh) 直接存储访问及命令数据传输方法、装置及相关设备
US20100153749A1 (en) Device-access control program, device-access control process, and information processing apparatus for controlling access to device
WO2017014885A1 (en) Cryptographic protection of i/o data for dma capable i/o controllers
CN109756492B (zh) 基于sgx的云平台可信执行方法、装置、设备及介质
WO2017014889A1 (en) Technologies for secure programming of a cryptographic engine for secure i/o
WO2017014886A1 (en) Technologies for trusted i/o for multiple co-existing trusted execution environments under isa control
JP2013545182A (ja) 機密コードおよびデータを保護するためのアーキテクチャを含む方法および装置
US11455430B2 (en) Secure element and related device
CN109672519B (zh) 一种密码装置及其数据加解密方法
CN111431718A (zh) 基于tee扩展的计算机通用安全加密转换层方法及系统
EP4332810A1 (en) Method for realizing virtualized trusted platform module, and secure processor and storage medium
Chang et al. User-friendly deniable storage for mobile devices
US20170371808A1 (en) Direct memory access encryption with application provided keys
Wang et al. SvTPM: SGX-based virtual trusted platform modules for cloud computing
WO2024098594A1 (zh) 代码保护系统、方法、虚拟系统架构、芯片及电子设备
CN116048716A (zh) 一种直接存储访问方法、装置及相关设备
CN116450281A (zh) 访问处理方法、虚拟机标识配置方法、芯片及计算机设备
CN112416525B (zh) 设备驱动初始化方法、直接存储访问方法及相关装置
CN112241309B (zh) 一种数据安全方法、装置、cpu、芯片及计算机设备
CN114491544A (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