CN110658986A - 用于验证跨多个存储器区的存储器完整性的技术 - Google Patents
用于验证跨多个存储器区的存储器完整性的技术 Download PDFInfo
- Publication number
- CN110658986A CN110658986A CN201910456801.1A CN201910456801A CN110658986A CN 110658986 A CN110658986 A CN 110658986A CN 201910456801 A CN201910456801 A CN 201910456801A CN 110658986 A CN110658986 A CN 110658986A
- Authority
- CN
- China
- Prior art keywords
- integrity
- data
- value
- read data
- allocated
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- 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/602—Providing cryptographic facilities or services
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
-
- 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/0653—Monitoring storage devices or 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/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/0658—Controller construction arrangements
-
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- 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
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/34—Encoding or coding, e.g. Huffman coding or error correction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Human Computer Interaction (AREA)
- Power Engineering (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Probability & Statistics with Applications (AREA)
- Storage Device Security (AREA)
Abstract
描述了用于验证在多个域之间所分配的物理存储器的区的完整性的技术。在实施例中,所述技术包括或使得:响应于来自第一域的写入命令来生成第一完整性值,响应于读取命令来生成第二完整性值;以及至少部分地通过比较第一完整性值与第二完整性值来验证被读取命令定为目标的读取数据的完整性。
Description
技术领域
本公开内容涉及用于验证跨多个存储器区的存储器完整性的技术。具体地,本公开内容涉及用于在被分配到一个或多个域、诸如一个或多个虚拟机的物理存储器区的上下文中验证存储器完整性的系统、设备、方法和计算机可读介质。
背景技术
信息处理系统中的虚拟化允许一个或多个操作系统(OS)的多个实例在单个信息处理系统(例如计算机、服务器等等)上运行,尽管每个OS被设计成完全地并且直接地控制系统及其资源。虚拟化通常利用软件、固件、或硬件、诸如虚拟机监控器(VMM;也已知为超级监督器)来被实现,所述虚拟机监控器被配置成向每个OS呈现虚拟机(VM),所述虚拟机具有OS能控制的虚拟资源(例如一个或多个虚拟处理器、虚拟主存储器(RAM)、虚拟存储装置等等)。VMM可以被配置成维持用于实现在虚拟机之间分配系统物理资源的策略的系统环境——即虚拟化环境。在虚拟机上执行的每个OS和任何其它软件可以被称为“访客”或“访客软件”,而“主机”或“主机软件”可以指代在虚拟化环境外部(即在任何虚拟机外部)执行的VMM或其它软件。
支持虚拟化的一些系统包括存储器控制器,所述存储器控制器被配置成将虚拟存储器地址(其相关联于被分配到虚拟机的虚拟存储器)转化成(主机系统的)物理存储器地址。存储器控制器还可以被配置成对被分配到受主机设备所支持的不同虚拟机的主机物理主存储器(例如随机存取存储器)的区进行隔离和保护。对物理存储器区的隔离和保护可以通过使用基于范围的控制、密码方法或其它手段来被维持。
存储器控制器可以使用基于范围的控制来关联主机系统的物理存储器的区与在主机上执行的访客域(例如虚拟机)。在这样的实例中,当读取或写入命令进入存储器控制器的时候,存储器控制器可以确定哪个域(虚拟机)产生了命令以及主机的物理存储器的哪些区被命令定为目标(或更具体地,物理存储器的哪个区包括映射到发布命令的域的虚拟机的虚拟地址的物理存储器地址)。如果域被授权从被请求定为目标的物理存储器区读取/向被请求定为目标的物理存储器区写入,则处理器可以使得存储器控制器执行命令,或者如果域未被授权访问该物理存储器区,则处理器可拒绝对命令的执行。
还可以通过使用密码方法、诸如多密钥总存储器加密(MKTME)来保护主机物理存储器的内容。在MKTME中,存储器控制器被配置成通过如下来保护在被分配到一个域(虚拟机)的物理存储器空间中所存储的数据免受另一域(虚拟机)的未经授权的访问:利用加密密钥来对待写入到物理存储器的数据进行加密,所述加密密钥特定于正请求写入的访客(即“按域的加密密钥”)。这样做可以阻碍通过第二域(虚拟机)对被分配到第一域(虚拟机)的第一物理存储器区内的数据的未经授权的读取,因为第一物理存储器区的内容利用第一域的加密密钥来被加密——第二域不能访问所述第一域的加密密钥。
虽然基于范围的控制和MKTME可以有效地隔离并且保护被分配到不同域的物理存储器区,但是它们不提供用于检查被存储到主机系统的物理存储器的数据的完整性的机制。因此,这样的方法可暴露于攻击,其中未经授权的域(攻击域)引起对被分配到另一域(受害者域)的存储器区的未经授权的写入,从而导致对被分配到受害者域的物理存储器的内容的未经授权的修改。受害者域还可能不知道其被分配的物理存储器的内容已经被未经授权的写入变更。
诸如INTEL®安全飞地(例如通过使用Intel®软件防护扩展(SGX)被实现)技术之类的技术利用存储器加密引擎(MEE),所述存储器加密引擎可以通过使用单个密钥来维持机密性、完整性和硬件重放保护。例如,在安全飞地实现方式中所使用的MEE可以在物理存储器的受保护的区之上构建元数据树。从存储器的受保护的区所读取的数据的完整性可以通过遍历元数据树来被验证。尽管对于验证被存储在飞地中的数据的完整性而言是有效的,但是每当访问飞地中所存储的数据的时候,遍历元数据树可引起对存储器的多个访问。因而,安全飞地可提供强数据保护和完整性验证能力。然而,对于一些应用,稍微降低的级别的安全保证(相对于安全飞地所提供的)可以被认为是可接受的——特别是在其中期望缩减的完整性验证等待时间的实例中。保护免受物理攻击的完整性验证技术也是令人感兴趣的。
鉴于前述内容,在提供用于确保跨隔离存储器域的存储器完整性的轻量机制并且可以保护免受物理攻击(例如对DRAM内容的外部修改)的技术方面有增长的兴趣。
附图说明
随着以下的具体实施方式进行,并且在参考附图时,所要求保护的主题的实施例的特征和优点将变得显而易见,其中同样的标号描绘同样的部分,并且其中:
图1是一框图,其图示了用于维持在主机设备的物理主存储器的所分配的区之间的隔离的系统的一个示例;
图2是一框图,其图示了与本公开内容一致的用于维持主机设备的物理主存储器的所分配的区的完整性的系统的一个示例。
图3是一框图,其图示了与本公开内容一致的完整性引擎的一个示例。
图4A是一框图,其图示了与本公开内容一致的数据写入流的一个示例。
图4B是与本公开内容一致的用于写入数据的方法的一个示例的示例操作的流程图。
图5A是一框图,其图示了与本公开内容一致的数据读取流的一个示例。
图5B是与本公开内容一致的用于验证被存储到主机设备的物理主存储器的一区的数据的完整性的方法的一个示例的示例操作的流程图。
具体实施方式
在本文中参考针对特定应用的说明性实施例来描述本公开内容的技术。为了说明并且易于理解,本文中所述的技术在虚拟化的系统的上下文中被讨论,在所述虚拟化的系统中,主机设备的物理主存储器(例如随机存取存储器)在主机设备所实现的虚拟化环境的上下文内所执行的若干域(例如虚拟机)之间被分配。这样的讨论仅仅用于示例,并且本文中所述的技术的全部或一部分可以被使用在其它上下文中。例如,本文中所述的技术可以被使用在如下任何存储器系统的上下文中:在所述存储器系统中,期望在隔离的存储器区之间的存储器完整性,诸如但不限于非虚拟化的系统。能够访问本文中所提供的教导的相关领域技术人员将认识到在本公开内容的范围内的附加的修改、应用和实施例、以及在其中本公开内容的实施例将会有实用的附加领域。
术语“主机”和“主机设备”在本文中可互换地被使用,用于指代宽范围的电子设备,所述电子设备可以被配置成包括存储器架构,在所述存储器架构中,在不同的域之间分配存储器(例如RAM)的区。为了说明,域在虚拟化系统的上下文中被描述,并且因此可以被理解为虚拟机。然而,如以上所指出的,本文中所述的技术可以被实现在如下任何上下文中:在所述上下文中,期望主机系统的物理存储器的内容的完整性的验证。合适的主机设备的非限制性示例包括相机、手机、计算机终端、台式计算机、分布式计算系统、电子阅读器、传真机、亭站(kiosk)、上网本计算机、笔记本计算机、因特网设备、支付终端、个人数字助理、媒体播放器和/或记录仪、服务器、机顶盒、智能电话、平板个人计算机、电视机、超移动个人计算机、有线电话、其组合等等。这样的设备可以是便携式的或静止的。无限制地,本文中所述的主机设备优选地是以台式计算机、服务器、分布式计算系统等等的形式。
术语“主存储器”在本文中被使用以指代通过加载/存储指令而可用于CPU的存储器(如与用于向例如主机设备(物理主存储器)的或域/虚拟机(虚拟主存储器)的存储装置读取/写入的输入/输出控制器和驱动器的使用形成对照)。可以使用的主存储器的示例包括(例如易失性或非易失性)随机存取存储器(RAM),诸如但不限于双数据速率(DDR)RAM(例如DDR2、DDR3、DDR4、DDR5、低功率DDR(LPDDR))三维交叉点存储器、INTEL® OPTANE®存储器、或任何其它当前或将来开发的存储器。无限制地,在实施例中,本文中所述的主存储器是以包括完整性值位(例如元数据位)和数据存储位的DDR或三维交叉点存储器的形式。相比之下,术语“盘”、“存储装置”和“存储设备”在本文中可互换地使用以指代可以用于提供非易失性数据存储的一个或多个非易失性存储器设备。可以在本文中使用的存储设备的非限制性示例包括磁性存储设备(例如磁性硬驱动器、磁光驱动器、热辅助的磁性记录设备、磁盘等等)、固态存储设备(例如采用非易失性固态“与非”(NAND)或“或非”(NOR)存储器的存储设备)、包括非易失性存储器的存储器棒和/或卡、其组合等等。
在适当时,短语“加密操作”在本文中被使用以一般地指代明文往密文的加密、密文往明文的解密、或其某种组合。术语“加密操作”应当因此被理解为包括数据的加密和解密二者,其中基于短语被使用在其中的上下文来给出适当的解释。
术语“模块”在本文中被使用以指代被配置成执行与本公开内容一致的一个或多个操作的软件、固件和/或电路。软件可以被具体化为软件包、代码、指令、指令集和/或数据,其被记录在非暂时性计算机可读存储介质上。固件可以被具体化为代码、指令或指令集和/或数据,其在存储器设备中被硬编码(例如非易失性)。“电路”,如本文中任何实施例中所使用的,可以例如单个地或以任何组合地包括硬连线的电路、可编程电路、诸如现场可编程门阵列(FPGA)、专用集成电路(ASIC)、包括一个或多个单独指令处理核的通用计算机处理器、状态机电路、存储由可编程电路所执行的指令的软件和/或固件。本文中所述的模块可以共同地或单独地被具体化为形成一个或多个主机设备的全部或一部分的电路(例如,被具体化为至少部分地被实现在硬件中的逻辑)。
现代计算系统通常被配置为主机设备,所述主机设备支持多个域,诸如但不限于一个或多个虚拟机。每个域可以被分配虚拟资源,所述虚拟资源映射或以其它方式对应于主机设备的物理资源的全部或一部分(例如通过虚拟机监控器VMM或超级监督器)。例如,每个域可以被分配主机设备的物理处理资源、主存储器资源(物理RAM)、物理存储、输入/输出设备能力等等的全部或一部分。主机资源向(多个)域的分配可以是根据由VMM/超级监督器所实现的一个或多个虚拟化策略。出于安全和其它理由,主机设备的物理主存储器的不同区可以被分配到不同的域,并且可以与彼此隔离或以其它方式彼此被保护。可以通过使用基于范围的控制来维持物理存储器区的隔离,并且物理存储器区的内容可以密码地、例如通过使用域特定的加密密钥(即对于每个域唯一并且仅仅通过它们所相关联于的域可访问的加密密钥)来被保护。
图1是用于在虚拟化的上下文中维持存储器隔离的系统的一个示例的框图。在该实例中,系统100是以主机设备的形式,所述主机设备包括共享的硬件102和虚拟机监控器(VMM)112。VMM 112可以被实现为主机软件(例如,其在共享的硬件102上执行),如将由本领域普通技术人员所理解的。在任何情况中,VMM 112(以及作为整体的系统100)被配置成支持虚拟化,使得多个域(例如虚拟机)可以在由VMM 112所建立或以其它方式支持的虚拟化环境内被执行。该概念在图1中被图示,图1将系统100描绘为托管第一域D1和第N域DN,尽管可以通过系统100托管任何合适数目的域。
共享的硬件102一般包括主机设备的物理资源。为了清楚并且易于理解,图1将共享的硬件102描绘为包括存储器控制器103、处理器110和主存储器(例如RAM)107,但是省略可以被包括在共享的硬件102中的系统100的各种其它物理资源。例如,共享的硬件102还可以包括其它资源、诸如存储资源(例如来自一个或多个非易失性存储设备)、通信资源(例如有线和/或无线联网资源)、视频处理资源(例如来自一个或多个专用视频处理组件、诸如图形卡)、其组合等等。共享的硬件102的简化表示被保持直到其它图,特别是图2。
系统100(或更具体地VMM 112)被配置成将虚拟资源分配到域D1、DN,其中那些虚拟资源对应于由共享的硬件102所提供的物理资源的全部或一部分。以该方式,共享的硬件102可以在D1和DN之间被分配。例如,VMM 112可以将虚拟存储器分配到D1和DN。处理器110可以被配置成将D1的虚拟存储器映射到主存储器107的第一区109,并且将DN的虚拟存储器映射到DN的主存储器109的第二区111。在系统100的操作期间,D1和DN中的一个或二者可以是活动的并且执行代码,例如在一个或多个虚拟处理器上。在其虚拟处理器执行代码时,D1和DN可以向其相应的虚拟主存储器发布读取和写入命令。存储器控制器103可以被配置成确定从哪个域发布读取/写入命令,并且通过对区109、111的对应物理存储器地址读取/写入数据来执行对应的动作。存储器控制器103还可以被配置成将存储器区109、111与彼此隔离(例如利用基于范围的控制)。
注意到,虽然图1和2描绘了作为共享的硬件的独立组件来使用存储器控制器(103、203),但是不要求这样的配置。的确,在实施例中,本文中所述的存储器控制器可以是独立的设备,或可以与主机设备的共享硬件的另一组件、诸如一个或多个处理器(例如处理器110)、专用存储器控制器(例如在母板上)、其组合等等集成。无限制地,在实施例中,本文中所述的存储器控制器与主机设备的一个或多个物理处理器集成。例如,在实施例中,本文中所述的存储器控制器与处理器110集成。在该方面,处理器110可以是任何合适的通用处理器或专用集成电路。无限制地,在实施例中,存储器控制器103与处理器110集成,并且处理器110是一个或多个单核或多核处理器,其由INTEL® 公司、APPLE® 公司、AMD®公司、SAMSUNG®公司、NVIDIA®公司、其组合等等生产。
尽管存储器控制器103可以实现基于范围的控制或其它技术来限制通过未经授权的域对区109、111的访问,但是这样的技术可受假想的未来的硬件攻击所危害。因而,存储器控制器103还可以被配置成保护存储器区109、111的内容免受未经授权的访问。例如,存储器控制器103可以密码地保护存储器区109、111的内容。在该方面,存储器控制器103可以包括密钥管理和加密引擎(KMEE)105,所述密钥管理和加密引擎(KMEE)105利用域特定的加密密钥来对区109、111的内容进行加密或解密。域特定的加密密钥是特定于它们所相关联于的域并且对于另一域不可访问的加密密钥。因而,KMEE 105可以利用特定于区109的第一加密密钥以及特定于区111的第二加密密钥。第一加密密钥可以仅仅对于D1可访问,而第二加密密钥可以仅仅对于DN可访问。在任何情况中,KMEE 105(或更一般地存储器控制器103)可以使用域特定的加密密钥来在将数据写入到主存储器107的区109、111之前对数据进行加密。KMEE 105(或更一般地存储器控制器103)还可以使用域特定的解密密钥(例如其可以与对应的域特定的加密密钥相同或得自所述对应的域特定的加密密钥),用于在数据从主存储器107的所分配的区被读取时对数据进行解密。在其中加密和解密密钥相同的实例中,KMEE 105可以被理解成实现对称的加密操作。
更具体地,当D1是活动的时,D1的虚拟处理器可以引起写入命令的发布,用于使得对被分配给D1的虚拟存储器进行写入。作为响应,存储器控制器103可以确定由D1发布了写入命令。存储器控制器103然后可以利用特定于D1的第一加密密钥来对作为请求的目标的数据(“写入数据”)进行加密,并且将结果得到的经加密的写入数据存储到主存储器107的区109。相比之下,当DN是活动的时,DN的虚拟处理器可以引起写入命令的发布,用于使得对被分配给DN的虚拟存储器进行写入。存储器控制器103可以确定由DN发布了写入命令。存储器控制器然后可以通过使用特定于DN的第二加密密钥来对与写入命令相关联的写入数据进行加密,并且将结果得到的经加密的写入数据存储到主存储器107的区109。
在读取上下文中,D1和DN可以引起读取命令的发布,所述读取命令以其相应的虚拟存储器的虚拟地址为目标。作为响应,存储器控制器103可以确定从哪个域发布了读取命令。存储器控制器103然后可以在适当时从所标识的物理地址、例如从区109、111读取被读取命令定为目标的数据。由于区109、111的内容通过域特定的加密密钥来被加密,所以通过存储器控制器103读取的数据将是以密文的形式。因此,存储器控制器103可以此外通过如下来服务读取命令:利用对应的解密密钥来对从区109、111读取的密文进行解密。
在从区109读取的密文的情况中,解密密钥可以得自第一加密密钥(即与区109相关联的域特定的加密密钥)。可替换地,在从区111读取的密文的情况中,解密密钥可以得自第二加密密钥(即与区111相关联的域特定的加密密钥)。由于域D1、DN仅仅能够访问其相应的加密密钥,所以区109的内容可以被保护免受来自DN的未经授权的读取命令(以区109为目标),并且区111的内容被保护免受来自D1的未经授权的读取命令(以区111为目标)。更具体地,虽然DN潜在地可以获得区109的内容,但是内容将是密文并且对于DN而言是无法了解的,因为它没有D1的加密密钥。同样地,虽然D1潜在地可以获得区111的内容,但是内容将是密文并且对于D1而言是无法了解的,因为它没有DN的加密密钥。
总而言之,系统100被配置成通过使用基于范围的控制来维持存储器域109、111的隔离,并且利用域特定的加密和解密密钥来密码地保护区109、111的内容免受未经授权的读取。然而,系统100不提供用于检查被存储到所分配的存储器区109、111的数据的完整性的机制。因此,这样的方法可暴露于攻击,其中未经授权的(攻击)域引起对被分配给另一(受害者)域的存储器区的未经授权的写入。
例如,在DN内执行的恶意实体可以引起以被分配给D1的物理存储器、即区109为目标的未经授权的写入命令的发布。假定由系统100实现来将区109与主存储器107的其它区隔离的(多个)机制(例如基于范围的控制)尚未损害,可以拒绝以区109为目标的未经授权的写入命令的执行。然而,如果这样的机制已经损害,由DN发布的未经授权的写入命令可以使得存储器控制器103向区109写入未经授权的数据——潜在地损害被存储在其中的数据的完整性。
各种攻击已经被开发以规避利用基于范围的控制对存储器区的隔离。一种这样的攻击是所谓的“行锤击”攻击。通过使用行锤击攻击,在DN内执行的恶意实体可以使得存储器控制器103重复地并且快速地击中主存储器107的行缓冲器,从而使得在区109内发生随机位翻转错误。这样的位翻转可以潜在地为以下创造机会:在DN内执行的恶意实体使得未经授权的数据被写入到区109。该未经授权的数据不可被D1检测到,因为系统100不提供用于验证被写入到主存储器107(或更具体地被写入到其被分配的区109、111)的数据的完整性的机制。
记着前述内容,本公开内容的各方面涉及用于维持在多个域之间被分配的物理存储器的区的完整性的技术。本文中所述的技术包括使得响应于由第一域所发布的写入命令而生成第一完整性值的设备、系统、方法和计算机可读介质,其中所述写入命令以被分配给第一域的主机设备的 (例如RAM)的物理主存储器的区(所分配的存储器区)为目标(即被映射到该区)。在实施例中,第一完整性值是至少部分地根据以下各项(例如通过存储器控制器)所生成的数据结构:响应于写入命令将被写入的数据的明文(在下文中“明文写入数据”)上的第一完整性操作的(可选地经截断的)输出,以及通过利用加密密钥来对写入数据进行加密(下文中“经加密的写入数据”)所产生的密文上的第二完整性操作的(可选地经截断的)输出。响应于写入命令,第一完整性值可以连同经加密的写入数据一起被写入到所分配的存储器区。例如,完整性值可以被写入到所分配的存储器区,作为与经加密的写入数据相关联的元数据。在实施例中,第一完整性值被写入到所分配的存储器区内的元数据位,并且经加密的写入数据被写入到所分配的存储器区内的数据存储位。
响应于由第一域所发布的读取命令,将从所分配的存储器区读取的数据(例如读取数据)的完整性可以通过如下来被验证:根据将被读取的数据的明文和密文(即明文读取数据和经加密的读取数据)确定第二完整性值,并且将所述第二完整性值与第一完整性值进行比较。例如,存储器控制器可以从第一域接收读取命令,其中所述读取命令以被分配给第一域的主机设备的物理主存储器的第一区内的物理存储器地址为目标(例如映射到所述物理存储器地址)。响应于读取命令,所述存储器控制器可以从被读取命令定为目标的物理存储器地址读取经加密的读取数据,以及与经加密的读取数据相关联的第一完整性值。经加密的读取数据可以被存储在所分配的存储器区的数据存储位中,并且第一完整性值可以被存储在与数据存储位相关联的元数据位中。
存储器控制器可以对经加密的读取数据进行解密以获得明文读取数据。存储器控制器还可以至少部分地基于经加密的读取数据和明文读取数据来生成第二完整性值。在实施例中,第二完整性值是至少部分地根据以下各项所生成的数据结构:在明文读取数据上执行的第一完整性操作的(可选地经截断的)输出,以及在经加密的读取数据上执行的第二完整性操作的(可选地经截断的)输出。被读取命令定为目标的数据的完整性然后可以通过比较第二完整性值与第一完整性值来被验证。如果第一和第二完整性值相同(或不同小于阈值量——尽管这样将会引起降低的安全级别),则完整性验证可以通过。然而,如果第一和第二完整性值不同(或不同多于阈值量——再次,以降低的安全级别),则完整性验证可失败。在后一实例中,可以执行操作来减轻主机物理存储器的所分配的区的经变更的内容对第一域的操作和/或对主机系统的影响。
现在参考图2,图2描绘了与本公开内容一致的用于验证被存储到物理主存储器的所分配的区的数据的完整性的系统200的一个示例。如同系统100,在图2中、在虚拟化的上下文中描绘系统200。因而,系统200可以被理解为主机设备或系统,其包括共享的硬件202和虚拟机监控器(VMM)212。VMM 212可以被实现在硬件、固件或软件中,并且可以被配置成建立根据一个或多个虚拟化策略的、用于托管一个或多个域(虚拟机)的虚拟化环境。例如,VMM 212可以在一个或多个虚拟域、例如图2中所示的域D1、DN之间分配共享的硬件中的全部或一部分。
共享的硬件202可以包括许多与图1的共享的硬件102相同的组件。例如,共享的硬件202可以包括共享的物理处理资源(例如处理器110)、共享的物理存储装置、共享的通信资源、其组合等等。共享的硬件202还包括存储器控制器203。如同存储器控制器103,存储器控制器203可以被配置成接收读取和写入命令,所述读取和写入命令以被分配给D1、DN的虚拟存储器的虚拟存储器地址为目标,并且从共享的主存储器207的对应物理地址读取数据/向共享的主存储器207的对应物理地址写入数据。还如同存储器控制器103,存储器控制器203可以被配置成将区209和211与彼此隔离(例如利用基于范围的访问控制),并且密码地保护区209、211的内容(例如通过使用受KMEE 105所管理的域特定的加密/解密密钥)。因而,如图2中所示,存储器控制器203可以被配置成将第一和第二区209、211与彼此隔离,将与D1相关联的数据的密文(D1密文)存储在区209中,并且将与DN相关联的密文(DN密文)存储到区211。
如同存储器控制器103,存储器控制器203可以是独立的组件,或可以与共享的硬件202的另一组件集成。例如,存储器控制器203可以与一个或多个物理处理器集成,所述物理处理器诸如处理器110、母板、插件式卡、或共享的硬件202的其它组件,如以上结合图1的存储器控制器103所描述的那样。无限制地,在实施例中,存储器控制器203与处理器110集成,其中处理器110是一个或多个物理的单核或多核处理器。
除了将主存储器207的所分配的存储器区与彼此隔离并且经由加密来保护其内容之外,存储器控制器203还被配置成使得能够验证被存储到主存储器207的所分配的区的数据的完整性。在该方面,存储器控制器203可以包括完整性引擎205。通常,完整性引擎205可以是以被配置成执行与本公开内容一致的完整性验证操作的硬件(电路)、固件和/或软件的形式。在非限制性的实施例中,完整性引擎205是以被配置成执行与本公开内容一致的完整性验证操作的电路的形式。可替换地或附加地,完整性引擎205可以包括如下处理器或以如下处理器的形式:所述处理器被配置成执行在计算机可读存储介质(例如驱动器、由存储器控制器或专用完整性处理器所执行的嵌入式固件等等)中所存储的指令,以便使得存储器控制器203执行与本公开内容一致的完整性验证操作。还应当理解到,虽然完整性引擎205被示出为在存储器控制器203内,但是不要求这样的配置。例如,完整性引擎205可以是独立的组件,或者它可以被并入到其它共享的硬件、诸如处理器110中。
完整性验证操作一般包括将响应于由第一域所发布的读取命令的第二完整性值与响应于由第一域所发布的写入命令而生成的第一完整性值进行比较。在实施例中,写入命令以主机设备的主存储器的第一分配的区的第一物理地址为目标,并且读取命令以被存储到那些第一物理地址的数据为目标。响应于写入命令,存储器控制器203可以将第一完整性值和经加密的写入数据(即待写入的数据的密文)存储到主存储器的第一分配的区的第一物理地址。存储器控制器203可以此外使得第一完整性值作为元数据被存储在与经加密的写入数据相关联的第一分配的区内,例如,如图2中所示。
存储器控制器203可以用任何合适的方式生成第一完整性值。在实施例中,存储器控制器被配置成作为响应、至少部分地通过如下来生成第一完整性值:在被写入命令定为目标的数据的明文(即明文写入数据)上执行第一完整性操作,以产生第一输出;在写入数据的密文(即经加密的写入数据)上执行第二完整性操作,以产生第二输出;以及组合至少所述第一和第二输出以生成第一完整性值。存储器控制器203然后可以使得经加密的写入数据和第一完整性值被写入到主存储器207的第一分配的区。例如并且如以上所指出的,存储器控制器可以使得经加密的写入数据被写入到主存储器207的所分配的区(例如区209)内的数据存储位,并且使得第一完整性值被存储在与经加密的写入数据被写入到的数据存储位相关联的元数据位中。
在实施例中并且如将结合图4A和4B进一步描述的,第一完整性操作可以包括在写入数据的明文上执行循环冗余校验(CRC)以生成第一CRC值作为第一输出。在这样的实施例中,第二完整性操作可以包括至少部分地基于写入数据的密文来计算第一消息认证码(MAC),其中第一MAC被用作第二输出。第一MAC可以至少部分地基于以下各项来被生成:经加密的写入数据、被写入命令定为目标的第一物理地址中的一个或多个、以及完整性密钥。用于生成MAC的完整性密钥可以是域特定的完整性密钥,或者它可以在由主机系统所托管的所有域之间共享。无限制地,在实施例中,完整性密钥在由主机系统所托管的所有域之间共享。如可以领会到的,使用共享的完整性密钥避免对于管理并且保护域特定的完整性密钥的需要。
在实施例中,完整性密钥在系统中不是固定的,并且可以用许多不同的方式被变更或改变。例如,完整性密钥可以响应于一个或多个系统事件、诸如系统引导、系统停止运转、从休眠的系统唤醒、其组合等等而被改变或变化。
用于计算消息认证码的若干方法是已知的,并且任何合适的方法可以用于生成第一MAC。在实施例中,消息认证码是基于散列的消息认证码(HMAC;也已知为密钥散列消息认证码)。HMAC是一种类型的MAC,其通过使用密码散列函数以及秘密密码密钥来被确定。任何合适的密码散列函数可以用于确定HMAC,诸如安全散列算法(SHA)的一个或多个变体,诸如SHA-2、SHA-3(例如SHA-256等等)等等。无限制地,在实施例中,存储器控制器203被配置成通过使用SHA-256 HMAC算法和完整性密钥来生成第一MAC。例如,存储器控制器203可以如在以下的方程(I)中所示那样计算第一MAC:
其中MAC_FN是MAC函数(例如SHA256-HMAC),Ikey是完整性密钥,密文是经加密的写入数据,物理地址是被写入命令定为目标的(多个)物理存储器地址,并且元数据是也可以被包括的任何其它数据。当然,还可以使用用于生成第一MAC的其它方法。
如以上所指出的,存储器控制器203可以被配置成通过组合(第一完整性操作的)第一输出与(第二完整性操作的)第二输出来生成第一完整性值。在其中第一输出是第一CRC值并且第二输出是第一MAC的实例中,第一完整性值可以由存储器控制器203通过以任何合适的方式组合第一CRC值和第一MAC来被生成。无限制地,在实施例中,存储器控制器203被配置成通过使用第一CRC值和第一MAC来进行“异或”(XOR)操作来生成第一完整性值。存储器控制器203还可以截断第一CRC值和/或第一MAC,然后进行其组合,例如用于限制对于存储第一完整性值所需要的存储器的量。
如以上所指出的,完整性验证操作包括比较响应于由第一域所发布的读取命令的第二完整性值与第一完整性值。通常,第二完整性值以与第一完整性值大体上相同的方式被生成,但是通过使用被读取命令定为目标的读取数据的明文和密文、而不是被写入命令定为目标的写入数据的明文和密文来被确定。更具体地,响应于由第一域所发布的读取命令,存储器控制器203从主存储器的第一区读取被读取命令定为目标的数据(例如经加密的读取数据),以及与经加密的读取数据相关联的第一完整性值。存储器控制器203然后对经加密的读取数据进行解密以产生明文读取数据。存储器控制器然后可以至少部分地通过如下来生成第二完整性值:在明文读取数据上执行第三完整性操作以产生第三输出;在经加密的读取数据上执行第四完整性操作来产生第四输出;以及组合所述第三和第四输出以生成第二完整性值。如同第一和第二输出,第三和第四输出在其组合之前可以被截断,以限制对于存储第二完整性值所需要的存储器的量。
除了所作用于的数据之外,第三完整性操作与在第一完整性值的产生中所使用的第一完整性操作相同;第四完整性操作与在第一完整性值的产生中所使用的第二完整性操作相同;并且第三和第四输出以与在第一完整性值的产生中第一和第二输出相同的方式被组合。换言之,在第一和第三完整性操作以及第二和第四完整性操作中执行相同的操作,但是在(潜在地)不同的数据上执行。更具体地,在第一完整性值的生成中所使用的第一和第二完整性操作在明文和经加密的写入数据(即,是写入命令的对象并且将被写入到主存储器的第一分配的区的数据)上操作,而第三和第四操作在明文和经加密的读取数据(即先前被存储到主存储器的第一分配的区的数据)上操作。因而,在实施例中,第三完整性操作包括根据明文写入数据来生成CRC值;以及根据密文写入数据来生成MAC,例如以上文关于第一完整性值的产生所描述的相同方式。
如以上所指出的,存储器控制器可以通过比较第一完整性值与第二完整性值来验证被存储到主存储器的所分配的区的数据的完整性。假定被读取命令定为目标的数据(经加密的读取数据)在它响应于写入命令而被写入到第一分配的区之后尚未被篡改(变更),第一完整性值和第二完整性值将是相同的或可不同小于阈值量(例如在较低安全性的实施例中)。在该实例中,存储器控制器203可以确定完整性验证已经通过(即,读取数据的完整性被验证)。然而,如果被读取命令定为目标的经加密的读取数据已经被变更(例如通过向第一分配的区的未经授权的写入或另一攻击),则第一和第二完整性值将不同或可不同大于阈值量(再次,在降低安全性的实施例中)。在该情况中,存储器控制器203可以确定完整性验证已经失败(即,读取数据的完整性已经损害)。
返回到图2和3,如以上所指出的,存储器控制器203可以包括完整性引擎205,或者完整性引擎可以是独立的组件或被集成到另一组件、诸如处理器110中。无论如何,完整性引擎205可以被实现在硬件、固件或软件中,并且可以被配置成执行或使得执行与本公开内容一致的完整性操作。在实施例中并且如图3中所示,完整性引擎205可以包括循环冗余校验模块(CRCM)205、MAC生成模块(MGM)305、可选的截断模块307、完整性值生成模块(IVGM309)以及完整性验证模块(IVM)311。在实施例中,这样的模块可以单独地或与彼此结合地操作,以执行或使得执行与本公开内容一致的完整性操作。
为了示例,可以由图3的模块执行的特定操作现在将结合图2中所示的虚拟化系统200来被描述。作为基线,假定系统200托管多个域(D1、DN),其中的每一个被分配虚拟存储器,所述虚拟存储器映射到物理主存储器207的对应的区。更具体地,在这些实施例中的存储器控制器203被配置成服务以D1、DN的虚拟地址为目标的读取/写入命令,所述D1、DN的虚拟地址被映射到主存储器207的第一和第二区209、211的物理地址。此外,在该实施例中的存储器控制器203被配置成通过使用基于范围的控制来隔离区209、211,并且通过使用域特定的加密密钥来密码地保护区209、211的内容。为了该示例,假定D1是活动的域,其可经受通过DN的攻击。因而,D1可以被理解为是“受害者域”,并且DN可以被理解为是“攻击域”。
当它是活动的时候,D1可以发布写入命令,所述写入命令以其虚拟存储器内的虚拟地址为目标。作为响应,存储器控制器203可以确定写入命令源自D1。如以上所讨论的,存储器控制器203(或更具体地,KMEE 105)可以通过使用特定于D1的域特定的加密密钥来对被写入命令定为目标的数据(即写入数据)进行加密,在这之后,存储器控制器203可以使得结果得到的经加密的写入数据被写入到区209内的物理地址。
在经加密的写入数据的写入之前、之后、或与之同时地,完整性引擎205可以生成第一完整性值。通常,完整性引擎205被配置成以上述相同方式生成第一完整性值。例如,CRCM 301可以被配置成执行或使得执行在明文写入数据上的第一完整性操作。第一完整性操作可以是或包括在明文写入数据上执行CRC操作以产生CRC值。在相同或不同的时间,KMEE 105可以对明文写入数据进行加密以产生经加密的写入数据。
同时地或在不同的时间,MGM 305可以执行或使得执行第二完整性操作以产生第二输出。第二完整性操作可以与先前所述的那些相同。例如,在实施例中,MGM 305被配置成执行或引发MAC的生成,其至少部分地基于经加密的写入数据和完整性密钥(Ikey)。
CRC值和MAC值然后可以被用作第一和第二输出以用于生成第一完整性值,如先前所解释的。例如,IVGM 309可以被配置成以任何合适的方式组合或使得组合CRC值和MAC值以产生第一完整性值。在实施例中,IVGM 309被配置成通过使用CRC值和MAC值来执行“异或”(XOR)操作以产生第一完整性值。存储器控制器203然后可以使得第一完整性值被存储在与经加密的写入数据相关联的第一区209中(例如作为元数据)。该概念在图2中被示出,图2将主存储器的第一区209描绘为包括D1密文和D1元数据,其中D1密文是经加密的写入数据,并且D1元数据是与经加密的写入数据相关联的第一完整性值。由于该概念扩展到其它域(例如DN),所以图2还将区211描绘为包括DN密文和DN元数据,其中DN密文是响应于由DN所发布的写入命令而被写入的经加密的写入数据,并且DN元数据是以上述相同方式被生成并且写入的第一完整性值,并且相关联于DN密文。
在实施例中,主存储器207包括多个位,其中所述多个位可以被分配(例如通过存储器控制器203或处理器110)到元数据位和数据存储位中,并且其中元数据位被映射到或以其它方式相关联于对应的数据存储位。在这样的实例中,经加密的写入数据可以被写入到主存储器207的数据存储位,并且第一完整性值可以被写入到与经加密的写入数据被写入到的数据存储位相关联的元数据位。响应于读取操作,存储器控制器203可以使得被读取命令定为目标的经加密的读取数据从数据存储位中被读取。同时地或在另一时间,存储器控制器203还可以使得第一完整性值从与经加密的读取数据被存储在其中的数据存储位相关联的元数据位中被读取。
再次参考图2和图3,完整性引擎205可以被配置成执行完整性操作,用于验证被读取命令定为目标的经加密的读取数据的完整性。例如,KMEE 105可以通过使用从与D1相关联的域特定的加密密钥中所得到的域特定的解密密钥来对经加密的读取数据进行解密,从而产生明文读取数据。CRCM 301然后可以在明文读取数据上执行第三完整性操作以生成第三输出。在实施例中,第三完整性操作包括在明文读取数据上执行CRC操作,以生成CRC值作为第三输出。值得注意地,依照第三完整性操作所执行的CRC操作与由CRCM 301依照以上所指出的第一完整性操作而执行的CRC操作相同。在相同的时间或另一时间,MGM 305可以被配置成通过使用经加密的读取数据来执行第四完整性操作。在实施例中,第四完整性操作包括至少部分地基于经加密的读取数据和完整性密钥(Ikey)来生成MAC。值得注意地,依照第四完整性操作所执行的操作与依照以上所指出的第二完整性操作的执行而施行的那些相同。可选的截断模块307可以截断第三和第四输出(即CRC值和MAC)以节省存储器(例如以与第一和第二输出相同的方式),或第三和第四输出可以不被截断(例如,如果第一和第二输出不被截断的话)。
IVGM 309然后可以使用(可选地经截断的)CRC值和(可选地经截断的)MAC来生成或使得生成第二完整性值。在实施例中,IVGM 309可以通过使用CRC值和MAC值来执行“异或”(XOR)操作以生成第二完整性值。总而言之,被执行以生成第二完整性值的操作可以与被执行以生成第一完整性值的操作大体上相同,但是可潜在地在不同的起始数据上操作。
IVM 311一般被配置成执行或使得执行在经加密的读取数据上的完整性验证操作。在实施例中,IVM 311可以通过比较第一完整性值和第二完整性值来验证经加密的读取数据的完整性。如以上所指出的,如果第一和第二完整性值相同或不同小于阈值量,则IVM311可以确定经加密的读取数据的完整性已经被维持(即通过)。然而,如果第一和第二完整性值不同或不同多于阈值量,则IVM 311可以确定密文读取数据的完整性已经损害,例如被DN(作为攻击域)所尝试的未经授权的写入或被另一类型的攻击损害。
本公开内容的另一方面涉及用于使得能够验证被存储到被分配给域的主存储器的一区的数据的完整性的方法。在该方面,参考图4A-5B。图4A是一框图,其图示了与本公开内容一致的数据写入流的一个示例,依照所述数据写入流而生成第一完整性值。图4B是与本公开内容一致的用于写入数据的方法400的一个示例的示例操作的流程图。
如图4B中所示,方法400开始于框401处。所述方法然后可以与框403和407并行地继续进行。依照框403,CRC值可以基于作为由第一域(D1)所发布的写入命令的目标的数据的明文(即明文写入数据)来被计算。依照框407,利用域特定的加密密钥来对明文写入数据进行加密。这些操作在图4A中被图示,图4A将D1明文(即明文写入数据)图示为对于CRC值计算以及对于加密框的输入,其中D1加密密钥是与D1相关联的域特定的加密密钥。可以通过存储器控制器(例如存储器控制器203)和/或其一个或多个模块(例如图3的CRCM 301)来执行CRC值的计算。
在依照框403对CRC的计算之后,方法可以继续进行到可选框405,依照所述可选框405,可以可选地截断CRC值。该操作在图4A中通过从计算CRC框延伸到可选截断框的输出箭头来被图示。与前述描述一致,可以通过存储器控制器(例如存储器控制器203)或其模块(例如图3中的可选截断模块307)来执行对CRC值的截断。
依照框407来对明文写入数据进行加密产生经加密的写入数据。所述方法然后可以从框407前进到框409,依照所述框409,可以至少部分地基于经加密的写入数据来生成MAC。例如并且如图4A中所示,可以基于以下各项来生成MAC:经加密的写入数据、被写入命令定为目标的存储器区的物理地址、以及可以是域特定的或者在其上执行方法的系统所托管的域之间共享的完整性密钥(Ikey)。如以上所讨论的,可以通过任何合适的方法来产生MAC,诸如通过使用Ikey在经加密的写入数据上执行与SHA-256 HMAC算法一致的操作。可以例如通过如先前结合图3所描述的MGM 305来执行这样的操作。
所述方法然后可以继续进行到可选框411,依照框411,可以可选地截断MAC。该操作在图4A中通过从计算MAC框延伸到可选截断框的输出箭头来被图示。与前述描述一致,可以通过存储器控制器(例如存储器控制器203)或其模块(例如图3中的可选截断模块307)来执行对MAC的截断。
在生成了(可选地被截断的)CRC值以及可选地被截断的MAC之后,所述方法可以继续进行到框413,依照所述框413,可以生成第一完整性值。例如并且如上所述,可以通过以任何合适的方式组合CRC值与MAC来生成第一完整性值。在实施例中,通过对CRC值与MAC求异或(XOR)来生成第一完整性值,如先前所解释的。该概念在图4A中通过从可选截断框到生成IV1(第一完整性值)框的输出箭头来被图示。
所述方法然后可以继续进行到框415,依照框415,第一完整性值和经加密的写入数据可以被写入到主机设备的主存储器的所分配的区。如以上所讨论的,存储器控制器可以使得经加密的写入数据被写入到所分配的存储器区内的数据存储块,并且使得第一完整性值被写入到与那些数据存储块相关联的元数据块。所述方法然后可以继续进行到判定框417,依照所述判定框417,可以关于方法是否继续而做出判定。如果是这样,则方法可以循环回到框401并且重复。但是如果不是这样,则方法可以继续进行到框419并且结束。
图5A是一框图,其图示了与本公开内容一致的数据读取流的一个示例,并且图5B是与本公开内容一致的用于验证被写入到存储器的所分配的区的数据的完整性的方法500的一个示例的示例操作的流程图。如图5B中所示,方法500开始于框501处。所述方法然后可以与框503和507并行地继续进行。
依照框503,可以至少部分地基于作为由第一域(例如D1)所发布的读取域的目标的经加密的读取数据和完整性密钥(Ikey)来确定第二MAC。可以用与依照图4B的框409所生成的第一MAC相同的方式生成第二MAC。在生成了第二MAC之后,方法可以继续进行到可选框505,依照所述可选框505,可以可选地截断第二MAC。这些操作在图5A中被示出,图5A描绘了经加密的读取数据(密文)、被读取命令定为目标的物理地址、以及完整性密钥(Ikey)作为对MAC框的输入,其中MAC框的输出箭头通向可选的截断框。
依照框507,可以通过存储器控制器或其一个或多个模块来描述经加密的读取数据,如先前所描述的那样。例如,可以利用得自与D1相关联的域特定的加密密钥的域特定的解密密钥来对经加密的读取数据进行解密。这些操作在图5A中被图示,图5A示出了域特定的加密密钥(D1加密密钥)和密文(经加密的读取数据),作为对解密框的输入。这样的操作的结果是明文读取数据。
所述方法然后可以继续进行到框509,依照框509,基于读取数据明文而生成第二CRC值。可以通过存储器控制器(例如存储器控制器203)和/或其一个或多个模块(例如图3的CRCM 301)来执行第二CRC值的计算。在依照框509对第二CRC值的计算之后,方法可以继续进行到可选框511,依照所述可选框511,可以可选地截断第二CRC。该操作在图5A中通过从计算CRC框延伸到可选截断框的输出箭头来被图示。与前述描述一致,可以通过存储器控制器(例如存储器控制器203)或其模块(例如图3中的可选截断模块307)来执行对第二CRC值的截断。
在生成了(可选地被截断的)第二CRC值以及可选地被截断的MAC之后,所述方法可以继续进行到框513,依照所述框513,可以生成第二完整性值。例如并且如上所述,可以用与第一完整性值相同的方式来生成第二完整性值。例如,可以通过对第二CRC值与第二MAC求异或(XOR)来生成第二完整性值,如先前所解释的。该概念在图5A中通过从可选截断框到生成IV2(第二完整性值)框的输出箭头来被图示。
所述方法然后可以继续进行到框515,依照框515,可以执行完整性校验。如先前所解释的,可以通过比较第二完整性值与第一完整性值来执行完整性校验。在这样的比较之后,所述方法可以继续进行到判定框517,依照所述判定框517,可以关于第一和第二完整性值是否匹配而做出判定。如果第一和第二完整性值相同或不同小于阈值量,则框517的结果为“是”,并且所述方法可以继续进行到框519,依照框519,完整性校验可以被报告为成功(即,经加密的读取数据的完整性被确认)。如果第一和第二完整性值不同或不同大于阈值量,则框517的结果为“否”,并且所述方法可以继续进行到框521,依照框521,完整性校验可以被报告为失败(即,经加密的读取数据的完整性已损害)。
在任一情况中,所述方法可以从框519或521继续进行到框523,依照框523,可以关于方法是否继续而做出判定。如果是这样,则方法可以循环回到框501。但是如果不是这样,则方法可以继续进行到框525并且结束。
本公开内容的另一方面涉及包含计算机可读指令的计算机可读存储介质,所述计算机可读指令当被处理器执行的时候使得处理器(或包含处理器的设备)执行与本公开内容一致的完整性操作。当被使用的时候,计算机可读存储介质可以是以制品的形式。在一些示例中,计算机可读存储介质可以是非暂时性计算机可读介质或机器可读存储介质,诸如但不限于光学、磁性或半导体存储介质。在任何情况中,存储介质可以存储各种类型的计算机可执行指令,诸如用于图4B和5B中一个或多个的方法的操作的指令。可以被使用的合适的计算机可读存储介质的非限制性示例包括能够存储电子数据的任何有形介质,包括易失性存储器或非易失性存储器、可移除或不可移除的存储器、可擦除或不可擦除的存储器、可写或可重写的存储器等等。计算机可执行指令的示例可以包括任何合适类型的代码,诸如源代码、经编译的代码、经解译的代码、可执行的代码、静态代码、动态代码、面向对象的代码、可视代码等等。
示例
以下示例关于另外的实施例。本公开内容的以下示例可以包括诸如以下各项的题材:系统、设备、方法、存储指令的计算机可读存储介质,所述指令当被执行的时候使得机器基于所述方法来执行动作,和/或用于基于所述方法来执行动作的装置,如以下所提供的。
示例1:根据本示例,提供有一种用于验证被存储到主机设备的主存储器的数据的完整性的方法,包括利用主机设备的存储器控制器来:响应于来自第一域的写入命令来生成第一完整性值,所述写入命令以主存储器的第一分配的区的第一物理地址为目标;响应于来自第一域的读取命令来生成第二完整性值,所述读取命令以被存储到第一物理地址的读取数据为目标;以及至少部分地通过比较第一完整性值与第二完整性值来验证读取数据的完整性;其中:生成第一完整性值包括:在被写入命令定为目标的写入数据的明文上执行第一完整性操作,以产生第一输出;在响应于写入命令将被写入的写入数据的密文上执行第二完整性操作,以产生第二输出;组合所述第一和第二输出以生成第一完整性值;并且所述方法此外包括利用存储器控制器:使得第一完整性值被写入到主存储器的第一分配的区。
示例2:本示例包括示例1的特征中的任一个或全部,其中:第一完整性操作包括根据写入数据的明文来执行循环冗余校验(CRC)以生成第一CRC值;第二完整性操作包括根据写入数据的密文来生成第一消息认证码(MAC);并且第一输出是第一CRC值,并且第二输出是第一MAC。
示例3:本示例包括示例2的特征中的任一个或全部,其中至少部分地基于以下各项来生成第一MAC:写入数据的密文、第一物理地址中的一个或多个、以及完整性密钥。
示例4:本示例包括示例1到3中任一项的特征中的任一个或全部,其中生成第二完整性值包括:从第一物理地址中读取被读取命令定为目标的读取数据的密文;对读取数据的密文进行解密以获得明文读取数据;在明文读取数据上执行第三完整性操作以获得第三输出;以及在密文读取数据上执行第四完整性操作以获得第四输出;以及组合所述第三和第四输出以生成第二完整性值。
示例5:本示例包括示例4的特征中的任一个或全部,其中:第三完整性操作包括在明文读取数据上执行循环冗余校验(CRC),以生成第二CRC值;第四完整性操作包括根据密文读取数据来生成第二消息认证码(MAC);以及第三输出是第二CRC值,并且第四输出是第二MAC。
示例6:本示例包括示例5的特征中的任一个或全部,其中至少部分地基于以下各项来生成第二MAC:密文读取数据、第一物理地址中的一个或多个、以及完整性密钥。
示例7:本示例包括示例1至6中任一项的特征中的任一个或全部,其中所述方法此外包括利用存储器控制器来:从主存储器的第一分配的区同时读取第一完整性值和密文读取数据。
示例8:本示例包括示例1至7中任一项的特征中的任一个或全部,其中:当第一完整性值和第二完整性值相同的时候验证读取数据的完整性成功;并且当第一完整性值和第二完整性值不同的时候验证读取数据的完整性失败。
示例9:本示例包括示例8的特征中的任一个或全部,其中:验证读取数据的完整性仅仅基于第一完整性值与第二完整性值的比较。
示例10:本示例包括示例1至9中任一项的特征中的任一个或全部,其中所述方法此外包括利用存储器控制器来:隔离主存储器的第一分配的区与主存储器的第二分配的区;其中第一分配的区与主机设备的第一域相关联,并且第二分配的区与主机设备的第二域相关联。
示例11:本示例包括示例10的特征中的任一个或全部,其中所述存储器控制器用于通过使用基于范围的控制来隔离第一分配的区与第二分配的区。
示例12:本示例包括示例10或11的特征中的任一个或全部,其中所述方法此外包括利用存储器控制器来:利用第一域特定的加密密钥来对将被写入到主存储器的第一分配的区的数据进行加密,以及利用第二域特定的加密密钥来对将被写入到主存储器的第二分配的区的数据进行加密。
示例13:本示例包括示例1的特征中的任一个或全部,其中所述方法此外包括利用存储器控制器来:使得写入数据的密文被写入到主存储器的第一分配的区内的第一数据存储位;以及使得第一完整性值被写入到主存储器的第一分配的区内的第一元数据位;其中所述第一元数据位与第一数据存储位相关联。
示例14:根据本示例,提供有一种包括指令的非暂时性计算机可读存储介质,所述指令当被主机系统的处理器执行的时候使得执行以下操作,包括利用主机设备的存储器控制器来:响应于来自第一域的写入命令来生成第一完整性值,所述写入命令以主存储器的第一分配的区的第一物理地址为目标;响应于来自第一域的读取命令来生成第二完整性值,所述读取命令以被存储到第一物理地址的读取数据为目标;以及至少部分地通过比较第一完整性值与第二完整性值来验证读取数据的完整性;其中:生成第一完整性值包括:在被写入命令定为目标的写入数据的明文上执行第一完整性操作,以产生第一输出;在响应于写入命令将被写入的写入数据的密文上执行第二完整性操作,以产生第二输出;组合所述第一和第二输出以生成第一完整性值;并且所述方法此外包括利用存储器控制器:使得第一完整性值被写入到主存储器的第一分配的区。
示例15:本示例包括示例14的特征中的任一个或全部,其中:第一完整性操作包括根据写入数据的明文来执行循环冗余校验(CRC)以生成第一CRC值;第二完整性操作包括根据写入数据的密文来生成第一消息认证码(MAC);第一输出是第一CRC值,并且第二输出是第一MAC。
示例16:本示例包括示例15的特征中的任一个或全部,其中至少部分地基于以下各项来生成第一MAC:写入数据的密文、第一物理地址中的一个或多个、以及完整性密钥。
示例17:本示例包括示例14到16中任一项的特征中的任一个或全部,其中生成第二完整性值包括:从第一物理地址中读取被读取命令定为目标的读取数据的密文;对读取数据的密文进行解密以获得明文读取数据;在明文读取数据上执行第三完整性操作以获得第三输出;以及在密文读取数据上执行第四完整性操作以获得第四输出;以及组合所述第三和第四输出以生成第二完整性值。
示例18:本示例包括示例17的特征中的任一个或全部,其中:第三完整性操作包括在明文读取数据上执行循环冗余校验(CRC),以生成第二CRC值;第四完整性操作包括根据密文读取数据来生成第二消息认证码(MAC);以及第三输出是第二CRC值,并且第四输出是第二MAC。
示例19:本示例包括示例18的特征中的任一个或全部,其中至少部分地基于以下各项来生成第二MAC:密文读取数据、第一物理地址中的一个或多个、以及完整性密钥。
示例20:本示例包括示例14至19之一的特征中的任一个或全部,其中所述指令当被处理器执行的时候此外使得执行以下操作,包括利用存储器控制器来:从主存储器的第一分配的区同时读取第一完整性值和密文读取数据。
示例21:本示例包括示例14至20中任一项的特征中的任一个或全部,其中:当第一完整性值和第二完整性值相同的时候验证读取数据的完整性成功;并且当第一完整性值和第二完整性值不同的时候验证读取数据的完整性失败。
示例22:本示例包括示例21的特征中的任一个或全部,其中:验证读取数据的完整性仅仅基于第一完整性值与第二完整性值的比较。
示例23:本示例包括示例14至22中任一项的特征中的任一个或全部,其中所述指令当被处理器执行的时候此外导致执行以下操作,包括利用存储器控制器来:隔离主存储器的第一分配的区与主存储器的第二分配的区;其中第一分配的区与主机设备的第一域相关联,并且第二分配的区与主机设备的第二域相关联。
示例24:本示例包括示例23的特征中的任一个或全部,其中所述存储器控制器用于通过使用基于范围的控制来隔离第一分配的区与第二分配的区。
示例25:本示例包括示例23和24中任一项的特征中的任一个或全部,其中所述指令当被处理器执行的时候此外使得执行以下操作,包括利用存储器控制器来:利用第一域特定的加密密钥来对将被写入到主存储器的第一分配的区的数据进行加密,以及利用第二域特定的加密密钥来对将被写入到主存储器的第二分配的区的数据进行加密。
示例26:本示例包括示例14的特征中的任一个或全部,其中所述指令当被处理器执行的时候此外导致执行以下操作,包括利用存储器控制器来:使得写入数据的密文被写入到主存储器的第一分配的区内的第一数据存储位;以及使得第一完整性值被写入到主存储器的第一分配的区内的第一元数据位;其中所述第一元数据位与第一数据存储位相关联。
示例27:根据本示例,提供有一种用于使能实现对被存储到主机设备的主存储器的数据的完整性验证的存储器控制器,包括被配置成进行以下各项的电路:响应于来自第一域的写入命令来生成第一完整性值,所述写入命令以主存储器的第一分配的区的第一物理地址为目标;响应于来自第一域的读取命令来生成第二完整性值,所述读取命令以被存储到第一物理地址的读取数据为目标;以及至少部分地通过比较第一完整性值与第二完整性值来验证读取数据的完整性,其中:所述电路用于至少部分地通过如下来生成第一完整性值:在被写入命令定为目标的写入数据的明文上执行第一完整性操作,以产生第一输出;在响应于写入命令将被写入的写入数据的密文上执行第二完整性操作,以产生第二输出;以及组合所述第一和第二输出以生成第一完整性值;并且所述电路此外被配置成使得第一完整性值被写入到主存储器的第一分配的区。
示例28:本示例包括示例27的特征中的任一个或全部,其中:第一完整性操作包括根据写入数据的明文来执行循环冗余校验(CRC)以生成第一CRC值;第二完整性操作包括根据写入数据的密文来生成第一消息认证码(MAC);第一输出是第一CRC值,并且第二输出是第一MAC。
示例29:本示例包括示例28的特征中的任一个或全部,其中所述电路用于至少部分地基于以下各项来生成第一MAC:写入数据的密文、第一物理地址中的一个或多个、以及完整性密钥。
示例30:本示例包括示例27至29中任一项的特征中的任一个或全部,其中所述电路用于至少部分地通过如下来生成第二完整性值:从第一物理地址中读取被读取命令定为目标的读取数据的密文;对读取数据的密文进行解密以获得明文读取数据;在明文读取数据上执行第三完整性操作以获得第三输出;以及在密文读取数据上执行第四完整性操作以获得第四输出;以及组合所述第三和第四输出以生成第二完整性值。
示例31:本示例包括示例30的特征中的任一个或全部,其中:第三完整性操作包括在明文读取数据上执行循环冗余校验(CRC),以生成第二CRC值;第四完整性操作包括根据密文读取数据来生成第二消息认证码(MAC);以及第三输出是第二CRC值,并且第四输出是第二MAC。
示例32:本示例包括示例31的特征中的任一个或全部,其中所述电路用于至少部分地基于以下各项来生成第二MAC:密文读取数据、第一物理地址中的一个或多个、以及完整性密钥。
示例33:本示例包括示例27至32中任一项的特征中的任一个或全部,其中所述电路此外被配置成:从主存储器的第一分配的区同时读取第一完整性值和密文读取数据。
示例34:本示例包括示例27至33中任一项的特征中的任一个或全部,其中:当第一完整性值和第二完整性值相同的时候验证读取数据的完整性成功;并且当第一完整性值和第二完整性值不同的时候验证读取数据的完整性失败。
示例35:本示例包括示例34的特征中的任一个或全部,其中:所述电路用于仅仅基于第一完整性值与第二完整性值的比较来验证读取数据的完整性。
示例36:本示例包括示例27至35中任一项的特征中的任一个或全部,其中:所述电路此外被配置成隔离主存储器的第一分配的区与主存储器的第二分配的区;并且第一分配的区与主机设备的第一域相关联,并且第二分配的区与主机设备的第二域相关联。
示例37:本示例包括示例36的特征中的任一个或全部,其中所述电路用于通过使用基于范围的控制来隔离第一分配的区与第二分配的区。
示例38:本示例包括示例35或36的特征中的任一个或全部,其中所述电路此外被配置成:利用第一域特定的加密密钥来对将被写入到主存储器的第一分配的区的数据进行加密,以及利用第二域特定的加密密钥来对将被写入到主存储器的第二分配的区的数据进行加密。
示例39:本示例包括示例27的特征中的任一个或全部,其中所述电路此外被配置成:使得写入数据的密文被写入到主存储器的第一分配的区内的第一数据存储位;以及使得第一完整性值被写入到主存储器的第一分配的区内的第一元数据位;其中所述第一元数据位与第一数据存储位相关联。
如可以领会到的,本公开内容的技术提供了用于使能验证跨多个域被分配的存储器的完整性的相对轻量机制。由于本文中所述的技术利用了对按域的加密密钥的使用,但是不要求使用按域的完整性密钥,所以避免了管理按域的完整性密钥的复杂性。此外,在写入操作期间所生成的第一完整性值可以被存储在与存储经加密的写入数据的数据存储位相关联的元数据位中。因此,在读取操作期间,可以响应于读取命令而从存储器的所分配的区中同时(或几近同时)读取经加密的读取数据以及与经加密的数据相关联的第一完整性值。这可减少或消除过度存储器访问,从而导致在对于实现完整性验证所需要的开销中的对应减小。
在本文中已经采用的术语和表述被用作描述术语而不是限制术语,并且在这样的术语和表述的使用中没有任何意图排除所示出和所描述的特征(或其部分)的任何等同物,并且认识到,在权利要求的范围内,各种修改是可能的。因此,权利要求意图覆盖所有这样的等同物。
Claims (25)
1.一种用于验证被存储到主机设备的主存储器的数据的完整性的方法,包括利用主机设备的存储器控制器来:
响应于来自第一域的写入命令来生成第一完整性值,所述写入命令以所述主存储器的第一分配的区的第一物理地址为目标;
响应于来自第一域的读取命令来生成第二完整性值,所述读取命令以被存储到第一物理地址的读取数据为目标;以及
至少部分地通过比较第一完整性值与第二完整性值来验证读取数据的完整性;
其中:
生成第一完整性值包括:
在被写入命令定为目标的写入数据的明文上执行第一完整性操作,以产生第一输出;
在响应于写入命令将被写入的写入数据的密文上执行第二完整性操作,以产生第二输出;
组合所述第一和第二输出以生成第一完整性值;并且
将第一完整性值写入到所述主存储器的第一分配的区。
2.根据权利要求1所述的方法,其中:
所述第一完整性操作包括根据所述写入数据的明文来执行循环冗余校验(CRC)以生成第一CRC值;
所述第二完整性操作包括根据所述写入数据的密文来生成第一消息认证码(MAC);
所述第一输出是所述第一CRC值,并且所述第二输出是所述第一MAC。
3.根据权利要求1所述的方法,其中生成第二完整性值包括:
从第一物理地址中读取被读取命令定为目标的读取数据的密文;
对读取数据的密文进行解密以获得明文读取数据;
在明文读取数据上执行第三完整性操作以获得第三输出;以及
在密文读取数据上执行第四完整性操作以获得第四输出;以及
组合所述第三和第四输出以生成第二完整性值。
4.根据权利要求3所述的方法,其中:
所述第三完整性操作包括在所述明文读取数据上执行循环冗余校验(CRC),以生成第二CRC值;
所述第四完整性操作包括根据密文读取数据来生成第二消息认证码(MAC);以及
所述第三输出是所述第二CRC值,并且所述第四输出是所述第二MAC。
5.根据权利要求1-4中任一权利要求所述的方法,其中:
当第一完整性值和第二完整性值相同的时候验证读取数据的完整性成功;并且
当第一完整性值和第二完整性值不同的时候验证读取数据的完整性失败。
6.根据权利要求1-4中任一权利要求的方法,此外包括利用所述存储器控制器来:
隔离所述主存储器的所述第一分配的区与所述主存储器的第二分配的区;
其中所述第一分配的区与主机设备的第一域相关联,并且第二分配的区与主机设备的第二域相关联。
7.根据权利要求6所述的方法,其中所述存储器控制器用于:
通过使用基于范围的控制来隔离第一分配的区与第二分配的区;以及
利用第一域特定的加密密钥来对将被写入到主存储器的第一分配的区的数据进行加密,以及利用第二域特定的加密密钥来对将被写入到主存储器的第二分配的区的数据进行加密。
8.根据权利要求1-4中任一权利要求所述的方法,此外包括利用所述存储器控制器来:
使得写入数据的密文被写入到所述主存储器的第一分配的区内的第一数据存储位;以及
使得第一完整性值被写入到所述主存储器的第一分配的区内的第一元数据位;
其中所述第一元数据位与所述第一数据存储位相关联。
9.一种用于使能实现对被存储到主机设备的主存储器的数据的完整性验证的存储器控制器,包括被配置成进行以下各项的电路:
响应于来自第一域的写入命令来生成第一完整性值,所述写入命令以所述主存储器的第一分配的区的第一物理地址为目标;
响应于来自第一域的读取命令来生成第二完整性值,所述读取命令以被存储到第一物理地址的读取数据为目标;以及
至少部分地通过比较第一完整性值与第二完整性值来验证读取数据的完整性;
其中:
所述电路用于至少部分地通过如下来生成第一完整性值:
在被写入命令定为目标的写入数据的明文上执行第一完整性操作,以产生第一输出;
在响应于写入命令将被写入的写入数据的密文上执行第二完整性操作,以产生第二输出;以及
组合所述第一和第二输出以生成第一完整性值;并且
所述电路此外被配置成:
将第一完整性值写入到所述主存储器的第一分配的区。
10.根据权利要求9所述的存储器控制器,其中:
所述第一完整性操作包括根据所述写入数据的明文来执行循环冗余校验(CRC)以生成第一CRC值;
所述第二完整性操作包括根据所述写入数据的密文来生成第一消息认证码(MAC);
所述第一输出是所述第一CRC值,并且所述第二输出是所述第一MAC。
11.根据权利要求9所述的存储器控制器,其中所述电路用于至少部分地通过如下来生成第二完整性值:
从第一物理地址中读取被读取命令定为目标的读取数据的密文;
对读取数据的密文进行解密以获得明文读取数据;
在明文读取数据上执行第三完整性操作以获得第三输出;以及
在密文读取数据上执行第四完整性操作以获得第四输出;以及
组合所述第三和第四输出以生成第二完整性值。
12.根据权利要求11所述的存储器控制器,其中:
所述第三完整性操作包括在所述明文读取数据上执行循环冗余校验(CRC),以生成第二CRC值;
所述第四完整性操作包括根据密文读取数据来生成第二消息认证码(MAC);以及
所述第三输出是所述第二CRC值,并且所述第四输出是所述第二MAC。
13.根据权利要求9所述的存储器控制器,其中:
当第一完整性值和第二完整性值相同的时候验证读取数据的完整性成功;并且
当第一完整性值和第二完整性值不同的时候验证读取数据的完整性失败。
14.根据权利要求9所述的存储器控制器,其中:
所述电路此外被配置成隔离所述主存储器的所述第一分配的区与所述主存储器的第二分配的区;并且
所述第一分配的区与主机设备的第一域相关联,并且第二分配的区与主机设备的第二域相关联。
15.根据权利要求14所述的存储器控制器,其中所述电路用于:
通过使用基于范围的控制来隔离第一分配的区与第二分配的区;以及
利用第一域特定的加密密钥来对将被写入到主存储器的第一分配的区的数据进行加密,以及利用第二域特定的加密密钥来对将被写入到主存储器的第二分配的区的数据进行加密。
16.根据权利要求9所述的存储器控制器,其中所述电路此外被配置成:
使得写入数据的密文被写入到所述主存储器的第一分配的区内的第一数据存储位;以及
使得第一完整性值被写入到所述主存储器的第一分配的区内的第一元数据位;
其中所述第一元数据位与所述第一数据存储位相关联。
17.一种用于验证被存储到主机设备的主存储器的数据的完整性的系统,包括利用主机设备的存储器控制器来:
用于响应于来自第一域的写入命令来生成第一完整性值的装置,所述写入命令以所述主存储器的第一分配的区的第一物理地址为目标;
用于响应于来自第一域的读取命令来生成第二完整性值的装置,所述读取命令以被存储到第一物理地址的读取数据为目标;以及
用于至少部分地通过比较第一完整性值与第二完整性值来验证读取数据的完整性的装置;
其中:
用于生成第一完整性值的装置包括:
用于在被写入命令定为目标的写入数据的明文上执行第一完整性操作,以产生第一输出的装置;
用于在响应于写入命令将被写入的写入数据的密文上执行第二完整性操作,以产生第二输出的装置;
用于组合所述第一和第二输出以生成第一完整性值的装置;并且
用于将第一完整性值写入到所述主存储器的第一分配的区的装置。
18.根据权利要求17所述的系统,其中:
用于在被写入命令定为目标的写入数据的明文上执行第一完整性操作以产生第一输出的装置还包括:根据所述写入数据的明文来执行循环冗余校验(CRC)以生成第一CRC值的装置;
其中用于执行所述第二完整性操作的装置还包括根据所述写入数据的密文来生成第一消息认证码(MAC)的装置。
19.根据权利要求17所述的系统,其中用于生成第二完整性值的装置包括:
用于从第一物理地址中读取被读取命令定为目标的读取数据的密文的装置;
用于对读取数据的密文进行解密以获得明文读取数据的装置;
用于在明文读取数据上执行第三完整性操作以获得第三输出的装置;以及
用于在密文读取数据上执行第四完整性操作以获得第四输出的装置;以及
用于组合所述第三和第四输出以生成第二完整性值的装置。
20.根据权利要求19所述的系统,其中:
用于在明文读取数据上执行第三完整性操作以获得第三输出的装置还包括用于在所述明文读取数据上执行循环冗余校验(CRC)以生成第二CRC值的装置;
用于在密文读取数据上执行第四完整性操作以获得第四输出的装置还包括用于根据密文读取数据来生成第二消息认证码(MAC)的装置。
21.根据权利要求17所述的系统,其中用于至少部分通过比较第一完整性值和第二完整性值验证读取数据的完整性的装置还包括:
用于当第一完整性值和第二完整性值相同的时候验证读取数据的完整性成功的装置;并且
用于当第一完整性值和第二完整性值不同的时候验证读取数据的完整性失败的装置。
22.根据权利要求17所述的系统,此外包括:
用于隔离所述主存储器的所述第一分配的区与所述主存储器的第二分配的区的装置;
其中所述第一分配的区与主机设备的第一域相关联,并且第二分配的区与主机设备的第二域相关联。
23.根据权利要求17所述的系统,还包括:
用于通过使用基于范围的控制来隔离第一分配的区与第二分配的区的装置;以及
用于利用第一域特定的加密密钥来对将被写入到主存储器的第一分配的区的数据进行加密的装置,以及
用于利用第二域特定的加密密钥来对将被写入到主存储器的第二分配的区的数据进行加密的装置。
24.根据权利要求17所述的系统,此外包括:
用于使得写入数据的密文被写入到所述主存储器的第一分配的区内的第一数据存储位的装置;以及
用于使得第一完整性值被写入到所述主存储器的第一分配的区内的第一元数据位的装置;
其中所述第一元数据位与所述第一数据存储位相关联。
25.一种包括多个指令的至少一个机器可读介质,响应于在计算设备上被执行,所述指令使得计算设备执行根据权利要求1-8中任一权利要求所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/023683 | 2018-06-29 | ||
US16/023,683 US10922439B2 (en) | 2018-06-29 | 2018-06-29 | Technologies for verifying memory integrity across multiple memory regions |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110658986A true CN110658986A (zh) | 2020-01-07 |
Family
ID=65231136
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910456801.1A Pending CN110658986A (zh) | 2018-06-29 | 2019-05-29 | 用于验证跨多个存储器区的存储器完整性的技术 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10922439B2 (zh) |
CN (1) | CN110658986A (zh) |
DE (1) | DE102019110327A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112379840A (zh) * | 2020-11-17 | 2021-02-19 | 海光信息技术股份有限公司 | 终端的数据保护方法、装置和终端 |
CN113253912A (zh) * | 2020-02-13 | 2021-08-13 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
CN114564754A (zh) * | 2021-12-30 | 2022-05-31 | 海光信息技术股份有限公司 | 一种dram内存完整性保护方法、装置、电子设备及存储介质 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10452446B1 (en) * | 2017-06-07 | 2019-10-22 | Rockwell Collins, Inc. | High integrity multi-core processing |
US11212318B2 (en) * | 2019-04-05 | 2021-12-28 | Cisco Technology, Inc. | Verifying service advertisements using attestation-based methods |
US11575504B2 (en) | 2019-06-29 | 2023-02-07 | Intel Corporation | Cryptographic computing engine for memory load and store units of a microarchitecture pipeline |
US11580234B2 (en) | 2019-06-29 | 2023-02-14 | Intel Corporation | Implicit integrity for cryptographic computing |
US11250165B2 (en) | 2019-12-20 | 2022-02-15 | Intel Corporation | Binding of cryptographic operations to context or speculative execution restrictions |
US11403234B2 (en) | 2019-06-29 | 2022-08-02 | Intel Corporation | Cryptographic computing using encrypted base addresses and used in multi-tenant environments |
US20200257827A1 (en) * | 2019-06-29 | 2020-08-13 | Intel Corporation | Memory write for ownership access in a core |
EP3913512A1 (en) * | 2020-05-21 | 2021-11-24 | BAE SYSTEMS plc | On-die computer apparatus |
EP4154140B1 (en) * | 2020-05-21 | 2024-04-10 | BAE SYSTEMS plc | On-die computer apparatus |
US20210089388A1 (en) * | 2020-07-14 | 2021-03-25 | Intel Corporation | System, Apparatus And Method For Providing Protection Against Silent Data Corruption In A Link |
US11669625B2 (en) | 2020-12-26 | 2023-06-06 | Intel Corporation | Data type based cryptographic computing |
US11580035B2 (en) | 2020-12-26 | 2023-02-14 | Intel Corporation | Fine-grained stack protection using cryptographic computing |
CN113177214A (zh) * | 2021-04-29 | 2021-07-27 | 百度在线网络技术(北京)有限公司 | 图像发布、审核方法、相关装置及计算机程序产品 |
CN114564724A (zh) * | 2021-12-30 | 2022-05-31 | 海光信息技术股份有限公司 | 虚拟机内存完整性保护方法、装置、电子设备及存储介质 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6959384B1 (en) * | 1999-12-14 | 2005-10-25 | Intertrust Technologies Corporation | Systems and methods for authenticating and protecting the integrity of data streams and other data |
US7305084B2 (en) * | 2002-07-24 | 2007-12-04 | Qualcomm Incorporated | Fast encryption and authentication for data processing systems |
US6950517B2 (en) * | 2002-07-24 | 2005-09-27 | Qualcomm, Inc. | Efficient encryption and authentication for data processing systems |
US7836387B1 (en) * | 2005-04-29 | 2010-11-16 | Oracle America, Inc. | System and method for protecting data across protection domain boundaries |
US20080044012A1 (en) * | 2006-08-15 | 2008-02-21 | Nokia Corporation | Reducing Security Protocol Overhead In Low Data Rate Applications Over A Wireless Link |
GB2443244A (en) * | 2006-10-05 | 2008-04-30 | Hewlett Packard Development Co | Authenticated Encryption Method and Apparatus |
JP5749257B2 (ja) * | 2009-06-26 | 2015-07-15 | トラステッド ロジック | データ検証方法 |
US20120047580A1 (en) * | 2010-08-18 | 2012-02-23 | Smith Ned M | Method and apparatus for enforcing a mandatory security policy on an operating system (os) independent anti-virus (av) scanner |
US9164924B2 (en) * | 2011-09-13 | 2015-10-20 | Facebook, Inc. | Software cryptoprocessor |
US9213653B2 (en) * | 2013-12-05 | 2015-12-15 | Intel Corporation | Memory integrity |
US9882720B1 (en) * | 2014-06-27 | 2018-01-30 | Amazon Technologies, Inc. | Data loss prevention with key usage limit enforcement |
JP6484519B2 (ja) * | 2015-07-15 | 2019-03-13 | 日立オートモティブシステムズ株式会社 | ゲートウェイ装置およびその制御方法 |
US10382410B2 (en) * | 2016-01-12 | 2019-08-13 | Advanced Micro Devices, Inc. | Memory operation encryption |
US20180165224A1 (en) * | 2016-12-12 | 2018-06-14 | Ati Technologies Ulc | Secure encrypted virtualization |
US10949546B2 (en) * | 2017-08-02 | 2021-03-16 | Samsung Electronics Co., Ltd. | Security devices, electronic devices and methods of operating electronic devices |
US10733313B2 (en) * | 2018-02-09 | 2020-08-04 | Arm Limited | Counter integrity tree for memory security |
FR3076151B1 (fr) * | 2017-12-22 | 2020-11-06 | Oberthur Technologies | Procede de determination d’une somme d’integrite, programme d’ordinateur et entite electronique associes |
US11520913B2 (en) * | 2018-05-11 | 2022-12-06 | International Business Machines Corporation | Secure execution support for A.I. systems (and other heterogeneous systems) |
US10846437B2 (en) * | 2018-06-28 | 2020-11-24 | Intel Corporation | Compressed integrity check counters in memory |
-
2018
- 2018-06-29 US US16/023,683 patent/US10922439B2/en active Active
-
2019
- 2019-04-18 DE DE102019110327.4A patent/DE102019110327A1/de active Pending
- 2019-05-29 CN CN201910456801.1A patent/CN110658986A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113253912A (zh) * | 2020-02-13 | 2021-08-13 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
CN113253912B (zh) * | 2020-02-13 | 2023-07-25 | 爱思开海力士有限公司 | 存储器系统及其操作方法 |
CN112379840A (zh) * | 2020-11-17 | 2021-02-19 | 海光信息技术股份有限公司 | 终端的数据保护方法、装置和终端 |
CN112379840B (zh) * | 2020-11-17 | 2023-02-24 | 海光信息技术股份有限公司 | 终端的数据保护方法、装置和终端 |
CN114564754A (zh) * | 2021-12-30 | 2022-05-31 | 海光信息技术股份有限公司 | 一种dram内存完整性保护方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US10922439B2 (en) | 2021-02-16 |
DE102019110327A1 (de) | 2020-01-02 |
US20190042796A1 (en) | 2019-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10922439B2 (en) | Technologies for verifying memory integrity across multiple memory regions | |
US11088846B2 (en) | Key rotating trees with split counters for efficient hardware replay protection | |
US10204229B2 (en) | Method and system for operating a cache in a trusted execution environment | |
CN110447032B (zh) | 管理程序与虚拟机之间的存储器页转换监测 | |
US10896267B2 (en) | Input/output data encryption | |
US11658808B2 (en) | Re-encryption following an OTP update event | |
US20090187771A1 (en) | Secure data storage with key update to prevent replay attacks | |
JP7464586B2 (ja) | メモリ完全性チェックのための完全性ツリー | |
EP3262515B1 (en) | Cryptographic-based initialization of memory content | |
US11782744B2 (en) | Data processing system and method for accessing data in the data processing system | |
US20180260151A1 (en) | Data Storage Device and Operating Method Therefor | |
US10185842B2 (en) | Cache and data organization for memory protection | |
KR101653193B1 (ko) | 보안 처리 환경으로부터의 기능의 오프로딩 | |
KR102068485B1 (ko) | 불 휘발성 메모리 모듈 및 그것의 동작 방법 | |
US11720384B2 (en) | Program code protection in a data processing system | |
US11734415B2 (en) | Device and method for managing an encrypted software application | |
US10592433B1 (en) | Secure execution of encrypted software in an integrated circuit | |
US20230113906A1 (en) | An apparatus and method of controlling access to data stored in a non-trusted memory | |
US20160299854A1 (en) | Techniques for preventing physical attacks on contents of memory | |
Szefer | Memory protections |
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 |