一种基于层次化结构的分支预测器安全增强方法及系统
未命名
09-08
阅读:157
评论:0

1.本发明属于处理器体系结构领域,涉及一种基于层次化结构的分支预测器安全增强方法及系统。
背景技术:
2.分支预测器是现代高性能处理器提高程序执行并行性的关键部件。但是“幽灵”漏洞和分支预测器侧信道等安全问题曝光揭示出当前分支预测器的微架构设计存在着严重的安全问题。问题的根本原因在于分支预测器普遍采用资源共享原则。从安全的角度来讲,资源共享即意味着存在可能的攻击面。分支预测器中记录着不同程序的执行历史信息,这些历史信息来自不同的程序但是却以明文形式和固定的索引存储在共享的存储单元中,并且允许不同程序间相互使用,这留给了攻击者恶意训练和恶意感知的机会。
3.现代分支预测器通常采用层次化的结构设计。分支预测器通常并非单独一级,而是由不同大小的多级预测表组成,高层级项数少的分支预测表(简称高层级分支预测表)能够提供快速的预测,而低层级项数多的分支预测表(简称低层级分支预测表)则可以在高层级分支预测表的基础上进一步地提高预测的精度。针对现代分支预测器层次化的结构设计特点,安全分支预测器设计需要有效地平衡安全性、性能、面积和可拓展性等关键设计挑战。现有的分支预测器侧信道防御方案,如软件刷新和物理隔离不仅造成较大的性能代价,还可能会带来巨大的面积开销。随机化机制也是一种有前景的分支预测器侧信道防御方案,但是最新针对随机化机制的攻击表明,现有随机化方案中使用的简单加密算法容易遭受密码分析的攻击,导致即使密钥切换也无法起到防御效果,另一方面现代分支预测器的高层级分支预测表项数少,应用随机化机制的安全强度低。总的来说,对于现代层次化的分支预测器架构,现有的安全增强方法存在两个方面的缺点:一是在分支预测器上应用随机化机制安全性较弱,尤其是高层级分支预测表,无法满足防御复杂侧信道攻击的需求;二是性能代价高,无论是频繁的刷新分支预测器还是拉长分支预测的延迟周期,都会严重影响处理器的性能。
技术实现要素:
4.鉴于现有分支预测器安全增强机制存在的问题,本发明的目的是提供一种基于分支预测器层次化结构的安全增强方法及系统,通过针对不同层级的分支预测表应用不同类型的安全机制,充分发挥不同类型安全机制的优势,从而实现安全机制间的优势互补,如此通过层次化的安全增强,不仅能够有效阻断分支预测器测信道信息泄露渠道,还能有效实现安全、性能和成本之间的良好平衡。
5.为实现上述目的,本发明采用以下技术方案:
6.一种基于层次化结构的分支预测器安全增强方法,包括以下步骤:
7.1)根据具体的保护场景将不同程序划分为不同安全域;
8.2)为每个安全域动态产生各自的私有随机数;
9.3)对于分支预测器的低层级分支预测表,使用安全域的私有随机数,为分支预测器的索引进行随机化操作以及/或者为分支预测器的待更新内容进行随机化操作;
10.4)对于分支预测器的高层级分支预测表,根据不同安全域将高层级分支预测表进行物理隔离,为每个安全域隔离出专用的高层级分支预测表。
11.进一步地,步骤1)中划分安全域的方法包括:
12.为了防止进程间恶意训练或者感知分支预测信息,采用线程或进程的粒度划分安全域,每个线程或进程为一个安全域;或者
13.为了防止不同安全级的程序恶意训练或者感知分支预测器信息,按照安全级的不同划分安全域。
14.进一步地,步骤2)中每个安全域采用各自的私有随机数表来保存被产生的私有随机数。
15.进一步地,步骤2)中私有随机数的产生方法包括随机数发生器、物理不可克隆函数或商用加密算法。
16.进一步地,步骤3)中为分支预测器的索引进行随机化操作的具体步骤包括:
17.每个安全域的程序在使用分支指令地址索引分支预测表时,首先获取私有随机数并作为索引随机数,然后使用索引随机数对原索引映射关系进行随机化,生成新的索引值来索引低层级分支预测表。
18.进一步地,使用索引随机数将原索引映射关系进行随机化的方法包括:
19.使用索引随机数和原索引进行哈希操作或者异或操作得到新的索引值;或者
20.将索引随机数作为密钥,采用加密算法对原索引值进行加密,得到加密后的索引值。
21.进一步地,步骤3)中为分支预测器的待更新内容进行随机化操作的具体步骤包括:
22.将安全域的私有随机数作为内容随机数,将该内容随机数与待更新内容进行随机化操作,得到随机后的内容,将随机后的内容写入到低层级分支预测表中;
23.预测时,从低层级分支预测表中读取随机后的内容,并使用相同的内容随机数进行逆向的随机化操作,获得还原后的原始内容。
24.进一步地,步骤3)中不同安全域的程序共享低层级分支预测表。
25.进一步地,将内容随机数与待更新内容进行随机化操作的方法包括:
26.使用内容随机数和待更新内容进行哈希操作或异或操作得到随机后的内容;或者
27.将内容随机数作为密钥,采用加密算法对原索引进行加密,得到随机后的内容。
28.进一步地,步骤4)中根据不同安全域将高层级分支预测表进行物理隔离的方法包括:
29.保持高层级分支预测表大小不变,根据不同安全域将高层级分支预测表分割为多个子表,为每个安全域分配一个专用的子表;和/或
30.将高层级分支预测表增大,根据不同安全域将高层级分支预测表分割为多个子表,为每个安全域分配一个专用的子表;和/或
31.根据不同安全域,为每个安全域直接分配一个单独的高层级分支预测表。
32.进一步地,步骤4)中根据不同程序所占用的硬件线程识别号,从分配的高层级分
支预测表中选择出分支指令对应的预测结果。
33.进一步地,当有新的安全域出现时或者安全域发生变化时,为该安全域动态产生一个新的私有随机数。
34.一种基于层次化结构的分支预测器安全增强系统,包括存储器和处理器,在该存储器上存储有计算机程序,该处理器执行该程序时实现上述方法的步骤。
35.与现有技术相比,本发明的技术方案取得的有益效果如下:
36.本发明能够依据不同层级分支预测表的特点应用对应的不同类型的安全机制,实现不同安全机制间的优势互补和安全增强,在阻断分支预测器侧信道信息泄露渠道的同时实现了安全、成本、性能之间的良好平衡。具体来讲,针对分支预测器不同层级预测表分别应用物理隔离机制和随机化机制,高层级分支预测表采用物理隔离机制,依据安全域将分支预测器物理隔离开,限制每个安全域能够访问的分支预测器资源的范围;低层级分支预测表采用随机化机制,依据安全域在随机化机制中使用安全域私有随机数。通过不同安全机制的结合可以获得三个方面的优势:一是高层级分支预测表项数少,物理隔离带来的硬件成本开销较小;二是低层级分支预测表项数多,应用随机化机制,安全系数高;三是高层级分支预测表的物理隔离可以进一步提高低层级分支预测表随机化机制的安全强度。本发明不限于应用于某一种具体的分支预测器,而是可应用于基于查表方式存储历史预测信息的多表、多层次结构的分支预测器,如gshare、tournament、tage等类型分支跳转方向预测器、三级分支跳转目标地址预测器等。
附图说明
37.图1是实施例1的三级分支跳转目标地址预测器的应用示例图。
38.图2是实施例2的tage-sc-l分支跳转方向预测器的应用示例图。
具体实施方式
39.为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明。
40.本发明提出的技术方案主要包括三个部分:1)程序安全域的划分,通过划分安全域,确定程序间隔离的方式;2)分支预测器的高层级分支预测表物理备份,实现处理器核上运行的程序使用彼此物理隔离的分支预测器的高层级分支预测表;3)分支预测器的低层级分支预测表采用随机化机制,实现分支预测表索引和内容的随机化。
41.本发明提出的技术方案主要包含以下内容:
42.一)安全域划分
43.本发明需要将不同的程序划分成不同的安全域,安全域的划分方式根据具体的保护场景而定,比如为了防止进程间恶意训练或者感知分支预测信息,可以采用线程或者进程的粒度划分,每个线程或者进程为一个安全域。同样地如果为了防止不同安全级的程序恶意训练或者感知分支预测器信息,也可以按照安全级的不同进行划分。
44.二)安全域私有随机数的生成
45.本发明通过随机化分支预测器内容的方法来提供安全域间的安全隔离,并不依赖于安全域具体的划分方法,可以为任何安全域划分形式提供安全增强。具体地,通过为每个
安全域动态地产生私有随机数保存在私有随机数表中,不同安全域采用各自的私有随机数表执行随机化变换操作,并且由于不同安全域的私有随机数是随机的、不相关,因此不同安全域间无法相互还原分支历史信息。其中,私有随机数的产生可以利用现有的各种软件或者硬件的随机数生成方法,如随机数发生器、物理不可克隆函数或者商用加密算法等等。
46.三)低层级分支预测表的分支预测器索引随机化方法
47.每个安全域的程序在使用分支指令地址索引分支预测表时,该分支指令首先访问私有随机数表(此时又称为索引随机数表),从表中读出私有随机数并作为索引随机数。然后将该索引随机数作用于原有固定的映射关系中,比如使用该索引随机数和原索引进行简单的哈希(hash)操作或者异或操作,得到新的索引值来索引低层级分支预测表;或者将该索引随机数作为密钥,采用某种加密算法对原索引值进行加密,使用加密后的索引值来索引低层级分支预测表。
48.四)低层级分支预测表的分支预测器内容随机化方法
49.分支预测器发生更新时,例如分支指令发生更新时,将私有随机数作为内容随机数,将待更新内容首先通过内容随机数作用之后,再保存到低层级分支预测表中。比如使用内容随机数和待更新内容进行简单的哈希操作或异或操作得到随机后内容;或者将该内容随机数作为密钥,采用某种加密算法对原索引值进行加密,然后再将随机后的内容写入到低层级分支预测表中。在预测阶段,从分支预测器中读出随机后的内容,然后使用相同的内容随机数,经过同更新时随机化的逆操作将原始内容还原回来,比如将读出的随机后的内容和内容随机数异或之后,得到原始内容。
50.四)高层级分支预测表的物理隔离方法
51.现代分支预测器通常采用层次化的结构,分支预测器的高层级分支预测表往往项数较少,如16项或者512项。本发明对高层级分支预测表采用物理隔离的方法,将高层级分支预测表根据安全域分割成多个子表,为同时运行的每个程序提供各自的子表。具体的物理隔离方法包括三种:保持高层级分支预测表大小不变,根据不同安全域将高层级分支预测表分割为多个子表,为每个安全域分配一个专用的子表;将高层级分支预测表增大,然后再根据不同安全域将高层级分支预测表分割为多个子表,为每个安全域分配一个专用的子表;根据不同安全域,为每个安全域直接分配一个单独的高层级分支预测表。上述三种方法可以根据实际需求任意组合。例如,每个硬件线程分配单独高层级分支预测表(即子表或新分配的单独的高层级分支预测表),每个硬件线程上(即每个安全域)运行的程序只能访问该硬件线程的高层级分支预测表。低层级容量更大的分支预测表采用索引和内容随机化的方法做保护,为不同硬件线程共享。
52.高层级分支预测表还可采用刷新机制,刷新机制是指将保存在高层级分支预测器表中的分支指令历史执行信息清除掉,清除的方法包括:硬件机制置0或者置1,或者基于软件按将历史信息覆盖为随机数值。
53.五)索引随机数表的查询和更新
54.当有新的安全域出现时,本发明将动态地分配一个私有随机数给该安全域。鉴于不同安全防护场景的要求不一样,安全域的私有随机数的更新策略可以灵活多变,比如为了较高的安全性,当安全域发生切换时即进行私有随机数的更换。
55.当程序发生安全域变化时,例如程序上下文切换或者特权级转换时,启动安全域
私有随机数产生,并将产生的私有随机数作为索引随机数并写入到索引随机数表(即私有随机数表)中。每次发生分支指令访问分支预测表前,首先使用分支指令地址或者分支指令地址的变换访问索引随机数表,从索引随机数表中读出一个索引随机数值。每个分支指令的索引随机数的位宽长度可以为用于查询分支预测其表的位宽。
56.下面列举两个具体的实施例:
57.当前分支预测器的种类很多,各种分支预测器的核心模块主要为分支跳转目标地址表和分支方向预测表。本发明的技术方案针对使用分支历史执行信息进行预测的情景都可以应用,下文将以三级分支跳转目标地址表和tage-sc-l分支方向预测表为例来具体介绍该方法的具体应用。
58.实施例1:
59.图1为本发明的技术方案应用在三级分支跳转目标地址预测器的示意图,主要工作过程包含以下几个步骤:
60.1)当分支指令地址访问索引随机数表时,得到其对应的索引随机数,同时分支指令地址通过哈希函数得到分支预测表的原索引;
61.2)索引随机数和分支预测表的原索引执行异或操作得到随机后的索引,并使用该索引访问l2 btb分支跳转目标地址预测表,其中l2 btb是低层级分支预测表;
62.3)依据不同程序所占用的硬件线程识别号,从l0btb和l1btb的预测结果中,选择出该分支指令对应的预测结果,不同程序共享l2btb分支预测表;
63.4)分支指令产生更新时,每个硬线程的程序仅能更新自己的l0btb和l1btb跳转目标地址预测表,l1btb中被替换出的预测表项将更新到l2btb中;
64.5)当安全域发生切换或者分支预测器访问次数达到阈值时,触发索引随机数表和内容随机数的更新,由随机数生成器向索引随机数表连续的写入随机数,直到将该表完全更新。
65.实施例2:
66.图2为本发明的技术方案应用在tage-sc-l分支跳转方向预测器的示意图,主要工作过程包含以下几个步骤:
67.1)当分支指令的地址访问索引随机数表得到其对应的索引随机数,同时分支指令的地址通过哈希函数得到分支预测表的原索引;
68.2)索引随机数和分支预测表的原索引执行异或操作得到随机后的索引,并使用该索引访问tage预测器、循环预测器和统计矫正器等,其中tage预测器、循环预测器和统计矫正器是低层级分支预测表;
69.3)依据不同程序所占用的硬件线程识别号,从基础预测器的预测结果中,选择出该分支指令对应的预测结果,不同安全域共享相同的tage分支预测表;
70.4)分支指令产生更新时,每个硬线程的程序仅能更新各自的基础预测器,在更新到其他预测表时需要使用不同安全域的索引随机数和内容随机数;
71.5)当安全域发生切换或者分支预测器访问次数达到阈值时,触发索引随机数表和内容随机数的更新,由随机数生成器向索引随机数表连续的写入随机数,直到将将该表完全更新。
72.上述中的图中1)、2)、3)、5)步骤体现了本发明的核心点。安全域切换时,通过随机
数生成器向索引随机数表连续写入索引随机数(即私有随机数),刷新索引随机数表;查询分支历史信息时,从索引随机数表中读出索引随机数,使用该索引随机数和原分支预测器索引异或后,作为随机化的新索引查询分支预测其表;不同处理器硬线程使用各自的高层级分支预测表做分支指令的快速预测,随机化的低层级分支预测表进一步提高预测准确率。
73.虽然本发明已以实施例公开如上,然其并非用以限定本发明,本领域的普通技术人员对本发明的技术方案进行的适当修改或者等同替换,均应涵盖于本发明的保护范围内,本发明的保护范围以权利要求所限定者为准。
技术特征:
1.一种基于层次化结构的分支预测器安全增强方法,其特征在于,包括以下步骤:1)根据具体的保护场景将不同程序划分为不同安全域;2)为每个安全域动态产生各自的私有随机数;3)对于分支预测器的低层级分支预测表,使用安全域的私有随机数,为分支预测器的索引进行随机化操作以及/或者为分支预测器的待更新内容进行随机化操作;4)对于分支预测器的高层级分支预测表,根据不同安全域将高层级分支预测表进行物理隔离,为每个安全域隔离出专用的高层级分支预测表。2.如权利要求1所述的方法,其特征在于,步骤1)中划分安全域的方法包括:为了防止进程间恶意训练或者感知分支预测信息,采用线程或进程的粒度划分安全域,每个线程或进程为一个安全域;或者为了防止不同安全级的程序恶意训练或者感知分支预测器信息,按照安全级的不同划分安全域。3.如权利要求1所述的方法,其特征在于,步骤2)中当有新的安全域出现时或者安全域发生变化时,为该安全域动态产生一个新的私有随机数;私有随机数的产生方法包括随机数发生器、物理不可克隆函数或商用加密算法。4.如权利要求1所述的方法,其特征在于,步骤3)中为分支预测器的索引进行随机化操作的具体步骤包括:每个安全域的程序在使用分支指令地址索引分支预测表时,首先获取私有随机数并作为索引随机数,然后使用索引随机数对原索引映射关系进行随机化,生成新的索引值来索引低层级分支预测表。5.如权利要求4所述的方法,其特征在于,使用索引随机数将原索引映射关系进行随机化的方法包括:使用索引随机数和原索引进行哈希操作或者异或操作得到新的索引值;或者将索引随机数作为密钥,采用加密算法对原索引值进行加密,得到加密后的索引值。6.如权利要求1所述的方法,其特征在于,步骤3)中为分支预测器的待更新内容进行随机化操作的具体步骤包括:将安全域的私有随机数作为内容随机数,将该内容随机数与待更新内容进行随机化操作,得到随机后的内容,将随机后的内容写入到低层级分支预测表中;预测时,从低层级分支预测表中读取随机后的内容,并使用相同的内容随机数进行逆向的随机化操作,获得还原后的原始内容。7.如权利要求6所述的方法,其特征在于,将内容随机数与待更新内容进行随机化操作的方法包括:使用内容随机数和待更新内容进行哈希操作或异或操作得到随机后的内容;或者将内容随机数作为密钥,采用加密算法对原索引进行加密,得到随机后的内容。8.如权利要求1所述的方法,其特征在于,步骤4)中根据不同安全域将高层级分支预测表进行物理隔离的方法包括:保持高层级分支预测表大小不变,根据不同安全域将高层级分支预测表分割为多个子表,为每个安全域分配一个专用的子表;和/或将高层级分支预测表增大,根据不同安全域将高层级分支预测表分割为多个子表,为
每个安全域分配一个专用的子表;和/或根据不同安全域,为每个安全域直接分配一个单独的高层级分支预测表。9.如权利要求1所述的方法,其特征在于,步骤4)中根据不同程序所占用的硬件线程识别号,从分配的高层级分支预测表中选择出分支指令对应的预测结果。10.一种基于层次化结构的分支预测器安全增强系统,包括存储器和处理器,在该存储器上存储有计算机程序,该处理器执行该程序时实现权利要求1-9任一项所述方法的步骤。
技术总结
本发明公开一种基于层次化结构的分支预测器安全增强方法及系统,属于处理器体系结构领域,将不同程序或线程划分为不同安全域;高层级分支预测表应用物理隔离的安全机制,依据安全域将分支预测器物理隔离开,限制每个安全域能够访问的分支预测器资源的范围;低层级分支预测表应用随机化机制,依据安全域在随机化机制中使用安全域私有随机数。本发明通过在不同层级的分支预测表应用不同类型的安全机制,充分发挥不同类型安全机制的优势,从而实现安全机制间的优势互补。全机制间的优势互补。全机制间的优势互补。
技术研发人员:侯锐 孟丹 赵路坦 李沛南
受保护的技术使用者:中国科学院信息工程研究所
技术研发日:2023.05.08
技术公布日:2023/9/5
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/