具有多视角模式搜索的无标签隐式完整性的制作方法

未命名 09-29 阅读:107 评论:0


1.本文描述的实施例通常涉及计算系统的领域,并且更具体地,涉及具有多视角(multi-perspective)模式搜索的无标签隐式完整性。


背景技术:

2.密码计算可以指代在处理器部件内部采用密码机制的针对计算机系统安全的解决方案。一些密码计算系统可以在存储器指针或用户数据离开处理器边界并进入某个外部存储器单元或被通信到某个其他设备之前,在处理器核心的内部对这种数据采用加密和/或其他密码机制。此外,加密和解密可以是存储器加载和存储操作的一部分。这种灵活的加密操作可以实质上减少与当前解决方案相关联的典型开销,当前解决方案例如访问具有权限、存储器范围、存储器标签或其他安全元数据的表,因为这种表可能很大,存储在外部存储器单元中,并且访问很耗时。
附图说明
3.本文描述的实施例在附图的图中通过示例的方式而不是通过限制的方式示出,在附图中相同的附图标记指代相同的元素。
4.图1示出了根据某些实施例的用于具有多视角模式搜索的无标签隐式完整性的计算设备。
5.图2是根据本文的实现方式的详细说明在经加密的数据中发生的示例数据完整性违反的示意图。
6.图3示出了根据本文的实现方式的用于使用具有多视角模式搜索的无标签隐式完整性来访问存储器中的数据的示例指针。
7.图4示出了根据某些实施例的针对具有多视角模式搜索的无标签隐式完整性的示例流程。
8.图5示出了根据某些实施例的针对使用版本阈值评估的具有多视角模式搜索的无标签隐式完整性的示例流程。
9.图6示出了根据某些实施例的针对用于检测边界溢出的具有多视角模式搜索的无标签隐式完整性的示例流程。
10.图7是示出根据至少一个实施例的示例处理器核心和存储器的框图。
11.图8是根据至少一个实施例的示例计算机架构的框图。
具体实施方式
12.各种实施例针对用于例如具有多视角模式搜索的无标签隐式完整性的技术。
13.密码计算可以指代在处理器部件内部采用密码机制的针对计算机系统安全的解决方案。一些密码计算系统可以在存储器指针或用户数据离开处理器边界并进入某个外部存储器单元或被通信到某个其他设备之前,在处理器核心的内部对这种数据采用加密和/
或其他密码机制。这种灵活的加密操作可以显著减少与当前解决方案相关联的典型开销,当前解决方案例如访问具有权限、存储器范围或其他安全元数据的表,因为这种表可能很大,存储在外部存储器单元中,并且访问很耗时。
14.数据完整性是计算的重要方面。数据损坏可能发生在各种实例中,并且对任何数据损坏的检测可以防止许多问题。在当前的一些系统中,通过产生、存储和验证消息认证码(message authentication code,mac)(例如,k-mac sha3码)来实现损坏检测,该mac在密码学上很强。然而,在空间和计算能力方面,存在与使用与mac的使用相关的附加元数据相关联的成本,并且如果存储器加载和存储操作在处理器核心中执行处理的密码技术(例如,在密码计算实现方式中),则成本可能显著增加。例如,应该利用用于存储mac的空间来增强每个缓存行和寄存器。这样的计算成本可以被包括在计算管线等的总延迟中。
15.本文的实现方式可以提供数据完整性和漏洞(exploit)防止,包括防止软件错误、漏洞和易损性,同时避免当前技术的缺点中的一些缺点(例如,上面描述的关于mac的使用的成本)。在一些实施例中,例如,通过使用隐式完整性检查,可以在密码计算的上下文中并作为经加密的存储器加载和存储操作的一部分,在处理器核心处支持数据完整性和漏洞防止。隐式完整性背后的原理一般可以描述如下。用户数据典型地是低熵的,并且通常会展示出模式(例如,超过阈值的多个相等字节可能存在于特定数量的字节的数据中,或者两个最高半字节(nibble)频率的数量可能超过阈值,等等)。当数据被加密时,密文的损坏或错误的密码密钥或微调(tweak)的使用可能会导致没有模式的经解密的明文。通过检查某些经解密的内容的模式或低熵状态,可以检测到数据损坏。
16.在一些实施例中,当数据在核心中被解密以指示潜在的完整性违反时,通过更新处理器状态(该处理器状态可由软件访问),可以在处理器核心中支持隐式完整性检查。软件可能能够通过读取相关的处理器状态信息来对潜在的完整性违反作出反应。在某些实施例中,可以利用处理器状态(例如,标志寄存器中的比特)来指示完整性违反,并且新指令(例如,分支指令)可以对标志比特作出反应。指令可以是处理器的指令集架构(instruction set architecture,isa)的一部分。其他实施例可以触发异常、调用软件异常处理程序、或中断处理程序或故障处理程序等。
17.本公开的实施例通过提供具有多视角模式搜索的无标签隐式完整性来解决使用存储器标记技术的上述挑战。本公开的实现方式的具有多视角模式搜索的无标签隐式完整性允许对所访问数据中的数据完整性违反(例如,漏洞、错误、易损性、释放后使用(use-after-free,uaf)等)进行检测。具有指针标签版本作为指针的一部分(例如,虚拟地址/线性地址)的指针可以用于对数据进行加密/解密。该标签值可以用作对可微调加密算法的微调或针对流密码的计数器或初始化值,以便使密文依赖于与密钥组合的微调值。当稍后使用访问指针中的标签值来对数据进行解密时,针对模式(例如,低熵)检查数据。如果没有揭露模式,则本文的实现方式更新指针的指针标签版本并对数据进行重新解密,以检查针对相邻版本的经重新解密的数据中是否存在模式。附加的指针标签版本和模式测试可以应用于数据,以确定指针的任何其他版本是否在数据中产生模式。通过检查指针的其他版本,实现方式可以识别数据访问中潜在的数据完整性违反(例如,释放后使用(uaf)漏洞和缓冲器上溢/下溢)。即,如果在指针的另一版本而不是用于访问数据的指针中展示出模式,并且用于对数据进行解密的当前指针版本没有揭露模式,则该数据很可能由指针的另一版本所拥
有,其中,指针的先前(释放的)版本正在被用于访问该指针的另一版本(释放后使用)。
18.本文的实现方式提供了减少存储器存储要求的技术优点,其中存储器加密模型不利用任何附加的标签存储。此外,本文的实现方式由于避免了用于取回标签数据值的附加的存储器访问,因此提供了处理器的改进的性能,其中,该标签数据值用于与作为针对被标记的存储器的每个颗粒(granule)的指针的一部分被包括的标签值进行比较。本文的实现方式的存储器加密方案不利用大量存储器访问来更新关于存储器分配或释放事件的标签值。然后,在存储器使用效率和性能方面将这些节省传递给最终用户。
19.图1示出了根据某些实施例的用于具有多视角模式搜索的无标签隐式完整性的系统100。系统100可以包括:存储器模块102,该存储器模块102具有存储存储器设备104-1、104-2、
……
104-n(本文称为存储存储器设备104)和管理存储器设备105;具有数据完整性(data integrity,di)管理器112的存储器控制器110;以及具有数据块108-1、108-2、
……
108-n(本文称为数据块108)的存储器线106,其中n是任何合适的整数。在各种实施例中,存储器模块102可以包括多个管理存储器设备105。在一个或多个实施例中,di管理器112可以例如通过对管理存储器设备105中的数据对象的一个或多个经解密的版本进行解密并且执行熵测试或模式分析,来针对存储在存储器模块102中的数据提供数据完整性违反检测。
20.在许多实施例中,di管理器112还可以或可替代地针对存储在存储器模块102中的数据提供密码安全的存储器加密和完整性。在本文描述的各种实施例中,di管理器112可以经由管理存储器设备(例如,管理存储器设备105),针对存储在存储器模块102的多个存储存储器设备104中的数据提供一个或多个数据完整性违反检测。在一些实施例中,di管理器112可能能够隐式地检测在存储存储器设备104或管理存储器设备105中的数据块或元数据块中发生的数据完整性违反。
21.存储器线106可以表示要被存储在存储器模块102中的数据。在各种示例中,存储器线106可以包括已经从(例如,主机设备的)处理器缓存中驱逐的、要被存储在存储器模块102中的缓存线,或者要从存储器(例如,存储器模块102)中加载/取回并且被放置到处理器缓存中的缓存线。在一些实施例中,数据块108-1、108-2、
……
108-n可以各自表示存储器线106的不同部分,例如,存储器行。在各种实施例中,表示数据块108中的每个数据块的数据可以被存储在对应的存储存储器设备104-1、104-2、
……
104-n中。例如,表示数据块108-1的数据可以被存储在存储存储器设备104-1中,表示数据块108-2的数据可以被存储在存储存储器设备104-2中,以此类推。在一个示例中,di管理器112可以对数据块108-1执行比特编码操作并将结果存储在存储存储器设备104-1中,然后(或同时)对数据块108-2执行比特编码操作并将结果存储在存储存储器设备104-2中,并且针对存储器线106的每个数据块以此类推。因此,在一些实施例中,存储器线106的数据块108的数量可以等于在存储器模块102中的存储存储器设备104的数量。
22.在一些实施例中,di管理器112可以将与存储器线相关联的元数据存储在管理存储器设备105中,以启用针对存储在存储器模块102中的数据的错误检测、定位、校正、加密和完整性中的一个或多个。在许多这样的实施例中,存储在管理存储器设备105中的数据的至少一部分是基于存储器线106的数据生成的。在一些实施例中,与存储器线相关联的元数据块是基于表示存储器线的数据块的存储位置被存储的。例如,如果表示特定存储器线的数据块被存储在存储存储器设备104的相应的第一物理行中,则对应的元数据块被存储在
管理存储器设备105的第一物理行中;如果表示另一存储器线的数据块被存储在存储存储器设备104的相应的第二物理行中,则对应的元数据块被存储在管理存储器设备105的第二物理行中,以此类推。其他实施例可以包括不同的存储模式。
23.在各种实施例中,存储器模块102可以包括计算机存储器,该计算机存储器包括可以由存储存储器设备104和管理存储器设备105表示的多个存储器芯片。例如,管理存储器设备105可以是第一存储器芯片,存储存储器设备104-1可以是第二存储器芯片,存储存储器设备104-2可以是第三存储器芯片,以此类推。在一个示例中,存储器模块102可以包括具有存储器芯片组的dimm。在一些实施例中,计算机系统中可以包括多个存储器模块102(例如,dimm)。在一些这样的实施例中,计算机中的存储器模块102的集合可以被称为计算机的外部存储器(例如,随机存取存储器(random access memory,ram))或被包括在计算机的外部存储器内。一些实施例可以包括缓存层次体系,其中di管理器112可以位于缓存层次体系中的任何级别处,例如,在处理器和l1缓存之间、在l1缓存和l2缓存之间、在最后一级缓存之前或之后,等等。
24.在各种实施例中,存储器模块102的存储存储器设备104和管理存储器设备105可以包括ecc存储器、ddr存储器、硬盘驱动存储装置、独立磁盘冗余阵列(redundant array of independent disk,raid)存储装置、闪速存储器、非易失性存储器、3d交叉点存储器等中的一个或多个。在一些实施例中,存储器模块102中的每个存储存储器设备104和管理存储器设备105可以是相同或相似的。例如,每个设备可以包括(一个或多个)相同量的(一个或多个)相同类型的存储器。作为另一示例,每个设备可以包括相同的外形规格(例如,物理维度、电连接器引出线等)。在这样的实施例中,存储存储器设备104与管理存储器设备105之间的区别可以在于它们被用于的目的。因此,在一些这样的实施例中,存储器设备是用作管理存储器设备105还是用作存储存储器设备104可以是任意的和/或可选择的。
25.从冗余角度来看,存储器设备之间的区别可以是表示物理故障的可能程度的物理边界。例如,一个物理芯片或其相关联的布线可能故障,而其他物理芯片或其相关联的布线可能保持可操作。在其他实施例中,物理边界可以在物理设备内限定,例如,物理行、列、存储体(bank)或存储器电路的其他邻接。例如,在raid系统中,每个存储存储器设备104可以是不同的硬盘驱动器,并且管理存储器设备105可以是用于校正一个或多个故障硬盘驱动器的单独硬盘驱动器。
26.存储器控制器110可以包括di管理器112以及其他电路装置(例如,用于与存储器模块102通信的电路装置)。di管理器112可以包括比特编码器/解码器114、指针标签版本生成器116、完整性验证器118和任何其他合适的电路装置。在一些实施例中,di管理器112可以例如经由比特编码器/解码器114、指针标签版本生成器116和完整性验证器118中的一个或多个来实现具有多视角模式搜索的无标签隐式完整性。在一个或多个实施例中,di管理器112可以利用比特编码器/解码器114、指针标签版本生成器116和完整性验证器118来针对存储在存储器模块102中的数据提供具有多视角模式搜索的无标签隐式完整性。di管理器112可以利用管理存储器设备105来存储数据,该数据用于实现使用本文所描述的具有多视角模式搜索的无标签隐式完整性的数据完整性违反检测。例如,由比特编码器/解码器114、指针标签版本生成器116和/或完整性验证器118中的一个或多个生成的数据可以存储在管理存储器设备105中。例如,诸如数据完整性测试结果和元数据之类的数据可以被生成
并存储在管理存储器设备105或单独的片上存储器中,以促进对数据完整性违反的检测和/或校正,以及促进对存在于存储在一个或多个存储存储器设备104中的数据中的已校正数据错误的完整性验证。
27.在各种实施例中,di管理器112能够至少部分地通过利用di管理器112的部件(例如,比特编码器/解码器114、指针标签版本生成器116和/或完整性验证器118)对数据块108执行各种逻辑操作,使用具有多视角模式搜索的无标签隐式完整性针对存储存储器设备104提供数据完整性违反检测。在各种实施例中,di管理器112可以经由单个管理存储器设备(例如,管理存储器设备105)针对要由一组存储存储器设备104存储的数据来实现这些特征中的一个或多个。
28.图2是根据本文的实现方式的详细说明在经加密的数据中发生的示例数据完整性违反的示意图200。在所示的示例中,存在一些明文内容202。明文内容202可以包括任何适当类型的数据,例如,缓存线或可以在处理器内使用的其他类型的数据。如果明文内容202具有模式(即,具有低熵),则可以将这种内容与随机数据区分开。当明文内容202被加密203(其中加密算法近似于随机预言(random oracle))时,产生密文204,该密文204不再能够与随机数据区分开。密文204上的任何完整性违反205(例如,使用错误的密钥或微调)导致与原始密文204不同的损坏的密文206。对损坏的密文206的任何随后的解密207操作将导致与原始明文内容202不同的损坏的明文值208。
29.由于解密是加密的逆操作,所以解密算法也近似于随机预言。因此,损坏的明文208也不能够与随机数据区分开。此外,由于与解密预言相关联的“雪崩效应”,因此损坏的明文208不能够与随机数据区分开。即使密文204中的单个比特改变会影响经解密的明文(例如,208)的所有比特。由于这些原因,检查解密操作的结果的熵可以是用于检测数据完整性违反的可靠测试。这种方法可以称为隐式完整性。类似地,随机填充(random pad)或来自流密码的计算出的流可以与数据线组合以产生随机密文。使用可逆函数(例如,xor操作)移除填充或流可以将数据返回到其原始形式。可以使用用于访问存储器的指针中的标签值(虚拟/线性地址)来选择要使用的流密码输出或随机填充。
30.在密码计算的上下文中,隐式完整性可能特别重要,因为存储器加载和存储操作在数据离开cpu核心之前并且在进入级别1(level-1,l1)缓存(或存储器层次体系的其他部分)之前对数据进行加密,并在数据进入cpu核心时对其进行类似的解密。隐式完整性允许cpu核心通过执行解密操作并检查经解密的内容的熵来无缝地检测数据上的数据完整性违反。这是一种低成本的操作,其成本远远低于上面描述的mac方法的成本。
31.返回参考图1,根据本文的实现方式,di管理器112使用具有多视角模式搜索的无标签隐式完整性来实现数据完整性违反检测。在一个实现方式中,通过识别经解密的数据中的模式来确定是否使用了正确的密钥或微调来解密数据,以实现隐式完整性。例如,cpu可以使用各种标签值来对数据解密进行微调,以确定是否使用当前指针标签或另一标签值来对原始数据进行加密。模式可以在数据中被检测为一连串的零或一、重复字节、或对应于ascii格式、浮点格式、整数格式、码、unicode等的一连串的标准字符或符号。这些模式也可以发生在预期的字节边界或其他预期的对齐上。在一些实现方式中,可以通过随机密文比特串中的预期出现的阈值来计算这些重复模式的出现。熵的这种差异成为用于确定数据是否被正确解密或(潜在地)属于另一分配(在释放后使用的情况下)的机制。模式的概率跨更
大的数据区域(例如,64字节或更大的缓存线)增加。
32.在一些实现方式中,di管理器112可以利用用于访问存储器地址的指针中的指针标签,以便对存储器中的数据对象(分配)进行加密。例如,比特编码器/解码器114可以利用流密码,其中指针的版本(本文称为指针版本或指针标签)可以用作初始化向量(initialization vector,iv),并且指针地址是计数器。
33.在一些实现方式中,可以对指针的切片进行认证或加密。图3示出了根据本文的实现方式的用于使用具有多视角模式搜索的无标签隐式完整性来访问存储器中的数据的示例指针300。示例指针300可以包括确定数量的比特,该确定数量的比特被分解为比特的部分,包括例如元数据缓冲器大小310、经加密的标签320、利用微调加密330、明文微调340和明文缓冲器大小350。
34.在一个实现方式中,可以使用密钥对指针300的切片进行加密以产生范围编码的指针,其中大小字段(例如,明文缓冲器大小350)可以确定要用作针对经加密的指针切片(包括标签值320)的微调的地址比特数,如图3所示。这使得指针300的经加密的部分依赖于它所引用的数据的大小和位置。标签或版本320可以被包括在指针300的经加密的部分中,使得标签应该被解密。这可以防止对手伪造指针标签值。其他实施例可以通过使用被截断以在指针内适合的消息认证码(mac)、使用对手未知的密钥来防止伪造指针,使得篡改指针值或标签将导致无效的mac值,并导致处理器生成异常或其他错误指示以识别对指针的试图非法修改。
35.然后,可以由处理器使用指针300,以通过使用指针300作为对数据加密流密码和密钥的微调或iv,来对存储器中的数据对象进行加密。当加载数据对象时,可以使用流密码(或者类似的使用不可变指针比特作为微调的块密码)来使用密钥对数据对象进行解密。
36.返回参考图1,di管理器112可以使用比特编码器/解码器114、指针标签版本生成器116和完整性验证器118来实现无标签隐式完整性,以使用经编码的指针(例如,示例指针300)来识别经解密的缓存线中的重复字节。在已经由比特编码器/解码器114对缓存线进行解密之后,完整性验证器118确定在经解密的数据线中是否存在模式。在一个实现方式中,完整性验证器118执行熵测试或模式测试以确定经解密的数据中是否存在模式。例如,熵测试可以包括确定在经解密的数据中其值彼此相等的数据实体的数量、确定在经解密的数据中其值彼此相等的相邻数据实体的数量、确定在经解密的数据中其值等于来自一组特殊值中的至少一个特殊值的数据实体的数量、或者确定n个最高数据实体值频率的总和。熵测试可以检查在经解密的数据中的一个或多个模式,并决定经解密的数据是否具有由阈值定义的低熵。例如,在一个实现方式中,完整性验证器118可以检查是否存在彼此相等的4个或更多个16比特字(例如,在一组32个字中)。可替代地,完整性验证器可以针对缓存线上的64个字节检查是否存在具有相同值的8个字节。在本文的实现方式中,其他示例模式检查或模式检查的组合也是可能的。
37.如果完整性验证器118确定经解密的数据中存在模式,则该完整性验证器118假定用于访问经解密的数据的指针是正确的指针,并且不存在漏洞。然而,如果没有出现模式,则实现方式提供了两种可能性:(1)存在可能的漏洞,或者(2)数据实际上是随机的(或者随机寻找,没有出现模式)。第二选项被称为假阴性(由于随机数据)。在数据中没有出现明确模式的情况下,一些实现方式可以选择(例如,从存储器表中)查找存储器标签,以验证用于
访问存储器颗粒的该指针标签是否与存储在存储器中用于所访问的数据颗粒的标签值匹配。
38.在本文的一些实现方式中,为了解决由于随机数据场景而导致的潜在假阴性,di管理器112可以尝试改变或更新指针中标签的版本,以确定是否使用指针标签的另一版本来对数据进行加密并再次重复解密过程。指针标签版本生成器116可以更新指针标签版本。在一些实现方式中,指针标签版本根据对系统100如何释放和重新分配指针的确定理解而递增。例如,存储器分配器可以在存储器被释放之后针对每个随后的存储器分配选择顺序版本。指针标签版本可以递增一或递增任何其他确定的间隔。在一些实现方式中,指针标签版本被随机更新为指针标签的任何可能的版本号。在这种情况下,di管理器112可以验证标签值的所有可能版本,并使用每个版本来对数据进行解密,以同样的方式针对每个版本搜索经解密的数据中的模式。
39.比特编码器/解码器114然后利用更新后的指针标签版本号来对经加密的数据对象进行重新解密(例如,使用版本号作为加密微调),并且完整性验证器118测试在经重新解密的数据对象中的模式。如果没有出现模式,则可以用同样的方式测试附加版本。在一些实现方式中,对附加版本进行测试直到版本的阈值数量。在一些实现方式中,版本的阈值数量由系统100确定,并且可以基于系统的计算资源。在一些实现方式中,版本的阈值数量与指针标签的可能版本的数量相同。硬件可以并行地测试多个或所有版本,从而对数据进行解密并针对模式分析经解密的数据,以改进性能。
40.如果所尝试的指针版本中没有一个指针版本指示在经解密的数据中存在模式,则完整性验证器118推断出原始经解密的数据实际上是随机的,并且不存在数据完整性违反(例如,漏洞等)。在这种情况下,原始指令可以在没有检测到数据完整性违反的情况下继续执行(例如,加载指令以访问数据)。
41.然而,如果被测试的随后版本中的一个版本揭露另一指针在解密时产生模式化数据,则可以确定确实发生了数据完整性违反。在一些实现方式中,数据完整性违反是释放后使用(uaf)漏洞,其中使用释放的指针来访问重新分配的数据。
42.在一些实现方式中,数据完整性违反是缓冲器溢出条件。在缓冲器溢出的情况下,缓冲器的相邻分配可以在每个缓冲器的结束(或开始)处填充比特的确定模式(例如,比特的特殊随机模式),以表示缓冲器边界。当缓冲器的数据被加密和/或解密时,可以使用缓冲器大小(或位置)值来对缓冲器数据以及标签版本进行加密/解密,以便在可能驻留在同一缓存线上的相邻缓冲器之间进行区分。完整性验证器118可以通过专门寻找用于表示缓冲器边界的比特的确定模式来测试缓冲器的经解密的数据中的模式。当在整个缓存线上测试时,这可以揭露缓冲器何时溢出,和/或揭露其数据中不应该存在模式的相邻缓冲器中的模式。
43.响应于完整性验证器118确定发生了数据完整性违反,完整性验证器可以使处理器用信号通知异常(或其他错误),以向软件警告潜在的危害。在一些实现方式中,软件存储器分配处理程序随后可以通过例如检查与分配相关的元数据来采取附加步骤以确定异常是否为假阳性。在一些实施例中,如果发生数据完整性违反,则硬件可以(例如,在标签的存储器表中)查找针对访问存储器颗粒的标签,然后如果针对存储器的所访问的颗粒的指针标签和存储器标签不匹配,则向软件触发异常。
44.给定一组至少三个标签值,可以跨任何两个相邻分配之间的边界来指派不同的标签值。即使在重新分配相邻存储器区域时应该保留针对现有分配的标签值,情况也是如此。下面进一步讨论用于针对新分配来选择标签值的可能过程。
45.用于空间分离的标签可以在与用于时间分离的标签或版本分开的指针字段中表示,或者统一的标签字段可以用于这两个目的。在这种情况下,可以利用超过三个的附加值,以避免针对存储器中的给定位置快速重用给定标签值。使用单独的邻接标签字段允许独立于如由相邻缓冲器的不同邻接标签所指示的相邻缓冲器的标签对具有相同邻接标签值的相同存储器位置的版本的标签进行测试。以这种方式,相邻缓冲器被加密的方式与它们相邻的缓冲器不同,这允许针对邻接进行不同的模式测试。
46.邻接模式测试可以在相邻缓冲器的开始或结束处寻找填充,以确定原始指针是否超出或低于其缓冲器的范围,并进入其数据解密展示出存在填充模式的相邻缓冲器。填充可以由存储器分配器插入到存储器分配中。在一个实现方式中,填充可以是一连串的特殊随机模式的比特(不太可能在数据中自然发生)、零(例如,4个连续的零字节或其他特殊值)等,从而表示存在邻接的模式。该模式可以指示缓冲器的开始,使得从另一邻接标签对该特定模式的任何访问或经过该特定模式的任何访问都可以触发异常或其他错误。每个邻接标签的所有版本标签可以用于依次解密缓存线以确定邻接是否存在于缓存线上。针对相邻标签值的版本展示出模式但没有特定于缓冲器的模式的开始的缓存线随后可以指示存储器访问经过缓冲器的起始位置但位于中间的某处,并再次导致处理器向软件触发异常或其他错误通知。
47.瞬时临界安全不变量:没有相邻存储器区域被指派相同的标签值。
48.连续临界安全不变量:瞬时临界安全不变量在时间上的每一时刻都成立,即,给定存储器区域更新的任意序列(即,分配或解除分配),没有相邻的存储器区域被指派相同的标签值。
49.定义1:“存储器区域”是被指派了单个标签值的存储器的连续范围,即,活动分配、现在被释放的先前分配或先前未被分配的存储器。所有存储器区域占据有限的、连续的、有界的线性地址范围(例如,由所支持的线性地址宽度限定)。
50.定义2:将在瞬时临界安全不变量的证明中描述的两种情况都适合共同的模板:初始配置是满足非暂时临界安全不变量的三个相邻存储器区域的序列。目标是改变中间存储器区域中一个或多个字节的标签值,而不改变指派给周围分配的标签值。让不同的大写字符象征性地表示不同的标签值。大写字符串表示具有指定标签值的未指定大小的相邻存储器区域(即,相邻字符表示相邻存储器区域)。
51.引理1:任意数量的存储器区域更新可以在一系列操作的方面表示,这些操作至多引入一个新的存储器区域边界并将新的标签值指派给单个存储器区域。
52.引理1的证明:通过归纳法证明:
53.基本情况1(0个新边界):来自定义3的整个中间存储器区域被指派新的标签值。
54.基本情况2(1个新边界):将单个边界插入到来自定义3的中间存储器区域中,并且在边界之上或边界之下的新存储器区域被指派新的标签值,而另一新存储器区域保留其原始标签值。
55.归纳情况(n+1个新边界):将n+1个新边界插入到来自定义3的中间存储器区域中。
56.证明:将具有最低地址的新边界插入到来自定义3的中间存储器区域,从而在该中间存储器区域内形成新的下存储器区域和上存储器区域。通过归纳法,我们可以继续处理相对于新的上存储器区域的其余n个边界。证明完毕。
57.暂时临界安全不变量的证明:用以下情况证明:
58.情况1:将abba的初始配置(如定义3所描述的那样被格式化,从而表示相同的标签值被放在具有不同的标签值的存储器区域的两端)改变为引入一个新的存储器区域边界的不同配置。
59.abba可以改变为acba、abca,这取决于是否应该向原来具有标签值b的中间存储器区域的下部或上部指派新的标签值。这些标签值更新都不会违反瞬时临界安全不变量。
60.情况2:将abbc的初始配置改变为引入一个新的存储器区域边界的不同配置。
61.abbc可以改变为acbc或abac。这些标签值更新都不会违反瞬时临界安全不变量。
62.情况3:将初始配置改变为引入多于一个新的存储器区域边界的不同配置。
63.这可以简化为一系列重新配置,其中每个重新配置都符合根据引理1的前两种情况。
64.证明完毕。
65.注意,利用了标签值符号a、b和c,表示当至少有三个标签值可用时,可以处置重新分配的任何序列。
66.在一些实施例中,di管理器可以测试所有可能的标签值(通过针对每个标签微调对数据进行解密,然后测试模式),并将在数据中展示模式的一个或多个标签值发送回处理器(例如,在与缓存线相关联的元数据中)。处理器可以使用该元数据与用于访问数据的指针值进行比较,以确定响应于所报告的元数据标签值与用于访问缓存线的指针中的标签值不匹配,是否存在可能的存储器完整性故障。这样的实施例可以允许在di管理器不知道指针中的访问标签值的情况下针对存储器检查模式。
67.图4示出了根据某些实施例的针对具有多视角模式搜索的无标签隐式完整性的示例流程400。流程的各种操作可以由任何合适的电路装置(例如,计算设备的处理器或处理单元、计算设备的控制器、存储器模块的控制器或计算设备的其他部件)执行。示例流程400可以表示可以由图1的系统100的一个或多个部件(例如,数据完整性(di)管理器112)执行或在该一个或多个部件上实现的一些或所有操作。实施例在该上下文中不受限制。
68.在框410处,处理器可以使用指针来访问存储在存储器层次体系中的经加密的数据。然后,在框420处,处理器可以使用指针的指针标签的当前版本来对经加密的数据进行解密,以产生第一经解密的数据。在框430处,处理器可以对第一经解密的数据执行熵测试。
69.随后,在框440处,处理器可以响应于熵测试在经解密的数据中未能检测到模式,而使用指针的指针标签的一个或多个不同版本来对经加密的数据进行解密,以产生一个或多个其他经解密的数据。在框450处,处理器可以对一个或多个其他经解密的数据执行熵测试。最后,在框460处,处理器可以响应于熵测试在一个或多个其他经解密的数据中检测到模式,而向处理器用信号通知关于经加密的数据的异常。
70.图5示出了根据某些实施例的针对使用版本阈值评估的具有多视角模式搜索的无标签隐式完整性的示例流程500。流程的各种操作可以由任何合适的电路装置(例如,计算设备的处理器或处理单元、计算设备的控制器、存储器模块的控制器或计算设备的其他部
件)执行。示例流程500可以表示可以由图1的系统100的一个或多个部件(例如,数据完整性(di)管理器112)执行或在该一个或多个部件上实现的一些或所有操作。实施例在该上下文中不受限制。
71.在框510处,处理器可以执行加载指令以访问存储器。然后,在框520处,处理器可以使用来自加载指令的指针(例如,地址)来对数据对象进行解密。在决策框530处,处理器可以确定是否在经解密的数据对象中发现模式。在一个实现方式中,处理器可以利用熵测试来确定经解密的数据对象中是否存在模式。
72.如果在经解密的数据对象中发现模式,则流程500前进到框540,其中处理器可以认为指针是匹配的并执行加载指令。然而,如果在经解密的数据对象中没有发现模式,则流程500前进到框550,其中处理器可以更新指针的指针版本。在一个实现方式中,指针版本也被称为指针标签。在一个实现方式中,更新指针版本包括递增指针版本。
73.在决策框560处,处理器确定是否达到版本阈值。在一个实现方式中,版本阈值是被生成和测试的不同指针版本的数量。如果达到版本阈值,则流程500前进到框570,其中处理器可以假定未能识别在原始经解密的对象中的模式是假阴性,并且执行加载指令。
74.在另一方面,如果在决策框560处尚未达到版本阈值,则流程500前进到框580,其中处理器可以使用更新后的指针版本(例如,地址)来对数据对象进行重新解密。然后,在决策框590处,处理器可以确定是否在经重新解密的数据对象中发现模式。如果在经重新解密的数据对象中发现模式,则流程500进行到框595,其中向处理器触发异常。在一个实现方式中,异常可以包括释放后使用(uaf)异常,该释放后使用(uaf)异常指示可能检测到数据上的uaf漏洞。另一方面,如果在决策框590处,在经重新解密的数据对象中没有检测到模式,则流程500返回到框550,其中更新指针版本,并且流程500如上面所讨论的继续进行。
75.图6示出了根据某些实施例的针对用于检测边界溢出的具有多视角模式搜索的无标签隐式完整性的示例流程600。流程的各种操作可以由任何合适的电路装置(例如,计算设备的处理器或处理单元、计算设备的控制器、存储器模块的控制器或计算设备的其他部件)执行。示例流程600可以表示可以由图1的系统100的一个或多个部件(例如,数据完整性(di)管理器112)执行或在该一个或多个部件上实现的一些或所有操作。实施例在该上下文中不受限制。
76.在框610处,处理器使用指针来访问存储在缓冲器数据结构中的经加密的数据。在框620处,处理器可以使用指针的指针标签的当前版本和缓冲器大小来对经加密的数据进行解密,以产生第一经解密的数据。然后,在框630处,处理器可以对第一经解密的数据执行熵测试。
77.随后,在框640处,处理器可以响应于熵测试在经解密的数据中未能检测到用于根据相邻缓冲器数据结构描绘缓冲器数据结构的模式,而使用指针的指针标签的一个或多个不同版本和缓冲器大小来对经加密的数据进行解密,以产生一个或多个其他经解密的数据。然后,在框650处,处理器可以对一个或多个其他经解密的数据执行熵测试。最后,在框660处,处理器可以响应于熵测试在一个或多个其他经解密的数据中检测到模式,而向处理器用信号通知指示缓冲器溢出到相邻缓冲器数据结构中的异常。
78.图7-图8是根据本文公开的实施例可以使用的示例计算机架构的框图。通常,可以使用本领域中已知的用于处理器和计算系统的任何计算机架构设计。在示例中,本领域中
已知的用于膝上型电脑、桌面型电脑、手持pc、个人数字助理、平板计算机、工程工作站、服务器、网络设备、服务器、家电、网络中枢、路由器、开关、嵌入式处理器、数字信号处理器(digital signal processor,dsp)、图形设备、视频游戏设备、机顶盒、微控制器、智能电话、移动设备、可穿戴电子设备、便携式媒体播放器、手持设备和各种其他电子设备的系统设计和配置也适用于本文描述的计算系统的实施例。通常,用于本文公开的实施例的适当计算机架构可以包括但不限于图7-图8所示的配置。
79.图7是根据实施例的处理器的示例说明。处理器700是可以结合上述实现方式使用的一种类型的硬件设备的示例。例如,根据本公开的实现方式,处理器700可以是系统100的一部分,其实现具有多视角模式搜索的无标签隐式完整性。处理器700可以是任何类型的处理器,例如,微处理器、嵌入式处理器、数字信号处理器(dsp)、网络处理器、多核心处理器、单核心处理器或执行代码的其他设备。虽然在图7中仅示出了一个处理器700,处理元件可以可替代地包括多于一个图7所示的处理器700。处理器700可以是单线程核心,或者对于至少一个实施例,处理器700可以是多线程的,因为它可以每个核心包括多于一个硬件线程上下文(或“逻辑处理器”)。
80.图7还示出了根据实施例的耦合到处理器700的存储器702。存储器702可以是本领域技术人员已知或以其他方式可用的各种存储器(包括存储器层次体系的各种层)中的任何一个。这种存储器元件可以包括但不限于随机存取存储器(ram)、只读存储器(read only memory,rom)、现场可编程门阵列(field programmable gate arrary,fpga)的逻辑块、可擦除可编程只读存储器(erasable programmable read only memory,eprom)和电可擦除可编程rom(electrically erasable programmable rom,eeprom)。
81.处理器700可以执行与本文详细描述的算法、过程或操作相关联的任何类型的指令。通常,处理器700可以将元素或物品(例如,数据)从一种状态或事物转换为另一种状态或事物。
82.代码704可以是要由处理器700执行的一个或多个指令,该代码704可以存储在存储器702中,或者可以存储在软件、硬件、固件或其任何合适的组合中,或者在适当的情况下并且基于特定用途存储在任何其他内部或外部部件、设备、元件或对象中。在一个示例中,处理器700可以遵循由代码704指示的指令的程序序列。每个指令进入前端逻辑706,并由一个或多个解码器708处理。解码器可以生成微操作(例如,以预先定义的格式的固定宽度微操作)作为其输出,或者可以生成反映原始代码指令的其他指令、微指令或控制信号。前端逻辑706还包括寄存器重命名逻辑710和调度逻辑712,该寄存器重命名逻辑710和调度逻辑712通常分配资源并使对应于指令的操作排队以供执行。
83.处理器700还可以包括具有一组执行单元716a、716b、716n等的执行逻辑714。一些实施例可以包括多个专用于特定功能或功能集合的执行单元。其他实施例可以仅包括一个执行单元或可以执行特定功能的一个执行单元。执行逻辑714执行由代码指令指定的操作。
84.在完成执行由代码指令指定的操作之后,后端逻辑718可以引退代码704的指令。在一个实施例中,处理器700允许无序执行,但按次序利用指令的引退。引退逻辑720可以采用各种已知形式(例如,重排序缓冲器等)。以这种方式,处理器700在代码704的执行期间至少关于由解码器生成的输出、由寄存器重命名逻辑710利用的硬件寄存器和表以及由执行逻辑714修改的任何寄存器(未示出)来进行变换。
85.虽然图7中未示出,但处理元件可以包括具有处理器700的芯片上的其他元件。例如,处理元件可以包括存储器控制逻辑以及处理器700。处理元件可以包括i/o控制逻辑和/或可以包括与存储器控制逻辑集成的i/o控制逻辑。处理元件还可以包括一个或多个缓存。在一些实施例中,非易失性存储器(例如,闪速存储器或熔丝)还可以被包括在具有处理器700的芯片上。
86.图8示出了根据实施例的被布置在点到点(point-to-point,ptp)配置中的计算系统800。特别地,图8示出了一种系统,其中处理器、存储器和输入/输出设备通过多个点到点接口互连。通常,本文描述的计算系统或计算设备中的一个或多个可以以与计算系统800相同或类似的方式配置。例如,根据本公开的实现方式,计算系统800可以与实现用于访问密码计算元数据和用于缓存扩展的无冲突散列的系统100相同。
87.处理器870和880可以被实现为单核心处理器874a和884a或多核心处理器874a-874b和884a-884b。处理器870和880可以各自包括由它们相应的一个或多个核心使用的缓存896a和896b。共享缓存(未示出)可以被包括在任一处理器中或在两个处理器之外,但仍经由p-p互连与处理器连接,使得如果处理器被置于低功率模式下,则任一个或两个处理器的本地缓存信息可以存储在共享缓存中。
88.处理器870和880还可以各自包括集成的存储器控制器(memory controller,mc)逻辑872和882,以与存储器元件832和834通信,该存储器元件832和834可以是本地附接到相应的处理器的主存储器的部分。在替代实施例中,存储器控制器逻辑872和882可以是与处理器870和880分离的离散逻辑。存储器元件832和/或834可以存储要由处理器870和880在实现本文概述的操作和功能时使用的各种数据。
89.处理器870和880可以是任何类型的处理器,例如,结合其他附图讨论的那些处理器。处理器870和880可以分别使用点到点接口电路878和888经由点到点(ptp)接口850交换数据。处理器870和880可以各自使用点到点接口电路876、886、894和898经由单独的点到点接口852和854与输入/输出(input/output,i/o)子系统890交换数据。i/o子系统890还可以使用接口电路892经由高性能图形接口839与高性能图形电路838交换数据,该接口电路892可以是ptp接口电路。在一个实施例中,高性能图形电路838是专用处理器,例如,高吞吐量mic处理器、网络或通信处理器、压缩引擎、图形处理器、gpgpu、嵌入式处理器等。i/o子系统890还可以与显示器通信,以显示人类用户可查看的数据。在替代实施例中,图8所示的ptp链路中的任一个或全部可以被实现为多点总线而不是ptp链路。
90.i/o子系统890可以经由接口电路896与总线816通信。总线816可以具有在通过其通信的一个或多个设备,例如,总线桥818和i/o设备814。总线桥818可以经由总线820与其他设备通信,该其他设备例如用户接口822(例如,键盘、鼠标、触摸屏或其他输入设备)、通信设备827(例如,调制解调器、网络接口设备或可以通过计算机网络860进行通信的其他类型的通信设备)、音频i/o设备824和/或数据存储设备819。数据存储设备819可以存储代码和数据830,该代码和数据830可以由处理器870和/或880执行。在替代实施例中,总线架构的任何部分可以利用一个或多个ptp链路来实现。
91.图8中所描绘的计算机系统是可以用于实现本文讨论的各种实施例的计算系统的实施例的示意图。可以认识到的是,图8中所描绘的系统的各种部件可以被组合在片上系统(system-on-a-chip,soc)架构中,或者被组合在能够实现本文提供的示例和实现方式的功
能和特征的任何其他适当配置中。
92.以下示例涉及其他实施例。示例1是一种用于促进具有多视角模式搜索的无标签隐式完整性的装置。示例1的装置包括:一个或多个处理器,所述一个或多个处理器包括用于进行以下操作的硬件电路装置:使用指针来访问存储在存储器层次体系中的经加密的数据;使用所述指针的指针标签的当前版本来对所述经加密的数据进行解密,以产生第一经解密的数据;对所述第一经解密的数据执行熵测试;响应于所述熵测试在所述第一经解密的数据中未能检测到模式,而使用所述指针的指针标签的一个或多个不同版本来对所述经加密的数据进行重新解密,以产生一个或多个其他经解密的数据;对所述一个或多个其他经解密的版本执行所述熵测试;以及响应于所述熵测试在所述一个或多个其他经解密的数据中检测到所述模式,而向所述一个或多个处理器用信号通知关于所述经加密的数据的异常。
93.在示例2中,示例1的主题可以可选地包括:其中,所述一个或多个不同版本的数量是根据版本的阈值数量来确定的。在示例3中,示例1-2中任一项的主题可以可选地包括:其中,所述异常是释放后使用异常。在示例4中,示例1-3中任一项的主题可以可选地包括:其中,所述模式包括以下各项中的至少一个:重复字节、重复半字节、重复字、一连串的零、一连串的一、一连串的零和一的组合或者一连串的标准字符或标准符号。
94.在示例5中,示例1-4中任一项的主题可以可选地包括:其中,所述不同版本包括源自所述当前版本的顺序版本。在示例6中,示例1-5中任一项的主题可以可选地包括:其中,所述不同版本包括所述指针标签的所有可能版本。在示例7中,示例1-6中任一项的主题可以可选地包括:其中,所述硬件电路装置还用于:响应于所述熵测试在所述一个或多个其他经解密的数据中未能检测到所述模式,而执行加载所述第一经解密的数据的指令。
95.在示例8中,示例1-7中任一项的主题可以可选地包括:其中,所述硬件电路装置还用于:响应于所述熵测试在所述第一经解密的数据中检测到所述模式,而执行加载所述第一经解密的数据的指令。在示例9中,示例1-8中任一项的主题可以可选地包括:其中,所述经加密的数据是使用缓冲器大小被进一步解密的,其中,所述熵测试用于检测指示两个缓冲器之间的边界的模式,并且其中,所述异常是针对边界溢出的。
96.示例10是一种用于促进具有多视角模式搜索的无标签隐式完整性的方法。示例10的方法可以包括:由处理设备使用指针来访问存储在存储器层次体系中的经加密的数据;使用所述指针的指针标签的当前版本来对所述经加密的数据进行解密,以产生第一经解密的数据;对所述第一经解密的数据执行熵测试;响应于所述熵测试在所述第一经解密的数据中未能检测到模式,而使用所述指针的指针标签的一个或多个不同版本来对所述经加密的数据进行重新解密,以产生一个或多个其他经解密的数据;对所述一个或多个其他经解密的版本执行所述熵测试;以及响应于所述熵测试在所述一个或多个其他经解密的数据中检测到所述模式,而用信号通知关于所述经加密的数据的异常。
97.在示例11中,示例10的主题可以可选地包括:其中,所述一个或多个不同版本的数量是根据版本的阈值数量来确定的。在示例12中,示例10-11的主题可以可选地包括:其中,所述模式包括以下各项中的至少一个:重复字节、重复半字节、重复字、一连串的零、一连串的一、一连串的零和一的组合或者一连串的标准字符或标准符号。在示例13中,示例10-12的主题可以可选地包括:其中,所述不同版本包括源自所述当前版本的顺序版本。
98.在示例14中,示例10-13的主题可以可选地包括:其中,所述不同版本包括所述指针标签的所有可能版本。在示例15中,示例10-14的主题可以可选地还包括:响应于所述熵测试在所述一个或多个其他经解密的数据中未能检测到所述模式,而执行加载所述第一经解密的数据的指令。在示例16中,示例10-15的主题可以可选地还包括:响应于所述熵测试在所述第一经解密的数据中检测到所述模式,而执行加载所述第一经解密的数据的指令。
99.示例17是一种用于促进具有多视角模式搜索的无标签隐式完整性的非暂时性计算机可读存储介质。示例17的非暂时性计算机可读存储介质在其上存储有可执行计算机程序指令,所述可执行计算机程序指令在由一个或多个处理器执行时,使得所述一个或多个处理器执行包括以下各项的操作:由处理设备使用指针来访问存储在存储器层次体系中的经加密的数据;使用所述指针的指针标签的当前版本来对所述经加密的数据进行解密,以产生第一经解密的数据;对所述第一经解密的数据执行熵测试;响应于所述熵测试在所述第一经解密的数据中未能检测到模式,而使用所述指针的指针标签的一个或多个不同版本来对所述经加密的数据进行重新解密,以产生一个或多个其他经解密的数据;对所述一个或多个其他经解密的版本执行所述熵测试;以及响应于所述熵测试在所述一个或多个其他经解密的数据中检测到所述模式,而向所述一个或多个处理器用信号通知关于所述经加密的数据的异常。
100.在示例18中,示例17的主题可以可选地包括:其中,所述一个或多个不同版本的数量是根据版本的阈值数量来确定的。在示例19中,示例17-18的主题可以可选地包括:其中,所述模式包括以下各项中的至少一个:重复字节、重复半字节、重复字、一连串的零、一连串的一、一连串的零和一的组合或者一连串的标准字符或标准符号。在示例20中,示例17-19的主题可以可选地包括:其中,所述操作还包括:响应于所述熵测试在所述一个或多个其他经解密的数据中未能检测到所述模式,而执行加载所述第一经解密的数据的指令;以及响应于所述熵测试在所述第一经解密的数据中检测到所述模式,而执行加载所述第一经解密的数据的指令。
101.示例21是一种用于促进具有多视角模式搜索的无标签隐式完整性的系统。示例21的系统可以可选地包括:存储器,所述存储器用于存储数据块;以及处理器,所述处理器通信地耦合到所述存储器,所述处理器用于进行以下操作:使用指针来访问存储在存储器层次体系中的经加密的数据;使用所述指针的指针标签的当前版本来对所述经加密的数据进行解密,以产生第一经解密的数据;对所述第一经解密的数据执行熵测试;响应于所述熵测试在所述第一经解密的数据中未能检测到模式,而使用所述指针的指针标签的一个或多个不同版本来对所述经加密的数据进行重新解密,以产生一个或多个其他经解密的数据;对所述一个或多个其他经解密的版本执行所述熵测试;以及响应于所述熵测试在所述一个或多个其他经解密的数据中检测到所述模式,而向所述处理器用信号通知关于所述经加密的数据的异常。
102.在示例22中,示例21的主题可以可选地包括:其中,所述一个或多个不同版本的数量是根据版本的阈值数量来确定的。在示例23中,示例21-22中任一项的主题可以可选地包括:其中,所述异常是释放后使用异常。在示例24中,示例21-23中任一项的主题可以可选地包括:其中,所述模式包括以下各项中的至少一个:重复字节、重复半字节、重复字、一连串的零、一连串的一、一连串的零和一的组合或者一连串的标准字符或标准符号。
103.在示例25中,示例21-24中任一项的主题可以可选地包括:其中,所述不同版本包括源自所述当前版本的顺序版本。在示例26中,示例21-25中任一项的主题可以可选地包括:其中,所述不同版本包括所述指针标签的所有可能版本。在示例27中,示例21-26中任一项的主题可以可选地包括:其中,所述硬件电路装置还用于:响应于所述熵测试在所述一个或多个其他经解密的数据中未能检测到所述模式,而执行加载所述第一经解密的数据的指令。
104.在示例28中,示例21-27中任一项的主题可以可选地包括:其中,所述硬件电路装置还用于:响应于所述熵测试在所述第一经解密的数据中检测到所述模式,而执行加载所述第一经解密的数据的指令。在示例29中,示例21-28中任一项的主题可以可选地包括:其中,所述经加密的数据是使用缓冲器大小被进一步解密的,其中,所述熵测试用于检测指示两个缓冲器之间的边界的模式,并且其中,所述异常是针对边界溢出的。
105.示例30是一种用于促进具有多视角模式搜索的无标签隐式完整性的装置,包括:用于使用指针来访问存储在存储器层次体系中的经加密的数据的单元;用于使用所述指针的指针标签的当前版本来对所述经加密的数据进行解密,以产生第一经解密的数据的单元;用于对所述第一经解密的数据执行熵测试的单元;响应于所述熵测试在所述第一经解密的数据中未能检测到模式,用于使用所述指针的指针标签的一个或多个不同版本来对所述经加密的数据进行重新解密,以产生一个或多个其他经解密的数据的单元;用于对所述一个或多个其他经解密的版本执行所述熵测试的单元;以及响应于所述熵测试在所述一个或多个其他经解密的数据中检测到所述模式,用于用信号通知关于所述经加密的数据的异常的单元。在示例31中,示例30的主题可以可选地包括被进一步配置为执行示例11至16中的任一项的方法的装置。
106.示例32是至少一种机器可读介质,包括多个指令,所述多个指令响应于在计算设备上被执行,而使得所述计算设备执行根据示例10至16中任一项的方法。示例33是用于促进具有多视角模式搜索的无标签隐式完整性的装置,其被配置为执行示例10至16中任一项的方法。示例34是一种用于促进具有多视角模式搜索的无标签隐式完整性的装置,包括用于执行示例10至16中任一项的方法的单元。示例中的细节可以在一个或多个实施例中的任何地方使用。
107.在上面的描述中,出于解释的目的,阐述了许多具体细节,以便提供对所描述的实施例的透彻理解。然而,对于本领域技术人员显而易见的是,可以在没有这些具体细节中的一些的情况下实践实施例。在其他实例中,以框图形式示出了公知的组织和设备。在所示部件之间可能存在中间组织。本文描述或说明的部件可以具有未说明或描述的附加输入或输出。
108.各种实施例可以包括各种过程。这些过程可以由硬件部件执行,或者可以体现在计算机程序或机器可执行指令中,该计算机程序或机器可执行指令可以用于使得通用处理器或专用处理器或利用指令编程的逻辑电路执行这些过程。可替代地,这些过程可以由硬件和软件的组合来执行。
109.各种实施例的部分可以作为计算机程序产品提供,该计算机程序产品可以包括其上存储有计算机程序指令的计算机可读介质,该计算机程序指令可以用于编程计算机(或其他电子设备)以供一个或多个处理器执行,以执行根据某些实施例的过程。计算机可读介
质可以包括但不限于磁盘、光盘、只读存储器(rom)、随机存取存储器(ram)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、磁卡或光卡、闪速存储器或适于存储电子指令的其他类型的计算机可读介质。此外,实施例还可以作为计算机程序产品下载,其中程序可以从远程计算机传送到请求计算机。
110.方法中的许多方法以其基本形式描述,但是可以在不脱离本实施例的基本范围的情况下,将过程添加到方法中的任何方法或从方法中的任何方法中删除过程,并且可以将信息添加到所描述的消息中的任何消息或从所描述的消息中的任何消息减去信息。对于本领域技术人员显而易见的是,可以进行许多进一步的修改和适配。提供特定实施例不是为了限制概念,而是为了说明概念。实施例的范围不是由上面提供的具体示例来确定,而是仅由所附权利要求来确定。
111.如果说元件“a”耦合到元件“b”或者元件“a”与元件“b”耦合,则元件a可以直接耦合到元件b或通过例如元件c间接耦合。当说明书或权利要求指出部件、特征、组织、过程或特性a“导致”部件、特征、组织、过程或特性b时,这意味着“a”至少是“b”的部分原因,但也可能存在有助于导致“b”的至少一个其他部件、特征、组织、过程或特性。如果说明书指出“可能(may)”、“可以(might)”或“可(could)”包括部件、特征、组织、过程或特性,则不要求包括该特定部件、特征、组织、过程或特性。如果说明书或权利要求提到“一(a)”或“一个(an)”元素,则这并不意味着仅存在所描述的元素中的一个。
112.实施例是实现方式或示例。说明书中对“实施例”、“一个实施例”、“一些实施例”或“其他实施例”的引用表示结合实施例描述的特定特征、组织或特性被包括在至少一些实施例中。“实施例”、“一个实施例”或“一些实施例”的各种出现并不都指代相同的实施例。应当认识到的是,在对示例实施例的前述描述中,为了简化本公开并帮助理解各种新颖方面中的一个或多个方面,有时在单个实施例、附图或其描述中将各种特征分组在一起。然而,本公开的方法不应被解释为反映所要求保护的实施例利用比每项权利要求中明确引述的特征更多的特征的意图。而是,如下面的权利要求所反映的,新颖方面在于少于单个前述公开的实施例的所有特征。因此,在此明确地将权利要求并入本描述中,其中每项权利要求作为单独的实施例而独立存在。

技术特征:
1.一种装置,包括:一个或多个处理器,所述一个或多个处理器包括用于进行以下操作的硬件电路装置:使用指针来访问存储在存储器层次体系中的经加密的数据;使用所述指针的指针标签的当前版本来对所述经加密的数据进行解密,以产生第一经解密的数据;对所述第一经解密的数据执行熵测试;响应于所述熵测试在所述第一经解密的数据中未能检测到模式,而使用所述指针的指针标签的一个或多个不同版本来对所述经加密的数据进行重新解密,以产生一个或多个其他经解密的数据;对所述一个或多个其他经解密的版本执行所述熵测试;以及响应于所述熵测试在所述一个或多个其他经解密的数据中检测到所述模式,而向所述一个或多个处理器用信号通知关于所述经加密的数据的异常。2.根据权利要求1所述的装置,其中,所述一个或多个不同版本的数量是根据版本的阈值数量来确定的。3.根据权利要求1所述的装置,其中,所述异常是释放后使用异常。4.根据权利要求1所述的装置,其中,所述模式包括以下各项中的至少一个:重复字节、重复半字节、重复字、一连串的零、一连串的一、一连串的零和一的组合或者一连串的标准字符或标准符号。5.根据权利要求1所述的装置,其中,所述不同版本包括源自所述当前版本的顺序版本。6.根据权利要求1所述的装置,其中,所述不同版本包括所述指针标签的所有可能版本。7.根据权利要求1所述的装置,其中,所述硬件电路装置还用于:响应于所述熵测试在所述一个或多个其他经解密的数据中未能检测到所述模式,而执行加载所述第一经解密的数据的指令。8.根据权利要求1所述的装置,其中,所述硬件电路装置还用于:响应于所述熵测试在所述第一经解密的数据中检测到所述模式,而执行加载所述第一经解密的数据的指令。9.根据权利要求1所述的装置,其中,所述经加密的数据是使用缓冲器大小被进一步解密的,其中,所述熵测试用于检测指示两个缓冲器之间的边界的模式,并且其中,所述异常是针对边界溢出的。10.一种方法,包括:由处理设备使用指针来访问存储在存储器层次体系中的经加密的数据;使用所述指针的指针标签的当前版本来对所述经加密的数据进行解密,以产生第一经解密的数据;对所述第一经解密的数据执行熵测试;响应于所述熵测试在所述第一经解密的数据中未能检测到模式,而使用所述指针的指针标签的一个或多个不同版本来对所述经加密的数据进行重新解密,以产生一个或多个其他经解密的数据;对所述一个或多个其他经解密的版本执行所述熵测试;以及
响应于所述熵测试在所述一个或多个其他经解密的数据中检测到所述模式,而用信号通知关于所述经加密的数据的异常。11.根据权利要求10所述的方法,其中,所述一个或多个不同版本的数量是根据版本的阈值数量来确定的。12.根据权利要求10所述的方法,其中,所述模式包括以下各项中的至少一个:重复字节、重复半字节、重复字、一连串的零、一连串的一、一连串的零和一的组合或者一连串的标准字符或标准符号。13.根据权利要求10所述的方法,其中,所述不同版本包括源自所述当前版本的顺序版本。14.根据权利要求10所述的方法,其中,所述不同版本包括所述指针标签的所有可能版本。15.根据权利要求10所述的方法,还包括:响应于所述熵测试在所述一个或多个其他经解密的数据中未能检测到所述模式,而执行加载所述第一经解密的数据的指令。16.根据权利要求10所述的方法,还包括:响应于所述熵测试在所述第一经解密的数据中检测到所述模式,而执行加载所述第一经解密的数据的指令。17.一种用于促进具有多视角模式搜索的无标签隐式完整性的系统,所述系统包括:存储器,所述存储器用于存储数据块;以及处理器,所述处理器通信地耦合到所述存储器,所述处理器用于进行以下操作:使用指针来访问存储在存储器层次体系中的经加密的数据;使用所述指针的指针标签的当前版本来对所述经加密的数据进行解密,以产生第一经解密的数据;对所述第一经解密的数据执行熵测试;响应于所述熵测试在所述第一经解密的数据中未能检测到模式,而使用所述指针的指针标签的一个或多个不同版本来对所述经加密的数据进行重新解密,以产生一个或多个其他经解密的数据;对所述一个或多个其他经解密的版本执行所述熵测试;以及响应于所述熵测试在所述一个或多个其他经解密的数据中检测到所述模式,而向所述一个或多个处理器用信号通知关于所述经加密的数据的异常。18.根据权利要求17所述的系统,其中,所述一个或多个不同版本的数量是根据版本的阈值数量来确定的。19.根据权利要求17-18中任一项所述的系统,其中,所述异常是释放后使用异常。20.根据权利要求17-19中任一项所述的系统,其中,所述模式包括以下各项中的至少一个:重复字节、重复半字节、重复字、一连串的零、一连串的一、一连串的零和一的组合或者一连串的标准字符或标准符号。21.根据权利要求17-20中任一项所述的系统,其中,所述不同版本包括源自所述当前版本的顺序版本。22.根据权利要求17-21中任一项所述的系统,其中,所述不同版本包括所述指针标签的所有可能版本。23.根据权利要求17-22中任一项所述的系统,其中,所述硬件电路装置还用于:响应于
所述熵测试在所述一个或多个其他经解密的数据中未能检测到所述模式,而执行加载所述第一经解密的数据的指令。24.一种用于促进具有多视角模式搜索的无标签隐式完整性的装置,包括用于执行根据权利要求10-16中任一项所述的方法的单元。25.至少一种机器可读介质,包括多个指令,所述多个指令响应于在计算设备上被执行,而使得所述计算设备执行根据权利要求10-16中任一项所述的方法。

技术总结
实施例涉及针对存储器安全的具有多视角模式搜索的无标签隐式完整性。装置的实施例包括:一个或多个处理器,该一个或多个处理器包括用于进行以下操作的硬件电路装置:使用指针来访问存储在存储器层次体系中的经加密的数据;使用指针的指针标签的当前版本来对经加密的数据进行解密,以产生第一经解密的数据;对第一经解密的数据执行熵测试;响应于熵测试在第一经解密的数据中未能检测到模式,而使用指针的指针标签的一个或多个不同版本来对经加密的数据进行重新解密,以产生一个或多个其他经解密的数据;对一个或多个其他经解密的版本执行熵测试;以及响应于熵测试在一个或多个其他经解密的数据中检测到模式,而向一个或多个处理器用信号通知关于经加密的数据的异常。处理器用信号通知关于经加密的数据的异常。处理器用信号通知关于经加密的数据的异常。


技术研发人员:D
受保护的技术使用者:英特尔公司
技术研发日:2023.02.24
技术公布日:2023/9/25
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐