时间:2024-07-28
杨 珍,唐 明,程金花,张 尧
1.武汉大学 国家网络安全学院,武汉 430072
2.北京语言大学,北京 100191
侧信道攻击通过密码算法在物理设备上的执行信息来获取密钥,成为当前威胁密码算法安全的重要因素.这些执行信息包括运行时间[1]、cache行为[2]、能耗[3]以及电磁[4]等等.其中,时间侧信道可以远程观测和测量,是当前互联网环境下主要的侧信道威胁.
研究者在对称和非对称密码算法的具体实现中,都发现了时间攻击的可行性,例如RSA[1,5-8]以及AES[9].这些攻击利用算法实现本身在设计上的缺陷,通过算法运行时间和秘密信息的依赖关系破解密钥.
为了保证密码算法的安全性,许多针对时间侧信道攻击的防护方案被提出.这些方案主要从两个方面入手,一是通过对输入进行盲化(blinding),从而抵抗时间攻击[1,5];二是通过对分支结构进行调整,以产生恒定时间(constant-time)的密码算法实现[10].
盲化方案主要打破攻击者时间测量值与密钥之间的相关性,例如在RSA实现中通过在解密前对每个密文进行随机化[5],以抵抗基于密文与运行时间关联性的侧信道攻击.然而,尚无盲化相关的侧信道安全的证明,因此无法保证对所有可能的时间攻击的有效性.在测量数据足够大的时候,盲化实现甚至可能泄漏全部密钥[11].相比而言,恒定时间的防护方案对所有的时间攻击均具有适用性.不少研究者提出通过对源程序进行转换以产生constant-time的实现,来消除时间泄漏.Molnar等人使用位掩码和按位逻辑运算符将分支条件直接编码到运算中,以产生针对侧信道道攻击可证明安全的程序[12].Barthe等人使用事务机制进行程序转换,以防止面向对象顺序程序中的时间泄漏[13].Agat提出cross-copying的程序转换方案,并且在理论层面上证明了面向时间泄漏的安全性[14].Mantel等人提出了一种和cross-copying类似的方案,通过unification计算程序的转换,来生成安全的程序实现[15].
为了评估这些安全方案的有效性,Kastner等人基于信息论的指标进行了分析[16],表明constanttime防护方案能够有效抵抗时间泄漏,但是此研究只针对硬件设计.Agat在java实现上评估了不同时间防护方案的安全性和性能表现[14],但是没有考虑到基于处理器优化策略的攻击对安全性的影响.当算法实现运行在计算机处理器上时,处理器分支预测机制为了提高执行效率对分支结构进行了优化,将引入新的时间攻击点[17].Bulygin[18]展示了一个利用分支预测的RSB(return stack buffer)来攻击蒙哥马利模乘的案例.Spectre[19]攻击与Meltdown[20]攻击利用了处理器设计中的分支预测和乱序执行的特性非法获取信息.除此之外,Evtyushkin等人[21]利用分支预测BTB(branch target buffer)冲突,绕过ASLR找到内核级和用户级虚拟地址空间布局.Acıiçmez等人对使用分支预测器和SMT(simultaneous multithreading)处理器进行了攻击,获取处理器上正在运算的密钥[22].Acıiçmez等人表明即使是添加了防护的程序,在分支预测机制下仍会泄漏敏感信息[23].
因此,在算法层面上被理论证明安全的防护方案,受处理器架构设计的影响,在实际应用场景下是否还能抵御时间攻击,是需要去度量和评估的问题.本文通过对分支预测结构进行模型化分析,提出了分支预测机制下的泄漏检测和评估方案.通过对不同时间防护方案在分支预测下的有效性进行研究,我们刻画了分支预测时间泄漏特征,为复杂处理器环境下的时间防护方案设计提供了参考.本文主要贡献如下:
(1)本文对时间防护方案在分支预测机制下的有效性进行了理论研究,论证了constant-time的防护方案在分支预测机制下的时间泄漏问题;
(2)本文给出时间防护方案在分支预测时间攻击下的泄漏评估框架.基于本文的评估方法,我们从泄漏评估和攻击评估两方面,对包括cross-copying方案、transactional branching方案、unification方案以及conditional assignment方案在内的时间防护实现在分支预测机制下的有效性进行了评估.
(3)本文给出时间防护方案分支预测泄漏的具体度量方法.从泄漏量评估的角度,我们提出了基于Welcht检验的时间泄漏量化方法.从泄漏模型刻画的角度,我们基于分支泄漏的理论模型,提出了基于分支预测状态注入的时间攻击方法.
本文的组织结构如下:第2节对分支预测原理和时间攻击和防护进行简单介绍;第3节详细分析时间防护策略在面对分支预测机制可能存在的泄漏问题;第4节提出了分支预测时间泄漏的评估方案,并基于Welcht检验和分支预测攻击提出了泄漏定量评估;第5节基于开源处理器的实验平台对方案有效性进行了实验评估;第6节对本文的工作进行了总结.
在RSA[24]中,接收者通过计算M=C d(modN)来获取密文C对应的明文M.其中d是RSA秘密指数,N是公开的模数.对于给定的底数c和幂指数e,right-to-left binary算法通过以下的一个简单模幂算法(算法1)计算R=c e(modn),其中ω是e的二进制位长度.
算法1 RSA模幂算法(right-to-left binary算法)Input:c,e,n Output:r=c e(mod n)1 r=1;2 for i=0 toω−1 do 4 3 if(bit i of e)is 1 then r=r×c(mod n);5 end 6 r=r2(mod n);7 end
在RSA的模幂算法中,执行时间取决于第3行的条件分支,当e的第i位取值为1时,将多进行一次模乘操作.当攻击者从时间侧信道上对算法的执行行为进行观测时,分支的选择泄漏了秘密指数e的值.为了保证算法的安全性,研究者提出程序转换方案[12-15],通过对程序中的条件分支进行修改来弥补不同分支方向时间上的不平衡性.
(1)Cross-copying方案
Cross-copying(CC)方案的主要思想是通过填充关键条件分支,使得条件分支的两个方向运行时间相等[14].分支的填充使用模拟程序的伪指令序列,这些模拟语句具有和另外一个分支相同的运行行为,但是不会更改与原始程序相关的变量.例如,借助特殊的声明SkipAsn×e,这个申明模拟了x:=e语句的执行过程,具有相同的执行时间,但是不修改x的值.CC方案对关键分支中每一个执行过程在另一个分支方向上都添加对应SkipAsn申明.
(2)Transactional branching方案
Transactional branching(TB)方案将关键条件分支的每个方向包装在事务执行链的不同位置中,每个分支方向的事务执行顺序均相同[13].这个方案和cross-copying方案相同的地方在于,都在不同分支方向上添加相同的运行行为.但是TB在事务中通过中止额外添加的程序语句的提交,来避免对原始程序变量的修改.例如,使用BeginT开始一个新事务,使用AbortT中止事务来取消BeginT以来所做的所有修改.同时,CommitT提交事务使BeginT以来所做的所有修改生效.原始语句包装在BeginT-CommitT中,而添加的额外语句被包装在BeginT-AbortT中.
(3)Unification方案
Unification(U)方案[15]和CC方案类似,但是U方案可以做到更细的粒度.与CC方案中直接将不同分支的模拟语句插入末尾不同,unification方案使用单位时间的伪语句,可以插入分支的任意位置.unification算法用于确定伪语句应该插入的位置.
(4)Conditional assignment方案
Conditional assignment(CA)方案使用编码删除分支,通过位掩码和按位逻辑运算符将分支条件在赋值中体现[12].这样分支被一起执行,从而消除分支之间的时间差异.例如,使用Mask(b)函数编码分支条件b的布尔值,其中Mask(true)=0,Mask(false)=2l−1,l是原始程序赋值变量的二进制位长度.如果一个条件分支,当分支条件b为true时,为x赋值为e t;当分支条件b为false时,为x赋值为e f.程序转换后,这一分支通过(Mask(b)&e t)|(~Mask(b)&e f)进行计算.
在计算机架构中,分支预测器[25]是指一块用来猜测一个分支结构(例如if-else语句)分支方向的数字电路,这一猜测在准确知道分支结果之前完成.
分支预测机制的目的是提高处理器的性能,如果没有分支预测,则处理器将必须等到条件跳转指令通过执行阶段得出分支目标后,下一条指令才能进入流水线中的提取阶段.因此,处理器引入分支预测机制,通过尝试猜测最有可能发生的跳转来避免这种时间浪费.然后,分支预测器提前获取最可能的分支并进行推测性执行.这种分支预测和推测执行来提高效率的方法也带来了隐患,例如spectre攻击就利用此来诱导受害者推测性地执行在正常情况下不会执行的操作,并通过侧信道将受害者的机密信息泄漏给攻击者.如果预测错误,则将丢弃推测执行的指令,并且流水线将回到分支处重新开始取指,从而导致延迟.我们把分支预测错误导致的重新取指时间记为分支误预测时延.
在分支预测错误的情况下,分支误预测时延等于从取指阶段到执行阶段的流水线中的阶段数,以典型的MIPS五级流水线为例[26],误预测时延大概为两个流水阶段,如图1所示(左图:预测错误;右图:预测正确).现代微处理器往往具有很长的流水线,更长的流水线带来更强的分支错误惩罚,误预测时延甚至长达10到20个时钟周期.
图1 五级流水分支预测正确/错误的流水线示例Figure 1 Example of five-stage pipeline with correct/wrong branch prediction
本文使用的符号如表1所示.
表1 符号定义Table 1 Symbol definition
在RSA模幂算法的典型实现中(如算法1),关键条件分支通过时间侧信道,泄漏了秘密指数的取值.我们的算法通过C语言进行实现,RSA模幂的防护算法根据2.2节中的方案进行实现.
(1)CC方案在RSA中的实现
对于CC方案,我们通过交叉复制不同分支的语句,使用交叉复制的模拟语句使两分支进行相同的操作.在我们的C实现中,我们对SkipAsn×e这样的声明,申请一个临时变量x′,通过x′接受模拟语句产生的中间结果.我们使用x′:=e实现SkipAsn×e声明,分配给临时变量x′不会影响程序原始字段中的值,并且产生和原始程序相同的计时行为.那么算法1的第3-5行转换为:
?if(bit i of e)is 1 then r=r×c(mod n);end else r′=r×c(mod n);//cross-copying end
(2)TB方案在RSA中的实现
对于TB方案,我们使用x′:=x来实现一个BeginT事务,并且置AbortT事务为空(不做任何修改的提交),同时使用x′:=x来实现一个CommitT事务.分支每个方向上的事务链均为:BeginT-AbortTBeginT-CommitT.在额外添加的语句中,因为包装在BeginT-AbortT中的额外语句不会对修改进行提交,对临时变量x′的修改不会作用到x上.那么算法1的第3-5行转换为:
if(bit i of e)is 1 then r′=r; //BeginT//AbortT r′=r; //BeginT r′=r×c(mod n);r=r′; //CommitT end else r′=r; //BeginT r′=r×c(mod n);//AbortT r′=r; //BeginT r=r′; //CommitT end
(3)U方案在RSA中的实现
对于U方案,由于算法1的else分支缺失,所以添加到else分支上的操作等于if分支,可以使用和CC方案中类似的模拟语句实现相同的功能.模拟语句可以实现相同的计时行为,并且不会对原始程序状态产生影响,能对U方案进行正确的实现.在其他场景下,U方案可能比CC方案带来更少的模拟语句.在RSA模幂算法(算法1)的场景下,经CC方案和U方案转换后的程序一致.
(4)CA方案在RSA中的实现
对于CA方案,条件分支转换成逻辑和布尔运算(Mask(b)&e t)|(~Mask(b)&e f),在我们的C实现中,我们将Mask(b)定义为−b.上述条件分支可以表示为:((−b)&e t)|(~(−b)&e f).布尔型的变量在运算时会自动转换为整型.因此,分支功能被正确实现的同时,避免了分支时间泄漏,CA转换方案被正确实现.那么,算法1的第3-5行转换为:
r=((−((bit i of e)is 1))&(r×c(mod n)))|(~(−((bit i of e)is 1))&r)
对于典型的if(A)-else分支,其执行流选择取决于条件A的布尔值.由于分支预测机制的存在,当程序运行到分支节点时,处理器会根据预测路径,提前执行预测指令,而不等待执行阶段计算的A的布尔值的结果.一旦实际A的结果与预测路径不匹配,需要进行流水线刷洗.处理器扔掉预取的指令,重新执行正确路径.这样A的结果就决定了是否会产生分支预测错误导致的时间浪费,即误预测时延.即使分支本身不存在对A的泄漏,我们根据时延差异仍然可以对A的运算结果进行判断.
图2 if(A)-else执行流,图中虚线表示预测的执行分支Figure 2 if(A)-else execution flow,dotted line represents predicted branch
对于if(A)-else分支的执行过程,我们用符号tdelay来表示单次分支误预测时延,tef_Alg表示程序有效操作相关的执行时间.那么,对包含ω次分支的程序执行时间可以表示为:
其中,t为目标程序的实际运行时间,brj为第j次分支结果,即第j次分支预测成功与否.brj的取值是与分支条件和分支预测相关的函数.
其中,pbj是第j次分支的预测器分支路径选择,b j是第j次条件分支路径选择,b j与条件判断结果相关.由公式(1)、(2),程序的计时行为不仅仅与分支预测行为(pbj)相关,也跟程序中条件分支方向选择的(b j)相关.
由上文的分析可知,constant-time时间防护方案在分支预测机制的作用下,仍可能存在时间泄漏.对于RSA模幂算法的防护实现而言,CC方案、TB方案和U方案由于保留了条件分支,密钥e的值与分支结果的依赖关系仍然存在.这些防护方案虽然填补了算法层面的时间差异,构造了固定时间的算法实现.但是,由于分支误预测时延的影响,程序的实际运行时间仍依赖于敏感的分支数据.由于不同防护方案对程序进行了不同的修改和添加,分支误预测带来的影响可能存在差异.而CA方案消除了分支语句,不再受分支预测机制的影响.但是CA方案增加了逻辑和布尔运算,并且同时执行所有分支的内容,带来更大的时间消耗.
在时间侧信道攻击中,密码算法实现的防护方案多通过对源程序进行转换以产生constant-time的实现,来消除时间泄漏.然而,防护方案安全性评估往往只考虑算法层面上的理论安全性,而忽略其处理器运行环境下各种优化策略对程序执行流的修改.前文的分析表明,处理器中的分支预测机制影响条件分支的计时行为.特别地,对于constant-time程序而言,这一影响将更为突显.因此,本文将重点讨论面向分支预测机制下的受防护密码算法实现的时间侧信道安全性.
在分支预测时间攻击中,攻击者具有如下两个合理的能力假设:攻击者可以控制受害者设备的分支预测部件的状态.在同步多线程系统中,攻击者程序可以与受害者程序同步运行,所以此假设是合理的.攻击者可以控制目标程序的输入并获取受害者程序的计时信息.当攻击者可以控制或远程控制受害者的计算机时,此假设是完全可以实现的.基于这些假设,攻击者随机构造受害者程序的密文输入P={p0,p1,···,p n−1}.受害者的程序运行在带有分支预测机制的平台下,整个加密过程中的时间侧信道测量值用T={t0,t1,···,t n−1}进行表示.程序的计时行为除了依赖于程序的操作本身以外,考虑到测量噪声的影响,我们假设测量噪声满足正态分布.那么T=TAlg+Tnoise,其中TAlg是程序的运行时间,Tnoise是噪声对测量时间的影响.
为了分析分支预测机制对时间侧信道防护方案的影响,泄漏评估框架对分支预测时间特征进行刻画,评估分支预测机制对防护方案的有效性的影响.泄漏评估主要从两个方面入手,一是量化分支预测时间泄漏,即有多少泄漏是通过分支预测引起的,为分支预测时间攻击提供侧信道泄漏量度量;二是对泄漏模型的刻画评估,即找到时间泄漏和运算数据或运算操作之间的关联性,通过泄漏模型的刻画获取密钥的相关猜测,为分支预测时间攻击提供侧信道泄漏模型度量.
图3 时间侧信道面向分支预测泄漏评估框架Figure 3 Timing leakage assessment framework for branch prediction
我们使用统计检验对密码算法实现在分支预测下的时间泄漏进行检测和量化.在我们的攻击场景下,目标算法为添加时间防护的密码算法,在算法层面不存在时间泄漏.我们对分支预测状态进行控制,测量分支选择数据e的不同取值下的时间样本.
统计检验提供一个置信度来接受(或拒绝)原假设.在考虑两组样本ϱ0、ϱ1的情况下,我们设原假设为两组样本均取自同一总体,即两组不可区分.在两组样本的样本数和方差均不相等时,可以使用Welcht检验.如果检验统计量遵循Student’st分布,Welcht检验通过比较两个总体的均值来接受(或拒绝)原假设.样本ϱ0(ϱ1)的样本量、样本方差和样本均值分别为:n0(n1)、µ0(µ1)和s02(s12).原假设和备择假设分别为:
H0:µ0=µ1,H1:µ0̸=µ1
则Welcht检验的统计量t以及自由度v为:
基于双侧Welcht检验,通过Student’st概率密度函数估算接受零假设的置信度为:
其中,Γ(.)表示伽玛函数.我们根据更小的p值(或者更大的t值)来拒绝原假设,即这两组样本来自不同的总体,存在明显的可区分度.值得注意的是,在利用Welcht检验进行泄漏检测时,通常会忽略自由度.
泄漏检测的目的是衡量有多少有用信息可用作实施成功的侧信道攻击,因此为了进行准确的泄漏评估,我们贴合泄漏特征来构造检测集合.在分支预测的场景下,分支数据与运行时间存在相关关系,程序可能通过时间侧信道泄漏敏感的分支选择数据.在本文的目标算法下,分支选择与RSA密钥值相关.本文构造以下两组数据来进行泄漏的检测:进行固定分支选择的程序运行时间和进行随机分支选择的程序运行时间.
基于TVLA[27,28]的检测流程,本文对分支预测的时间泄漏检测分为以下四个步骤,分别是数据获取阶段、数据处理阶段、构造检验数据集合阶段以及检验和分析阶段.在数据获取阶段,我们在分支预测状态的控制下,对不同密钥下的运行时间数据进行采集.在数据处理阶段,目标程序受处理器其他进程的影响,可能导致其运行时间比正常运行时间大很多,我们对这些异常数据进行剔除.在构造检验数据集合阶段,我们以密钥值对数据集合进行划分,选取一个固定密钥,其对应的所有时间数据形成数据集合ϱ0,其他随机密钥对应的数据形成数据集合ϱ1.在检验和分析阶段,我们对获取到的两组数据集合,应用Welcht检验来评估目标算法运行过程中的信息泄漏.我们使用统计量t=4.5作为检测阈值,当统计量t大于4.5时,我们认为存在明显泄漏.
反之,如果猜测e k是错误的,有:
图4 错误猜测的时延扩散效应Figure 4 Delay spreading effect of incorrect guessing
算法2基于分支预测状态注入的时间侧信道攻击Input:o Output:e 1 for k=0 toω−1 do 3 o branch_prediction=o j;2 for j=0 to m−1 do j ,t ek=0j ;5 end 6 ΔT ek=0=T−T ek=0;7 ΔT ek=1=T−T ek=1;8 if Var(ΔT ek=0)>Var(ΔT ek=1)then 4 Get t j,t ek=1 e k=1;10 end 11 if Var(ΔT ek=0) 实验硬件平台为Xilinx ZedBoard[29],搭载基于RISCV-Rocket[30]开源处理器的实现,其基于开源的指令集架构RISC-V[31],采用五级流水结构,是单发射顺序执行的64位处理器.我们的防护原始算法为RSA模幂算法(算法1)的C实现.其中,密钥位长度为128位.我们使用Cycle计数器来测量程序的执行时间. 我们根据前文的分析,对RSA模幂算法的防护方案面向分支预测时间攻击的安全性进行实验评估.为了更好的评估防护方案的有效性,应综合考虑性能和安全性,因此我们首先对不同防护方案对原始算法的性能影响进行分析.基于分支预测的泄漏评估框架,我们对不同防护方案实现的信息泄漏量进行分析,并在分支预测攻击下对方案的有效性进行实验评估. (1)防护方案的时间代价分析 基于RSA模幂算法实现,我们对本文中constant-time时间防护方案的计算时间开销进行了统计.如表2所示,所有的防护方案均带来性能的下降,增加了运行时间开销.其中,CA方案的防护代价最高,超过了原始设计时间消耗的1.6倍.CC方案和U方案在RSA模幂算法的防护下具有相同的时间代价,均带来额外17%的时间消耗.TB方案的时间消耗介于CC方案和CA方案之间,相比于原始设计约造成1.5倍的性能损耗. 表2 不同算法实现的性能影响Table 2 Performance impact of different algorithms (2)防护方案在分支预测下的信息泄漏 我们使用Welcht检验对不同RSA防护在分支预测下的泄漏量进行评估.在本文的目标对象下,我们考虑分支结构的不同条件取值对运行时间的影响.如图5所示,CA防护的实现在不考虑分支预测的影响时,仍存在时间泄漏.这是由布尔和逻辑计算的运行优化引起的.从3.2节的理论分析来讲,CA方案避免了分支预测引起的时间泄漏.但是,由于其算法上仍存在的泄漏,在此基础上进行分支预测下的泄漏分析是没有必要的.相比而言,CC方案、TB方案以及U方案的RSA防护实现在不受分支预测机制影响的情况下,均不存在时间泄漏.而在分支预测的作用下,此三种方案均出现不同程度的时间泄漏.其中CC方案和U方案的泄漏量远高于TB方案,约为其的3倍. 图5 不同防护方案的时间泄漏量Figure 5 Timing leakage of different defense schemes 我们对CC方案、TB方案以及U方案受分支预测机制的影响进行实验分析.图6展示了密钥e的不同取值下,constant-time程序的运行时间差异. 图6 分支预测机制下的constant-time程序运行时间差异Figure 6 Runtime difference of constant-time program under branch prediction 在分支预测机制下,128位密钥e的每一位都决定了一次分支选择过程.当e的不同位之间的分支选择具有明显倾向性时,属于可预测的分支数据.对于可预测分支数据和随机分支数据,我们各进行连续的1000次时间数据采集.从图中可以看出,可预测分支数据带来的分支误预测更少,对应的程序运行时间更短.在多次的运行过程中,分支预测部件根据分支选择结果进行预测状态的调整,不同防护方案均出现两个峰值.但是,可预测分支数据的运行时间在不同预测状态下均远小于随机分支数据的运行时间,程序执行时间明显依赖于敏感的分支数据.因此,时间防护方案在分支预测机制的作用下,仍然存在明显的时间泄漏. (3)防护方案在分支预测攻击下的脆弱性 根据上节的泄漏量分析,我们基于分支预测时间攻击,对不同防护方案的有效性进行分析.攻击结果如图7所示,由于CA方案本身的时间泄漏,我们不对其在分支预测下的泄漏进行分析.在N=5000的数据量下,攻击者均能对其他三种不同防护方案的前20位密钥进行正确的猜测.和泄漏量的实验结果对比,U方案和CC方案相比于TB方案有更明显的正确猜测区分.与TB方案在分支预测下的泄漏量更小相对应地,TB方案的正确密钥猜测和错误密钥猜测的方差统计值之间的距离也更小,约为U方案和CC方案的0.5倍. 图7 正确猜测与错误猜测的差距Figure 7 Distance between correct guess and wrong guess 我们对不同防护方案的性能影响、泄漏量以及面向分支预测攻击的有效性进行综合分析.不同防护方案均存在不同程度的时间泄漏,其中CA方案甚至面临算法实现引入的时间泄漏.同时,即使是本身不存在泄漏的CC方案、TB方案和U方案,在分支预测机制的影响下,均出现了新的时间泄漏.TB方案实现相比于其它两个方案有更高的性能损耗,但是在分支预测机制下的时间泄漏量更少,对于分支预测攻击有更好的抵御效果. 本文讨论研究了在处理器的分支预测机制作用下,constant-time时间防护方案的有效性.基于RSA模幂算法的防护实现,本文对包括cross-copying方案、transactional branching方案、unification方案以及conditional assignment方案在内的四种防护实现进行了分析.我们提出了时间防护方案在分支预测机制下的评估框架,并基于Welcht检验对时间泄漏进行了度量.基于本文提出的基于分支预测状态注入时间攻击,我们评估了不同防护方案的抗分支预测攻击能力.通过实验比较,四种防护方案均存在不同程序的时间泄漏.CA方案虽然替换掉了分支,但也带来相比于原始程序1.65倍的时间代价,而且运算本身的优化使其在算法层面仍存在时间泄漏.而CC方案、U方案以及TB方案虽然不存在算法层面的时间泄漏,但是在分支预测机制的影响下,仍然存在实际运行过程的泄漏.其中,CC方案和U方案以1.17倍的时间代价略优于TB方案的1.56倍.但CC方案和U方案的分支预测泄漏量约为TB方案的3倍,且在抗分支预测攻击上的表现更差.本文的研究结果表明算法设计者应从多层次上考虑防护方案的安全性,为不同算法在分支预测机制下的泄漏评估提供了参考.5 实验
5.1 实验平台
5.2 实验结果
6 总结
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!