CN109844751A - 处理系统中的直接存储器访问授权 - Google Patents
处理系统中的直接存储器访问授权 Download PDFInfo
- Publication number
- CN109844751A CN109844751A CN201780063897.4A CN201780063897A CN109844751A CN 109844751 A CN109844751 A CN 109844751A CN 201780063897 A CN201780063897 A CN 201780063897A CN 109844751 A CN109844751 A CN 109844751A
- Authority
- CN
- China
- Prior art keywords
- memory
- access request
- request
- processor
- memory access
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45537—Provision of facilities of other operating environments, e.g. WINE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/402—Encrypted data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Automation & Control Theory (AREA)
- Storage Device Security (AREA)
Abstract
一种处理器[102]在输入/输出装置[106]和存储器[104]之间的存储器访问路径中采用硬件加密模块[120]以加密地隔离安全信息。在一些实施方案中,所述加密模块位于所述处理器的存储器控制器[116]中,并且提供给所述存储器控制器的每个存储器访问请求包括识别所述存储器访问请求的源的VM标签值。基于识别所述存储器访问请求的所述源的请求程序id来确定VM标签。所述加密模块基于与所述VM标签相关联的加密密钥来对与存储器访问相关联的数据执行加密(用于写入访问)或解密(用于读取访问)。
Description
背景技术
相关技术说明
在许多处理器应用中,保护信息安全是一项重要特征。例如,处理器可以用在基础架构即服务(IAAS)环境中的服务器中,其中处理器执行一个或多个虚拟机(VM)并执行管理程序以在VM之中分割服务器硬件并将VM彼此隔离。因为可以代表不同的客户来执行不同的VM,所以需要保护每个VM所使用的信息(指令和数据)不被其他VM访问。常规上,管理程序通过为每个VM保持单独的存储器页表和其他逻辑实体来保持VM信息的隔离。然而,管理程序中的缺陷(例如,错误)可能导致管理程序本身易受攻击,使得一个VM可以访问另一个VM的信息。即使在诸如个人计算机的更私密的安全环境中,存储在存储器模块中的数据也可能被盗取,并且存储在其中的数据可能受到未经授权的访问。在一些安全环境中,由于难以识别DMA请求的发起者,所以从装置对安全存储器空间的直接存储器访问(DMA)是不可信的。例如,未授权实体可以经由未授权装置来请求DMA以访问安全存储器空间。
附图说明
通过参照附图,可以更好地理解本公开,并且本公开的诸多特征和优点对于本领域技术人员而言是显而易见的。在不同附图中使用相同的附图标记来表示相似或相同项。
图1是根据一些实施方案的在存储器控制器处采用加密模块以安全地隔离信息的处理系统的框图。
图2是示出根据一些实施方案的用于提供信息隔离的图1的处理系统的示例性实现方式的框图。
图3是示出根据一些实施方案的用于提供信息隔离的图1的处理系统的另一示例性实现方式的框图。
图4是示出根据一些实施方案的在图1-3的处理系统处使用转换后备缓冲器和页表来识别安全存储器访问的框图。
图5是根据一些实施方案的在图1-3的处理系统处处理存储器访问请求以保护加密保护的信息的方法的流程图。
具体实施方式
图1-5示出了通过在处理器的存储器访问路径中采用硬件加密模块来加密地隔离安全信息以在处理系统处保护安全信息的技术。处理器在输入/输出装置和存储器之间的存储器访问路径中采用硬件加密模块以加密地隔离安全信息。在一些实施方案中,加密模块位于处理器的存储器控制器处,并且提供给处理器处的输入/输出存储器管理单元(IOMMU)的每个存储器访问请求包括识别存储器访问请求的源的请求程序ID值。在一些实施方案中,处理器用于在处理系统中在输入/输出(IO)装置上执行不同的虚拟功能(VF)。例如,在一些实施方案中,加密模块为在IO装置上执行的每个VF存储唯一的密钥。在一些情况中,VF的密钥可以由与处理系统的处理器核心分开的安全模块生成,使得在处理器核心处执行的软件(包括管理程序)无法访问密钥。响应于在IOMMU处接收DMA请求,基于存储器访问请求所包括的请求程序ID值来识别请求程序VF的源。IOMMU使用请求程序ID值、使用装置表来查找与请求程序VF相关联的VM TAG值。VM TAG值识别应与DMA请求一起使用以对写入到存储器的数据加密或对从存储器读取的数据解密的特定加密密钥。
在一些实施方案中,在物理上并不安全的环境中采用的处理系统中实施本文所述的技术,其中,处理系统的存储器受到未经授权的物理访问(例如,盗取硬件存储器模块或对存储器进行物理探测)。然而,因为加密模块使安全数据以加密形式存储在存储器中,所以即使安全数据受到未经授权的物理访问,安全数据也不易于使用。举例而言,即使授权的VF尝试DMA请求检索存储在分配给另一个VM/VF的存储器位置的数据,该数据仍将被不正确的加密密钥访问,导致不正确的密钥用于加密/解密(即,并未响应于存储器访问而返回数据的真实纯文本/明文)。
图1示出了根据一些实施方案的提供信息的密码保护的处理系统100。处理系统100包括处理器102和存储器104。处理系统100可以被包含在诸如服务器、个人计算机、平板电脑、机顶盒、游戏系统等各种电子装置中的任何一种中。处理器102通常被配置成执行操作处理器102的电路以实施所定义的任务的指令集(例如,计算机程序)。存储器104通过存储处理器102使用的数据来促进执行这些任务。存储器104可以是随机访问存储器(RAM)、诸如闪速存储器的非易失性存储器或硬盘驱动器(HDD)等或其组合。处理系统100还包括物理输入/输出(I/O)装置106。物理I/O装置106可以是例如网络接口卡(NIC)、主机总线适配器(HBA)等。
处理器102包括安全模块108。安全模块108是通用处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC),处理器核心的操作模式或者被设计和配置成执行处理系统100的安全操作的其他模块,所述安全操作包括:要在处理器102处执行的实体(例如,虚拟机、计算机程序等)的注册、要执行的实体的安全密钥的生成和识别、处理系统100对安全操作的授权等。在一些实施方案中,安全模块108可以在被允许执行其操作之前经历安全注册过程,并且可以使其操作仅限于安全操作,使得安全模块无法执行使其易受攻击的操作。如本文进一步描述,安全模块108通过生成安全密钥、识别被注册为在处理系统100处执行的实体以及实现密码隔离的其他操作来支持处理系统100处的信息的这种密码隔离。
处理器102还包括处理器核心110和112、高速缓存114、存储器控制器(例如,北桥)116和安全模式寄存器118。处理器核心110和112是单独与同时执行指令的处理单元。在一些实施方案中,处理器核心110和112中的每一个包括单独的指令管线,指令管线获取指令,将所获取的指令解码成相应的操作,并且使用处理系统100的源来执行各种操作。处理器102还包括用于将装置(诸如图1所示的I/O装置106)连接到存储器控制器116的输入/输出存储器管理单元(IOMMU)120。
在一些实施方案中,处理系统100实施安全方案,其中基于与在存储器104处在其中存储信息的位置相对应的或与信息的类型(例如,指令或数据)相对应的存储器地址中包括的控制位来分配信息的安全性指定(信息是否将得到加密保护)。这允许将大量数据集轻松地分类为安全信息,从而提供有效的信息保护。例如,在一些实施方案中,处理系统100设置控制位,以便将诸如指令信息或页表信息的特定类型的信息指定为安全信息,从而加密地保护这些信息,其中页表信息提供虚拟地址到存储器104的物理地址的映射。可以基于例如在处理器102处执行的程序所请求的指定以更细粒的方式指定分配给数据的地址的控制位。该安全方案提供了对关键数据的保护(例如,防止未经授权执行虚拟机或其程序),同时仍为更通用的数据提供灵活性。
在一些实施方案中,因为基于信息的相应存储器地址指定分配给信息的安全类型,所以处理系统100使用页表本身来指示每个存储器地址的安全类型。因此,如下文进一步描述,IOMMU 120在识别对应于存储器访问请求的存储器地址的过程中识别存储器访问请求的类型。特别地,如果存储器地址被指示为存储安全信息,则相应的存储器访问被识别为安全存储器访问。类似地,如果存储器地址被指示为存储非安全信息,则相应的存储器访问被识别为非安全存储器访问。
存储器控制器116为I/O装置106提供用于与存储器104通信的接口。IOMMU 120从I/O装置106接收存储器访问请求(例如,直接存储器访问请求),并且控制经由存储器控制器116向存储器104提供那些请求。另外,存储器控制器116从存储器104接收对存储器访问请求的响应,并且控制向I/O装置106提供响应。
为了提供信息的密码隔离,存储器控制器116包括加密模块122,该加密模块122被配置成根据指定的密码标准并基于密钥124对信息进行加密和解密。在一些实施方案中,加密模块122被配置成采用高级加密标准(AES)进行加密和解密,但是在其他实施方案中,加密模块122可以采用其他的加密/解密技术。
存储器控制器116被配置成将每个存储器访问请求识别为两种类型中的一种:指示对应于存储器访问请求的信息被指定用于密码保护的安全存储器访问请求,或指示对应于存储器访问请求的信息未被指定用于密码保护的非安全存储器访问请求。响应于接收到写入请求,存储器控制器116识别该请求是安全存储器访问请求还是非安全存储器访问请求。如果写入请求是非安全存储器访问请求,则存储器控制器116绕过加密模块122并将写入请求提供给存储器104而不对将写入的信息进行加密。如果写入请求是安全存储器访问请求,则存储器控制器116识别被分配给生成存储器访问请求的I/O装置106的密钥124中的一个。在一些实施方案中,如本文进一步描述,存储器控制器116基于被分配给I/O装置106的识别标签值(即,VM TAG)来识别和选择密钥。加密模块122采用所选择的密钥来对要写入的信息进行加密,并且将写入请求与加密信息一起提供给存储器104以进行存储。在一些实施方案中,加密模块122使用所选择的密钥和存储器访问请求的物理地址来对相应的信息进行加密和解密,从而防止块移动攻击。在一些实施方案中,加密模块122基于处理器102处的控制位(未示出)的状态来识别是否使用物理地址进行加密和解密。控制位状态可以由安全模块108设置。
响应于接收读取请求,存储器控制器116将请求提供给存储器104,随后接收响应于该请求的信息。如果存储器控制器116识别出读取请求为非安全存储器访问请求,则其绕过加密模块122并在没有加密的情况下将读取的信息提供给I/O装置106。如果存储器控制器116识别出读取请求为安全存储器访问请求,则其识别分配给生成读取访问请求的I/O装置106的密钥124中的一个,并且加密模块122对读取的信息进行解密。然后,存储器控制器116将解密的读取信息提供给I/O装置106。
在一些实施方案中,安全模式寄存器118用于控制加密模块122的操作。安全模式寄存器118包括保护模式开启字段126和保护模式活动字段128。响应于保护模式开启字段126处于指定状态(例如,否定状态),存储器控制器116针对包括安全存储器访问请求的所有存储器访问请求绕过加密模块122。这允许处理系统100在绕过了对处理器102和I/O装置106处执行的所有程序的加密和解密的模式中进行操作。
响应于保护模式开启字段126处于不同的指定状态(例如,断言状态),存储器控制器116识别保护模式活动字段128的状态。响应于保护模式活动字段128处于指定状态(例如,否定状态),存储器控制器116针对所接收的存储器访问请求(包括安全存储器访问请求)绕过加密模块122,并且响应于保护模式活动字段128处于不同的状态(例如,断言状态),仅针对非安全存储器访问请求绕过加密模块122。在一些实施方案中,由管理执行多个单独的程序的实体(例如,管理程序)或处理器102处的实体(例如,VM)来设置保护模式开启字段126,同时针对单独的程序或实体中的每一个来单独设置保护模式开启字段126。因此,安全模式寄存器118允许以不同的粒度级别来控制对加密模块122的使用。
在一些实施方案中,I/O装置106可以采用存储器控制器116,通过发起包括发送到IOMMU 120的虚拟地址的存储器访问请求,通过直接存储器访问(DMA)请求来访问存储器104中的安全信息130。IOMMU 120可以在I/O装置106使用的装置虚拟地址与存储器104中的物理地址之间执行地址转换。例如,I/O装置106生成存储器访问请求,包括在存储器104处存储数据的写入请求和从存储器104检索数据的读取请求。每个存储器访问请求包括存储器地址,该存储器地址指示存储器访问请求所针对的存储器104处的位置。响应于读取请求,存储器104检索存储在与读取请求的存储器地址相对应的位置处的信息(数据或指令),并将该信息提供给I/O装置106。响应于写入请求,存储器104将请求的写入信息存储在与写入请求的存储器地址相对应的位置。
此外,加密模块122对与存储器访问请求相关联的数据执行加密(用于写入访问)或解密(用于读取访问)。对于安全存储器访问,加密模块122对与存储器访问相关联的数据执行加密(用于写入访问)或解密(用于读取访问)。如下文进一步描述,因为加密是由处理器的存储器访问路径中的硬件完成的,所以在没有正确的加密/解密密钥的情况下访问存储在存储器104中的数据是没有意义的。
图2示出了根据一些实施方案的图1的处理系统100的示例操作。处理器202将同时执行两个虚拟机(VM),VM-A 204和VM-B206。另外,处理器202执行管理程序208以在VM 204、206与处理系统的硬件之间提供接口。在操作中,在被允许在处理器202处执行之前,VM 204和206中的每一个向安全模块210注册。在一些实施方案中,如下注册VM:VM所有者与安全模块210建立安全通信信道212。为VM生成指定为“VM TAG”的识别标签值和指定为“VM KEY”的安全密钥。可以在安全模块210处或在单独的安全装置处完成这一生成操作,并且经由安全通信信道212传送到安全模块210。在一些实施方案中,每个VM的VM TAG值最初由管理程序208写入并提供给安全模块210以进行加密。安全模块210确保VM KEY和VM TAG值中的每一个对于相应的VM是唯一的。VM所有者对相应VM的图像进行加密并将其提供给管理程序208,管理程序208将加密图像作为安全数据存储在存储器214中(例如,存储在安全信息空间232和234处)。
管理程序208将每个VM分配给VM的相应的加密地址空间。安全信息232包括VM-A204的VM图像,且安全信息234包括VM-B206的VM图像。存储器214存储由处理器202使用的数据。存储器214可以是随机访问存储器(RAM)、诸如闪速存储器的非易失性存储器或硬盘驱动器(HDD)等或其组合。
处理系统还包括物理输入/输出(I/O)装置216。物理I/O装置216可以是例如网络接口卡(NIC)、主机总线适配器(HBA)等。I/O装置216可以包括在装置上配置的多个虚拟功能(VF)。例如,I/O装置216包括在装置上配置的两个VF,VF-A 218和VF-B 220。管理程序208将VF 218、220映射(例如,分配)到VM 204、206。例如,将VF-A 218映射到VM-A204并且将VF-B 220映射到VM-B 206。此外,安全模块210通过向每个VF分配唯一识别标签值(例如,VMTAG)来将VM与I/O装置VF相关联。该配置提供了经由IOMMU 224的从VM到I/O装置216的寄存器的路径,并确保仅授权的VM可以到达其相关联VF的寄存器。例如,在驻留在存储器214内的装置表236中,VM-A TAG与VF-A 218相关联,且VM-B TAG与VF-B 220相关联。
IOMMU 224用于将装置(诸如,I/O装置216)连接到存储器控制器222。IOMMU 224为I/O装置216提供与存储器214通信的接口。存储器控制器222经由IOMMU 224从I/O装置216接收存储器访问请求(例如,直接存储器访问请求),并且对将那些请求提供到存储器214进行控制。另外,存储器控制器222从存储器214接收对存储器访问请求的响应,并且控制向I/O装置216提供响应。
为了提供信息的密码隔离,存储器控制器222包括被配置成根据指定的密码标准并基于密钥228、230对信息进行加密和解密的加密模块226。在一些实施方案中,加密模块226被配置成采用高级加密标准(AES)进行加密和解密,但是在其他实施方案中,加密模块226可以采用其他的加密/解密技术。常规上,管理程序208将直接与处理器202交互,且因此可以访问与VM 204、206相关联的所有安全密钥。这将允许恶意或有缺陷的管理程序向未授权方提供对VM的安全信息的访问。例如,需要防止恶意管理程序或VM-A与分配给VM-B的装置VF-B通信,并且防止其告知VF-B对VM-B的存储器执行特定的恶意DMA操作。类似地,恶意VF可以尝试执行DMA以访问未经授权的其他VM/VF所采用的信息。相比之下,在图2的示例中,如本文进一步描述,安全模块210管理对安全密钥的访问,并且仅允许VF访问授权信息。
安全模块210通过生成安全密钥、识别被注册为在处理系统处执行的实体以及实现密码隔离的其他操作来支持信息的这种密码隔离。可以在安全模块210处或在单独的安全装置处完成安全密钥的生成操作,并且经由安全通信信道212传送到安全模块210。安全模块210确保VM KEY和VM TAG值中的每一个对于相应的VM是唯一的。本文使用的术语“安全密钥”指认证或加密密钥,以及签名了密钥的任何证书或证书链。安全模块210分别生成并保持与VM-A 204和VM-B206相关联的两个不同的安全密钥KEY-A 228和KEY-B 230。安全模块210将安全密钥228、230直接提供给存储器控制器222,使得管理程序208无法访问安全密钥。在一些实施方案中,安全模块210通过将密钥直接写入到存储器控制器222的寄存器来提供密钥。这些寄存器对于管理程序208或在处理器202处执行的其他实体是不可访问的(例如,不可寻址),因此防止恶意实体访问安全密钥228、230并进而访问安全信息地址空间232、234。
图3示出了根据一些实施方案的用于执行示例直接存储器访问操作的图1和图2的处理系统的一部分。在所描述的示例中,处理器302将同时执行两个虚拟机(VM),VM-A 304和VM-B 306。另外,处理器302执行管理程序308以在VM 304、306与处理系统的硬件之间提供接口。在操作中,在被允许在处理器302处执行之前,VM 304和306中的每一个向安全模块310注册。管理程序308将每个VM分配给存储器312中用于VM的相应的加密地址空间。存储器312存储由处理器302使用的数据。存储器312可以是随机访问存储器(RAM)、诸如闪速存储器的非易失性存储器或硬盘驱动器(HDD)等或其组合。安全信息空间314与VM-A 304相关联,安全信息空间316与VM-B 306相关联。
处理系统还包括物理输入/输出(I/O)装置318、存储器控制器320和输入/输出存储器管理单元(IOMMU)322。物理I/O装置318可以是例如网络接口卡(NIC)、主机总线适配器(HBA)等。I/O装置318可以包括在装置上配置的多个虚拟功能(VF)。I/O装置318包括在装置上配置的两个VF,-VF-A 324和VF-B 326。管理程序308将VF 324、326映射(例如,分配)到VM304、306。例如,将VF-A324映射到VM-A 304并且将VF-B 326映射到VM-B 306。
如上文参照图2所讨论,安全模块310通过向每个VF分配唯一识别标签值(例如,VMTAG)来将VM与I/O装置VF相关联。当处理器302执行VM-A时,其加载有VM-A TAG(即,识别标签值),并且在访问存储器时使用该标签。例如,通过安全模块310将VM-A TAG分配给VF-A324,将VM-B TAG分配给VF-B 326。安全模块310还生成安全密钥328和330并将其提供给存储器控制器320。在图3的示例中,安全模块310分别生成并保持与VM-A304和VM-B306相关联的两个不同的安全密钥KEY-A328和KEY-B 330。安全模块310将安全密钥328、330直接提供给存储器控制器320,使得管理程序308无法访问安全密钥。
当访问I/O装置318中的存储器映射I/O(MMIO)寄存器时,提供该相同的标签。IOMMU 322配置有保护表,以识别是否允许具有VM-A标签的MMIO请求访问所请求的MMIO地址。在一些实施方案中,IOMMU包括包含MMIO掩码孔(例如,与MMIO寄存器相关联的存储器物理地址空间的部分)以及VM可访问性的查找表(未示出)。查找表用于检查MMIO通信(例如,从VM到I/O装置318的MMIO的读取/写入),并将VM TAG与可允许的下游MMIO地址范围相关联。VM TAG包括在MMIO访问请求中,以授权从VM到I/O装置318的通信。如果VM提供的值与分配给VF的值之间的VM TAG值不匹配,则防止对I/O装置318MMIO的访问。这种MMIO隔离可以防止恶意管理程序控制可访问VM的VF。
在一些实施方案中,该下游MMIO访问授权由IOMMU 322执行,但是可选地,可以在与IOMMU 322分开的模块处执行。该配置提供从VM到I/O装置318的寄存器的路径,并且确保只有安全模块310授权的VM才能到达其相关联VF的寄存器。如本文所使用,术语“下游”指MMIO通信,其包括经由IOMMU 322从VM到I/O装置318的读取或写入。术语“上游”指直接存储器访问(DMA)通信,其包括经由IOMMU 322从VF 324、326或I/O装置318到存储器312的读取或写入。
IOMMU 322用于将装置(例如,I/O装置318)连接到存储器控制器320。存储器控制器320提供用于I/O装置318与存储器312通信的接口。在一些示例中,存储器控制器320经由IOMMU 322从I/O装置318接收存储器访问请求(例如,直接存储器访问请求),并且对将那些请求提供到存储器312进行控制。在其他示例中,存储器控制器320从存储器312接收对存储器访问请求的响应,并且控制向I/O装置318提供响应。
I/O装置318处的VF 324和326可以采用存储器控制器320,通过发起存储器访问请求,通过直接存储器访问(DMA)请求来访问存储器312中的安全信息314、316。例如,在其执行过程中,VF 324和326分别访问(存储和检索)安全信息314和316。加密模块332确保安全信息314和316被加密隔离,使得存储在其中的数据只能使用分配给它们各自的VM/VF的安全密钥进行加密/解密。
在一些实施方案中,VF 324和326向IOMMU 322提供存储器访问请求,其中存储器访问请求包括存储器请求所针对的虚拟地址和对每个VF中的每一个而言唯一的请求程序ID。例如,VF-A324传输请求程序ID“REQUEST ID-A”及其存储器访问请求,VF-B传输请求程序ID“REQUEST ID-B”及其存储器访问请求。请求程序ID可以由I/O装置硬件(例如,装置号和虚拟功能号)和/或系统bios固件或管理程序308(例如,总线号)部分地控制。IOMMU 322基于DMA操作的请求程序ID,通过使用存储在存储器312中的包括VM TAG到请求程序ID的映射的装置表340来查找与接收到的请求程序ID相关联的VM TAG以确定VM TAG值。
在一些情况中,恶意实体可以通过模拟(例如,经由软件仿真)IOMMU 322来尝试访问VM的安全信息。为了解决这些情况,在一些实施方案中,IOMMU 322和VM 304、306可以执行完整性检查程序以确保IOMMU 322未正被模拟。特别地,为了检查IOMMU 322的完整性,VM304、306可以将指定的命令写入到存储器312处的相应的安全信息空间。例如,在一些实施方案中,当相应的VM改变页表时,VM 304、306将IOMMU TLB无效命令写入到相应的安全信息空间的指定位置。IOMMU 322从安全信息空间中读取命令、执行该命令(例如,通过使其TLB336中的旧地址转换的任何高速缓存的副本无效来执行),并且在完成命令时将指定值写入到相应的安全信息空间中的指定位置(即,其重写存储在指定位置的命令)。IOMMU经由存储器控制器320将指定值写入到存储器312,以便使用发出命令的VM的相应加密密钥写入该指定值。发出该命令的VM会针对该指定值定期检查指定位置。如果VM识别出写入到指定位置的错误值,或者如果指定位置处的命令未在指定时间内被重写,则VM确定被发出页表命令的实体未被授权,且然后VM可以采取补救措施。通过使用安全信息空间来执行完整性检查,处理器302确保未授权实体无法模拟IOMMU 322以获得对安全信息空间的访问。特别地,因为未授权实体无法正确地对指定值进行加密(因为它不知道正确的加密密钥),所以未授权实体无法将指定值写入到存储器312。
在一些实施方案中,IOMMU 322基于请求的虚拟存储器地址所包括的一个或多个位来识别存储器访问请求是否是安全存储器访问请求。例如,如下文在图4和图5中进一步描述,虚拟地址包括C-位以指示访问请求是否为安全/非安全访问请求。如果请求是非安全请求,则IOMMU 322绕过加密模块332,并且在不进行加密或解密的情况下满足存储器访问请求。
如果请求是安全存储器访问请求(例如,基于被断言的C-位),则IOMMU 322基于由VF请求DMA(例如,生成存储器访问请求的VF 324和326中的一个)提供的请求程序ID(例如,REQUEST ID-A或ID-B)来使用装置表340来查找VM TAG。将所识别的VM TAG提供给存储器控制器320的加密模块332,该加密模块332识别哪个加密密钥应该与DMA请求一起使用(即,存储器读取使用相关密钥来对来自存储器312的数据进行解密。存储器写入使用相关密钥来对去往存储器312的数据进行加密)。因此,加密模块332选择安全密钥328和330中与从IOMMU输出的VM TAG相对应的一个,并且使用所选择的密钥,对存储器访问信息(读取数据或写入数据)执行加密(在写入请求的情况下)或解密(在读取请求的情况下)。
IOMMU 322还(在页表338中)查找与I/O装置318相关联且将用于地址转换的页表信息。IOMMU 322包括地址转换模块334和转换后备缓冲器(TLB)336,用于在I/O装置318使用的装置虚拟地址与存储器312中的物理地址之间执行地址转换。IOMMU 322利用存储器312中的TLB 336和页表338来获得存储器访问请求所针对的存储器中的特定页的物理地址。页表338将虚拟地址映射到物理地址。存储器控制器320使用物理地址来访问存储器的页。在一些实施方案中,在IOMMU地址转换之后导出的物理地址可以使其较高位重新用于对VM TAG进行编码以传输到加密模块332。在其他实施方案中,VM TAG也可以与物理地址分开发送。
IOMMU 322基于请求程序ID查找VM TAG,并且将DMA请求所针对的物理地址转发到存储器控制器320。在一些实施方案中,在IOMMU地址转换之后导出的物理地址可以使其较高位重新用于对VM TAG进行编码以传输到加密模块332。在其他实施方案中,VM TAG也可以与物理地址分开发送。当存储器控制器接收到请求时,其基于VM TAG查找加密密钥,然后使用加密模块对存储器进行加密/解密。这允许在I/O装置318上运行的VF通过参考与其相关联的VM相同的加密密钥(例如,KEY-A 328和KEY-B 330)来直接访问存储器312的加密存储器区域,并且不需要与VM 304、306和管理程序308交互。如上所述,数据的密码保护发生在存储器控制器320处,并且用于密码保护的安全密钥对于VF 324、326和VM 304、306以及管理程序308而言是未知且不可访问的。这可以确保一个VF无法访问其他VM/VF的安全信息。
DMA请求通常会被传递到存储器控制器320,但可能具有或不具有正确的VM TAG(基于随DMA请求提供且由装置表340使用以查找VM TAG的请求程序ID值),因此可能会出现使用正确的密码密钥或错误的密码密钥进行存储器访问。例如,如果与请求程序VF提供的请求程序ID相关联的VM TAG与正确的安全密钥相匹配,则将存储器访问请求与适当的安全密钥一起转发到加密模块332,以对存储器通信进行加密/解密,从而允许请求程序VF访问其关联VM的安全存储器空间。然而,如果与请求程序VF提供的请求程序ID相关联的VM TAG与正确的安全密钥不匹配,则仍会对安全存储器空间中的物理存储器进行读取或写入,但使用错误的密钥进行解密/加密。使用错误的安全密钥进行读取会导致解密后不会返回真正的明文。
例如,在一些实施方案中,VF-A 324可以发出访问安全信息316的存储器访问请求(VF-B 326的安全信息)。因为存储器访问请求由VF-A 324生成,所以IOMMU 322将访问存储器312处的装置表340以查找与VF-A 324相关联的VM TAG并将其提供给存储器控制器320。VF-A 324的VM-A标签被提供给存储器控制器320,其使用加密模块332来查找与所提供的VM-A标签相关联的安全密钥。使用KEY-A 328而非最初用于加密安全数据的KEY-B 330来对存储器访问请求所针对的安全信息316进行解密。因此,因使用不正确的密钥对数据进行解密,所以VF-A将无法有意义地或正确地解释解密的数据。因此,VM-B 306/VF-B 326的安全信息316与VF-A 324的访问加密隔离。
图4示出了根据一些实施方案的用以识别存储器访问请求的安全类型(例如,安全或非安全)的IOMMU 322的一部分。特别地,图4描绘了地址转换模块434和转换后备缓冲器(TLB)436。地址转换模块434通常被配置成从VF(例如,图3的VF-A 324和VF-B 326)接收用于相应的存储器访问请求的虚拟地址。地址转换模块434将每个接收的虚拟地址转换为相应的物理地址,该物理地址识别存储器访问请求所针对的存储器312中的位置。
地址转换模块434使用(例如,图3的存储器312中的)TLB 436和页表438中的一个或两者来将虚拟地址转换为相应的物理地址。页表438包括由虚拟地址索引的多个条目(例如,条目402)。在一些实施方案中,页表438是多级页表,其中较高级页包括识别与虚拟地址相关联的其他页的条目,其中较低级页识别分配给虚拟地址的物理地址。可以通过遍历页查核中的页表来识别物理地址,其中首先访问最高级页以识别待访问的下一级的页,依此类推,直到识别出包括物理地址的最低级页表并且从该最高级页表中检索到物理地址。最低级页表还存储指示对应于该物理地址的数据是否将被加密保护的位(指定为“C-位”)。TLB 436包括多个条目(例如,条目404),多个条目一起存储页表438的条目子集,条目子集反映最近由地址转换模块434接收的虚拟地址。
响应于接收虚拟地址,地址转换模块434访问TLB 436以确定TLB 436是否包括与虚拟地址相对应的条目。IOMMU 322使用的地址的C-位部分来识别存储器访问请求是否是安全存储器访问请求。因此,例如,如果物理地址值中的C-位处于断言状态,则存储器IOMMU322将相应的存储器访问请求识别为安全存储器访问请求,并且IOMMU 322查找对应于请求程序的VM TAG。地址转换模块434将VM TAG值附加到物理地址上,并且提供产生的物理地址值供加密模块使用以查找安全密钥。如果页表条目中的C-位被去断言,则IOMMU 322不将VMTAG附加到物理地址上,并且在不进行加密或解密的情况下继续进行存储器访问。
图5示出了根据一些实施方案的在存储器控制器处处理直接存储器访问请求以保护指定用于密码保护的信息的方法500的流程图。出于描述的目的,参照图3的IOMMU 322处的示例性实现方式来描述方法500。在方框502处,IOMMU 322从请求程序VF接收存储器访问请求。存储器访问请求可以是由VF 324或326中的一个生成的请求。如上文关于图1-4所述,存储器访问请求的地址值可以包括指示存储器访问请求是否是安全存储器访问请求的C-位值,以及识别请求程序VF的请求程序ID值。
在方框504处,IOMMU 322确定用于存储器访问请求的C-位是否被断言。如果没有,则存储器访问请求是非安全存储器访问请求,并且方法流程移动到方框506,并且存储器控制器320绕过加密模块332并满足存储器访问请求。在写入请求的情况下,存储器控制器320不对写入信息进行加密,使得存储器312以未加密的形式存储写入信息。在读取请求的情况下,存储器控制器320从存储器312检索信息并将其提供给请求程序VF而不对该信息进行解密。
返回到方框504,如果IOMMU 322识别出用于存储器访问请求的C-位被断言,则存储器访问请求是安全存储器访问请求。因此,方法流程移动到方框508,并且IOMMU 322使用图3中描述的装置表340,基于请求程序VF的请求程序ID来查找VM TAG。将VM TAG提供给存储器控制器320,并且方法流程进行到方框510。在方框510处,存储器控制器320识别与所提供的VM TAG相对应的安全密钥328和330中的一个。在方框512处,加密模块332对将用于满足存储器访问请求的信息进行加密或解密。也就是说,如果存储器访问请求是写入请求,则加密模块332使用所识别的安全密钥对将写入的信息进行加密。如果存储器访问请求是读取请求,则存储器控制器320从存储器312检索将读取的信息,并且加密模块332使用所识别的安全密钥对检索到的信息进行解密。在方框514处,存储器控制器320使用加密的(在写入请求的情况下)或解密的(在读取请求的情况下)信息来满足存储器访问请求。
在一些实施方案中,上述设备和技术在具有一个或多个集成电路(IC)装置(也称为集成电路封装或微芯片)的系统中实现,例如上文参照图1-5所述的处理器。在这些IC装置的设计和制造中可以使用电子设计自动化(EDA)和计算机辅助设计(CAD)软件工具。这些设计工具通常呈现为一个或多个软件程序。该一个或多个软件程序包括计算机系统可执行的代码以操纵计算机系统来对代表一个或多个IC装置的电路的代码进行操作,以便执行用于设计或调整制造系统来制作电路的过程中的至少一部分。该代码可以包含指令、数据或指令和数据的组合。表示设计工具或制造工具的软件指令通常存储在计算系统可访问的非暂时性计算机可读存储介质中。同样,表示IC装置的设计或制造的一个或多个阶段的代码可以存储在相同的计算机可读存储介质或不同的计算机可读存储介质中并且可以从其中进行访问。
计算机可读存储介质可以包括使用期间可由计算机系统访问以便将指令和/或数据提供给计算机系统的任何存储介质或存储介质的组合。这种存储介质可以包括(但不限于):光学介质(例如,光盘(CD)、数字多功能光盘(DVD)、蓝光光盘)、磁介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机访问存储器(RAM)或高速缓存)、非易失性存储器(例如,只读存储器(ROM)或闪速存储器)或基于微机电系统(MEMS)的存储介质。计算机可读存储介质可以嵌入在计算系统中(例如,系统RAM或ROM)、固定地附接到计算系统中(例如,磁性硬盘驱动器)、可移除地附接到计算系统中(例如,光盘或基于通用串行总线(USB)的闪速存储器)或者经由有线或无线网络联接到计算机系统中(例如,网络可访问存储(NAS))。
应注意,并不需要上文在一般描述中描述的全部活动或要素,可能不需要特定活动或装置中的一部分,并且可以执行除所描述的那些之外的一个或多个其他的活动,或者包括其他要素。更进一步地,所列出的活动的顺序不一定是执行这些活动的顺序。而且,已经参考具体的实施方案描述了相应概念。然而,本领域的普通技术人员应理解,在不脱离如所附权利要求书中所阐述的本公开的范围的情况下,可以进行各种修改和改变。因此,说明书和附图被当作是说明性而非限制性的,并且所有这些修改都意在被包括在本公开的范围内。
上文已经关于具体的实施方案描述了益处、其他优点和问题的解决方案。然而,益处、优点、问题的解决方案以及可能引起任何益处、优点或解决方案发生或变得更为明显的任何特征都不应被解释为任何或所有权利要求的关键、必需或本质特征。此外,以上公开的特定实施方案仅仅是说明性的,因为所公开的主题可以以对受益于本文教示的本领域技术人员所显而易见的不同但等效的方式进行修改和实践。除了在所附权利要求书中所描述的之外,不意在对本文所示出的构造或设计的细节进行限制。因此,显而易见的是,可以对上文公开的特定实施方案进行改变或修改,并且所有这种变化都被认为处于所公开的主题的范围内。因此,本文要求的保护如阐述于所附权利要求书中一样。
Claims (20)
1.一种方法,其包括:
在处理器[102]的输入/输出存储器管理单元(IOMMU)[120]处从输入/输出(IO)装置接收存储器访问请求以访问存储器[104]内的存储器空间,其中所述存储器访问请求包括存储器地址值和请求程序ID;
在所述IOMMU处确定与所述请求程序ID相关联的识别标签值;以及
使用对应于所述识别标签值的安全密钥[124]来访问所述存储器空间的所述存储器地址值处的数据。
2.根据权利要求1所述的方法,其中从所述IO装置接收所述存储器访问请求包括:从在所述IO装置上配置的虚拟功能(VF)[218]接收所述存储器访问请求。
3.根据权利要求1所述的方法,其中确定识别标签值包括:基于所述请求程序ID,使用装置表[236]来查找所述识别标签值。
4.根据权利要求1所述的方法,其还包括:
识别与所述存储器访问请求相关联的虚拟机(VM)[204],其中所述安全密钥对应于所识别的VM。
5.根据权利要求4所述的方法,其还包括:
从与所述处理器分开的安全模块[108]接收所述安全密钥。
6.根据权利要求1所述的方法,其还包括:
响应于确定所述存储器访问请求将访问非安全存储器空间的所述存储器地址值处的数据,在不使用所述安全密钥的情况下访问所述非安全存储器空间处的数据。
7.根据权利要求1所述的方法,其还包括:
响应于确定所述存储器访问请求是访问安全存储器空间的所述存储器地址值处的数据的写入访问请求,使用所述安全密钥对用于写入到所述安全存储器空间的数据进行加密。
8.根据权利要求1所述的方法,其还包括:
响应于确定所述存储器访问请求是被授权来访问安全存储器空间的所述存储器地址值处的数据的读取访问请求,使用所述安全密钥对从所述安全存储器空间读取的数据进行解密。
9.根据权利要求1所述的方法,其还包括:
响应于在IOMMU处接收访问存储器映射I/O(MMIO)寄存器的请求,允许基于所述识别标签值来访问所述MMIO寄存器。
10.根据权利要求1所述的方法,其还包括:
将命令从虚拟机中写入到所述安全存储器空间;
响应于所述命令,在所述IOMMU处执行所述命令;
响应于执行所述命令,由所述IOMMU利用指定值重写所述存储器空间处的所述命令;以及
所述虚拟机响应于读取所述安全存储器空间处的所述指定值来认证所述IOMMU。
11.一种处理器[102],其包括:
存储器控制器[116],其包括:
输入/输出存储器管理单元(IOMMU)[120],其用于从输入/输出(IO)装置[106]接收存储器访问请求,以访问存储器[104]内的存储器空间[130];以及
加密模块[122],其用于基于与所述存储器访问请求相关联的识别标签值,提供对所述存储器空间内的数据的密码访问。
12.根据权利要求11所述的处理器,其中:
基于所述存储器访问请求所包括的请求程序ID来确定所述识别标签值。
13.根据权利要求12所述的处理器,其还包括:
装置表[236],其用于基于所述请求程序ID来确定待传递到所述加密模块的所述识别标签值。
14.根据权利要求12所述的处理器,其还包括:
管理程序[208],其用于将所述请求程序ID与所述识别标签值相关联。
15.一种处理器[102],其包括:
处理器核心[110];
输入/输出存储器管理单元(IOMMU)[120],其用于进行以下操作:
从输入/输出(IO)装置[106]接收存储器访问请求以访问与虚拟机(VM)[204]相关联的存储器[104]内的安全存储器空间,其中所述存储器访问请求包括存储器地址值和指示所述VM的请求程序ID;
确定与所述请求程序ID相关联的识别标签值;以及
使用对应于所述识别标签值的安全密钥来访问所述安全存储器空间的所述存储器地址值处的数据。
16.根据权利要求15所述的处理器,其中所述处理器还包括:
安全模块[108],其与所述处理器核心分开以存储所述安全密钥。
17.根据权利要求16所述的处理器,其中所述安全模块用于:
响应于来自所述VM的请求,生成所述安全密钥。
18.根据权利要求17所述的处理器,其还包括:
存储器控制器[116],其包括加密模块[122],所述加密模块用于响应于确定所述存储器访问请求是被授权来访问所述安全存储器空间的所述存储器地址值处的数据的写入访问请求,使用所述安全密钥对数据进行加密,以将其写入到所述安全存储器空间。
19.根据权利要求18所述的处理器,其中所述加密模块用于:
响应于确定所述存储器访问请求是被授权来访问所述安全存储器空间的所述存储器地址值处的数据的读取访问请求,使用所述安全密钥对从所述安全存储器空间读取的数据进行解密。
20.根据权利要求15所述的处理器,其中所述存储器访问请求由在所述IO装置上配置的虚拟功能(VF)来请求。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/297,868 US10176122B2 (en) | 2016-10-19 | 2016-10-19 | Direct memory access authorization in a processing system |
US15/297,868 | 2016-10-19 | ||
PCT/US2017/057005 WO2018075535A1 (en) | 2016-10-19 | 2017-10-17 | Direct memory access authorization in a processing system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109844751A true CN109844751A (zh) | 2019-06-04 |
CN109844751B CN109844751B (zh) | 2021-02-02 |
Family
ID=61904502
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780063897.4A Active CN109844751B (zh) | 2016-10-19 | 2017-10-17 | 用于提供信息隔离的方法和处理器 |
Country Status (6)
Country | Link |
---|---|
US (1) | US10176122B2 (zh) |
EP (1) | EP3529738A4 (zh) |
JP (1) | JP6618658B2 (zh) |
KR (1) | KR102107711B1 (zh) |
CN (1) | CN109844751B (zh) |
WO (1) | WO2018075535A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109684030A (zh) * | 2018-11-22 | 2019-04-26 | 海光信息技术有限公司 | 虚拟机内存密钥生成装置、以及方法、加密方法和SoC系统 |
CN112433817A (zh) * | 2020-11-27 | 2021-03-02 | 海光信息技术股份有限公司 | 信息配置方法、直接存储访问方法及相关装置 |
WO2021098823A1 (zh) * | 2019-11-21 | 2021-05-27 | 华为技术有限公司 | 一种内存隔离的装置、内存隔离方法和相关设备 |
CN114258536A (zh) * | 2019-08-22 | 2022-03-29 | 超威半导体公司 | 联网输入/输出存储器管理单元 |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9710401B2 (en) | 2015-06-26 | 2017-07-18 | Intel Corporation | Processors, methods, systems, and instructions to support live migration of protected containers |
US10664179B2 (en) | 2015-09-25 | 2020-05-26 | Intel Corporation | Processors, methods and systems to allow secure communications between protected container memory and input/output devices |
US10817447B2 (en) * | 2016-11-14 | 2020-10-27 | Intel Corporation | Input/output translation lookaside buffer (IOTLB) quality of service (QoS) |
US10771439B2 (en) * | 2017-06-28 | 2020-09-08 | Microsoft Technology Licensing, Llc | Shielded networks for virtual machines |
US10325109B2 (en) * | 2017-09-14 | 2019-06-18 | International Business Machines Corporation | Automatic and dynamic selection of cryptographic modules for different security contexts within a computer network |
US10706493B2 (en) * | 2017-12-29 | 2020-07-07 | Intel Corporation | Apparatus and method for display virtualization using mapping between virtual and physical display planes |
US11789874B2 (en) | 2018-01-09 | 2023-10-17 | Qualcomm Incorporated | Method, apparatus, and system for storing memory encryption realm key IDs |
US11386017B2 (en) * | 2018-06-20 | 2022-07-12 | Intel Corporation | Technologies for secure authentication and programming of accelerator devices |
WO2020041583A1 (en) * | 2018-08-22 | 2020-02-27 | Qualcomm Incorporated | Method, apparatus, and system for storing memory encryption realm key ids |
US11836091B2 (en) | 2018-10-31 | 2023-12-05 | Advanced Micro Devices, Inc. | Secure memory access in a virtualized computing environment |
US11256427B2 (en) | 2018-12-28 | 2022-02-22 | Micron Technology, Inc. | Unauthorized memory access mitigation |
US11347869B2 (en) * | 2019-03-08 | 2022-05-31 | International Business Machines Corporation | Secure interface control high-level page management |
US11206128B2 (en) | 2019-03-08 | 2021-12-21 | International Business Machines Corporation | Secure paging with page change detection |
US11403409B2 (en) | 2019-03-08 | 2022-08-02 | International Business Machines Corporation | Program interruptions for page importing/exporting |
US11288213B2 (en) * | 2019-03-29 | 2022-03-29 | Intel Corporation | Memory protection with hidden inline metadata |
US11494211B2 (en) * | 2019-04-22 | 2022-11-08 | Advanced Micro Devices, Inc. | Domain identifier and device identifier translation by an input-output memory management unit |
US20200387326A1 (en) * | 2019-06-10 | 2020-12-10 | Advanced Micro Devices, Inc. | Guest Operating System Buffer and Log Accesses by an Input-Output Memory Management Unit |
US11593529B2 (en) * | 2019-07-29 | 2023-02-28 | Intel Corporation | Device interface security management for computer buses |
CN111274555B (zh) * | 2020-01-15 | 2022-11-18 | 福建杰木科技有限公司 | Flash存储器中的代码保护方法及保护装置 |
US11281579B2 (en) * | 2020-01-28 | 2022-03-22 | Intel Corporation | Cryptographic separation of MMIO on device |
US11604671B2 (en) * | 2020-03-19 | 2023-03-14 | Red Hat, Inc. | Secure virtual machine and peripheral device communication |
EP3913512A1 (en) * | 2020-05-21 | 2021-11-24 | BAE SYSTEMS plc | On-die computer apparatus |
AU2021277569A1 (en) * | 2020-05-21 | 2022-11-17 | Bae Systems Plc | On-die computer apparatus |
US11748135B2 (en) * | 2020-07-30 | 2023-09-05 | Red Hat, Inc. | Utilizing virtual input/output memory management units (IOMMU) for tracking encryption status of memory pages |
KR20220041586A (ko) | 2020-09-25 | 2022-04-01 | 에스케이하이닉스 주식회사 | 컨트롤러 및 이를 포함하는 전자 시스템 |
CN112257092B (zh) * | 2020-11-05 | 2023-10-27 | 海光信息技术股份有限公司 | 数据传输控制方法、密钥管理方法、配置方法及相关装置 |
US20220188135A1 (en) * | 2020-12-10 | 2022-06-16 | Ati Technologies Ulc | Hardware-based protection of virtual function resources |
US11893410B2 (en) | 2021-01-13 | 2024-02-06 | Vmware, Inc. | Secure storage of workload attestation reports in a virtualized and clustered computer system |
US11709700B2 (en) * | 2021-01-13 | 2023-07-25 | Vmware, Inc. | Provisioning identity certificates using hardware-based secure attestation in a virtualized and clustered computer system |
US20220308756A1 (en) * | 2021-03-26 | 2022-09-29 | Ati Technologies Ulc | Performing Memory Accesses for Input-Output Devices using Encryption Keys Associated with Owners of Pages of Memory |
US12045471B2 (en) * | 2021-07-27 | 2024-07-23 | International Business Machines Corporation | Secure memory isolation for secure endpoints |
US11874777B2 (en) | 2021-12-16 | 2024-01-16 | International Business Machines Corporation | Secure communication of virtual machine encrypted memory |
CN114238185A (zh) * | 2021-12-20 | 2022-03-25 | 海光信息技术股份有限公司 | 直接存储访问及命令数据传输方法、装置及相关设备 |
US11860797B2 (en) * | 2021-12-30 | 2024-01-02 | Advanced Micro Devices, Inc. | Peripheral device protocols in confidential compute architectures |
US20230393780A1 (en) * | 2022-06-02 | 2023-12-07 | Micron Technology, Inc. | Memory controller firmware virtualization |
US12093355B2 (en) | 2022-09-07 | 2024-09-17 | Bank Of America Corporation | Secure data transfer in a virtual environment using blockchain |
US20240289150A1 (en) * | 2023-02-24 | 2024-08-29 | Ati Technologies Ulc | Secure management of device control information in confidential computing environments |
US20240289151A1 (en) * | 2023-02-24 | 2024-08-29 | Ati Technologies Ulc | Address-space-identifier-based security of data transfer requests |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120072619A1 (en) * | 2010-09-16 | 2012-03-22 | Red Hat Israel, Ltd. | Memory Overcommit by Using an Emulated IOMMU in a Computer System with a Host IOMMU |
US20130080726A1 (en) * | 2011-09-25 | 2013-03-28 | Andrew G. Kegel | Input/output memory management unit with protection mode for preventing memory access by i/o devices |
US20140068137A1 (en) * | 2012-08-29 | 2014-03-06 | Andrew G. Kegel | Virtual Input/Output Memory Management Unit Within a Guest Virtual Machine |
US20150248357A1 (en) * | 2014-02-28 | 2015-09-03 | Advanced Micro Devices, Inc. | Cryptographic protection of information in a processing system |
US20160224496A1 (en) * | 2011-04-21 | 2016-08-04 | International Business Machines Corporation | Techniques for mapping device addresses to physical memory addresses |
US20160259661A1 (en) * | 2013-03-15 | 2016-09-08 | Oracle International Corporation | SYSTEM AND METHOD FOR PROVIDING AN INFINIBAND SR-IOV vSWITCH ARCHITECTURE FOR A HIGH PERFORMANCE CLOUD COMPUTING ENVIRONMENT |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7721068B2 (en) * | 2006-06-12 | 2010-05-18 | Oracle America, Inc. | Relocation of active DMA pages |
WO2013040241A1 (en) * | 2011-09-13 | 2013-03-21 | Privatecore, Inc. | Software cryptoprocessor |
US9063891B2 (en) * | 2012-12-19 | 2015-06-23 | Advanced Micro Devices, Inc. | Secure computer system for preventing access requests to portions of system memory by peripheral devices and/or processor cores |
US9798678B2 (en) * | 2015-04-02 | 2017-10-24 | International Business Machines Corporation | Protecting storage from unauthorized access |
-
2016
- 2016-10-19 US US15/297,868 patent/US10176122B2/en active Active
-
2017
- 2017-10-17 WO PCT/US2017/057005 patent/WO2018075535A1/en unknown
- 2017-10-17 KR KR1020197010624A patent/KR102107711B1/ko active IP Right Grant
- 2017-10-17 JP JP2019521086A patent/JP6618658B2/ja active Active
- 2017-10-17 CN CN201780063897.4A patent/CN109844751B/zh active Active
- 2017-10-17 EP EP17862442.5A patent/EP3529738A4/en not_active Withdrawn
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120072619A1 (en) * | 2010-09-16 | 2012-03-22 | Red Hat Israel, Ltd. | Memory Overcommit by Using an Emulated IOMMU in a Computer System with a Host IOMMU |
US20160224496A1 (en) * | 2011-04-21 | 2016-08-04 | International Business Machines Corporation | Techniques for mapping device addresses to physical memory addresses |
US20130080726A1 (en) * | 2011-09-25 | 2013-03-28 | Andrew G. Kegel | Input/output memory management unit with protection mode for preventing memory access by i/o devices |
US20140068137A1 (en) * | 2012-08-29 | 2014-03-06 | Andrew G. Kegel | Virtual Input/Output Memory Management Unit Within a Guest Virtual Machine |
US20160259661A1 (en) * | 2013-03-15 | 2016-09-08 | Oracle International Corporation | SYSTEM AND METHOD FOR PROVIDING AN INFINIBAND SR-IOV vSWITCH ARCHITECTURE FOR A HIGH PERFORMANCE CLOUD COMPUTING ENVIRONMENT |
US20150248357A1 (en) * | 2014-02-28 | 2015-09-03 | Advanced Micro Devices, Inc. | Cryptographic protection of information in a processing system |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109684030A (zh) * | 2018-11-22 | 2019-04-26 | 海光信息技术有限公司 | 虚拟机内存密钥生成装置、以及方法、加密方法和SoC系统 |
CN109684030B (zh) * | 2018-11-22 | 2021-05-04 | 海光信息技术股份有限公司 | 虚拟机内存密钥生成装置、以及方法、加密方法和SoC系统 |
CN114258536A (zh) * | 2019-08-22 | 2022-03-29 | 超威半导体公司 | 联网输入/输出存储器管理单元 |
CN114258536B (zh) * | 2019-08-22 | 2023-08-15 | 超威半导体公司 | 联网输入/输出存储器管理单元 |
WO2021098823A1 (zh) * | 2019-11-21 | 2021-05-27 | 华为技术有限公司 | 一种内存隔离的装置、内存隔离方法和相关设备 |
CN112433817A (zh) * | 2020-11-27 | 2021-03-02 | 海光信息技术股份有限公司 | 信息配置方法、直接存储访问方法及相关装置 |
CN112433817B (zh) * | 2020-11-27 | 2022-11-25 | 海光信息技术股份有限公司 | 信息配置方法、直接存储访问方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109844751B (zh) | 2021-02-02 |
KR102107711B1 (ko) | 2020-05-07 |
JP6618658B2 (ja) | 2019-12-11 |
US10176122B2 (en) | 2019-01-08 |
EP3529738A1 (en) | 2019-08-28 |
US20180107608A1 (en) | 2018-04-19 |
EP3529738A4 (en) | 2020-02-26 |
JP2019532438A (ja) | 2019-11-07 |
WO2018075535A1 (en) | 2018-04-26 |
KR20190075063A (ko) | 2019-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109844751A (zh) | 处理系统中的直接存储器访问授权 | |
EP3602376B1 (en) | Monitoring of memory page transitions between a hypervisor and a virtual machine | |
JP6450775B2 (ja) | 処理システムにおける情報の暗号保護 | |
US20170277898A1 (en) | Key management for secure memory address spaces | |
US8572410B1 (en) | Virtualized protected storage | |
CN105046163B (zh) | 保护嵌入式管理程序系统中的重要数据结构 | |
CN103778075A (zh) | 安全管理单元、包括它的主机控制器接口及其操作方法 | |
CN107729758B (zh) | 用于多租户云工作量的安全处理器 | |
US10372628B2 (en) | Cross-domain security in cryptographically partitioned cloud | |
CN106105146A (zh) | 在密码证明资源处保护客户端指定凭证 | |
CN107092495A (zh) | 平台固件铠装技术 | |
CN105389265B (zh) | 当加密参数改变时在垃圾数据上生成零内容的方法和装置 | |
CN101946252A (zh) | 信息处理装置及其控制方法 | |
CN105612715A (zh) | 具有可配置访问控制的安全处理单元 | |
US10452567B2 (en) | Non-volatile memory to store resettable data | |
US20200192825A1 (en) | Security for virtualized device | |
CN107526974A (zh) | 一种信息密码保护装置和方法 | |
CN107563226A (zh) | 一种存储器控制器、处理器模块及密钥更新方法 | |
CN114996725B (zh) | 一种保护开发程序的方法以及处理器 | |
JP2009064126A (ja) | Icカードシステム、その端末装置、プログラム | |
KR101620685B1 (ko) | 타임-아웃 데이터를 관리하는 방법 및 장치 |
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 |