CN107430555B - 用于存储器保护的高速缓存和数据组织 - Google Patents
用于存储器保护的高速缓存和数据组织 Download PDFInfo
- Publication number
- CN107430555B CN107430555B CN201680011017.4A CN201680011017A CN107430555B CN 107430555 B CN107430555 B CN 107430555B CN 201680011017 A CN201680011017 A CN 201680011017A CN 107430555 B CN107430555 B CN 107430555B
- Authority
- CN
- China
- Prior art keywords
- data
- memory
- counter
- cache
- metadata
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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
- G06F21/79—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 in semiconductor storage media, e.g. directly-addressable memories
-
- 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
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)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Storage Device Security (AREA)
Abstract
本公开涉及用于存储器保护的高速缓存和数据组织。可以通过在提供对加密数据的存储器保护的同时组织高速缓存和/或数据结构来加快设备中的存储器保护操作。示例设备可以包括处理模块和存储器模块。处理模块可以包括存储器加密引擎(MEE),所述存储器加密引擎用于对从所述存储器模块加载的加密数据进行解密、或者使用存储在所述存储器模块中的安全元数据在同样存储于所述存储器模块中之前对明文数据进行加密。示例安全元数据可以包括版本(VER)数据、存储器认证码(MAC)数据和计数器数据。与本公开一致,与所述MEE相关联的高速缓存可以被分区以将所述VER和MAC数据与计数器数据分开。数据组织可以包括:包括对应于同一数据线中特定数据的所述VER和MAC数据。
Description
技术领域
本公开涉及数据安全,并且更具体地涉及可以通过高速缓存分区和/或数据组织来实现加快存储器保护的设备。
背景技术
随着越来越多的日常交易变得电子化,电子数据安全已经成为开发的重点。计算设备不断被用来交换金融数据、个人标识数据等。因此,黑客可能企图损害计算设备以访问这种有价值的信息。例如,恶意软件(例如,恶意程序)可能会被加载以被动或主动地攻击计算设备。被动攻击可包括:恶意程序观察在处理器与存储器之间传递的数据,以获取密码或其他敏感或机密数据。主动攻击可涉及改变存储器中所存储的数据以触发非典型结果,如允许未经许可的用户访问计算设备。在任一实例中,计算设备的存储器中的与计算设备中的处理器进行交换的明文(未加密)数据等是主要的漏洞。
设备制造商、部件制造商、软件开发商等继续努力开发对抗漏洞的保护措施。基于软件的恶意程序检测和消除解决方案通常在计算设备中的操作系统(OS)的特权级别下运行。这些解决方案可以有效抵御较低权限的攻击,但可能无法对抗像根程序病毒包(rootkit)那样的较高权限的恶意程序。现在正在出现一些基于硬件的保护解决方案,这些保护解决方案在启动计算设备的过程中很早就实行,并且因此可能会甚至在恶意程序活动之前建立保护措施。已知良好的保护固件可能会在启动期间早期加载,所述保护固件可以执行各种功能,例如检查后续加载的软件是否与已知良好的版本相适合、建立存储器的保护区,其中可以保护数据免受敌意软件的访问等。尽管这些保护措施的益处可能是显而易见的,硬件保护系统可能引入的至少一个问题是非常低水平的额外处理开销导致例如计算设备的整体性能较慢。
附图说明
所要求保护的主题的各种实施例的特征和优点将随着以下具体实施方式进行并且通过参照附图变得明显,其中,相同的数字指代相同的部件,并且在附图中:
图1展示了根据本公开的至少一个实施例的包括用于存储器保护的高速缓存和数据组织的示例设备;
图2展示了根据本公开的至少一个实施例可用的设备的示例配置;
图3展示了根据本公开的至少一个实施例的与读取数据相关联的攀树(treewalk)的示例;
图4展示了根据本公开的至少一个实施例的与写入数据相关联的攀树的示例;
图5展示了根据本公开的至少一个实施例的现有的高速缓存和数据组织以及改进的高速缓存和数据组织的示例;
图6展示了根据本公开的至少一个实施例的用于存储器保护的示例操作。
虽然以下具体实施方式将参考说明性实施例进行,但是许多替代方案、修改及其变体将对本领域的技术人员而言是明显的。
具体实施方式
本公开涉及用于存储器保护的高速缓存和数据组织。总体上,可以通过在仍然对加密数据提供存储器保护的同时组织高速缓存和/或数据结构来加快设备中的存储器保护操作(例如,变得更快)。示例设备可以至少包括处理模块和存储器模块。处理模块可以包括存储器加密引擎(MEE),所述存储器加密引擎用于对从所述存储器模块加载的加密数据进行解密、或者使用存储在所述存储器模块中的安全元数据在同样存储于所述存储器模块中之前对明文数据进行加密。所述安全元数据可以包括版本(VER)数据、存储器认证码(MAC)数据和计数器数据。与本公开一致,与所述MEE相关联的高速缓存可以被分区以将所述VER和MAC数据与计数器数据分开。将VER和MAC数据与计数器数据分开可以增加用于在MEE高速缓存中定位数据的成功率,减少从存储器加载的安全元数据量,并且提高整体数据处理性能。数据组织可以包括:例如,包括对应于同一数据线中的特定数据的VER和MAC数据,这可以减少存储器保护所需的读取数量,从而可以提高数据处理性能。
在至少一个实施例中,包括存储器保护的示例设备可以包括存储器模块和处理模块。处理模块可以至少包括MEE,所述MEE用于进行以下各项中的至少一项:使用从所述存储器模块加载的安全元数据对从所述存储器模块加载的加密数据进行解密;或者使用所述安全元数据在存储于所述存储器模块中之前对明文数据进行加密。MEE至少包括用于保持所述安全元数据的分区高速缓存。
在至少一个实施例中,所述处理模块可以包括用于处理所述明文数据的至少一个处理核、以及用于在处理过程中保持所述明文数据的至少一部分的至少一个核高速缓存。例如,所述至少一个处理核可以用于从MEE接收所述经解密的数据,并且在存储于所述存储器模块中之前将所述明文数据提供给MEE以便进行加密。MEE可以用于对所述加密数据进行解密并且使用计数器模式加密来对所述明文数据进行加密。所述安全元数据可以至少包括与所述加密数据或明文数据相对应的MAC数据、VER数据和计数器数据。就此而言,MEE可以进一步用于至少使用所述MAC数据来认证从所述存储器模块加载的所述加密数据、并且至少使用所述计数器数据来认证所述VER数据。例如,MEE高速缓存可以包括用于保持VER和MAC数据的第一分区。就此而言,MEE可以进一步用于确定存在于所述第一分区中的版本数据已经被认证。MEE高速缓存还可以包括用于保持计数器数据的第二分区。
在至少一个实施例中,MAC和VER数据可以被存储在数据线中,所述数据线在单次读取操作中可从所述存储器模块加载到所述第一分区中。与本公开一致,能够对数据进行加密和解密的设备的替代配置可以包括例如存储器模块和处理模块,所述处理模块至少包括MEE,所述MEE用于进行以下各项中的至少一项:使用从所述存储器模块加载的安全元数据对从所述存储器模块加载的加密数据进行解密;或者使用所述安全元数据在存储于所述存储器模块中之前对明文数据进行加密,其中,所述安全元数据至少包括与存储于数据线中的所述加密数据或明文数据相对应的MAC数据和VER数据,所述数据线在单次读取操作中可从所述存储器模块加载。MEE可以进一步包括用于保持所述安全元数据的高速缓存。高速缓存可以包括用于保持MAC和VER数据的第一分区。安全元数据可以进一步包括计数器数据,并且高速缓存可以进一步包括用于保持所述计数器数据的第二分区。例如,MEE可以用于至少使用所述MAC数据来认证从所述存储器模块加载的所述加密数据、并且至少使用所述计数器数据来认证所述VER数据。与本公开一致,一种用于存储器保护的方法可以例如包括:接收用于对从存储器模块加载的加密数据进行解密或用于对待存储在所述存储器模块中的明文数据进行加密的请求;判定与所述加密数据或明文数据相对应的安全元数据是否已经存在于分区高速缓存中;以及如果确定了所述安全元数据已经存在于所述分区高速缓存中,则使用所述安全元数据来对所述加密数据进行解密或对所述明文数据进行加密。
图1展示了根据本公开的至少一个实施例的包括用于存储器保护的高速缓存和数据组织的示例设备。最初,在描述与本公开一致的各种实施例时,可以参考诸如由英特尔公司开发的软件防护扩展(Software Guard Extensions:SGX)、可能组成SGX的组件以及SGX可能运行的方式的技术。SGX已经被本文中采用以提供用于理解各个公开的实施例的可容易理解的观点,并且不旨在将实施方式限于仅采用SGX。此外,如本文所提及的,“存储器保护”总体上可以包括通过加密、完整性和/或重放保护来保护数据的机密性。完整性保护可以防御攻击,其中例如攻击者可以在解密之前修改存储器中的加密数据。重放保护可以防止攻击,其中例如攻击者导致解密操作被重复以获得对受保护数据的未经授权的访问。这些概念将在图3和图4中进行更详细的讨论。
图1中公开了设备100的示例配置。设备100的示例可以包括但不限于:基于来自谷歌公司的OS、来自苹果公司的或Mac来自微软公司的OS、来自Linux基金会的OS、来自Mozilla项目的OS、来自黑莓公司的OS、来自Hewlett-Packard公司的OS、来自Symbian基金会的OS等的移动通信设备,诸如蜂窝手持机或智能电话;移动计算设备,诸如来自苹果公司的来自微软公司的来自三星公司的Galaxy来自亚马逊公司的等的平板计算机;包括来自英特尔公司的低功率芯片组的上网本、笔记本、膝上型计算机、掌上型计算机等;通常固定的计算设备,诸如台式计算机、服务器、智能电视、小形状因子计算解决方案(例如,适用于空间有限的应用、TV机顶盒等),像来自英特尔公司的下一代计算单元(NUC)平台等。
示例设备100可以至少包括处理模块102和存储器模块104。总体上,处理模块102可以从存储器模块104接收带处理的数据,并且可以将已处理的数据返回到存储器模块104。在至少一个实施例中,可以保护存储器模块104中的数据。在一个示例实施方式中,设备100可以利用SGX来至少保护存储器模块104的一部分。SGX可以在系统存储器内提供安全的硬件加密的计算和存储区域,无法通过特权代码或者甚至通过将硬件探头应用于存储器总线来解密其内容。当存储器模块104被SGX保护时,入侵者不可能读取安全区域的内容。受保护数据无法在SGX之外观察,并且由此,不可在SGX之外访问。特别地,可以在每个程序内部对程序的身份(例如,基于每个程序的内容的密码散列测量结果)进行签名和存储。当之后对所述程序进行加载时,处理模块102可以验证所述程序的当前测量结果与先前嵌入在所述程序内部的测量结果相同。因为处理模块102可以提供有用于在程序加载时间验证签名的公钥,所以用于对嵌入式测量结果进行签名的签名也是可验证的。恶意程序无法篡改受保护的程序,因为其测量结果也会被更改。恶意软件也无法假冒所述签名,因为所述签名密钥与所述程序的作者是安全的。以下将关于处理模块102和存储器模块104进行描述的元件可以用于实现设备100中的如同SGX的安全技术。然而,与本公开一致,还可以使用现在存在的或将来开发的其他安全技术。
如图1所示,处理模块102可以包括例如至少一个处理核106(例如,核106A、核106B...核心106n,统称为“核106A...n”)、核高速缓存108、存储器控制器110以及MEE 112。核106A...n可以执行可利用存储在核高速缓存108中的数据的各种数据处理操作。如本文所述,“高速缓存”可以包括用于保持在数据处理操作过程中可利用的数据的本地易失性存储器。在至少一个实施例中,核高速缓存108可以包括按级别组织的多个分开的存储器区域,其中最外层的级别(例如,从所述级别,数据可以发射到MEE逻辑114和从其接收)是最后一级高速缓存(LLC)。核高速缓存108可以通过避免从存储器模块104重复检索在数据处理操作过程中可能不止一次地使用的数据来帮助加速数据处理。存储器控制器110可以控制处理模块102如何可以访问存储器模块104,包括从存储器模块104读取数据并且将数据写入存储器模块104。例如,MEE 112可以包括用于执行存储器保护操作的MEE逻辑114、用于保持顶级计数器数据的MEE Ln计数器存储器116、以及用于至少在存储器保护操作过程中保持安全元数据126的MEE高速缓存118。一般地,安全元数据126可以包括用于支持存储器保护操作的数据。与本公开一致,核106A可以执行数据处理操作,需要通过诸如SGX的保护系统获得安全的数据。诸如存储器104中的加密数据线124A、加密数据线124B、加密数据线124C和加密数据线124D(统称为“加密数据线124A...D”)的受保护数据可以由MEE逻辑114检索,并且在提供给核106A之前被解密。图1仅示出了与单一数据线128中的VER和MAC数据相对应的四个加密数据线124A...D,然而,存储器模块104中的加密数据线124A...D的实际数量可以取决于各种因素,例如存储器模块104中的MEE保护的区域的大小。在至少一个示例实施方式中,每个数据线可以包括64B(字节)的数据,所述数据可以存储在存储器模块104的包括128MB的保护区域中。同样地,可以在存储于存储器模块104中之前,向MEE逻辑114提供由核106A生成的数据(其可以是敏感的、机密的等等)以便加密。以这种方式,可以防止监视处理模块102与存储器模块104之间正在交换的数据的攻击者确定某些数据(其可以是敏感的、机密的等等)的内容。
在至少一个实施例中,MEE逻辑114可以采用计数器模式加密,以便使用至少部分地存储在存储器模块104中的安全元数据126对核106A...n所需的加密数据(例如,加密数据线124A...D)进行解密、或对由核106A...n生成的明文数据进行加密。通过在待加密或解密的数据与基于种子生成的“cryptopad”之间执行异或(XOR)来操作计数器模式加密。例如:
Cryptopad=AESk(种子) (1)
加密=明文XOR Cryptopad (2)
其中AES是基于高级加密标准(Advanced Encryption Standard)的加密操作,并且k表示指定将种子转换成cryptopad的变换轮次的重复次数的密钥大小。计数器模式加密提供的保护主要取决于种子的唯一性。这允许数据相关的操作独立于与种子相关的加密操作进行,这可以提高总体存储器保护性能,因为这些操作可能并行发生。计数器模式加密要求种子在空间和时间上是唯一的。空间唯一性可以从数据的地址(例如,加密数据线124A)导出,作为种子的组成部分。时间唯一性可以通过将多个计数器与每个数据线相关联来实现,当数据线被存储时,这些计数器加一。当将数据线(例如,加密数据线124A)写入存储器模块104时,计数器的值可以被认为是版本(VER),其中当加密数据线124A从存储器模块104加载到处理模块102中时,计数器的值可用于验证VER数据的完整性。MAC和VER数据线128以及L0至Ln-1计数器128总体上在此被称为安全元数据126。在加密和解密操作过程中,MEE逻辑114可以使安全元数据126的至少一部分被加载到MEE高速缓存118中结合MEELN计数器存储器114以用于加密或解密。将关于图3-5更详细地描述安全元数据126和MEE Ln计数器存储器114的使用。
与本公开一致,图1中公开的示例包括至少两个不同的实施例,这些实施例可以单独地或协作地使用,以加快设备100中的加密和解密操作。首先,MEE高速缓存118可以被分区成包括例如含MAC和VER数据的第一分区120以及含计数器数据122的第二分区122。如将关于图5所描述的,使这些类型的安全元数据126分开可以增加在MEE高速缓存118中找到特定MAC和VER数据120的成功率(例如,对应于特定的加密数据线124A...D),消除从存储器模块104加载安全元数据的需求。不需要从存储器模块104加载数据可以增加存储器保护性能。此外,第二实施例可以包括创建数据线结构128,所述数据线结构包括均对应于特定数据线(例如,对应于图1所示的特定加密数据线124A...D)的VER数据和MAC数据。其结果是,对于每个存储器保护操作,可以从存储器模块104加载更少的数据线,这可以提高处理模块102中的存储器保护的性能,并且同样提高设备100的整体性能。
图2展示了根据本公开的至少一个实施例可用的设备的示例配置。在项目编号之后包括撇号(例如,100’)可以指示正在示出所述项目的示例实施例。例如,设备100’可以能够执行诸如在图1中所公开的任何活动。然而,设备100’仅呈现作为在与本公开一致的实施例中可用的设备的示例,并且并不旨在将这些不同实施例中的任一项限制到任何特定方式的实现方式。
设备100’可以包括例如用于管理设备的操作的系统模块200。系统模块200可以包括例如处理模块102’、存储器模块104’、电源模块202、用户接口模块204以及通信接口模块206。设备100’还可以包括通信模块208。虽然通信模块208被展示为与系统模块200分离,但是为了解释的目的,仅仅提供了图2中所示出的示例配置。还可以将与通信模块208相关联的功能中的一些或所有功能并入系统模块200中。
在设备100’中,处理模块102’可以包括位于分离组件中的一个或多个处理器、或者替代性地,在单个组件中(例如,在片上系统(SoC)配置中)中的一个或多个核106A...n以及任何处理器相关的支持电路(例如,桥接接口等)。示例处理器可以包括但不限于:可从英特尔公司获得的各种基于x86的微处理器,包括在奔腾(Pentium)、至强(Xeon)、安腾(Itanium)、赛扬(Celeron)、阿童木(Atom)、Quark(夸克)、核i系列产品家族、核M系列产品家族、高级RISC(例如,精简指令集计算)机器或“ARM”处理器等中的那些。支持电路的示例可以包括芯片组(例如,可从英特尔公司获得的北桥、南桥等),所述芯片组被配置为提供接口,处理模块102’可以通过所述接口与设备100’中的不同总线等上以不同速度操作的其他系统组件相互作用。此外,通常与支持电路相关联的功能中的一些或所有功能还可以包括在与处理器相同的物理封装体中(例如,如在可从英特尔公司获得的处理器的沙桥(SandyBridge)族中)。如图2所示,处理模块102’可以至少包括核106A...n、核高速缓存108、存储器控制器110、以及MEE 112。
处理模块102’可以被配置成用于执行设备100’中的各个指令。指令可以包括程序代码,所述程序代码被配置成用于使处理模块102’执行与读数据、写数据、处理数据、制定数据、转换数据、变换数据等相关的活动。信息(例如,指令、数据等)可以存储在存储器模块104’中。存储器模块104’可以包括固定或可移除格式的随机存取存储器(RAM)或只读存储器(ROM)。RAM可以包括被配置成用于在设备100’的操作过程中保持信息的易失性存储器,例如静态RAM(SRAM)或动态RAM(DRAM)。ROM可以包括基于BIOS、UEFI等被配置的用于在设备100’被激活时提供指令的非易失性(NV)存储器模块、诸如电子可编程ROM(EPROMS)的可编程存储器、闪存等。其他固定/可移除存储器可以包括但不限于:磁存储器(诸如例如,软盘、硬盘驱动器等)、电子存储器(诸如固态闪存(例如,嵌入式多媒体卡(eMMC))等)、可移除存储卡或可移除存储棒(例如,微型存储卡(uSD)、USB等)、光存储器(诸如基于致密盘的ROM(CD-ROM))、数字视频盘(DVD)、蓝光碟等。如图2所示,存储器模块104’可以至少包括加密数据线124A...D和安全元数据126(例如,VER和MAC数据线128以及L0至Ln-1计数器128)。
电源模块202可以包括内部电源(例如,电池、燃料电池等)和/或外部电源(例如,机电或太阳能发电机、电网、外部燃料电池等)、以及相关电路(被配置成用于为设备100’供应操作所需的电源)。用户接口模块204可以包括硬件和/或软件以便允许用户与设备100’(诸如例如,各种输入机构(例如,麦克风,开关,按钮,旋钮,键盘,扬声器,触敏表面,被配置成用于捕获图像和/或感测接近度、距离、运动、姿势、取向、生物测定数据的一个或多个传感器等)以及各种输出机构(例如,扬声器,显示器,发光/闪烁指示器,针对振动、运动的机电部件等)进行交互。用户接口模块204中的硬件可以并入设备100’内和/或可以经由有线或无线通信介质耦合至设备100’。用户接口模块204在某些情况下可以是任选的,例如,在设备100’是不包括用户接口模块204而是依赖于用于用户接口功能的另一设备(例如,管理终端)的服务器(例如,机架服务器、刀片服务器等)的情形下。
通信接口模块206可以被配置成用于对分组路由和通信模块208的其他控制功能进行管理,所述通信模块可以包括被配置成用于支持有线和/或无线通信的资源。在某些实例中,设备100’可以包括由集中通信接口模块206管理的多于一个的通信模块208(例如,包括针对有线协议和/或无线电台的分离物理接口模块)。有线通信可以包括串行和并行有线介质,例如以太网、USB、火线、雷电接口(Thunderbolt)、数字视频接口(DVI)、高清晰度多媒体接口(HDMI)等。例如,无线通信可以包括近距离无线介质(例如,诸如基于RF识别(RFID)或近场通信(NFC)标准、红外(IR)等)的射频(RF))、短程无线介质(例如,蓝牙、WLAN、Wi-Fi等)、远程无线介质(例如,蜂窝广域无线电通信技术、基于卫星的通信等)、经由声波的电子通信等。在一个实施例中,通信接口模块206可以被配置成用于防止在通信模块208中活动的无线通信免受彼此干扰。在执行此功能时,通信接口模块206可以基于例如等待传输的消息的相对优先级为通信模块208安排活动。虽然图2中所公开的实施例展示了通信接口模块206与通信模块208分离,但是将通信接口模块206和通信模块208的功能并入同一模块内还可以是可能的。
图3展示了根据本公开的至少一个实施例的与读取数据相关联的攀树(treewalk)的示例。给定其中设备100利用SGX的示例,MEE逻辑114可以包括至少两个机密保护机制:用于防御被动攻击的加密、以及用于防御主动攻击的完整性/重放保护。存储器加密被设计成用于防御一类硬件攻击,其中攻击者试图在进入和离开处理模块102时静默观察数据线。为了防御这些攻击,MEE逻辑114可以采用加密来保护存储器模块104(例如,存储器模块104中的MEE特定区域)。数据线在其移动到存储器模块104之前可以由MEE逻辑114(例如,片上)进行加密。对于从存储器模块104的读取,加密数据线124A...D可以在被传送到核106A...n之前被MEE逻辑114解密。
完整性和重放保护可以涉及再次防御对存储器模块104中的数据线的主动攻击。主动攻击可以涉及改变存储器模块104中存储的数据,以引发设备100中的否则将不会发生的活动。如图3所示,可以采用计数器树组织来保护完整性并且确保存储器模块104中的加密数据线124A...D的重放保护。示例计数器树可以包括VER和MAC数据线128,元数据节点L0304、LI 312和L2 318,以及顶级(例如,L3)计数器324。在图3的示例中,MAC 302可以与加密数据线124D相关联。当加密数据线124D被写回到存储器模块104时,可以更新MAC 302以反映当前存储在存储器中的加密数据线124D的内容的测量结果。当稍后从存储器读取加密数据线124D时,MEE逻辑114可以验证加密数据线124D的内容是否自最近基于MAC 302加载以来被编辑。利用MAC 302的认证在存储器模块104中保护加密数据线124D免受修改攻击,并且因此有助于确保数据完整性。
VER 300是当加密数据线124D最近存储在存储器模块104中时确定的加密数据线124D的基于计数器值的“版本”。每当加密数据线124D被写回到存储器时,VER 300可以加一。元数据节点L0 306、L1 312和L2 318可以包括计数器和基于计数器的值计算出的嵌入式MAC(eMAC)。例如,图3中所展示的突出显示的计数器308、314和320可以对应于加密数据线124D。此外,虽然eMAC在图3中被展示为存储为位于L0 306、L1 312和L2 318中的计数器之间的部段,但是所述实施方式是如何存储eMAC的示例。可以使用来自树中的下一更高级别的计数器作为输入来制定eMAC。这可以一直延续到根级或顶级L3计数器324,所述计数器可以安全地存储在处理模块102(例如,片上SRAM)中。L3计数器324可能永远不会从处理模块102中逐出,并且因此可以被保护免受攻击。本质上,每个节点L3 324、L2 318、L1 312和L0 306中的计数器可以充当用于以存储对应于加密数据线124A...D的VER 300的VER/MAC节点128结束的后续级别的版本。因此,当加密数据线124D被写入时,对应于加密数据线124D(包括L3计数器326和VER 300)的所有计数器被更新。因为使用节点中的所有计数器的值来计算eMAC,所以每个节点中的eMAC也被更新。为了确保重放保护,当从存储器模块104加载时,加密数据线124D可以基于利用VER 300制定的MAC 302进行认证。VER 300可以基于节点L0304、LI 310和L2316中的计数器一直到L3计数器322来进行认证。任何不匹配可能指示潜在的攻击,并且可能引起安全异常,从而击败攻击。
将L0 306、L1 312和/或L2 318加载到MEE高速缓存118中以便认证对应于加密数据线124D的VER 300可以被认为是“攀树”。图3中公开了示例攀树。图3中的“开始”指示攀树可以开始于检查MEE高速缓存118来判定VER 300是否已经存在。MEE高速缓存118中任何节点(例如,VER/MAC数据线128、L0 304、L1 310或L2 316)的存在都可以指示所述节点已经被认证(例如,在用于加密数据线124C的先前攀树中,对应于另一加密数据线124A...C等),并且攀树可以停止。如果VER 300被确定存在于MEE高速缓存118中,则可以使用VER 300来验证MAC 302,并且如果MAC 302被认证,则可以进行加密数据线124D的解密。如果VER 300被确定为未存在于MEE高速缓存118中,则攀树可以继续。
如果没有发现VER 300已经存在于MEE高速缓存118中,则VER/MAC数据线128可以被认证。认证可以包括计算VER/MAC数据线128上的MAC并且将新计算出的MAC与VER/MACeMAC 304进行比较。为了说明,MAC 302驻留在VER/MAC数据线128中,但是保护加密数据线124D,而V/M eMAC 304保护VER/MAC数据线128。计算用于VER/MAC数据线128的MAC可以涉及机密处理,其中,例如,可以基于加密数据线128的地址、下一更高节点(例如,L0节点306中的计数器308)的计数器值和AES密钥生成加密值,并且然后通过用所述数据线(例如,VER/MAC数据线128)中的所有计数器值对密码值进行散列来生成MAC值。当用于VER/MAC数据线128的新计算出的MAC被确定匹配V/M eMAC 304时,VER/MAC数据线128可以被认为是可信的。如果新计算出的MAC不匹配V/M eMAC 304,则可能出现安全异常。如本文所提及的,安全异常可以包括任何与安全相关的操作,所述操作可以介入以防止设备100的安全性被破坏,包括例如停止用于数据线(例如,加密数据线124D)的MEE加密和/或解密操作,限制对存储器模块104中的受保护存储器空间的访问,通知设备100中的其他系统等。
然后可以在将L0计数器值308用于计算VER/MAC数据线128的MAC时判定L0 304是否已经被加载在在MEE高速缓存118中。如果L0已经在所述高速缓存中,则L0可以被认为是验证过的(例如,可信的),并且攀树可以停止。否则,可能需要检查L0 306的可信性。验证L0306可以涉及利用来自L1 312的计数器值314来计算L0 306的MAC。如果新计算出的计数器值匹配L0 eMAC 310,则L0可以被认为是可信的。否则,如果新计算出的MAC不匹配L0 eMAC310,则可能发生安全异常。类似于L0 306,当使用L1计数器314时,可以判定L1 312是否已经在MEE高速缓存118中。如果L1已经在所述高速缓存中,则L1可以被认为是可信的,并且攀树可以停止。否则,可以利用L2 318中的计数器值320为L1 312计算新的MAC,并且可以将新的MAC与L1 eMAC 316进行比较。如果新的MAC匹配L1 eMAC 316,则L1可以被认为是可信的。如果新的MAC不匹配L1 eMAC 316,则可能触发安全异常。类似于前两个节点,然后可以判定L2 318是否已经在MME高速缓存118中。如果L2 318尚未在高速缓存中,则可以使用L3 324中的计数器值326来计算用于L2 318的MAC。如果新计算出的MAC匹配L2 eMAC 322,则攀树可以完成,并且VER 300可以被认为是验证过的。如果新计算出的MAC被确定为不匹配L2eMAC 322,则可能触发安全异常。
图4展示了根据本公开的至少一个实施例的与写入数据相关联的攀树的示例。在数据被加密并存储在存储器模块104(例如,作为加密数据线124D)的实例中,重放树中的每个节点必须加一(例如,节点中的所有计数器必须加一)。然而,在MEE高速缓存118中,可能会存在优化,其中攀树可以停止而不攀爬到L3 324,并且不必使所有相关联的重放树级别加一。通过阅读流程,攀树可以只是通过确定树级别已经存在于MEE 118高速缓存中而停止。然而,对于写入,只有在高速缓存中发现处于“修改”状态的节点时,爬树才会停止。在至少一个实施例中,在MEE高速缓存118中,每个节点L2 318、L1 312和L0 306可以维持用于指示其是否被先前请求写入的位。所述位被设定成可以指示MEE高速缓存118中的节点L2318、L1 312或L0 306的副本已被修改(例如,通过另一加密请求)。发现处于修改状态的高速缓存存储的节点指示先前的写入已经更新了树中的更高级别的节点,并且因此攀树不需要继续更高的级别来使节点加一。当经修改的节点被逐出MEE高速缓存118时,必须重新计算eMAC以反映正在写回到存储器模块104的最新数据。每次eMAC计算使用下一更高级别的计数器值并且通过与eMAC相对应的节点的内容计算eMAC。
在MEE高速缓存118中考虑经修改的节点的要求意味着必须遍历所有节点L2 318、L1 312或L0 306,直到确定节点已被修改为止。如图4所示,可以遍历从L0 306至L3 324的每个节点,寻找MEE高速缓存118中已修改的版本。如果在攀树过程中节点不位于MEE高速缓存118中,则可以将所述节点从存储器模块104加载到MEE高速缓存118中。在每个级别遍历中,所述节点加一。然而,如果确定修改了节点,则在经修改的节点加一之后,攀树停止。如果在MEE高速缓存118中没有发现经修改的节点,则爬树可以在L3 324中的计数器加一之后停止。正在写入存储器模块104的数据线使用已加一的VER 300进行加密。此外,VER 300可以用于重新计算MAC 304。然后可以将加密数据线124D存储在存储器模块104中。与正在写回到存储器模块104的数据线相对应的更新过的MAC 304将被存储在MEE高速缓存118中,直到在稍后的时间点被驱逐(例如,由于在高速缓存中的替换)。
图5展示了根据本公开的至少一个实施例的现有的高速缓存和数据组织以及改进的高速缓存和数据组织的示例。当线程数量(例如,由核106A...n操纵的处理任务)受限时,基于硬件的保护系统(例如,SGX)可以有效地运行。然而,实际的处理开销可能导致包括大量线程在数据服务器和基本上更大的服务应用工作集上运行的情况。例如,维护一致性能所需的附加带宽可能大于在没有保护系统的情况下处理相同数量的数据所需的带宽的七倍。其结果是,由于可转化为性能开销的过大带宽要求,现有的保护系统可能无法在服务器上实现。为了在各种平台上可获得保护,可以改进MEE逻辑114的带宽利用率,以便在诸如服务器的较大平台上实现。与本公开一致,对高速缓存和数据组织的优化可以允许显著的带宽节省,使得基于硬件的保护系统在较大的系统上实现实用。据预测,带宽开销可以降低多达60%(例如,平均47%),并且例如,与512千字节(KB)高速缓存相比,16KB高速缓存的效率可以提高30%,从而导致显著的裸片面积和相关联的功率节省。
使用诸如SGX之类的数据保护系统的设备中的带宽开销的至少一个贡献者是处理模块102必须从存储器模块104加载数据的频率的增加。“未命中流(miss stream)”可以是数据处理器不能在核高速缓存108中定位数据。大量的未命中流可以降低设备100的处理性能,因为每次未命中都必须从存储器模块104加载数据。在大型系统(例如,服务器)中来自核高速缓存108的未命中流具有非常少甚至没有空间局部性(例如,正在访问的数据的地址在存储器模块104内不是靠近排列的)。对于这种情况可能有不同的原因。例如,服务器中的核高速缓存108的大小可以是几MB,所述核高速缓存吸收更多的未命中(例如,因为在核高速缓存108中本地可获得更多的数据)、并且使来自核高速缓存108的最后一级的未命中流进一步随机化。此外,同时运行的大量线程可能在核高速缓存108中导致“颠簸”(例如,需要不断地从存储器模块104检索数据),颠簸有助于从核高速缓存108生成的未命中流更加随机化。
与本公开一致,MEE逻辑114对来自核高速缓存108的未命中流动进行操作。MEE逻辑114的效率可以基于到MEE逻辑114的未命中流将具有空间局部性的基本假设。在现有实施方式中,重放树中的每个节点都可以是具有用于八个连续数据线的计数器的元数据数据线。例如,VER 300高速缓存行可以将用于八个连续数据线的版本存储在受保护存储器中。所述版本行组织的示例显示在504处,并且在图5的示例500中的506处示出了类似的MAC行组织。当在数据线1的攀树过程中获取VER1时,如果具有数据线504中的版本的七个其他数据线也被访问(例如,数据线0和2到7,并且对应于VER0和VER2到VER7),他们将发现已经加载到MEE高速缓存118中的VER数据线504,并且可以提前终止攀树,从而减少对存储器模块104的访问量。当设备100由于例如少量线程、小型核高速缓存等108而具有高空间局部性时,这样做效果很好。当设备100更大、更复杂等时,没有空间局部性意味着加载到MEE高速缓存118的元数据线504和506很少被利用。
在至少一个实施例中,可以基于来自MEE逻辑114的未命中流具有非常少甚至没有空间局部性的观察结果来更好地组织MEE元数据(例如,安全元数据126)。至少两个关键优化可以有助于性能改进,这可以大大降低带宽开销(例如在某些情况下减少了50%),导致与基本MEE设计相比,节省了巨大的带宽。这些改进可以包括将VER 300和MAC 302重新组织以布置在同一数据线上,并且对MEE高速缓存118引入分区以保持更少的颠簸和减小的未命中流率。
在MEE逻辑114的现有实施方式中,VER 300和MAC 302被放置在诸如示例500所示的分开的数据线504和506上。对于每次MEE访问的攀树开始于获取VER 300和MAC 302。没有空间局部性,对于每次存储器访问存储器模块104,必须为每次访问分开地获取VER和MAC数据线504和506。随后,当在示例500中对应于数据线12加载VER和MAC数据线时,容易理解MEE高速缓存118如何可以快速变得过载。这种类型的操作可能导致MEE高速缓存118中的颠簸,并且可能进一步增加MEE高速缓存118的未命中率。例如,由于MEE逻辑114将VER 300定位在MEE高速缓存118中,可能在VER 300级别处停止的攀树可能不必进行作为攀树的一部分的加载附加安全元数据126(例如,对应于VER0到VER7的元数据级别L0、L1、L2等)。由于必须从存储器模块104加载数据、MEE高速缓存118中增加的颠簸等引起的延迟,将附加安全元数据126加载到MEE高速缓存118可能加剧性能问题。
在至少一个实施例中,MEE高速缓存118可以被划分为至少两个分区,以便例如将VER 300和MAC 302数据与加载以执行攀树的计数器元数据级别L0、L1、L2等分开。示例502公开了一种广义示例,其中VER 300和MAC 302数据驻留在分区120’中,并且计数器数据驻留在分区122’中。可能的高速缓存实施方式可以包括但不限于逻辑高速缓存分区、真实高速缓存分区或路线分区(way partitioning)。在逻辑高速缓存分区中,分开的缓冲器(未示出)可以用于高速缓存VER 300和MAC 302,并且MEE高速缓存118仅用于高速缓存元数据级别L0、L1、L2等。MEE高速缓存118和分开的缓冲器的总容量可以保持与MEE高速缓存118的典型大小相同。在真实高速缓存分区中,可以在不同类型的安全元数据126之间划分MEE高速缓存118的容量。高速缓存硬件可以维持VER 300和MAC 302以及级别计数器L0、L1、L2等的占用,并且可以通过基于每个分区的当前占用作出替换决定来确保所述分区被维持。在路线分区中,可以以较粗粒度来划分MEE高速缓存118。例如,对于八路组相联高速缓存,可以为VER 300和MAC 302指配两条路线,并且可以为级别计数器L0、L1、L2等指配剩余的六条路线。与本公开一致,VER 300和MAC 302缓冲器可以实现为简单的先进先出(FIFO)缓冲器。还可以使用其他更复杂的替代策略(如最近最少使用的(LRU))来提高命中率(例如,VER 300和MAC 302数据位于MEE高速缓存118中的百分比)。尽管上述示例高速缓存分区示例描述了使用VER 300和MAC 302缓冲器进行查找,可以以直接的方式导出路线分区和真实高速缓存分区中所使用的数据流。将VER 300和MAC 302数据与级别计数器L0、L1、L2等分开可以增加用于攀树的命中百分比,减少攀树的持续时间,减少需要从存储器模块104加载的数据量,并且因此提高设备100的整体数据处理效率。
由于没有可在较大的设备100(例如,服务器)中看到的空间局部性,大多数MEE访问通过从存储器模块104获取用于VER 300和MAC 302的数据线来启动,如图5中的504和506处所示。在没有空间局部性的情况下,数据线504和506中的大多数数据在从MEE高速缓存118清除之前未被利用。所述观察结果导致第二组织改进以提高数据处理效率,其中可以至少改变安全元数据126的一部分以节省带宽。所述实施例可以单独地或者与分区MEE高速缓存118结合地实现。在至少一个实施例中,对应的VER 300和MAC 302数据可以被放置在一个高速缓存行中,将允许在一次存储器访问中获取它们,相比于它们被放置在分开的高速缓存行上,则节省一次额外的存储器访问。所述数据组织的示例在图5的示例502中示出,其中示出了对应于数据线1的元数据数据508和对应于数据线12的元数据线510。给定现今当前使用的数据线的大小,将VER 300和MAC 302放置在相同的数据线中将支持四个连续数据线每数据高速缓存行。然而,即使在存在空间局部性的情况下,所提出的优化也不会增加带宽要求。尽管支持较少的数据线,但如在示例502中明显的,加载高速缓存数据线所需的读取次数减半,并且正在浪费较少的数据(例如,加载到MEE高速缓存118中并且未被访问)。
将VER 300和MAC 302放置在相同的数据线上可以导致从L0计数器开始的元数据空间量加倍。这可能发生,因为先前的一个L0计数器数据304覆盖了8个VER 300部段。由于所提出的优化,一个L0计数器数据线304可以仅覆盖四个VER部段。然而,由于对准要求,存储器模块104中存储安全元数据126的区域可能具有未使用存储器空间的间隙,所述间隙足够大以适应由于优化造成的增加。因此,通过这种优化,只需要传输线高速缓存(例如,MEE高速缓存118)的大小增加(例如,加倍)来适应更多的数据线。
图6展示了根据本公开的至少一个实施例的用于存储器保护的示例操作。在操作600中,可以在设备中触发数据加密或解密。例如,处理模块中的核可以从设备中的存储器模块请求加密数据,或者所述核可以在存储于存储器模块中之前生成需要加密的数据。然后可以在操作602中发生与MEE相关联的高速缓存中的VER分区的搜索(例如,查找),以至少定位用于加密或解密的VER数据。可以在操作604中作出是否发生命中(例如,对应于待加密或解密的数据线的VER数据是否位于VER/MAC分区中)的判定。如果在操作604中确定发生了命中,则在操作606中,命中可以与来自MEE高速缓存的对应VER数据一起返回到MEE。MEE高速缓存的VER/MAC分区的命中指示安全元数据已经被认证(例如,从用于其他数据的加密解密请求),并且因此不需要进一步的攀树。然后可以在操作608中发生使用位于操作604中的安全元数据进行数据的加密或解密。
返回到操作604,如果确定发生了未命中(例如,在MEE高速缓存中没有发现对应于所述数据的VER),则在操作610中,VER和MAC数据可以从存储器模块加载到VER/MAC高速缓存中。可以在操作612中发生在MEE高速缓存的计数器分区中查找下一级别的安全元数据(例如,从L0节点开始)。然后可以在操作614中作出有关在计数器分区中是否发生命中的判定。如果在操作612中确定已经发生了命中,则在操作616中,命中可以与安全元数据一起返回。在操作618中,可以验证需要被验证的任何安全元数据。操作618然后可以跟随返回到操作608,其中可以使用安全元数据对数据进行加密或解密。如果在操作614中确定了在计数器高速缓存中没有发生命中,则操作612、614、620和622可以继续重复以加载进一步的安全元数据计数器节点,直到在操作614中确定命中,或者替代性地,在操作620中确定所有安全元数据已经被加载到MEE高速缓存中。操作620可以跟随返回到操作618,以验证需要验证的任何安全元数据,并且然后返回到操作608以使用安全元数据对数据进行加密或解密。
虽然图6示出了根据实施例的操作,但是将理解的是,对于其他实施例来说,图6中所描绘的所有操作并非都是必需的。确实,在此完全可以设想,在本公开的其他实施例中,可以采用任何附图中未具体地示出、但仍然完全符合本公开的方式将图6中所描绘的操作和/或本文中所描述的其他操作进行组合。因此,涉及未在一个附图中准确示出的特征和/或操作的权利要求被视为处于本公开的范围和内容之内。
如在本申请和权利要求书中所使用的,由术语“和/或”所连接的一系列项目可以意指所列项目的任何组合。例如,短语“A、B和/或C”可意指A;B;C;A和B;A和C;B和C;或A、B和C。如在本申请和权利要求书中所使用的,由术语“中的至少一项”接合的一系列项目可意指所列术语的任何组合。例如,短语“A、B或C中的至少一项”可意指A;B;C;A和B;A和C;B和C;或A、B和C。
如本文中任何实施例所使用的,术语“模块”可以指被配置成用于执行前述操作中任何操作的软件、固件和/或电路系统。软件可以被具体化为非瞬态计算机可读存储介质上所记录的软件包、代码、指令、指令集和/或数据。固件可以被具体化为存储器设备中硬编码(例如,非易失性的)的代码、指令或指令集和/或数据。如本文中任何实施例中所使用的,“电路系统”可以例如单一地或以任何组合形式包括硬接线电路系统、可编程电路系统(比如,包括一个或多个单独指令处理核的计算机处理器)、状态机电路系统、和/或存储有可由可编程电路系统执行的指令的固件。所述模块可以被统一地或单独地具体化为形成例如集成电路(IC)、片上系统(SoC)、台式计算机、膝上型计算机、平板计算机、服务器、智能电话等的更大系统的一部分的电路。
本文中所描述的任何操作可以在系统中实施,所述系统包括具有单独地或组合地存储在其上的指令的一个或多个存储介质(比如,非瞬态存储介质),当所述指令由一个或多个处理器执行时执行所述方法。此处,处理器可以包括例如服务器CPU、移动设备CPU、和/或其他可编程电路。而且,旨在使得本文中所描述的操作可以在多个物理设备(比如,在多于一个不同物理位置处的处理结构)之间分布。存储介质可以包括任何类型的有形介质,例如包括以下各项的任何类型的磁盘:硬盘、软盘、光盘、压缩盘-只读存储器(CD-ROM)、可复写致密盘(CD-RW)、和磁光盘、如只读存储器(ROM)等半导体器件、如动态和静态RAM等随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存、固态盘(SSD)、嵌入式多媒体卡(eMMC)、安全数字输入/输出(SDIO)卡、磁卡或光卡、或者适合于存储电子指令的任何类型的介质。其他实施例可以实施为由可编程控制设备执行的软件模块。
因此,本公开涉及用于存储器保护的高速缓存和数据组织。可以通过在对加密数据提供存储器保护的同时组织高速缓存和/或数据结构来加快设备中的加密和解密操作。示例设备可以包括处理模块和存储器模块。处理模块可以包括存储器加密引擎(MEE),所述存储器加密引擎用于对从所述存储器模块加载的加密数据进行解密、或者使用存储在所述存储器模块中的安全元数据在同样存储于所述存储器模块中之前对明文数据进行加密。示例安全元数据可以包括版本(VER)数据、存储器认证码(MAC)数据和计数器数据。与本公开一致,与MEE相关联的高速缓存可以被分区以将所述VER和MAC数据与计数器数据分开。数据组织可以包括:包括对应于相同数据线中特定数据的VER和MAC数据。
以下示例涉及进一步实施例。本公开的以下示例可以包括主题,诸如设备、方法、用于存储指令(当被执行时使机器基于所述方法执行动作)的至少一个机器可读介质、用于基于所述方法执行动作的装置、和/或用于存储器保护的高速缓存和数据组织的系统。
根据示例1,提供了一种包括存储器保护的设备。所述设备可以包括存储器模块和处理模块,所述处理模块至少包括存储器加密引擎,所述存储器加密引擎用于进行以下各项中的至少一项:使用从所述存储器模块加载的安全元数据对从所述存储器模块加载的加密数据进行解密;或者使用所述安全元数据在存储于所述存储器模块中之前对明文数据进行加密,所述存储器加密引擎至少包括用于保持所述安全元数据的分区高速缓存。
示例2可以包括如示例1所述的要素,其中,所述处理模块包括用于处理所述明文数据的至少一个处理核、以及用于在处理过程中保持所述明文数据的至少一部分的至少一个核高速缓存。
示例3可以包括如示例2所述的要素,其中,所述至少一个处理核用于从所述存储器加密引擎接收所述经解密的数据,并且在存储于所述存储器模块中之前将所述明文数据提供给所述存储器加密引擎以便进行加密。
示例4可以包括如示例1至3中任一项所述的要素,其中,所述存储器加密引擎用于对所述加密数据进行解密并且使用计数器模式加密来对所述明文数据进行加密。
示例5可以包括如示例1至4中任一项所述的要素,其中,所述安全元数据至少包括与所述加密数据或所述明文数据相对应的存储器认证码数据、版本数据和计数器数据。
示例6可以包括如示例5所述的要素,其中,所述存储器加密引擎包括用于存储顶级计数器数据的非易失性存储器。
示例7可以包括如示例5和6中任一项所述的要素,其中,所述存储器加密引擎用于至少使用所述存储器认证码数据来认证从所述存储器模块加载的所述加密数据,并且至少使用所述计数器数据来认证所述版本数据。
示例8可以包括如示例7所述的要素,其中,所述存储器加密引擎用于通过对加载在所述存储器加密引擎高速缓存中的计数器数据执行攀树来认证所述版本数据。
示例9可以包括如示例5至8中任一项所述的要素,其中,所述存储器加密引擎高速缓存包括用于保持所述版本数据和所述存储器认证码数据的第一分区。
示例10可以包括如示例9所述的要素,其中,所述存储器加密引擎用于确定存在于所述第一分区中的版本数据已经被认证。
示例11可以包括如示例9和10中任一项所述的要素,其中,所述存储器加密引擎高速缓存包括用于保持所述计数器数据的第二分区。
示例12可以包括如示例5至11中任一项所述的要素,其中,所述存储器加密引擎高速缓存包括用于保持所述版本数据和所述存储器认证码数据的第一分区、以及用于保持所述计数器数据的第二分区。
示例13可以包括如示例5至12中任一项所述的要素,其中,所述存储器认证码数据和所述版本数据被存储在数据线中,所述数据线在单次读取操作中可从所述存储器模块加载到所述第一分区中。
示例14可以包括如示例1至13中任一项所述的要素,其中,所述处理模块进一步包括存储器控制器。
根据示例15,提供了一种包括存储器保护的设备。所述设备可以包括存储器模块和处理模块,所述处理模块至少包括存储器加密引擎,所述存储器加密引擎用于进行以下各项中的至少一项:使用从所述存储器模块加载的安全元数据对从所述存储器模块加载的加密数据进行解密;或者使用所述安全元数据在存储于所述存储器模块中之前对明文数据进行加密,其中,所述安全元数据至少包括与存储于数据线中的所述加密数据或明文数据相对应的存储器认证码数据和版本数据,所述数据线在单次读取操作中可从所述存储器模块加载。
示例16可以包括如示例15所述的要素,其中,所述处理模块包括用于处理所述明文数据的至少一个处理核、以及用于在处理过程中保持所述明文数据的至少一部分的至少一个核高速缓存。
示例17可以包括如示例16所述的要素,其中,所述至少一个处理核用于从所述存储器加密引擎接收所述经解密的数据,并且在存储于所述存储器模块中之前将所述明文数据提供给所述存储器加密引擎以便进行加密。
示例18可以包括如示例15至17中任一项所述的要素,其中,所述存储器加密引擎用于对所述加密数据进行解密并且使用计数器模式加密来对所述明文数据进行加密。
示例19可以包括如示例15至18中任一项所述的要素,其中,所述存储器加密引擎包括用于保持所述安全元数据的高速缓存。
示例20可以包括如示例19所述的要素,其中,所述存储器加密引擎高速缓存包括用于保持所述存储器认证码数据和所述版本数据的第一分区。
示例21可以包括如示例19和20中任一项所述的要素,其中,所述安全元数据包括计数器数据,并且所述存储器加密引擎高速缓存包括用于保持所述计数器数据的第二分区。
示例22可以包括如示例21所述的要素,其中,所述存储器加密引擎用于至少使用所述存储器认证码数据来认证从所述存储器模块加载的所述加密数据,并且至少使用所述计数器数据来认证所述版本数据。
示例23可以包括如示例22所述的要素,其中,所述存储器加密引擎用于通过对加载在所述第二分区中的计数器数据执行攀树来认证所述版本数据。
示例24可以包括如示例21至23中任一项所述的要素,其中,所述存储器加密引擎包括用于存储顶级计数器数据的非易失性存储器。
示例25可以包括如示例15至24中任一项所述的要素,其中,所述处理模块进一步包括存储器控制器。
根据示例26,提供了一种用于存储器保护的方法。所述方法可以包括:接收用于对从存储器模块加载的加密数据进行解密或用于对待存储在所述存储器模块中的明文数据进行加密的请求;判定与所述加密数据或明文数据相对应的安全元数据是否已经存在于分区高速缓存中;以及如果确定了所述安全元数据已经存在于所述分区高速缓存中,则使用所述安全元数据来对所述加密数据进行解密或对所述明文数据进行加密。
示例27可以包括如示例26所述的要素,其中,所述安全元数据包括存储在数据线中的存储器认证码数据和版本数据,所述数据线在单次读取操作中可从所述存储器模块加载到所述第一分区中。
示例28可以包括如示例27所述的要素,其中,判定与所述加密数据相对应的安全元数据是否已经存在于分区高速缓存中包括判定至少所述版本数据是否已经存在于所述分区高速缓存中的所述第一分区中。
示例29可以包括如示例26至28中任一项所述的要素,其中,所述安全元数据进一步包括计数器数据,并且判定与所述加密数据相对应的安全元数据是否已经存在于分区高速缓存中包括判定所述计数器数据是否已经存在于所述分区高速缓存中的第二分区中。
示例30可以包括如示例26至29中任一项所述的要素,并且可以进一步包括如果确定了所述安全元数据未存在于所述分区高速缓存中,则从存储器加载安全元数据;以及在对所述数据进行加密或解密之前验证所述安全元数据。
示例31可以包括如示例30所述的要素,其中,验证所述安全元数据包括对加载在所述分区高速缓存中的安全元数据执行攀树。
根据示例32,提供了一种包括至少一个设备的系统,所述系统被安排用于执行上述示例26至31中任一项所述的方法。
根据示例33,提供了一种芯片组,所述芯片组被安排用于执行如以上示例26至31中任一项所述的方法。
根据示例34,提供了至少一种机器可读介质,包括多条指令,所述多条指令响应于在计算设备上被执行而使所述计算设备执行根据以上示例26至31中任一项所述的方法。
根据示例35,提供了一种包括存储器保护的设备,所述设备被安排用于执行如以上示例26至31中任一项所述的方法。
根据示例36,提供了一种用于存储器保护的系统。所述系统可以包括:用于接收请求的装置,所述请求用于对从存储器模块加载的加密数据进行解密或用于对待存储在所述存储器模块中的明文数据进行加密;用于判定与所述加密数据或明文数据相对应的安全元数据是否已经存在于分区高速缓存中的装置;以及用于如果确定了所述安全元数据已经存在于所述分区高速缓存中则使用所述安全元数据来对所述加密数据进行解密或对所述明文数据进行加密的装置。
示例37可以包括如示例36所述的要素,其中,所述安全元数据包括存储在数据线中的存储器认证码数据和版本数据,所述数据线在单次读取操作中可从所述存储器模块加载到所述第一分区中。
示例38可以包括如示例37所述的要素,其中,用于判定与所述加密数据相对应的安全元数据是否已经存在于分区高速缓存中的装置包括用于判定至少所述版本数据是否已经存在于所述分区高速缓存中的所述第一分区中的装置。
示例39可以包括如示例36至38中任一项所述的要素,其中,所述安全元数据进一步包括计数器数据,并且用于判定与所述加密数据相对应的安全元数据是否已经存在于分区高速缓存中的装置包括用于判定所述计数器数据是否已经存在于所述分区高速缓存中的第二分区中的装置。
示例40可以包括如示例36至39中任一项所述的要素,并且可以进一步包括:用于如果确定了所述安全元数据未存在于所述分区高速缓存中则从存储器加载安全元数据的装置;以及用于在对所述数据进行加密或解密之前验证所述安全元数据的装置。
示例41可以包括如示例40所述的要素,其中,用于验证所述安全元数据的装置包括用于对加载在所述分区高速缓存中的安全元数据执行攀树的装置。
本文中已采用的术语和表达用作描述而非限制术语,并且在使用这种术语和表达时不旨在排除所示出且所描述的特征(或其部分)的任何等效物,并且应当认识到,在权利要求书范围内的各种修改是有可能的。因此,权利要求书旨在涵盖所有这种等效物。
Claims (26)
1.一种包括存储器保护的设备,所述设备包括:
存储器模块,在所述存储器模块中存储计数器树,所述计数器树由布置在不同级的元数据节点构成,每个元数据节点包括计数器,其中在遍历所述计数器树时,进行读取所述计数器的值或者递增所述计数器的值中的至少一者;以及
处理模块,所述处理模块至少包括:
存储器加密引擎,所述存储器加密引擎用于进行以下各项中的至少一项:使用从所述存储器模块加载的安全元数据对从所述存储器模块加载的加密数据进行解密;或者使用所述安全元数据在存储于所述存储器模块中之前对明文数据进行加密,所述存储器加密引擎至少包括用于保持所述安全元数据的分区高速缓存。
2.如权利要求1所述的设备,其中,所述处理模块包括用于处理所述明文数据的至少一个处理核以及用于在处理过程中保持所述明文数据的至少一部分的至少一个核高速缓存。
3.如权利要求2所述的设备,其中,所述至少一个处理核用于从所述存储器加密引擎接收经解密的数据,并且在存储于所述存储器模块中之前将所述明文数据提供给所述存储器加密引擎以便加密。
4.如权利要求1所述的设备,其中,所述存储器加密引擎用于对所述加密数据进行解密并且使用计数器模式加密来对所述明文数据进行加密。
5.如权利要求1所述的设备,其中,所述安全元数据至少包括与所述加密数据或所述明文数据相对应的存储器认证码数据、版本数据和计数器数据。
6.如权利要求5所述的设备,其中,所述存储器加密引擎用于至少使用所述存储器认证码数据来认证从所述存储器模块加载的所述加密数据,并且至少使用所述计数器数据来认证所述版本数据。
7.如权利要求5所述的设备,其中,所述存储器加密引擎高速缓存包括用于保持所述版本数据和所述存储器认证码数据的第一分区。
8.如权利要求7所述的设备,其中,所述存储器加密引擎用于确定存在于所述第一分区中的版本数据已经被认证。
9.如权利要求7所述的设备,其中,所述存储器加密引擎高速缓存包括用于保持所述计数器数据的第二分区。
10.如权利要求5所述的设备,其中,所述存储器认证码数据和所述版本数据被存储在数据线中,所述数据线在单次读取操作中能从所述存储器模块加载到第一分区中。
11.一种包括存储器保护的设备,所述设备包括:
存储器模块,在所述存储器模块中存储计数器树,所述计数器树由布置在不同级的元数据节点构成,每个元数据节点包括计数器,其中在遍历所述计数器树时,进行读取所述计数器的值或者递增所述计数器的值中的至少一者;以及
处理模块,所述处理模块至少包括存储器加密引擎,所述存储器加密引擎用于进行以下各项中的至少一项:使用从所述存储器模块加载的安全元数据对从所述存储器模块加载的加密数据进行解密;或者使用所述安全元数据在存储于所述存储器模块中之前对明文数据进行加密,其中,所述安全元数据至少包括与存储于数据线中的所述加密数据或明文数据相对应的存储器认证码数据和版本数据,所述数据线在单次读取操作中能从所述存储器模块加载。
12.如权利要求11所述的设备,其中,所述存储器加密引擎包括用于保持所述安全元数据的高速缓存。
13.如权利要求12所述的设备,其中,所述存储器加密引擎高速缓存包括用于保持所述存储器认证码数据和所述版本数据的第一分区。
14.如权利要求12所述的设备,其中,所述安全元数据包括计数器数据,并且所述存储器加密引擎高速缓存包括用于保持所述计数器数据的第二分区。
15.如权利要求14所述的设备,其中,所述存储器加密引擎用于至少使用所述存储器认证码数据来认证从所述存储器模块加载的所述加密数据,并且至少使用所述计数器数据来认证所述版本数据。
16.一种用于存储器保护的方法,所述方法包括:
接收用于对从存储器模块加载的加密数据进行解密或用于对将被存储在所述存储器模块中的明文数据进行加密的请求;
判定与所述加密数据或明文数据相对应的安全元数据是否已经存在于分区高速缓存中;以及
如果确定认证已经存在于所述分区高速缓存中,则通过遍历计数器树的级来使用所述安全元数据来对所述加密数据进行解密或对所述明文数据进行加密,所述计数器树由布置在不同级的元数据节点构成,每个元数据节点包括计数器,其中在遍历所述计数器树时,进行读取所述计数器的值或者递增所述计数器的值中的至少一者。
17.如权利要求16所述的方法,其中,所述安全元数据包括存储在数据线中的存储器认证码数据和版本数据,所述数据线在单次读取操作中能从所述存储器模块加载到第一分区中。
18.如权利要求17所述的方法,其中,判定与所述加密数据相对应的安全元数据是否已经存在于分区高速缓存中包括判定至少所述版本数据是否已经存在于所述分区高速缓存中的所述第一分区中。
19.如权利要求16所述的方法,其中,所述安全元数据进一步包括计数器数据,并且判定与所述加密数据相对应的安全元数据是否已经存在于分区高速缓存中包括判定所述计数器数据是否存在于所述分区高速缓存中的第二分区中。
20.如权利要求16所述的方法,进一步包括:
如果确定所述安全元数据未存在于所述分区高速缓存中,则从存储器加载安全元数据;以及
在对所述数据进行加密或解密之前验证所述安全元数据。
21.一种用于存储器保护的系统,所述系统包括:
用于接收用于对从存储器模块加载的加密数据进行解密或用于对将被存储在所述存储器模块中的明文数据进行加密的请求的装置;
用于判定与所述加密数据或明文数据相对应的安全元数据是否已经存在于分区高速缓存中的装置;以及
用于如果确定所述安全元数据已经存在于所述分区高速缓存中,则通过遍历计数器树的级来使用所述安全元数据来对所述加密数据进行解密或对所述明文数据进行加密的装置,所述计数器树由布置在不同级的元数据节点构成,每个元数据节点包括计数器,其中在遍历所述计数器树时,进行读取所述计数器的值或者递增所述计数器的值中的至少一者。
22.如权利要求21所述的系统,其中,所述安全元数据包括存储在数据线中的存储器认证码数据和版本数据,所述数据线在单次读取操作中能从所述存储器模块加载到第一分区中。
23.如权利要求22所述的系统,其中,所述用于判定与所述加密数据相对应的安全元数据是否已经存在于分区高速缓存中的装置包括用于判定至少所述版本数据是否已经存在于所述分区高速缓存中的所述第一分区中的装置。
24.如权利要求21所述的系统,其中,所述安全元数据进一步包括计数器数据,并且所述用于判定与所述加密数据相对应的安全元数据是否已经存在于分区高速缓存中的装置包括用于判定所述计数器数据是否存在于所述分区高速缓存中的第二分区中的装置。
25.如权利要求21所述的系统,进一步包括:
用于如果确定所述安全元数据未存在于所述分区高速缓存中,则从存储器加载安全元数据的装置;以及
用于在对所述数据进行加密或解密之前验证所述安全元数据的装置。
26.至少一种机器可读介质,包括多条指令,所述多条指令响应于在计算设备上被执行而使所述计算设备实施根据权利要求16至20中任一项所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/661,044 | 2015-03-18 | ||
US14/661,044 US10185842B2 (en) | 2015-03-18 | 2015-03-18 | Cache and data organization for memory protection |
PCT/US2016/018266 WO2016148822A1 (en) | 2015-03-18 | 2016-02-17 | Cache and data organization for memory protection |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107430555A CN107430555A (zh) | 2017-12-01 |
CN107430555B true CN107430555B (zh) | 2021-12-21 |
Family
ID=56920249
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680011017.4A Active CN107430555B (zh) | 2015-03-18 | 2016-02-17 | 用于存储器保护的高速缓存和数据组织 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10185842B2 (zh) |
EP (1) | EP3271828B1 (zh) |
CN (1) | CN107430555B (zh) |
WO (1) | WO2016148822A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10185842B2 (en) | 2015-03-18 | 2019-01-22 | Intel Corporation | Cache and data organization for memory protection |
US9798900B2 (en) | 2015-03-26 | 2017-10-24 | Intel Corporation | Flexible counter system for memory protection |
FR3041796B1 (fr) * | 2015-09-24 | 2017-10-20 | Stmicroelectronics Rousset | Stockage et lecture d'un code d'authentification de message dans une memoire externe |
US10528485B2 (en) | 2016-09-30 | 2020-01-07 | Intel Corporation | Method and apparatus for sharing security metadata memory space |
US11075887B2 (en) * | 2016-10-24 | 2021-07-27 | Arm Ip Limited | Federating data inside of a trusted execution environment |
US10540297B2 (en) * | 2017-08-03 | 2020-01-21 | Arm Limited | Memory organization for security and reliability |
US10733313B2 (en) | 2018-02-09 | 2020-08-04 | Arm Limited | Counter integrity tree for memory security |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101159556A (zh) * | 2007-11-09 | 2008-04-09 | 清华大学 | 基于组密钥服务器的共享加密文件系统中的密钥管理方法 |
Family Cites Families (53)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6138230A (en) | 1993-10-18 | 2000-10-24 | Via-Cyrix, Inc. | Processor with multiple execution pipelines using pipe stage state information to control independent movement of instructions between pipe stages of an execution pipeline |
EP2110732A3 (en) * | 1995-02-13 | 2009-12-09 | Intertrust Technologies Corporation | Systems and methods for secure transaction management and electronic rights protection |
JP2002333978A (ja) | 2001-05-08 | 2002-11-22 | Nec Corp | Vliw型プロセッサ |
US7403615B2 (en) | 2001-08-24 | 2008-07-22 | Broadcom Corporation | Methods and apparatus for accelerating ARC4 processing |
US20040034785A1 (en) | 2002-08-15 | 2004-02-19 | Horng-Ming Tai | Hardware and firmware encryption mechanism using unique chip die identification |
US6944256B2 (en) | 2003-04-25 | 2005-09-13 | Alcatel Ip Networks, Inc. | Optimizing use of statistics counters |
US20060005047A1 (en) | 2004-06-16 | 2006-01-05 | Nec Laboratories America, Inc. | Memory encryption architecture |
FR2872357A1 (fr) | 2004-06-24 | 2005-12-30 | St Microelectronics Sa | Verification d'un flux de bits |
JP4569921B2 (ja) | 2004-08-04 | 2010-10-27 | パナソニック株式会社 | 省電力メモリアクセス制御装置 |
GB2434673B (en) | 2004-11-12 | 2009-10-14 | Discretix Technologies Ltd | Method, device, and system of securely storing data |
KR100670005B1 (ko) | 2005-02-23 | 2007-01-19 | 삼성전자주식회사 | 모바일 플랫폼을 위한 메모리의 무결성을 원격으로 확인하는 확인장치 및 그 시스템 그리고 무결성 확인 방법 |
US20060277395A1 (en) | 2005-06-06 | 2006-12-07 | Fowles Richard G | Processor performance monitoring |
US8010764B2 (en) | 2005-07-07 | 2011-08-30 | International Business Machines Corporation | Method and system for decreasing power consumption in memory arrays having usage-driven power management |
US7681050B2 (en) | 2005-12-01 | 2010-03-16 | Telefonaktiebolaget L M Ericsson (Publ) | Secure and replay protected memory storage |
GB2435333B (en) * | 2006-02-01 | 2010-07-14 | Hewlett Packard Development Co | Data transfer device |
US8200961B2 (en) | 2006-11-19 | 2012-06-12 | Igware, Inc. | Securing a flash memory block in a secure device system and method |
US8261091B2 (en) | 2006-12-21 | 2012-09-04 | Spansion Llc | Solid-state memory-based generation and handling of security authentication tokens |
JP4956292B2 (ja) * | 2007-06-25 | 2012-06-20 | パナソニック株式会社 | 情報セキュリティ装置およびカウンタ制御方法 |
US7895421B2 (en) | 2007-07-12 | 2011-02-22 | Globalfoundries Inc. | Mechanism for using performance counters to identify reasons and delay times for instructions that are stalled during retirement |
KR100929843B1 (ko) | 2007-09-28 | 2009-12-04 | 주식회사 하이닉스반도체 | 오버플로우하지 않는 카운터 |
US20090113111A1 (en) | 2007-10-30 | 2009-04-30 | Vmware, Inc. | Secure identification of execution contexts |
US8171309B1 (en) | 2007-11-16 | 2012-05-01 | Marvell International Ltd. | Secure memory controlled access |
WO2009087972A1 (ja) | 2008-01-09 | 2009-07-16 | Nec Corporation | データ送信装置、データ受信装置、これらの方法、記録媒体、そのデータ通信システム |
US7987343B2 (en) | 2008-03-19 | 2011-07-26 | International Business Machines Corporation | Processor and method for synchronous load multiple fetching sequence and pipeline stage result tracking to facilitate early address generation interlock bypass |
US9223642B2 (en) * | 2013-03-15 | 2015-12-29 | Super Talent Technology, Corp. | Green NAND device (GND) driver with DRAM data persistence for enhanced flash endurance and performance |
US8572271B2 (en) | 2009-01-29 | 2013-10-29 | Qualcomm Incorporated | Multimedia management system for seamless multimedia content mobility |
US20100250965A1 (en) | 2009-03-31 | 2010-09-30 | Olson Christopher H | Apparatus and method for implementing instruction support for the advanced encryption standard (aes) algorithm |
US8370577B2 (en) | 2009-06-26 | 2013-02-05 | Microsoft Corporation | Metaphysically addressed cache metadata |
US8521962B2 (en) | 2009-09-01 | 2013-08-27 | Qualcomm Incorporated | Managing counter saturation in a filter |
TWI414994B (zh) | 2009-09-24 | 2013-11-11 | Ind Tech Res Inst | 可重組態處理裝置及其系統 |
TWI437567B (zh) | 2009-12-11 | 2014-05-11 | Phison Electronics Corp | 快閃記憶體區塊管理方法及其控制器與儲存裝置 |
US8856534B2 (en) | 2010-05-21 | 2014-10-07 | Intel Corporation | Method and apparatus for secure scan of data storage device from remote server |
JP5159849B2 (ja) | 2010-09-24 | 2013-03-13 | 株式会社東芝 | メモリ管理装置及びメモリ管理方法 |
US8751828B1 (en) | 2010-12-23 | 2014-06-10 | Emc Corporation | Sharing encryption-related metadata between multiple layers in a storage I/O stack |
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 | インテル・コーポレーション | 整合性チェック及びリプレーアタックからの保護を行って、メモリを暗号化するための方法及び装置 |
US9092644B2 (en) | 2011-12-28 | 2015-07-28 | Intel Corporation | Method and system for protecting memory information in a platform |
US9053346B2 (en) | 2011-12-28 | 2015-06-09 | Intel Corporation | Low-overhead cryptographic method and apparatus for providing memory confidentiality, integrity and replay protection |
US8819455B2 (en) | 2012-10-05 | 2014-08-26 | Intel Corporation | Parallelized counter tree walk for low overhead memory replay protection |
US9467294B2 (en) * | 2013-02-01 | 2016-10-11 | Symbolic Io Corporation | Methods and systems for storing and retrieving data |
US9442864B2 (en) | 2013-12-27 | 2016-09-13 | Intel Corporation | Bridging circuitry between a memory controller and request agents in a system having multiple system memory protection schemes |
US9792063B2 (en) | 2014-01-15 | 2017-10-17 | Intel Corporation | Deduplication-based data security |
US9513805B2 (en) | 2014-04-15 | 2016-12-06 | International Business Machines Corporation | Page table including data fetch width indicator |
US10019603B2 (en) | 2014-04-16 | 2018-07-10 | Synopsys, Inc. | Secured memory system and method therefor |
US9497027B2 (en) * | 2014-06-02 | 2016-11-15 | GlobalFoundries, Inc. | Encryption engine with twin cell memory array |
JP6162652B2 (ja) | 2014-06-20 | 2017-07-12 | 株式会社東芝 | メモリ管理装置、プログラム、及び方法 |
US9423971B2 (en) | 2014-10-03 | 2016-08-23 | Sandisk Technologies Llc | Method and system for adaptively assigning logical block address read counters using a tree structure |
US10956617B2 (en) | 2014-12-12 | 2021-03-23 | Coresecure Technologies, Llc | Systems and methods for random fill caching and prefetching for secure cache memories |
US9524249B2 (en) | 2014-12-23 | 2016-12-20 | Intel Corporation | Memory encryption engine integration |
US10185842B2 (en) | 2015-03-18 | 2019-01-22 | Intel Corporation | Cache and data organization for memory protection |
US9798900B2 (en) | 2015-03-26 | 2017-10-24 | Intel Corporation | Flexible counter system for memory protection |
US9904805B2 (en) | 2015-09-23 | 2018-02-27 | Intel Corporation | Cryptographic cache lines for a trusted execution environment |
US9432183B1 (en) | 2015-12-08 | 2016-08-30 | International Business Machines Corporation | Encrypted data exchange between computer systems |
-
2015
- 2015-03-18 US US14/661,044 patent/US10185842B2/en active Active
-
2016
- 2016-02-17 EP EP16765386.4A patent/EP3271828B1/en active Active
- 2016-02-17 WO PCT/US2016/018266 patent/WO2016148822A1/en active Application Filing
- 2016-02-17 CN CN201680011017.4A patent/CN107430555B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101159556A (zh) * | 2007-11-09 | 2008-04-09 | 清华大学 | 基于组密钥服务器的共享加密文件系统中的密钥管理方法 |
Non-Patent Citations (2)
Title |
---|
Fast Secure Communications in Shared Memory Multiprocessor Systems;M. Lee;《IEEE Transactions on Parallel and Distributed Systems》;20110729;第22卷;1714-1721 * |
片外存储器的加密与完整性保护研究;朱庆春;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》;20140615(第06期);I137-54 * |
Also Published As
Publication number | Publication date |
---|---|
CN107430555A (zh) | 2017-12-01 |
EP3271828A1 (en) | 2018-01-24 |
US10185842B2 (en) | 2019-01-22 |
EP3271828B1 (en) | 2019-05-01 |
US20160275018A1 (en) | 2016-09-22 |
EP3271828A4 (en) | 2018-09-05 |
WO2016148822A1 (en) | 2016-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11088846B2 (en) | Key rotating trees with split counters for efficient hardware replay protection | |
US10546157B2 (en) | Flexible counter system for memory protection | |
CN107430555B (zh) | 用于存储器保护的高速缓存和数据组织 | |
CN110447032B (zh) | 管理程序与虚拟机之间的存储器页转换监测 | |
US9792229B2 (en) | Protecting a memory | |
US10810138B2 (en) | Enhanced storage encryption with total memory encryption (TME) and multi-key total memory encryption (MKTME) | |
EP3274848B1 (en) | Providing enhanced replay protection for a memory | |
US10536274B2 (en) | Cryptographic protection for trusted operating systems | |
US11082231B2 (en) | Indirection directories for cryptographic memory protection | |
US10691627B2 (en) | Avoiding redundant memory encryption in a cryptographic protection system | |
US10565130B2 (en) | Technologies for a memory encryption engine for multiple processor usages | |
EP3274849B1 (en) | Cache-less split tracker architecture for replay protection trees | |
US10528746B2 (en) | System, apparatus and method for trusted channel creation using execute-only code | |
KR102365263B1 (ko) | 하드웨어 기반의 gpu 메모리 보호를 위한 효율적인 암호화 방법 및 장치 |
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 |