3.4 针对旁路攻击的策略
随着SCA攻击的不断创新和改进,此类攻击对密码设备造成了极大的威胁。近年来出现了很多防范或者缓解此类攻击的策略。针对SCA攻击的策略可嵌入到所有抽象级别(包括寄存器传输级、电路级、门级、组合电路、体系结构和算法级)的加密设备中。硬件策略主要分为两类:隐藏策略和掩码策略。接下来的3.4.1节和3.4.2节将详细讨论这两种策略。本章讨论的防御策略主要集中在功耗和电磁辐射旁路攻击,因为这两种攻击在实际中得到了广泛的研究和应用。
3.4.1 隐藏策略
隐藏策略是使集成电路的物理泄露与密码实现过程中的中间值和操作相互独立。根据具体的防御操作,隐藏策略可分为两类:一种是随机化物理泄露的策略;另一种是平均化每周期的物理泄露的策略。
第一种策略是以随机化密码设备的物理泄露(功耗或电磁辐射)为目标的策略,包括各种对抗技术:随机预充电逻辑(RPL)[111],利用随机数生成器(RNG)生成的虚拟数据在时钟周期上升沿的组合网络中预充电,并对半时钟周期进行评估;随机延迟插入(RDI)[112],在每个逻辑路径的开头插入随机延迟。
第二种策略包括基于双轨逻辑的一系列逻辑实现,如基于感应放大器的逻辑(SABL)[113]、基于波动态和差分的逻辑(WDDL)[114]、基于延迟的双轨(DDPL)[115]等。这些技术的目标是在每个周期中消耗恒定的能量,从而消除与数据的相关性。这些基于对称的对抗措施对过程失配、设计不确定性、耦合电容、工艺偏差、噪声、延迟不平衡等因素十分敏感。
1. 物理泄露随机化
Menicocci等人[116]提出了一种新的电路代码层面的策略,旨在保护采用AES算法的AddRoundKey(密钥添加)步骤不受DPA或CPA攻击。研究人员首先通过将逻辑中每个位的输出翻转为另一个位的输出,然后复制组合逻辑(XOR门),同时复制这两个逻辑的扇出。
Bellizia等人在文献[117]中引入安全双速率寄存器(SDRR)作为电路代码层面的防护策略,提高密码设备对功耗旁路攻击的安全防护。SDRR的框架图如图3.10所示。该SDRR由两个级联寄存器和一个输入多路复用器组成。该复用器可选择第一个寄存器的输入数据。SDRR中的触发器由CK信号计时(CK信号的频率是时钟信号的2倍)。时钟信号(SEL信号)用于在真实数据和随机数据之间进行选择。SDRR可替换AES-128体系结构中的常规寄存器。这种方式利用了密码算法的扩散特性,使正确数据和随机数据得到同时处理和存储。
图3.10 SDRR的框架图[27]
Bucci等人[112]提出了一种门级防护DPA策略。该策略通过在处理器数据路径的每个流水线阶段的输入信号上插入随机延迟,从而导致电源的充电量随机化。该技术结构如图3.11所示。在文献[118]中,研究人员利用了与数据相关的瞬时(周期内)功耗,通过使用数据相关延迟的方差来增加功耗曲线的随机性,提高了对功耗攻击的抵抗能力。
图3.11 门级防护DPA策略的技术结构
Avital等人[119]提出了一种新的随机多拓扑逻辑(RMTL)。该逻辑侧重于门级的随机化,可作为一种硬件实现级的解决方案对抗功耗攻击。RMTL可通过动态配置,在几种拓扑中运行。每个拓扑虽然可实现完全相同的逻辑功能,但具有不同的功耗配置文件,通过在运行时随机改变每个门的拓扑结构来对抗DPA攻击。
在文献[120]中,Avital等人引入了一种新的基于CMOS的模糊门(Blurring Gate, BG),以此来提高密码系统对旁路攻击的抵抗力。这种新的模糊门是标准单元型的逻辑单元,有静态和动态两种操作模式。一个BG单元由两个退化的2×1 MUX分量组成,结构如图3.12(a)所示。将标准CMOS NAND门级联到BG单元示意图如图3.12(b)所示。启动静态模式时,BG单元的功能相当于一个标准的CMOS NAND门。禁用静态模式时,BG单元则作为动态的预充电或预放电逻辑。从一个时钟周期到另一个周期,BG单元可在两种操作模式之间随机切换,并在输出节点上产生随机初始条件,起到随机化设备功耗分布的作用,显著提高了对功耗旁路攻击的抵抗能力。
图3.12 BG单元
2. 物理泄露平均化
双轨预充电逻辑(DPL)[113,114]是一种使设备活动恒定且不受数据处理影响的策略。在DPL逻辑中,逻辑值由两个互补信号表示。逻辑“1”由正信号等于“1”、负信号等于“0”表示。逻辑“0”由正信号等于“0”、负信号等于“1”表示。当逻辑值发生变化时,在基于DPL逻辑的电路中,该变化则通过“预充电”和“评估”这两个连续阶段来完成。在预充电阶段,互补信号从先前的逻辑值变为两个“0”。也就是说,两个信号中的一个为放电信号。在评估阶段,根据新的逻辑值,互补信号中只有一个为“1”,即标准门的每一次输出跃迁都对应DPL逻辑门的两次跃迁:一次是预充电阶段的下降跃迁;另一次为评估阶段的上升跃迁。DPL逻辑可作为全定制型逻辑来实现,如基于感测放大器逻辑(SABL)[114]、基于延迟的双轨预充电逻辑(DDPL)[115]、三态双轨预充电逻辑(TDPL)[121]等。此外,该逻辑也可作为波动态差分逻辑(WDDL)[222]和掩码双轨预充电逻辑(MDPL)[113]的标准单元实现。
3.4.2 掩码策略
掩码策略是消除处理数据与旁路泄露之间依赖关系的有效策略。其原理是基于秘密共享[122]。利用这种技术,中间值通过被称为“掩码”的随机数共享。这样每个共享都独立于秘密。具体而言,在执行加密运算之前,使用掩码m来隐藏密钥值或输入数据值x(或两者通用),从而生成掩码值x′,x′=x op m。式中,op表示特定的掩码操作,如相乘、布尔运算和仿射掩码等[123]。之后使用掩码值x′来执行算法,从而将中间值掩蔽。
但在重建期望值的掩码恢复步骤中可能会出现问题。当变换过程具有线性系统性质时,通过计算其逆变换可在变换结束时提取正确的值。但是如果转换过程为非线性属性,则需要使用基于掩码的查找表来重建期望值。由于所有可能的掩码和掩码值组合经过预先计算和存储,因此该表存储了所有值。虽然会产生额外的开销,但这些措施的可靠性已得到正式证明,所以掩码方法已变得十分流行[124]。
Maistri等人[125]采用两种掩码方案来加强多种策略。这些策略基于在单个加密轮内以及同时在不同轮之间进行的动态重新定位数据。这些掩码方案包括用于计算线性部分的传统加法性掩蔽和基于复合映射的S-box掩码方案。实验结果表明,这些方法具有良好的抗电磁旁路攻击能力。
由于传统的掩码方案(一阶掩码方案)无法阻止高阶SCA攻击[126],因此通过对掩码方法进行改进以缓解高阶SCA攻击的议题近来受到广泛关注。Zhuang等人[127]针对混合旋转掩码和强化安全的S-box的DES密码设备提出了一项策略,并对文献[128]中引入的旋转S-box掩码(RSM)方法进行修改,将旋转掩码的理念应用到了带硬件实现的DES密码设备中。Miyajan等人[129]提出了一种利用单指令多数据(SIMD)指令加速AES高阶掩码算法的有效技术。该项技术无需使用任何查找表,并且具有固定的实现时间,主要对抗功耗、时序和缓存三种类型的SCA攻击。结果显示,该方法比二阶掩码方案快6倍,比文献[130]中提出的三阶掩码方案快5倍。
在文献[131]中,Eldib等人介绍了定量掩码强度(QMS)的概念,用数值方法表示掩码策略的抵抗能力,建立了一种量化策略实际强度的形式化方法,并通过在实际设备上进行的实测实验验证了可行性。在文献[132]中,作者对在电路代码层面保护嵌入式处理器的几种策略进行了研究。一种策略是掩码策略,在嵌入式处理器的流水线结构中隐藏中间值和随机值。另一种为隐藏策略,在数据路径级的操作中有效地使操作执行的顺序随机化。将这两种策略整合成一种有效的策略,可显著增加对抗旁路攻击的能力。
3.4.3 旁路漏洞评估
目前虽然已研究出了大量策略来确保密码设备免受SCA攻击,但在实际场景中,只有在芯片制作完成后,才能对密码设计的安全性进行评估。这种制造后的评估不仅耗时,而且容易出错,代价高昂。一旦在评估过程中发现芯片存在旁路漏洞,则需要重新设计芯片,从RTL到制造的所有设计阶段都需要重新设计,会延长芯片的整体上市时间。鉴于此,在早期设计阶段,对密码设备进行抵御SCA的安全漏洞进行评估非常有必要。
1. 功耗SCA漏洞分析
Rs等人[2]根据CMOS寄存器的逻辑值转换,预测了RTL的动态功耗,通过将模拟数据用于DPA攻击,使得设计人员在设计流程的最初阶段就可以估计功耗旁路攻击的漏洞。在文献[133]中,Tiri等人利用瞬时电源电流对DES算法进行了DPA攻击。该过程由晶体管级仿真器Hspice模拟。用于模拟的SPICE网表在Virtuoso工具中被提取,包含了所有的布局寄生电容。另外,在文献[134]中还提出了晶体管级仿真。该仿真可生成用于功耗SCA攻击的功耗曲线。
在文献[135]中,研究人员通过Synopsys公司的PrimeTime工具模拟瞬时功耗波形,在编译硬件设计并综合成网表之后,使用不同的输入向量对电路进行多次模拟仿真,获得VCD(信号值变化转储)文件。该文件可对随时间变化的信号进行编码,使用PrimeTime工具计算在运行VCD文件时所带来的瞬时功耗。该方法的主要优点是可以模拟更复杂的电路,能考虑构成完整系统的不同元器件之间的相互作用。但是,由PrimeTime工具产生的输出波形只记录信号变化时的功耗,因此只能使用基于事件的功耗信息。
Bhasin等人[136]提出了对不同防御策略的评估方法,从RTL到最终电路布局,验证在不同设计步骤中密码电路对抗SCA攻击的能力。电路级模拟通常是精确的,但模拟速度是一大瓶颈,所以研究人员提出了几种布线后的仿真方法,包括从布局中提取寄生元素的时间信息和路由时延。该方法先通过用数字模拟器模拟出时间反向标注网表(timing back-annotated post-layout netlist),并以VCD格式转储所有的设计转换,然后对VCD文件进行解析以生成功耗曲线,使所有转换的权重均相等。实验结果表明,该方法具有快速、准确的仿真性能。但是,由于基于VCD的曲线生成方法是非常简单的转换模型,而且所有转换的权重相等,因此会引入额外的噪声。
2. 电磁SCA漏洞分析
模拟电磁SCA攻击时发射电磁辐射最直接的方法是使用3D或平面电磁模拟器。考虑到现代数字集成电路的规模,传统的电磁场模拟器(如HFSS工具)需要在设备的许多位置求解Maxwell方程组,对拥有几十万门的电路建模所需的运算量太大,对电路设计实现来说显然不现实。近来,研究人员提出了几种降低运算量的方法。
Peeters等人[5]在汉明距离模型和汉明重量模型的基础上,提出了一种改进版的电磁泄漏模型,即“开关距离模型”。研究人员假设,在这个开关距离模型中,充电、放电电容的泄漏量分别为+1和-1。He等人[137]利用RTL的设计数据来产生电路的电磁辐射。在FPGA实现中,寄存器和查找表(LUT)的扇出数也已考虑在内。虽然这些方法能快速获取由密码设备产生的电磁曲线,但每条曲线只能表示全局电磁辐射的单一聚合视图。
Li等人[138]提出了一种在设计阶段识别和评估安全处理器电磁泄漏特性的仿真方法。该方法要用电路模拟器来模拟电流消耗,并使用提取工具来提取IC布局寄生效应。假设观测到的电压曲线与电流时间导数成正比,一旦收集到数据,将用MATLAB工具对电流消耗数据进行处理以模拟电磁辐射。由于在这种方法中,电磁辐射是通过总电流消耗计算得出的,因此忽略了CMOS设备中的电磁耦合现象。
近来,Amit等人[51]提出了一种在设计时可精确预测对抗电磁旁路攻击的密码系统漏洞的方法。他们将高精度瞬态电路仿真仅集中在密码执行阶段(这一阶段的中间计算操作会泄露信息)。另外,对电磁辐射的防御措施仅限于针对分布在顶层金属层电源或接地互连上的电流,且通过仅为不同的并行加密操作生成曲线,缩短了仿真时间。通过这些简化过程,显著降低了仿真成本,保证了预测价值。