2.3 硬件木马防护对策
硬件木马防护对策的研究重点是研究能够解决或减轻IC供应链中潜在硬件木马威胁的对策。一般来说,硬件木马防护对策分为三大类。每个大类还可进一步分为几个子类。硬件木马防护对策的分类如图2.6所示。
图2.6 硬件木马防护对策的分类
2.3.1 木马检测
木马检测是处理硬件木马最直接、最常用的方法。其目的是验证现有设计和制造的IC,无需任何辅助电路。木马检测可在设计阶段(流片前)执行以验证IC设计,或在制造阶段(流片后)执行以验证制造的IC。
流片后检测可分为有损方法和无损方法,参见图2.6。有损方法中的反向工程通常使用有损逆向工程技术拆封IC并获取每一层的图像,以便重建最终产品的可信设计验证。有损逆向工程有可能提供100%的保证,可以检测IC中的任何恶意修改,成本高,对于相当复杂的IC来说,可能需要数周甚至数月的时间。此外,在拆封IC的侵入性过程结束时,IC将无法使用,研究者只能获得单个IC样本的信息。因此,一般不认为有损方法是可行的木马检测方法。然而,在有限数量的样品上进行有损逆向工程可以获得黄金批次IC的特性,有关技术细节将在本书5.2节讨论。文献[19]中提出采用一种已有大量研究基础的机器学习方法——支持向量机(SVM)来识别无木马IC,识别出的无木马IC可以作为木马检测的黄金模型。无损方法试图通过功能测试或侧信道信号分析来验证来自不可信代工厂制造的IC。
(1)功能测试需要应用测试向量激活木马,并将IC响应与无木马IC应有的正确结果比较。虽然这在本质上似乎与用于检测制造缺陷的常规制造测试相似,但常规制造测试往往是通过功能、结构、随机模式进行检测,不能可靠地检测出硬件木马[9]。攻击者可以设计非常独特的木马,使木马在非常罕见的情况下才被激活。在常规制造测试过程中,木马在结构和功能测试中不会被发现。文献[20]和[21]的作者开发了测试模式生成方法来触发这种很少被激活的内部信号,提高了从主要输出端口观察木马影响的可能性。但是,由于电路中有许多逻辑状态,因此无法列举实际设计的所有状态。此外,木马可能传输信息(如利用天线传输信息)或修改规范,而不改变原始电路的功能[22],功能测试无法检测此类木马。
(2)侧信道信号分析能够通过测量电路参数来检测硬件木马,如测量电路的延迟[23,24]、功率(包括瞬态功率[25]和泄露功率[26])、温度[27]及辐射[28,29]等参数。侧信道信号分析通常利用附加电路、木马触发机制、木马电路本身活动产生的副作用(额外的路径延迟、功率、热量或电磁辐射)进行分析。然而,目前大多数检测技术假定黄金IC(无木马IC)可用于比较或识别被木马感染的IC。此外,虽然侧信道信号分析方法可以在一定程度上成功检测到木马,但其难点在于实现对每个门或信号的高覆盖率,以及在有工艺偏差和环境变化的情况下提取硬件木马微小的异常侧信道信号。随着IC特征尺寸的缩小和晶体管数量的增加,工艺偏差的增加很容易掩盖由低开销和难以触发的木马引起的微小侧信道信号。近来,Zhou等人[29]观察到填充单元比其他功能单元更具反射性,因此提出了一种背面成像方法,用于产生基于填充单元的检测模式。尽管这项技术不需要黄金芯片,但是模拟图像和测量光学图像之间的比较仍然受到制造工艺偏差的影响。此外,芯片成像所需的时间和背面成像的解决方案也是一个难度较大的挑战。流片前木马检测技术用于帮助SoC开发商和设计工程师验证第三方IP核(3PIP)及其最终设计。
流片前检测技术目前可大致分为功能验证、代码/电路测试、形式化验证。
(3)功能验证的主要理念与前面描述的功能测试基本相同,通过模拟执行。功能测试必须在应用输入模式和收集输出响应的测试器上进行。因此,现有的功能测试技术适用于功能验证,功能验证继承了功能测试的优、缺点。
(4)代码/电路测试主要运用HDL代码进行分析,在行为代码[30]或结构代码[31]上执行,以识别可能是木马一部分的冗余语句或电路。结构分析也可以采用定量度量标准,将激活概率低的信号或门标记为可疑[32,33]。Oya等人[34]尝试通过从多个现有的木马基准中提取木马特征来识别漏洞。代码与结构分析技术的局限性在于它们不能保证检测出木马,并且需要手动后处理来分析可疑信号或门,以确定其是否是木马的一部分。
(5)形式化验证是一种基于算法的逻辑验证方法,详尽地证明了设计应满足的预定义安全属性集[30,35,36]。为了检查设计是否符合这些属性集,研究者需要将目标设计转换为验证检查格式(如Coq)[37-40]。然而,形式化验证技术在满足这些属性集的同时,可能无法检测由木马引入的其他未知功能。
2.3.2 可信设计
利用现有技术检测静态、低开销的硬件木马仍然非常具有挑战性。更有效的方法可能是在设计阶段通过可信设计(design-for-trust,DfTr)方法来应对木马问题。根据侧重点的不同,可信设计方法可分为三类。
第一类可信设计方法侧重于测试、分析和监控。
(1)促进功能测试:木马的隐蔽性使得从输入端触发木马及从输出端观察木马都非常困难。设计中大量的低可控性和低可观测性信号极大地阻碍了激活木马的可能性。Salmani等人[41]和Zhou等人[42]尝试通过在电路中插入测试点来增加节点的可控性和可观测性。还有其他研究者采用另一种方法,通过2选1多路复用器来多路复用DFF的两个输出,即Q和Q’,并选择其中之一,扩展了设计的状态空间,增加了激活木马及将木马效应传播到电路输出的可能性,使木马具备可检测性[20]。这些方法不仅有利于实现基于功能测试的检测技术,也有利于实现需要部分激活木马电路的侧信道检测方法。
(2)促进侧信道信号分析:为了提高侧信道检测方法的灵敏度,人们提出了多种设计方法。Salmani等人[41]提出通过在一个区域内定位开关活动来最小化背景侧信道信号,同时通过扫描单元重新排序技术最小化其他区域的开关活动。此外,电路中还实现了一些新开发的结构或传感器,以提供比传统测量更高的检测灵敏度。在一组选定的短路径上插入环形振荡器(ring oscillator,RO)结构[43]、影子寄存器(shadow registers)[44]和延迟元器件(delay elements)[45]进行路径延迟测量。含有RO的传感器[46]和瞬态电流传感器[47,48]能够分别提高由木马引起的电压和电流波动的灵敏度。此外,芯片制造商集成的工艺偏差传感器[49,50]可以校准模型,并将由工艺偏差引起的噪声降至最低。
(3)运行时监控:由于在流片前和流片后测试期间触发所有类型和不同复杂度的木马非常困难,因此对关键计算的运行时监控可以显著提高对硬件木马攻击的检测效果。运行时监控方法可以利用现有的或补充的片上结构来监测芯片行为[51,52]或操作条件,如瞬态功率[47,53]和温度[27]。这种方法可以在检测到任何异常时禁用芯片,或者绕过这些异常以实现可靠的操作,尽管会有一些性能开销。Jin等人[54]提出了一种片上模拟神经网络的设计。该网络可以利用片上测量采集传感器获得的测量数据训练神经网络模型,以区分可信和不可信的电路功能。
第二类可信设计方法侧重于防止攻击者插入硬件木马。攻击者为了插入目标木马,通常需要先了解设计的功能。对于不属于设计公司的攻击者,他们通常通过逆向工程来识别电路功能。为防止攻击者识别电路功能,可以采用以下技术。
(1)逻辑混淆:逻辑混淆试图通过在原始设计中插入内置锁定机制来隐藏设计的真正功能和实现方法。锁定电路只有在应用了正确密钥时才会出现正确的功能。在不知道正确输入向量的情况下,识别集成电路真正的功能难度大、复杂性高,使得攻击者插入目标木马的能力大大削弱。在组合逻辑混淆中,可以在设计中的某些位置引入XOR/XNOR门[55]。在顺序逻辑混淆中,可以在有限状态机中引入附加状态以隐藏其功能状态[21]。此外,文献[56-58]提出为逻辑混淆插入可重构逻辑。当可重构逻辑由设计公司或最终用户正确编程时,集成电路才能真正开始工作并发挥功能。
(2)电路伪装:伪装是一种布局级混淆技术,在逻辑门内各层之间添加虚拟接触和连接,为不同的门创建不可区分的布局[59,60]。伪装技术可以阻止攻击者通过对不同层进行成像来从布局中提取电路的正确门级网表,从而保护原始设计不被目标木马插入。此外,Bi等人[61]利用类似的虚拟接触方法,开发了一套基于极性可控的SiNWFETs伪装单元。
(3)功能性填充单元:由于布局设计工具在布局上通常较为保守,因此无法在设计中用常规标准单元填充100%的区域。未使用的空间充满了没有任何功能的填充单元或去耦单元。因此,攻击者在电路布局中插入木马最隐蔽的方法是替换填充单元,因为删除这些非功能填充单元对电气参数的影响最小。内置自认证(built-in self-authentication, BISA)方法在布局设计期间用功能填充单元填充所有空白区域[62]。设计完成之后,插入的单元被自动连接,形成一个可以测试的组合电路。在后期测试中,如果测试失败,则表示功能填充器已被木马替换。
第三类可信设计方法侧重于在不可信的计算组件上进行可信计算。可信计算与运行时监控的区别在于,可信计算在设计上能够容忍木马攻击。在运行时,用木马检测和恢复充当最后一道防线。这种利用可信计算实现的可信设计方法对于任务关键型应用程序特别重要。有些研究者采用分布式软件调度协议在多核处理器中实现了木马激活容忍可信计算系统[63,64]。并发错误检测(concurrent error detection, CED)技术可用于检测由木马生成的恶意输出[60,65]。此外,Reece等人[66]和Rajendran等人[60]建议使用不同的3PIP供应商来防止木马的影响。Reece等人[66]的技术通过将多个3PIP与执行类似功能的另一个不可信的设计进行比较,验证了设计的完整性。Rajendran等人[60]利用3PIP供应商的分配约束来防止来自同一供应商的3PIP之间的合谋。
对于需要在前端设计阶段增加电路的可信设计技术,潜在的面积和性能开销是设计者最关心的问题。随着电路规模的增加,增加静态(低可控性/可观察性)网络/门的数量将增加处理的复杂性,并产生大额的时间/面积开销。因此,便于检测的可信设计技术仍然难以应用于包含数百万门的大型设计。此外,预防性可信设计技术需要插入额外的门(逻辑混淆)或修改原始的标准单元(伪装),可能会严重降低芯片性能,影响这种可信设计技术在高端电路中的可接受性。功能性填充器单元也会增加功率开销。
2.3.3 可信分块制造
可信分块制造是最近被提出的一种IC制造方法,可以在最先进的半导体代工厂中应用,可以最小化IC设计面临的风险[67]。可信分块制造将设计分为前端生产线(front end of line, FEOL)和后端生产线(back end of line, BEOL)两部分,供不同的代工厂制造。先由不可信的代工厂执行(较高成本)FEOL制造,然后将晶圆运送至可信的代工厂进行(较低成本)BEOL制造。不可信的代工厂无法访问BEOL中的各层,因此无法找到在电路中插入木马的安全位置。
现有的可信分块制造工艺依赖于2D集成[68-70]、2.5D集成[71]或3D集成[72]。2.5D集成首先将一个芯片拆分为两个由不可信的代工厂制造的芯片,然后在芯片和封装衬底之间插入一个包含芯片间连接的硅中介层[71]。因此,一部分互连可以隐藏在可信代工厂制造的中介层中。从本质上讲,2.5D集成是2D集成的一种变体,便于实现可信分块制造。在3D集成过程中,芯片被分成两层,分别由不同的代工厂制造。一层堆叠在另一层的顶部,上层与称为TSV的垂直互连相连。鉴于3D制造在行业内有诸多障碍,当前基于2D和2.5D的可信分块制造技术更为现实。Vaidyanathan等人[69]证实了在测试芯片上完成第一层金属(M1)工艺后再进行可信分块制造的可行性,并评估了芯片性能。尽管在M1工艺后的可信分块制造过程试图隐藏所有单元间的互连,并能有效进行混淆设计,但是明显增加了制造成本。此外,研究者还提出了一些设计技术,提高设计与可信分块制造的安全性。Imeson等人[73]向可信编辑器(BEOL)提供k安全度量标准,以便按度量标准选择需要提升的引线,从而在更高层分块时确保安全性。然而,在原设计中提升大量的引线会带来较大的时间和功耗开销,严重影响芯片的性能。一种混淆BISA(OBISA)设计技术可以将虚拟电路插入原始设计中,以进一步实现混淆设计的可信分块制造技术[71]。
2.3.4 运行时硬件木马检测方法
利用硬件片上传感器、功耗和热跟踪、运行时验证(动态验证)等可以实现运行时硬件木马检测。
利用硬件片上传感器可以测量电路的参数。文献[44]提出利用硬件片上传感器对寄存器之间路径的延时进行评估和特征描述,定义合理的延时范围,将所有超出范围的延时都视为由恶意行为导致。这种方法的不足之处在于必须增加额外的电路开销,才能确保监测的有效性和准确性。另外,这种方法对于一些特殊木马设计不起作用,如对A2木马无效,因为A2木马不会干扰任何路径的延时。
功耗和热跟踪是运行时异常行为检查中常用的特征。在文献[27]中,通过跟踪温度分布,研究者分析了木马激活对芯片功耗的影响。在文献[74]中,研究者通过使用机器学习方法比较木马没有激活和木马被激活后的电路功耗来检测硬件木马是否被激活。还有基于功率跟踪的方法[75],研究者将功率监视器植入芯片,以便表征电源的特性。但是,对于A2木马,上述这些方法仍然无效,因为A2木马中使用的逻辑门太少,所以不会引起热变化或功耗的任何波动。
运行时验证(动态验证)需要先定义安全属性,然后在运行时进行动态验证,可以为IC提供全面的保护。Wahby等人[76]提出了可验证的ASIC,用于验证硬件系统在功能性方面的准确度。文献[76]介绍了通过在一个不可信IC和另一个可信IC之间实现交互式加密协议来执行动态验证的方法,将不可信IC称为“证明者”,可信IC称为“验证者”,首次尝试利用正确度验证方法(可验证运算)验证IC功能是否正确执行。但是,为了确保安全性,研究者使用的正确度验证方法会导致较高的计算成本和电路开销。为了验证由IC允许和禁止行为形成的安全属性,还有研究者利用文献[77]中介绍的硬件属性检查器检测硬件和软件木马,并利用文献[78]中介绍的动态检查器来检测处理器的恶意电路。同样,所有这些检查器都无法有效检测A2木马,因为A2木马行为很难被形式化。
文献[79]提出了一种运行时检测方法,专门针对与A2类似的木马。该方法基于名为R2D2[80]的片上运行时硬件木马检测方法,目标是在激活硬件木马之前检测芯片内部信号的高频切换。与其他运行时硬件木马检测方法相比,该检测方法简单易行,造成的面积开销和功率开销也比较小。
2.3.5 基于EM侧信道信息的分析方法
电磁(EM)辐射通常可以通过侧信道检测出来,利用侧信道的信息可以检测硬件木马。
在IC设计阶段,攻击者可以通过来自不可信的第三方IP重用插入硬件木马,或通过修改部分电路使其成为恶意电路插入硬件木马。在IC制造阶段,攻击者可通过在代工厂修改原始布局插入硬件木马。
硬件木马检测方法层出不穷。其中,侧信道分析方法是最有前景的流片后检测方法。因为插入硬件木马往往会影响芯片侧信道参数,所以侧信道分析方法通过将测得的侧信道参数与黄金IC进行比较就可以识别硬件木马。除了功耗[6]和路径延迟[23]参数,在侧信道分析方法中,研究者已经利用各种侧信道参数,如EM辐射[81,82]、漏电流[26]、热[83]、光[28]和阻抗[84]等来进行木马检测。
在文献[81]中,研究者通过对IC的EM辐射进行指纹识别来检测硬件木马,初步研究了硬件木马的位置和分布情况对木马可检测性的影响。在文献[82]中,研究者进一步研究了布局和布线的影响。实验表明,硬件木马的特定信号布线将改变电磁特性,通过检测电磁特性可以提高对木马的检测概率。在文献[77,85]中,研究者将检测概率视为识别硬件木马的函数,在评估时还考虑了不同芯片之间的工艺偏差。由于大多数侧信道分析方法严重依赖于黄金IC的存在,因此如何制造黄金IC成为制约这种方法实际应用的因素。迄今为止,已有多种方法可以在不使用黄金IC的情况下进行木马检测,其中一些方法应用了基于EM指纹的木马检测方法。He等人[86,87]提出了一种利用EM侧信道辐射的新型无黄金IC的检测方法。该方法将通过RTL数据模拟的EM频谱特征作为黄金参考,不需要制造黄金IC。无黄金IC参考的利用EM频谱的硬件木马检测方法主要是要发现模拟跟踪和芯片实际跟踪之间的差异。在RTL EM辐射建模阶段,研究者采用了汉明距离模型(Hamming distance model),并考虑了对近场EM辐射影响最大的数据传输和驱动能力,利用快速傅里叶变换(fast Fourier transform, FFT)将模拟轨迹从时域转换到频域,在测试阶段,利用神经网络提取EM频谱特征检测硬件木马。
除了硬件木马,伪造的IC也是IC供应链中的一个重大威胁,文献[88]对此进行了概述。EM侧信道信息还可用于识别伪造设备,分析伪造设备的来源,判断设备是否真实可靠。在文献[89]中,研究者提出了一种基于近场EM测量和频域统计分析的伪造芯片检测方案。