CN109564553B - 多阶段存储器完整性方法和装置 - Google Patents

多阶段存储器完整性方法和装置 Download PDF

Info

Publication number
CN109564553B
CN109564553B CN201780049228.1A CN201780049228A CN109564553B CN 109564553 B CN109564553 B CN 109564553B CN 201780049228 A CN201780049228 A CN 201780049228A CN 109564553 B CN109564553 B CN 109564553B
Authority
CN
China
Prior art keywords
data
memory
decryption
encryption
encrypted
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.)
Active
Application number
CN201780049228.1A
Other languages
English (en)
Other versions
CN109564553A (zh
Inventor
S·多伊奇
D·D·德拉姆
K·S·格雷瓦尔
M·E·科纳维斯
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN109564553A publication Critical patent/CN109564553A/zh
Application granted granted Critical
Publication of CN109564553B publication Critical patent/CN109564553B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting 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
    • G06F21/79Protecting 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 in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0631Substitution permutation network [SPN], i.e. cipher composed of a number of stages or rounds each involving linear and nonlinear transformations, e.g. AES algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry

Abstract

本文描述了与用于确保/保护存储器内容的多阶段存储器完整性相关联的装置、方法和存储介质的实施例。在一些实施例中,一种装置可以包括具有相应加密引擎的多个阶段,所述加密引擎用于响应于写入或恢复操作而加密数据;其中,加密引擎要使用基于多个不同类型的选择器的多个微调来在多个加密阶段中对数据进行连续加密。在实施例中,多个阶段还可以包括一个或多个解密引擎,所述解密引擎用于响应于读取操作、移动操作或复制操作而部分解密、完全解密或伪解密多次加密的数据;其中,一个或多个解密引擎要使用基于不同类型的选择器的子集的一个或多个微调来在一个或多个解密阶段中对多次加密的数据进行部分解密、完全解密或伪解密。

Description

多阶段存储器完整性方法和装置
相关申请
本申请要求享有于2016年9月13日提交的题为“MULTI-STAGE MEMORY INTEGRITYMETHOD AND APPARATUS”的美国申请15/263,962的优先权。
技术领域
本公开内容涉及计算领域。更具体而言,本公开内容涉及用于确保存储在计算设备的存储器中的内容/数据的完整性的多阶段存储器完整性方法和装置。
背景技术
本文提供的背景描述是出于概括呈现本公开内容的上下文的目的的。除非本文另有指示,否则本部分中描述的材料不是本申请权利要求的现有技术,并且不因被包含在本部分中而被承认是现有技术。
密钥域选择器(还被称为“加密颜色(crypto-color)”)是用于注释存储器数据结构以增强安全性并且作为微调参与存储器加密过程的值,其有效地表现为好像不同的密钥被用于加密被存储到存储器中的内容/数据。密钥域选择器将加密的存储器内容/数据与正在执行的应用的特定用途、代码路径或实例相关联,以允许不同的访问控制策略应用于不同的软件域。使用密钥域选择器,系统可以针对一系列损坏事件和攻击提供增强的保护,所述损坏事件和攻击包括与软件错误相关的损坏事件(例如,释放后使用,即UAF)、缓冲区溢出攻击、对存储器的物理攻击、以及恶意软件攻击,所述恶意软件攻击包括由于返回导向编程(ROP)注入的恶意软件等导致的不适当的存储器存取。密钥域选择器大小的范围可以从几比特(1、2)到大量比特(例如,32、64或128)。
发明内容
根据本公开的一个方面,提供了一种用于提供存储器完整性的装置,包括:多个阶段,其分别包括对应的多个加密引擎,所述加密引擎用于响应于写入操作或恢复操作,在将数据的一个或多个单元存储到存储器中之前,对要存储在所述存储器中的所述数据的一个或多个单元进行加密;其中,为了对所述数据的一个或多个单元中的每个单元进行加密,所述加密引擎使用基于多个不同类型的选择器{s1,s2,...}的多个微调来在多个加密阶段中对所述数据的一个或多个单元中的每个单元进行连续加密,其中,所述多个不同类型的选择器包括密钥域选择器和空间选择器。
根据本公开的另一个方面,提供了一种用于计算的装置,包括:易失性存储器;处理器,其具有一个或多个核心以及一个或多个级别的高速缓存;存储器控制器,其与所述易失性存储器和所述处理器耦合,用于控制所述易失性存储器;以及多阶段存储器完整性布置,其包括多个阶段,具有:多个加密引擎,其对应地设置在所述多个阶段处,用于响应于写入操作或恢复操作,在将数据的一个或多个高速缓存行存储到存储器中之前,对要存储在所述存储器中的所述数据的一个或多个高速缓存行进行加密;其中,为了对所述数据的一个或多个高速缓存行中的一个高速缓存行进行加密,所述加密引擎使用基于多个不同类型的选择器{s1,s2,...}的多个微调来在多个加密阶段中对所述数据的所述一个高速缓存行进行连续加密,其中,所述多个不同类型的选择器包括密钥域选择器和空间选择器;以及一个或多个解密引擎,其对应地设置在所述多个阶段中的一个或多个阶段处,用于响应于读取操作、移动操作或复制操作而对所述数据的多次加密的高速缓存行中的一个或多个多次加密的高速缓存行进行部分解密、完全解密或伪解密;其中,所述一个或多个解密引擎使用至少基于所述多个不同类型的选择器{s1,s2,...}中的一个或多个选择器的子集的一个或多个微调来在一个或多个解密阶段中对所述数据的一个或多个多次加密的高速缓存行中的每个多次加密的高速缓存行进行部分解密、完全解密或伪解密。
根据本公开的再一个方面,提供了一种用于提供存储器完整性的方法,包括:响应于写入操作或恢复操作,在将数据的一个或多个高速缓存行存储到存储器中之前,由计算设备对要存储在所述存储器中的所述数据的一个或多个高速缓存行进行加密;其中,对所述数据的高速缓存行进行加密包括使用基于多个不同类型的选择器{s1,s2,...}的多个微调来在多个加密阶段中对所述数据的高速缓存行进行连续加密;并且其中,所述多个不同类型的选择器包括密钥域选择器和空间选择器。
附图说明
通过结合附图的下面的详细描述将容易理解实施例。为了促进该描述,同样的附图标记表示同样的结构元素。在附图的图中,通过示例而非限制的方式示出了实施例。
图1示出了根据各种实施例的具有本公开内容的多阶段存储器完整性技术的示例性计算机设备。
图2示出了根据各种实施例的多阶段存储器完整性技术的概述。
图3示出了根据各种实施例的本公开内容的多阶段存储器完整性技术的示例性实施例。
图4示出了根据各种实施例的用于写入和读取存储器的示例性过程。
图5示出了根据各种实施例的用于将内容调出到存储器外并将调出的内容恢复到存储器中的示例性过程。
图6示出了根据各种实施例的用于将内容调出到存储器外并将调出的内容恢复到存储器中的另一示例性过程。
图7示出了根据各种实施例的具有用于实践参考图1-6描述的方法的指令的存储介质。
具体实施方式
在其中使用密钥域选择器的实施例中,密钥域选择器可以扩展物理地址空间,并且可以经由未使用的地址比特被传送到存储器完整性布置。因此,可以通过使用未使用的物理地址比特(或通过高速缓存传递的其他元数据)操纵密码存储器完整性值来提供存储器完整性,以允许软件存储器分配例程控制指针的指派(例如,实现一个或多个访问控制策略)。例如通过高速缓存传递的(例如,因为不充分的外部存储器而)未使用的地址比特可以编码地址中的密钥域信息,以使得不同的密钥域地址别名到相同的物理存储器位置。因此,通过混合虚拟存储器映射和高速缓存行粒度别名,存储器中的任何页面可以在高速缓存行级别包含不同的别名集并且对于敌手是不确定的。关于涉及未使用的物理地址比特的使用的密钥域选择器的进一步细节,参见于2016年4月1日提交的题为“Convolutional MemoryIntegrity”的共同未决的美国专利申请15/089,140,该说明书在此通过引用的方式并入本文。
在其中密钥域选择器由操作系统管理并用作加密和完整性算法的输入(即,微调(tweak))的实施例中,可能变得具有挑战性的是,设备访问相同数据(例如,经由DMA),而设备也不知道这些密钥域选择器。也可能是具有挑战性的是,成功解密使用一些原始地址信息作为微调来加密的内容/数据,同时内容/数据已被移动到不同的物理地址,而不保留内容的物理位置的历史记录。具体而言,当使用密钥域选择器信息来加密一些存储器内容/数据时,该信息与物理地址一起被直接包括作为加密过程的输入。这样的内容/数据的粒度可以是页面(例如,4KB)或页面的部分(例如,高速缓存行)。为了支持必要的安全级别,微调不仅需要源自密钥域选择器,还需要源自内容/数据的物理地址。这样的信息被称为空间选择器。当内容/数据被调入和调出存储器时,内容/数据被移动到不同的物理地址。在该情况下,软件需要能够在使用原始密钥域选择器的同时使用其中存储内容/数据的新物理地址来检索内容/数据。如果使用源自原始地址和密钥域选择器二者的微调来加密内容/数据,则这是不可能的。此外,在调出之前反转应用于页面的任何加密变换具有以下缺点:除非以每数据结构为基础单独维护密钥域选择器信息,否则与页面内容/数据相关联的任何密钥域选择器信息都丢失,这是昂贵的。
这些挑战可以用下面的示例来说明。考虑物理页面P1具有在两个不同位置处的两个数据结构,即d1和d2,所述两个不同位置具有在物理页面P1内的不同物理地址。使用源自不同密钥域选择器的微调来加密数据结构。换言之,使用第一密钥域选择器(kds1)加密数据结构d1,并且使用第二密钥域选择器(kds2)加密数据结构d2。在每种情况下,密钥域选择器和物理地址作为微调绑定到加密的内容/数据,并用于加密以保护内容/数据。当物理页面P1被调出时,页面的内容/数据不再是加密形式的。这是因为由加密过程使用的微调特定于页面P1的物理地址。当内容/数据被放回到存储器中时,在不同的物理页面P2中,软件应当能够使用基于P2的新物理地址和原始密钥域选择器的新微调来检索内容/数据。除非内容/数据在被调出到硬盘中时被完全解密,否则这是不可能的。这还对设备驱动程序提出了挑战,这是因为其在硬盘和存储器之间移动内容/数据时需要知道密钥域选择器值。
本公开内容的实施例提供了可以解决上述挑战的与用于确保/保护存储器内容的多阶段存储器完整性相关联的装置、方法和存储介质。在实施例中,用于提供存储器完整性的装置可包括多个阶段,其分别具有对应的多个加密引擎,所述加密引擎用于在将内容/数据存储到存储器中之前响应于写入或恢复操作而对要存储在存储器中的内容/数据进行加密;其中,为了加密内容/数据,加密引擎要使用基于多个不同类型的选择器{s1,s2,...}的多个微调来在多个加密阶段中对内容/数据进行连续加密。在实施例中,装置还可以包括:一个或多个解密引擎,其对应地设置在多个阶段中的一个或多个阶段处,响应于读取操作、移动操作或复制操作而对多次加密的数据进行部分解密、完全解密或伪解密;其中,一个或多个解密引擎要使用基于多个不同类型的选择器{s1,s2,...}中的一个或多个选择器的子集的一个或多个微调来在一个或多个解密阶段中对多次加密的数据进行部分解密、完全解密或伪解密。以下将更全面地描述这些和其他方面。
在下面的详细描述中,就形成其一部分的附图进行了参考,在所述附图中同样的数字始终表示同样的部件,并且其中,通过图示的方式示出了可以实践的实施例。应当理解,在不脱离本公开内容的范围的情况下,可以利用其他实施例并且可以进行结构或逻辑上的改变。因此,下面的详细描述不应当被认为具有限制意义,并且实施例的范围由所附权利要求及其等同物定义。在所附描述中公开了本公开内容的各方面。可以在不脱离本公开内容的精神或范围的情况下设计本公开内容的替代实施例及其等同物。应当注意,以下公开的同样的元素在附图中由同样的附图标记指示。
可以以最有助于理解所要求保护的主题的方式将各种操作依次描述为多个离散动作或操作。然而,描述的次序不应当被解释为暗示这些操作必定依赖于次序。具体而言,这些操作可以不按呈现次序执行。所描述的操作可以以与所描述的实施例不同的次序执行。在附加的实施例中,可以执行各种附加的操作和/或可以省略所描述的操作。
出于本公开内容的目的,短语“A和/或B”意指(A)、(B)或(A和B)。出于本公开内容的目的,短语“A、B和/或C”意指(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或(A、B和C)。描述可以使用短语“在一实施例中”或“在实施例中”,其均可以指代相同或不同实施例中的一个或多个实施例。此外,如关于本公开内容的实施例使用的术语“包括”、“包含”、“具有”等是同义的。类似地,如关于本公开内容的实施例使用的术语“内容”、“数据”、“内容/数据”等也是同义的。
如本文使用的,术语“模块”可以指代以下各项、是以下各项的部分或包括以下各项:专用集成电路(ASIC)、电子电路、处理器(共享的、专用的或组)和/或存储器(共享的、专用的或组),其执行具有机器指令(从汇编器和/或编译器生成的)的一个或多个软件或固件程序、组合逻辑电路和/或具有提供所描述的功能的逻辑的其他合适组件。如本文使用的,术语“伪解密”指代导致明文的混淆或伪装版本(相对于明文本身)的解密操作。
现在参考图1,其中,示出了根据各种实施例的具有本公开内容的多阶段存储器完整性技术的计算机设备。如所示,在实施例中,计算设备100可以包括硬件101、固件(FW)/基本输入/输出服务(BIOS)113、VMM 118和虚拟机(VM)110,如所示彼此通信地耦合的。硬件101可以包括具有一个或多个级别的高速缓存108的一个或多个处理器102、存储器控制器103、存储器104(其可以由软件视为组织成例如多个物理存储器页面106)以及I/O以及可以包括硬盘的其他设备111。存储器控制器103可以被配置为管理和控制存储器104的访问。在实施例中,可以在高速缓存行粒度(小于存储器页面106)上访问存储器104(写入存储器104中或从其中读取)。在其他实施例中,可以在大于或小于高速缓存行的粒度上访问存储器104(写入存储器104中或从其中读取)。
在实施例中,计算设备100还可以包括与本公开内容的多阶段存储器完整性技术结合以确保/保护存储在存储器104中的内容/数据的多阶段存储器完整性布置109。具体而言,多阶段存储器完整性布置100可以配置有多个加密引擎105(所述加密引擎105用于使用多个不同类型的选择器{s1,s2,...}在多个阶段上对要存储到存储器104中的内容/数据的每个单元进行加密)以及多个解密引擎107,其中,多个解密引擎107中的一个或多个解密引擎可以使用多个不同类型的选择器{s1,s2,...}中的至少一个选择其的子集来在一个或多个阶段上对来自存储器104的内容/数据的加密的单元进行完全解密、部分解密或伪解密。在实施例中,在每个阶段中,针对数据的每个单元使用单个类型的选择器si以及单个类型的加密/解密算法、方法或技术。因此,技术还可以被称为分裂扩散存储器完整性技术(split-diffusion memory integrity technology),其使得完全、部分或伪解密能够继续确保各种各样的事件的内容/数据的完整性,免受将存储器页面移出存储器104(调出)、直接存储器存取(DMA)、VM迁移等。[注意:虽然未在所示实施例中示出,但是一个或多个级别的高速缓存108可以被设置在处理器102外部、处理器102和存储器104之间。]
对于所示实施例,具有加密引擎105和解密引擎107的多阶段存储器完整性布置109可以跨处理器102(高速缓存108)和存储器控制器104设置,例如其中,多个阶段中的最后阶段被设置在存储器控制器104中,并且多个阶段中一个或多个阶段在设置在处理器102(高速缓存108)中的最后阶段之前。在一些实施例中,具有加密引擎105和解密引擎107的多阶段存储器完整性布置109的所有阶段可以被设置在存储器控制器104中。
每个VM 110可以包括虚拟处理器116,其是处理器102、操作系统(OS)112(其可以被称为来宾OS)和应用114的虚拟化。VMM 118可以被配置为管理VM 110的操作,包括但不限于虚拟存储器到物理存储器映射。OS112可以包括多个服务和实用程序130以及转换表128。转换表128可以被配置为将VM 110的虚拟存储器页面/地址映射到VM 110的VM物理存储器页面/地址。VMM 118可以包括页表122,其被配置为将VM 110的VM物理存储器页面/地址映射到存储器104的主机物理存储器页面/地址107。在实施例中,页表122可以被实现并且被称为第二级地址转换表(SLAT)或扩展页表(EPT)。除了受益于本公开内容的多阶段或分裂扩散存储器完整性技术之外,VMM 118、VM 110、OS 112和应用114可以是本领域中已知的这样的元素中的任何一个元素。例如,OS 112可以是来自公司的Windows OS,或者可从各种提供商获得的UNIX/Linux。
类似地,FW/BIOS 113可以是本领域中已知的多个FW/BIOS中的任何一个FW/BIOS。在实施例中,FW/BIOS 113可以包括对统一可扩展固件接口(UEFI)的支持。
除了本公开内容的多阶段或分裂扩散存储器完整性技术之外,处理器102可以是本领域中已知的多个处理器中的任何一个处理器,具有一个或多个处理器核心和一个或多个级别的高速缓存108。类似地,除了本公开内容的多阶段或分裂扩散存储器完整性技术之外,存储器控制器103可以是本领域中已知的多个存储器控制器中的任何一个存储器控制器。存储器104可以是本领域中已知的任何易失性或非易失性存储器,适用于存储内容/数据。除了硬盘之外,I/O和其他设备111的示例也可以包括通信或联网接口(例如,以太网、WiFi、3G/4G、近场通信、通用串行总线(USB)等)、存储设备(例如,固态、磁和/或光驱动程序)、输入设备(例如,键盘、鼠标、触敏屏等)以及输出设备(例如,显示设备、打印机等)。
在继续以进一步描述多阶段(分裂扩散)存储器完整性技术之前,应当注意,虽然为了便于理解,该技术迄今为止并将继续在具有VM和VMM的示例性计算机系统的上下文中被描述,但本公开内容不受限。多阶段(分裂扩散)存储器完整性技术可以在仅具有单个操作OS的计算机系统上实践,而无需任何VM或VMM。
现在参考图2,其中,示出了根据各种实施例的多阶段(分裂扩散)存储器完整性技术的概述。如所示,用于确保存储在存储器中的内容/数据的完整性的过程200可以包括:将内容/数据的一个或多个单元(以明文形式)202中的每个单元写入存储器104中或者分页返回到存储器104中;在将每个单元存储到存储器104中之前,例如由多个加密引擎使用基于多个不同类型的选择器{s1,s2,...sn}的多个微调在多个加密阶段212、214、……216上连续加密成多次加密的内容/数据204。在实施例中,在每个阶段中,单个类型的选择器si和/或单个类型的加密/解密可以用于内容/数据的每个单元。在每个阶段处,基于选择器类型的微调可以以多种方式中的任何一种方式使用以影响加密密钥或执行加密过程的方式,其被用作例如但不限于(i)用于可微调块密码的微调值;(ii)影响密钥生成过程的值,在所述密钥生成过程中选择器的比特被扩散到加密密钥的比特中;(iii)实际的密码密钥本身;以及(iv)用于从查找表访问适当密钥的选择器。在其中选择器用于识别密钥的实施例中,可以独立地更新选择器的对应密钥。因此,对于这些实施例,可以通过以下操作来提供连续重放保护:改变用于一个选择器的密钥值,然后将存储器内容从先前的选择器/颜色值交换和更新到密钥更新的值。即使仅用两个选择器/颜色(黑色和白色),也可以提供这样的连续重放保护。例如,可以独立地改变和更新用于一个选择器/颜色(例如,黑色)的密钥,同时从另一存储器内容复制存储器内容(白色到黑色)以防止敌手重放先前的存储器内容(例如,使用先前密钥的先前是黑色的存储器内容)。对于加密/解密,在每个阶段处,加密/解密可以是本领域中已知的多个加密/解密算法、方法或技术中的任何一个加密/解密算法、方法或技术,包括但不限于高级加密标准(AES)、ThreeFish、三重数据加密标准(3DES)、Speck、Simon、Prince等。对于AES加密/解密,密码可以是但不限于电子码本(ECB)模式密码、具有密文窃取(XTS)块的基于Xor-encrypt-xor(XEX)的微调码本模式密码、Liskow RivestWagner(LRW)密码或密码块链接(CBC)密码。
另外,响应于存储器事件218(例如,将内容/数据的多个单元调出到存储器104外、对存储器104中的存储的内容/数据的多次加密的单元206进行DMA、或者与VM迁移相关联地移动存储器104中的内容/数据的多次加密的单元206),过程200可以包括使用基于多个不同类型的选择器{s1,s2,...}中的一个或多个选择器的子集的一个或多个微调来在一个或多个解密阶段220上由一个或多个解密引擎对内容/数据的每个多次加密的单元204进行部分解密220,以生成内容/数据的部分解密的单元206。类似地,在每个阶段中,与用于加密的选择器类型相对应的单个类型的选择器si可以用于内容/数据的每个单元,并且可以以与相同阶段期间的加密类似的方式使用微调。
此后,可以使用基于多个不同类型的选择器{s1,s2,...}中的一个或多个选择器的子集的一个或多个微调来在一个或多个加密/解密阶段上对内容/数据的部分解密的单元206附加地进行加密或伪解密,以针对新位置生成内容/数据的新的多次加密的单元208,所述新位置即保存调出的存储器页面的硬盘、制作DMA的设备或现在托管迁移的VM的计算设备的存储器。在实施例中,伪解密(如果被执行)可以例如由解密引擎之一执行,而附加的加密(如果被执行)可以例如由接收方设备执行,所述接收方设备例如接收被调出的存储器页面的硬盘、制作DMA的I/O设备或接收正被迁移的VM的计算机系统。
因此,本公开内容的多阶段(分裂扩散)存储器完整性技术的扩散可以提供选择器/颜色值与内容/数据的密码组合。内容/数据变得与对应的颜色交织在一起,因此在存储数据时不再需要记住选择器的元数据。对于固有的完整性,扩散引起伪随机结果,其破坏明文数据中的模式。因此,当从存储器中读回内容/数据的扩散的单元并且此后模式在内容/数据单位中重新出现时,可以假定完整性被保持(即,密文未被修改并且正确的选择器/颜色用于访问数据)。另一方面,如果没有出现模式,则可以附加地使用完整性检查值(ICV)(例如,存储在存储器中的值)来确保内容/数据的单元的完整性。如果ICV与内容/数据的所检索的单元不匹配,则可以返回错误。
例如,模式可以是在内容/数据的单元中找到的多个重复字节、字等,其在伪随机比特序列中是不大可能的(这将是对损坏的密文进行解密的结果)。可以使用检查4个重复字的模式检测器(即,发现4个16比特值在64字节的内容/数据中重复)。如果发现去扩散后的4个重复字,则完整性可以被假定(即,该情况要在64字节内容/数据的伪随机序列中发生的概率小于十亿分之一,但对于真实结构化数据相当平常),否则可以采用存储在存储器中的对应ICV来双重检查,以确保内容/数据的单元的完整性尚未被损害。
现在参考图3,其中,示出了根据各种实施例的本公开内容的多阶段(分裂扩散)存储器完整性技术的示例性实施例。如所示,可以是多阶段存储器完整性布置109的多阶段存储器完整性布置300可以包括两个加密引擎306a和306b以及两个解密引擎308a和308b。加密引擎中的第一加密引擎(加密引擎EE1 306a)可以被配置为使用基于例如密钥域选择器的第一微调来在第一加密阶段期间将要写入存储器304(其可以是存储器104)中的内容/数据(例如,来自SW/FW 302的内容/数据)(其可以是应用114、OS112、FW/BIOS 113)的单元进行加密以生成一次加密的内容/数据,并且解密引擎中的第二加密引擎(加密引擎EE2306b)可以被配置为在将内容/数据的单元写入存储器304中之前使用基于例如空间选择器的第二微调来在第二加密阶段中对内容/数据的一次加密的单元进行加密,以生成内容/数据的两次加密的单元。空间选择器可以基于其中将存储内容/数据的两次加密的单元的、存储器304内的存储器位置的物理地址(Addr)。
解密引擎中的第二解密引擎(解密引擎DE2 308b,即加密引擎EE2 306b的对应物)可以被配置为使用基于例如空间选择器的第二微调来在第一解密阶段期间对从存储器304中读出的内容/数据的两次加密的单元进行第一解密,以生成内容/数据的一次加密的单元,并且解密引擎中的第一解密引擎(解密引擎DE1 308a)可以被配置为使用基于例如密钥域选择器的第一微调来在第二解密阶段中对内容/数据的一次加密的单元进行第两解密,以生成内容/数据的明文形式的单元。在实施例中,加密引擎306a和306b可以分别包括第一和第二块密码。类似地,解密引擎308a和308b也可以分别包括第一和第二块密码。
在实施例中,第一加密块密码EE1 306a和第一解密块密码DE1 308a可以是AESECB密码,并且第二加密块密码EE2 306b和第二解密块密码DE2 308b可以是AES XEX-XTS块密码。在替代实施例中,第一和第二块密码EE1和EE2二者都可以是AES-XTS块密码,具体而言,加密引擎的第一块密码EE1 306a和解密引擎的第一块密码DE1 308a可以是具有与512比特扩散组合的少于10个AES轮的AES-XTS块密码,而加密引擎的第二块密码EE2 306b和解密引擎的第二块密码DE2 308b可以是具有10个AES轮的AES-XTS块密码。
现在参考图4,其中,示出了根据各种实施例的用于写入和读取存储器的示例性过程。如所示,响应于存储器写入和读取操作,用于提供多阶段(分裂扩散)存储器完整性的过程400可以包括在框402a-402b和404a-404b处执行的操作。操作可以分别由例如加密引擎306a-306b和解密引擎308a-308b执行。
如早先描述的,响应于写入存储器的操作(例如,由应用114、OS 112或FW/BIOS113进行的),可以使用第一加密引擎ENCR1 402a和基于例如密钥域选择器(KDS)的第一微调来在第一加密阶段期间对内容/数据的明文形式的单元P进行第一加密,以生成内容/数据的一次加密的单元C*。接下来,内容/数据的一次加密的单元C*可以使用第二加密引擎ENCR2 402b和基于例如空间选择器的第二微调来在第二加密阶段期间进行第两加密,以生成内容/数据的两次加密的单元C。空间选择器可以基于其中将存储内容/数据的两次加密的单元的、存储器内的存储器位置的物理地址(Addr)。
在稍后的时间点,响应于用于从存储器中读回内容/数据的单元的读取操作,可以使用解密引擎DECR2 404b(ENCR2 402b的对应物)和基于例如空间选择器的第两微调来在第一解密阶段期间对从存储器中读出的内容/数据的两次加密的单元进行第一解密,以生成内容/数据的一次加密的单元C*。此后,可以使用解密引擎DECR1 404a(ENCR1 402a的对应物)和基于例如密钥域选择器的第一微调来在第二解密阶段中对内容/数据的一次加密的单元C*进行第两解密,以生成内容/数据的明文形式的单元P。
现在参考图5,其中,根据各种实施例的用于将内容调出到存储器外并将调出的内容恢复到存储器中的示例性过程。如所示,响应于存储器调出和恢复操作,用于提供多阶段(分裂扩散)存储器安全/保护的过程500可以包括在框502a-502b、504a-504b、506a-506b和508a-508b处执行的操作。操作可以分别由例如加密引擎306a-306b和解密引擎308a-308b执行。
如早先描述的,响应于写入存储器的操作(例如,由应用114、OS 112或FW/BIOS113进行的),可以使用加密引擎ENCR1 502a和基于例如第一密钥域选择器(KDS1)的第一微调来在第一加密阶段期间对内容/数据的明文形式的单元P进行第一加密,以生成内容/数据的一次加密的单元C*。接下来,内容/数据的一次加密的单元C*可以使用加密引擎ENCR2502b和基于例如第一空间选择器的第二微调来在第二加密阶段期间进行第两加密,以生成内容/数据的两次加密的单元C**。第一空间选择器可以基于其中将存储两次加密的内容/数据C**的、存储器内的存储器位置的物理地址(Addr1)。
在稍后的时间点,响应于用于从存储器中将多个内容/数据的两次加密的单元调出到例如硬盘的移动操作,调出到存储器外的内容/数据的两次加密的单元中的每个内容/数据的两次加密的单元可以使用解密引擎DECR2504b(ENCR2 502b的对应物)在第一解密阶段期间基于例如空间选择器的第二微调进行第一解密,以生成对应的内容/数据的一次加密的单元C*。此后,内容/数据的一次加密的单元C*可以使用解密引擎DECR1 504a(ENCR1502a的对应物)和基于例如第二密钥域选择器(KDS2)的第三微调来在第二解密阶段中进行第两伪解密,以生成内容/数据的明文形式的混淆或伪装的单元P*。然后内容/数据的明文形式的混淆/伪装的单元P*可以被存储在调出设备(例如,硬盘)上。在实施例中,用于内容/数据的每对两次和一次加密的单元的第二微调和第三微调可以是不同的或相同的。
在另一稍后的时间点,响应于用于将内容/数据的调出的单元恢复回存储器中的恢复操作,可以使用加密引擎ENCR1 502a和基于例如KDS2的第三微调来在第一加密阶段期间对内容/数据的明文形式的伪装的单元P*中的每个单元进行第一加密,以生成对应的内容/数据的一次加密的单元C*。接下来,可以使用加密引擎ENCR2 502b和基于例如第二空间选择器的第四微调来在第二加密阶段期间对内容/数据的一次加密的单元C*中的每个单元进行第两加密,以生成对应的内容/数据的新的两次加密的单元C**new。第二空间选择器可以基于其中将存储内容/数据的新的两次加密的C**new的、存储器内的新存储器位置的物理地址(Addr2)。类似地,在实施例中,用于内容/数据的每对伪装的和一次加密的单元的第三和第四微调可以是不同的或相同的。
在稍后的时间点,响应于用于从存储器中读取出内容/数据的新的两次加密的单元C**new之一的读取操作,内容/数据的两次加密的单元C**new可以使用解密引擎DECR2504b(ENCR2 502b的对应物)和基于例如第二空间选择器(Addr2)的第四微调来在第一解密阶段期间进行第一解密,以生成对应的内容/数据的一次加密的单元C*。此后,可以使用解密引擎DECR1504a(ENCR1 502a的对应物)和基于例如KDS1的第一微调来在第二解密阶段中对内容/数据的一次加密的单元C*进行第两解密,以生成内容/数据的明文形式的单元P。
现在参考图6,其中,示出了根据各种实施例的用于将内容调出到存储器外和将调出的内容恢复到存储器中的另一示例性过程。如所示,响应于存储器调出和恢复操作,用于提供多阶段(分离扩散)存储器安全/保护的过程600可以包括在框602a-602b、604a、606b和608a-608b处执行的操作。操作可以分别由例如加密引擎306a-306b和解密引擎308a-308b执行。
如早先描述的,响应于写入存储器操作(例如,由应用114、OS 112或FW/BIOS 113进行的),可以使用加密引擎ENCR1 602a和基于例如第一密钥域选择器(KDS1)的第一微调来在第一加密阶段期间对明文形式的内容/数据P进行第一加密,以生成一次加密的内容/数据C*。接下来,一次加密的内容/数据C*可以使用加密引擎ENCR2 602b和基于例如第一空间选择器的第二微调来在第二加密阶段期间进行第两加密,以生成两次加密的内容/数据C**。第一空间选择器可以基于其中将存储两次加密的内容/数据C**的、存储器内的存储器位置的物理地址(Addr1)。
在稍后的时间点,响应于用于从存储器中将多个内容/数据的两次加密的单元调出到例如硬盘的移动操作,调出到存储器外的内容/数据的两次加密的单元中的每个单元可以使用解密引擎DECR2 604b(ENCR2 602b的对应物)和基于例如空间选择器的第二微调来在第一解密阶段期间进行第一解密,以生成对应的内容/数据的一次加密的单元C*。此后,响应于例如来自处理器102的绕开信号、存储器控制器103的主逻辑或基于选择器的“颜色”,可以绕开一次加密的内容/数据C*的第两解密阶段期间的第两解密(例如,使用解密引擎DECR1 604a,即ENCR1 602a的对应物)。然后,内容/数据的一次加密的单元C*可以存储在调出设备(例如,硬盘)上。在实施例中,用于内容/数据的两次加密的单元中的每个单元的第二微调可以是不同的或相同的。
在另一稍后的时间点,响应于用于将内容/数据的调出的单元恢复回存储器中的恢复操作,可以类似地绕开内容/数据的一次加密的单元C*的第一加密阶段期间的第一加密(使用例如加密引擎ENCR1 602a),例如,响应于例如来自处理器102的绕开信号、存储器控制器103的主逻辑,或者基于选择器的“颜色”。接下来,可以使用加密引擎ENCR2 602b和基于例如第二空间选择器的第三微调来在第二加密阶段期间对内容/数据的一次加密的单元C*中的每个单元进行第两加密,以生成内容/数据的对应的新的两次加密的单元C**new。第二空间选择器可以基于其中将存储内容/数据的新的两次加密的单元C**new的、存储器内的新存储器位置的物理地址(Addr2)。在实施例中,用于内容/数据的一次加密的单元中的每个单元的第三微调可以是不同的或相同的。
在稍后的时间点,响应于用于从存储器中读取出新的两次加密的内容/数据C**的读取操作,可以使用解密引擎DECR2 604b(ENCR2 602b的对应物)和基于例如第二空间选择器(Addr2)的第三微调来在第一解密阶段期间对存储器中的两次加密的内容/数据C**new进行第一解密,以生成一次加密的内容/数据C*。此后,可以使用解密引擎DECR1 604a(ENCR1602a的对应物)和基于例如KDS 1的第一微调来在第二解密阶段期间对一次加密的内容/数据C*进行第两解密,以生成明文形式的内容/数据P。
返回参考图1,在实施例中,存储器控制器103可以被配置为检查完全解密的数据是否损坏。在实施例中,为了促进检查数据的完全解密的单元是否损坏,存储器控制器103还可以被配置为计算内容/数据的单元的完整性检查值(ICV)。例如,当以高速缓存行粒度级别将内容/数据写入存储器104中并从存储器104中读取时,可以针对数据的每个高速缓存行计算ICV,并将其存储在存储器104中。在解密时,存储器控制器103可以检索所存储的ICV并且至少部分地基于ICV是否与所检索的内容/数据的高速缓存行相匹配来确定所检索的内容/数据的高速缓存行是否已经潜在地受到损害。在实施例中,存储器控制器103还可以被配置为执行内联模式检查。仅当正被写入存储器的原始明文数据未通过模式检查启发式方法(heuristic)时,可以计算附加ICV并将其存储在存储器中,例如,因为它已经是随机查看或加密或压缩等的内容/数据。因此,当内联模式检查通过时,可以避免附加读取存储器104以提取和检查存储在存储器104中的ICV。
在实施例中,多个不同类型的选择器{s1,s2,...}可以包括密钥域选择器。对于这些实施例,存储器控制器103可以被配置为仅基于仅依赖于密钥域选择器的数据的加密的单元和数据的单元的比特来计算数据的单元的完整性检查值。在其他实施例中,存储器控制器103可以被配置为仅基于数据的加密的单元的比特来计算内容/数据的单元的完整性检查值。
在实施例中,多个不同类型的选择器{s1,s2,...}可以包括密钥域选择器;并且为了促进VM迁移,存储器控制器可以被提供有用于生成密钥域选择器的与其他装置相同的密钥,其中,虚拟机可以在装置之间自由迁移。
如本领域技术人员将领会的,本公开内容的各方面可以体现为方法或计算机程序产品。因此,除了如早先描述的体现在硬件中之外,本公开内容还可以采用完全软件实施例(包括固件、常驻软件、微代码等)或者组合软件和硬件方面的实施例的形式,所述软件和硬件方面可以全部被通称为“电路”、“模块”或“系统”。此外,本公开内容可以采用体现在任何有形或非暂时性表达介质中的计算机程序产品的形式,所述计算机程序产品具有体现在介质中的计算机可用程序代码。
图7示出了示例性计算机可读非暂时性存储介质,其可以适合于存储指令,响应于由装置执行指令,所述指令使得装置实践本公开内容的选择的方面。如所示,非暂时性计算机可读存储介质702可以包括多个编程指令704。编程指令704可以被配置为响应于编程指令的执行而使得计算设备或其组件(例如,存储器控制器103)能够实现加密引擎105和解密引擎107以实践本公开内容的多阶段(分裂扩散)存储器完整性技术。在替代实施例中,编程指令604可以替代地设置在多个计算机可读非暂时性存储介质702上。在其他实施例中,编程指令704可以被设置在计算机可读暂时存储介质702(例如,信号)上。
可以利用一个或多个计算机可用或计算机可读介质的任何组合。计算机可用或计算机可读介质可以是例如但不限于电子、磁、光、电磁、红外线或半导体系统、装置、设备或传播介质。计算机可读介质的更具体示例(非穷举列表)将包括以下各项:具有一条或多条电线的电连接、便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪速存储器)、光纤、便携式压缩盘只读存储器(CD-ROM)、光学存储设备、诸如支持互联网或内联网传输的介质之类的传输介质、或磁存储设备。注意,计算机可用或计算机可读介质甚至可以是程序被打印于其上的纸张或另一合适介质,这是因为程序可以经由例如纸张或其他介质的光学扫描以电子方式捕获,然后编译、解释或以合适的方式进行其它处理(如果必要的话),然后将其存储在计算机存储器中。在本文档的上下文中,计算机可用或计算机可读介质可以是可以包含、存储、传送、传播或传输程序以供指令执行系统、装置或设备使用或与之结合使用的任何介质。计算机可用介质可以包括传播的数据信号,其具有用其体现的计算机可用程序代码,所述数据信号或者在基带中或者作为载波的一部分。计算机可用程序代码可以使用任何适当的介质来发送,所述介质包括但不限于无线、有线、光纤电缆、RF等。
用于执行本公开内容的操作的计算机程序代码可以用一种或多个编程语言的任何组合来编写,所述编程语言包括诸如Java、Smalltalk、C++等的面向对象编程语言和诸如“C”编程语言或类似的编程语言之类的传统的过程编程语言。程序代码可以完全在用户的计算机上、部分地在用户的计算机上、作为独立的软件包、部分地在用户的计算机上且部分地在远程计算机上、或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者可以连接到外部计算机(例如,使用互联网服务提供商通过互联网连接)。
参考根据本公开内容的实施例的方法、装置(系统)和计算机程序产品的流程图图示和/或框图来描述本公开内容。应当理解,流程图图示和/或框图中的每个框以及流程图图示和/或框图中的框的组合可以由计算机程序指令实现。这些计算机程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,以使得经由计算机的处理器或其他可编程数据处理装置执行的指令创建用于实现流程图和/或框图的一个框或多个框中指定的功能/动作的单元。
这些计算机程序指令还可以存储在计算机可读介质中,所述计算机程序指令可以命令计算机或其他可编程数据处理装置以特定方式起作用,以使得存储在计算机可读介质中的指令产生包括指令单元的制品,所述指令单元实现流程图和/或框图的一个框或多个框中指定的功能/动作。
计算机程序指令还可以被加载到计算机或其他可编程数据处理装置上,使得一系列操作步骤在计算机或其他可编程装置上执行以产生计算机实现的过程,以使得在计算机或其他可编程装置上执行的指令提供用于实现流程图和/或框图的一个框或多个框中指定的功能/动作的过程。
附图中的流程图和框图显示了根据本公开内容的各种实施例的系统、方法和计算机程序产品的可能实施方式的架构、功能和操作。在这方面,流程图或框图中的每个框可以表示代码的模块、片段或部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。还应当注意,在一些替代实施方式中,框中提到的功能可以不按附图中示出的次序发生。例如,连续示出的两个框可以实际上基本上同时执行,或者这些框有时可以以相反的次序执行,这取决于所涉及的功能。还应当注意,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可以由执行指定的功能或动作的基于专用硬件的系统、或专用硬件和计算机指令的组合来实现。
本文使用的术语仅出于描述特定实施例的目的,而并不旨在限制本公开内容。如本文使用的,单数形式“一”、“一个”和“该”旨在还包括复数形式,除非上下文另有明确指示。还应当理解,当在本说明书中使用时,术语“包括”和/或“包含”特定于所述特征、整数、步骤、操作、元素和/或组件的存在,但不排除一个或多个其他特征、整数、步骤、操作、元素、组件和/或其组的存在或者附加。
实施例可以被实现为计算机过程、计算系统或诸如计算机可读介质的计算机程序产品之类的制品。计算机程序产品可以是计算机系统可读并且编码用于执行计算机过程的计算机程序指令的计算机存储介质。
所附权利要求中的所有单元或步骤加功能元素的对应结构、材料、动作和等同物旨在包括用于组合具体要求保护的其他要求保护的元素来执行功能的任何结构、材料或动作。本公开内容的描述已经出于说明和描述的目的被呈现了,但是并不旨在穷举或将本公开内容限于所公开的形式。在不脱离本公开内容的范围和精神的情况下,许多修改和变型对于普通技术人员而言将是显而易见的。选择和描述实施例是为了最好地解释本公开内容的原理和实际应用,并且使得本领域其他技术人员能够针对具有适于预期的特定用途的各种修改的实施例来理解公开内容。
返回参考图1,对于一个实施例,处理器102中的至少一个处理器可以与存储器控制器103(包括多阶段存储器完整性技术)一起封装在一个集成电路封装中。对于一个实施例,处理器102中的至少一个处理器可以与存储器控制器103(包括多阶段存储器完整性技术)封装在一起,以形成系统级封装(SiP)。对于一个实施例,处理器102中的至少一个处理器可以与存储器控制器103(包括多阶段存储器完整性技术)封装在一起,以形成片上系统(SoC)。对于至少一个实施例,SoC可以用于例如但不限于可穿戴设备、智能手机或计算平板电脑。
因此,已经描述了本公开内容的各种示例性实施例,其包括但不限于:
示例1可以是一种用于提供存储器完整性的装置,包括:多个阶段,其分别包括对应的多个加密引擎,加密引擎用于响应于写入操作或恢复操作,在将数据的一个或多个单元存储到存储器中之前,对要存储在存储器中的数据的一个或多个单元进行加密;其中,为了对数据的一个或多个单元中的每个单元进行加密,加密引擎可以使用基于多个不同类型的选择器{s1,s2,...}的多个微调来在多个加密阶段中对数据的一个或多个单元中的每个单元进行连续加密。
示例2可以是示例1,其中,为了响应于写入操作或恢复操作而在多个加密阶段中对数据的一个或多个单元中的每个单元进行加密,加密引擎中的第一加密引擎可以使用基于密钥域选择器的第一微调来在第一加密阶段中对数据的一个或多个单元中的一个单元进行加密,以生成数据的对应的一次加密的单元,并且加密引擎中的第二加密引擎可以使用基于空间选择器的第二微调来在第二加密阶段中对数据的一次加密的单元进行加密,以生成数据的对应的两次加密的单元。
示例3可以是示例2,其中,空间选择器与数据的多次加密的单元可以被存储于其中的、存储器的存储器位置的物理地址相关联。
示例4可以是示例2,其中,第一加密引擎和第二加密引擎可以分别包括第一块密码和第二块密码。
示例5可以是示例4,其中,第一块密码或第二块密码可以包括高级加密标准(AES)的、具有密文窃取(XTS)块的基于Xor-encrypt-xor(XEX)的微调码本模式密码。
示例6可以是示例4,其中,第一块密码包括高级加密标准(AES)电子码本(ECB)块密码。
示例7可以是示例1,其中,多个阶段还包括:在多个阶段中的一个或多个阶段中一个或多个解密引擎要响应于读取操作、移动操作或复制操作而对数据的多次加密的单元中的一个或多个多次加密的单元进行部分解密、完全解密或伪解密;其中,一个或多个解密引擎可以使用至少基于多个不同类型的选择器{s1,s2,...}中的一个或多个选择器的子集的一个或多个微调来在一个或多个解密阶段中对数据的多次加密的单元中的一个或多个多次加密的单元进行部分解密、完全解密或伪解密。
示例8可以是示例7,其中,响应于由与存储器耦合的处理器执行的读取操作,一个或多个解密引擎可以对数据的一个或多个多次加密的单元中的一个多次加密的单元进行完全解密;其中,为了在一个或多个解密阶段中对数据的一个或多个多次加密的单元中的一个多次加密的单元进行完全解密,一个或多个解密引擎中的第一解密引擎可以使用基于空间选择器的第一微调来在第一解密阶段中对数据的一个多次加密的单元进行解密,以生成数据的部分解密的单元,并且一个或多个解密引擎中的第二解密引擎要使用基于密钥域选择器的第二微调来在第二解密阶段中对数据的部分解密的单元进行解密,以生成明文形式的数据的单元。
示例9可以是示例7,其中,存储器被视为组织成页面,其中,每个页面具有多个数据的多次加密的单元,并且其中,响应于用于将存储器页面调出到存储器外的移动操作,一个或多个解密引擎对多个数据的多次加密的单元进行部分解密,其中,存储器页面存储了多个数据的多次加密的单元;其中,为了在一个或多个解密阶段中对多个数据的多次加密的单元中的每个多次加密的单元进行部分解密,一个或多个解密引擎中的一个解密引擎可以使用基于空间选择器的微调来在解密阶段中对多个数据的多次加密的单元中的每个多次加密的单元进行解密,以生成数据的对应的部分解密的单元;其中,用于生成数据的不同的对应的部分解密的单元的微调是不同的。
示例10可以是示例9,其中,一个或多个解密引擎可以响应于用于绕开附加解密的绕开命令的接收而在部分解密的数据的生成之后停止进一步解密。
示例11可以是示例7,其中,响应于用于将虚拟机从装置或具有装置的计算设备迁移的移动操作,一个或多个解密引擎可以对多个多次加密的数据进行部分解密或伪解密,其中,多个多次加密的数据与虚拟机相关联。
示例12可以是示例7,其中,响应于与由具有存储器的直接存储器存取(DMA)的设备进行的对数据的一个或多个多次加密的单元的DMA相关联的读取操作,一个或多个解密引擎可以对数据的多次加密的单元中的一个或多个多次加密的单元进行部分解密或伪解密,以在设备上创建数据的一个或多个多次加密的单元的副本。
示例13可以是示例7,其中,为了响应于写入操作而在多个加密阶段中对数据的一个或多个单元进行加密,加密引擎中的第一加密引擎使用基于第一密钥域选择器的第一微调来在第一加密阶段中对数据的一个或多个单元中的一个单元进行加密,以生成数据的一次加密的单元,并且加密引擎中的第二加密引擎可以使用基于空间选择器的第二微调来在第二加密阶段中对数据的一次加密的单元进行加密,以生成数据的两次加密的单元;其中,存储器被视为组织成页面,其中,每个页面具有多个数据的多次加密的单元,并且一个或多个解密引擎可以在响应于从存储器中将其中存储了多个多次加密的数据的存储器页面调出的分页事件而从存储器移动多个数据的两次加密的单元时,对多个数据的多次加密的单元进行伪解密;并且其中,为了在多个解密阶段中对多个数据的两次加密的单元进行伪解密,多个解密引擎中的第一解密引擎可以使用基于空间选择器的第二微调来在第一解密阶段中对多个数据的两次加密的单元中的每个两次加密的单元进行解密,以生成数据的对应的部分解密的单元,并且多个解密引擎中的第二解密引擎可以使用基于第二密钥域选择器的第三微调来在第二解密阶段中对数据的对应的部分解密的单元进行伪解密,以生成数据的对应的伪解密的单元;其中,用于多个数据的每对两次加密的单元和数据的部分解密的单元的第一微调和第二微调是不同的。
示例14可以是示例13,其中,空间选择器是第一空间选择器;其中,响应于恢复操作而对要存储在存储器中的数据的多个单元进行加密可以响应于恢复操作而在多个加密阶段中对数据的多个伪解密的单元进行加密,将具有数据的多个伪解密的单元的所调出的存储器页面恢复到存储器中;并且其中,为了在多个加密阶段中对多个伪解密的数据进行加密,加密引擎中的第一加密引擎可以使用基于第二密钥域选择器的第三微调来在第一加密阶段中对数据的多个伪解密的单元中的数据的每个伪解密的单元进行加密,以生成数据的对应的一次加密的单元,并且加密引擎中的第二加密引擎可以使用基于第二空间选择器的第四微调来在第二加密阶段中对数据的对应的一次加密的单元进行加密,以生成数据的对应的新的两次加密的单元;其中,用于数据的每对多个伪解密的单元和数据的一次加密的单元的第三微调和第四微调是不同的。
示例15可以是示例1-14中的任何一个,其中,装置可以托管在存储器控制器中。
示例16可以是示例1-14中的任何一个,其中,多个阶段中的最后阶段可以被设置在存储器控制器中,并且多个阶段中的在最后阶段之前的一个或多个阶段被设置在存储器控制器外部。
示例17可以是示例16,其中,多个阶段中的在最后阶段之前的一个或多个阶段中的一个阶段被设置在高速缓存或与存储器控制器耦合的处理器中。
示例18可以是用于提供存储器完整性的装置,包括:多个阶段,其具有被设置在多个阶段中的一个或多个阶段中的一个或多个解密引擎,其用于响应于读取操作、移动操作或复制操作而使用基于多个不同类型的选择器{s1,s2,...}的多个微调来对数据的一个或多个多次加密的单元中进行部分解密、完全解密或伪解密;其中,一个或多个解密引擎可以使用至少基于多个不同类型的选择器{s1,s2,...}中的一个或多个选择器的子集的一个或多个微调来在一个或多个解密阶段中对数据的多次加密的单元中的每个多次加密的单元进行部分解密、完全解密或伪解密。
示例19可以是示例18,其中,响应于由与存储器耦合的处理器执行的读取操作,一个或多个解密引擎可以对数据的一个或多个多次加密的单元中的一个多次加密的单元进行完全解密;其中,为了在一个或多个解密阶段中对数据的一个多次加密的单元进行完全解密,一个或多个解密引擎中的第一解密引擎可以使用基于空间选择器的第一微调来在第一解密阶段中对数据的一个多次加密的单元进行解密,以生成数据的对应的部分解密的单元,并且一个或多个解密引擎中的第二解密引擎可以使用基于密钥域选择器的第二微调来在第二解密阶段中对数据的对应的部分解密的单元进行解密,以生成明文形式的数据的单元。
示例20可以是示例18,其中,存储器被视为组织成页面,其中,每个页面具有多个数据的多次加密的单元,并且其中,响应于用于将存储器页面调出到存储器外的移动操作,一个或多个解密引擎对多个数据的多次加密的单元进行部分解密,其中,存储器页面存储了多个数据的多次加密的单元;其中,为了在一个或多个解密阶段中对多个数据的多次加密的单元中的每个多次加密的单元进行部分解密,一个或多个解密引擎中的一个解密引擎可以使用基于空间选择器的微调来在解密阶段中对多个数据的多次加密的单元中的每个多次加密的单元进行解密,以生成部分解密的数据,其中,用于数据的多次加密的单元的微调是不同的。
示例21可以是示例20,其中,一个或多个解密引擎可以响应于用于绕开附加解密的绕开命令的接收而在部分解密的数据的生成之后停止进一步解密。
示例22可以是示例18,其中,响应于用于将虚拟机从装置或具有装置的计算设备迁移的移动操作,一个或多个解密引擎可以对多个数据的多次加密的单元进行部分解密或伪解密,其中,多次加密的数据与虚拟机相关联。
示例23可以是示例18,其中,响应于与由具有存储器的直接存储器存取(DMA)的设备进行的对多个数据的多次加密的单元的DMA相关联的读取操作,一个或多个解密引擎可以对多个数据的多次加密的单元进行部分解密或伪解密,以在设备上创建多个数据的多次加密的单元的副本。
示例24可以是示例18,其中,在多个加密阶段中对数据的一个或多个多次加密的单元进行加密,其中,加密引擎中的第一加密引擎可以使用基于第一密钥域选择器的第一微调来在第一加密阶段中对数据的一个或多个单元中的每个单元进行加密,以生成数据的对应的一次加密的单元,并且加密引擎中的第二加密引擎可以使用基于空间选择器的第二微调来在第二加密阶段中对数据的对应的一次加密的单元进行加密,以生成数据的对应的两次加密的单元;其中,存储器被视为组织成多个页面,其中,每个页面具有多个多次加密的数据,并且一个或多个解密引擎可以在响应于从存储器中将其中存储了多个多次加密的数据的存储器页面调出的分页事件而从存储器移动多个数据的多次加密的单元时,对多个数据的多次加密的单元进行伪解密;并且其中,为了在多个解密阶段中对多个数据的多次加密的单元进行伪解密,多个解密引擎中的第一解密引擎可以使用基于空间选择器的第二微调来在第一解密阶段中对多个数据的多次加密的单元中的每个多次加密的单元进行解密,以生成数据的对应的部分解密的单元,并且多个解密引擎中的第二解密引擎可以使用基于第二空间选择器的第三微调来在第二解密阶段中对数据的对应的部分解密的单元进行伪解密,以生成数据的伪解密的单元;其中,用于数据的每对多个加密的单元和数据的部分解密的单元的第二微调和第三微调是不同的。
示例25可以是示例18-24中的任何一个,其中,装置可以托管在存储器控制器中。
示例26可以是示例18-24中的任何一个,其中,多个阶段中的最后阶段可以被设置在存储器控制器中,并且多个阶段中的在最后阶段之前的一个或多个阶段被设置在存储器控制器外部。
示例27可以是示例26,其中,多个阶段中的在最后阶段之前的一个或多个阶段中的一个阶段被设置在高速缓存或与存储器控制器耦合的处理器中。
示例28可以是一种用于计算的装置,包括:易失性存储器;处理器,其具有一个或多个核心,以及一个或多个级别的高速缓存;存储器控制器,其与易失性存储器和处理器耦合,用于控制易失性存储器;以及多阶段存储器完整性布置,其包括多个阶段,具有:多个加密引擎,其对应地设置在多个阶段处,多个加密引擎用于响应于写入操作或恢复操作,在将数据的一个或多个高速缓存行存储到存储器中之前,对要存储在存储器中的数据的一个或多个高速缓存行进行加密;其中,为了对数据的一个或多个高速缓存行中的数据的一个高速缓存行进行加密,加密引擎可以使用基于多个不同类型的选择器{s1,s2,...}的多个微调来在多个加密阶段中对数据的一个高速缓存行进行连续加密;以及一个或多个解密引擎,其对应地设置在多个阶段中的一个或多个阶段处,一个或多个解密引擎用于响应于读取操作、移动操作或复制操作而对数据的多次加密的高速缓存行中的一个或多个多次加密的高速缓存行进行部分解密、完全解密或伪解密;其中,一个或多个解密引擎可以使用至少基于多个不同类型的选择器{s1,s2,...}中的一个或多个选择器的子集的一个或多个微调来在一个或多个解密阶段中对一个或多个多次加密的高速缓存行中的每个多次加密的高速缓存行进行部分解密、完全解密或伪解密。
示例29可以是示例28,其中,存储器控制器还可以检查数据的完全解密的高速缓存行是否有损坏。
示例30可以是示例29,其中,为了促进检查数据的完全解密的高速缓存行是否有损坏,存储器控制器还可以计算用于数据的高速缓存行的完整性检查值。
示例31可以是示例30,其中,多个不同类型的选择器{s1,s2,...}可以包括密钥域选择器;并且其中,存储器控制器可以仅基于仅依赖于密钥域选择器的数据的加密的高速缓存行和数据的比特来计算用于数据的高速缓存行的完整性检查值。
示例32可以是示例30,其中,存储器控制器可以仅基于数据的加密的高速缓存行的比特来计算用于数据的高速缓存行的完整性检查值。
示例33可以是示例28,其中,多个不同类型的选择器{s1,s2,...}可以包括密钥域选择器;并且其中,存储器控制器被提供有用于生成密钥域选择器的与另一装置相同的密钥,其中,虚拟机在两个装置之间是自由迁移的。
示例34可以是示例28-33,其中,多阶段存储器完整性布置可以被设置在存储器控制器中。
示例35可以是示例28-33,其中,多个阶段中的最后阶段可以被设置在存储器控制器中,并且多个阶段中的在最后阶段之前的一个或多个阶段可以被设置在存储器控制器外部。
示例36可以是示例35,其中,最后阶段之前的多个阶段中的一个或多个阶段中的一个阶段可以被设置在处理器中。
示例37可以是一种用于提供存储器完整性的方法,包括:响应于写入操作或恢复操作,在将数据的一个或多个高速缓存行存储到存储器中之前,由计算设备对要存储在存储器中的数据的一个或多个高速缓存行进行加密;其中,对数据的高速缓存行进行加密包括使用基于多个不同类型的选择器{s1,s2,...}的多个微调来在多个加密阶段中对数据的高速缓存行进行连续加密;并且其中,多个不同类型的选择器包括密钥域选择器和空间选择器。
示例38可以是示例37,还包括:响应于读取操作、移动操作或复制操作,由计算设备对数据的多次加密的高速缓存行中的一个或多个多次加密的高速缓存行进行部分解密、完全解密或伪解密;其中,部分解密、完全解密或伪解密包括使用至少基于多个不同类型的选择器{s1,s2,...}中的一个或多个选择器的子集的一个或多个微调来在一个或多个解密阶段中对数据的多次加密的高速缓存行进行部分解密、完全解密或伪解密。
示例39可以是包括指令的一个或多个计算机可读介质,指令响应于由存储器控制器对指令的执行而使得存储器控制器操作以下各项:多个加密引擎,其用于响应于写入操作或恢复操作,在将数据的一个或多个高速缓存行存储到存储器中之前,对要存储在存储器中的数据的一个或多个高速缓存行进行加密;其中,为了对数据的一个或多个高速缓存行进行加密,加密引擎可以使用基于多个不同类型的选择器{s1,s2,...}的多个微调来在多个加密阶段中对数据的一个或多个高速缓存行进行连续加密;或者一个或多个解密引擎,其用于响应于读取操作、移动操作或复制操作而对数据的一个或多个多次加密的高速缓存行进行部分解密、完全解密或伪解密;其中,一个或多个解密引擎可以使用至少基于多个不同类型的选择器{s1,s2,...}中的一个或多个选择器的子集的一个或多个微调来在一个或多个解密阶段中对数据的一个或多个多次加密的高速缓存行进行部分解密、完全解密或伪解密;其中,还可以使得存储器控制器检查数据的完全解密的高速缓存行是否有损坏。
示例40可以是示例39,其中,为了促进检查数据的完全解密的高速缓存行是否有损坏,还可以使得存储器控制器计算用于数据的高速缓存行的完整性检查值。
示例41可以是示例40,其中,多个不同类型的选择器{s1,s2,...}可以包括密钥域选择器;并且其中,还可以使得存储器控制器仅基于仅依赖于密钥域选择器的数据的加密的高速缓存行和数据的比特来计算用于数据的高速缓存行的完整性检查值。
示例42可以是示例40,其中,还可以使得存储器控制器仅基于所加密的数据的比特来计算用于数据的高速缓存行的完整性检查值。
示例43可以是一种用于提供存储器完整性的装置,包括:用于响应于写入操作或恢复操作在将数据的一个或多个单元存储到存储器中之前对要存储在存储器中的数据的一个或多个单元进行加密的单元;包括用于使用基于多个不同类型的选择器{s1,s2,...}的多个微调来在多个加密阶段中对数据的一个或多个单元进行连续加密的单元。
示例44可以是示例43,还包括用于响应于读取操作、移动操作或复制操作而对数据的多次加密的单元中的一个或多个多次加密的单元进行部分解密、完全解密或伪解密的单元,包括用于使用至少基于多个不同类型的选择器{s1,s2,...}中的一个或多个选择器的子集的一个或多个微调来在一个或多个解密阶段中对数据的多次加密的单元中的一个或多个多次加密的单元进行部分解密、完全解密或伪解密的单元。
对于本领域技术人员而言显而易见的是,在不脱离本公开内容的精神或范围的情况下,可以在所公开的设备和相关联的方法的所公开的实施例中进行各种修改和变型。因此,本公开内容旨在覆盖以上公开的实施例的修改和变型,只要修改和变型落入任何权利要求及其等同物的范围内。

Claims (24)

1.一种用于提供存储器完整性的装置,包括:
多个阶段,其分别包括对应的多个加密引擎,所述加密引擎用于响应于写入操作或恢复操作,在将数据的一个或多个单元存储到存储器中之前,对要存储在所述存储器中的所述数据的一个或多个单元进行加密;其中,为了对所述数据的一个或多个单元中的每个单元进行加密,所述加密引擎使用基于多个不同类型的选择器{s1,s2,...}的多个微调来在多个加密阶段中对所述数据的一个或多个单元中的每个单元进行连续加密,其中,所述多个不同类型的选择器包括密钥域选择器和空间选择器,
其中,为了响应于写入操作或恢复操作而在多个加密阶段中对所述数据的一个或多个单元中的每个单元进行加密,所述加密引擎中的第一加密引擎使用基于所述密钥域选择器的第一微调来在第一加密阶段中对所述数据的一个或多个单元中的一个单元进行加密,以生成数据的对应的一次加密的单元,并且所述加密引擎中的第二加密引擎使用基于所述空间选择器的第二微调来在第二加密阶段中对所述数据的一次加密的单元进行加密,以生成数据的对应的两次加密的单元。
2.如权利要求1所述的装置,其中,所述空间选择器与其中要存储所述数据的多次加密的单元的、所述存储器的存储器位置的物理地址相关联。
3.如权利要求1所述的装置,其中,所述第一加密引擎和所述第二加密引擎分别包括第一块密码和第二块密码。
4.如权利要求3所述的装置,其中,所述第一块密码或所述第二块密码包括高级加密标准(AES),具有密文窃取块的基于异或-加密-异或的微调的码本模式密码。
5.如权利要求3所述的装置,其中,所述第一块密码包括高级加密标准(AES)电子码本(ECB)块密码。
6.如权利要求1所述的装置,其中,所述多个阶段还包括:
在所述多个阶段中的一个或多个阶段中一个或多个解密引擎响应于读取操作、移动操作或复制操作而对数据的多次加密的单元中的一个或多个多次加密的单元进行部分解密、完全解密或伪解密;其中,所述一个或多个解密引擎使用至少基于所述多个不同类型的选择器{s1,s2,...}中的一个或多个选择器的子集的一个或多个微调来在一个或多个解密阶段中对所述数据的多次加密的单元中的一个或多个多次加密的单元进行部分解密、完全解密或伪解密。
7.如权利要求6所述的装置,其中,响应于由与所述存储器耦合的处理器执行的读取操作,所述一个或多个解密引擎对所述数据的一个或多个多次加密的单元中的一个多次加密的单元进行完全解密;其中,为了在一个或多个解密阶段中对所述数据的一个或多个多次加密的单元中的所述一个多次加密的单元进行完全解密,所述一个或多个解密引擎中的第一解密引擎使用基于空间选择器的第一微调来在第一解密阶段中对所述数据的一个多次加密的单元进行解密,以生成数据的部分解密的单元,并且所述一个或多个解密引擎中的第二解密引擎使用基于密钥域选择器的第二微调来在第二解密阶段中对所述数据的部分解密的单元进行解密,以生成明文形式的所述数据的单元。
8.如权利要求6所述的装置,其中,所述存储器被视为组织成页面,其中,每个页面具有多个数据的多次加密的单元,并且其中,响应于用于将存储器页面调出到所述存储器外的移动操作,所述一个或多个解密引擎对所述多个数据的多次加密的单元进行部分解密,其中,所述存储器页面存储了多个数据的多次加密的单元;其中,为了在一个或多个解密阶段中对所述多个数据的多次加密的单元中的每个多次加密的单元进行部分解密,所述一个或多个解密引擎中的一个解密引擎使用基于空间选择器的微调来在解密阶段中对所述多个数据的多次加密的单元中的每个多次加密的单元进行解密,以生成数据的对应的部分解密的单元;其中,用于生成数据的不同的对应的部分解密的单元的所述微调是不同的。
9.如权利要求8所述的装置,其中,所述一个或多个解密引擎响应于用于绕开附加解密的绕开命令的接收而在部分解密的数据的生成之后停止进一步解密。
10.如权利要求6所述的装置,其中,响应于用于将虚拟机从所述装置或具有所述装置的计算设备进行迁移的移动操作,所述一个或多个解密引擎对多个多次加密的数据进行部分解密或伪解密,其中,所述多个多次加密的数据与所述虚拟机相关联。
11.如权利要求6所述的装置,其中,响应于读取操作,所述一个或多个解密引擎对所述数据的多次加密的单元中的一个或多个多次加密的单元进行部分解密或伪解密,以在具有所述存储器的直接存储器存取(DMA)的设备上创建数据的所述一个或多个多次加密的单元的副本,其中,所述读取操作与由所述设备进行的对所述数据的一个或多个多次加密的单元的DMA相关联。
12.如权利要求6所述的装置,其中,为了响应于写入操作而在多个加密阶段中对所述数据的一个或多个单元进行加密,所述加密引擎中的第一加密引擎使用基于第一密钥域选择器的第一微调来在第一加密阶段中对所述数据的一个或多个单元中的一个单元进行加密,以生成数据的一次加密的单元,并且所述加密引擎中的第二加密引擎使用基于空间选择器的第二微调来在第二加密阶段中对所述数据的一次加密的单元进行加密,以生成数据的两次加密的单元;
其中,所述存储器被视为组织成页面,其中,每个页面具有多个数据的多次加密的单元,并且所述一个或多个解密引擎在响应于将存储器页面调出所述存储器的分页事件而将多个数据的两次加密的单元从所述存储器进行移动时,对多个数据的多次加密的单元进行伪解密,其中,所述存储器页面存储了多个多次加密的数据;并且
其中,为了在所述多个解密阶段中对所述多个数据的两次加密的单元进行伪解密,多个解密引擎中的第一解密引擎使用基于所述空间选择器的所述第二微调来在第一解密阶段中对所述多个数据的两次加密的单元中的每个两次加密的单元进行解密,以生成数据的对应的部分解密的单元,并且所述多个解密引擎中的第二解密引擎使用基于第二密钥域选择器的第三微调来在第二解密阶段中对所述数据的对应的部分解密的单元进行伪解密,以生成数据的对应的伪解密的单元;其中,用于所述多个数据的每对两次加密的单元和部分解密的单元的所述第一微调和所述第二微调是不同的。
13.如权利要求12所述的装置,其中,所述空间选择器是第一空间选择器;其中,响应于恢复操作而对要存储在存储器中的所述数据的多个单元进行加密是响应于恢复操作而在多个加密阶段中对所述多个数据的伪解密的单元进行加密,将具有所述多个数据的伪解密的单元的所调出的存储器页面恢复到所述存储器中;并且其中,为了在多个加密阶段中对多个伪解密的数据进行加密,所述加密引擎中的所述第一加密引擎使用基于所述第二密钥域选择器的所述第三微调来在所述第一加密阶段中对所述多个数据的伪解密的单元中的每个伪解密的单元进行加密,以生成数据的对应的一次加密的单元,并且所述加密引擎中的所述第二加密引擎使用基于第二空间选择器的第四微调来在所述第二加密阶段中对所述数据的对应的一次加密的单元进行加密,以生成数据的对应的新的两次加密的单元;其中,用于所述多个数据的每对伪解密的单元和所述一次加密的单元的所述第三微调和所述第四微调是不同的。
14.如权利要求1-13中任一项所述的装置,其中,所述装置是托管在存储器控制器中的。
15.如权利要求1-13中任一项所述的装置,其中,所述多个阶段中的最后阶段被设置在存储器控制器中,并且所述多个阶段中的在所述最后阶段之前的一个或多个阶段被设置在所述存储器控制器外部。
16.如权利要求15所述的装置,其中,所述多个阶段中的在所述最后阶段之前的所述一个或多个阶段中的一个阶段被设置在高速缓存或与所述存储器控制器耦合的处理器中。
17.一种用于计算的装置,包括:
易失性存储器;
处理器,其具有一个或多个核心以及一个或多个级别的高速缓存;
存储器控制器,其与所述易失性存储器和所述处理器耦合,用于控制所述易失性存储器;以及
多阶段存储器完整性布置,其包括多个阶段,具有:
多个加密引擎,其对应地设置在所述多个阶段处,用于响应于写入操作或恢复操作,在将数据的一个或多个高速缓存行存储到存储器中之前,对要存储在所述存储器中的所述数据的一个或多个高速缓存行进行加密;其中,为了对所述数据的一个或多个高速缓存行中的一个高速缓存行进行加密,所述加密引擎使用基于多个不同类型的选择器{s1,s2,...}的多个微调来在多个加密阶段中对所述数据的所述一个高速缓存行进行连续加密,其中,所述多个不同类型的选择器包括密钥域选择器和空间选择器;以及
一个或多个解密引擎,其对应地设置在所述多个阶段中的一个或多个阶段处,用于响应于读取操作、移动操作或复制操作而对所述数据的多次加密的高速缓存行中的一个或多个多次加密的高速缓存行进行部分解密、完全解密或伪解密;其中,所述一个或多个解密引擎使用至少基于所述多个不同类型的选择器{s1,s2,...}中的一个或多个选择器的子集的一个或多个微调来在一个或多个解密阶段中对所述数据的一个或多个多次加密的高速缓存行中的每个多次加密的高速缓存行进行部分解密、完全解密或伪解密。
18.如权利要求17所述的装置,其中,所述存储器控制器还检查数据的完全解密的高速缓存行是否有损坏。
19.如权利要求18所述的装置,其中,为了促进检查数据的完全解密的高速缓存行是否有损坏,所述存储器控制器还计算用于所述数据的高速缓存行的完整性检查值。
20.如权利要求19所述的装置,其中,所述多个不同类型的选择器{s1,s2,...}包括密钥域选择器;并且其中,所述存储器控制器仅基于仅依赖于所述密钥域选择器的所述数据的加密的高速缓存行以及所述数据的比特来计算用于所述数据的高速缓存行的所述完整性检查值。
21.如权利要求19所述的装置,其中,所述存储器控制器仅基于所述数据的加密的高速缓存行的比特来计算用于所述数据的高速缓存行的所述完整性检查值。
22.如权利要求17所述的装置,其中,所述多个不同类型的选择器{s1,s2,...}包括密钥域选择器;并且其中,所述存储器控制器被提供有用于生成密钥域选择器的与另一装置相同的密钥,其中,虚拟机在两个装置之间是自由迁移的。
23.一种用于提供存储器完整性的方法,包括:
响应于写入操作或恢复操作,在将数据的一个或多个高速缓存行存储到存储器中之前,由计算设备对要存储在所述存储器中的所述数据的一个或多个高速缓存行进行加密;
其中,对所述数据的高速缓存行进行加密包括使用基于多个不同类型的选择器{s1,s2,...}的多个微调来在多个加密阶段中对所述数据的高速缓存行进行连续加密;并且
其中,所述多个不同类型的选择器包括密钥域选择器和空间选择器,
其中,在多个加密阶段中对所述数据的高速缓存行进行连续加密包括:使用基于所述密钥域选择器的第一微调来在第一加密阶段中对所述数据的高速缓存行进行第一加密,以生成数据的对应的一次加密的高速缓存行,并且使用基于所述空间选择器的第二微调来在第二加密阶段中对数据的一次加密的高速缓存行进行第二加密,以生成数据的对应的两次加密的高速缓存行。
24.如权利要求23所述的方法,还包括:
响应于读取操作、移动操作或复制操作,由所述计算设备对所述数据的多次加密的高速缓存行中的一个或多个多次加密的高速缓存行进行部分解密、完全解密或伪解密;
其中,部分解密、完全解密或伪解密包括使用至少基于所述多个不同类型的选择器{s1,s2,...}中的一个或多个选择器的子集的一个或多个微调来在一个或多个解密阶段中对所述数据的多次加密的高速缓存行进行部分解密、完全解密或伪解密。
CN201780049228.1A 2016-09-13 2017-08-08 多阶段存储器完整性方法和装置 Active CN109564553B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/263,962 2016-09-13
US15/263,962 US10346318B2 (en) 2016-09-13 2016-09-13 Multi-stage memory integrity method and apparatus
PCT/US2017/045960 WO2018052577A1 (en) 2016-09-13 2017-08-08 Multi-stage memory integrity method and apparatus

Publications (2)

Publication Number Publication Date
CN109564553A CN109564553A (zh) 2019-04-02
CN109564553B true CN109564553B (zh) 2023-10-31

Family

ID=61560806

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780049228.1A Active CN109564553B (zh) 2016-09-13 2017-08-08 多阶段存储器完整性方法和装置

Country Status (4)

Country Link
US (1) US10346318B2 (zh)
CN (1) CN109564553B (zh)
DE (1) DE112017004609T5 (zh)
WO (1) WO2018052577A1 (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180219674A1 (en) * 2017-01-06 2018-08-02 Microsoft Technology Licensing, Llc Successive cryptographic techniques
US10154016B1 (en) * 2017-06-12 2018-12-11 Ironclad Encryption Corporation Devices for transmitting and communicating randomized data utilizing sub-channels
US11048644B1 (en) * 2017-12-11 2021-06-29 Amazon Technologies, Inc. Memory mapping in an access device for non-volatile memory
KR20190075363A (ko) * 2017-12-21 2019-07-01 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 모듈
GB201807612D0 (en) * 2018-05-10 2018-06-27 Rolls Royce Plc Structured file encryption process
US11630920B2 (en) * 2018-06-29 2023-04-18 Intel Corporation Memory tagging for side-channel defense, memory safety, and sandboxing
US10904001B2 (en) * 2019-05-24 2021-01-26 Tokenex, Inc. Data format-preserving encryption, tokenization, and access control for vaultless systems and methods
US11165557B2 (en) * 2019-06-19 2021-11-02 Facebook Technologies, Llc Encryption engine having randomized round scheduling to prevent side channel attacks
KR20210048698A (ko) * 2019-10-24 2021-05-04 삼성에스디에스 주식회사 암복호화를 위한 장치 및 방법
CN111901115B (zh) * 2020-07-27 2022-03-18 合肥工业大学 一种多配置模式的simon算法加密电路
CN111988132A (zh) * 2020-08-10 2020-11-24 上海中通吉网络技术有限公司 自动加解密装置、方法、设备和存储介质
CN113113072B (zh) * 2021-03-31 2024-02-06 上海华虹宏力半导体制造有限公司 芯片测试中载入trim值的方法
CN115480708B (zh) * 2022-10-11 2023-02-28 成都市芯璨科技有限公司 一种分时复用局部存储器访问的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101141257A (zh) * 2006-09-07 2008-03-12 国际商业机器公司 用于保持加密密钥完整性的方法、密码单元和存储驱动器
CN102546149A (zh) * 2012-01-16 2012-07-04 华南理工大学 一种密码芯片系统及密钥提取方法

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5696823A (en) 1995-03-31 1997-12-09 Lucent Technologies Inc. High-bandwidth encryption system with low-bandwidth cryptographic modules
US6076097A (en) 1997-12-11 2000-06-13 At&T Corp. System and method for generating random numbers
DE10124139A1 (de) 2001-05-17 2002-11-21 Philips Corp Intellectual Pty Verfahren und Vorrichtung zur Sicherung der Datenübertragung zwischen einem Zentralprozessor und einem Speicher
JP2003023421A (ja) * 2001-07-09 2003-01-24 C4 Technology Inc 暗号方法、そのプログラム、そのプログラムを記録した記録媒体および暗号装置並びに復号方法および復号装置
US7260215B2 (en) * 2001-09-04 2007-08-21 Portauthority Technologies Inc. Method for encryption in an un-trusted environment
US6678828B1 (en) 2002-07-22 2004-01-13 Vormetric, Inc. Secure network file access control system
US7739577B2 (en) 2004-06-03 2010-06-15 Inphase Technologies Data protection system
US20060015753A1 (en) 2004-07-15 2006-01-19 International Business Machines Corporation Internal RAM for integrity check values
US8036377B1 (en) * 2006-12-12 2011-10-11 Marvell International Ltd. Method and apparatus of high speed encryption and decryption
US8020070B2 (en) 2007-12-05 2011-09-13 Aquantia Corporation Trapping set decoding for transmission frames
US8713330B1 (en) 2008-10-30 2014-04-29 Apple Inc. Data scrambling in memory devices
US9331717B2 (en) 2009-02-27 2016-05-03 Blackberry Limited Forward error correction decoding avoidance based on predicted code block reliability
US9773431B2 (en) * 2009-11-10 2017-09-26 Maxim Integrated Products, Inc. Block encryption security for integrated microcontroller and external memory system
JP5365750B2 (ja) * 2011-01-31 2013-12-11 日本電気株式会社 ブロック暗号化装置、復号装置、暗号化方法、復号方法およびプログラム
US8862902B2 (en) * 2011-04-29 2014-10-14 Seagate Technology Llc Cascaded data encryption dependent on attributes of physical memory
JP5700481B2 (ja) * 2011-06-29 2015-04-15 インテル・コーポレーション 整合性チェック及びリプレーアタックからの保護を行って、メモリを暗号化するための方法及び装置
JP6007975B2 (ja) * 2012-04-24 2016-10-19 日本電気株式会社 フォーマット保存暗号化装置、方法およびプログラム、復号化装置、方法およびプログラム
US9461815B2 (en) * 2013-10-18 2016-10-04 Advanced Micro Devices, Inc. Virtualized AES computational engine
US9213653B2 (en) 2013-12-05 2015-12-15 Intel Corporation Memory integrity
US9910790B2 (en) * 2013-12-12 2018-03-06 Intel Corporation Using a memory address to form a tweak key to use to encrypt and decrypt data
JP6552184B2 (ja) * 2014-01-14 2019-07-31 キヤノン株式会社 情報処理装置およびその方法
US9405919B2 (en) * 2014-03-11 2016-08-02 Qualcomm Incorporated Dynamic encryption keys for use with XTS encryption systems employing reduced-round ciphers
KR102263880B1 (ko) * 2014-06-19 2021-06-11 삼성전자주식회사 호스트 컨트롤러 및 시스템-온-칩
KR101593169B1 (ko) * 2014-08-20 2016-02-15 한국전자통신연구원 페이스텔 구조의 가변길이 블록암호 장치 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101141257A (zh) * 2006-09-07 2008-03-12 国际商业机器公司 用于保持加密密钥完整性的方法、密码单元和存储驱动器
CN102546149A (zh) * 2012-01-16 2012-07-04 华南理工大学 一种密码芯片系统及密钥提取方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"Double image encryption based on phase–amplitude mixed encoding and multistage phase encoding in gyrator transform domains";Qu Wang等;《Optics & Laser Technology》;20130630;第48卷;第267-279页 *
"基于FPGA的Twofish加/解密芯片设计";李佳等;《计算机工程》;20090531;第35卷(第9期);第169-170、173页 *

Also Published As

Publication number Publication date
DE112017004609T5 (de) 2019-07-11
US20180074975A1 (en) 2018-03-15
WO2018052577A1 (en) 2018-03-22
CN109564553A (zh) 2019-04-02
US10346318B2 (en) 2019-07-09

Similar Documents

Publication Publication Date Title
CN109564553B (zh) 多阶段存储器完整性方法和装置
US11775447B2 (en) System, apparatus and method for page granular, software controlled multiple key memory encryption
US10235304B2 (en) Multi-crypto-color-group VM/enclave memory integrity method and apparatus
US20220083366A1 (en) Technologies for memory replay prevention using compressive encryption
US10896267B2 (en) Input/output data encryption
US20120260106A1 (en) System and method for binary layout randomization
US20170132158A1 (en) Protecting a memory from unauthorized access
US20110252234A1 (en) System and method for file-level data protection
US11308241B2 (en) Security data generation based upon software unreadable registers
JP6109441B1 (ja) ラウンド削減型暗号を採用するxts暗号化システムとともに使用するための動的暗号化鍵
CN110347432B (zh) 处理器、分支预测器及其数据处理方法、分支预测方法
JP2018520594A (ja) 制御された暗号化鍵管理によるソフトウェアモジュールの分離
CN115758420A (zh) 文件访问控制方法、装置、设备及介质
US20200356285A1 (en) Password protected data storage device and control method for non-volatile memory
WO2019184741A1 (zh) 应用程序信息的存储、处理方法及装置
KR101999209B1 (ko) 가상 함수 테이블 포인터 암호화 시스템 및 그 방법
US20220100907A1 (en) Cryptographic computing with context information for transient side channel security
US9838199B2 (en) Initialization vectors generation from encryption/decryption
TW202001564A (zh) 用以存取資料的方法以及相關電路
US8046593B2 (en) Storage device controlled access
CN110516468B (zh) 一种虚拟机内存快照加密的方法和装置
CN113536331B (zh) 存储器和计算系统的数据安全
WO2021044578A1 (ja) 情報処理装置、情報処理方法、及び情報処理プログラム
GB2376775A (en) Data protection by address re-mapping and encryption

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