一种基于密钥的硬件木马预防方法研究
石朝阳+邹雪城+明瑞华+刘政林
摘 要: 硬件木马因其巨大的潜在威胁而受到学术界和工业界越来越广泛的关注。当前主流的集成电路设计制作的各个环节都存在着植入硬件木马的可能性。基于硬件木马的插入设计考虑,提出一种基于密钥的硬件木马预防方法。通过在电路中增加初始序列(密钥)、迷惑电路和冗余电路,隐藏有正确功能的原始电路,以预防在设计及后续环节中可能被植入的硬件木马。基于大量测试矢量激励的实验表明,优化的预防电路在没有太多的额外的电路资源开销的情况下能有效保护电路不被硬件木马破坏,而且不影响正常的功能。
关键词: 硬件木马; 防御; 迷惑电路; 密钥
中图分类号: TN495?34; TN918 文献标识码: A 文章编号: 1004?373X(2016)20?0001?03
Abstract: Hardware Trojans draw more and more attention of the academia and industrial community because of its huge potential threat in recent years. Trojans may be inserted in all the current main IC design process. Considering the Trojans inserting mechanism, a hardware Trojan prevention method based on secret keys is proposed, which is realized by adding initial sequence (secret keys), confusing circuit and redundant circuit, and hiding the original circuit with correct function. The result based on a large number of test vectors shows that the optimized prevention circuit can effectively prevent the normal circuit to be attacked by the Trojans in the case of not spending more extra circuit resources.
Keywords: hardware Trojan; prevention; confusing circuit; secret key
0 引 言
在过去几十年里,集成电路已经渗透到人类社会活动现代科技的各个领域,包括在金融、军事、工业、交通等关乎国家命脉的领域,因此确保集成电路的安全性与可靠性变得尤为重要。如何确保集成电路中不含硬件木马是一个非常困难的问题[1]。随着电路节点数目成指数增长,并且ASIC的门电路规模越来越大,这使得无论是穷举测试还是形式验证都逐渐失效。传统的集成电路测试和验证的主要目标是检测集成电路的实际运行状态和预期的是否一致。一般情况下,很难检测到电路是否增加了额外的功能单元,而且随着电路的门规模越来越大,创建足够小并且高故障覆盖率的测试向量集愈加困难。如果在测试阶段,硬件木马没有被激活,木马就几乎不会被检测到。至今还没有一种方法可以检测出所有的硬件木马。虽然目前已经有了多种多样的检测技术,但是这些检测方法只能检测出已知的一种或者一类硬件木马。硬件木马设计者会避开已有的木马检测机制,设计出用目前检测方法不能检测出来的硬件木马。因此对硬件木马的预防就很有必要。Potkonjak等人在硬件木马防御方面做出了有意义的研究[2]——可以使用不可信的EDA工具设计出可信的集成电路。他主要是通过在任意时刻都充分利用所有的硬件资源,从而使木马由于缺少硬件资源而无法植入,片上的硬件资源要全部被用来实现集成电路的正确功能。Baumgarten等人提出了通过使用可重构逻辑防御木马的攻击[3]。Makris等人在一定程度上解决了关于集成电路制造过程中的不可信问题[4],他们提出了一个系统,IP消费者提供硬件规格和与安全相关的属性。IP消费者和IP制造商必须都同意把这些属性转化为用定理证明语言编写的形式数学编码。
基于Baumgarten等人提出的电路模糊技术的思想,本文提出了一种基于密钥的电路预防技术,在电路设计阶段考虑到木马一般是在受到一些罕见状态触发后才会激活起来,通过加入迷惑电路模块[5],或者增加电路的状态转移图的复杂度,隐藏电路相关信息,使入侵者无法正确分析出正常电路信息,从而进行错误的植入,把木马植入到迷惑电路,插入的木马电路无法正常工作,从而达到预防木马保护电路的目的。
1 硬件木马的隐藏插入设计原理
硬件木马的组成包括触发模块和有效载荷两部分,触发模块通过巧妙设置触发条件来激活木马电路,而有效载荷是木马触发后发挥攻击功能的电路模块[6]。图1所示为一个简单的组合电路硬件木马示例,示例中木马侵入了正常电路的ER节点,将触发模块的输出与原始的ER模块输入进行异或操作,异或结果ER*取代了原始的ER。一般情况下,ER*的值和ER的值是一样的,由正常电路F(x1,x2,…,xn)决定,这时硬件木马是潜伏的并不会改变原始电路的功能。当节点[a,b,c,d,e,f]的值为101011时,木马的Payload部分起作用,篡改ER值为ER*值,影响了电路的正常功能,对电路造成了影响。本例子所给的硬件木马触发条件非常简单,节点[a,b,c,d,e,f]的值只有64种排列组合情况,在常规的功能验证测试过程中,可以比较容易地遍历到节点[a,b,c,d,e,f]的101011这个值,从而发现木马。实际的硬件木马设计过程中,会更加注意木马的隐藏性,避免在常规的功能验证过程中硬件木马就被发现。
2 基于密钥的硬件木马预防机制
2.1 增加迷惑电路和密钥
考虑到第1节中提到的硬件木马的触发设计机制,硬件木马设计者喜欢使用一些低翻转概率的信号作为触发条件,因此在所设计的正常电路的基础上,增加了迷惑电路模块和初始序列模块来预防硬件木马[7]。如图2所示。同时,增加迷惑电路模块中低概率能到达的状态,而在正常电路模块里增加了不影响正常功能的测试过程中可以到达的实际正常功能不会到达的冗余状态。
如图2所示,在测试阶段,不用正确的初始序列(K1,K2,K3),则状态转移进入迷惑电路模块。攻击者在分析电路的时候,由于电路大部分情况都在迷惑电路中运转,攻击者就有很大的可能性将木马插入到迷惑电路中的罕见状态里,如图2中木马1所示。由于状态转移的条件使然,迷惑电路的每个状态都会到达。所以木马在测试阶段就会激发。不过,由在正常使用过程中,并不会进入迷惑电路,所以被攻击者插入到迷惑电路中的硬件木马并不会起作用。
2.2 增加正常电路模块状态转移的复杂度
考虑到攻击者在电路分析过程中仍然会有一定可能性将硬件木马插入到图3中正常电路的状态(0~5)中,为此,在正常电路中也额外增加了冗余状态(6~9),如图3所示。而冗余状态不影响正常功能,且在测试过程中可以到达但实际正常功能不会到达。
在正常使用时,通过正确的初始序列,状态转移进入正确电路模块。但是,冗余状态在测试过程中相比正常电路也是一种罕见到达的状态,所以冗余电路也会受到攻击者的“青睐”从而将木马插入到冗余状态中。如图3中的冗余状态(6~9),只有在状态1的情况下,有着合适的条件(精心设计的条件,测试的时候满足,正常电路运转时永远不满足),才进入冗余状态6,从而经过其他冗余状态(7~9)。如果到达状态1,一直都不出现合适的状态转移条件,那么即使在状态(6~9)中被插入了木马2,木马2也不会在芯片正常使用的时候被激活。
加入迷惑电路模块和初始序列模块,还有冗余状态后,电路能够从那些不能到达的状态或者一定到达的状态获得益处。如果根据下面的步骤,不能到达的状态的获取趋向最优。首先,从所给的电路可以得S个状态元素,则枚举出2S 种所有可能的状态。然后,这些状态经过软件进行调整[8]。调整后的状态就是失效的,这就组成了一系列的不能到达的状态。
3 实验验证
3.1 测试流程
以下是测试的步骤:
已知输入:正常电路的网表,全部电路的网表,面积增量阈值,电路的状态数量,初始化序列的长度;
(1) 假设额外增加的状态元素为N,正常电路的状态元素为S,其中S是从电路随机选取的;
(2) 通过调整状态序列,找出正常电路中不能到达的状态;
(3) 对额外添加的状态元素进行加密,让其变得复杂;
(4) 产生额外电路的随机转换状态图;
(5) 产生长度为K的初始化序列;
(6) 产生整个电路的寄存器级电路,产生正常电路的寄存器级电路;
(7) 得出面积的增量;
(8) 回到步骤1,将N减1,S减1,直到面积增量小于面积增量阈值,满足条件。
以上步骤能够通过仿真工具自动完成。测试电路和激励都可以用状态机代码自动生成器来实现[9]。在大量的随机测试矢量激励的条件下,利用仿真工具统计电路中间节点信号的翻转概率。
3.2 结果分析
如图4所示,设置N=100,S的值在0~N中变化(S均分到迷惑电路和冗余电路),密钥为3位初始序列,通过modelsim代码覆盖率[10]的功能,分别得到测试电路迷惑模块(迷惑电路+冗余电路)和正常电路模块的信号翻转覆盖率Toggle比值,以评估预防电路的效果。迷惑模块和正常电路的硬件开销通过Quartus Ⅱ软件综合后的compilation report获得。图4中硬件开销单位LE为Logic Element的缩写。由图4可看出,在S=60左右时,迷惑模块的硬件开销已经堪比正常电路的开销,并且随着S的继续增大,迷惑模块的硬件开销会继续增大,但是实际上是有硬件开销增量(面积增量开销)的限制。而Toggle比值大概在S=47时达到1,并且随着S的继续增大,Toggle比值也会继续增大,要想迷惑模块能够有效起到迷惑作用,显然在仿真的时候宏观上迷惑电路的活跃度(即Toggle统计值)不能大于正常电路的活跃度。由图4可知迷惑功能的最具效率值和硬件开销增量不是在一个点达到最优的,在有面积增量开销的限制条件下,需要在两者之间权衡,以取得一个最优的N值。另外从图4也可看出,在S>47时,迷惑/正常Toggle比值大于1,此时迷惑电路吸引木马的能力下降,但是冗余/正常Toggle比值仍然远小于1,冗余电路吸引木马的能力依然很强。综上,在面积开销限制的条件下,迷惑电路和冗余电路迷惑木马的能力还是可以预见的。
4 结 论
如果在庞大的集成电路芯片中,不可信赖的制造厂商已经植入具有严重安全威胁的木马。传统的逻辑测试和检测应用技术也不能完全检测所以木马,保证芯片的安全。但提出利用少有的迷惑电路设计方法却达到有效保护电路避免被木马侵害的目的。迷惑设计使得攻击者很难去分析电路的功能,导致木马的植入失效。实验结果也充分验证了本方法的可行性和有效性。当然,硬件木马有很多种,本方法做RTL级硬件木马预防的研究有一定局限性,并不能预防所有的硬件木马,更全面的硬件木马预防技术仍然需要进一步研究。
参考文献
[1] MIRON A, PAUL B, KUMAR D K, et al. Rccongurable design?for?debug in?frastructure for SoCs [J]. IEEE electron device letters, 2009, 21 (3): 123?126.
摘 要: 硬件木马因其巨大的潜在威胁而受到学术界和工业界越来越广泛的关注。当前主流的集成电路设计制作的各个环节都存在着植入硬件木马的可能性。基于硬件木马的插入设计考虑,提出一种基于密钥的硬件木马预防方法。通过在电路中增加初始序列(密钥)、迷惑电路和冗余电路,隐藏有正确功能的原始电路,以预防在设计及后续环节中可能被植入的硬件木马。基于大量测试矢量激励的实验表明,优化的预防电路在没有太多的额外的电路资源开销的情况下能有效保护电路不被硬件木马破坏,而且不影响正常的功能。
关键词: 硬件木马; 防御; 迷惑电路; 密钥
中图分类号: TN495?34; TN918 文献标识码: A 文章编号: 1004?373X(2016)20?0001?03
Abstract: Hardware Trojans draw more and more attention of the academia and industrial community because of its huge potential threat in recent years. Trojans may be inserted in all the current main IC design process. Considering the Trojans inserting mechanism, a hardware Trojan prevention method based on secret keys is proposed, which is realized by adding initial sequence (secret keys), confusing circuit and redundant circuit, and hiding the original circuit with correct function. The result based on a large number of test vectors shows that the optimized prevention circuit can effectively prevent the normal circuit to be attacked by the Trojans in the case of not spending more extra circuit resources.
Keywords: hardware Trojan; prevention; confusing circuit; secret key
0 引 言
在过去几十年里,集成电路已经渗透到人类社会活动现代科技的各个领域,包括在金融、军事、工业、交通等关乎国家命脉的领域,因此确保集成电路的安全性与可靠性变得尤为重要。如何确保集成电路中不含硬件木马是一个非常困难的问题[1]。随着电路节点数目成指数增长,并且ASIC的门电路规模越来越大,这使得无论是穷举测试还是形式验证都逐渐失效。传统的集成电路测试和验证的主要目标是检测集成电路的实际运行状态和预期的是否一致。一般情况下,很难检测到电路是否增加了额外的功能单元,而且随着电路的门规模越来越大,创建足够小并且高故障覆盖率的测试向量集愈加困难。如果在测试阶段,硬件木马没有被激活,木马就几乎不会被检测到。至今还没有一种方法可以检测出所有的硬件木马。虽然目前已经有了多种多样的检测技术,但是这些检测方法只能检测出已知的一种或者一类硬件木马。硬件木马设计者会避开已有的木马检测机制,设计出用目前检测方法不能检测出来的硬件木马。因此对硬件木马的预防就很有必要。Potkonjak等人在硬件木马防御方面做出了有意义的研究[2]——可以使用不可信的EDA工具设计出可信的集成电路。他主要是通过在任意时刻都充分利用所有的硬件资源,从而使木马由于缺少硬件资源而无法植入,片上的硬件资源要全部被用来实现集成电路的正确功能。Baumgarten等人提出了通过使用可重构逻辑防御木马的攻击[3]。Makris等人在一定程度上解决了关于集成电路制造过程中的不可信问题[4],他们提出了一个系统,IP消费者提供硬件规格和与安全相关的属性。IP消费者和IP制造商必须都同意把这些属性转化为用定理证明语言编写的形式数学编码。
基于Baumgarten等人提出的电路模糊技术的思想,本文提出了一种基于密钥的电路预防技术,在电路设计阶段考虑到木马一般是在受到一些罕见状态触发后才会激活起来,通过加入迷惑电路模块[5],或者增加电路的状态转移图的复杂度,隐藏电路相关信息,使入侵者无法正确分析出正常电路信息,从而进行错误的植入,把木马植入到迷惑电路,插入的木马电路无法正常工作,从而达到预防木马保护电路的目的。
1 硬件木马的隐藏插入设计原理
硬件木马的组成包括触发模块和有效载荷两部分,触发模块通过巧妙设置触发条件来激活木马电路,而有效载荷是木马触发后发挥攻击功能的电路模块[6]。图1所示为一个简单的组合电路硬件木马示例,示例中木马侵入了正常电路的ER节点,将触发模块的输出与原始的ER模块输入进行异或操作,异或结果ER*取代了原始的ER。一般情况下,ER*的值和ER的值是一样的,由正常电路F(x1,x2,…,xn)决定,这时硬件木马是潜伏的并不会改变原始电路的功能。当节点[a,b,c,d,e,f]的值为101011时,木马的Payload部分起作用,篡改ER值为ER*值,影响了电路的正常功能,对电路造成了影响。本例子所给的硬件木马触发条件非常简单,节点[a,b,c,d,e,f]的值只有64种排列组合情况,在常规的功能验证测试过程中,可以比较容易地遍历到节点[a,b,c,d,e,f]的101011这个值,从而发现木马。实际的硬件木马设计过程中,会更加注意木马的隐藏性,避免在常规的功能验证过程中硬件木马就被发现。
2 基于密钥的硬件木马预防机制
2.1 增加迷惑电路和密钥
考虑到第1节中提到的硬件木马的触发设计机制,硬件木马设计者喜欢使用一些低翻转概率的信号作为触发条件,因此在所设计的正常电路的基础上,增加了迷惑电路模块和初始序列模块来预防硬件木马[7]。如图2所示。同时,增加迷惑电路模块中低概率能到达的状态,而在正常电路模块里增加了不影响正常功能的测试过程中可以到达的实际正常功能不会到达的冗余状态。
如图2所示,在测试阶段,不用正确的初始序列(K1,K2,K3),则状态转移进入迷惑电路模块。攻击者在分析电路的时候,由于电路大部分情况都在迷惑电路中运转,攻击者就有很大的可能性将木马插入到迷惑电路中的罕见状态里,如图2中木马1所示。由于状态转移的条件使然,迷惑电路的每个状态都会到达。所以木马在测试阶段就会激发。不过,由在正常使用过程中,并不会进入迷惑电路,所以被攻击者插入到迷惑电路中的硬件木马并不会起作用。
2.2 增加正常电路模块状态转移的复杂度
考虑到攻击者在电路分析过程中仍然会有一定可能性将硬件木马插入到图3中正常电路的状态(0~5)中,为此,在正常电路中也额外增加了冗余状态(6~9),如图3所示。而冗余状态不影响正常功能,且在测试过程中可以到达但实际正常功能不会到达。
在正常使用时,通过正确的初始序列,状态转移进入正确电路模块。但是,冗余状态在测试过程中相比正常电路也是一种罕见到达的状态,所以冗余电路也会受到攻击者的“青睐”从而将木马插入到冗余状态中。如图3中的冗余状态(6~9),只有在状态1的情况下,有着合适的条件(精心设计的条件,测试的时候满足,正常电路运转时永远不满足),才进入冗余状态6,从而经过其他冗余状态(7~9)。如果到达状态1,一直都不出现合适的状态转移条件,那么即使在状态(6~9)中被插入了木马2,木马2也不会在芯片正常使用的时候被激活。
加入迷惑电路模块和初始序列模块,还有冗余状态后,电路能够从那些不能到达的状态或者一定到达的状态获得益处。如果根据下面的步骤,不能到达的状态的获取趋向最优。首先,从所给的电路可以得S个状态元素,则枚举出2S 种所有可能的状态。然后,这些状态经过软件进行调整[8]。调整后的状态就是失效的,这就组成了一系列的不能到达的状态。
3 实验验证
3.1 测试流程
以下是测试的步骤:
已知输入:正常电路的网表,全部电路的网表,面积增量阈值,电路的状态数量,初始化序列的长度;
(1) 假设额外增加的状态元素为N,正常电路的状态元素为S,其中S是从电路随机选取的;
(2) 通过调整状态序列,找出正常电路中不能到达的状态;
(3) 对额外添加的状态元素进行加密,让其变得复杂;
(4) 产生额外电路的随机转换状态图;
(5) 产生长度为K的初始化序列;
(6) 产生整个电路的寄存器级电路,产生正常电路的寄存器级电路;
(7) 得出面积的增量;
(8) 回到步骤1,将N减1,S减1,直到面积增量小于面积增量阈值,满足条件。
以上步骤能够通过仿真工具自动完成。测试电路和激励都可以用状态机代码自动生成器来实现[9]。在大量的随机测试矢量激励的条件下,利用仿真工具统计电路中间节点信号的翻转概率。
3.2 结果分析
如图4所示,设置N=100,S的值在0~N中变化(S均分到迷惑电路和冗余电路),密钥为3位初始序列,通过modelsim代码覆盖率[10]的功能,分别得到测试电路迷惑模块(迷惑电路+冗余电路)和正常电路模块的信号翻转覆盖率Toggle比值,以评估预防电路的效果。迷惑模块和正常电路的硬件开销通过Quartus Ⅱ软件综合后的compilation report获得。图4中硬件开销单位LE为Logic Element的缩写。由图4可看出,在S=60左右时,迷惑模块的硬件开销已经堪比正常电路的开销,并且随着S的继续增大,迷惑模块的硬件开销会继续增大,但是实际上是有硬件开销增量(面积增量开销)的限制。而Toggle比值大概在S=47时达到1,并且随着S的继续增大,Toggle比值也会继续增大,要想迷惑模块能够有效起到迷惑作用,显然在仿真的时候宏观上迷惑电路的活跃度(即Toggle统计值)不能大于正常电路的活跃度。由图4可知迷惑功能的最具效率值和硬件开销增量不是在一个点达到最优的,在有面积增量开销的限制条件下,需要在两者之间权衡,以取得一个最优的N值。另外从图4也可看出,在S>47时,迷惑/正常Toggle比值大于1,此时迷惑电路吸引木马的能力下降,但是冗余/正常Toggle比值仍然远小于1,冗余电路吸引木马的能力依然很强。综上,在面积开销限制的条件下,迷惑电路和冗余电路迷惑木马的能力还是可以预见的。
4 结 论
如果在庞大的集成电路芯片中,不可信赖的制造厂商已经植入具有严重安全威胁的木马。传统的逻辑测试和检测应用技术也不能完全检测所以木马,保证芯片的安全。但提出利用少有的迷惑电路设计方法却达到有效保护电路避免被木马侵害的目的。迷惑设计使得攻击者很难去分析电路的功能,导致木马的植入失效。实验结果也充分验证了本方法的可行性和有效性。当然,硬件木马有很多种,本方法做RTL级硬件木马预防的研究有一定局限性,并不能预防所有的硬件木马,更全面的硬件木马预防技术仍然需要进一步研究。
参考文献
[1] MIRON A, PAUL B, KUMAR D K, et al. Rccongurable design?for?debug in?frastructure for SoCs [J]. IEEE electron device letters, 2009, 21 (3): 123?126.