CN117546168A - 用于瞬态侧信道安全的使用上下文信息的密码计算 - Google Patents
用于瞬态侧信道安全的使用上下文信息的密码计算 Download PDFInfo
- Publication number
- CN117546168A CN117546168A CN202280044409.6A CN202280044409A CN117546168A CN 117546168 A CN117546168 A CN 117546168A CN 202280044409 A CN202280044409 A CN 202280044409A CN 117546168 A CN117546168 A CN 117546168A
- Authority
- CN
- China
- Prior art keywords
- processor
- memory
- branch
- context information
- information
- 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
- 230000001052 transient effect Effects 0.000 title description 6
- 230000015654 memory Effects 0.000 claims abstract description 298
- 238000004364 calculation method Methods 0.000 claims abstract description 31
- 238000000034 method Methods 0.000 claims description 58
- 239000000872 buffer Substances 0.000 claims description 19
- 230000008569 process Effects 0.000 description 43
- 230000006870 function Effects 0.000 description 32
- 238000002955 isolation Methods 0.000 description 21
- 238000012545 processing Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 18
- 238000009966 trimming Methods 0.000 description 17
- 238000004891 communication Methods 0.000 description 16
- 238000004422 calculation algorithm Methods 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 10
- 238000007667 floating Methods 0.000 description 9
- 230000000153 supplemental effect Effects 0.000 description 8
- 238000013500 data storage Methods 0.000 description 7
- 238000007726 management method Methods 0.000 description 7
- 238000013519 translation Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000005192 partition Methods 0.000 description 5
- 238000000926 separation method Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000003993 interaction Effects 0.000 description 4
- 230000004075 alteration Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000008570 general process Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 229920000642 polymer Polymers 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 206010061619 Deformity Diseases 0.000 description 1
- 101100117236 Drosophila melanogaster speck gene Proteins 0.000 description 1
- 241000282412 Homo Species 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000005387 chalcogenide glass Substances 0.000 description 1
- 150000004770 chalcogenides Chemical class 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 239000008187 granular material Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000002070 nanowire Substances 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 238000001881 scanning electron acoustic microscopy Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
Abstract
在一个实施例中,一种处理器包括存储经加密数据的存储器层次体系、跟踪由处理器执行的指令的执行上下文的跟踪电路系统、以及用于加密/解密存储在存储器层次体系中的数据的密码计算电路系统。密码计算电路系统从跟踪电路系统获得待由所述处理器执行的加载指令的上下文信息,其中上下文信息指示关于由处理器的分支预测单元做出的分支预测的信息;以及使用密钥和作为对解密的微调输入的上下文信息来解密经加密数据。
Description
相关申请的交叉引用
本申请要求于2021年12月10日提交的题为“CRYPTOGRAPHIC COMPUTING WITHCONTEXT INFORMATION FOR TRANSIENT SIDE CHANNEL SECURITY(用于瞬态侧信道安全的使用上下文信息的密码计算)”的美国非临时专利申请第17/547,875号的权益和优先权。该在先申请的公开内容被认为是本申请的公开内容的一部分并且在此通过引用以其整体并入本申请的公开内容。
技术领域
本公开总体上涉及计算机系统领域,并且更具体地涉及密码计算。
背景技术
密码计算可以指计算机系统安全解决方案,其采用处理器部件内部的密码学机制来保护由计算系统存储的数据。密码学机制可用于使用密钥、微调(tweak)或其他安全机制来加密数据本身和/或指向数据的指针。密码计算是计算行业的重要趋势,其中计算本身的真正基础从根本上变得密码化。密码计算表示一场巨变,是对系统安全的根本性反思,对行业有着广泛的影响。
附图说明
为了提供对本公开及本公开的特征和优势的更完整的理解,结合所附附图提及接下来的描述,其中,相同的附图标记表示相同的部件。
图1是根据本公开的至少一个实施例的配置有安全存储器访问逻辑的示例计算设备的简化框图。
图2A是图示根据本公开的至少一个实施例的将广义经编码指针绑定到由该指针引用的数据的加密的过程的流程图。
图2B是图示根据本公开的至少一个实施例的对绑定到广义经编码指针的数据进行解密的过程的流程图。
图3图示了根据本公开的至少一个实施例的利用分支状态信息来生成用于在密码计算中使用的密钥流的示例过程。
图4图示了根据本公开的至少一个实施例的利用控制流信息来生成用于在密码计算中使用的密钥流的示例过程。
图5图示了根据本公开的至少一个实施例的基于上下文信息加密和解密数据的示例过程的流程图。
图6是图示根据至少一个实施例的示例密码计算环境的框图。
图7是图示根据至少一个实施例的示例处理器的框图。
图8A是图示根据某些实施例的示例性有序管线以及示例性的寄存器重命名的乱序发出/执行管线两者的框图。
图8B是图示根据某些实施例的要被包括在处理器中的有序体系结构核心的示例性实施例和示例性的寄存器重命名的乱序发出/执行体系结构核心两者的框图。
图9是根据至少一个实施例的示例计算机体系结构的框图。
图10是根据本公开的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
本公开提供了用于可在密码计算的上下文中使用的存储器写入指令的实现的各种可能的实施例或示例。一般而言,密码计算可以指计算机系统安全解决方案,其在处理器部件内部采用密码学机制作为其计算的一部分。一些密码计算系统可以使用经加密的存储器访问指令在处理器核心中实现对指针地址(或其部分)、密钥、数据和代码的加密和解密。因此,处理器核心的微体系结构管线可以以支持这样的加密和解密操作的方式配置。
本申请中公开的实施例涉及主动阻止对存储器的出界访问,同时对存储器内的存储器区域施加密码学隔离。密码学隔离可以指由利用一个或多个不同参数加密存储器的不同区域或区而产生的隔离。参数可以包括密钥和/或微调。隔离的存储器区域可以由包括数据结构和/或软件实体的代码的对象(例如,虚拟机(VM)、应用、函数、线程)组成。因此,可以在任意粒度级别上支持隔离,诸如例如虚拟机之间的隔离、应用之间的隔离、函数之间的隔离、线程之间的隔离、特权级别之间的隔离(例如,监管程序与用户、OS内核与应用、VMM与VM)或数据结构之间的隔离(例如,几个字节结构)。
对与特定存储器区域相关联的数据或代码的加密和解密操作可以通过使用与该存储器区域相关联的密钥的密码算法来执行。在至少一些实施例中,密码算法还可以(或替代地)使用微调作为输入。一般而言,诸如“密钥”和“微调”之类的参数旨在表示输入值,这些输入值可以是秘密的和/或唯一的,并且这些输入值分别被加密进程用来产生经加密的输出值或被解密进程用来产生经解密的输出值。密钥可以是唯一值,至少在被密码学隔离的存储器区域或子区域中是唯一值。密钥可以例如被保存在通过指令集扩展可访问、但可以对软件保密的处理器寄存器或处理器存储器(例如,处理器缓存、内容可寻址存储器(content addressable memory,CAM)等)中。微调可以从指向存储或将要存储正被加密/解密的数据或代码的存储器地址的经编码指针(例如,嵌入其中的安全上下文信息)来导出,并且在至少一些场景中,还可以包括与存储器区域相关联的安全上下文信息。
本说明书中公开的至少一些实施例,包括读取和写入操作,涉及基于指针的数据加密和解密,其中指向用于数据或代码的存储器位置的指针用标签和/或其他元数据(例如,安全上下文信息)进行编码,并且可以用于导出对数据或代码密码(例如,加密和解密)算法的微调输入的至少一部分。因此,可以在密码寻址层和数据/代码加密和解密之间创建密码绑定。这隐式地实施边界,因为偏离超出对象(例如,数据)末尾的指针可能会对该相邻对象使用不正确的微调值。在一个或多个实施例中,指针用指向存储器位置和元数据的线性地址(本文中也称为“存储器地址”)进行编码。在一些指针编码中,指针中地址的切片或分段包括多个比特,并且基于秘密地址密钥和基于元数据的微调被加密(和解密)。其他指针可以用明文存储器地址(例如,线性地址)和元数据进行编码。
为了说明在实施对存储器区域的密码学隔离的同时主动阻止出界存储器访问的若干实施例,重要的是首先理解与数据保护和存储器安全相关联的操作和活动。因此,可将下列基础信息视为可适当地解释本公开所依据的基础。
已知的计算技术(例如,用于进程/内核分离的页表、虚拟机管理器、托管运行时等)已经使用体系结构和元数据来提供数据保护和隔离。例如,在以前的解决方案中,CPU边界外部的存储器控制器支持较粗粒度(例如,应用)的存储器加密和解密,并且经由访问控制实现对经加密数据的隔离。通常,密码引擎被放置在存储器控制器中,该存储器控制器在CPU核心外部。为了被加密,数据从核心行进到存储器控制器,并带有应该使用哪些密钥进行加密的一些标识。该标识经由物理地址中的位进行通信。因此,提供附加密钥或微调的任何偏差可能导致增加的费用(例如,用于新总线)或从地址总线“窃取”额外比特,以允许与物理地址一起携带用于密钥或微调的附加索引或标识。访问控制可能需要使用元数据,且处理器将使用查找表对关于所有权、存储器大小、位置、类型、版本等数据的策略或数据进行编码。动态地存储和加载元数据需要附加的存储(存储器开销)并影响性能,尤其是对于细粒度元数据(诸如功能即服务(function as a service,FaaS)工作负载或对象边界信息)。
对存储器分区(本文中也称为“存储器区域”)的密码学隔离解决了上述问题中的许多问题(以及更多问题)。密码学隔离可以用全新的细粒度保护模型使进程分离、用户空间和内核的传统模式变得多余。通过对存储器分区的密码学隔离,保护是密码学上的,其中各种类型的处理器单元(例如,处理器和加速器)同样利用秘密密钥(和可选的微调)和密码器(cipher)来以越来越精细的粒度提供访问控制和分离。实际上,对于小到一字节对象到大到整个虚拟机的数据和代码的存储器分区而言,都可以支持隔离。至少在一些场景下,密码学隔离可能导致个体的应用或函数成为边界,从而允许每个地址空间包含多个不同的应用或函数。可以经由指针跨隔离边界选择性地共享对象。这些指针可以是经密码学编码的或非经密码学编码的。此外,在一个或多个实施例中,加密和解密发生在处理器核心内部、核心边界内。因为加密发生在数据被写入核心外部的诸如L1缓存或主存储器之类的存储器单元之前,所以没有必要从物理地址“窃取”比特来传送密钥或微调信息,并且可以支持任意数量的密钥和/或微调。
密码学隔离利用了密码寻址层的概念,其中处理器基于隐式和/或显式元数据(例如,上下文信息)和/或存储器地址本身的切片(例如,作为对可微调块密码器的微调(例如,利用密文窃取(ciphertext stealing,XTS)的基于XOR-加密-XOR(异或-加密-异或)的经微调码本模式))对软件分配的存储器地址(线性/虚拟地址空间内的地址,也称为“指针”)的至少一部分进行加密。如本文中所使用,除了通常的明文或密文输入和密钥之外,“微调”还可以指对块密码器的附加输入,等等。微调包括表示值的一个或多个比特。在一个或多个实施例中,微调可以组成用于块密码器的初始化向量(IV)的全部或部分。得到的经密码学编码的指针可以包括存储器地址的经加密部分(或切片)和经编码元数据(例如,上下文信息)的一些比特。当执行地址的解密时,如果用于创建微调的信息(例如,隐式和/或显式元数据、存储器地址的明文地址切片等)对应于存储器分配器对存储器地址的原始分配(例如,软件分配方法),则处理器可以正确解密该地址。否则,随机地址结果将导致故障并被处理器捕获。
这些经密码学编码的指针(或其部分)可被处理器进一步用作对用于加密/解密它们所指的数据(由经密码学编码的指针引用的数据)的数据加密密码器的微调,从而在密码寻址层和数据/代码加密之间创建密码绑定。在一些实施例中,经密码学编码的指针可以被解密和解码以获得线性地址。处理器可以使用线性地址(或其一部分)作为对数据加密密码器的微调。替代地,在一些实施例中,存储器地址可以不被加密,但是指针仍然可以用表示指针间唯一值的一些元数据来编码。在该实施例中,经编码指针(或其一部分)可被处理器用作对数据加密密码器的微调。应当注意,用作对用于加密/解密存储器地址的块密码器的输入的微调在本文中也被称为“地址微调”。类似地,用作对用于加密/解密数据的块密码器的输入的微调在本文中也被称为“数据微调”。
虽然经密码学编码的指针(或非经密码学编码的指针)可用于经由加密来隔离数据,但数据的完整性仍然容易受到攻击。例如,对密码学隔离的数据的未授权访问可能损坏存储数据的存储器区域而与数据是否被加密无关,从而损坏受害者不知道的数据内容。可以使用诸如消息认证码(message authentication code,MAC)之类的完整性验证(或检查)机制、或者隐式地基于经解密数据的熵度量、或者这两者,来支持数据完整性。在一个示例中,可以按缓存行存储MAC码,并在每次读取缓存行时评估MAC码,以确定数据是否已被损坏。除了缓存行之外,每个MAC还可以使用其他粒度,诸如缓存行的一小部分、每个MAC 16字节的数据、多个缓存行、页等。MAC可以与数据内联地存储,或者可以存储在单独的存储器区域中,该存储器区域被索引以对应于与每个MAC值相关联的数据颗粒。然而,此类机制不会主动检测未经授权的存储器访问。替代地,存储器的损坏(例如,出界访问)可以以反应方式(例如,在数据被写入之后)而不是主动方式(例如,在数据被写入之前)来检测。例如,可能由于在对于软件实体出界的存储器位置执行的写入操作而发生存储器损坏。利用密码计算,写入操作可以使用对存储器位置无效的密钥和/或微调。当在该存储器位置执行后续读取操作时,读取操作可以在损坏的存储器上使用不同的密钥并检测损坏。例如,如果读取操作使用有效密钥和/或微调,则取回的数据将不能被正确解密,并且可以例如使用消息认证码、或者通过检测经解密数据中的高水平熵(随机性)(隐式完整性)来检测损坏。
图1是根据本公开的至少一个实施例的示例计算设备100的简化框图,示例计算设备100用于实现对存储器的出界访问的主动阻止技术,同时使用安全存储器访问逻辑实施对存储器区域的密码学隔离。在所示的示例中,计算设备100包括处理器102,处理器102具有地址密码单元104、密码计算引擎108、安全存储器访问逻辑106和存储器部件,诸如缓存170(例如,L1缓存、L2缓存)和补充处理器存储器180。安全存储器访问逻辑106包括加密存储逻辑150和解密加载逻辑160,加密存储逻辑150用于基于各种密钥和/或微调加密数据,然后存储经加密数据,解密加载逻辑160用于基于密钥和/或微调读取数据,然后解密数据。密码计算引擎108可以被配置为基于各种密钥和/或微调来解密用于加载或取得操作的数据或代码,以及用于基于各种密钥和/或微调来加密用于存储操作的数据或代码。地址密码单元104可以被配置成解密和加密线性地址(或该线性地址的一部分),该线性地址(或该线性地址的一部分)被编码在指向由该线性地址引用的数据或代码的指针中。
处理器102还包括寄存器110,寄存器110可以包括例如通用寄存器和专用寄存器(例如,控制寄存器、型号特定寄存器(model-specific register,MSR)等)。寄存器110可以包含可以在一个或多个实施例中使用的各种数据,诸如指向存储器地址的经编码指针114。经编码指针可以是经密码学编码的或非经密码学编码的。经编码指针用一些元数据进行编码。如果经编码指针是经密码学编码的,则地址比特的至少一部分(或切片)被加密。在一些实施例中,用于对地址、代码和/或数据进行加密和解密的密钥116可以存储在寄存器110中。在一些实施例中,用于对地址、代码和/或数据进行加密和解密的微调117可以存储在寄存器110中。
处理器密钥105(在本文中也称为“硬件密钥”)可以用于各种加密、解密和/或散列操作,并且可以被配置为处理器102的硬件中的安全密钥。处理器密钥105可以例如存储在熔丝中,存储在只读存储器中,或者由产生一致的随机比特集合的物理上不可克隆的函数生成。一般而言,处理器密钥105可以配置在硬件中,并且为处理器102所知,但是不为特权软件(例如,操作系统、虚拟机管理器(virtual machine manager,VMM)、固件、系统软件等)或非特权软件所知或以其他方式可用。密钥也可以被包裹,或者自身被加密,以允许密钥材料在平台之间的安全迁移,从而促进软件工作负载的迁移。
安全存储器访问逻辑106利用关于经编码指针114的元数据,该元数据被编码成经编码指针114的未使用比特(例如,64位地址的非规范比特,或者例如由操作系统留出的地址范围,使得地址范围的相应高阶比特可用于存储元数据),以便保护和/或提供对由经编码指针114指向的存储器位置的访问控制。例如,由安全存储器访问逻辑106提供的元数据编码和解码可以防止经编码指针114被操纵为导致缓冲器溢出,和/或可以防止程序代码访问它没有访问许可的存储器。指针可以在存储器被分配(例如,由操作系统分配在堆(heap)中)时被编码并以多种不同方式中的任何一种提供给执行程序,包括通过使用诸如malloc、calloc或new之类的函数提供;或者经由加载器隐式地提供,或者由编译器静态地分配存储器提供,等等。作为结果,指向所分配的存储器的经编码指针114用地址元数据进行编码。
地址元数据可以包括有效范围元数据。有效范围元数据允许执行程序以在有效范围内操纵经编码指针114的值,但是如果使用超出该有效范围的经编码指针114访问存储器,则将损坏经编码指针114。替代地或附加地,有效范围元数据可用于标识有效代码范围,例如,程序代码被允许访问的存储器范围(例如,经编码的范围信息可用于在寄存器上设置显式范围)。可以被编码在地址元数据中的其他信息包括对经编码指针114的访问(或许可)限制(例如,经编码指针114是否可以用于写入、执行或读取所引用的存储器)。
在至少一些其他实施例中,其他元数据(或上下文信息)可以被编码在经编码指针114的未使用比特中,诸如明文地址切片的大小(例如,嵌入在经编码指针中的存储器地址的明文切片中的比特数)、存储器分配大小(例如,由经编码指针引用的所分配存储器的字节)、数据或代码的类型(例如,由编程语言定义的数据或代码的类别)、许可(例如,经编码指针的读取许可、写入许可和执行许可)、数据或代码的位置(例如,存储数据或代码的位置)、指针本身将被存储的存储器位置、数据或代码的所有权、经编码指针的版本(例如,序列号,该序列号在每次为新分配的存储器创建经编码指针时递增,及时确定所引用的所分配存储器的当前所有权)、随机比特的标签(例如,为与经编码指针相关联而生成的标签)、特权级别(例如,用户或监管程序)、密码上下文标识符(或密码上下文ID)(例如,每个经编码指针的随机化或确定性唯一值)等。例如,在一个实施例中,地址元数据可以包括对经编码指针中明文地址切片的大小进行编码的大小元数据。大小元数据可以指定经编码指针中可以由执行程序修改的最低阶比特的数量。大小元数据取决于程序所请求的存储器量。因此,如果请求16个字节,则大小元数据被编码为4(或指针的五个较高比特中的00100),并且指针的4个最低比特被指定为可修改比特,以允许对存储器的所请求的16个字节进行寻址。在一些实施例中,地址元数据可以包括与经编码指针相关联的随机比特的标签,以使标签对对手不可预测。对手可能尝试猜测标签值以使得对手能够访问指针所引用的存储器,并且与用于生成版本值的确定性方法相比,随机化标签值可以使对手成功猜测该值的可能性更小。在一些实施例中,替代于或附加于随机标签值,指针可以包括及时确定所引用的所分配数据的当前所有权的版本号(或其他确定性地不同的值)。即使对手能够猜测存储器区域的当前标签值或版本号,例如因为用于生成版本号的算法是可预测的,对手也可能由于对手不能访问稍后将用于解密指针的对应经加密部分的密钥而仍然不能正确地生成指针的该部分。
示例安全存储器访问逻辑106被具体化为处理器指令的一部分(例如,作为处理器指令集体系结构的一部分),或者微代码(例如,存储在只读存储器中并由处理器102直接执行的指令)。在其他实施例中,安全存储器访问逻辑106的部分可以被具体化为硬件、固件、软件或其组合(例如,作为由计算设备100的特权系统部件142执行的编程代码)。在一个示例中,解密加载逻辑160和加密存储逻辑150被具体化为新的加载(读取)和存储(写入)处理器指令的一部分,所述新的加载(读取)和存储(写入)处理器指令执行相应的解密和加密操作以隔离存储器分区。解密加载逻辑160和加密存储逻辑150验证利用新处理器指令(例如,其可以是诸如MOV之类的现有处理器指令的对应物)的存储器读取和写入操作上的经编码元数据,其中通用寄存器被用作存储器地址以从存储器读取值(例如,加载)或向存储器写入值(例如,存储)。
安全存储器访问逻辑106可由计算设备100执行,用于例如在由计算设备100执行程序(诸如用户空间应用134)期间为经编码指针“内联”提供安全性。如本文所使用,术语“间接地址”和“指针”可以各自指存储其他数据或指令的存储器位置的地址(例如,虚拟地址或线性地址),等等。在一个示例中,存储存储数据或代码的存储器位置的经编码存储器地址的寄存器可以充当指针。由此,经编码指针114可以被具体化为例如数据指针(其指数据的位置)、代码指针(其指可执行代码的位置)、指令指针或栈指针。如本文所使用,“上下文信息”包括“元数据”,并且除其他外,还可以指关于经编码指针114或与经编码指针114相关的信息,诸如有效数据范围、有效代码范围、指针访问许可、明文地址切片的大小(例如,编码为以比特为单位的幂(power))、存储器分配大小、数据或代码的类型、数据或代码的位置、数据或代码的所有权、指针的版本、随机比特的标签、版本、软件的特权级别、密码上下文标识符,等等。
如本文所使用,“存储器访问指令”除其他外还可以指“MOV”或“LOAD”指令,或者使数据在一个存储位置(例如存储器)被读取、复制或以其他方式访问并被移动到另一个存储位置(例如寄存器)(其中“存储器”可以指主存储器或缓存,例如随机访问存储器的形式,并且“寄存器”可以指处理器寄存器,例如硬件)的任何其他指令,或者访问或操纵存储器的任何指令。还如本文所使用,“存储器访问指令”除其他外还可以指“MOV”或“STORE”指令,或者使数据在一个存储位置(例如寄存器)被读取、复制或以其他方式访问并被移动到另一个存储位置(例如存储器)的任何其他指令,或者访问或操纵存储器的任何指令。
地址密码单元104可以包括逻辑(包括电路系统),用于执行对经编码指针的地址解码以获得数据(或代码)的存储器位置的线性地址。如果需要,地址解码可以包括至少部分地基于密钥和/或基于从经编码指针导出的微调进行解密(例如,如果经编码指针包括线性地址的经加密部分)。地址密码单元104还可以包括逻辑(包括电路)用于执行经编码指针的地址编码,如果需要,包括至少部分地基于用于解码经编码指针的相同密钥和/或相同微调进行加密(例如,经编码指针包括线性地址的经加密部分)。地址编码还可以包括在指针的非规范比特中存储元数据。诸如地址编码和地址解码(包括对地址或其部分的加密和解密)之类的各种操作可以由与地址密码单元104相关联的处理器指令、其他处理器指令、或者单独的指令或指令系列、或者由诸如操作系统内核或虚拟机监视器之类的特权系统部件执行的更高级别的代码、或者作为指令集仿真器来执行。如在下文更详细地描述的,地址编码逻辑和地址解码逻辑各自使用元数据(例如,有效范围、许可元数据、大小(幂)、存储器分配大小、类型、位置、所有权、版本、标签值、特权级别(例如,用户或监管程序)、密码上下文ID等中的一者或多者)和秘密密钥(例如,密钥116)对经编码指针114进行操作,以便在存储器分配/访问级别保护经编码指针114。
加密存储逻辑150和解密加载逻辑160可以使用密码计算引擎108对要存储在由经编码指针114引用的存储器位置的数据或从由经编码指针114引用的存储器位置获得的数据执行密码操作。密码计算引擎108可以包括逻辑(包括电路系统)用于至少部分地基于从指向数据(或代码)的存储器位置的经编码指针导出的微调来执行数据(或代码)解密,并且至少部分地基于从指向数据(或代码)的存储器位置的经编码指针导出的微调来执行数据(或代码)加密。引擎108的密码操作可以使用微调,该微调包括经编码指针114的至少一部分(或从经编码指针生成的线性地址)和/或秘密密钥(例如,密钥116),以便通过将数据/代码的加密和解密绑定到经编码指针来保护经编码指针114所引用的存储器位置处的数据或代码。其他上下文信息可用于数据的加密,包括处理器当前正在执行的特权级别(当前特权级别或CPL(current privilege level))或所引用数据的特权级别。一些实施例可以根据处理器是在监管程序模式还是在用户模式或特权级别下执行来改变所使用的数据加密密钥。此外,一些实施例可以根据处理器是在VMX根模式还是VMX非根模式下执行来选择不同的密钥。类似地,不同的密钥可以用于不同的进程、虚拟机、分区,等等。当选择密钥时,可以考虑多个因素,例如,以针对用户VMX根模式、监管程序VMX根模式、用户VMX非根模式和监管程序VMX非根模式中的每一者选择不同的密钥。一些实施例可以基于与正被访问的数据相关联的特权级别和模式来选择密钥,即使处理器当前以不同的特权级别或模式执行也是如此。
可以使用各种不同的密码算法来实现地址密码单元104和密码计算引擎108。一般而言,使用128位块密码器的高级加密标准(Advanced Encryption Standard,AES)几十年来一直是数据加密的主流。同时,当今存储器寻址通常是64位。尽管本文中的实施例可以参考用于64位计算机的64位存储器寻址来说明和解释,但是所公开的实施例并不旨在受限于此,并且可以容易地适于适应针对指针的32位、128位或任何其他可用的比特大小。同样,本文中的实施例还可以适于适应各种大小的块密码器(例如,64位、48位、32位、16位等,使用Simon、Speck、可微调K密码器、PRINCE或任何其他块密码器)。
最近也出现了适合于基于指针的加密的轻量级密码器。例如,PRINCE密码器可以在3个时钟中实现,在10nm工艺中只需要小至799um2的面积,从而在十分之一的硅面积中提供二分之一的AES延迟。密码学隔离可以利用这些新密码器以及其他密码器,从而引入新的计算机体系结构概念,包括但不限于:(i)密码寻址,例如,在处理器处使用关于所引用数据的上下文信息(例如,嵌入在指针中的元数据和/或外部元数据)、地址本身的切片或以上各项的任何合适组合作为微调来加密数据指针;以及(ii)在核心处加密数据本身,使用经密码学编码的指针或其部分、非经密码学编码的指针或其(一个或多个)部分、关于所引用数据的上下文信息、或以上各项的任何合适组合作为微调以供数据加密。可微调的各种加密模式可用于包括元数据的目的(例如,计数器模式(counter mode,CTR)和利用密文窃取(XTS)的基于XOR-加密-XOR(XOR-encrypt-XOR,XEX)的经微调码本模式)。除了加密提供数据机密性之外,加密的隐式完整性可以允许处理器确定是否正使用正确的密钥流和微调对数据进行正确地解密。在一些块密码器加密模式中,块密码器创建密钥流,然后将密钥流与输入块组合(例如,使用XOR(异或)运算或其他更复杂的逻辑)以产生经加密或解密的块。在一些块密码器中,密钥流被馈送到下一个块密码器中以执行加密或解密。
图1中的示例经编码指针114被具体化为寄存器110(例如,处理器102的通用寄存器)。示例秘密密钥116可以由特权系统部件142的密钥创建模块148生成,并存储在寄存器110(例如,专用寄存器或控制寄存器,诸如型号特定寄存器(MSR))中的一个寄存器110中、处理器102可读的另一个存储器位置(例如,固件、数据存储设备126的安全部分等)中、外部存储器中、或适于执行本文描述的功能的另一种形式的存储器中。在一些实施例中,对于加密或解密,可以实时计算用于加密地址、数据或代码的微调。微调117可以存储在寄存器110中、处理器102可读的另一个存储器位置(例如,固件、数据存储设备126的安全部分等)中、外部存储器中、或适于执行本文描述的功能的另一种形式的存储器中。在一些实施例中,秘密密钥116和/或微调117存储在仅由处理器可读的位置中,诸如补充处理器存储器180中。在至少一个实施例中,补充处理器存储器180可以被实现为新的缓存或内容可寻址存储器(CAM)。在一个或多个实现方式中,补充处理器存储器180可用于存储与密码学隔离相关的信息,诸如密钥和潜在的微调、凭证和/或上下文ID。
秘密密钥也可以被生成并与经密码学编码的指针相关联,用于加密/解密在指针中编码的地址部分(或切片)。这些密钥可以和与指针相关联的密钥相同或不同,以对由经密码学编码的指针所引用的数据(或代码)执行数据(或代码)加密/解密操作。为了便于解释,术语“秘密地址密钥”或“地址密钥”可以用来指在存储器地址的加密和解密操作中使用的秘密密钥,而术语“秘密数据密钥”或“数据密钥”可以用来指在加密和解密数据或代码的操作中使用的秘密密钥。
在存储器分配操作(例如,“malloc”)时(或期间),存储器分配逻辑146为缓冲器分配存储器范围,返回指针以及元数据(例如,范围、许可元数据、大小(幂)、存储器分配大小、类型、位置、所有权、版本、标签、特权级别、密码上下文ID等中的一者或多者)。在一个示例中,存储器分配逻辑146可以对经编码指针114中的明文范围信息进行编码(例如,在加密之前,在未使用比特/非规范比特中),或者将元数据作为一个或多个单独的参数提供给指令,其中(一个或多个)参数指定范围、代码许可信息、大小(幂)、存储器分配大小、类型、位置、所有权、版本、标签、特权级别(例如,用户或监管程序)、密码上下文ID或以上各项的一些合适组合。说明性地,存储器分配逻辑146可以被具体化在特权系统部件142的存储器管理器模块144中。存储器分配逻辑146使得指针114用元数据(例如,范围、许可元数据、大小(幂)、存储器分配大小、类型、位置、所有权、版本、标签值、特权级别、密码上下文ID、以上各项的一些合适组合等)进行编码。元数据可以存储在经编码指针114的未使用部分(例如,64位地址的非规范比特)中。对于一些元数据或元数据的组合,指针114可以被扩展(例如,128位地址、256位地址)以适应元数据或元数据组合的大小。
为了确定有效范围元数据,示例范围规则逻辑选择有效范围元数据来指示由经编码指针114引用的缓冲器的大小的上限。地址调整逻辑根据需要调整有效范围元数据,使得只要经编码指针114指向在范围元数据指示的有效范围内的存储器位置,地址范围内的地址的较高地址比特(例如,最高有效比特)就不会改变。这使得经编码指针114能够被操纵(例如,通过执行算术运算的软件等),但是仅当该操纵不导致经编码指针114超出有效范围(例如,溢出缓冲器)时才是如此。
在实施例中,有效范围元数据用于选择经编码指针114的要加密的部分(或切片)。在其他实施例中,经编码指针114的要加密的切片可以是先验已知的(例如,较高32位、较低32位等)。如下文进一步描述的,使用秘密地址密钥(例如,密钥116)和可选的地址微调来加密经编码指针114的所选切片(以及在一些实施例中,调整)。在存储器访问操作(例如,读取、写入或执行操作)中,先前编码的指针114被解码。为此,如下文进一步描述的,使用秘密地址密钥(例如,密钥116)和地址微调(如果在加密中使用了地址微调)来解密经编码指针114的经加密切片(以及在一些实施例中,经加密调整)。
基于适当的操作将经编码指针114返回到其原始(例如,规范)形式,以便恢复经编码指针114的原始值(例如,真实的原始线性存储器地址)。为了在至少一个可能的实施例中做到这一点,在经编码指针114的未使用比特中编码的地址元数据被移除(例如,将未使用比特返回到它们的原始形式)。如果经编码指针114成功解码,则存储器访问操作成功完成。然而,如果经编码指针114已经被操纵(例如,由软件操纵、无意中操纵或由攻击者操纵),使得经编码指针114的值落在由范围元数据指示的有效范围之外(例如,溢出缓冲器),则作为对指针中的加密地址位执行的解密过程的结果,经编码指针114可能被损坏。损坏的指针将引发错误(例如,如果地址没有映射为分页结构/页表中存在的地址,则将引发一般保护错误或页错误)。可能导致错误生成的一个条件是稀疏地址空间。在这种场景下,损坏的地址可能会落在未映射的页上,并生成页错误。即使损坏的地址落在经映射的页上,该存储器区域的授权微调或初始化向量也很可能不同于在这种情况下可以作为微调或初始化向量提供的损坏地址。以这种方式,计算设备100提供针对缓冲器溢出攻击和类似漏洞利用的经编码指针安全性。
现在更详细地参考图1,计算设备100可以被具体化为用于执行本文描述的功能的任何类型的电子设备。例如,计算设备100可以被具体化为但不限于智能电话、平板计算机、可穿戴计算设备、膝上型计算机、笔记本计算机、移动计算设备、蜂窝电话、手持设备、消息收发设备、车辆远程信息处理设备、服务器计算机、工作站、分布式计算系统、多处理器系统、消费电子设备和/或被配置为执行本文描述的功能的任何其他计算设备。如图1所示,示例计算设备100包括至少一个处理器102,至少一个处理器102具体化有安全存储器访问逻辑106、地址密码单元104和密码计算引擎108。
计算设备100还包括存储器120、输入/输出子系统124、数据存储设备126、显示设备128、用户界面(UI)子系统130、通信子系统132、应用134和特权系统部件142(其说明性地包括存储器管理器模块144和密钥创建模块148)。在其他实施例中,计算设备100可以包括其他或附加部件,诸如通常在移动和/或固定计算机中发现的那些部件(例如,各种传感器和输入/输出设备)。附加地,在一些实施例中,示例部件中的一个或多个示例部件可被并入另一部件中,或以其他方式形成另一部件的部分。计算设备100的部件中的每个部件可以被具体化为软件、固件、硬件、或软件和硬件的组合。
处理器102可被具体化为能够执行本文中所描述的功能的任何类型的处理器。例如,处理器102可以被具体化为单核心或多核心中央处理单元(central processing unit,CPU)、多CPU处理器或处理/控制电路,或者多个不同的处理单元或电路(例如,CPU和图形处理单元(Graphics Processing Unit,GPU)等)。
处理器存储器可以在核心内部和核心边界外部进行预设。例如,寄存器110可以被包括在核心内,并且可以用于存储经编码指针(例如,114)、秘密密钥116以及可能的微调117以用于对数据或代码和地址的加密和解密。处理器102还可以包括缓存170,缓存170可以是例如L1和/或L2缓存,其中在预期由处理器102取得数据的情况下,当从存储器120取回该数据时存储该数据。
处理器还可以包括核心边界外部的补充处理器存储器180。补充处理器存储器180可以是软件不能直接访问的专用缓存。在一个或多个实施例中,补充处理器存储器180可以存储参数与它们相关联的存储器区域之间的映射188。例如,在映射188中,密钥可以被映射到它们对应的存储器区域。在一些实施例中,与密钥配对的微调也可以存储在映射188中。在其他实施例中,映射188可以由软件管理。
在一个或多个实施例中,用于在密码计算中保护密钥的硬件受信任实体190和密钥管理硬件192可以被配置在计算设备100中。硬件受信任实体190和密钥管理硬件192可以是逻辑上分离的实体,或者组合为一个逻辑和物理实体。该实体被配置为以可以从中解密代码、数据或指针密钥的加密密钥或可以从中导出代码、数据或指针密钥的唯一密钥标识符的形式提供代码和数据密钥。硬件受信任实体190和密钥管理硬件192可以被具体化为电路、固件、软件或以上各项的任何合适组合。在至少一些实施例中,硬件受信任实体和/或密钥管理硬件190可以形成处理器102的一部分。在至少一些实施例中,硬件受信任实体和/或密钥管理硬件190可以被具体化为在特权状态下执行的受信任固件部件。硬件受信任实体的示例可以包括但不一定限于信任域扩展等的安全仲裁模式(Secure-Arbitration Mode,SEAM)、/>融合安全管理引擎(Converged Security ManagementEngine,CSME)、嵌入式安全处理器、其他受信任固件等。
一般而言,可以基于特定的需求和体系结构实现以任何合适的方式处置密钥和微调。在第一实施例中,密钥和微调两者都可以是隐式的,并且因此由处理器管理。在该实施例中,密钥和微调可以由处理器内部生成,或者由安全处理器外部生成。在第二实施例中,密钥和微调两者都是显式的,并且因此由软件管理。在该实施例中,在指令调用时使用包括引用密钥和微调的操作数的指令来引用密钥和微调。在该实施例中,密钥和微调可以存储在寄存器或存储器中。在第三实施例中,密钥可以由处理器管理,而微调可以由软件管理。
计算设备100的存储器120可以被具体化为能够执行本文中描述的功能的任何类型的易失性或非易失性存储器或数据存储装置。易失性存储器是要求功率来维持由介质存储的数据的状态的存储介质。易失性存储器的示例可包括各种类型的随机存取存储器(random access memory,RAM),诸如动态随机存取存储器(dynamic random accessmemory,DRAM)或静态随机存取存储器(static random access memory,SRAM)。可以在存储器中使用的一种特定类型的DRAM是同步动态随机存取存储器(synchronous dynamicrandom access memory,SDRAM)。在特定实施例中,存储器120的DRAM符合由联合电子设备工程委员会(Joint Electron Device Engineering Council,JEDEC)颁布的标准,诸如用于双倍数据速率(Double Data Rate,DDR)SDRAM的JESD79F、用于DDR2 SDRAM的JESD79-2F、用于DDR3 SDRAM的JESD79-3F、或用于DDR4 SDRAM的JESD79-4A(这些标准可在www.jedec.org获得)。非易失性存储器是不要求功率来维持由介质存储的数据的状态的存储介质。非易失性存储器的非限制性示例可包括以下各项中的任一者或其组合:固态存储器(诸如,平面或3D NAND闪存或NOR闪存)、3D交叉点存储器、使用硫系相变材料(例如,硫系玻璃)的存储器设备、字节可寻址非易失性存储器设备、铁电存储器、硅-氧化物-氮化物-氧化物-硅(silicon-oxide-nitride-oxide-silicon,SONOS)存储器、聚合物存储器(例如,铁电聚合物存储器)、铁电晶体管随机存取存储器(ferroelectric transistor randomaccess memory,Fe-TRAM)奥氏存储器、纳米线存储器、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、其他各种类型的非易失性随机存取存储器(RAM)、以及磁存储存储器。
在一些实施例中,存储器120包括一个或多个存储器模块,诸如双列直插式存储器模块(dual in-line memory module,DIMM)。在一些实施例中,存储器120可以位于与包括处理器102的集成电路芯片不同的一个或多个集成电路芯片上,或者可以位于与处理器102相同的集成电路芯片上。在各种实施例中,存储器120可以包括任何合适类型的存储器,并且不限于存储器的特定速度或技术。
在操作中,存储器120可以存储在计算设备100的操作期间使用的各种数据和代码,以及操作系统、应用、程序、库和驱动程序。存储器120可以存储数据和/或代码,这包括由处理器102执行的指令序列。
存储器120例如经由I/O子系统124通信地耦合到处理器102。I/O子系统124可以被具体化为电路系统和/或部件,用于促进处理器102、存储器120和计算设备100的其他部件的输入/输出操作。例如,I/O子系统124可被具体化为或以其他方式包括:存储器控制器中枢、输入/输出控制中枢、固件设备、通信链路(例如,点对点链路、总线链路、线路、电缆、光导、印刷电路板迹线等)和/或用于促进输入/输出操作的其他部件和子系统。在一些实施例中,I/O子系统124可以形成芯片上系统(SoC)的部分,并可与计算设备100的处理器102、存储器120和/或其他部件一起被合并在单个集成电路芯片上。
数据存储设备126可以被具体化为用于数据的短期或长期存储的任何类型的一个或多个物理设备,诸如例如存储器设备和电路、存储器卡、硬盘驱动器、固态驱动器、闪存或其他只读存储器、作为只读存储器和随机存取存储器的组合的存储器设备、或其他数据存储设备。在各种实施例中,存储器120可以缓存存储在数据存储设备126上的数据。
显示设备128可以被具体化为能够显示数字信息的任何类型的显示器,诸如液晶显示器(liquid crystal display,LCD)、发光二极管(light emitting diode,LED)、等离子显示器、阴极射线管(cathode ray tube,CRT)或其他类型的显示设备。在一些实施例中,显示设备128可以耦合到触摸屏或其他人机接口设备以允许用户与计算设备100的交互。显示设备128可以是用户界面(UI)子系统130的一部分。用户界面子系统130可以包括多个附加设备,用于促进用户与计算设备100的交互,包括物理或虚拟的控制按钮或按键、麦克风、扬声器、单向或双向的静态和/或视频相机、和/或其他附加设备。用户界面子系统130还可以包括诸如运动传感器、接近度传感器和眼球跟踪设备之类的设备,这些设备可以被配置成检测、捕获和处理涉及计算设备100的各种其他形式的人类交互。
计算设备100进一步包括通信子系统132,通信子系统132可以被具体化为能够实现计算设备100和其他电子设备之间的通信的任何通信电路、设备或其集合。通信子系统132可以被配置成使用任何一种或多种通信技术(例如,无线或有线通信)和相关联的协议(例如,以太网、BluetoothTM、Wi-FiTM、WiMAX、3G/LTE等)来实现此类通信。通信子系统132可以被具体化为网络适配器,包括无线网络适配器。
示例计算设备100还包括多个计算机程序部件,诸如一个或多个用户空间应用(例如,应用134)和特权系统部件142。用户空间应用可以被具体化为经由例如显示设备128或UI子系统130直接或间接与终端用户交互的任何计算机应用(例如,软件、固件、硬件或其组合)。用户空间应用的一些示例包括文字处理程序、文档查看器/阅读器、网络浏览器、电子邮件程序、消息服务、计算机游戏、相机和视频应用等。除其他事项外,特权系统部件142促进了用户空间应用(例如,应用134)和计算设备100的硬件部件之间的通信。特权系统部件142的部分可以被具体化为能够执行本文描述的功能的任何操作系统,诸如微软公司的WINDOWS版本、谷歌公司的ANDROID版本和/或其他操作系统版本。替代地或附加地,特权系统部件142的一部分可以被具体化为能够执行本文描述的功能的任何类型的虚拟机监视器(例如,类型I或类型II管理程序)。
示例特权系统部件142包括密钥创建模块148,密钥创建模块148可以被具体化为软件、固件、硬件、或软件和硬件的组合。例如,密钥创建模块148可以被具体化为操作系统内核、虚拟机监视器或管理程序的模块。密钥创建模块148创建秘密密钥116(例如,秘密地址密钥和秘密数据密钥),并且可以将秘密密钥116写入处理器102具有读取许可的一个或多个寄存器(例如,专用寄存器)。为了创建秘密密钥,密钥创建模块148可以执行例如随机数生成器或能够生成能够执行本文描述的功能的秘密密钥的另一种算法。在其他实现方式中,秘密密钥可以被写入软件不能直接访问的补充处理器存储器180。在又其他实现方式中,秘密密钥可以被加密并存储在存储器120中。在一个或多个实施例中,当为分配给特定软件实体的存储器区域生成数据密钥时,数据密钥可以被加密,并且软件实体可以被提供有经加密数据密钥、指向经加密数据密钥的指针、或者包括经加密密钥或指向经加密数据密钥的指针的数据结构。在其他实现方式中,软件实体可以被提供有指向存储在处理器存储器中的未加密数据密钥的指针、或者包括指向未加密数据密钥的指针的数据结构。一般而言,在本文中描述的实施例中可以使用用于生成、存储和提供用于加密和解密数据(或代码)以及用于加密和解密被编码在指针中的存储器地址(或其部分)的安全密钥的任何合适的机制。
应当注意,对于本文公开的实施例,可以使用无数种方法来生成或获得密钥。例如,尽管密钥创建模块148被示为计算设备100的一部分,但是可以使用任何合适的认证过程从任何合适的外部源获得一个或多个秘密密钥,以安全地将密钥传达给计算设备100,这可以包括作为这些过程的一部分而生成密钥。此外,特权系统部件142可以是受信任执行环境(trusted execution environment,TEE)、虚拟机、处理器102、协处理器或计算设备100中的任何其他合适的硬件、固件或软件的一部分,或者安全地连接到计算设备100。此外,密钥可以是“秘密的”,这旨在意味着密钥的值被隐藏、不可访问、模糊化或以其他方式受保护不被未授权的行为者(例如,软件、固件、机器、外来硬件部件、以及人类)访问。可以根据处理器的当前特权级别(例如,用户与监管程序)、正在执行的进程、正在运行的虚拟机等来更改密钥。
图2A是图示基于经编码指针210的实施例的密码计算的一般过程200A的简化流程图。过程200A示出了将数据存储(例如,写入)到由经编码指针210指示的存储器地址处的存储器区域,其中根据至少一个实施例,数据的加密和解密被绑定到指针的内容。过程200A的至少一些部分可以由计算设备100的硬件、固件和/或软件来执行。在所示的示例中,指针210是经编码指针114的示例,并且被具体化为包括元数据部分的经编码线性地址。元数据部分是某种类型的上下文信息(例如,大小/幂元数据、标签、版本等)并且线性地址可以被编码成任意数量的可能配置,这些配置中的至少一些在本文中被描述。
根据各种实施例,经编码指针210可以具有各种配置。例如,经编码指针210可以用明文线性地址进行编码,或者可以用一些明文线性地址比特和一些加密线性地址比特进行编码。取决于特定实施例,经编码指针210也可以用不同的元数据进行编码。例如,在经编码指针210中编码的元数据可以包括但不一定限于大小/幂元数据、标签值或版本号中的一者或多者。
一般而言,过程200A示出了密码计算流程,其中经编码指针210用于获得存储器220的要存储数据的存储器区域的存储器地址,并且至少部分地基于从经编码指针210导出的微调来加密该要存储的数据。首先,地址密码单元202对经编码指针210进行解码,以获得经解码线性地址212。经解码线性地址212可用于使用转译后备缓冲器204或页表(未示出)获得存储器220中的物理地址214。数据微调217至少部分地从经编码指针210导出。例如,数据微调217可以包括整个经编码指针、经编码指针的一个或多个部分、经解码线性地址的一部分、整个经解码线性地址、经编码元数据和/或外部上下文信息(例如,指针中未被编码的上下文信息)。
一旦微调217已经从经编码指针210导出,密码计算引擎270可以通过基于数据密钥216和数据微调217加密未加密数据222来计算经加密数据224。在至少一个实施例中,密码计算引擎270包括加密算法,诸如密钥流生成器,该加密算法可以被具体化为特定大小粒度(任何合适大小)的AES-CTR模式块密码器272。在该实施例中,数据微调217可以用作初始化向量(IV),并且经编码指针210的明文偏移量可以用作计数器值(CTR)。密钥流生成器可以加密数据微调217以产生密钥流276,然后可以对未加密数据222和密钥流276执行密码操作(例如,逻辑函数274,诸如异或(XOR),或其他更复杂的操作),以便产生经加密数据224。应当注意,密钥流276的生成可以在正在从经编码指针210获得物理地址214的同时开始。因此,并行操作可以提高加密未加密数据的效率。应当注意,经加密数据可以在被存储到存储器220之前,或者在一些情况下代替于被存储到存储器220,被存储到缓存(例如,170)。
图2B是图示基于经编码指针210的实施例的密码计算的一般过程200B的简化流程图。过程200B示出了获得(例如,读取、加载、取得)存储在由经编码指针210引用的存储器地址处的存储器区域中的数据,其中根据至少一个实施例,数据的加密和解密被绑定到指针的内容。过程200B的至少一些部分可以由计算设备100的硬件、固件和/或软件来执行。
一般而言,过程200B示出了密码计算流程,其中经编码指针210用于获得存储器220的存储经加密数据的存储器区域的存储器地址,并且一旦从该存储器区域取得经加密数据,就至少部分地基于从经编码指针210导出的微调来解密该经加密数据。首先,地址密码单元202对经编码指针210进行解码,以获得经解码线性地址212,经解码线性地址212用于从存储器取得经加密数据224,如232所指示。数据微调217至少部分地从经编码指针210导出。在用于从存储器加载/读取数据的过程200B中,以与用于向存储器存储/写入数据的相反过程200A中的方式相同的方式导出数据微调217。
一旦微调217已经从经编码指针210导出,密码计算引擎270可以通过基于数据密钥216和数据微调217解密经加密数据224来计算经解密(或非加密)数据222。如先前所描述,在该示例中,密码计算引擎270包括特定大小粒度(任何合适大小)的加密算法,诸如被具体化为AES-CTR模式块密码器272的密钥流生成器。在该实施例中,数据微调217可以用作初始化向量(IV),并且经编码指针210的明文偏移量可以用作计数器值(CTR)。密钥流生成器可以加密数据微调217以产生密钥流276,然后可以对经加密数据224和密钥流276执行密码操作(例如,逻辑函数274,诸如异或(XOR),或其他更复杂的操作),以便产生经解密(或非加密)数据222。应当注意,密钥流的生成可以在232处正在取得经加密数据的同时开始。因此,并行操作可以提高解密经加密数据的效率。
在本公开的实施例中,可以实现上述密码计算构思以防止瞬态侧信道攻击。例如,一些实施例可以结合上下文信息,诸如直接/间接分支预测信息和/或控制流信息,作为对上述加密/解密过程的微调输入,以针对此类攻击被强化。
例如,在一些场景中,攻击者可能试图误训练(错误地训练)分支预测器以采用不同的瞬态路径场景,并可能通过推测性加载来获得秘密信息。因此,在一些实施例中,某些加载(例如,关键加载)可以使其相关联的数据被加密,其中加密/解密与对过去分支条件、方向和/或解析的指示相关联。此外,在一些实施例中,加密/解密可以与控制流完整性(control flow integrity,CFI)信息相关联,诸如与程序中的间接分支的路径信息相关联。因此,如果受害者程序的加载没有遵循正确的直接或间接分支路径(即,根据体系结构定义,假设没有误推测,受害者程序的执行可能采用的路径),则该加载将在数据解密后提供乱码数据。
图3示出了根据本公开的至少一个实施例的利用分支状态信息来生成用于在密码计算中使用的密钥流的示例过程300。示例过程300可用于计算如图2A-图2B所示的密码计算实施例中所使用的密钥流,例如,用于计算密钥流276,并且示例过程300可在计算设备的密码计算电路系统中实现,该密码计算电路系统例如图2A-图2B的密码计算引擎270。
在所示的示例中,基于数据密钥302、指针信息304和分支状态信息306,使用块密码器308计算密钥流310。数据密钥302可以与图2A-图2B的数据密钥216相同或相似,并且指针信息304可以包括从经编码指针(例如,图2A-图2B的210)导出的数据。例如,在一些实施例中,指针信息可以包括经编码指针的一个或多个比特,或者整个指针本身。此外,块密码器308可以类似于图2A-图2B的块密码器272,但是可以被修改为使密钥流310除了基于所示的指针信息304之外还附加地基于分支状态信息306。在一些情况下,块密码器可以使用指针信息304和分支状态信息306的某种组合(例如,串接)作为针对块密码器308的微调值。例如,在一些实施例中,块密码器308可以实现AES-CTR模式块密码器,其中组合的指针信息304和分支状态信息306由数据密钥302加密以产生密钥流310。
分支状态信息306可以包括或指示关于由处理器做出或解析的分支预测的信息。例如,处理器可以包括跟踪分支预测状态信息的硬件,该分支预测状态信息可以基于过程300中块密码器308所需的分支状态信息的类型。例如,在一些实施例中,分支状态信息306可以包括N比特向量,该N比特向量指示对于先前的N个指令分支,处理器是否正确地预测了相应的分支。在某些实施例中,N比特向量可以是指示是否正确预测了所有在先分支的单个比特。在这些场景中,在存储指令时,处理器可以使用包括所有一(1)的N比特向量来加密数据,并且在加载指令时,处理器将获得分支预测跟踪信息,并使用该信息来解密经加密数据(即,使用该信息作为微调输入,如图3所示)。相应地,处理器将需要已经正确地预测了先前的N个分支,以正确地解密所存储的数据,从而防止已经误训练了分支预测器单元的对手不正确地获得存储的经加密数据。
在其他实施例中,分支状态信息306可以是指示先前的N个指令分支是否已经被采用/未被采用的N比特向量,其中处理器可以不需要如上述示例中的延迟来确定预测是否正确。以这种方式,每个先前的分支条件可以被指示为表示已采用的1(例如,布尔条件的真)或表示未采用的0(例如,布尔条件为假)。在存储时,处理器(经由软件)可以被提供有先前分支条件的适当的N比特向量(其可以由软件先验地知道),并且可以使用该信息加密要存储的数据。在加载指令时,处理器可以(如上所述)获得所跟踪的分支状态信息,并使用该信息来解密所存储的经加密数据。为了正确地解密数据,处理器必须遵循所有正确的分支。
在某些实施例中,分支状态信息306可以指示(或以其他方式结合到分支状态信息306中)各个分支条件之间的分支数量的计数。例如,N比特向量中的第一比特(比特0)可以指示第一分支被采用/未被采用的状态,然后接下来的X个比特可以指示第一分支条件与第二分支条件之间的指令数。然后,下一比特(比特X+1)可以指示第二分支被采用/未被采用的条件,其中随后的X个比特指示第二分支条件与第三分支条件之间的指令数,依此类推。
在某些实施例中,每个分支的条件可以被编码并指示在分支状态信息306中,或者以其他方式作为分支状态信息306的一部分被包括。例如,每种类型的条件(例如,大于(>)、小于(<)、不等于(!=)等)和/或每个条件的操作数可以使用比特向量进行编码,然后该比特向量可以被包括作为指示分支状态(例如,被正确预测或被采用/未被采用)和/或如上所述的各个分支条件之间的指令数的更大比特向量的一部分。
在某些实施例中,存储器消歧信息可以被指示或以其他方式包括在分支状态信息306中。例如,除了与每个分支相关联的分支被采用/未被采用信息之外,还可以使用附加比特,该附加比特指示例如分支之间指令的数量值、分支目标地址的散列、指示分支是否被正确预测的比特、指示最近的存储器消歧预测是否正确的比特等。然后,存储器消歧信息可以被包括作为更大比特向量的一部分,该更大比特向量指示分支状态(例如,被正确预测或被采用/未被采用)、各个分支条件之间的指令数和/或如上所述的每个分支条件。
在一些情况下,如上所述的比特向量可以相当大(例如,用于指示分支条件、各个分支条件之间的指令数、存储器消歧信息等)。因此,在一些实施例中,可以使用散列函数对表示所有上下文信息的比特向量进行编码,然后将该比特向量作为分支状态信息306输入到块密码器308。在替代实施例中,表示上下文信息的个体元素的每个比特向量可以使用散列函数进行编码,然后将这些比特向量与其他散列或非散列上下文信息串接以形成作为分支状态信息306的对块密码器308的输入。
可以使用处理器内(例如,在处理器的存储器管线内)的逻辑或其他硬件电路系统来跟踪分支状态信息。例如,在一些实施例中,分支跟踪逻辑电路系统可以结合在处理器的前端(例如,图7的前端逻辑706或图8B的核心890的前端单元830)中,诸如在前端的分支预测单元(例如,图8B的分支预测单元832)中。在一些实施例中,电路系统可以被包括在处理器的重排序缓冲器(re-order buffer,ROB)中,或者被包括在处理器的分支排序缓冲器(branch order buffer,BOB)中(例如,在处理器中)。
图4示出了根据本公开的至少一个实施例的利用控制流信息来生成用于在密码计算中使用的密钥流的示例过程400。示例过程400可用于计算如图2A-图2B所示的密码计算实施例中所使用的密钥流,例如,用于计算密钥流276,并且示例过程400可在计算设备的密码计算电路系统中实现,密码计算电路系统例如图2A-图2B的密码计算引擎270。此外,示例过程400的某些方面与上文关于图3的过程300所描述的那些方面相同,例如,数据密钥402可以与数据密钥302相同,指针信息404可以与指针信息304相同,并且块密码器408可以与块密码器308相同,用于以与生成密钥流310类似的方式产生密钥流410。然而,在图4所示的示例中,控制流信息406被提供作为块密码器408的附加输入,替代如图3所示并且如上所述的分支状态信息(例如,306)。
控制流信息406可以指示关于程序指令的路径或流的信息,因为这些程序指令是针对间接分支执行的。例如,间接分支可以指定要基于分支条件执行的代码的地址,而不是要基于分支条件执行的直接指令(间接分支目标)。控制流信息406可以是以如上所述的类似方式指示N个间接分支目标的过去数量的值。例如,硬件逻辑/电路系统可以跟踪过去N个间接分支目标中的每一者的地址,并计算指示过去N个间接分支目标的控制流信息406的值。在一些实施例中,这可以通过散列过去的间接分支目标并组合用于过去N个间接分支目标中的每一者的散列的值来实现。目标散列的组合值可以用作图4的控制流信息406,即,作为加密/解密操作的微调输入。在一些实施例中,控制流信息406可以结合如上所述的一个或多个附加上下文信息元素,例如,直接分支状态信息等。以这种方式,攻击者误训练分支预测器将不会正确解密存储在存储器中的经加密数据的值,因为完整的分支路径没有如预期的那样完成。
图5示出了根据本公开的至少一个实施例的基于上下文信息加密和解密数据的示例过程500的流程图。示例过程500的各方面可以由包括密码执行单元的处理器(例如,图1的处理器102)来执行。示例过程500可以包括附加的或不同的操作,并且可以以所示的顺序或以另一顺序来执行所述操作。在一些情况下,图5中所示的操作中的一个或多个操作被实现为包括多个操作、子过程或其他类型的例程的过程。在一些情况下,操作可以被组合、以另一顺序执行、并行地被执行、被迭代、或以其他方式重复或以另一方式执行。
在502处,处理器接收用于明文数据的存储指令。存储指令可以例如在处理器的前端逻辑(例如,图7的前端逻辑706)处被接收,然后可以由后端逻辑(例如,图7的后端逻辑718)将存储指令与待存储到存储器的寄存器映射相关联,后端逻辑最终将寄存器值移动到具有适当上下文信息的存储缓冲器。
在504处,处理器的密码计算电路系统(例如,图1的密码计算引擎108和/或加密存储逻辑150)使用数据密钥(例如,302、402)加密与所接收的存储指令相关联的明文。如上所述,加密还可以使用指针信息(例如,304、404)和上下文信息(例如,分支状态信息306和/或控制流信息406)作为对加密的微调输入。上下文信息可以由包括指令的软件提供作为输入。例如,软件可以提前知道和/或预测这样的上下文信息(例如,分支条件、状态和/或路径信息)。
在506处,将经加密数据存储在存储器(例如,图1的存储器120和/或缓存170)中。
在508处,处理器接收与502的存储指令相对应的加载指令。例如,可以在前端逻辑(例如,图7的前端逻辑706)处接收加载指令,如上文关于502所述。
在510处,处理器的密码计算电路系统(例如,图1的密码计算引擎108)从存储器管线(例如,分支预测单元(例如,图8B的832)内的跟踪逻辑/电路系统)获得上下文信息。跟踪逻辑/电路系统可以跟踪程序指令的执行上下文,包括跟踪分支状态信息(例如,分支解析、方向、路径等,如上所述)和/或与程序指令执行相关联的控制流信息(例如,间接分支目标信息)。
在512处,处理器的密码计算电路系统(例如,图1的密码计算引擎108和/或解密加载逻辑160)使用在510处获得的上下文信息作为对解密的输入来解密经加密数据。例如,密码计算电路系统可以将所获得的上下文信息与数据密钥一起用作对解密过程的微调输入。假设所获得的上下文信息与用于在504处加密数据的信息匹配,则解密可以正确地产生与502的初始存储指令相关联的明文数据。
下面的图6-图7提供了可以在如本文所述的实施例的上下文中使用的一些示例计算设备、计算环境、硬件、软件或流程。
图6是图示根据至少一个实施例的示例密码计算环境600的框图。在所示的示例中,密码寻址层610延伸跨过示例计算向量中央处理单元(CPU)602、图形处理单元(GPU)604、人工智能(artificial intelligence,AI)606和现场可编程门阵列(fieldprogrammable gate array,FPGA)608。例如,CPU 602和GPU 604可以共享相同的用于存储在存储器612中的数据的虚拟地址转换,并且密码地址可以建立在该共享的虚拟存储器上。它们可以共享相同的用于给定执行流的进程密钥,并且按照相同的密码算法计算相同的微调以解密经密码学编码的地址和解密由此类经编码地址引用的数据。
结合起来,本文描述的能力可以实现密码计算。存储器612可以在存储器层次体系的每一级被加密,从缓存的第一级到缓存的最后一级并进入系统存储器。将密码地址编码绑定到数据加密可以允许极细粒度的对象边界和访问控制,从而实现细粒度的安全容器,甚至实现用于功能即服务的单独功能及其对象。对调用栈上的返回地址进行密码学编码(取决于它们的位置)也可以实现控制流完整性,而不需要影子栈元数据。因此,数据访问控制策略和控制流中的任何一者都可以以密码学方式执行,简单地依赖于密码寻址和相应的密码数据绑定。
图7-图9是根据本文公开的实施例的可使用的示例性计算机体系结构的框图。一般而言,可使用针对处理器和计算系统的本领域中已知的任何计算机体系结构设计。在示例中,本领域已知的用于膝上型计算机、桌面型计算机、手持式PC、个人数字助理、平板、工程工作站、服务器、网络设备、服务器、电器、网络集线器、路由器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、智能电话、移动设备、可穿戴电子设备、便携式媒体播放器、手持式设备和各种其他电子设备的系统设计和配置也适用于本文描述的计算系统的实施例。一般而言,用于本文公开的实施例的合适的计算机体系结构可以包括但不限于图7-图9中所图示的配置。
图7是根据实施例的处理器的示例图示。处理器700是可结合本文中示出和描述的实现方式使用的一类硬件设备的示例(例如,处理器102)。处理器700可以是任何类型的处理器,诸如微处理器、嵌入式处理器、数字信号处理器(digital signal processor,DSP)、网络处理器、多核心处理器、单核心处理器、或用于执行代码的其他设备。虽然在图7中图示出仅一个处理器700,但处理元件可替代地包括多于一个的图7中所图示的处理器700。处理器700可以是单线程核心,或者对于至少一个实施例来说,处理器700可以是多线程的,体现在它针对每个核心可包括多于一个硬件线程上下文(或“逻辑处理器”)。
图7还图示出根据实施例的耦合至处理器700的存储器702。存储器702可以是对于本领域技术人员而言已知或以其他方式可用的各种各样的存储器(包括存储器层次体系的各层)中的任何存储器。此类存储器元件可以包括但不限于随机存取存储器(randomaccess memory,RAM)、只读存储器(read only memory,ROM)、现场可编程门阵列(readonly memory,FPGA)的逻辑块、可擦除可编程只读存储器(erasable programmable readonly memory,EPROM)、以及电可擦除可编程ROM(electrically erasable programmableROM,EEPROM)。
处理器700可以执行与本文中详细描述的算法、过程、或操作相关联的任何类型的指令。一般而言,处理器700可以将元件或制品(例如,数据)从一种状态或事物变换成另一种状态或事物。
代码704(其可以是用于由处理器700执行的一个或多个指令)可以被存储在存储器702中,或者可被存储在软件、硬件、固件、或其任何合适的组合中,或者在适当的情况下并且基于特定需要而被存储在任何其他内部或外部部件、设备、元件、或对象中。在一个示例中,处理器700可以遵循由代码704指示的指令的程序序列。每个指令进入前端逻辑706,并且由一个或多个解码器708处理。解码器可以生成诸如采用预定义格式的固定宽度的微操作之类的微操作作为其输出,或者可生成反映原始代码指令的其他指令、微指令、或控制信号。前端逻辑706还包括寄存器重命名逻辑710和调度逻辑712,这些逻辑一般分配资源,并对与供执行的指令对应的操作进行排队。
处理器700还包括具有一组执行单元716a、716b、716n等的执行逻辑714。一些实施例可以包括专用于指定功能或功能集合的多个执行单元。其他实施例可以包括仅一个执行单元或可以执行特定功能的一个执行单元。执行逻辑714执行由代码指令指定的操作。
在对由代码指令指定的操作的执行完成之后,后端逻辑718可以对代码704的指令进行引退。在一个实施例中,处理器700允许乱序执行,但要求对指令的有序引退。引退逻辑720可以采取各种已知的形式(例如,重排序缓冲器等等)。以此方式,至少对于由解码器所生成的输出、由寄存器重命名逻辑710利用的硬件寄存器和表以及由执行逻辑714修改的任何寄存器(未示出)而言,处理器700在代码704的执行期间被转换。
虽然未在图7中示出,但处理元件可以包括与处理器700一起处于芯片上的其他元件。例如,处理元件可以包括与处理器700一起的存储器控制逻辑。处理元件可以包括I/O控制逻辑和/或可以包括与存储器控制逻辑一起被集成的I/O控制逻辑。处理元件还可以包括一个或多个缓存。在一些实施例中,非易失性存储器(诸如闪存或熔丝)也可以与处理器700一起被包括在芯片上。
图8A是图示根据本公开的一个或多个实施例的示例性有序管线和示例性的寄存器重命名的乱序发出/执行管线两者的框图。图8B是图示根据本公开的一个或多个实施例的要被包括在处理器中的有序体系结构核心的示例性实施例和示例性的寄存器重命名的乱序发出/执行体系结构核心两者的框图。图8A-图8B中的实线框图示有序管线和有序核心,而虚线框的可选添加图示寄存器重命名的乱序发出/执行管线和核心。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图8A中,处理器管线800包括取得(fetch)阶段802、长度解码阶段804、解码阶段806、分配阶段808、重命名阶段810、调度(也被称为调遣或发出)阶段812、寄存器读取/存储器读取阶段814、执行阶段816、写回/存储器写入阶段818、异常处置阶段822和提交阶段824。
图8B示出处理器核心890,该处理器核心890包括前端单元830,该前端单元830耦合到执行引擎单元850,并且前端单元830和执行引擎单元850两者都耦合到存储器单元870。处理器核心890和存储器单元870是可结合本文中示出和描述的实现方式使用的那些类型的硬件的示例(例如,处理器102,存储器120)。核心890可以是精简指令集计算(reduced instruction set computing,RISC)核心、复杂指令集计算(complexinstruction set computing,CISC)核心、超长指令字(very long instruction word,VLIW)核心、或混合或替代性核心类型。作为又一选项,核心890可以是专用核心,诸如例如,网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(general purposecomputing graphics processing unit,GPGPU)核心、图形核心,等等。此外,处理器核心890及其部件表示可用于实现逻辑处理器及其相应部件的示例体系结构。
前端单元830包括分支预测单元832,该分支预测单元832耦合到指令缓存单元834,该指令缓存单元834耦合到指令转译后备缓冲器(translation lookaside buffer,TLB)单元836,该指令转译后备缓冲器单元836耦合到指令取得单元838,该指令取得单元838耦合到解码单元840。解码单元840(或解码器)可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元840可使用各种不同的机制来实现。合适机制的示例包括但不限于查找表、硬件实现、可编程逻辑阵列(programmablelogic array,PLA)、微代码只读存储器(read only memory,ROM)等。在一个实施例中,核心890包括用于存储用于某些宏指令的微代码的微代码ROM或其他介质(例如,在解码单元840中或以其他方式在前端单元830内)。解码单元840耦合至执行引擎单元850中的重命名/分配器单元852。
执行引擎单元850包括重命名/分配器单元852,该重命名/分配器单元852耦合到引退单元854和一个或多个调度器单元856的集合。(一个或多个)调度器单元856表示任何数量的不同调度器,包括预留站、中央指令窗等。(一个或多个)调度器单元856耦合至(一个或多个)物理寄存器堆单元858。(一个或多个)物理寄存器堆单元858中的每一个物理寄存器堆单元表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针)等。在一个实施例中,(一个或多个)物理寄存器堆单元858包括向量寄存器单元、写入掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供体系结构向量寄存器、向量掩码寄存器和通用寄存器(general purposeregisters,GPR)。在本文描述的至少一些实施例中,寄存器单元858是可以结合本文所示和描述的实现方式使用的硬件类型的示例(例如,寄存器110)。(一个或多个)物理寄存器堆单元858由引退单元854重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器堆;使用(一个或多个)未来的堆、(一个或多个)历史缓冲器、以及(一个或多个)引退寄存器堆;使用寄存器图谱和寄存器池,等等)。引退单元854和(一个或多个)物理寄存器堆单元858耦合到(一个或多个)执行集群860。(一个或多个)执行集群860包括一个或多个执行单元862的集合以及一个或多个存储器访问单元864的集合。执行单元862可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可包括仅一个执行单元或全都执行所有功能的多个执行单元。执行单元862还可以包括地址生成单元,用于计算由核心用于访问主存储器(例如,存储器单元870)的地址和页未命中处置程序(page miss handler,PMH)。
(一个或多个)调度器单元856、(一个或多个)物理寄存器堆单元858和(一个或多个)执行集群860示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的管线(例如,标量整数管线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点管线,和/或各自具有其自身的调度器单元、(一个或多个)物理寄存器堆单元和/或执行集群的存储器访问管线——并且在分开的存储器访问管线的情况下,实现其中仅该管线的执行集群具有(一个或多个)存储器访问单元864的某些实施例)。还应当理解,在使用分开的管线的情况下,这些管线中的一个或多个可以是乱序发出/执行,并且其余管线可以是有序的。
存储器访问单元864的集合耦合到存储器单元870,该存储器单元870包括数据TLB单元872,该数据TLB单元872耦合到数据缓存单元874,该数据缓存单元874耦合到第二级(L2)缓存单元876。在一个示例性实施例中,存储器访问单元864可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合到存储器单元870中的数据TLB单元872。指令缓存单元834进一步耦合到存储器单元870中的第二级(L2)缓存单元876。L2缓存单元876耦合到一个或多个其他级别的缓存,并最终耦合到主存储器。此外,如果在数据TLB单元872中没有找到匹配,则在核心890中还可以包括页未命中处置程序,用于在页表中查找地址映射。
作为示例,示例性寄存器重命名的乱序发出/执行核心体系结构可如下所述地实现管线800:1)指令取得单元838执行取得阶段802和长度解码阶段804;2)解码单元840执行解码阶段806;3)重命名/分配器单元852执行分配阶段808和重命名阶段810;4)(一个或多个)调度器单元856执行调度阶段812;5)(一个或多个)物理寄存器堆单元858和存储器单元870执行寄存器读取/存储器读取阶段814;执行集群860执行执行阶段816;6)存储器单元870和(一个或多个)物理寄存器堆单元858执行写回/存储器写入阶段818;7)各单元可牵涉到异常处置阶段822;以及8)引退单元854和(一个或多个)物理寄存器堆单元858执行提交阶段824。
核心890可支持一个或多个指令集(例如,x86指令集(具有已与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON的可选的附加扩展)),其中包括本文中描述的(一个或多个)指令。在一个实施例中,核心890包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。
应当理解,核心可支持多线程化(执行两个或更多个并行的操作或线程集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核心为物理核心正在同时进行多线程化的线程中的每一个线程提供逻辑核心)、或其组合(例如,时分取得和解码以及此后的诸如超线程化技术中的同时多线程化)。因此,在至少一些实施例中,可以支持多线程飞地。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序体系结构中使用寄存器重命名。尽管所图示的处理器的实施例还包括分开的指令和数据缓存单元834/874以及共享的L2缓存单元876,但是替代性实施例可以具有用于指令和数据两者的单个内部缓存,诸如例如,第一级(L1)内部缓存或多个级别的内部缓存。在一些实施例中,系统可包括内部缓存和处于核心和/或处理器外部的外部缓存的组合。替代地,所有缓存都可以在核心和/或处理器的外部。
图9图示出根据实施例的以点对点(point-to-point,PtP)配置进行布置的计算系统900。具体而言,图9示出了其中处理器、存储器以及输入/输出设备通过多个点对点接口互连的系统。一般而言,本文描述的计算系统或计算设备中的一者或多者可以以与计算系统900相同或类似的方式来配置。
处理器970和980可被实现为单核心处理器974a和984a或者多核心处理器974a-974b和984a-984b。处理器970和980可各自包括由其相应的一个或多个核心使用的缓存971和981。共享缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地缓存信息可被存储在共享缓存中。应当注意,本文中描述的一个或多个实施例可被实现在计算系统(诸如,计算系统900)中。此外,处理器970和980是可结合本文中示出和描述的实现方式使用的那些类型的硬件的示例(例如,处理器102)。
处理器970和980还可各自包括集成存储器控制器逻辑(integrated memorycontroller,IMC)972和982以与存储器元件932和934通信,存储器元件932和934可以是在本地附连至相应处理器的主存储器的部分。在替代性实施例中,存储器控制器逻辑972和982可以是与处理器970和980分离的分立逻辑。存储器元件932和/或934可以存储要由处理器970和980使用于实现本文中所概述的操作和功能中的各种数据。
处理器970和980可以是任何类型的处理器,诸如结合其他附图所讨论的那些处理器。处理器970和980可以分别使用点对点(point-to-point,PtP)接口电路978和988,经由点对点接口950来交换数据。处理器970和980可各自使用点对点接口电路976、986、994和998,经由各个点对点接口952和954与输入/输出(I/O)子系统990交换数据。I/O子系统990还可以使用接口电路992(其可以是PtP接口电路),经由高性能图形接口939来与高性能图形电路938交换数据。在一个实施例中,高性能图形电路938是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。I/O子系统990还可与显示器933进行通信,以用于显示可由人类用户观看的数据。在替代实施例中,图9中所图示的PtP链路中的任一者或全部可以被实现为多分支总线而不是PtP链路。
I/O子系统990可经由接口电路996与总线910通信。总线910可具有通过该总线通信的一个或多个设备,诸如总线桥918、I/O设备914、以及一个或多个其他处理器915。经由总线920,总线桥918可以与其他设备通信,这些其他设备诸如用户接口922(诸如,键盘、鼠标、触摸屏、或其他输入设备)、通信设备926(诸如,调制解调器、网络接口设备、或可通过计算机网络960通信的其他类型的通信设备)、音频I/O设备924、和/或存储单元928。存储单元928可存储数据和代码930,该数据和代码930可由处理器970和/或980执行。在替代型实施例中,总线体系结构的任何部分可利用一个或多个PtP链路来实现。
可将程序代码(诸如,代码930)应用于输入指令,以执行本文中所描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统可以是计算系统900的部分,并且可包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
可以用面向过程或面向对象的高级编程语言来实现程序代码(例如,930)以与处理系统进行通信。如果需要,程序代码也可以用汇编语言或机器语言来实现。实际上,本文中描述的机制不限于任何特定的编程语言的范围。在任何情况中,该语言可以是编译语言或解释语言。
在一些情况中,指令转换器可用于将指令从源指令集转换到目标指令集。例如,指令转换器可以将指令转译(例如,使用静态二进制转译、包括动态编译的动态二进制转译)、变形、仿真或以其他方式转换成要由核心处理的一个或多个其他指令。指令转换器可以用软件、硬件、固件、或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图10是根据本公开的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在图示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图10示出可使用x86编译器1004来编译高级语言1002形式的程序,以生成可由具有至少一个x86指令集核心的处理器1016原生执行的x86二进制代码1006。具有至少一个x86指令集核心的处理器1016表示通过兼容地执行或以其他方式执行以下各项来执行与具有至少一个x86指令集核心的英特尔处理器基本相同的功能的任何处理器:(1)英特尔x86指令集核心的指令集的实质部分,或(2)目标为在具有至少一个x86指令集核心的英特尔处理器上运行以便取得与具有至少一个x86指令集核心的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器1004表示可操作用于生成x86二进制代码1006(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核心的处理器1016上执行。类似地,图10示出可以使用替代性指令集编译器1008来编译高级语言1002形式的程序,以生成可以由不具有至少一个x86指令集核心的处理器1014(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核心的处理器)原生执行的替代性指令集二进制代码1010。指令转换器1012用于将x86二进制代码1006转换成可以由没有x86指令集核心的处理器1014原生执行的代码。该转换后的代码不大可能与替代性指令集二进制代码1010相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自替代指令集的指令构成。由此,指令转换器1012通过仿真、模拟或任何其他过程来表示允许没有x86指令集处理器或核心的处理器或其他电子设备执行x86二进制代码1006的软件、固件、硬件或其组合。
至少一个实施例的一个或多个方面可以由被存储在机器可读介质上的代表性指令来实现,这些指令代表处理器内的各种逻辑,这些指令当被机器读取时,使得该机器制造用于执行本文中所述技术中的一项或多项技术的逻辑。被称为“IP核心”的此类表示可以被存储在有形的机器可读介质上,并且可被供应给各个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可包括但不限于通过机器或设备制造或形成的制品的非暂态有形布置形式,包括存储介质,诸如:硬盘;任何其他类型的盘(包括软盘、光盘、致密盘只读存储器(compact disk read-only memory,CD-ROM)、可重写致密盘(compact diskrewritable,CD-RW)以及磁光盘);半导体器件(诸如,只读存储器(read-only memory,ROM)、诸如动态随机访问存储器(dynamic random access memory,DRAM)和静态随机访问存储器(static random access memory,SRAM)的随机访问存储器(random accessmemory,RAM)、可擦除可编程只读存储器(erasable programmable read-only memory,EPROM)、闪存、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM);相变存储器(phase change memory,PCM);磁卡或光卡;或适合用于存储电子指令的任何其他类型的介质。
因此,本公开的实施例还包括非暂态有形机器可读介质,这些介质包含指令或包含定义本文中描述的结构、电路、装置、处理器和/或系统特征的设计数据,诸如,硬件描述语言(Hardware Description Language,HDL)。此类实施例也可以被称为程序产品。
图9中描绘的计算系统是可用于实现本文中所讨论的各实施例的计算系统的实施例的示意性图示。将会领会,图9中所描绘的系统的各组件能以芯片上系统(SoC)体系结构或以能够实现本文中所提供的示例和实现方式的功能和特征的任何其他合适的配置来组合。
尽管已经在某些实现方式和一般相关联方法的方面描述了本公开,但这些实现方式和方法的更改和置换将对于本领域技术人员来说是显而易见的。例如,本文中描述的动作可以以与所描述的顺序不同的顺序来执行,并仍获得期望的结果。作为一个示例,所附附图中描绘的过程并不一定要求所示的特定顺序、或相继顺序来实现所期望的结果。在某些实现中,多任务处理和并行处理可能是有利的。其他变型落在所附权利要求的范围之内。
本文中呈现的体系结构仅作为示例提供,并且旨在是非排他性和非限制性的。此外,所公开的各个部分仅旨在作为逻辑划分,而不一定需要表示物理上分离的硬件和/或软件部件。某些计算系统可以在单个物理存储器设备中提供存储器元件,并且在其他情况下,存储器元件可以在功能上分布在许多物理设备上。在虚拟机管理器或管理程序的情况下,功能的全部或部分可以以在虚拟化层上运行的软件或固件的形式提供,以提供所公开的逻辑功能。
注意,对于本文中所提供的示例,可以以单个计算系统来描述交互。然而,仅出于清楚和示例的目的这样做。在某些情况下,通过仅引用单个计算系统来描述一组给定流的功能中的一个或多个功能可能更容易。此外,用于深度学习和恶意软件检测的系统易于扩展,并且可以跨大量部件(例如,多个计算系统)以及更复杂/精密的布置和配置来实现。因此,所提供的示例不应该限制计算系统的范围或抑制该计算系统的广泛教学,因为可潜在地应用于无数其他体系结构。
如本文所使用,除非明确地陈述为相反的情况,否则短语“至少一个”的使用是指命名的项目、元素、条件或活动的任何组合。例如,“X、Y和Z中的至少一个”旨在表示以下各项中的任一项:1)至少一个X,但没有Y且没有Z;2)至少一个Y,但没有X且没有Z;3)至少一个Z,但没有X且没有Y;4)至少一个X和至少一个Y,但没有Z;5)至少一个X和至少一个Z,但没有Y;6)至少一个Y和至少一个Z,但没有X;或者7)至少一个X、至少一个Y和至少一个Z。
另外,除非明确地陈述为相反的情况,否则术语“第一”、“第二”、“第三”等旨在区分它们修饰的特定名词(例如,元素、条件、模块、活动、操作、声明元素等),但不旨在指示所修饰的名词的任何类型的次序、等级、重要性、时间顺序或层次体系。例如,“第一X”和“第二X”旨在规定两个分开的X元素,其不一定受这两个元素的任何次序、等级、重要性、时间顺序或层次体系限制。
说明书中对“一个实施例”、“实施例”、“一些实施例”等的引用指示所描述的(一个或多个)实施例可包括特定特征、结构或特性,但是,每一个实施例可包括或可以不一定包括该特定特征、结构或特性。而且,此类短语不一定是指同一实施例。
虽然本说明书包含许多具体实现细节,但这些具体实现细节不应当被解释为对任何实施例或可声称权利的范围的限制,而是被解释为针对特定实施例的特征的描述。也可将在本说明书中在单独的各实施例的情境中所描述的某些特征以组合的形式在单个实施例中实现。反之,也可以单独地在多个实施例中,或在任何合适的子组合中实现在单个实施例的上下文中所描述的各种特征。此外,虽然在上文中可能将多个特征描述为以某些组合的方式起作用且甚至最初是如此要求保护的,但是,在一些情况下,可以将来自所要求保护的组合的一个或多个特征从组合中删除,并且所要求保护的组合可以针对子组合或子组合的变型。
类似地,上述实施例中的各种系统部件和模块的分离不应被理解为在所有实施例中都需要这种分离。应理解,所描述的程序部件、模块和系统通常可以一起集成在单个软件产品中,或者打包成多个软件产品。
因此,已描述了本主题的特定实施例。其他实施例落在本公开的范围内。众多其他改变、替换、变体、更改和修改对本领域技术人员而言可以是确定的,并且本公开旨在将所有此类改变、替换、变体、更改和修改涵盖为落在所附权利要求书的范围内。
示例
示例1是一种处理器,包括:存储器层次体系,该存储器层次体系存储经加密数据;跟踪电路系统,用于跟踪由处理器执行的指令的执行上下文;以及密码计算电路系统,用于:从该跟踪电路系统获得待由所述处理器执行的加载指令的上下文信息,该加载指令用于从存储器层次体系加载经加密数据,该上下文信息指示关于由处理器的分支预测单元做出的分支预测的信息;以及使用密钥解密经加密数据,其中上下文信息被用作对解密的微调输入。
示例2包括示例1的主题,其中上下文信息指示分支预测单元是否正确预测了一组先前的分支预测。
示例3包括示例2的主题,其中上下文信息是N比特向量,该N比特向量指示由处理器的分支预测单元做出的过去N个分支预测中的每一个分支预测是否正确。
示例4包括示例2的主题,其中上下文信息是单个比特,该单个比特指示由处理器的分支预测单元做出的所有过去的分支预测是否正确。
示例5包括示例1的主题,其中上下文信息指示由分支预测单元做出的一个或多个分支预测。
示例6包括示例5的主题,其中上下文信息是N比特向量,该N比特向量指示过去N个分支预测中的每一个分支预测的方向。
示例7包括示例1-6中任一项的主题,其中上下文信息进一步指示各个分支预测之间的指令数。
示例8包括示例1-7中任一项的主题,其中上下文信息进一步指示每个分支预测的分支条件。
示例9包括示例1-8中任一项的主题,其中上下文信息进一步指示存储器消歧信息。
示例10包括示例1-9中任一项的主题,其中上下文信息进一步指示一个或多个间接分支预测目标的路径信息。
示例11包括示例1-10中任一项的主题,其中跟踪电路系统在处理器的前端单元内。
示例12包括示例11的主题,其中跟踪电路系统在处理器的分支预测单元内。
示例13包括示例1-10中任一项的主题,其中跟踪电路系统在处理器的后端单元内。
示例14包括示例12的主题,其中跟踪电路系统在处理器的重排序缓冲器内。
示例15包括示例1-14中任一项的主题,其中指针信息进一步用作对解密的微调输入,该指针信息对应于指向存储器层次体系中的经加密数据的指针。
示例16包括示例15的主题,其中指针信息包括指针的经编码版本。
示例17包括示例16的主题,其中指针的经编码版本被至少部分地加密。
示例18是一种方法,包括:由处理器访问加载指令以从处理器的存储器层次体系加载经加密数据;从处理器的跟踪电路系统获得加载指令的执行上下文信息,该执行上下文信息指示关于由处理器的分支预测单元做出的分支预测的信息;以及使用密钥和上下文信息解密经加密数据,其中上下文信息被用作对解密的微调输入。
示例19包括示例16的主题,其中上下文信息指示分支预测单元是否正确预测了一组先前的分支预测。
示例20包括示例19的主题,其中上下文信息是N比特向量,该N比特向量指示由处理器的分支预测单元做出的过去N个分支预测中的每一个分支预测是否正确。
示例21包括示例19的主题,其中上下文信息是单个比特,该单个比特指示由处理器的分支预测单元做出的所有过去的分支预测是否正确。
示例22包括示例16的主题,其中上下文信息指示由分支预测单元做出的一个或多个分支预测。
示例23包括示例22的主题,其中上下文信息是N比特向量,该N比特向量指示过去N个分支预测中的每一个分支预测的方向。
示例24包括示例16-23中任一项的主题,其中上下文信息进一步指示各个分支预测之间的指令数。
示例25包括示例16-24中任一项的主题,其中上下文信息进一步指示每个分支预测的分支条件。
示例26包括示例16-25中任一项的主题,其中上下文信息进一步指示存储器消歧信息。
示例27包括示例16-26中任一项的主题,其中上下文信息进一步指示一个或多个间接分支预测目标的路径信息。
示例28包括示例16-27中任一项的主题,其中指针信息进一步用作对解密的微调输入,该指针信息对应于指向存储器层次体系中的经加密数据的指针。
示例29包括示例28的主题,其中指针信息包括指针的经编码版本。
示例30包括示例29的主题,其中指针的经编码版本被至少部分地加密。
示例30.1是一种设备,该设备包括用于执行如任何在前示例中所例示的方法的装置。
示例30.2是机器可读存储装置,该机器可读存储装置包括机器可读指令,该机器可读指令当被执行时,用于实现任何在前示例中所例示的方法或实现任何在前示例中所例示的装置。
示例31包括一个或多个非瞬态计算机可读介质,该一个或多个非瞬态计算机可读介质包括指令,该指令用于在指令由电子设备的一个或多个处理器执行时使得电子设备用于:访问加载指令以从存储器加载经加密数据;获得加载指令的执行上下文信息,该上下文信息指示关于由处理器的分支预测单元做出的分支预测的信息;以及使用密钥和上下文信息解密经加密数据,其中上下文信息被用作对解密的微调输入。
示例32包括示例31的主题,其中上下文信息指示分支预测单元是否正确预测了一组先前的分支预测。
示例33包括示例32的主题,其中上下文信息是N比特向量,该N比特向量指示由处理器的分支预测单元做出的过去N个分支预测中的每一个分支预测是否正确。
示例34包括示例32的主题,其中上下文信息是单个比特,该单个比特指示由处理器的分支预测单元做出的所有过去的分支预测是否正确。
示例35包括示例31的主题,其中上下文信息指示由分支预测单元做出的一个或多个分支预测。
示例36包括示例35的主题,其中上下文信息是N比特向量,该N比特向量指示过去N个分支预测中的每一个分支预测的方向。
示例37包括示例31-36中任一项的主题,其中上下文信息进一步指示各个分支预测之间的指令数。
示例38包括示例31-37中任一项的主题,其中上下文信息进一步指示每个分支预测的分支条件。
示例39包括示例31-38中任一项的主题,其中上下文信息进一步指示存储器消歧信息。
示例40包括示例31-39中任一项的主题,其中上下文信息进一步指示一个或多个间接分支预测目标的路径信息。
示例41包括示例31-40中任一项的主题,其中指针信息进一步用作对解密的微调输入,该指针信息对应于指向存储器层次体系中的经加密数据的指针。
示例42包括示例41的主题,其中指针信息包括指针的经编码版本。
示例42包括示例42的主题,其中指针的经编码版本被至少部分地加密。
Claims (25)
1.一种处理器,包括:
存储器层次体系,所述存储器层次体系存储经加密数据;
跟踪电路系统,用于跟踪由所述处理器执行的指令的执行上下文;以及
密码计算电路系统,用于:
从所述跟踪电路系统获得待由所述处理器执行的加载指令的上下文信息,所述加载指令用于从所述存储器层次体系加载经加密数据,所述上下文信息指示关于由所述处理器的分支预测单元做出的分支预测的信息;以及
使用密钥解密所述经加密数据,其中所述上下文信息被用作对解密的微调输入。
2.如权利要求1所述的处理器,其特征在于,所述上下文信息指示所述分支预测单元是否正确预测了一组先前的分支预测。
3.如权利要求2所述的处理器,其特征在于,所述上下文信息是N比特向量,所述N比特向量指示由所述处理器的所述分支预测单元做出的过去N个分支预测中的每一个分支预测是否正确。
4.如权利要求2所述的处理器,其特征在于,所述上下文信息是单个比特,所述单个比特指示由所述处理器的所述分支预测单元做出的所有过去的分支预测是否正确。
5.如权利要求1所述的处理器,其特征在于,所述上下文信息指示由所述分支预测单元做出的一个或多个分支预测。
6.如权利要求5所述的处理器,其特征在于,所述上下文信息是N比特向量,所述N比特向量指示过去N个分支预测中的每一个分支预测的方向。
7.如权利要求1所述的处理器,其特征在于,所述上下文信息进一步指示各个分支预测之间的指令数。
8.如权利要求1所述的处理器,其特征在于,所述上下文信息进一步指示每个分支预测的分支条件。
9.如权利要求1所述的处理器,其特征在于,所述上下文信息进一步指示存储器消歧信息。
10.如权利要求1所述的处理器,其特征在于,所述上下文信息进一步指示一个或多个间接分支预测目标的路径信息。
11.如权利要求1至10中任一项所述的处理器,其特征在于,所述跟踪电路系统在所述处理器的前端单元内。
12.如权利要求11所述的处理器,其特征在于,所述跟踪电路系统在所述处理器的分支预测单元内。
13.如权利要求1至10中任一项所述的处理器,其特征在于,所述跟踪电路系统在所述处理器的后端单元内。
14.如权利要求12所述的处理器,其特征在于,所述跟踪电路系统在所述处理器的重排序缓冲器内。
15.如权利要求1至10中任一项所述的处理器,其特征在于,指针信息进一步用作对所述解密的微调输入,所述指针信息对应于指向所述存储器层次体系中的所述经加密数据的指针。
16.如权利要求15所述的处理器,其特征在于,所述指针信息包括所述指针的经编码版本。
17.如权利要求16所述的处理器,其特征在于,所述指针的所述经编码版本被至少部分地加密。
18.一种方法,包括:
由处理器访问加载指令以从处理器的存储器层次体系加载经加密数据;
从所述处理器的跟踪电路系统获得所述加载指令的执行上下文信息,所述执行上下文信息指示关于由所述处理器的分支预测单元做出的分支预测的信息;以及
使用密钥和所述上下文信息来解密所述经加密数据,其中所述上下文信息被用作对所述解密的微调输入。
19.如权利要求18所述的方法,其特征在于,所述上下文信息指示所述分支预测单元是否正确预测了一组先前的分支预测。
20.如权利要求18所述的方法,其中,所述上下文信息指示以下各项中的一项或多项:由所述分支预测单元做出的分支预测,各个分支预测之间的指令数,每个分支预测的分支条件,存储器消歧信息,以及一个或多个间接分支预测目标的路径信息。
21.如权利要求18至20中任一项所述的方法,其特征在于,指针信息进一步用作对所述解密的微调输入,所述指针信息对应于指向所述存储器层次体系中的所述经加密数据的指针。
22.一个或多个非瞬态计算机可读介质,所述一个或多个非瞬态计算机可读介质包括指令,所述指令用于在所述指令由电子设备的一个或多个处理器执行时使得所述电子设备用于:
访问加载指令以从存储器加载经加密数据;
获得所述加载指令的执行上下文信息,所述上下文信息指示关于由所述处理器的分支预测单元做出的分支预测的信息;以及
使用密钥和所述上下文信息来解密所述经加密数据,其中所述上下文信息被用作对所述解密的微调输入。
23.如权利要求22所述的计算机可读介质,其特征在于,所述上下文信息指示所述分支预测单元是否正确预测了一组先前的分支预测。
24.如权利要求22所述的计算机可读介质,其特征在于,所述上下文信息指示以下各项中的一项或多项:由所述分支预测单元做出的分支预测,各个分支预测之间的指令数,每个分支预测的分支条件,存储器消歧信息,以及一个或多个间接分支预测目标的路径信息。
25.如权利要求22至24中任一项所述的计算机可读介质,其特征在于,指针信息进一步用作对所述解密的微调输入,所述指针信息对应于指向所述存储器层次体系中的所述经加密数据的指针。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/547,875 US20220100907A1 (en) | 2021-12-10 | 2021-12-10 | Cryptographic computing with context information for transient side channel security |
US17/547,875 | 2021-12-10 | ||
PCT/US2022/048441 WO2023107212A1 (en) | 2021-12-10 | 2022-10-31 | Cryptographic computing with context information for transient side channel security |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117546168A true CN117546168A (zh) | 2024-02-09 |
Family
ID=80822574
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280044409.6A Pending CN117546168A (zh) | 2021-12-10 | 2022-10-31 | 用于瞬态侧信道安全的使用上下文信息的密码计算 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220100907A1 (zh) |
CN (1) | CN117546168A (zh) |
WO (1) | WO2023107212A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220100907A1 (en) * | 2021-12-10 | 2022-03-31 | Intel Corporation | Cryptographic computing with context information for transient side channel security |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7590825B2 (en) * | 2006-03-07 | 2009-09-15 | Intel Corporation | Counter-based memory disambiguation techniques for selectively predicting load/store conflicts |
US20160011874A1 (en) * | 2014-07-09 | 2016-01-14 | Doron Orenstein | Silent memory instructions and miss-rate tracking to optimize switching policy on threads in a processing device |
US11635965B2 (en) * | 2018-10-31 | 2023-04-25 | Intel Corporation | Apparatuses and methods for speculative execution side channel mitigation |
US11294684B2 (en) * | 2020-01-31 | 2022-04-05 | Apple Inc. | Indirect branch predictor for dynamic indirect branches |
US11625337B2 (en) * | 2020-12-26 | 2023-04-11 | Intel Corporation | Encoded pointer based data encryption |
US20220100907A1 (en) * | 2021-12-10 | 2022-03-31 | Intel Corporation | Cryptographic computing with context information for transient side channel security |
-
2021
- 2021-12-10 US US17/547,875 patent/US20220100907A1/en active Pending
-
2022
- 2022-10-31 WO PCT/US2022/048441 patent/WO2023107212A1/en unknown
- 2022-10-31 CN CN202280044409.6A patent/CN117546168A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220100907A1 (en) | 2022-03-31 |
WO2023107212A1 (en) | 2023-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3757856B1 (en) | Cryptographic isolation of memory compartments in a computing environment | |
US11575504B2 (en) | Cryptographic computing engine for memory load and store units of a microarchitecture pipeline | |
US11625337B2 (en) | Encoded pointer based data encryption | |
US11711201B2 (en) | Encoded stack pointers | |
US20200257827A1 (en) | Memory write for ownership access in a core | |
CN107851170B (zh) | 支持用于存储器地址范围的可配置安全级别 | |
US11250165B2 (en) | Binding of cryptographic operations to context or speculative execution restrictions | |
US20220121447A1 (en) | Hardening cpu predictors with cryptographic computing context information | |
CN117546168A (zh) | 用于瞬态侧信道安全的使用上下文信息的密码计算 | |
US20240104027A1 (en) | Temporal information leakage protection mechanism for cryptographic computing | |
US20220121578A1 (en) | Transient side-channel aware architecture for cryptographic computing | |
US20210117341A1 (en) | Cache line slot level encryption based on context information |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |