CN107430670B - 用于存储器保护的柔性计数器系统 - Google Patents
用于存储器保护的柔性计数器系统 Download PDFInfo
- Publication number
- CN107430670B CN107430670B CN201680012304.7A CN201680012304A CN107430670B CN 107430670 B CN107430670 B CN 107430670B CN 201680012304 A CN201680012304 A CN 201680012304A CN 107430670 B CN107430670 B CN 107430670B
- Authority
- CN
- China
- Prior art keywords
- counter
- counters
- data line
- overflow
- memory
- 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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- 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/71—Protecting 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/72—Protecting 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
Abstract
本公开涉及用于存储器保护的柔性计数器系统。一般而言,使用柔性计数器结构可以使得用于支持设备中的存储器保护操作的计数器系统更有效率。一种设备可以包括处理模块和存储器模块。存储器模块中的柔性计数器系统可以包括包含多个计数器的至少一个数据行。通过可以考虑较小的计数器进入溢出状态的溢出计数器可以从现有的实现中减小和/或改变计数器的比特大小。可以使用比特指示符来标识使用溢出计数器的计数器。在至少一个实施例中,与多个计数器中的每一计数器相对应的选择器能够将特定的存储器单元映射到特定的计数器。
Description
技术领域
本公开涉及数据安全,并且尤其涉及用于支持存储器保护操作的具有减少的存储器消耗的柔性计数器系统。
背景技术
随着更多的日常事务变得计算机化,电子数据安全已经成为受到巨大开发关注的区域。计算设备时常用于交换金融数据、个人身份数据等。因此,黑客可能试图危害计算设备以获得对这一有价值信息的访问。例如,会加载恶意的软件(例如,恶意软件)以被动地或主动地攻击计算设备。被动攻击可以包括恶意软件观察在处理器和存储器之间传递的数据,以获得密码或者其他敏感或机密数据。主动攻击可以涉及修改存储在存储器中的数据,以触发非典型结果,例如允许未容许的用户获得对计算设备的访问。在任一情况下,与计算设备中的处理器交换的位于计算设备的存储器中的明文(未加密的)数据等是主要的弱点。
设备制造商、部件制造商、软件开发商等继续尝试开发保护性措施以对抗弱点。基于软件的恶意软件检测和消除解决方案典型地在计算设备中的操作系统(OS)的特权级别处操作。对于较低的特权攻击,这些解决方案可能是有效的,但是这些解决方案可能无法对抗类似黑客程序的较高特权的恶意软件。现在一些基于硬件的保护性解决方案正在出现,其非常早地在计算设备的启动期间就被建立,并且因而可以在恶意软件甚至变为活动之前就建立保护性措施。已知的好的保护固件可以在启动期间较早地被加载,其可以执行各种功能,例如检查随后加载的软件是否与已知的好的版本一致,建立在其中可以保护数据免受恶意软件访问的存储器的受保护区域等。虽然这些保护性措施的好处可能是显而易见的,但是至少一个问题是,硬件保护系统会要求消耗设备中例如以处理能力、非易失性存储器空间为例的珍贵资源的支持系统。在类似服务器的较大规模系统中,对这些资源的消耗会更显著。
附图说明
随着随后的具体实施方式的继续,并且参考附图,请求保护的主题的各种实施例的特征和优点将变得显而易见,其中相同的附图标记表示相同的部分,并且其中:
图1描绘了根据本公开至少一个实施例包括用于存储器保护的柔性计数器系统的示例性设备;
图2描绘了根据本公开至少一个实施例能够使用的设备的示例性配置;
图3描绘了根据本公开至少一个实施例的计数器系统的示例性结构;
图4描绘了根据本公开至少一个实施例用于针对图3中描绘的计数器系统结构并且也针对柔性计算器结构来计算嵌入式存储器认证码的示例性操作;
图5描绘了根据本公开至少一个实施例的存储器加密引擎的示例性配置以及包含溢出指示系统的柔性计数器的示例性结构;
图6描绘了根据本公开至少一个实施例包含选择功能的示例性柔性计数器结构;
图7描绘了根据本公开至少一个实施例用于支持柔性计数器系统中的选择功能的示例性配置;以及
图8描绘了根据本公开至少一个实施例用于存储器保护的示例性操作。
尽管随后的具体实施方式将参考示例性实施例继续进行,但是,对于本领域的熟练技术人员而言,许多替换、修改和变化将是显而易见的。
具体实施方式
本公开涉及用于存储器保护的柔性计数器系统。一般而言,使用柔性计数器结构,可以使得用于支持设备中的存储器保护操作的计数器系统更加有效率,至少在存储器消耗方面。例如,一种设备可以包括处理模块和存储器模块。处理模块可以包括存储器加密引擎(MEE),利用至少包含由至少部分地驻留在存储器模块中的柔性计数器系统生成的计数器数据的安全元数据,存储器加密引擎对从存储器模块加载的加密的数据进行解密或者在将明文数据存储到存储器模块之前对该明文数据进行加密。柔性计数器系统可以包括包含多个计数器的至少一个数据行。通过考虑较小计数器进入溢出状态的溢出计数器,可以从现有的实现来减少和/或改变计数器的比特大小。可以使用比特指示符来标识使用溢出计数器的计数器。在至少一个实施例中,与多个计数器中的每一计数器相对应的选择器可以经过将特定的较低级别的数据行或存储器单元柔性地映射到特定的计数器(例如,将非常活跃的较低级别数据行或存储器单元映射到较大的计数器,将较不活跃的较低级别数据行或存储器单元映射到较小的计数器等)。
在至少一个实施例中,包含存储器保护的设备可以包括例如存储器模块和处理模块。存储器模块可以至少包括柔性计数器系统。处理模块可以至少包括存储器加密引擎(MEE),该存储器加密引擎用于以下中的至少一个:使用至少部分地由柔性计数器系统生成的安全元数据对从存储器模块加载的加密的数据进行解密,或者使用所述安全元数据在将明文数据存储到存储器模块之前对该明文数据进行加密。
在至少一个实施例中,柔性计数器系统可以包括存储在存储器模块中的至少一个数据行,该至少一个数据行包括多个计数器。安全元数据可以至少包括由柔性计数器系统生成的计数器值。在示例性实现中,可以基于比特数目来确定每一计数器的大小,并且多个计数器中的至少一些计数器的大小可能不相同。多个计数器可以包括计数器组,其中在计数器的每一随后组中的计数器的大小逐渐减小。
在至少一个实施例中,多个计数器可以包括至少一个溢出计数器。然后,MEE可以用于确定多个计数器中的一个计数器是否处于溢出状态并且当确定所述计数器处于溢出状态时通过将溢出计数器的当前值与所述计数器的当前值进行组合来确定计数器值。至少一个数据行可以进一步包括与多个计数器中的每一计数器相对应的比特、指示相对应的计数器是否处于溢出状态的每一比特的状态。
在相同或不同的实施例中,至少一个数据行可以包括与多个计数器中的每一计数器相对应的选择器。每一选择器可以例如用于将多个计数器中相应的计数器映射到较低级别的数据行或用于将加密的数据存储到存储器模块的单元。然后,MEE可以用于确定多个计数器中的任何一个的当前值是在阈值处或在阈值之上并且使得选择器将较低级别的数据行或用于将加密的数据存储在存储器模块中的单元从多个计数器中被确定具有处于阈值处或在阈值之上的当前值的计数器重映射到多个计数器中较大尺寸的计数器。与本公开一致,一种用于存储器保护的示例性方法可以包括在将明文数据存储到存储器模块之前接收对该明文数据进行加密的请求,从存储器模块中的柔性计数器系统加载与所述请求相对应的数据行,所述数据行中的每一数据行包括多个计数器,针对每一加载的数据行确定是否需要重新配置该加载的数据行以针对该加载的数据行中的计数器生成自增的值,如果确定为需要,则重新配置该加载的数据行,使用基于自增的计数器值的数据对明文数据进行加密,并且将经加密的数据存储在存储器中。
图1描绘了根据本公开至少一个实施例包括用于存储器保护的柔性计数器系统的示例性设备。首先,在描述与本公开一致的各种实施例时,可以参考诸如由英特尔公司开发的软件保护扩展(SGX)的技术、可以组成SGX的组件以及SGX可以操作的方式。在本申请中已经使用SGX来提供可以容易理解的角度,用于理解各种公开的实施例,并且并不意在将实现限制为仅使用SGX。此外,如在本申请中提及的“存储器保护”一般可以包括经由加密、完整性保护和/或重放保护来保护数据的机密性。完整性保护可以防卫攻击,其中例如,攻击方可能在解密之前修改存储器模块中加密的数据。重放保护可以防止攻击,其中例如,攻击方导致重复进行解密操作以获得对受保护数据的未授权访问。将针对图3和图4更详细地讨论上文的概念。
在图1中公开了设备100的示例性配置。设备100的示例可以包括但不限于诸如基于来自谷歌公司的OS、来自苹果公司的或 来自微软公司的OS、来自Linux公司的OS、来自Mozilla项目的OS、来自黑莓公司的OS、来自惠普公司的OS、来自塞班公司的OS等的蜂窝手持或智能电话的移动通信设备,诸如来自苹果公司的来自微软公司的来自三星公司的Galaxy来自亚马逊公司的Kindle等的平板计算机的移动计算设备,包括来自英特尔公司的低功率芯片集的上网本、笔记本、膝上型计算机、掌上型电脑等,诸如台式计算机、服务器、智能电视、类似来自英特尔公司的下一计算单元(NUC)平台的小形状因子计算解决方案(例如,用于空间受限的应用、TV机顶盒等)的典型静态计算设备。
示例性设备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中诸如加密的数据行120A、加密的数据行120B、加密的数据行120C和加密的数据行120D(统称为“加密的数据行120A…D”)的受保护数据可以由MEE逻辑114取出并且在被提供到核心106A之前被解密。图1仅示出了与单个数据行128中的VER和MAC数据相对应的4个加密的数据行120A…D,但是,存储器模块104中加密的数据行120A…D的实际数目可以取决于例如以存储器模块104中受MEE保护的区域的大小为例的各种因素。在至少一个示例性实现中,每一数据行可以包括可以存储在存储器模块104中的包括128MB的受保护区域中的64B(字节)的数据。同样地,可以向MEE逻辑114提供由核心106A生成的数据,该数据可能是敏感的、机密的等等,用于在存储到存储器模块104之前进行加密。以此方式,可以防止监控正在处理模块102和存储器模块104之间交换的数据的攻击方确定特定数据的内容,该特定数据可能是敏感的、机密的等等。
在至少一个实施例中,使用至少部分地存储在存储器模块114中的安全元数据122,MEE逻辑114可以使用计数器模式加密来对由核心106A…n要求的加密的数据(例如,加密的数据行120A…D)进行解密或者对由核心106A…n生成的明文数据进行加密。计数器模式加密通过在要被加密或解密的数据与基于种子生成的“加密垫”之间执行异或(XOR)来进行操作。例如:
加密垫=AESk(种子) (1)
加密=明文XOR加密垫 (2)
其中,AES是基于高级加密标准的加密操作,并且k指示指定将种子变换成加密垫的转换回合的重复次数的密钥大小。由计数器模式加密提供的保护主要依赖于种子的唯一性。这允许与数据相关的操作独立于与种子相关的加密操作继续进行,因为这些操作可以并行发生,所以这可以改进整体的存储器保护性能。计数器模式加密要求该种子在空间上和时间上是唯一的。空间唯一性可以根据存储器模块104中可以将数据(例如,加密的数据行120A)作为种子的分量存储到其的地址导出。与本公开一致,可以使用由柔性计数器系统126生成的计数器值来实现时间唯一性。例如,柔性计数器系统126的每一数据行中的计数器可以与在分级计数器树结构中较低级别的数据行相关联,并且最终与存储器模块104中的存储器单元相关联。可以在将数据存储到相对应的存储器单元之前,使树结构的每一数据行中的计数器自增。与被写入到存储器模块104的数据行(例如,加密的数据行120A)相对应的最低级别计数器值可以被认为是数据的“版本”(VER)。当加密的数据行120A稍后被从存储器模块104加载到处理模块102中时,在树结构的较高级别中的计数器的值可以能够用于验证VER数据行的完整性。存储器认证码(MAC)/VER数据124和柔性计数器系统126在本申请中一般被称为安全元数据122。在加密和/或解密操作期间,MEE逻辑114可以使得至少一些安全元数据122被加载到MEE高速缓存118中,用于在加密操作中使用(例如,与在MEE Ln计数器存储器114中存储的数据一起)。将关于图3-5更详细地描述柔性计数器系统126的组成和结构。
图2描绘了根据本公开至少一个实施例能够使用的设备的示例性配置。在本公开中在项目编号之后包含撇号(例如,100’)可以指示正在描绘特定项目的示例性实施例。例如,设备100’能够执行在图1中公开的活动中的任何一个或全部。但是,在本申请中仅将设备100’呈现为在与本公开一致的实施例中能够使用的装置的示例,并且并不意在将各种实施例中的任何一个限制在任何特定的实现方式。
设备100’可以包括例如用于管理设备的操作的系统模块200。系统模块200可以包括例如处理模块102’、存储器模块104’、电源模块202、用户接口模块204以及通信接口模块206。设备100’可以进一步包括通信模块208。尽管通信模块208被描绘为与系统模块200分离,但是仅为了说明的目的而提供了在图2中示出的示例性配置。与通信模块208相关联的一些或全部功能还可以被并入到系统模块200中。
在设备100’中,处理模块102’可以包括位于分离的部件中的一个或多个处理器,或者可替换地,位于单个部件中的一个或多个核心106A…n(例如,在片上系统(SoC)配置中),连同与处理器相关的支持电路(例如,桥接接口等)。示例性处理器可以包括但不限于能够从英特尔公司获得的各种基于x86的微处理器,包括在Pentium、Xeon、Itanium、Celeron、Atom、Auark、Core-i系列、Core M系列产品家族中的微处理器、高级RISC(例如,精简指令集计算)机器或“ARM”处理器等。支持电路的示例可以包括被配置为提供接口的芯片集(例如,能够从英特尔公司获得的北桥、南桥等),处理模块102’可以通过上述接口与例如在设备100’中在不同总线上以不同速度操作的其他系统部件交互。此外,一般与支持电路相关联的一些或全部功能还可以与处理器被包含在相同的物理封装中(例如以在能够从英特尔公司获得的Sandy Bridge系列处理器中为例)。如在图2中示出的,处理模块102’可以至少包括核心106A…n、核心高速缓存108、存储器控制器110、和MEE 112。
处理模块102’可以被配置为在设备100’中执行各种指令。指令可以包括被配置为使得处理模块102’执行与读取数据、写入数据、处理数据、形成数据、变换数据、转换数据等相关的活动。可以将信息(例如,指令、数据等)存储在存储器模块104’中。存储器模块104’可以包括固定或可移动格式的随机存取存储器(RAM)和/或只读存储器(ROM)。RAM可以包括被配置为在设备100’的操作期间保存信息,例如以静态RAM(SRAM)或动态RAM(DRAM)为例。ROM可以包括当激活设备100’时基于BIOS、UEFI等被配置以提供指令的非易失性(NV)存储器模块、诸如电子可编程ROM(EPROM)、闪存等的可编程存储器。其他的固定的/可移动的存储器可以包括但不限于诸如软盘、硬驱等的磁性存储器、诸如固态闪存(例如,嵌入式多媒体卡(eMMC)等)的电子存储器、可移动存储卡或棒(例如,微存储设备(uSD)、USB等)、诸如基于压缩盘的ROM(CD-ROM)、数字视频光盘(DVD)、蓝光光盘等的光学存储器。如在图2中所示出的,存储器模块104’可以至少包括加密的数据行120A…D和安全元数据122(例如,MAC和VER数据124以及柔性计数器系统126)。
电源模块202可以包括内部电源(例如,电池、燃料电池等)和/或外部电源(例如,机电或太阳能发电机、电网、外部燃料电池等)、以及被配置为向设备100’提供操作所需的电源的相关电路。用户接口模块204可以包括用于允许用户与设备100’交互的硬件和/或软件,例如以各种输入机制(例如,被配置为捕获图像和/或感知邻近性、距离、运动、姿势、方向、生物计量数据等的麦克风、开关、按钮、把手、键盘、扬声器、触敏表面、一个或多个传感器)和各种输出机制(例如,扬声器、显示器、发光的/闪光的指示器、用于振动、运动等的机电部件)为例。用户接口模块204中的硬件可以被并入到设备100’中和/或可以经由有线或无线通信介质耦合到设备100’。在诸如以在其中设备100’是不包括用户接口模块204而是依赖于另一设备(例如,管理终端)来进行用户接口功能的服务器(例如,机架服务器、刀锋服务器等)的情形为例的特定环境下,用户接口模块204可以是可选的。
通信接口模块206可以被配置为管理分组路由以及用于通信模块208的其他控制功能,其可以包括被配置为支持有线和/或无线通信的资源。在一些实例中,设备100’可以包括由中央通信接口模块206管理的多于一个通信模块208(例如,包括用于有线协议和/或无线电波的单独的物理接口模块)。有线通信可以包括串行和并行有线介质,例如以以太网、USB、Firewire、Thunderbolt、数字视频接口(DVI)、高清晰度多媒体接口(HDMI)等为例。无线通信可以包括,例如,极为邻近的无线介质(例如,诸如基于RF识别(RFID)或近场通信(NFC)标准、红外线(IR)等的射频(RF))、短距离无线介质(例如,蓝牙、WLAN、Wi-Fi等)、长距离无线介质(例如,蜂窝广域无线通信技术、基于卫星的通信等)、经由声波的电子通信等。在一个实施例中,通信接口模块206可以被配置为防止在通信模块208中活动的无线通信彼此干扰。在执行这一功能时,通信接口模块206可以基于例如消息等待传输的相关优先级来调度用于通信模块208的活动。尽管图2中公开的实施例描绘了通信接口模块206与通信模块208相分离,但是将通信接口模块206和通信模块208的功能并入相同的模块也是可行的。
图3描绘了根据本公开至少一个实施例的计数器系统的示例性结构。如先前讨论的,时间唯一性可以基于计数器链,其中每一计数器与分级的数据行相关联。在至少一个实施例中,然后,最低级别的计数器可以与存储器模块104中将要写入加密的高速缓存行的单元(例如,地址)相关联,其中在向存储器单元进行每一写入时使计数器自增。计数器可以用于针对数据行形成VER以提供重放保护。在计数器的值可以继续增加的同时维护安全性。从而,重要的是,计数器要足够大以避免溢出,其中计数器在其可预见的寿命中达到其最大值。一旦计数器溢出,时间唯一性不再存在并且攻击方可以在相同的地址上“重放”加密的数据行120A…D。例如,由于基于由计数器提供的时间唯一性,种子不再改变,来自先前的加密操作的安全元数据122可以用于重放(例如,解密)加密的数据行120A…D。
在图3中在300处描绘了示例性的计数器结构。示例性的计数器结构300可以包括分级的数据行,包括例如,L3 302、L2 306、L1 314、L0 322和VER 330。L3数据行302可以包括存储在处理模块102内的MEE Ln计数器存储器116中的顶级计数器(TLC),并且因而可以保证其是安全的。L3数据行302可以包括多个计数器,每一计数器与较低级别的数据行(例如,在L2级别)相对应。因为在不知道L3计数器304的值的情况下无法重新计算L2eMAC 310,所以每一L3计数器可以“保护”L2数据行避免在存储器模块104中被修改。同样地,如在L3数据行302的实例中相同,数据行L2 306可以包括多个计数器,每一计数器保护较低级别的数据行(例如,在L1级别),L1数据行314可以包括多个计数器,每一计数器保护L0数据行,并且L0数据行322可以包括多个计数器,每一计数器对应于VER行。VER计数器中的每一计数器可以与存储器模块104中加密的数据120A……D被存储在其中的单元相对应。每一计数器的大小可以以比特来确定,例如以56b为例。数据行L2 306还可以包括嵌入式MAC(eMAC)310。在至少一个实施例中,可以通过如在312处示出的在多个计数器之间分配eMAC 310的部分来嵌入eMAC 310。同样地,L1数据行314还可以包括如在320处示出的在多个计数器之间分配的eMAC 318,L0数据行322还可以包括如在328处示出的在多个计数器之间分配的eMAC326,并且VER数据行330可以包括如在336处示出的在多个计数器之间分配的eMAC 334。尽管在312、320、328和336处将eMAC 310、318、326和334分别描绘为在数据行306、314、322和330中的多个计数器之间进行分配,但是这仅是如何嵌入eMAC的示例。其他的配置(例如,在数据行的开始、中间和结束处连续)可以与本公开一致。
在一操作示例中,计数器304、308、316和324可以各自分别与较低级别数据行L2306、L1 314、L0 322和VER 330相对应。这些计数器可以用于形成eMAC 310、318、326和334,以保护这些数据行。VER数据行330包括VER 332,其可以在加密明文数据342和对加密的数据行120解码时使用。例如,可以基于L2数据行306中计数器的当前值和在紧随其前的L3数据行302中的计数器304的值,使用加密操作来计算L2eMAC 310。然后,可以将eMAC分配到L2数据行306中,如在312处示出的。将在图4中进一步解释加密操作。然后,这些操作可以针对每一随后的数据行重复。例如,可以通过将L1数据行314中的计数器的当前值与计数器308的当前值组合来计算L1eMAC 318,可以通过将L0数据行322中的计数器的当前值与计数器316的当前值进行组合来计算L0eMAC 326,并且可以通过将VER数据行330中的计数器的当前值与计数器332的当前值进行组合来计算VER eMAC 334。然后,可以在加密/解密操作338中使用与存储器模块104中存储有加密的数据行120A的单元(例如,地址)相对应的VER 332和地址340,以将明文数据342加密到加密的数据行120A中并且将加密的数据行120A解密到明文数据342中。
图4描绘了根据本公开至少一个实施例用于针对图3中描绘的计数器系统并且也针对柔性计数器结构来计算嵌入式存储器认证码的示例性操作。尽管大型计数器的益处是显而易见的(例如,在设备100的可预见寿命中可以避免溢出),但是将计数器做得太大可能导致不同的问题。由于诸如在示例300中描绘的计数器结构会导致25%的空间开销,所以计数器组织的效率在MEE实现中非常重要。当受保护的存储器大小是128MB时,这工作得很好,这在现有的实现中会是典型的。但是,可以将未来的实现延伸到可以包括大型足迹应用的服务器。例如,假定存储器模块104中具有192千兆字节(GB)受保护的存储器的实现,将不得不预留存储模块104的48GB仅用于安全元数据122。牺牲48GB用于安全元数据122是不切实际的,并且可能使得在大型平台上实现诸如SGX的保护性系统被禁止。此外,一些操作系统(例如,微软Windows)已经就可以从OS征用多少存储器设置了要求。如果预留了比OS制造商所允许的更多的存储器,则从例如视窗硬件质量实验室(WHQL)获得硬件认证将会是不可能的。
与本公开一致,可以实质地减少(例如,减少50%)安全元数据122所需的存储器空间。由于例如将更多的计数器与相同数量的存储器存取合并在一起的能力,可以实现更好的性能。除了有效的计数器组织之外,最小化防止溢出对数据处理性能的影响也是重要的。自适应机制可以最小化存储器开销,并且同时,确保减少的存储器消耗不会以增加设备100的数据处理负担为代价。
在图4中描绘了示例400和402。示例400公开了如何基于示例300的计数器结构来计算MAC 310。在示例性加密操作中404中从右向左移动,基于128b AES密钥和包含56b的计数器306的当前值、34b地址(例如,与存储器模块104中将存储数据的存储器单元相对应)以及零填充(‘0’)的38b的另一128b输入,AES 128b加密可以生成128B密钥值(例如,各自包含64b的IP密钥1和IP密钥0,)。然后可以对由AES加密产生的128b密钥和L1数据行314中计数器的当前值(例如,总共512b)进行哈希运算(例如,可以进行组合,并且可以基于组合的数据的内容来计算值)以生成64b MAC。在示例400中,所计算的MAC可以是L1eMAC 218,该L1eMAC 218然后可以被分配到L1数据行314中,如在320处示出的。当从存储器模块104加载加密的数据(例如,加密的数据行120A)时,相同的过程还可以用于验证。可以从VEL级别开始并且向上到L3级别来执行“树径”,其中,可以针对每一数据行来计算新的MAC并将其与eMAC进行比较,以查看该数据行自从其被保存以来是否已经改变。新计算的MAC与eMAC不匹配表明该数据行在存储器模块104中被改变,可能是由于攻击。在树径期间确定的不连续性可以触发设备100中的安全例外,以保护设备不被损害。
示例402示出了与本公开一致的经修改的计数器结构。具体而言,L1数据行314’中的计数器在大小上已经从L1数据行314减小,并且添加了溢出计数器405。在示例402中,计数器316’被减小至24b。这意味着L1数据行314’可以包括的计数器是L1数据行314的两倍之多,并且从而可以考虑存储器模块104中两倍之多的单元来存储加密的数据行120A…D。但是,由于L1数据行314’中的计数器与L1数据行314中计数器的大小相比要小一半,所以其将快两倍地溢出(取决于针对与其相关联的存储器单元的活动)。通过与处于溢出状态的任何计数器组合,溢出计数器314’可以考虑这一情形。例如,如果在示例402中的计数器306’处于溢出状态,则当执行加密操作404’时,AES 128的输入可以包括来自溢出计数器406的64b当前值、来自计数器308’(来自先前级别的计数器)的24b当前值、34b地址和6b零填充。在至少一个实施例中,溢出的计数器(例如,计数器308’)可以在其使用溢出计数器406之后被重置并且再次开始计数。这意味着针对每次L1数据行314’中的计数器溢出,溢出计数器406可以仅自增一次。
此外,通过将更多的计数器打包到每一计数器行(例如,L1数据行314’)中,在给定相同大小的片上TLC的情况下,MEE 112可以利用高度减小的重放保护树进行操作。例如,类似SGS的保护系统的现有实现可以使用包括版本(版本、L0、L1、L2和L3)的5级重放保护树。使用24比特计数器和本申请中公开的各种机制,MEE 112能够将重放树减少至具有4个级别(存储在处理模块112中的版本、L0、L1和L2)。这一在级别方面的减少可以使得MEE 112能够在加密树径期间不得不遍历较少的级别用于加密或解密。已经通过仿真观测到,消除重放树的级别可以实质地减少由MEE122的加密机制所导致的性能影响(例如,减少11.8%)。除了改进的性能之外,计数器所要求的存储器模块104中的空间可以减少50%,这可以解决与保护系统(例如,SGX)的未来使用相关联的元数据空间开销问题。
图5描绘了根据本公开至少一个实施例的存储器加密引擎的示例性配置和包括溢出指示系统的柔性计数器的示例性结构。在图5中描绘两个示例以说明可以被实现以支持包括诸如在示例402中所公开的溢出特征的计数器结构的架构性改变。至少可能由引入溢出计数器406产生的问题是:每次在更新溢出计数器406时(例如,当计数器308’进入溢出状态时,L2数据行306’中的溢出计数器406可以被自增),取决于数据行中计数器的值的所有较低级别的eMAC也必须被更新。例如,当计数器406自增时,L1eMAC 318’连同依赖于L2数据行306’(未示出)中的16个计数器中的一个计数器的任何其他L1级别数据行一起被更新,用于计算其各自的eMAC。如在本申请中提及的,这种类型的更新被称为批量更新。为了允许有效的批量更新,可以修改MEE 112,例如在示例500中所阐释的。例如,可以将MEE 112修改为包括高速缓存请求滤波器504和加密请求滤波器506。对于高速缓存存取,应该阻止对正在重新生成eMAC的元数据高速缓存行的存取,因为这些值在变化。应该仅在一旦批量更新完成时才允许该存取。这可以通过将当前更新的数据行的地址维护在更新高速缓存行缓冲器508中来完成,该更新高速缓存行缓冲器508可以是例如寄存器、本地存储器等。在操作的示例中,可以将更新高速缓存行缓冲器508与进入的数据行存取请求进行比较,以阻止该进入的存取,直到数据行的更新完成为止。对于加密相关的存取,我们可以添加简单的高速缓存行更新队列510,其可以是寄存器或本地存储器,该寄存器或本地存储器用于保存由批量eMAC更新生成的AES操作或者由更新溢出计数器406导致的数据重新加密。现在,加密请求可以检查在存取AES逻辑之前在高速缓存行更新队列510中是否存在待处理的请求。为了避免潜在的死锁,来自高速缓存行更新队列510的请求可以比进入的加密请求具有更高的优先级。
示例502描绘了基于比特的标记系统,其可以有助于减小由溢出计数器使用导致的批量更新所要求的加密数据重处理的数量。随着将溢出计数器406引入到基本计数器结构,每当溢出计数器406在数据行中自增时,必须假定在相同数据行中的所有计数器由于其对溢出计数器406的可能依赖而发生改变,并且从而,必须重新计算基于数据行中这些可能被更新的计数器的所有eMAC。这一强制的假设可能导致有价值的数据处理能力的浪费性支出,因为当溢出计数器406自增时,可能仅数据行中的一个或几个计数器可能实际上正在依赖溢出计数器406。由于在所提出的示例402的计数器结构中,L2数据行314’包括可以与十六(16)个不同的数据行相对应的计数器的事实,效果被恶化,这会是浪费的批量的eMAC重处理的连锁效应的中心。为了对抗这一效果,在示例502中,引入与每一计数器相对应的标记“F”512,以指示当前依赖溢出计数器406的计数器。标记512可以提供首先检查溢出指示符512的选择性溢出计数器机制,而不是无条件地将溢出计数器406与数据行中的每一计数器连接在一起。如在示例502中示出的,标记512=0可以指示相对应的计数器318’尚未进入溢出状态,并且从而无需在加密操作中使用溢出计数器,因为计数器308’自身足够提供时间唯一性。在给定128b AES操作的情况下,使用70b的0填充,而不是64比特的溢出计数器406。如果标记512=1,则如在404’处示出的,可以在加密操作中使用溢出计数器406,以对溢出的计数器308’提供时间唯一性。
在加密种子中选择性地使用溢出计数器的益处可以包括减少数据处理开销。例如,当发生溢出且出现批量eMAC更新或发生数据行重新加密和MAC重新计算时,F=0的高速缓存行计数器无需更新其eMAC或重新加密数据,这是因为在计算基于计数器的随后的eMAC中不使用溢出计数器406。例如,如果当溢出计数器406自增时,仅数据行中的一个计数器使用溢出计数器406(例如,数据行L2 306中的计数器308),则在批量更新期间,仅一个标记(例如,F512)将被设置为“1”,并且仅针对时间唯一性依赖计数器308’的L1数据行的eMAC(例如,L1数据线314)将需要重新形成,以考虑溢出计数器406自增。对于与溢出计数器相关的批量更新,这可以极大地减少对性能的影响。
图6描绘了根据本公开至少一个实施例包括选择功能的示例性柔性计数器结构。虽然计数器溢出的概率可能较低,即使是对于诸如在示例402中描绘的尺寸减小的计数器,但是每一溢出会降低性能,因为其导致溢出计数器406自增,并且结果,可能触发批量eMAC更新(例如,和/或如果在VER级别发生溢出,则多个数据重新加密连同MAC更新)。在没有大型LLC的SoC产品中,该溢出变得更有问题,因为片外存取倾向于具有位置。利用数据流量模式中的位置,一些数据块(例如,“热”数据块)比其他数据块被更频繁地访问,这会使得相应的计数器比预期溢出得更快(即使跨数据行的平均计数器值保持为低)。为了避免由热块导致的不期望的计数器溢出和性能降低,可以引入自适应计数器映射系统以按照可以减少溢出的方式来管理在相关联的数据块之间的计数器映射。利用自适应映射,计数器大小不再相等。而是一些计数器比其他的更大。示例600示出了计数器大小的一种可能的布置。这里,每一元数据高速缓存行保存四(4)个36比特计数器、四(4)个20比特计数器、四(4)个16比特计数器和四(4)个10比特计数器,而不是在示例402中描绘的十六(16)个24比特计数器。在图6中描绘的计数器布置是为了说明目的如何布置计数器的示例,并且并不意在将本申请中公开的各种实施例限制在实现的任何特定方式。
除了在示例600中示出的各种大小的计数器之外,可以利用选择器602(例如,4比特)来增大计数器中的每一个,选择器602可以指向较低级别中的任何数据高速缓存行。可以基于计数器更新的频率动态地设置在计数器与所关联的数据高速缓存行之间的链接。这在示例600中进行了展示,其中先前的级别L2计数器可以包括与四个尺寸的计数器中的任何一个连接的溢出计数器。示例600示出了其中具有不同尺寸的两个计数器指向两个不同的加密的数据行(例如,存储在存储器模块104中的特定单元中)的示例。在此,加密的数据行120D被更频繁地存取,并且因而被分配较大的计数器(36比特计数器316’),而加密的数据行120A被分配较小的(20比特)计数器,因为其较不频繁地被更新。向加密的数据行120A分配20b计数器可以帮助避免20b计数器太迅速地溢出(或根本不溢出)。
在操作的示例中,可以从0到n-1来初始化选择器602,其中n是高速缓存行中计数器的数目。在示例600中,可以从0到15初始化选择器602。从初始化起,计数器0、1、2……可以指向高速缓存行0、1、2……。这一映射可以与没有自适应计数器映射的映射相同。随着系统操作,数据块可以被写入,并且从而,计数器被自增。在每一计数器更新时,可以就其是否接近溢出来检查计数器值。一种用于验证计数器状态的可能方式是设置指示计数器何时正接近进入溢出状态的阈值。例如,如果计数器值加阈值超过计数器的最大值,则重映射计数器可能是必要的。如果确定计数器接近溢出(例如,基于阈值),则自适应映射可以将数据行提升到更大的计数器。提升可以包括例如搜索具有下一个更大尺寸的计数器,以找到具有最小值的下一个更大尺寸的计数器。例如,如果10比特计数器的值处于或大于阈值,则可以执行搜索以找到具有最小值的16比特计数器。如果确定下一个更大尺寸的计数器的最小值小于要溢出的计数器值,则可以交换两个计数器。这一交换可以包括例如计数器值和选择器指针二者。根据上面的操作,可以将更频繁更新的加密的数据行120A…D提升至更大尺寸的计数器且较不频繁更新的加密的数据行120A…D可以逐渐移向更小尺寸的计数器,这允许系统基于计数器尺寸分配资源并且最小化计数器溢出的发生和与处理开销相关的数据。
图7描绘了根据本公开至少一个实施例用于支持柔性计数器系统中的选择功能的示例性配置。利用自适应计数器映射,在计数器和存储器模块104中相对应的较低级别数据行或存储器单元之间的映射不再是静态的。从而,逻辑可以用于配置选择器602以指向正确的较低级别的数据行或存储器单元。示例700示出了这样的逻辑的一种可能实现。在这样的逻辑中,当请求到来时,首先计算计数器索引702。计数器索引702是在没有自适应方案的情况下将用于定位计数器的索引,并且可以被容易地计算(例如,使用特定的加密的数据行120A…D的存储器模块104中的地址)。然后,如在704处描绘的,可以将计数器索引702与选择器602进行比较,以找到匹配的选择器602。因为可以固定选择器602的位置,所以可以将这一比较与多个比较器并行化。由于存在一个且可能仅存在一个指向特定的较低级别数据行或存储器单元的选择器,所以来自一个热向量706的结果可以用于读取出相对应的高速缓存行计数器并且向复用器708提供输入。例如,在示例700中,如果未使用自适应方案,则进入的请求用于被映射到第一计数器316’。但是,利用新的映射逻辑,可以将索引与十六(16)个选择器进行比较,并且代替地20比特计数器(例如,示例700中示出的第二计数器)由复用器708映射到特定的较低级别的数据行或存储器单元。
图8描绘了根据本公开至少一实施例用于存储器保护的示例性操作。在操作800中,可以接收用于将明文数据加密到加密数据中的请求。该请求可以由例如也包括MEE的处理模块中的处理核心生成。在操作802中,可以加载下一数据行(例如,从包括VER计数器的VER数据行开始,该VER计数器与加密数据将被写入的存储器单元相对应)以及下一级别向上的数据行(例如,从包含与VER数据行相对应的计数器的L0行开始)。操作804至808可以与在示例600和700中示出的示例性实施例相对应。在操作804中可以就计数器系统是否启用了溢出重映射进行确定(例如,计数器是否可以被重映射以帮助避免计数器溢出)。如果在操作804中确定系统启用了重映射,则在操作806中,可以就在加载的数据行中的任何一个数据行中的计数器(例如,VER数据行中的VER计数器或与L0数据行中的VER数据行相对应的计数器)的值是处于阈值处还是在阈值之上进行进一步确定。如果在操作806中确定任一个计数器处于阈值处或在阈值之上,则在操作808中可以发生重映射(例如,可以将存储器单元重映射到VER数据行中更大的计数器和/或VER数据行可以被重映射到L0数据行中的更大的计数器)。然后,在操作804中确定计数器系统未启用重映射、在操作806中确定没有计数器的值在阈值之上之后或者在操作808中的计数器重映射之后,在操作810中,可以使计数器自增。
然后,可以在操作812中就是否已经发生计数器溢出进行确定。如果在操作812中确定相关的计数器中没有计数器已经溢出,则在操作814中,可以重新形成针对加载的数据行(例如,VER数据行)的嵌入式MAC。然后,在操作816中可以就是否需要加载另外的数据行(例如,L1/L2和L2/L3)进行确定。在确定需要加载另外的数据行之后,返回到操作802。
返回到操作812,如果确定至少一个计数器已经溢出,则在操作818中,可以使其中计数器已经溢出的数据行中的溢出计数器自增。操作820至822可以与在示例502中示出的实施例相对应。然后,在操作820中,可以就系统是否启用溢出比特进行确定。如果在820中确定系统启用了溢出比特,则在操作822中,仅需要更新针对依赖于被标记为使用溢出计数器的计数器的较低级别数据行的eMAC。如果在820中确定柔性计数器未启用标记,则在操作824中,可以重新形成针对依赖于可能正在使用自增的溢出计数器的计数器的数据行(例如,同一数据行中所有的计数器作为自增的溢出计数器)的eMAC。在操作822和824之后,可以返回操作814。如果在操作816中确定无需加载进一步的数据行,则在操作826中,可以通过加密操作来对明文数据进行加密,该加密操作使用至少与存储器模块中加密数据将被存储的单元相对应的VER作为输入。
虽然图8描绘了根据实施例的操作,但是,可以理解的是,针对其他的实施例,并不需要图8中描绘的所有操作。实际上,在本申请中完全可以预期的是,在本公开的其他实施例中,在图8中描绘的操作、和/或在本申请中描述的其他操作,可以按照未在任一附图中特别示出的方式进行组合,但是仍然与本公开完全一致。从而,认为针对未在一幅附图中确切示出的特征和/或操作的权利要求在本公开的范围和内容之内。
如在本申请中和权利要求书中使用的,由术语“和/或”连接的项目列表可以指代所列出的项目的任何组合。例如,短语“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)卡、磁性卡或光学卡、或者是适合于存储电子指令的任何类型的介质。可以将其他实施例实现为由可编程控制设备执行的软件模块。
从而,本公开涉及用于存储器保护的柔性计数器系统。一般而言,使用柔性计数器结构可以使得用于支持设备中的存储器保护操作的计数器系统更加有效率。一种设备可以包括处理模块和存储器模块。存储器模块中的柔性计数器系统可以包括包含多个计数器的至少一个数据行。可以通过溢出计数器从现有的实现中减小和/或改变计数器的比特大小,上述溢出计数器可以考虑较小的计数器进入溢出状态。可以使用比特指示符来标识使用溢出计数器的计数器。在至少一个实施例中,与多个计数器中的每一计数器相对应的选择器可以能够将特定的存储器单元映射到特定的计数器。
以下的示例涉及另外的实施例。本公开的以下示例可以包括诸如用于存储器保护的设备、方法、用于存储当被执行时使得机器执行基于所述方法的动作的指令的至少一个机器可读介质、用于执行基于所述方法的动作的模块和/或柔性计数器系统的主题材料。
根据示例1,提供了一种包括存储器保护的设备。该设备可以包括至少包含柔性计数器系统的存储器模块和至少包含存储器加密引擎的处理模块,该存储器加密引擎用于执行以下中的至少一个:使用至少部分地由柔性计数器系统生成的安全元数据对从所述存储器模块加载的加密数据进行解密,或在将明文数据存储到所述存储器模块之前使用所述安全元数据对所述明文数据进行加密。
示例2可以包括示例1的要素,其中所述柔性计数器系统包括存储在所述存储器模块中的至少一个数据行,所述至少一个数据行包括多个计数器。
示例3可以包括示例2的要素,其中所述安全元数据至少包括由所述柔性计数器系统生成的计数器值。
示例4可以包括示例2至3中任何一个的要素,其中所述计数器值被加载到与所述处理模块中的所述存储器加密引擎相对应的高速缓存中,用于在加密或解密时使用。
示例5可以包括示例4的要素,其中所述存储器加密引擎包括高速缓存请求滤波器或加密请求滤波器中的至少一个。
示例6可以包括示例5的要素,其中所述高速缓存请求滤波器用于基于更新高速缓存行缓冲器来避免对所述高速缓存中的数据行的存取。
示例7可以包括示例5至6中任何一个的要素,其中所述加密请求滤波器用于避免在排队以基于高速缓存行更新队列进行更新的高速缓存中的数据行中执行加密操作。
示例8可以包括示例2至7中任何一个的要素,其中基于组成每一计数器的比特数目确定每一计数器的大小。
示例9可以包括示例8的要素,其中所述多个计数器包括计数器组,其中计数器的每一随后组中的计算器的大小逐渐减小。
示例10可以包括示例2至9中任何一个的要素,其中所述多个计数器包括至少一个溢出计数器。
示例11可以包括示例10的要素,其中所述数据行包括一个64比特溢出计数器和16个24比特计数器。
示例12可以包括示例10至11中的任何一个的要素,其中所述存储器加密引擎用于确定所述多个计数器中的计数器是否处于溢出状态并且当确定所述计数器处于溢出状态时通过将溢出计数器的当前值和所述计数器的当前值进行组合来确定计数器值。
示例13可以包括示例12的要素,其中所述至少一个数据行包括与所述多个计数器中的每一计数器相对应的比特,每一比特的状态指示相对应的计数器是否处于溢出状态。
示例14可以包括示例2至13中的任何一个的要素,其中所述至少一个数据行包括与所述多个计数器中的每一计数器相对应的选择器。
示例15可以包括示例14的要素,其中每一选择器用于将所述多个计数器中的相对应的计数器映射到所述存储器模块中较低级别的数据行或用于存储加密的数据的单元。
示例16可以包括示例15的要素,其中所述存储器加密引擎用于将在请求中接收的请求的计数器索引与在所述至少一个数据行中的每一选择器中设置的计数器索引进行比较,并控制复用器以将具有与所述请求的索引相匹配的索引的计数器与所述存储器模块中相对应的较低级别数据行或单元相关联。
示例17可以包括示例15至16中任何一个的要素,其中所述存储器加密引擎用于确定所述多个计数器中任何一个计数器的当前值是否处于阈值处或在阈值之上,并使得选择器将所述存储器模块中较低级别数据行或用于存储加密的数据的单元从所述多个计数器中被确定为具有处于阈值处或在阈值之上的当前值的计数器重映射到所述多个计数器中更大尺寸的计数器。
示例18可以包括示例1至17中任何一个的单元,其中所述柔性计数器系统包括存储在所述存储器模块中的至少一个数据行,所述至少一个数据行包括多个计数器,其中基于组成每一计数器的比特数目来确定每一计数器的大小。
根据示例19,提供一种用于存储器保护的方法。该方法可以包括接收在将明文数据存储到存储器模块之前对该明文数据进行加密的请求,从所述存储器模块中的柔性计数器系统加载与该请求相对应的数据行,所述数据行中的每一数据行包括多个计数器,针对每一加载的数据行确定是否需要重配置所述加载的数据行以针对所述加载的数据行中的计数器生成自增的值,如果确定为需要,则重配置所述加载的数据行,使用基于自增的计数器值的数据来对所述明文数据进行加密并且在存储器中存储加密的数据。
示例20可以包括示例19的要素,其中确定是否需要重配置所述数据行包括确定计数器值是否处于阈值处或在阈值之上。
示例21可以包括示例20的要素,进一步包括使得所述数据行中的至少一个选择器将当前被映射到被确定为处于阈值处或在阈值之上的较低级别数据行或存储器单元重映射到所述数据行中更大的计数器。
示例22可以包括示例19至21中任何一项的要素,其中确定是否需要重配置所述数据行包括确定计数器是否处于溢出状态,基于所述计数器被确定为处于溢出状态来使所述数据行中的溢出计数器自增,并且使用溢出计数器值和处于溢出状态的计数器的值来重新形成针对较低级别数据行的嵌入式存储器认证码。
示例23可以包括示例22的要素,并且可以进一步包括在与处于溢出状态的计数器相对应的数据行中设置比特标记,该比特标记指示溢出计数器的值和处于溢出状态的计数器的值被用于重新形成针对相对应的较低级别数据行的嵌入式存储器认证码。
示例24可以包括示例23的要素,其中重新形成针对较低级别数据行的嵌入式存储器认证码包括重新形成仅针对与设置了比特标记的计数器相对应的较低级别数据行的嵌入式存储器认证码。
示例25可以包括示例24的要素,其中重新形成嵌入式存储器认证码包括使用连接在一起的溢出计数器的当前值和被确定为处于溢出状态的计数器的当前值作为输入,在相对应的较低级别数据行上执行加密操作。
示例26可以包括示例19至25中任何一项的要素,其中确定是否需要重配置数据行包括确定计数器值是否处于阈值处或在阈值之上,并使得所述数据行中的至少一个选择器将当前被映射到被确定为处于阈值处或在阈值之上的计数器的较低级别数据行或存储器单元重映射到所述数据行中更大的计数器。
根据示例27提供了一种系统,至少包括设备,该系统被布置为执行上面的示例19至26中任何一项的方法。
根据示例28,提供了一种芯片,其被布置为执行上面的示例19至26中的任何一项的方法。
根据示例29,提供了至少一个机器可读介质,包括多个指令,响应于在计算设备上被执行,所述指令使得所述计算设备执行根据上面的示例19至26中的任何一项的方法。
根据示例30,提供了一种被配置用于存储器保护的设备,该设备被布置为执行上面的示例19至26中的任何一项的方法。
根据示例31,提供了一种用于存储器保护的系统。该系统可以包括用于接收在将明文数据存储到存储器模块之前对该明文数据进行加密的请求的模块,用于从所述存储器模块中的柔性计数器系统加载与该请求相对应的数据行的模块,所述数据行中的每一数据行包括多个计数器,用于针对每一加载的数据行确定是否需要重配置加载的数据行以针对所述加载的数据线中的计数器生成自增的值的模块,用于如果确定为需要,则重配置所述加载的数据行的模块,用于使用基于自增的计数器值的数据来对所述明文数据进行加密的模块以及用于在存储器中存储加密的数据的模块。
示例32可以包括示例31的要素,其中用于确定是否需要重配置数据行的模块包括用于确定计数器值是否处于阈值处或在阈值之上的模块。
示例33可以包括示例32的要素,并且可以进一步包括用于使得所述数据线中的至少一个选择器将当前被映射到被确定为处于阈值处或在阈值之上的较低级别数据行或存储器单元重映射到所述数据行中更大的计数器的模块。
示例34可以包括示例31至33中任何一项的要素,其中用于确定是否需要重配置数据行的模块包括用于确定所述计数器是否处于溢出状态的模块以及用于基于所述计数器被确定为处于溢出状态来使所述数据行中的溢出计数器自增的模块,以及用于使用溢出计数器值和处于溢出状态的计数器的值重新形成针对较低级别数据行的嵌入式存储器认证码的模块。
示例35可以包括示例34的要素,并且可以进一步包括用于在与处于溢出状态的计数器相对应的数据行中设置比特标记的模块,该比特标记指示溢出计数器的值和处于溢出状态的计数器的值被用于重新形成针对相对应的较低级别数据行的嵌入式存储器认证码。
示例36可以包括示例35的要素,其中用于重新形成针对较低级别数据行的嵌入式存储器认证码的模块包括用于重新形成仅针对与设置了比特标记的计数器相对应的较低级别数据行的嵌入式存储器认证码的模块。
示例37可以包括示例36的要素,其中用于重新形成嵌入式存储器认证码的模块包括用于使用连接在一起的溢出计数器的当前值和被确定为处于溢出状态的计数器的当前值作为输入,在相对应的较低级别数据行上执行加密操作的模块。
示例38可以包括示例31至37中任何一项的要素,其中确定是否需要重配置数据行包括确定计数器值是否处于阈值处或在阈值之上,并使得数据行中的至少一个选择器将当前被映射到被确定为处于阈值处或在阈值之上的计数器的较低级别数据行或存储器单元重映射到所述数据行中更大的计数器。
在本申请中已经使用的术语和表达方式被用作描述的术语且不作为限制,并且在使用这样的术语和表达方式中,没有意图将所示出和描述的特征(或其部分)的任何等同物排除在外,并且可以认识到的是,在权利要求书的范围之内可以做出各种修改。因此,权利要求书意在覆盖所有这样的等同物。
Claims (22)
1.一种包括存储器保护的设备,包括:
存储器模块,包括柔性计数器系统,其中,所述柔性计数器系统包括至少一个数据行、与所述至少一个数据行相关联的溢出计数器以及与所述至少一个数据行相关联的多个计数器,所述多个计数器中的每一个计数器包括比特标记,其中,每个比特标记被配置为指示所述多个计数器中的对应的计数器是否处于溢出状态;以及
处理模块,包括至少一个存储器加密引擎,用于进行以下中的至少一项:使用至少部分地由所述柔性计数器系统生成的安全元数据来解密从所述存储器模块加载的加密的数据,或者使用所述安全元数据在将明文数据存储在所述存储器模块中之前对所述明文数据进行加密,其中,所述存储器加密引擎用于:至少部分地基于所述多个计数器中的计数器的比特标记的状态,确定所述多个计数器中的计数器是否处于溢出状态;以及
至少部分地通过将所述溢出计数器的当前值与被确定为处于溢出状态的仅至少一个计数器的当前值连接在一起来生成所述安全元数据。
2.根据权利要求1所述的设备,其中,所述多个计数器中的每个计数器的大小是基于组成每个计数器的比特数目来确定的。
3.根据权利要求2所述的设备,其中,所述多个计数器包括计数器组,其中,在每个后续计数器组中的计数器的大小逐渐减小。
4.根据权利要求1所述的设备,其中,所述至少一个数据行包括与所述多个计数器中的每个计数器相对应的选择器,其中,每个选择器用于将所述多个计数器中的对应的计数器映射到所述存储器模块中较低级别的数据行或者用于存储加密的数据的单元。
5.根据权利要求1所述的设备,其中,所述存储器加密引擎还用于:
确定所述多个计数器中的任何计数器的当前计数器值是否处于阈值处或在阈值之上;以及
使得选择器将所述存储器模块中较低级别数据行或用于存储加密的数据的单元从所述多个计数器中被确定为具有处于所述阈值处或在所述阈值之上的当前值的计数器重映射到所述多个计数器中更大尺寸的计数器。
6.根据权利要求1所述的设备,其中,所述连接在一起包括:将处于所述溢出状态的仅至少一个计数器的当前值与所述溢出计数器的当前值和对应于存储器单元的地址连接在一起。
7.一种用于存储器保护的方法,包括:
接收在将明文数据存储到存储器模块之前对所述明文数据进行加密的请求;
从所述存储器模块中的柔性计数器系统加载与所述请求相对应的数据行,所述数据行中的每个数据行包括溢出计数器和多个计数器,所述多个计数器中的每个计数器包括比特标记,其中,每个比特标记被配置为指示所述多个计数器中的对应的计数器是否处于溢出状态;
针对每个加载的数据行:
至少部分地基于所述多个计数器中的计数器的比特标记的状态,确定所述多个计数器中的计数器是否处于溢出状态;
至少部分地通过将所述溢出计数器的当前值与被确定为处于溢出状态的仅至少一个计数器的当前值连接在一起来生成安全元数据;以及
使用所述安全元数据借助密码加密操作对所述明文数据进行加密。
8.根据权利要求7所述的方法,还包括:
至少部分地通过确定数据行中的所述多个计数器中的任何计数器的当前计数器值是否处于阈值处或在阈值之上来确定是否需要重配置数据行。
9.根据权利要求8所述的方法,还包括:
当数据行的所述多个计数器中的任何计数器的当前计数器值处于所述阈值处或在所述阈值之上时,使所述数据行中的至少一个选择器将当前被映射到具有处于所述阈值处或在所述阈值之上的当前计数器值的计数器的较低级别数据行或存储器单元重映射到所述数据行中更大的计数器。
10.根据权利要求7所述的方法,其中,所述多个计数器中的每个计数器的比特标记还指示其相应的计数器是否依赖于所述溢出计数器。
11.根据权利要求7所述的方法,还包括仅针对对应于所述多个计数器中的具有指示计数器处于溢出状态的比特标记的所述计数器的较低级别数据行重新形成嵌入式存储器认证码。
12.根据权利要求11所述的方法,其中,重新形成所述嵌入式存储器认证码包括使用连接在一起的所述溢出计数器的当前值和被确定为处于所述溢出状态的至少一个计数器的当前值作为输入,在对应的较低级别数据行上执行密码加密操作。
13.根据权利要求7所述的方法,其中,所述至少部分地通过连接在一起来生成所述安全元数据包括:将处于所述溢出状态的仅至少一个计数器的当前值与所述溢出计数器的当前值和对应于存储器单元的地址连接在一起。
14.至少一种非暂时性机器可读存储介质,在其上单独地或组合地存储有用于存储器保护的指令,所述指令在由一个或多个处理器执行时使所述一个或多个处理器执行以下操作:
接收在将明文数据存储到存储器模块之前对所述明文数据进行加密的请求;
从所述存储器模块中的柔性计数器系统加载与所述请求相对应的数据行,所述数据行中的每个数据行包括溢出计数器和多个计数器,所述多个计数器中的每个计数器包括比特标记,其中,每个比特标记被配置为指示所述多个计数器中的对应的计数器是否处于溢出状态;
针对每个加载的数据行:
至少部分地基于所述多个计数器中的计数器的比特标记的状态,确定所述多个计数器中的计数器是否处于溢出状态;
至少部分地通过将所述溢出计数器的当前值与被确定为处于溢出状态的仅至少一个计数器的当前值连接在一起来生成安全元数据;以及
基于所述计数器被确定为处于溢出状态,在所述数据行中增加溢出计数器;以及
使用所述安全元数据借助密码加密操作对所述明文数据进行加密。
15.根据权利要求14所述的非暂时性机器可读存储介质,其中,所述指令在被执行时还导致执行以下操作,包括:
至少部分地通过确定数据行中的所述多个计数器中的任何计数器的当前计数器值是否处于阈值处或在阈值之上来确定是否需要重配置数据行。
16.根据权利要求15所述的非暂时性机器可读存储介质,还包括指令,所述指令在由一个或多个处理器执行时,使所述一个或多个处理器执行以下操作:
当数据行的所述多个计数器中的任何计数器的当前计数器值处于所述阈值处或在所述阈值之上时,使所述数据行中的至少一个选择器重映射当前被映射到具有处于所述阈值处或在所述阈值之上的当前计数器值的计数器的较低级别数据行或存储器单元。
17.根据权利要求14所述的非暂时性机器可读存储介质,其中,所述多个计数器中的每个计数器的比特标记还被配置为指示其相应的计数器是否依赖于所述溢出计数器。
18.根据权利要求14所述的非暂时性机器可读存储介质,其中,所述指令在被执行时还导致执行以下操作,包括:
仅针对对应于所述多个计数器中的具有指示计数器处于溢出状态的比特标记的所述计数器的较低级别数据行重新形成嵌入式存储器认证码。
19.根据权利要求18所述的非暂时性机器可读存储介质,其中,用于重新形成所述嵌入式存储器认证码的所述指令包括,用于使用连接在一起的所述溢出计数器的当前值和被确定为处于所述溢出状态的至少一个计数器的当前值作为输入在对应的较低级别数据行上执行密码加密操作的指令。
20.根据权利要求14所述的非暂时性机器可读存储介质,其中,所述用于至少部分地通过连接在一起来生成所述安全元数据的指令包括:将处于所述溢出状态的仅至少一个计数器的当前值与所述溢出计数器的当前值和对应于存储器单元的地址连接在一起。
21.一种用于存储器保护的设备,包括:
存储指令的存储器;以及
耦合到所述存储器的处理器,所述指令在被所述处理器执行时执行根据权利要求7-13中的任一项所述的方法。
22.一种用于存储器保护的装置,包括用于执行根据权利要求7-13中的任一项所述的方法的单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111173683.7A CN114077733A (zh) | 2015-03-26 | 2016-02-26 | 用于存储器保护的柔性计数器系统 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/670,061 | 2015-03-26 | ||
US14/670,061 US9798900B2 (en) | 2015-03-26 | 2015-03-26 | Flexible counter system for memory protection |
PCT/US2016/019890 WO2016153722A1 (en) | 2015-03-26 | 2016-02-26 | Flexible counter system for memory protection |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111173683.7A Division CN114077733A (zh) | 2015-03-26 | 2016-02-26 | 用于存储器保护的柔性计数器系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107430670A CN107430670A (zh) | 2017-12-01 |
CN107430670B true CN107430670B (zh) | 2021-10-29 |
Family
ID=56975635
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111173683.7A Pending CN114077733A (zh) | 2015-03-26 | 2016-02-26 | 用于存储器保护的柔性计数器系统 |
CN201680012304.7A Active CN107430670B (zh) | 2015-03-26 | 2016-02-26 | 用于存储器保护的柔性计数器系统 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111173683.7A Pending CN114077733A (zh) | 2015-03-26 | 2016-02-26 | 用于存储器保护的柔性计数器系统 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9798900B2 (zh) |
EP (2) | EP3274847B1 (zh) |
CN (2) | CN114077733A (zh) |
WO (1) | WO2016153722A1 (zh) |
Families Citing this family (21)
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 |
US9678894B2 (en) * | 2015-03-27 | 2017-06-13 | Intel Corporation | Cache-less split tracker architecture for replay protection trees |
CN107771324B (zh) * | 2015-09-17 | 2021-11-26 | 慧与发展有限责任合伙企业 | 用于有效地存储初始化向量的系统、方法及存储介质 |
CN105608050B (zh) * | 2015-12-31 | 2019-02-01 | 华为技术有限公司 | 数据存储方法及系统 |
US20170249092A1 (en) * | 2016-02-25 | 2017-08-31 | Canon Kabushiki Kaisha | Apparatus having volatile memory, memory control method, and storage medium |
US10031834B2 (en) | 2016-08-31 | 2018-07-24 | Microsoft Technology Licensing, Llc | Cache-based tracing for time travel debugging and analysis |
US10042737B2 (en) | 2016-08-31 | 2018-08-07 | Microsoft Technology Licensing, Llc | Program tracing for time travel debugging and analysis |
US10528485B2 (en) | 2016-09-30 | 2020-01-07 | Intel Corporation | Method and apparatus for sharing security metadata memory space |
US10324851B2 (en) | 2016-10-20 | 2019-06-18 | Microsoft Technology Licensing, Llc | Facilitating recording a trace file of code execution using way-locking in a set-associative processor cache |
US10310977B2 (en) * | 2016-10-20 | 2019-06-04 | Microsoft Technology Licensing, Llc | Facilitating recording a trace file of code execution using a processor cache |
US10310963B2 (en) | 2016-10-20 | 2019-06-04 | Microsoft Technology Licensing, Llc | Facilitating recording a trace file of code execution using index bits in a processor cache |
US10489273B2 (en) | 2016-10-20 | 2019-11-26 | Microsoft Technology Licensing, Llc | Reuse of a related thread's cache while recording a trace file of code execution |
US10540250B2 (en) | 2016-11-11 | 2020-01-21 | Microsoft Technology Licensing, Llc | Reducing storage requirements for storing memory addresses and values |
US10318332B2 (en) | 2017-04-01 | 2019-06-11 | Microsoft Technology Licensing, Llc | Virtual machine execution tracing |
US10296442B2 (en) | 2017-06-29 | 2019-05-21 | Microsoft Technology Licensing, Llc | Distributed time-travel trace recording and replay |
US11082231B2 (en) | 2017-12-29 | 2021-08-03 | Intel Corporation | Indirection directories for cryptographic memory protection |
US10725861B2 (en) | 2018-06-28 | 2020-07-28 | Intel Corporation | Error correction code memory security |
US11321459B2 (en) | 2018-12-27 | 2022-05-03 | Intel Corporation | Method, system and apparatus for error correction coding embedded in physically unclonable function arrays |
US11429751B2 (en) * | 2019-07-01 | 2022-08-30 | Rajant Corporation | Method and apparatus for encrypting and decrypting data on an integrated circuit |
CN112651054B (zh) * | 2020-12-30 | 2022-10-14 | 海光信息技术股份有限公司 | 一种内存数据完整性保护方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101536007A (zh) * | 2006-11-08 | 2009-09-16 | 美光科技公司 | 用于对外部非易失性存储器中所存储信息进行加密的方法及系统 |
CN102054137A (zh) * | 2009-11-10 | 2011-05-11 | 美信集成产品公司 | 用于集成微控制器和外部存储系统的块加密安全 |
CN102770853A (zh) * | 2009-12-23 | 2012-11-07 | 思杰系统有限公司 | 用于在多核系统中管理大型高速缓存服务的系统和方法 |
CN104463020A (zh) * | 2014-11-27 | 2015-03-25 | 大连理工大学 | 存储器数据完整性保护的方法 |
Family Cites Families (60)
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 |
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 |
US7360021B2 (en) * | 2004-04-15 | 2008-04-15 | International Business Machines Corporation | System and method for completing updates to entire cache lines with address-only bus operations |
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 |
US20070050642A1 (en) * | 2005-08-26 | 2007-03-01 | International Business Machines Corporation | Memory control unit with configurable memory encryption |
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 |
US7426253B2 (en) * | 2006-08-21 | 2008-09-16 | International Business Machines Corporation | Low latency counter event indication |
US8306060B2 (en) | 2006-11-07 | 2012-11-06 | Samsung Electronics Co., Ltd. | System and method for wireless communication of uncompressed video having a composite frame format |
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 | パナソニック株式会社 | 情報セキュリティ装置およびカウンタ制御方法 |
US7917702B2 (en) * | 2007-07-10 | 2011-03-29 | Qualcomm Incorporated | Data prefetch throttle |
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 | 주식회사 하이닉스반도체 | 오버플로우하지 않는 카운터 |
US8555081B2 (en) | 2007-10-30 | 2013-10-08 | Vmware, Inc. | Cryptographic multi-shadowing with integrity verification |
US8171309B1 (en) | 2007-11-16 | 2012-05-01 | Marvell International Ltd. | Secure memory controlled access |
JPWO2009087972A1 (ja) | 2008-01-09 | 2011-05-26 | 日本電気株式会社 | データ送信装置、データ受信装置、これらの方法、コンピュータプログラム、そのデータ通信システム |
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 |
US8099636B2 (en) * | 2008-07-15 | 2012-01-17 | Caterpillar Inc. | System and method for protecting memory stacks using a debug unit |
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 |
US9076019B2 (en) | 2011-06-29 | 2015-07-07 | Intel Corporation | Method and apparatus for memory encryption with integrity check and protection against replay attacks |
WO2013100965A1 (en) | 2011-12-28 | 2013-07-04 | Intel Corporation | A low-overhead cryptographic method and apparatus for providing memory confidentiality, integrity and replay protection |
WO2013100964A1 (en) | 2011-12-28 | 2013-07-04 | Intel Corporation | Method and system for protecting memory information in a platform |
US8819455B2 (en) | 2012-10-05 | 2014-08-26 | Intel Corporation | Parallelized counter tree walk for low overhead memory replay protection |
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 |
US9413357B2 (en) * | 2014-06-11 | 2016-08-09 | Cavium, Inc. | Hierarchical statistically multiplexed counters and a method thereof |
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 |
US10228852B1 (en) * | 2016-03-25 | 2019-03-12 | Amazon Technologies, Inc. | Multi-stage counters |
US10261919B2 (en) | 2016-07-08 | 2019-04-16 | Hewlett Packard Enterprise Development Lp | Selective memory encryption |
US10528485B2 (en) | 2016-09-30 | 2020-01-07 | Intel Corporation | Method and apparatus for sharing security metadata memory space |
-
2015
- 2015-03-26 US US14/670,061 patent/US9798900B2/en active Active
-
2016
- 2016-02-26 CN CN202111173683.7A patent/CN114077733A/zh active Pending
- 2016-02-26 EP EP16769280.5A patent/EP3274847B1/en active Active
- 2016-02-26 EP EP20165021.5A patent/EP3690661B1/en active Active
- 2016-02-26 WO PCT/US2016/019890 patent/WO2016153722A1/en active Application Filing
- 2016-02-26 CN CN201680012304.7A patent/CN107430670B/zh active Active
-
2017
- 2017-10-24 US US15/792,350 patent/US10546157B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101536007A (zh) * | 2006-11-08 | 2009-09-16 | 美光科技公司 | 用于对外部非易失性存储器中所存储信息进行加密的方法及系统 |
CN102054137A (zh) * | 2009-11-10 | 2011-05-11 | 美信集成产品公司 | 用于集成微控制器和外部存储系统的块加密安全 |
CN102770853A (zh) * | 2009-12-23 | 2012-11-07 | 思杰系统有限公司 | 用于在多核系统中管理大型高速缓存服务的系统和方法 |
CN104463020A (zh) * | 2014-11-27 | 2015-03-25 | 大连理工大学 | 存储器数据完整性保护的方法 |
Also Published As
Publication number | Publication date |
---|---|
EP3690661B1 (en) | 2021-03-31 |
US20180107846A1 (en) | 2018-04-19 |
US9798900B2 (en) | 2017-10-24 |
CN107430670A (zh) | 2017-12-01 |
US20160283748A1 (en) | 2016-09-29 |
US10546157B2 (en) | 2020-01-28 |
EP3690661A1 (en) | 2020-08-05 |
CN114077733A (zh) | 2022-02-22 |
EP3274847A4 (en) | 2018-08-29 |
EP3274847B1 (en) | 2020-04-15 |
EP3274847A1 (en) | 2018-01-31 |
WO2016153722A1 (en) | 2016-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107430670B (zh) | 用于存储器保护的柔性计数器系统 | |
US11088846B2 (en) | Key rotating trees with split counters for efficient hardware replay protection | |
US10536274B2 (en) | Cryptographic protection for trusted operating systems | |
US10810138B2 (en) | Enhanced storage encryption with total memory encryption (TME) and multi-key total memory encryption (MKTME) | |
CN110447032B (zh) | 管理程序与虚拟机之间的存储器页转换监测 | |
EP3274850B1 (en) | Protecting a memory | |
US10726120B2 (en) | System, apparatus and method for providing locality assertion between a security processor and an enclave | |
EP3320478B1 (en) | Secure handling of memory caches and cached software module identities for a method to isolate software modules by means of controlled encryption key management | |
US10691627B2 (en) | Avoiding redundant memory encryption in a cryptographic protection system | |
EP3271828B1 (en) | Cache and data organization for memory protection | |
US10102370B2 (en) | Techniques to enable scalable cryptographically protected memory using on-chip memory | |
EP2947594A2 (en) | Protecting critical data structures in an embedded hypervisor system | |
CN106716435B (zh) | 设备与安全处理环境之间的接口 | |
JP6320558B2 (ja) | メッセージ認証コードタグを用いたシステムとともに使用するためのロールバック攻撃からのデータの完全性の保護 | |
US20170085542A1 (en) | Separation of software modules by controlled encryption key management | |
US10528746B2 (en) | System, apparatus and method for trusted channel creation using execute-only code | |
US11494523B2 (en) | Direct memory access mechanism | |
CN107077560B (zh) | 用于建立安全工作空间的所有权的系统 | |
CN107533516B (zh) | 用于管理对在装置的芯片上的系统的安全模块的多次访问的设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |