CN115461728A - 针对颗粒保护数据的数据完整性检查 - Google Patents
针对颗粒保护数据的数据完整性检查 Download PDFInfo
- Publication number
- CN115461728A CN115461728A CN202180031684.XA CN202180031684A CN115461728A CN 115461728 A CN115461728 A CN 115461728A CN 202180031684 A CN202180031684 A CN 202180031684A CN 115461728 A CN115461728 A CN 115461728A
- Authority
- CN
- China
- Prior art keywords
- physical address
- granule
- memory
- protection
- domain
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
-
- 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/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
- G06F12/1441—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1408—Protection against unauthorised use of memory or access to memory by using cryptography
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
- G06F12/1475—Key-lock mechanism in a virtual system, e.g. with translation means
-
- 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/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1483—Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Manufacturing Of Micro-Capsules (AREA)
- Saccharide Compounds (AREA)
- Processes Of Treating Macromolecular Substances (AREA)
Abstract
地址转换电路16将由存储器访问请求指定的目标虚拟地址(VA)转换为与从多个物理地址空间(PAS)中选择的选定PAS相关联的目标物理地址(PA)。从存储器加载颗粒保护数据块,该颗粒保护数据块包括至少一个颗粒保护条目(GPE),每个GPE对应于相应的PA颗粒并且指定颗粒保护信息(GPI),该GPI指示该PAS中的哪个PAS是允许PAS。滤波电路20基于该选定PAS是否被该GPI在目标颗粒保护条目(GPE)中指示为允许PAS来确定是否应当允许该存储器访问请求访问该目标PA。完整性检查电路23对从存储器加载的该颗粒保护数据块执行数据完整性检查,并在该数据完整性检查失败时发信号通知故障。
Description
背景技术
本技术涉及数据处理领域。
数据处理系统可以具有地址转换电路,用于将存储器访问请求的虚拟地址转换为对应于存储器系统中要访问的位置的物理地址。
至少一些示例提供了一种装置,包括:地址转换电路,该地址转换电路用于将由存储器访问请求指定的目标虚拟地址转换为与从多个物理地址空间中选择的选定物理地址空间相关联的目标物理地址;颗粒保护条目加载电路,该颗粒保护条目加载电路用于从存储器加载颗粒保护数据块,该颗粒保护数据块包括至少一个颗粒保护条目,每个颗粒保护条目对应于相应的物理地址颗粒并且指定颗粒保护信息,该颗粒保护信息指示多个物理地址空间中的哪个物理地址空间是允许从其访问物理地址颗粒的允许物理地址空间;滤波电路,该滤波电路用于基于选定物理地址空间是否被颗粒保护信息在对应于包括目标物理地址的目标物理地址颗粒的目标颗粒保护条目中指示为允许物理地址空间,来确定是否应当允许存储器访问请求访问目标物理地址;和完整性检查电路,该完整性检查电路用于对从存储器加载的颗粒保护数据块执行数据完整性检查,并在该数据完整性检查失败时发信号通知故障。
至少一些示例提供了一种数据处理方法,包括:将由存储器访问请求指定的目标虚拟地址转换为与从多个物理地址空间中选择的选定物理地址空间相关联的目标物理地址;从存储器加载颗粒保护数据块,该颗粒保护数据块包括至少一个颗粒保护条目,每个颗粒保护条目对应于相应的物理地址颗粒并且指定颗粒保护信息,该颗粒保护信息指示多个物理地址空间中的哪个物理地址空间是允许从其访问物理地址颗粒的允许物理地址空间;对从存储器加载的颗粒保护数据块执行数据完整性检查,并在该数据完整性检查失败时发信号通知故障;以及基于选定物理地址空间是否被颗粒保护信息在对应于包括目标物理地址的目标物理地址颗粒的目标颗粒保护条目中指示为允许物理地址空间,来确定是否应当允许存储器访问请求访问目标物理地址。
至少一些示例提供了一种计算机程序,该计算机程序包括指令,该指令在主机数据处理装置上执行时控制该主机数据处理装置以提供用于执行目标代码的指令执行环境;该计算机程序包括:地址转换程序逻辑,该地址转换程序逻辑用于将由存储器访问请求指定的目标虚拟地址转换为与从多个模拟物理地址空间中选择的选定模拟物理地址空间相关联的目标模拟物理地址;和颗粒保护条目加载程序逻辑,该颗粒保护条目加载程序逻辑用于从存储器加载颗粒保护数据块,该颗粒保护数据块包括至少一个颗粒保护条目,每个颗粒保护条目对应于相应的模拟物理地址颗粒并且指定颗粒保护信息,该颗粒保护信息指示多个模拟物理地址空间中的哪个模拟物理地址空间是允许从其访问模拟物理地址颗粒的允许模拟物理地址空间;滤波程序逻辑,该滤波程序逻辑用于基于选定模拟物理地址空间是否被颗粒保护信息在对应于包括目标模拟物理地址的目标模拟物理地址颗粒的目标颗粒保护条目中指示为允许模拟物理地址空间,来确定是否应当允许存储器访问请求访问目标模拟物理地址;和完整性检查电路,该完整性检查电路用于对从存储器加载的颗粒保护数据块执行数据完整性检查,并在该数据完整性检查失败时发信号通知故障。
至少一些示例提供了一种计算机可读存储介质,该计算机可读存储介质存储上述计算机程序。该计算机可读存储介质可以是非暂态存储介质或暂态存储介质。
附图说明
本技术的另外的方面、特征和优点将从结合附图阅读的示例的以下描述中显而易见,在这些附图中:
图1示出了数据处理装置的示例;
图2示出了处理电路可在其中操作的多个域;
图3示出了支持颗粒保护查找的处理系统的示例;
图4示意性地示出了多个物理地址空间向识别存储器系统中的位置的系统物理地址空间上的别名;
图5示出了对有效硬件物理地址空间进行分区以使得不同架构物理地址空间有权访问系统物理地址空间的相应部分的示例;
图6是示出确定处理电路的当前操作域的方法的流程图;
图7示出了用于将虚拟地址转换为物理地址的页表条目的页表条目格式的示例;
图8是示出通过给定存储器访问请求来选择要访问的物理地址空间的方法的流程图;
图9和图10示出了包括多个颗粒保护条目的颗粒保护数据块的两个示例;
图11是示出基于颗粒保护信息和针对颗粒保护信息的数据完整性检查来滤波存储器访问请求的流程图;
图12示出了地址转换和颗粒保护信息滤波的多个阶段;
图13示出了数据处理系统的示例;并且
图14示出了可以使用的模拟器示例。
具体实施方式
数据处理系统可支持虚拟存储器的使用,其中提供地址转换电路以将存储器访问请求所指定的虚拟地址转换成与要访问的存储器系统中的位置相关联的物理地址。可在一个或多个页表结构中定义虚拟地址与物理地址之间的映射。页表结构内的页表条目还可定义一些访问权限信息,这些访问权限信息可控制是否允许在处理电路上执行的给定软件过程访问特定虚拟地址。
在一些处理系统中,可由地址转换电路将所有虚拟地址映射到单个物理地址空间上,存储器系统使用该单个物理地址空间来识别要访问的存储器中的位置。在这种系统中,仅仅基于用于提供虚拟至物理地址转换映射的页表结构来提供对特定软件过程是否可访问特定地址的控制。然而,通常可由操作系统和/或管理程序来定义此类页表结构。如果操作系统或管理程序受损,则这可引起安全漏洞,在这种情况下,敏感信息可被攻击者访问。
因此,对于需要某些过程在与其他过程分离的情况下安全地执行的一些系统而言,该系统可支持多个域中的操作并可支持多个不同物理地址空间,其中对于存储器系统的至少一些部件而言,即使相应物理地址空间中的物理地址实际上对应于存储器中的相同位置,也将其虚拟地址被转换成不同物理地址空间中的物理地址的存储器访问请求看作是它们正在访问存储器中的完全单独的地址。通过将从处理电路的不同操作域的访问隔离到一些存储器系统部件所视为的相应不同物理地址空间中,这可提供不依赖于操作系统或管理程序所设定的页表权限信息的更强安全保证。
在存储器访问请求的虚拟地址可以映射到两个或更多个不同物理地址空间中的一个中的物理地址的系统中,可以使用颗粒保护信息来限制在特定物理地址空间内可以访问哪些物理地址。这对于确保在片上或片外的硬件中实现的某些物理存储器位置在需要时可以被限制在特定物理地址空间或物理地址空间的特定子集内访问是有用的。
颗粒保护信息可以从存储在存储器中的表结构加载,其中表结构提供多个颗粒保护条目,每个颗粒保护条目对应于相应的物理地址颗粒。颗粒保护信息针对对应的物理地址颗粒指定物理地址空间中的哪个物理地址空间是允许从其访问对应的物理地址颗粒的允许物理地址空间。针对给定颗粒的颗粒保护条目可能指定物理地址空间都不是允许物理地址空间、物理地址空间中的单个物理地址空间是允许物理地址空间,或者物理地址空间中的两个或更多个物理地址空间是允许物理地址空间。滤波电路可使用颗粒保护信息根据对应于待访问的目标物理地址的目标颗粒保护条目来检查是否允许继续进行存储器访问请求。该查找可以是除了由地址转换电路基于页表结构执行的对任何访问许可的检查之外执行的另一查找阶段。
由于颗粒保护信息控制哪些物理地址空间能够访问给定的一组物理地址,因此损坏或篡改颗粒保护信息可能导致通过分离相应的物理地址空间提供的安全性保证的完全丢失(例如,如果颗粒保护信息被损坏以指示应当被保留用于从一个物理地址空间访问的物理地址应当替代地能够从另一物理地址空间访问,这可能导致敏感信息的泄漏)。在涉及分离多个物理地址空间的典型系统中,控制物理地址空间之间的划分的信息已经存储在防范未授权攻击者的篡改相对安全的硬件存储装置中。例如,划分数据可以存储在不暴露于外部访问的一组片上寄存器中。如在此类系统中一样,用于划分信息的物理存储装置可以被设计成提供足够的安全性保证,令人惊讶的是,需要对此类信息进行数据完整性检查。
然而,发明人认识到最近越来越需要具有在同一系统上操作的相对大量的不同软件过程,这些不同软件过程可能各自希望设置有与由其他过程进行的访问分离的安全“沙箱”。此类软件过程之间的关系正变得更加复杂,因此对于此类模型,单独使用寄存器或其他片上存储装置来定义访问权限可能不可行。为了提供对访问权限的更细粒度控制,可能期望以各个物理地址空间颗粒的颗粒度定义颗粒保护信息的更复杂的表,每个物理地址颗粒定义信息。物理地址空间颗粒(针对其定义了颗粒保护信息的相应项)可以具有特定大小,其可以与用于地址转换电路的页表结构所使用的页的大小相同或不同。在某些情况下,颗粒的大小可以大于定义地址转换电路的地址转换映射的页面。或者,可以在与页表结构内的地址转换信息相同的页面级颗粒度处定义颗粒保护信息。以页面级颗粒度定义颗粒保护信息可能是方便的,因为这可允许对存储器存储硬件的哪些区域能够从特定物理地址空间并且因此从处理电路的操作的特定域访问的更细粒度控制。然而,也可以使用其他大小的颗粒。
利用此类模型,在可能存在更多数量的物理地址空间、更多数量的不同访问许可类型和/或更多数量的待针对其定义不同访问权限的不同物理地址区域的情况下,在硬件存储装置的不易受攻击的区域中定义颗粒保护信息可能不再实际,因为硬件电路面积/功率成本可能太高。因此,颗粒保护信息可替代地存储在常规存储器中,该常规存储器可将一些颗粒保护信息暴露于外部访问,使得可以(有意地由攻击者或无意地)对颗粒保护信息进行修改是可能的,这可能使依赖于颗粒保护信息的过程的安全性遭受丢失风险。
利用下面描述的方法,装置具有用于对由颗粒保护条目加载电路从存储器加载的颗粒保护数据块执行数据完整性检查的完整性检查电路。如果数据完整性检查通过,则颗粒保护数据块可用于由滤波电路对存储器访问请求进行滤波。如果数据完整性检查失败,则完整性检查电路发信号通知故障。这允许检测在颗粒保护信息存储在存储器的易受攻击部分中时对其进行的可能的篡改或损坏,从而使得能够使用更复杂形式的颗粒保护信息,其大小使在不易受攻击的硬件保护存储装置中存储其全部是不可行的。因此,可以提高安全性,并且使用颗粒保护信息支持的使用案例的灵活性增加。
数据完整性检查的定时可以是变化的。在一些情况下,可以针对每个存储器访问加载颗粒保护数据块,在这种情况下,每个非GPT相关的存储器访问(例如,由处理电路发出的常规存储器访问,或由地址转换电路生成的页表漫游存储器访问)可引起对用于检查是否允许访问非GPT相关的存储器访问的目标地址的对应颗粒保护数据执行数据完整性检查。然而,如果滤波电路具有对用于高速缓存颗粒保护数据的颗粒保护数据高速缓存的访问权限(此高速缓存可以是专用于颗粒保护数据的高速缓存的独立高速缓存,或者可以与地址转换数据的高速缓存共享),则性能可以更快。在这种情况下,在颗粒保护数据高速缓存中命中的存储器访问请求不需要从存储器加载颗粒保护数据,因此不需要数据完整性检查(可以假设该高速缓存对错误稳健,因此不需要附加的完整性检查),但是在高速缓存中未命中的请求可在从存储器返回所请求的颗粒保护数据时执行数据完整性检查。
已知数据完整性保护技术用于保护存储到易受攻击存储器(诸如,例如片外存储器)的常规数据,但是其具有在处理性能、功率消耗和存储容量方面导致相对较大成本的问题。虽然存储到存储器的易受攻击区域的数据的加密可能足以确保机密性,但是其本身不会防止在存储在存储器的易受攻击区域中时数据被(有意地或无意地)损坏的可能性,使得当数据被读回时,其具有与所存储值不同的值。在需要防止篡改的系统中,完整性元数据(例如,散列或认证代码)可以在写入时从存储数据导出,然后可以在读取数据时与根据存储数据重新计算的对应元数据进行比较,以确定数据是否已改变。然而,维护合理大小的受保护地址区域的此类元数据可能需要相对较大的元数据结构,该元数据结构可能太大而不能存储在硬件保护存储器中,因此这些元数据中的一些元数据本身可能需要存储在易受篡改的存储器中,使得其他完整性元数据必须从其导出并存储以用于以后检查元数据是否被篡改。该其他完整性元数据本身可能需要保护,以此类推,使得可以维护树结构以跟踪相应级别的元数据,从而最终允许使用足够小而能够存储在不易受篡改的硬件保护存储器中的信任根来验证所有元数据(以及底层受保护数据)。维护该元数据(例如,默克尔树)可在增加所需的存储容量和在导致性能成本两方面都是维护成本昂贵的,因为实际数据向待由元数据树保护的存储器区域的每次读取/写入需要仅用于维护或检查树中的多个完整性元数据片段的若干次其他读取/写入。在一些具体实施中,仅相对较小部分的数据空间需要完整性保护,使得此类完整性保护技术的性能成本被认为是合理的,因为对于访问完整性受保护区域之外的地址的大多数存储器访问将不需要。
然而,如果向用于滤波是否基于选定物理地址空间是否是允许物理地址空间而允许存储器访问的颗粒保护信息应用数据完整性检查,则这可能意味着可能由于执行数据完整性检查而延迟大得多数量的存储器访问(如果其颗粒保护数据尚未可用并且因此必须从存储器加载),因为对数据完整性检查的需要将不再限于在相对较小部分的物理地址空间中读取/写入数据的访问(即使颗粒保护数据本身保存到物理地址空间的相对较小的完整性受保护部分,对该物理地址空间的任何部分的访问可能引起对该颗粒保护数据的访问)。因此,这是为什么对于技术人员而言期望将颗粒保护数据存储在存储器的易受损坏/篡改的区域或期望需要在从存储器加载的颗粒保护数据块用于滤波存储器访问请求之前对其进行数据完整性检查是反直觉的另一个原因-人们会认为完整性保护的实施成本对于在每个存储器访问上潜在需要的数据而言将太高了。
然而,发明人认识到与颗粒保护数据相关联的多个点,其可用于实现与常规完整性检查技术相比更轻质形式的完整性检查以用于检查颗粒保护数据。
给定颗粒的颗粒保护信息的大小可以比在给定事务中从存储器请求的数据块的大小更小,因此当需要加载目标颗粒保护条目以服务特定存储器访问请求时,颗粒保护条目加载电路实际上可加载包括多个颗粒保护条目的颗粒保护数据块,这些颗粒保护条目中的每个颗粒保护条目对应于不同的物理地址颗粒。即使当前不需要其他颗粒保护条目,也可能需要它们来处理不久后的其他存储器访问请求,因此高速缓存这些其他颗粒保护条目可能是有用的。由于完整性检查电路具有可用的多个颗粒保护条目的整个块,因此它可以对颗粒保护条目的块整体地执行数据完整性检查。
而且,在颗粒保护信息存储在存储器的易受攻击者访问的区域中的情况下,可以提供存储器加密电路。存储器的受保护区域可以被定义为对应于存储器的此类区域:如果其未被加密保护,则其将是易受攻击的,并且其被指定用于存储免于受到攻击的安全数据(并非所有数据都是敏感的,因此受保护区域不一定需要囊括易受攻击存储器存储装置的整个地址范围)。当数据被写入存储器的受保护区域时,存储器加密电路对在写入访问请求中指定的数据进行加密,并且提供加密数据以存储到存储器的受保护区域。当从存储器的受保护区域读取数据时,存储器加密电路对从受保护区域读取的加密数据进行解密,并且提供解密数据作为对应读取访问请求的应答。因此,如果颗粒保护数据存储到使用存储器加密电路被加密保护的受保护区域,则当颗粒保护条目加载电路从存储器的受保护区域加载颗粒保护数据块时,存储器加密电路可在将颗粒保护数据块提供给滤波电路或完整性检查电路之前对从存储器的受保护区域读取的颗粒保护数据块进行解密。
因此,在将颗粒保护信息暴露于可能易受篡改或损坏的存储器区域(例如,片外存储器)的系统中,可在将颗粒保护信息存储在该易受攻击存储器区域中时对其使用存储器加密。如果用于在明文与密文之间进行映射的加密/解密函数被设计成具有“扩散”性质,则它们可能是更安全的,其中在明文/密文中的一者改变一位使另一者改变大得多数量的位。
存储器加密电路可根据对给定大小的数据块进行操作的一定密码基元执行加密/解密。由密码基元对其进行操作的数据块的大小可以比一个颗粒保护条目的大小更大,使得多个颗粒保护条目的颗粒保护数据块可以被存储器加密电路加密为公共数据块。
因此,当颗粒保护数据块存储到受到加密的受保护存储器区域时,颗粒保护数据块中的一个颗粒保护条目的完整性与同一颗粒保护数据块中的另一个颗粒保护条目的完整性之间存在相关性。这是因为即使在密文存储在存储器中时改变其中的仅单个位,这可能会使块中的多于一个颗粒保护条目损坏。因此,当因为其尚不能够由滤波电路访问而加载目标颗粒保护条目并且数据完整性检查针对颗粒保护数据块的多个颗粒保护条目中除了目标颗粒保护条目之外的一个颗粒保护条目失败时,即使数据完整性检查针对目标颗粒保护条目通过,完整性检查电路也可发信号通知故障。
因此,通过对多个条目的块执行检查,并且在块中的颗粒保护条目中的任何一个未通过完整性检查(即使用于滤波当前存储器访问请求所需的目标颗粒保护条目本身通过了检查)的情况下发信号通知故障,这可允许使用更轻质的数据完整性检查(其具有在各个颗粒保护条目中检测到篡改的更低概率),因为数据完整性检查未能在块内的任何颗粒保护条目中检测到损坏(假阴性)的概率可能极低,即使各个颗粒保护条目呈假阴性的概率相对较高。
例如,可以使用颗粒保护条目的一定数量的位(例如,N位)来编码颗粒保护信息。并非这些N位的所有2N个可能编码可能需要来指示针对颗粒保护信息的有效选项。例如,所需有效选项的数量可能不是2的精确幂,因此可能存在一些留下的备用编码。而且,指令集架构的设计者可以选择留下一些编码备用以在稍后需要添加其他选项的情况下为未来架构扩展提供空间。
因此,可以使用具有多个编码的N位来编码颗粒保护信息。这N位的第一子集的编码是指示针对颗粒保护信息的有效选项的有效编码。这N位的第二子集的编码是无效编码,其不指示针对颗粒保护信息的任何有效选项。在一个示例中,数据完整性检查可包括针对颗粒保护数据块中的每个颗粒保护条目检查该颗粒保护条目是否具有第一子集的编码中的一个编码或第二子集的编码中的一个编码。如果颗粒保护数据块中的颗粒保护条目中的任何一个具有第二子集的编码中的一个编码,则发信号通知故障(即使具有无效编码的颗粒保护条目不是用于滤波当前存储器访问请求所需的目标颗粒保护条目)。
可能看上去令人惊讶的是,简单地检查颗粒保护信息的编码是否是有效编码将足以充当数据完整性检查。人们会认为该检查将不足够,因为它无法检测将颗粒保护信息从一个有效编码改变为不同的有效编码的篡改。
然而,如上所述,由于使用加密,因此如果加载块中的任何一个颗粒保护条目具有无效编码,那么由于密码函数的扩散性质,这可以发信号通知相同密码基元块中的所有其他颗粒保护条目也可能已被改变的风险。因此,对于能够以使得数据完整性检查将不会检测到篡改的方式来篡改所存储的颗粒保护条目的加密块的攻击者而言,这将需要将存储数据的密文版本修改为使得每个颗粒保护条目碰巧被修改为第一子集的有效编码中的一个编码,并且任何颗粒保护条目都不被修改为第二子集的无效编码中的一个编码。
在许多情况下,数据块中的颗粒保护条目的数量和第二子集的编码中的编码的数量的组合可足以使得篡改导致所有颗粒保护条目具有第二子集的无效编码中的一个编码的概率可以是可接受地小。如果还不是这样的话,则架构设计者可通过以下中的任一者来确保实现这一点:(i)增加数据块中的颗粒保护条目的数量,或(ii)提供一个或多个附加位的冗余颗粒保护信息以增加第二子集中的无效编码的数量。因此,具有颗粒保护信息的无效编码的另一可能原因可简单地为增加防止篡改。虽然添加不需要编码有效信息的冗余颗粒保护信息位的第二选项可能看起来浪费,但是这可能仍然比用于存储用于与存储数据进行比较的认证代码或其他元数据片段所需的需要更少的附加位,并且避免了用于如上所述的完整性元数据维护的多个附加读取/写入的性能开销。
因此,利用这种方法,数据完整性检查可以是对编码是否有效的简单检查,其不需要对存储的元数据的任何附加读取/写入,或用于根据存储数据导出认证代码的任何认证代码计算。数据完整性检查可以用相对简单(低功率和低延迟)的用于检查每个颗粒保护条目的编码是否是第一子集的有效编码中的一个编码的逻辑门集合来实施。这极大地降低了实施完整性检查的性能和电路面积成本。如果使用这种数据完整性检查的方法,则管理颗粒保护条目的软件可以确保当针对感兴趣颗粒设置颗粒保护条目时,同一颗粒保护数据块中的其他颗粒保护条目被设置为有效编码(即使对应于这些颗粒保护条目的地址颗粒当前未在使用)。
应当理解,从架构角度来看,对哪个存储器区域应存储颗粒保护信息的选择由实施特定处理系统的系统设计者进行,因此不是由用于定义程序代码与处理硬件之间的交互作用的指令集架构定义的架构特征。因此,没有必要在实施指令集架构的任何给定处理器系统中将颗粒保护数据存储在任何特定位置中或提供存储器加密电路。硬件系统设计者(或操作硬件系统的一方,诸如服务器操作者)可针对特定具体实施选择其偏好将颗粒保护信息存储在片上存储器的受到其硬件设计保护而免于篡改(因此不需要加密)的区域中,还是存储在因其在信任边界之外而潜在易受攻击的存储器的区域中(例如,在不同集成电路上的片外存储器,使得集成电路之间的存储器接口可被攻击者探查到),针对这种情况可使用存储器加密。
无论哪种方式,颗粒保护条目加载电路、滤波电路和完整性检查电路的架构定义可以为使得该电路在从存储器加载颗粒保护块时在将颗粒保护信息用于滤波存储器访问之前执行数据完整性检查(通过验证编码有效,如上所述)。如果系统设计者已选择在不易受篡改的硬件保护存储器中实施颗粒保护信息,则数据完整性检查可能已是冗余的,但是其在任何情况下都是相对轻质的,因此这不具有显著的性能影响。然而,如果系统设计者确实选择将颗粒保护信息存储在易受篡改的存储器中,则可能预期系统设计者还将提供存储器加密电路,并且因此,在这种情况下,用于检查颗粒保护信息的有效编码的数据完整性检查可有助于防止攻击者在加密颗粒保护信息存储在易受攻击存储器中时对其进行改变的风险。
尽管检查颗粒保护信息的有效编码的数据完整性检查特别轻质且有效,但是在其他示例中,可能优选实施包括确定与颗粒保护数据块相关联的至少一个完整性签名值是否与从颗粒保护数据块导出的至少一个签名检查值匹配的数据完整性检查。对于仅需要使用颗粒保护数据保护相对较小的物理地址空间的系统,当前的完整性保护技术可能是可行的,并且可提供比上文描述的检查有效编码更强的篡改检测概率。而且,尽管目前在用于保护较大物理地址空间的性能方面是昂贵的,但是预期在未来这可变得更加可行,因为完整性保护技术本身变得更先进,在硬件保护存储器中为完整性元数据提供更大的存储容量变得可行,并且因为对存储器的访问变得更快。因此,在其他具体实施中,数据完整性检查可能基于与颗粒保护数据块相关联存储的完整性签名值,可以在读取颗粒保护数据块时检查这些完整性签名值以查看它们是否匹配签名检查值,该签名检查值包括使用与用于在写入颗粒保护数据块时导出完整性签名值相同的签名计算函数来根据读取的颗粒保护数据块导出的新计算签名。例如,签名可以是基于秘密密钥根据颗粒保护数据块计算的散列或消息认证代码,并且任选地是新鲜值诸如计数器或每当块被写入时改变的其他值(这可以基于取代颗粒保护数据块的最新值和具有曾经正确但不再正确的较旧值的签名来防止重放攻击)。
响应于存储器访问请求,当针对目标物理地址颗粒尚未定义有效颗粒保护条目时,或者当滤波电路基于目标颗粒保护条目确定不允许存储器访问请求访问目标物理地址时,滤波电路可发信号通知与由完整性检查电路在数据完整性检查失败时发信号通知的故障不同的故障类型或不同的故障综合征信息相关联的故障。因此,无论是通过不同的故障类型(例如,不同的故障标识符)或通过在综合征寄存器内记录信息以指示故障原因,处理故障的异常处理程序可能够从故障类型或综合征信息中识别故障是由以下中的哪一者导致的:(i)针对颗粒保护信息的数据完整性丢失,如果颗粒保护信息尚未被损坏,这不一定意味着应当已拒绝存储器访问请求,还是(ii)存储器访问请求被拒绝,因为颗粒保护信息是无效的或者因为颗粒保护信息指示存储器访问请求所寻求访问的选定物理地址空间不是允许物理地址。这允许处理程序采取不同的响应动作。
滤波电路可包括请求器侧滤波电路,以基于目标颗粒保护条目中的颗粒保护信息来确定是允许存储器访问请求传递到高速缓存还是传递到用于与用于服务存储器访问请求的完成器设备通信的互连线。与在完成器侧基于颗粒保护信息来执行滤波存储器访问请求相比(在存储器访问请求已经通过互连线路由到完成器设备诸如存储器控制器或用于服务存储器访问请求的外围控制器之后),在互连线的请求器侧执行颗粒保护查找的优点在于:相比原本实际在完成器侧进行的,这可实现对哪些物理地址能够从给定物理地址空间访问的更细粒度控制。这是因为完成器侧通常具有相对有限的访问整个存储器系统的能力。例如,用于给定存储器单元的存储器控制器可以仅访问该存储器单元内的位置,并且可以不访问地址空间的其他区域。提供更细粒度控制可依赖于可存储在存储器系统中的更复杂的颗粒保护信息表,并且从请求器侧访问这样的表可能更实际,其中存在向存储器系统的更广子集发出存储器访问请求的更大灵活性。此外,在请求器侧执行颗粒保护查找可帮助实现在运行时间动态更新颗粒保护信息的能力,这对于可被限制为访问在引导时间定义的相对少量的静态定义数据的完成器侧滤波电路可能是不实际的。请求器侧滤波电路的另一优点在于,这将使得互连线能够将同一颗粒内的不同地址分配给与不同的完成器设备(例如,不同的DRAM(动态随机存取存储器)单元)通信的不同完成器端口,这对于性能可能是有效的,但是如果整个颗粒需要被引导到相同的完成器单元,使得可以在完成器侧执行颗粒保护查找以验证是否允许存储器访问,则可能是不切实际的。因此,在请求器侧而不是完成器侧执行用于从为给定存储器访问请求选择的特定物理地址空间中区分是否可以访问特定物理地址的颗粒保护查找可能具有许多优点。
类似地,完整性检查电路可包括请求器侧完整性检查电路,用于在已从互连线接收到颗粒保护数据块之后,对从存储器加载的颗粒保护数据块执行数据完整性检查。在其中提供包括存储器加密电路的存储器保护引擎以用于向存储在存储器的受保护区域中的数据应用加密的情况下,存储器加密电路通常可以在存储器系统内实施到易受窃听/篡改的存储器存储装置硬件的接口处。这通常可以位于互连线的完成器侧,而不是请求器侧。在为存储器保护引擎提供用于(例如,基于认证代码或其他完整性元数据)向存储到存储器的受保护区域的通用数据应用完整性验证的能力的系统中,这通常也可以在完成器侧由存储器保护引擎管理。相比之下,在一些实施方案中,上文描述的完整性检查电路可以位于请求器侧,例如作为包括滤波电路的存储器管理单元或系统存储器管理单元的一部分。特别是在其中使用基于验证颗粒保护信息是否具有第一子集的有效编码中的一个编码或第二子集的无效编码中的一个编码的数据完整性检查的具体实施中,在请求器侧实施可能是更有效的,因为这可能是特定于颗粒保护信息的定制类型验证,而不是可用于其他数据的更通用形式的完整性验证,因此通过将完整性检查逻辑结合到还包括滤波电路(并且可能也包括地址转换)的请求器侧系统部件中,这可使系统设计更简单,因为将利用颗粒保护信息的系统部件也包括用于在使用前确保该信息的完整性的电路。这避免了使系统设计者在设计存储器系统的完成器侧部件时考虑数据完整性验证的需要。
存储器访问请求可由能够在两个或更多个操作域中的任一个操作域中操作的请求器电路(例如,处理电路)发出。
可以按不同的方式选择与存储器访问相关联的选定物理地址空间。在一些示例中,可以至少基于从其发出存储器访问请求的请求器电路的当前操作域来选择(由地址转换电路或由滤波电路)选定物理地址空间。选定物理地址空间的选择还可以取决于在用于将目标虚拟地址转换为目标物理地址的至少一个页表条目中指定的物理地址空间选择信息。
地址转换电路可以根据当前域限制哪些物理地址空间是可访问的。当特定物理地址空间能够被当前域访问时,这意味着地址转换电路可以将从当前域发出的为存储器访问指定的虚拟地址转换为该特定物理地址空间中的物理地址。这不一定意味着将允许存储器访问,因为即使特定的存储器访问可将其虚拟地址转换为特定物理地址空间的物理地址,滤波电路也可基于颗粒保护信息执行进一步的检查以确定是否实际上允许在该特定物理地址空间内访问该物理地址。然而,通过限制当前域可以访问物理地址空间的哪个子集,这可以提供更强的安全性保证。
例如,处理电路可以支持根域中的处理,根域负责管理处理电路可以在其中操作的其他域之间的切换。根域可具有相关联的根物理地址空间。通过提供用于控制切换的专用根域,这可以通过限制在一个域中执行的代码可以触发切换到另一个域的程度来帮助保持安全性。例如,当请求域切换时,根域可以执行各种安全检查。因此,处理电路可以支持在至少三个域中的一个域中执行的处理:根域和至少两个其他域。
当数据完整性检查针对颗粒保护数据块失败时,完整性检查电路可发信号通知将由在根域中执行的程序代码处理故障。因此,数据完整性丢失的任何问题可以由负责分离物理地址空间和域的根域管理,并且可以被认为是具有最大级别的安全性。
在一些示例中,处理电路可以支持除了根域之外的两个附加域。例如,其他域可以包括与安全物理地址空间相关联的安全域和与不太安全物理地址空间相关联的不太安全域。不太安全物理地址空间可以从不太安全域、安全域和根域中的每一个访问。安全物理地址空间可以从安全域和根域访问,但可能不能够从不太安全域访问。根物理地址空间可以是根域能够访问的,但是可以是不太安全域和安全域不能够访问的。因此,与使用页表作为唯一的安全控制机制相比,这允许在安全域中执行的代码以更强的安全保证保护其代码或数据不被在不太安全域中操作的代码访问。例如,需要更强安全性的代码部分可以在受信任操作系统管理的安全域中执行,该信任操作系统与在不太安全域中操作的非安全操作系统不同。支持这种安全域和不太安全域的系统的示例可以是根据支持由英国剑桥的Limited提供的架构特征的处理架构操作的处理系统。在传统的具体实施中,用于管理安全域与不太安全域之间的切换的监控代码使用与安全域所使用的相同的安全物理地址空间。相比之下,通过提供用于管理其他域的切换的根域并分配供根域使用的专用根物理地址空间,这有助于提高安全性并简化系统开发。
然而,在其他示例中,其他域可以包括另外的域,例如除了根域之外的至少三个其他域。这些域可以包括上文讨论的安全域和不太安全域,但也可以包括与另外的物理地址空间相关联的至少一个另外的域。不太安全物理地址空间也可以从另外的域访问,而另外的物理地址空间可以从另外的域和根域访问,但不可以从不太安全域访问。因此,类似于安全域,另外的域可以被认为比不太安全域更安全,并且允许将代码进一步划分为与不同物理地址空间相关联的相应域以限制它们的交互。
在一些示例中,各个域可以具有分级结构,使得当系统从不太安全的域通过安全域和另外的域上升到根域时,它们与增加的特权级别相关联,其中另外的域被认为比安全域更有特权,并且因此可以访问安全物理地址空间。
然而,越来越需要为软件提供商提供安全计算环境,这限制了信任与在相同硬件平台上执行的其他软件相关联的其他软件提供商的需要。例如,在诸如移动支付和银行业务、计算机游戏中的反欺骗或盗版机制的实施、操作系统平台的安全增强、云系统中的安全虚拟机托管、机密计算等领域中可能存在许多用途,其中提供软件代码的一方可能不愿意信任提供操作系统或管理程序(先前可能被认为是可信的部件)的一方。在支持具有相应物理地址空间的安全域和不太安全域的系统中,诸如基于上述架构的系统中,随着在安全域中操作的安全部件的占用的增加,通常在安全域中操作的软件集合已经增长为包括可以从不同数量的软件提供商提供的多个软件片段,所述不同数量的软件提供商包括各方,诸如从包括由特定硅提供商提供的硅集成电路芯片的部件组装处理设备(诸如移动电话)的原始设备制造商(OEM)、提供在设备上运行的操作系统供应商(OSV)以及维护提供用于托管云上的虚拟机的服务器空间的服务器场的云平台运营商(或云主机)。因此,如果以严格的增加特权顺序来实现域,则可能存在问题,因为提供希望被提供安全计算环境的应用级代码的应用提供商可能不希望信任传统上可能已经提供执行安全域的软件的一方(诸如OSV、OEM或云主机),但是同样地,提供在安全域中操作的代码的各方不可能希望信任应用提供商来提供在被给予对与较低特权域相关联的数据的访问的较高特权域中操作的代码。因此,可以认识到,对连续增加特权的域进行严格分级可能是不适当的。
因此,在以下更详细的示例中,可以认为另外的域与安全域正交。虽然另外的域和安全域均可以访问不太安全物理地址空间,但是与另外的域相关联的另一物理地址空间不能够从安全域访问,而与安全域相关联的安全物理地址空间不能够从另外的域访问。根域仍然可以访问与安全域和另外的域两者相关联的物理地址空间。
因此,利用该模型,另外的域(其示例是在以下示例中描述的领域域)和安全域彼此之间没有依赖关系,因此不需要彼此信任。安全域和另外的域仅需要信任根域,根域在管理进入其他域的条目时固有地受信任。
虽然以下示例描述了另外的域(领域域)的单个实例,但是应当理解,可以扩展与安全域正交的另外的域的原理以提供多个另外的域,使得安全域和至少两个另外的域中的每一个可以访问不太安全物理地址空间,不能访问根物理地址空间,并且不能访问彼此相关联的物理地址空间。
不太安全物理地址空间可从处理电路支持的所有域访问。这很有用,因为它有助于在不同域中执行的软件之间共享数据或程序代码。如果要在不同的域中能够访问特定的数据或代码项,则可以将其分配给不太安全物理地址空间,从而可以从任何域访问它。
存储器系统可以包括物理别名点(PoPA),该PoPA是将来自不同物理地址空间的对应于相同存储器系统资源的别名物理地址映射(去别名)到唯一识别该存储器系统资源的单个物理地址的点。存储器系统可以包括至少一个在PoPA上游提供的前PoPA存储器系统部件,其将别名物理地址看作它们对应于不同的存储器系统资源。
例如,至少一个前PoPA存储器系统部件可以包括高速缓存或转换后备缓冲器,其可以将用于别名物理地址的数据、程序代码或地址转换信息高速缓存在单独的条目中,使得如果请求从不同物理地址空间访问相同存储器系统资源,则这些访问将致使分配单独的高速缓存或TLB条目。此外,前PoPA存储器系统部件可以包括一致性控制电路,诸如一致性互连线、探听滤波器或用于维持各个主设备处的高速缓存信息之间的一致性的其他机构。一致性控制电路可以将单独的一致性状态分配给不同物理地址空间中的各个别名物理地址。因此,为了保持一致性,别名物理地址被看作单独的地址,即使它们实际上对应于相同的底层存储器系统资源。尽管从表面上看,针对别名物理地址单独跟踪一致性可能看起来引起一致性损失的问题,但实际上这不是问题,因为如果在不同域中操作的进程确实打算共享对特定存储器系统资源的访问,则其可以使用不太安全物理地址空间来访问该资源(或使用下文描述的限制性共享特征来访问使用其他物理地址空间中的一个的该资源)。前PoPA存储器系统部件的另一个示例可以是存储器保护引擎,其被提供用于保护保存到片外存储器的数据免受机密性损失和/或篡改。例如,这种存储器保护引擎可以根据资源从哪个物理地址空间被访问而使用不同的加密密钥来对与特定存储器系统资源相关联的数据进行单独地加密,有效地将别名物理地址看作它们对应于不同的存储器系统资源(例如,可以使用使加密依赖于地址的加密方案,并且可以将物理地址空间标识符视为用于此目的的地址的一部分)。
不管前PoPA存储器系统部件的形式如何,对于这样的PoPA存储器系统部件而言,将别名物理地址看作它们对应于不同存储器系统资源是有用的,因为这提供了发出到不同物理地址空间的访问之间的硬件强制分离,使得与一个域相关联的信息不能通过诸如高速缓存定时侧信道或涉及由一致性控制电路触发的一致性变化的侧信道的特征泄漏到另一个域。
在一些具体实施中,可以使用用于各个不同物理地址空间的不同数字物理地址值来表示不同物理地址空间中的别名物理地址。该方法可能需要映射表来在PoPA处确定不同物理地址值中的哪一个对应于相同存储器系统资源。然而,这种维护映射表的开销可能被认为是不必要的,因此在一些具体实施中,如果别名物理地址包括在每个不同物理地址空间中使用相同数字物理地址值来表示的物理地址,则这可能更简单。如果采用这种方法,则在物理别名点处,简单地丢弃标识使用存储器访问来访问哪个物理地址空间的物理地址空间标识符,然后向下游提供剩余的物理地址位作为去别名物理地址就足够了。
因此,除了前PoPA存储器系统部件之外,存储器系统还可以包括PoPA存储器系统部件,该PoPA存储器系统部件被配置为对所述多个别名物理地址进行去别名,以获得要提供给至少一个下游存储器系统部件的去别名物理地址。PoPA存储器系统部件可以是访问映射表以在特定地址空间中找到对应于别名地址的去别名地址的设备,如上所述。然而,该PoPA部件也可以简单地是存储器系统中与给定存储器访问相关联的物理地址标签被丢弃的位置,使得下游提供的物理地址唯一地识别对应的存储器系统资源,而不管从其提供哪个物理地址空间。或者,在某些情况下,PoPA存储器系统部件仍可向至少一个下游存储器系统部件提供物理地址空间标签(例如,为了实现如下文进一步论述的完成器侧滤波),但PoPA可以标记存储器系统内的点,超过该点下游存储器系统部件不再将别名物理地址看作不同存储器系统资源,而是考虑别名物理地址中的每一个来映射相同存储器系统资源。例如,如果PoPA下游的存储器控制器或硬件存储器存储设备接收到给定存储器访问请求的物理地址标签和物理地址,则如果该物理地址对应于与先前看到的事务相同的物理地址,则即使各个事务指定不同的物理地址空间标签,也可以应用对访问相同物理地址的各个事务(诸如合并对相同地址的访问)执行的任何危险检查或性能改进。相比之下,对于在PoPA上游的存储器系统部件,如果访问相同物理地址的事务在不同物理地址空间中指定相同物理地址,则可以不调用对这些事务采取的这种危险检查或性能改进步骤。
上述技术可以在具有用于实现上述功能的硬件电路逻辑的硬件装置中实现。因此,处理电路和地址转换电路可以包括硬件电路逻辑。然而,在其他示例中,用于控制主机数据处理装置以提供用于执行目标代码的指令执行环境的计算机程序可以设置有处理程序逻辑和地址转换程序逻辑,其以软件形式执行与上述处理电路和地址转换电路等效的功能。这对于例如使得为特定指令集架构编写的目标代码能够在可能不支持该指令集架构的主计算机上执行是有用的。因此,可以由模拟软件来仿真主计算机未提供的指令集架构所期望的功能,该模拟软件为目标代码提供了与在实际支持该指令集架构的硬件设备上执行目标代码的情况下所期望的等效的指令执行环境。因此,可以提供地址转换程序逻辑、颗粒保护条目加载程序逻辑、滤波程序逻辑和完整性检查逻辑以仿真先前描述的地址转换电路、颗粒保护条目加载电路、滤波电路和完整性检查电路的功能性。对于其中提供架构模拟的方法,相应物理地址空间是模拟物理地址空间,因为它们实际上不对应于由主计算机的硬件部件识别的物理地址空间,而是将被映射到主机的虚拟地址空间内的地址。提供这种模拟对于多种目的是有用的,例如用于使得为一个指令集架构编写的遗留代码能够在支持不同指令集架构的不同平台上执行,或者用于在支持新版本的指令集架构的硬件设备还不可用时,辅助为该新版本的指令集架构执行新软件的软件开发(这可以使得新版本的架构的软件能够与支持新版本的架构的硬件设备的开发并行地开始开发)。
图1示意性地示出了具有至少一个请求器设备4和至少一个完成器设备6的数据处理系统2的示例。互连线8提供请求器设备4与完成器设备6之间的通信。请求器设备能够发出请求对特定可寻址存储器系统位置的存储器访问的存储器访问请求。完成器设备6是负责为指向其的存储器访问请求提供服务的设备。尽管图1中未示出,但是一些设备可能能够既充当请求器设备又充当完成器设备。请求器设备4可例如包括处理元件诸如中央处理单元(CPU)或图形处理单元(GPU),或其他主设备诸如总线主设备、网络接口控制器、显示控制器等。完成器设备可包括负责控制对对应存储器存储单元的访问的存储器控制器、用于控制对外围设备的访问的外围控制器等。图1更详细地示出了请求器设备4之一的示例性配置,但应当理解,其他请求器设备4可具有类似配置。另选地,其他请求器设备可具有与图1左侧所示的请求器设备4不同的配置。
请求器设备4具有用于参考存储在寄存器12中的数据来响应于指令而执行数据处理的处理电路10。寄存器12可包括用于存储操作数和经处理的指令的结果的通用寄存器,以及用于存储控制数据以便配置处理电路如何执行处理的控制寄存器。例如,控制数据可包括用于选择哪个操作域是当前域的当前域指示14,以及指示哪个异常级别是处理电路10正在操作的当前异常级别的当前异常级别指示15。
处理电路10可能能够发出存储器访问请求,所述存储器访问请求指定识别要访问的可寻址位置的虚拟地址(VA)和识别当前域的域标识符(域ID或“安全状态”)。地址转换电路16(例如,存储器管理单元(MMU))通过基于存储在存储器系统中的页表结构中定义的页表数据的地址转换的一个或多个阶段来将虚拟地址转换成物理地址(PA)。转换后备缓冲器(TLB)18充当查找高速缓存以便高速缓存该页表信息中的一些信息,从而比每次需要地址转换时必须从存储器获取页表信息的情形更快地访问。在该示例中,除了生成物理地址之外,地址转换电路16还选择与物理地址相关联的多个物理地址空间之一并且输出识别所选择的物理地址空间的物理地址空间(PAS)标识符。下文将更详细地讨论PAS的选择。
PAS滤波器20充当请求器侧滤波电路以便基于转换的物理地址和PAS标识符来检查是否允许在PAS标识符所识别的指定的物理地址空间内访问该物理地址。该查找基于存储器系统内存储的颗粒保护表结构中存储的颗粒保护信息。颗粒保护条目加载电路(也称为颗粒保护表加载或GPT加载电路)21从存储器加载包括颗粒保护信息的数据块。如下文进一步讨论的,由完整性检查电路23检查颗粒保护信息的加载块的完整性。与页表数据在TLB18中的高速缓存类似,颗粒保护信息可高速缓存在颗粒保护信息高速缓存22内。虽然颗粒保护信息高速缓存22在图1的示例中被示出为与TLB 18分开的结构,但在其他示例中,可将这些类型的查找高速缓存组合成单个查找高速缓存结构以使得组合的结构的条目的单次查找提供页表信息和颗粒保护信息两者。颗粒保护信息定义限制可从其访问给定物理地址的物理地址空间的信息,并且基于该查找,PAS滤波器20确定是否允许存储器访问请求继续发出到一个或多个高速缓存24和/或互连线8。如果不允许存储器访问请求的指定的PAS访问指定的物理地址,则PAS滤波器20阻断该事务并且可发信号通知故障。
虽然图1示出了包括具有多个请求器设备4的系统的示例,但为图1的左手侧上的一个请求器设备示出的特征也可包括在仅存在一个请求器设备(诸如单核处理器)的系统中。
虽然图1示出了由地址转换电路16执行给定请求对PAS的选择的示例,但在其他示例中,可由地址转换电路16将用于确定要选择哪个PAS的信息连同PA一起输出到PAS滤波器20,并且PAS滤波器20可选择PAS并检查是否允许在所选择的PAS内访问PA。
PAS滤波器20的提供有助于支持可在多个操作域中操作的系统,每个操作域与其自身隔离的物理地址空间相关联,其中对于存储器系统的至少一部分而言(例如,对于一些高速缓存或一致性实施机构诸如探听滤波器而言),即使这些地址空间内的地址实际上涉及存储器系统中的相同物理位置,也将单独物理地址空间看作是它们涉及识别单独存储器系统位置的完全单独的地址集合。这对于安全目的可能是有用的。
图2示出了处理电路10可操作的不同操作状态和域的示例,以及可在不同异常级别和域中执行的软件的类型的示例(当然,应当理解,安装在系统上的特定软件由管理该系统的各方选择,因此不是硬件架构的基本特征)。
处理电路10可在多个不同异常级别80(在该示例中,被标记为EL0、EL1、EL2和EL3的四个异常级别)处操作,其中在该示例中,EL3是指具有最高权限级别的异常级别,而EL0是指具有最低权限的异常级别。应当理解,其他架构可选择相反编号以使得具有最高编号的异常级别可被视为具有最低权限。在该示例中,最低权限的异常级别EL0用于应用程序级代码,次高权限的异常级别EL1用于操作系统级代码,次高权限的异常级别EL2用于管理多个虚拟化操作系统之间的切换的管理程序级代码,而最高权限的异常级别EL3用于管理相应域之间的切换和物理地址向物理地址空间的分配的监控代码,如稍后描述。
当在处理软件处于特定异常级别时发生异常的时候,对于一些类型的异常而言,产生至更高(更高权限)的异常级别的异常,其中基于发生的特定异常的属性来选择将产生该异常的特定异常级别。然而,在一些情况下,有可能在与和在产生异常时处理的代码相关联的异常级别相同的异常级别处产生其他类型的异常。当产生异常时,可保存表征在产生该异常时的处理器的状态的信息,包括例如产生该异常时的当前异常级别,因此一旦已处理异常处理程序以处理该异常,处理可就返回到前一处理并且保存的信息可用于识别处理应返回到的异常级别。
除了不同异常级别之外,处理电路还支持多个操作域,包括根域82、安全(S)域84、较不安全域86和领域域88。为了便于参考,较不安全域在下文中将被描述为“非安全”(NS)域,但应当理解,这并非旨在暗示安全的任何特定级别(或缺乏安全)。相反,“非安全”仅仅指示非安全域旨在用于不如在安全域中操作的代码那样安全的代码。在处理电路10处于最高异常级别EL3时选择根域82。当处理电路处于其他异常级别EL0至EL2之一时,基于当前域指示符14来选择当前域,该当前域指示符指示其他域84、86、88中的哪个域是活动的。对于其他域84、86、88中的每个域而言,处理电路可处于异常级别EL0、EL1或EL2中的任何异常级别。
在引导时间,可例如在更高权限的异常级别EL3或EL2内执行引导代码(例如,BL1、BL2、OEM引导)的多个片段。引导代码BL1、BL2可与例如根域相关联,并且OEM引导代码可在安全域中操作。然而,一旦引导该系统,在运行时,处理电路10就可被视为一次在域82、84、86和88之一中操作。域82至88中的每个域与其自身的相关联的物理地址空间(PAS)相关联,这实现了将来自不同域的数据隔离在存储器系统的至少一部分内。这将在下文更详细地描述。
非安全域86可用于常规应用程序级处理,并且可用于操作系统和管理程序活动以便管理此类应用程序。从而,在非安全域86内,可存在在EL0处操作的应用程序代码30、在EL1处操作的操作系统(OS)代码32以及在EL2处操作的管理程序代码34。
安全域84使某些片上系统安全性、介质或系统服务能够隔离到与用于非安全处理的物理地址空间分开的物理地址空间中。非安全域代码无法访问与安全域84相关联的资源,而安全域可访问安全资源和非安全资源两者,从这个意义上讲,安全域和非安全域不等同。支持安全域84和非安全域86的这种分区的系统的示例是基于安谋公司(Limited)提供的架构的系统。安全域可运行EL0处的可信应用程序36、EL1处的可信操作系统38以及任选地EL2处的安全分区管理器40,如果支持安全分区,则该安全分区管理器使用阶段2页表来支持在安全域84中执行的不同可信操作系统38之间的隔离,其采用的方式类似于管理程序34可管理在非安全域86中执行的虚拟机或客操作系统32之间的隔离的方式。
将该系统扩展到支持安全域84在近年来已变得很普遍,因为其使单个硬件处理器能够支持隔离的安全处理,从而避免了在单独硬件处理器上执行该处理的需要。然而,随着安全域的使用的日益普及,许多具有这种安全域的实际系统现已在安全域内支持各种各样的不同软件提供商所提供的相对复杂的混合服务环境。例如,在安全域84中操作的代码可包括由以下(除了别的之外)提供的软件的不同片段:制造集成电路的硅片提供商、将硅片提供商所提供的集成电路组装成电子设备诸如移动电话的原始设备制造商(OEM)、为该设备提供操作系统32的操作系统供应商(OSV);和/或管理云服务器的云平台提供商,该云服务器通过云来支持用于多个不同客户端的服务。
然而,越来越期望为提供用户级代码(通常可能预期该用户级代码作为非安全域86内的应用程序30来执行)的各方提供安全计算环境,可信任所述安全计算环境不会将信息泄露给在相同物理平台上操作代码的其他方。可能期望此类安全计算环境可在运行时动态地分配,并且被认证和可证明,以使得用户能够在信任该设备处理潜在敏感的代码或数据之前验证是否在物理平台上提供足够的安全保证。这种软件的用户可能不希望信任提供可能通常在非安全域86中操作的富操作系统32或管理程序34的一方(或即使可信任这些提供商自身,用户也可能希望保护他们自身免于操作系统32或管理程序34受到攻击者的损害)。另外,虽然安全域84可用于需要安全处理的此类用户提供的应用程序,但实际上这会给提供需要安全计算环境的代码的用户和在安全域84内操作的现有代码的提供商带来问题。对于在安全域84内操作的现有代码的提供商而言,在安全域内添加任意的用户提供的代码将增加对其代码的潜在攻击的攻击面,这可能是不期望的,因此可能强烈建议不要允许用户将代码添加到安全域84中。另一方面,提供需要安全计算环境的代码的用户可能不愿意信任在安全域84中操作的代码的不同片段的所有提供商都有权访问其数据或代码,如果需要在特定域中操作的代码的认证或证明作为用户提供的代码执行其处理的先决条件,则可能难以审核和认证不同软件提供商所提供的在安全域84中操作的代码的所有不同片段,这可限制第三方提供更安全的服务的机会。
因此,如图2所示,提供了附加域88(称为领域域),该附加域可由此类用户引入的代码使用以提供与和在安全域24中操作的部件相关联的任何安全计算环境正交的安全计算环境。在领域域中,所执行的软件可包括多个领域,其中可由在异常级别EL2处操作的领域管理模块(RMM)46将每个领域与其他领域隔离。RMM 46可例如通过定义页表结构中的访问权限和地址映射来控制执行领域域88的相应领域42、44之间的隔离,其采用的方式类似于管理程序34管理在非安全域86中操作的不同部件之间的隔离的方式。在该示例中,所述领域包括在EL0处执行的应用程序级领域42以及跨异常级别EL0和EL1执行的封装应用程序/操作系统领域44。应当理解,没有必要同时支持EL0和EL0/EL1类型的领域,并且可由RMM46建立相同类型的多个领域。
与安全域84类似,领域域88具有向其分配的其自身物理地址空间,但领域域88和安全域84可各自访问与非安全域86相关联的非安全PAS,而领域域88和安全域84无法访问彼此的物理地址空间,从这个意义上讲,领域域正交于安全域84。这意味着在领域域88和安全域84中执行的代码彼此没有依赖性。领域域中的代码仅需要信任硬件RMM 46和在根域82中操作的管理域之间的切换的代码,这意味着证明和认证变得更可行。证明使软件的给定片段能够请求验证安装在设备上的代码匹配某些预期特性。这可通过以下方式实现:检查安装在设备上的程序代码的散列是否匹配可信方使用密码协议签署的预期值。可例如通过以下方式证明RMM 46和监控代码29:检查该软件的散列是否匹配可信方签署的预期值,该可信方诸如为制造包括处理系统2的集成电路的硅片提供商或设计支持基于域的存储器访问控制的处理器架构的架构提供商。这可允许用户提供的代码42、44在执行任何安全或敏感功能之前验证是否可信任基于域的架构的完整性。
从而,可以看出,与领域42、44相关联的代码(该代码先前已在非安全域86中执行,如虚线所示,这些虚线示出了这些过程先前已执行的非安全域中的间隙)现在可移动到领域域,在该领域域中,它们可具有更强的安全保证,因为它们的数据和代码不会被在非安全域86中操作的其他代码访问。然而,由于领域域88和安全域84正交并因此无法看到彼此的物理地址空间的事实,这意味着领域域中的代码的提供商不需要信任安全域中的代码的提供商,反之亦然。领域域中的代码可简单地信任为根域82提供监控代码29的可信固件以及可由硅片提供商或处理器所支持的指令集架构的提供商(在代码在其设备上执行时,该提供商可能已经内在地需要被信任)提供的RMM 46,以使得不需要与其他操作系统供应商、OEM或云主机的进一步信任关系,就能够为用户提供安全计算环境。
这可用于一系列应用程序和用例,包括例如移动钱包和支付应用程序、游戏防作弊和盗版机制、操作系统平台安全增强、安全虚拟机托管、机密计算、联网或物联网设备的网关处理。应当理解,用户可找到领域支持有用的许多其他应用程序。
为了支持向领域提供的安全保证,处理系统可支持证明报告功能,其中在引导时间或在运行时间,对固件图像和配置(例如,监控代码图像和配置或RMM代码图像和配置)进行测量,并且在运行时,测量领域内容和配置,以使得领域所有者可将相关证明报告回溯到已知实现和认证,从而对是否在该系统上操作作出信任决策。
如图2所示,提供了管理域切换的单独根域82,并且该根域具有其自身的隔离的根物理地址空间。即使对于仅具有非安全域86和安全域84但没有领域域88的系统,根域的创建和其资源与安全域的隔离也允许更稳健的实现,但还可用于不支持领域域88的实现。根域82可使用由硅片提供商或架构设计者提供(或认证)的监控软件29来实现,并且可用于提供安全引导功能、可信引导测量、片上系统配置、调试控制和其他方(诸如OEM)所提供的固件部件的固件更新的管理。可由硅片提供商或架构设计者在不依赖于最终设备的情况下开发、认证和部署根域代码。相比之下,可由OEM管理安全域84以便实现某些平台和安全服务。可由操作系统32控制非安全域86的管理以提供操作系统服务,而领域域88允许开发新形式的可信执行环境,这些可信执行环境可专用于用户或第三方应用程序,同时与安全域84中的现有安全软件环境相互隔离。
图3示意性地示出了用于支持这些技术的处理系统2的另一个示例。用相同附图标记示出与图1中相同的元件。图3更详细地示出了地址转换电路16,该地址转换电路包括阶段1存储器管理单元50和阶段2存储器管理单元52。阶段1MMU 50可负责将虚拟地址转换为物理地址(当该转换由EL2或EL3代码触发时)或转换为中间地址(当该转换由EL0或EL1代码在一定操作状态下触发时,在该操作状态下,需要由阶段2MMU 52进行进一步阶段2转换)。阶段2MMU可将中间地址转换成物理地址。阶段1MMU可基于由操作系统控制的用于从EL0或EL1发起的转换的页表、由管理程序控制的用于来自EL2的转换的页表或由监控代码29控制的用于来自EL3的转换的页表。另一方面,阶段2MMU 52可基于由管理程序34、RMM 46或安全分区管理器14定义的页表结构,具体取决于要使用哪个域。以这种方式将这些转换分成两个阶段允许操作系统管理其自身和应用程序的地址转换(假设它们是在该系统上运行的唯一操作系统),而RMM 46、管理程序34或SPM40可管理在相同域中运行的不同操作系统之间的隔离。
如图3所示,使用地址转换电路16的地址转换过程可返回安全属性54,所述安全属性与当前异常级别15和当前域14(或安全状态)相结合,允许响应于给定存储器访问请求而访问特定物理地址空间(由PAS标识符或“PAS TAG”识别)的一部分。可在提供先前描述的颗粒保护信息的颗粒保护表56中查找物理地址和PAS标识符。在该示例中,PAS滤波器20被示出为颗粒状存储器保护单元(GMPU),其验证是否允许所选择的PAS访问请求的物理地址,如果是这样,则允许该事务传递到作为存储器系统的系统结构的一部分的任何高速缓存24或互连线8。
GMPU 20允许将存储器分配到单独地址空间,同时提供基于硬件的强隔离保证并且在物理存储器向这些地址空间中分配的方法方面提供空间和时间灵活性以及高效共享方案。如先前所描述,该系统中的执行单元被逻辑地分区为虚拟执行状态(域或“世界”),其中存在位于最高异常级别(EL3)处的一个执行状态(根世界),该执行状态被称为“根世界”,其管理物理存储器向这些世界的分配。
单个系统物理地址空间被虚拟化成多个“逻辑”或“架构”物理地址空间(PAS),其中每个此类PAS是具有独立一致性属性的正交地址空间。通过用PAS标签扩展系统物理地址来将该系统物理地址映射到单个“逻辑”物理地址空间。
允许给定世界访问逻辑物理地址空间的子集。这由硬件滤波器20实施,该硬件滤波器可附接到存储器管理单元16的输出。
世界使用用于地址转换的页表的转换表描述符中的字段来定义该访问的安全属性(PAS标签)。硬件滤波器20有权访问表(颗粒保护表56或GPT),该表为系统物理地址空间中的每页定义颗粒保护信息(GPI),该GPI指示与之相关联的PAS TAG和(任选地)其他颗粒保护属性。
硬件滤波器20比照颗粒的GPI来检查世界ID和安全属性,并且决定是否可授予访问权限,从而形成颗粒状存储器保护单元(GMPU)。
例如,GPT 56可驻留在片上SRAM中或片外DRAM中。如果在片外存储,则GPT 56可由片上存储器保护引擎来进行完整性保护,该片上存储器保护引擎可使用加密、完整性和新鲜度机制来保持GPT 56的安全性。
将GMPU 20定位在该系统的请求器侧上(例如,MMU输出上)而不是定位在完成器侧上允许按页粒度分配访问权限,同时允许互连线8继续跨多个DRAM端口对该页进行散列化/剥离。
事务仍然标记有PAS TAG,因为它们在整个系统结构24、8中传播直到到达被定义为物理别名点60的位置。这允许将滤波器定位在主侧上,而与从侧滤波相比不会削弱安全保证。由于该事务在整个系统中传播,PAS TAG可用作用于地址隔离的纵深安全机制:例如,高速缓存可将PAS TAG添加到高速缓存中的地址标签,从而防止使用错误PAS TAG对相同PA进行的访问在高速缓存中命中并因此改善抗侧信道攻击。PAS TAG还可用作附接到存储器控制器的保护引擎的上下文选择器,其在将数据写入到外部DRAM之前对数据进行加密。
物理别名点(PoPA)是PAS TAG被剥离并且地址从逻辑物理地址变回到系统物理地址的系统中的位置。PoPA可位于高速缓存下方的系统的完成器侧处,在此处(使用通过PASTAG解决的加密上下文)对物理DRAM进行访问。另选地,其可位于高速缓存上方以便以安全性降低的代价简化系统实现。
在任何时间点,世界均可请求将页从一个PAS转换到另一个PAS。对EL3处的监控代码29作出请求,该监控代码检查GPI的当前状态。EL3可仅允许发生特定组的转换(例如,从非安全PAS到安全PAS,但不从领域PAS到安全PAS)。为了提供干净转变,该系统支持新指令-“数据清理和无效至物理别名点”,EL3可在将页转变到新PAS之前提交该指令-这保证与前一PAS相关联的任何残余状态从PoPA 60上游(比PoPA 60更靠近请求器侧)的任何高速缓存刷新。
可通过将GMPU 20附接到主侧来实现的另一种特性是存储器在世界之间的高效共享。可能期望为N个世界的子集授予共享访问物理颗粒的权限,同时防止其他世界访问该物理颗粒。这可通过以下方式实现:将“限制性共享”语义添加到颗粒保护信息,同时迫使其使用特定PAS TAG。作为一个示例,GPI可指示物理颗粒可仅由“领域世界”88和“安全世界”84访问,同时标记有安全PAS 84的PAS TAG。
上述特性的示例是使特定物理颗粒的可见性特性作出快速变化。考虑为每个世界分配仅可供该世界访问的专用PAS的情况。对于特定颗粒而言,该世界可请求在任何时间点通过以下方式使这些颗粒对非安全世界可见:将其GPI从“独占”改变为“与非安全世界限制性共享”,同时不改变PAS关联。这样,可增加该颗粒的可见性而不需要昂贵的高速缓存维护或数据复制操作。
图4示出了相应物理地址空间向硬件中提供的物理存储器上的别名的概念。如先前所描述,域82、84、86、88中的每个域具有其自身的相应物理地址空间61。
在地址转换电路16生成物理地址的时间点,物理地址具有由该系统支持的一定数值范围62内的值,不论选择哪个物理地址空间,该值都相同。然而,除了物理地址的生成之外,地址转换电路16还可基于当前域14和/或用于导出物理地址的页表条目中的信息来选择特定物理地址空间(PAS)。另选地,并非地址转换电路16执行PAS的选择,而是地址转换电路(例如,MMU)可输出从页表条目(PTE)导出的用于选择PAS的物理地址和信息,然后PAS滤波器或GMPU 20可使用该信息来选择PAS。
可根据处理电路10在发出存储器访问请求时正在操作的当前域,按照下表中定义的规则来限制给定存储器访问请求对PAS的选择:
当前域 | 非安全PAS | 安全PAS | 领域PAS | 根PAS |
非安全 | 可访问 | 不可访问 | 不可访问 | 不可访问 |
安全 | 可访问 | 可访问 | 不可访问 | 不可访问 |
领域 | 可访问 | 不可访问 | 可访问 | 不可访问 |
根 | 可访问 | 可访问 | 可访问 | 可访问 |
对于存在可供选择的多个物理地址空间的那些域而言,来自用于提供物理地址的访问的页表条目的信息用于在可用PAS选项之间选择。
从而,在PAS滤波器20将存储器访问请求输出到系统结构24、8的时间点(假设其通过了任何滤波检查),存储器访问请求与物理地址(PA)和所选择的物理地址空间(PAS)相关联。
从在物理别名点(PoPA)60之前操作的存储器系统部件(诸如高速缓存、互连线、探听滤波器等)的角度来看,相应物理地址空间61被看作是对应于存储器内的不同系统位置的完全单独的地址范围。这意味着,从前PoPA存储器系统部件的角度来看,存储器访问请求所识别的地址范围实际上是可在地址转换中输出的范围62的大小的四倍,因为实际上PAS标识符被看作是物理地址自身旁边的附加地址位,以使得根据选择哪个PAS,可将相同物理地址PAx映射到不同物理地址空间61中的多个别名物理地址63。这些别名物理地址63实际上全都对应于物理硬件中实现的相同存储器系统位置,但前PoPA存储器系统部件将别名地址63看作是单独地址。从而,如果存在为此类地址分配条目的任何前PoPA高速缓存或探听滤波器,则别名地址63将被映射到具有单独高速缓存命中/未命中决策和单独一致性管理的不同条目中。这降低了攻击者使用高速缓存或一致性侧信道作为探测其他域的操作的机构的可能性或有效性。
该系统可包括超过一个PoPA 60(例如,如下文所讨论的图14中所示)。在每个PoPA60处,别名物理地址收缩成系统物理地址空间64中的单个去别名地址65。在任何后PoPA部件的下游提供去别名地址65,以使得实际上识别存储器系统位置的系统物理地址空间64再一次为与在请求器侧上执行的地址转换中可输出的物理地址范围相同的大小。例如,在PoPA60处,可从这些地址中剥离PAS标识符,并且对于下游部件而言,这些地址可简单地使用物理地址值来识别,而不指定PAS。另选地,对于期望存储器访问请求的一些完成器侧滤波的一些情况而言,PAS标识符仍可在PoPA 60的下游提供,但可不被解释为地址的一部分,以使得在不同物理地址空间60中出现的相同物理地址将在PoPA的下游解释为涉及相同存储器系统位置,但供应的PAS标识符仍可用于执行任何完成器侧安全检查。
图5示出了可如何使用颗粒保护表56将系统物理地址空间64分成为特定架构物理地址空间61内的访问分配的组块。颗粒保护表(GPT)56定义允许从每个架构物理地址空间61访问系统物理地址空间65的哪些部分。例如,GPT 56可包括各自与一定大小(例如,4K页)的物理地址颗粒相对应的多个条目,并且可定义为该颗粒分配的PAS,该PAS可从非安全域、安全域、领域域和根域中选择。根据设计,如果特定颗粒或颗粒组被分配到与这些域之一相关联的PAS,则其仅可在与该域相关联的PAS内访问并且无法在其他域的PAS内访问。然而,应当注意,虽然无法从根PAS内访问分配到安全PAS(举例来说)的颗粒,但是根域82能够通过以下方式访问该物理地址颗粒:在其页表中指定PAS选择信息,以便确保与映射到物理寻址的存储器的该区域的页相关联的虚拟地址转换成安全PAS(而非根PAS)中的物理地址。从而,可在为给定存储器访问请求选择PAS的时间点控制数据跨域的共享(达到先前描述的表中定义的可访问性/不可访问性规则所允许的程度)。
然而,在一些具体实施中,除了允许在GPT所定义的分配的PAS内访问物理地址颗粒之外,GPT还可使用其他GPT属性将地址空间的某些区域标记为与另一个地址空间(例如,与更低或正交权限的域相关联的地址空间(通常不允许其为该域的访问请求选择分配的PAS))共享。这可促进数据的暂时共享而不需要改变给定颗粒的分配的PAS。例如,在图5中,领域PAS的区域70在GPT中定义为被分配到领域域,因此通常不可从非安全域86访问,这是由于非安全域86无法为其访问请求选择领域PAS。由于非安全域26无法访问领域PAS,于是通常非安全代码无法看到区域70中的数据。然而,如果领域暂时希望将存储器的其分配区域中的其数据中的一些数据与非安全域共享,则其可请求在根域82中操作的监控代码29更新GPT56以指示区域70将与非安全域86共享,并且这可使区域70也可从如图5的左手侧上所示的非安全PAS访问,而不需要改变哪个域是区域70的分配的域。如果领域域已将其地址空间的某区域指定为与非安全域共享,则尽管从非安全域发出的以该区域为目标的存储器访问请求最初可指定非安全PAS,但是PAS滤波器20可重映射该请求的PAS标识符以相反地指定领域PAS,从而下游存储器系统部件将该请求看作是其始终从领域域发出。该共享可提高性能,因为用于将不同域分配到特定存储器区域的操作可更为性能密集性的,其涉及更大程度的高速缓存/TLB无效和/或存储器中的数据归零或数据在存储器区域之间的复制(如果预期共享仅是暂时的,则这可为不正当的)。
图6是示出如何确定当前操作域的流程图,这可由处理电路10或由地址转换电路16或PAS滤波器20执行。在步骤100处,确定当前异常级别15是否为EL3,如果是这样,则在步骤102处,将当前域确定为根域82。如果当前异常级别不是EL3,则在步骤104处,将当前域确定为非安全域86、安全域84和领域域88中的一者,如处理器的EL3控制寄存器内的至少两个域指示位14所指示(由于根域由作为EL3的当前异常级别来指示,可能不必要具有与根域相对应的域指示位14的编码,因此可为其他目的预留域指示位的至少一个编码)。EL3控制寄存器可在EL3处操作时写入并且无法从其他异常级别EL2-EL0写入。
图7示出了可用于页表结构中的页表条目的页表条目(PTE)格式的示例,这些页表条目由地址转换电路16用于将虚拟地址映射到物理地址,将虚拟地址映射到中间地址,或将中间地址映射到物理地址(具体取决于是否在完全需要阶段2转换的操作状态下执行转换,以及如果需要阶段2转换,则该转换是阶段1转换还是阶段2转换)。一般来讲,给定页表结构可被定义为多级表结构,其被实现为页表树,其中基于存储在处理器的转换表基地址寄存器中的基地址来识别页表的第一级别,并且从对其执行转换查找的输入地址的位子集导出在页表内选择特定级别1页表条目的索引(输入地址可以是用于阶段1转换的虚拟地址或用于阶段2转换的中间地址)。级别1页表条目可以是提供指向下一级别页表的指针112的“表描述符”110,然后可基于输入地址的进一步的位子集来从下一级别页表选择进一步的页表条目。最后,在对页表连续级别的一次或多次查找之后,可识别块或页描述符PTE 114、116、118,该块或页描述符提供与输入地址相对应的输出地址120。输出地址可以是中间地址(对于在还执行进一步阶段2转换的操作状态下执行的阶段1转换)或物理地址(对于阶段2转换或在不需要阶段2时的阶段1转换)。
为了支持上述不同物理地址空间,除了下一级别页表指针112或输出地址120以及用于控制对存储器的对应块的访问的任何属性122之外,页表条目格式还指定用于物理地址空间选择的一些附加状态。
对于表描述符110而言,除了非安全域86之外的任何域所使用的PTE包括非安全表指示符124,该非安全表指示符指示是否将从非安全物理地址空间或从当前域的物理地址空间访问下一级别页表。这有助于促进页表的更高效管理。通常根域、领域域或安全域24所使用的页表结构可仅需要为虚拟地址空间的一部分定义特殊页表条目,并且对于其他部分而言,可使用非安全域26所使用的相同页表条目,因此通过提供非安全表指示符124,这可允许页表结构的更高级别提供专用领域/安全表描述符,同时在页表树的一定点处,根领域域或安全域可切换到将来自非安全域的页表条目用于地址空间中那些不需要更高安全性的部分。仍可从与根域、领域域或安全域相关联的相关物理地址空间获取页表树的其他部分中的其他页表描述符。
另一方面,块/页描述符114、116、118可根据它们与哪个域相关联来包括物理地址空间选择信息126。非安全域86中使用的非安全块/页描述符118不包括任何PAS选择信息,因为非安全域仅能够访问非安全PAS。然而,对于其他域而言,块/页描述符114、116包括PAS选择信息126,该PAS选择信息用于选择要将输入地址转换成哪个PAS。对于根域22而言,EL3页表条目可具有PAS选择信息126,该PAS选择信息包括至少2位以将与4个域82、84、86、88中的任何域相关联的PAS指示为对应物理地址将被转换成的所选择的PAS。相比之下,对于领域域和安全域而言,对应块/页描述符116仅需要包括一位PAS选择信息126,其对于领域域而言在领域PAS和非安全PAS之间选择,并且对于安全域而言在安全PAS和非安全PAS之间选择。为了提高电路实现的效率并且避免增加页表条目的大小,对于领域域和安全域而言,块/页描述符116可在PTE内的相同位置处编码PAS选择信息126,而不考虑当前域是领域域还是安全域,以使得PAS选择位126可共享。
从而,图8是流程图,其示出了基于当前域以及来自块/页PTE的用于为给定存储器访问请求生成物理地址的信息124、126来选择PAS的方法。可由地址转换电路16执行PAS选择,或如果地址转换电路将PAS选择信息126转发到PAS滤波器20,则可由地址转换电路16和PAS滤波器20的组合执行PAS选择。
在图8中的步骤130处,处理电路10发出将给定虚拟地址(VA)指定为目标VA的存储器访问请求。在步骤132处,地址转换电路16在其TLB18中查找任何页表条目(或从此类页表条目导出的高速缓存的信息)。如果任何所需的页表信息不可用,则地址转换电路16发起至存储器的页表漫游以获取所需的PTE(潜在地需要一系列存储器访问以逐步经过页表结构的相应级别,和/或潜在地需要地址转换的多个阶段以获得从VA至中间地址(IPA)再从IPA至PA的映射)。应当注意,地址转换电路16在页表漫游操作中发出的任何存储器访问请求可自身经受地址转换和PAS滤波,因此在步骤130处接收到的请求可以是为从存储器请求页表条目而发出的存储器访问请求。一旦已识别相关页表信息,就(可能在两个阶段中经由IPA)将虚拟地址转换成物理地址。在步骤134处,地址转换电路16或PAS滤波器20使用图6所示的方法来确定哪个域是当前域。
如果当前域是非安全域,则在步骤136处,为该存储器访问请求选择的输出PAS是非安全PAS。
如果当前域是安全域,则在步骤138处,基于包括在块/页描述符PTE中的提供物理地址的PAS选择信息126来选择输出PAS,其中输出PAS将被选择为安全PAS或非安全PAS。
如果当前域是领域域,则在步骤140处,基于包括在块/页描述符PTE中的从其导出物理地址的PAS选择信息126来选择输出PAS,并且在这种情况下,输出PAS被选择为领域PAS或非安全PAS。
如果在步骤134处当前域被确定为根域,则在步骤142处,基于根块/页描述符PTE114中的从其导出物理地址的PAS选择信息126来选择输出PAS。在这种情况下,输出PAS被选择为与根域、领域域、安全域和非安全域相关联的物理地址空间中的任何物理地址空间。
图9示出了提供对应于多个物理地址空间颗粒的颗粒保护条目152的颗粒保护数据块150的示例。在该示例中,64位颗粒保护数据块150包括16个颗粒保护条目 (GPE)152,每个颗粒保护条目提供4位颗粒保护信息(GPI)。
在为每个GPE提供的4位编码空间内(提供了16个可能编码),可以将一定数量的编码定义为有效编码以指示针对颗粒保护信息的有效选项。例如, 16个可用编码中的7个可被分配用于编码颗粒保护信息的以下有效项:
·允许访问根PAS,并且禁止访问其他PAS;
·允许访问安全PAS,并且禁止访问其他PAS;
·允许访问领域PAS,并且禁止访问其他PAS;
·允许访问非安全PAS,并且禁止访问其他PAS;
·如果当前异常级别是EL3,则允许访问任何PAS,并且如果当前异常级别是EL0、EL1或EL2,则禁止访问任何PAS;
·允许访问任何PAS;
·禁止访问所有PAS(该编码也可在GPE无效的情况下使用)。
应当理解,针对这些选项中的每个选项使用哪个特定的4位GPI编码是指令集架构设计者的任意设计选择-可以使用相应编码到GPI字段的4位值的任何映射。
还应理解,这些仅仅是颗粒保护信息的可能有效片段的一些选项,并且也可以支持其他选项,或者可以针对一些架构具体实施省略这些选项中的一些选项。例如,如果如上所述实施“限制性共享”语义,则可以分配附加编码以指示共享-例如,编码可以指示允许访问领域PAS和非安全PAS(指示在颗粒将通常被分配到领域PAS时,领域域先前已向根域进行请求以指示与非安全PAS共享颗粒)。
一般来讲,可存在不用于指示针对GPI的有效选项的一些备用无效编码。这些备用无效编码可出于以下中的任一者而产生: 由于有效选项的数量不是2的精确幂,或因为架构设计者为未来扩展留下空间,或作为有意的设计选择以增加可基于与下面提供的定量分析类似的分析来检测数据完整性丢失的概率。
在以上示例中,16个可用编码中存在9个无效的可用编码。这可以被利用以提供如下所述的数据完整性检查。
对于加载块中的每个GPE,数据完整性检查确定GPE是否具有有效GPI编码中的一个编码或无效GPI编码中的一个编码。如果块中的GPE中的任何GPE具有无效GPI编码(即使其不是处理当前存储器访问请求所需的GPE),则发信号通知数据完整性故障。如果GPE中的所有GPE具有有效的GPI编码,则假设数据是有效的并且可以是可信任的。
当从存储器的潜在易于被攻击者篡改的区域加载提供多个颗粒保护条目的数据块150时,然后可假设该颗粒保护数据块将在写入存储器的该区域之前已被加密。用于加密/解密的加密基元可以在具有与颗粒保护数据块150对应大小的数据块上操作。如果攻击者在存储器(DRAM)中的加密数据中引起单个位翻转状态(例如,通过执行Rowhammer风格攻击),则通常用于存储器加密的密码函数的扩散性质可意味着改变存储在存储器中的密文中的单个位导致在稍后从存储器读回修改的加密数据时由解密函数输出随机化的明文。因此,可以假设在攻击者已篡改密文之后由解密形成的解密数据是随机位串。
因此,考虑到在攻击者篡改存储在存储器中的密文数据的情况下解密的输出可有效地被认为是随机的,在攻击者进行修改之后的全部所得明文GPE最后具有有效GPI编码的概率如下(针对64位GPT块内存在16个4位GPE进行评估):
因此,对于以上具有9个无效编码的示例,攻击者篡改存储在存储器中的数据的哪怕一位能够规避数据完整性检查的可能性仅为1/555074。
概率将根据在一个事务中从存储器加载(并且作为整个块上的共同操作经受加密)的一个数据块中的无效编码数量和GPE数量变化。
更一般地,对于每个GPE具有N位GPI,2N个GPI编码中的X个是无效的,并且每个块具有Y个GPE,随机输出不会产生任何故障的概率将为因此架构设计者可根据需要选择N、X和Y以提供可接受的风险级别。例如,如果在上述示例中1/555074被认为是过高的风险,则这可以通过每个GPE提供一个附加冗余位以便增加无效编码数量X或通过在每个颗粒保护数据块中使更大数量Y个GPE成组在一起来调整。例如,如果代替处理16个GPE,加密和数据完整性检查被应用于包括128个4位GPE的整个64字节高速缓存行,则这将使无故障概率从((16-X)/16)^16增加至((16-X)/16)^128,因此即使X是2,仅2/16个值是无效的,那么不发生故障的可能性将降低至两千六百万分之一。
显然,每个数据块的无效编码的精确数量和GPE数量是一种设计选择问题,但是这证明了一个原则:简单地检查加载块中每个GPE的编码是否是无效的可能足以实施数据完整性。因此,如图1所示,PAS滤波器20可具有颗粒保护条目加载电路(GPT加载电路)21(当用于检查到目标PA的存储器访问所需的GPE在颗粒保护信息高速缓存22中尚未可用时,其从存储器加载颗粒保护数据块150)和用于对加载的颗粒保护数据块150执行数据完整性检查的完整性检查电路23。例如,完整性检查电路23可包括一组布尔逻辑门,用于检查加载块中的每个GPE的值是否是无效编码中的一个编码,以及在GPE中的任何GPE具有无效编码的情况下触发对故障的发信号通知。这避免了计算认证代码和维护元数据的完整性树以用于验证完整性的成本,这极大地提高了性能。
在其中实现基于检查有效/无效编码的完整性方案的示例中,可能需要管理GPT表的软件(在根域中执行)以确保块内的每个GPE具有有效编码,不仅仅是对应于当前在使用的物理地址颗粒的GPE。此要求可能不由硬件中的任何电路实施(可能对将GPT数据写入到存储器不存在检查GPE编码是否是有效的,因为根域代码是在EL3处操作并且使用上文描述的证明机制证明的可信代码,其可以被信任以适当的方式设置GPT数据)。
图10示出了用于数据完整性验证的另选技术。在该示例中,GPE 152的块150与签名154相关联,在块被写入存储器时通过将散列函数或其他认证代码生成函数应用于GPT数据块150的内容152来计算该签名。在该示例中,签名154在GPE旁边存储在存储器中(使得当读取块时,从存储器加载该签名),但是签名154也可以存储在与GPE 152的相关联块不同的存储位置处。当从存储器读取GPE的块时,在对GPE 152(和签名(如果其作为同一块的一部分存储))进行解密之后,根据GPE 152的读取值计算签名检查值并且将其与先前存储的完整性签名154进行比较,并且如果检测到先前存储的签名154与签名检查值之间的失配,则发信号通知故障以指示数据完整性丢失。如果签名154匹配签名检查值,则GPT数据块150可以由滤波电路20高速缓存或用于滤波存储器访问。利用这种方法,如果签名154不存储在信任边界(信任边界表示超出其外数据可被认为是易受攻击的边界)之内的存储器中,则可能需要存储其他完整性元数据以用于实现对签名进行验证,以防止攻击者用不同的GPE值和不同的匹配签名替换GPE152和签名154。例如,可以使用签名树组合针对不同的GPT数据块150的签名154,其中每个树节点以较低的级别保护该树节点中的签名,直到最终可以将签名追溯回树的根,树的根可以对应于存储在信任边界之内的签名。在这种情况下,在验证GPT块150的完整性时可能存在更大的性能开销,因为可能需要执行遍历树的验证串,以在可以确认GPT块的完整性之前检查居间签名中的每个居间签名是有效的。
图11是示出由滤波电路20滤波存储器访问请求的流程图。在步骤170处,从地址转换电路16接收存储器访问请求(假设由地址转换电路执行的任何许可检查已经通过),指定目标PA并与选定PAS相关联。如上所述,选定PAS可由地址转换电路提供指示选定PAS的显式标识符来指示,或者由地址转换电路16转发从页表读取的PAS选择信息126来指示,这些页表与对处理电路10的当前域的指示一起可用于在滤波电路20处确定选定PAS。
在步骤172处,滤波电路20查找颗粒保护信息高速缓存22,以确定针对目标PA所需的GPE是否已经能够访问。如果否,则在步骤174处,颗粒保护条目加载电路21发出加载请求以从存储器请求包括目标GPE的颗粒保护数据块,该目标GPE对应于包括目标PA的PA颗粒。如果GPT是单级线性索引表,则可以根据GPT基础地址和从目标PA导出的偏移来确定颗粒保护数据块的地址。如果GPT是类似于地址转换电路16使用的页表结构的多级结构,则GPT基础地址和目标PA可用于导出第一级GPT条目的地址,该第一级GPT条目充当提供指向进一级颗粒保护表的指针的表描述符,并且通过漫游通过一个或多个进一级颗粒保护表,最终可在存储器中定位颗粒保护数据块。在GPT漫游期间发出的任何存储器访问请求本身不需要PAS检查,因为滤波电路20(GMPU)可被信任以发出正确的GPT存储器访问(与地址转换电路16发出的页表漫游访问形成对比,这些页表漫游访问经受PAS检查,并且因此可能导致与由处理电路发出的常规存储器访问请求类似的GPT查找)。
如果颗粒保护信息的任何块存储在存储器的经受存储器加密的受保护区域中,则在从存储器读取该信息时,在向滤波电路20提供解密数据之前,由如下面进一步描述的图13所示的存储器保护引擎330(存储器加密电路)应用解密。
在不支持颗粒保护条目的高速缓存的具体实施中,可以省略步骤172,并且该方法可从步骤170直接前进至步骤174(在这种情况下,每个存储器访问请求都可能需要加载颗粒保护信息)。
在步骤176处,针对作为GPT查找的一部分从存储器系统获得的任何接收到的颗粒保护数据块,完整性检查电路23执行数据完整性检查以确定接收到的颗粒保护数据块是否处于已经被篡改的风险。如上所述,在一些具体实施中,该检查可以简单地包括检查所获得的颗粒保护数据块中的每个GPE是否具有有效编码,并且如果颗粒保护数据块中的任何GPE具有无效编码,则可以认为检查失败。另选地,数据完整性检查可以检查从所获得的块导出的完整性签名检查值是否匹配与块相关联的先前存储的完整性签名,并且如果检查值与先前存储的完整性签名之间存在失配,则可以认为数据完整性检查失败。
在步骤178处,确定数据完整性检查是通过还是失败。如果数据完整性检查失败,则在步骤180处,完整性检查电路23触发对颗粒保护故障的发信号通知,与指示故障由完整性检查违反引起的故障类型或综合征信息相关联。发信号通知故障具有由在EL3处执行的异常处理程序代码处理的类型,使得根域代码处理该故障。例如,根域代码可触发系统重置或其他动作,以用于防止系统在存在可能攻击的情况下继续起作用。根域代码还可以使故障被报告到例如系统操作者或正在执行的软件的提供商。关于对故障的发信号通知采取的确切动作可以根据特定具体实施的需要而变化。
另一方面,如果数据完整性检查通过,则在步骤182处,可以将所获得的颗粒保护数据块高速缓存在颗粒保护信息高速缓存22中,并且在步骤184处,可以从所获得的颗粒保护数据块中提取对应于目标PA的GPE并将其用于检查是否允许继续进行在步骤170处接收到的存储器访问请求。如果在步骤172处,目标PA命中在颗粒保护信息高速缓存22中,则可以省略步骤174至182,并且替代地,该方法使用从颗粒保护信息高速缓存22获得的目标GPE直接前进至步骤184。
无论目标GPE是已经被高速缓存还是从存储器获得并通过了数据完整性检查,在步骤184处,滤波电路184基于目标GPE中的GPI识别目标GPE是否是无效的或指示与存储器访问请求相关联的选定PAS不是针对对应物理地址颗粒的允许PAS。如果目标GPE是有效的并指示选定PAS是允许PAS,则在步骤186处,滤波电路20允许继续进行存储器访问请求,并且将存储器访问请求与对与存储器访问请求相关联的PA和PAS的指示一起传递到高速缓存24或互连线8。如果目标GPE是无效的或指示选定PAS不是允许PAS,则在步骤188处,滤波电路20触发对颗粒保护故障的发信号通知,该颗粒保护故障与指示故障由其中存储器访问请求不满足目标GPE中指示的要求的访问违反导致的故障类型或综合征信息相关联。同样,发信号通知颗粒保护故障以由在EL3处的根域中操作的程序代码处理,但是通过故障类型或综合征信息与由于数据完整性违反而在步骤180处发信号通知的故障进行区分,使得根域代码可以响应于故障而采取不同的动作。
图12概括了地址转换电路16和PAS滤波器的操作。PAS滤波20可被视为在地址转换电路所执行的阶段1(和任选地阶段2)地址转换之后执行的附加阶段3检查。还应当注意,EL3转换基于页表条目,这些页表条目提供两位基于地址的选择信息(在图12的示例中标记为NS、NSE),而一位选择信息“NS”用于选择其他状态下的PAS。图12中指示为颗粒保护检查的输入的安全状态是指识别处理元件4的当前域的域ID。
图13示出了可以实现上述技术中的一些技术的数据处理系统的更详细示例。与先前示例中相同的元件用相同的附图标记示出。在图13的示例中,更详细地示出了处理元件4,其中除了处理电路10、地址转换电路16、TLB 18和PAS滤波器20之外,更详细地示出了包括1级指令高速缓存、1级数据高速缓存、2级高速缓存以及任选的在处理元件之间共享的共享3级高速缓存24的高速缓存24。中断控制器300可以控制各个处理元件对中断的处理。
如图13所示,能够执行程序指令以触发对存储器的访问的处理元件4不是可以设置有请求器侧PAS滤波器20的唯一类型的请求设备。在其他示例中,系统MMU 310(其被提供用于为不支持它们自己的地址转换功能的请求设备312、314提供地址转换功能,所述请求设备诸如网络接口控制器或显示控制器的片上设备312,或可经由总线与系统通信的片外设备314)可以提供有PAS滤波器20,以执行与处理元件4中的PAS滤波器20相同的GPT条目的请求器侧检查。其他请求设备可以包括调试访问端口316和控制处理器318,它们可以再次具有与它们相关联的PAS滤波器20,以在给定在GPT 56中定义的PAS分配的情况下,检查是否允许由请求设备316、318发出的对特定物理地址空间的存储器访问。尽管未在图13中明确指示,但是与这些设备相关联的任何PAS滤波器20也可以设置有上述GPT加载电路21和完整性检查电路23。如果这些设备中的任一个设备发出物理寻址的存储器访问请求(这可能在MMU针对该环境被禁用的情况下发生),则可以认为针对这些设备的选定PAS默认为与当前域相关联的PAS(即,如果当前域为非安全的,则为非安全PAS;如果当前域为安全的,则为安全PAS;如果当前域为领域,则为领域PAS;或如果当前域为根,则为根PAS)。
互连线8在图13中更详细地示出为一致性互连线8,其以及路由结构320还包括探听滤波器322,以用于管理相应处理元件中的高速缓存24之间的一致性,以及一个或多个系统高速缓存324,其可以执行请求设备之间共享的共享数据的高速缓存。探听滤波器322和系统高速缓存324可以位于PoPA 60的上游,并且因此可以使用由MMU 16、310为特定主设备选择的PAS标识符来标记它们的条目。默认情况下,可以假设与MMU不相关联的请求设备316、318总是发出请求特定域,诸如非安全域(或根域,如果它们是可信任的)。
图13示出了作为前PoPA部件的另一个示例的存储器保护引擎(MPE)330,该前PoPA部件将相应PAS中的别名物理地址看作它们引用不同的地址位置,该存储器保护引擎被设置在互连线8与给定存储器控制器6之间,以用于控制对片外存储器340的访问。MPE 330可以负责对写入片外存储器340的数据进行加密以保持机密性,并在读回时对数据进行解密(这可包括含有GPE的GPT块,如上所述)。此外,通过在将数据写入存储器时生成完整性元数据,并且在从片外存储器读回数据时使用元数据来验证数据是否已经更改,MPE可以防止对存储在片外存储器中的数据被篡改。当加密数据或为存储器完整性生成散列时,可以根据正在访问的物理地址空间使用不同的密钥,即使访问实际上对应于片外存储器340中的相同位置的别名物理地址。这通过进一步分离与不同操作域相关联的数据来提高安全性。
在该示例中,PoPA 60位于存储器保护引擎330与存储器控制器6之间,使得在请求到达存储器控制器6时,物理地址不再被视为映射到存储器340中的不同物理位置,这取决于它们被访问的物理地址空间。
图13示出了完成器设备6的另一个示例,其可以是用于与外围设备350或片上存储器360的区域(例如,实现为静态随机存取存储器(SRAM))通信的外围总线或非一致性互连线。此外,外围总线或非一致性互连线6可用于与安全元件370(例如用于执行密码处理的密码单元、随机数产生器372或存储静态硬连线信息的某些熔断器374)通信。还可以通过外围总线或非一致性互连线6来访问各种电源/复位/调试控制器380。
对于片上SRAM 360,提供从侧(完成器侧)PAS滤波器400可能是有用的,该滤波器可以基于完成器侧保护信息来执行存储器访问的完成器侧滤波,该完成器侧保护信息定义了允许哪些物理地址空间访问给定的物理地址块。该完成器侧信息可以比请求器侧PAS滤波器20使用的GPT更粗略地定义。例如,从侧信息可以简单地指示整个SRAM单元361可以专用于由领域域使用,另一个SRAM单元362可以专用于由根域使用,等等用于其他域。因此,相对粗略地定义的物理地址块可以指向不同的SRAM单元。该完成器侧保护信息可以由引导加载器代码静态地定义,该引导加载器代码在引导时将信息加载到无法在运行时更改的完成器侧PAS滤波器,因此它不如请求器侧PAS滤波器20所使用的GPT灵活。然而,对于将物理地址划分为每个域可访问的特定区域在引导时间是已知的并且将不改变,并且不需要细粒度划分的使用情况,使用从侧PAS滤波器400而不是请求器侧的PAS滤波器20可能更有效,因为这可以允许在请求器侧消除获得GPT条目以及将分配的PAS和共享属性信息与当前存储器访问请求的信息进行比较的功率和性能成本。此外,如果可以在多级GPT结构中的顶级GPT条目(或在不同于最终级别的级别上的其他表描述符条目)中指示直通指示符,则对于以映射到由完成器侧PAS滤波器400监管的片上存储器360的物理地址的区域中的一个为目标的请求,可以避免对GPT结构的其他级别的访问(其可以被执行以找到关于所分配的PAS的更细粒度信息,以便请求接受请求器侧检查)。
因此,支持使请求器侧和完成器侧都能够检查保护信息的混合方法对于提高性能和功率效率很有用。系统设计者可以定义对于存储器的特定区域应该采用哪种方法。
图14示出了可以使用的模拟器具体实施。虽然先前所述的实施方案在用于操作支持所涉及的技术的特定处理硬件的装置和方法方面实现了本发明,但也可以提供根据本文所述的实施方案的指令执行环境,该指令执行环境是通过使用计算机程序来实现的。此类计算机程序通常被称为模拟器,在一定程度上是因为此类计算机程序提供硬件架构的基于软件的具体实施。模拟器计算机程序的种类包括仿真器、虚拟机、模型和二进制转换器,其包括动态二进制转换器。通常,模拟器具体实施可以在支持模拟器程序410的主机处理器430上运行,该主机处理器任选地运行主机操作系统420。在一些布置中,在硬件和所提供的指令执行环境和/或在同一主机处理器上提供的多个不同指令执行环境之间可存在多个模拟层。在历史上,需要强大的处理器来提供以合理速度执行的模拟器具体实施,但这种方法在某些情况下可能是合理的,诸如当出于兼容性或重复使用原因而希望运行另一个处理器本地的代码时。例如,模拟器具体实施可向指令执行环境提供主机处理器硬件不支持的附加功能,或者提供通常与不同硬件架构相关联的指令执行环境。模拟概述在以下文献中给出:“Some Efficient Architecture Simulation Techniques”,Robert Bedichek,Winter1990USENIX Conference,第53-63页。
就先前已参考特定硬件构造或特征描述了实施方案而言,在模拟的实施方案中,等效功能可由合适的软件构造或特征提供。例如,特定电路可在模拟的实施方案中被实现为计算机程序逻辑。类似地,存储器硬件诸如寄存器或高速缓存存储器可在模拟的实施方案中被实现为软件数据结构。在其中先前描述的实施方案中参考的硬件元件中的一个或多个硬件元件存在于主机硬件(例如,主机处理器430)上的布置中,在合适的情况下,一些模拟的实施方案可以利用主机硬件。
模拟器程序410可存储在计算机可读存储介质(其可以是非暂时性介质)上,并且向目标代码400(其可以包括应用程序、操作系统和管理程序)提供程序接口(指令执行环境),该程序接口与由模拟器程序410建模的硬件架构的接口相同。因此,可以使用模拟器程序410从指令执行环境内执行目标代码400的程序指令,使得实际上不具有上文所讨论的装置2的硬件特征的主计算机430可以仿真这些特征。这对于例如允许在实际支持该架构的硬件设备可用之前测试正在为新版本的处理器架构开发的目标代码400是有用的,因为可以通过在不支持该架构的主机设备上执行的模拟器内运行来测试目标代码。
模拟器代码包括仿真处理电路10的行为的处理程序逻辑412,例如包括指令解码程序逻辑,其对目标代码400的指令进行解码,并且将指令映射到主机硬件430所支持的本机指令集中的对应指令序列,以执行与解码指令等效的功能。处理程序逻辑412还模拟对如上所述的不同异常级别和域中的代码的处理。寄存器仿真程序逻辑413在主机处理器的主机地址空间中维护数据结构,其仿真根据与目标代码400相关联的目标指令集架构定义的架构寄存器状态。因此,不是如图1的示例中那样将此类架构状态存储在硬件寄存器12中,而是将其存储在主机处理器430的存储器中,其中寄存器仿真程序逻辑413将目标代码400的指令的寄存器引用映射到对应地址,以用于从主机存储器获得模拟的架构状态数据。该架构状态可以包括先前描述的当前域指示14和当前异常级别指示15。
该模拟代码包括地址转换程序逻辑414和滤波程序逻辑416,它们分别参考如前所述的相同页表结构和GPT 56仿真地址转换电路16和PAS滤波器20的功能性。因此,地址转换程序逻辑414将由目标代码400指定的虚拟地址转换为PAS中的一个PAS中的模拟物理地址(从目标代码的角度来看,它是指存储器中的物理位置),但实际上这些模拟物理地址由地址空间映射程序逻辑415映射到主机处理器的(虚拟)地址空间上。滤波程序逻辑416以与上述PAS滤波器相同的方式执行对颗粒保护信息的查找以确定是否允许由目标代码触发的存储器访问继续进行。
GPT加载程序逻辑418在需要时控制对GPT块150从存储器的加载,类似于图1中所示的GPT加载电路21。然而,对于模拟器,可以不模拟颗粒保护信息高速缓存22,因此模拟器实施方案将与不具有任何GPI高速缓存22的硬件设备类似地作用。因此,每个存储器访问请求将被看作好像其未命中在高速缓存中,因此在图11中,将省略步骤172,使得该方法从步骤170直线行进到步骤174,并且在步骤178处的数据完整性检查通过的情况下,该方法将从步骤178直线前进至步骤184。完整性检查程序逻辑419仿真完整性检查电路23,以对由GPT加载程序逻辑418加载的颗粒保护数据的块执行数据完整性检查。
在本申请中,字词“被配置为...”用于意指装置的元件具有能够执行所限定的操作的配置。在该上下文中,“配置”意指硬件或软件的互连的布置或方式。例如,该装置可具有提供所限定的操作的专用硬件,或者可对处理器或其他处理设备进行编程以执行该功能。“被配置为”并不意味着装置元件需要以任何方式改变以便提供所限定的操作。
虽然本文已结合附图详细描述了本发明的示例性实施方案,但应当理解,本发明并不限于那些精确的实施方案,并且在不脱离所附权利要求书所限定的本发明的范围的前提下,本领域的技术人员可在其中实现各种变化和修改。
Claims (19)
1.一种装置,包括:
地址转换电路,所述地址转换电路用于将由存储器访问请求指定的目标虚拟地址转换为与从多个物理地址空间中选择的选定物理地址空间相关联的目标物理地址;
颗粒保护条目加载电路,所述颗粒保护条目加载电路用于从存储器加载颗粒保护数据块,所述颗粒保护数据块包括至少一个颗粒保护条目,每个颗粒保护条目对应于相应的物理地址颗粒并且指定颗粒保护信息,所述颗粒保护信息指示所述多个物理地址空间中的哪个物理地址空间是允许从其访问所述物理地址颗粒的允许物理地址空间;
滤波电路,所述滤波电路用于基于所述选定物理地址空间是否被所述颗粒保护信息在对应于包括所述目标物理地址的目标物理地址颗粒的目标颗粒保护条目中指示为允许物理地址空间,来确定是否应当允许所述存储器访问请求访问所述目标物理地址;以及
完整性检查电路,所述完整性检查电路用于对从存储器加载的所述颗粒保护数据块执行数据完整性检查,并在所述数据完整性检查失败时发信号通知故障。
2.根据权利要求1所述的装置,其中所述颗粒保护数据块包括对应于不同的物理地址颗粒的多个颗粒保护条目;并且
所述完整性检查电路被配置为对所述颗粒保护数据块中的所述多个颗粒保护条目执行所述数据完整性检查。
3.根据权利要求2所述的装置,其中,响应于所述存储器访问请求:
当所述目标颗粒保护条目尚不能够由所述滤波电路访问时,所述颗粒保护条目加载电路被配置为从存储器加载包括所述目标颗粒保护条目的所述颗粒保护数据块;并且
当所述数据完整性检查针对所述颗粒保护数据块的所述多个颗粒保护条目中除了所述目标颗粒保护条目之外的一个颗粒保护条目失败时,所述完整性检查电路被配置为即使所述数据完整性检查针对所述目标颗粒保护条目通过也发信号通知所述故障。
4.根据任一前述权利要求所述的装置,包括存储器加密电路,所述存储器加密电路用于对存储到存储器的受保护区域的数据进行加密以及对从存储器的所述受保护区域读取的数据进行解密。
5.根据权利要求4所述的装置,其中当所述颗粒保护条目加载电路从存储器的所述受保护区域加载颗粒保护数据块时,所述存储器加密电路被配置为在将所述颗粒保护数据块提供给所述滤波电路或所述完整性检查电路之前对从存储器的所述受保护区域读取的所述颗粒保护数据块进行解密。
6.根据任一前述权利要求所述的装置,其中使用所述颗粒保护条目的N位来编码所述颗粒保护信息,所述N位的第一子集的编码是指示针对所述颗粒保护信息的有效选项的有效编码,并且所述N位的第二子集的所述编码是无效编码;并且
所述数据完整性检查包括针对所述颗粒保护数据块中的每个颗粒保护条目检查所述颗粒保护条目的所述颗粒保护信息是否具有所述第一子集的编码中的一个编码或所述第二子集的编码中的一个编码。
7.根据权利要求6所述的装置,其中所述完整性检查电路被配置为在所述颗粒保护数据块中的任何颗粒保护条目具有所述第二子集的编码中的一个编码时发信号通知所述故障。
8.根据权利要求1至5中任一项所述的装置,其中所述数据完整性检查包括确定与所述颗粒保护数据块相关联的至少一个完整性签名值是否与从所述颗粒保护数据块导出的至少一个签名检查值匹配。
9.根据任一前述权利要求所述的装置,其中所述滤波电路包括请求器侧滤波电路,以基于所述目标颗粒保护条目中的所述颗粒保护信息来确定是允许所述存储器访问请求传递到高速缓存还是传递到用于与用于服务所述存储器访问请求的完成器设备通信的互连线。
10.根据权利要求9所述的装置,其中所述完整性检查电路包括请求器侧完整性检查电路,用于在已从所述互连线接收到所述颗粒保护数据块之后,对从存储器加载的所述颗粒保护数据块执行所述数据完整性检查。
11.根据任一前述权利要求所述的装置,其中所述地址转换电路和所述滤波电路中的至少一者被配置为至少基于从其发出所述存储器访问请求的请求器电路的当前操作域来选择所述选定物理地址空间,所述当前域包括多个操作域中的一个操作域。
12.根据权利要求11所述的装置,其中所述地址转换电路被配置为基于至少一个页表条目将所述目标虚拟地址转换为所述目标物理地址;并且
至少当所述当前域是所述多个域的子集中的一个域时,所述地址转换电路和所述滤波电路中的所述至少一者被配置为基于所述当前域和在所述至少一个页表条目中指定的物理地址空间选择信息来选择所述选定物理地址空间。
13.根据权利要求11和12中任一项所述的装置,其中所述多个域包括用于管理其他域之间的切换的根域;并且
当所述数据完整性检查失败时,所述完整性检查电路被配置为发信号通知将由在所述根域中执行的程序代码处理的所述故障。
14.根据任一前述权利要求所述的装置,其中:
响应于所述存储器访问请求,当针对所述目标物理地址颗粒尚未定义有效颗粒保护条目时,或者当所述滤波电路基于所述目标颗粒保护条目确定不允许所述存储器访问请求访问所述目标物理地址时,所述滤波电路被配置为发信号通知与由所述完整性检查电路在所述数据完整性检查失败时发信号通知的故障不同的故障类型或不同的故障综合征信息相关联的所述故障。
15.根据任一前述权利要求所述的装置,包括物理别名点(PoPA)存储器系统部件,所述PoPA存储器系统部件被配置为对来自不同物理地址空间的对应于相同存储器系统资源的多个别名物理地址进行去别名,以将所述多个别名物理地址中的任一个映射到要提供给至少一个下游存储器系统部件的去别名物理地址;以及
至少一个前PoPA存储器系统部件,所述至少一个前PoPA存储器系统部件提供在所述PoPA存储器系统部件的上游,其中所述至少一个前PoPA存储器系统部件被配置为将来自不同物理地址空间的所述别名物理地址看作所述别名物理地址对应于不同存储器系统资源。
16.根据权利要求15所述的装置,其中所述别名物理地址是在所述不同物理地址空间中使用相同物理地址值来表示的。
17.一种方法,包括:
将由存储器访问请求指定的目标虚拟地址转换为与从多个物理地址空间中选择的选定物理地址空间相关联的目标物理地址;
从存储器加载颗粒保护数据块,所述颗粒保护数据块包括至少一个颗粒保护条目,每个颗粒保护条目对应于相应的物理地址颗粒并且指定颗粒保护信息,所述颗粒保护信息指示所述多个物理地址空间中的哪个物理地址空间是允许从其访问所述物理地址颗粒的允许物理地址空间;
对从存储器加载的所述颗粒保护数据块执行数据完整性检查,并在所述数据完整性检查失败时发信号通知故障;以及
基于所述选定物理地址空间是否被所述颗粒保护信息在对应于包括所述目标物理地址的目标物理地址颗粒的目标颗粒保护条目中指示为允许物理地址空间,来确定是否应当允许所述存储器访问请求访问所述目标物理地址。
18.一种计算机程序,所述计算机程序包括指令,所述指令在主机数据处理装置上执行时控制所述主机数据处理装置以提供用于执行目标代码的指令执行环境;所述计算机程序包括:
地址转换程序逻辑,所述地址转换程序逻辑用于将由存储器访问请求指定的目标虚拟地址转换为与从多个模拟物理地址空间中选择的选定模拟物理地址空间相关联的目标模拟物理地址;以及
颗粒保护条目加载程序逻辑,所述颗粒保护条目加载程序逻辑用于从存储器加载颗粒保护数据块,所述颗粒保护数据块包括至少一个颗粒保护条目,每个颗粒保护条目对应于相应的模拟物理地址颗粒并且指定颗粒保护信息,所述颗粒保护信息指示所述多个模拟物理地址空间中的哪个模拟物理地址空间是允许从其访问所述模拟物理地址颗粒的允许模拟物理地址空间;
滤波程序逻辑,所述滤波程序逻辑用于基于所述选定模拟物理地址空间是否被所述颗粒保护信息在对应于包括所述目标模拟物理地址的目标模拟物理地址颗粒的目标颗粒保护条目中指示为允许模拟物理地址空间,来确定是否应当允许所述存储器访问请求访问所述目标模拟物理地址;以及
完整性检查程序逻辑,所述完整性检查程序逻辑用于对从存储器加载的所述颗粒保护数据块执行数据完整性检查,并在所述数据完整性检查失败时发信号通知故障。
19.一种计算机可读存储介质,所述计算机可读存储介质存储根据权利要求18所述的计算机程序。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB2005430.0 | 2020-04-14 | ||
GB2005430.0A GB2594062B (en) | 2020-04-14 | 2020-04-14 | Data integrity check for granule protection data |
PCT/GB2021/050872 WO2021209744A1 (en) | 2020-04-14 | 2021-04-09 | Data integrity check for granule protection data |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115461728A true CN115461728A (zh) | 2022-12-09 |
Family
ID=70847994
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180031684.XA Pending CN115461728A (zh) | 2020-04-14 | 2021-04-09 | 针对颗粒保护数据的数据完整性检查 |
Country Status (8)
Country | Link |
---|---|
US (1) | US20230185733A1 (zh) |
EP (1) | EP4136536A1 (zh) |
JP (1) | JP2023524382A (zh) |
KR (1) | KR20220165775A (zh) |
CN (1) | CN115461728A (zh) |
GB (1) | GB2594062B (zh) |
IL (1) | IL296806A (zh) |
WO (1) | WO2021209744A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2618128B (en) * | 2022-04-28 | 2024-04-24 | Advanced Risc Mach Ltd | Protecting execution environments within domains |
US20240211251A1 (en) * | 2022-12-22 | 2024-06-27 | Red Hat, Inc. | Device to build programs on alternative cpu architectures and a method thereof |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6859867B1 (en) * | 2000-05-31 | 2005-02-22 | Intel Corporation | Translation and protection table and method of using the same to validate access requests |
US7287140B1 (en) * | 2003-07-28 | 2007-10-23 | Massachusetts Institute Of Technology | System and technique for fine-grained computer memory protection |
US9183161B2 (en) * | 2012-12-28 | 2015-11-10 | Intel Corporation | Apparatus and method for page walk extension for enhanced security checks |
GB2575877B (en) * | 2018-07-27 | 2021-06-09 | Advanced Risc Mach Ltd | Memory protection unit using memory protection table stored in memory system |
US11003584B2 (en) * | 2019-02-28 | 2021-05-11 | Intel Corporation | Technology for managing memory tags |
US11392511B2 (en) * | 2019-09-25 | 2022-07-19 | Intel Corporation | Secure address translation services using a permission table |
-
2020
- 2020-04-14 GB GB2005430.0A patent/GB2594062B/en active Active
-
2021
- 2021-04-09 CN CN202180031684.XA patent/CN115461728A/zh active Pending
- 2021-04-09 IL IL296806A patent/IL296806A/en unknown
- 2021-04-09 JP JP2022559849A patent/JP2023524382A/ja active Pending
- 2021-04-09 US US17/995,898 patent/US20230185733A1/en active Pending
- 2021-04-09 KR KR1020227039234A patent/KR20220165775A/ko unknown
- 2021-04-09 WO PCT/GB2021/050872 patent/WO2021209744A1/en active Application Filing
- 2021-04-09 EP EP21719227.7A patent/EP4136536A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
IL296806A (en) | 2022-11-01 |
EP4136536A1 (en) | 2023-02-22 |
WO2021209744A1 (en) | 2021-10-21 |
GB2594062B (en) | 2022-07-27 |
US20230185733A1 (en) | 2023-06-15 |
GB202005430D0 (en) | 2020-05-27 |
JP2023524382A (ja) | 2023-06-12 |
KR20220165775A (ko) | 2022-12-15 |
GB2594062A (en) | 2021-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230176983A1 (en) | Apparatus and method using plurality of physical address spaces | |
US20230185733A1 (en) | Data integrity check for granule protection data | |
EP4127950B1 (en) | Apparatus and method | |
CN115552382A (zh) | 转换表地址存储电路系统 | |
CN114077496A (zh) | 命中时读取的前popa请求 | |
US20230132695A1 (en) | Apparatus and method using plurality of physical address spaces | |
US20240193260A1 (en) | Apparatus and method for handling stashing transactions | |
TW202343264A (zh) | 橫跨經再分記憶體域之維護操作 | |
TW202343258A (zh) | 執行環境失配 | |
TW202343294A (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 |