一种缩短硬件木马检测时间的新技术
史亚峰天津大学 ASIC设计中心
2012.3.20
定义• 硬件木马:所谓硬件木马就是指在集成电
路设计与制造的过程中对原始电路进行的恶意篡改或植入的微小破坏电路。
• 特性:• 1. 具有破坏性• 2. 具有隐蔽性,不易被发现• 3. 只在极其罕见的条件下才被激活• 4. 主要分布在那些翻转概率较小的线网周围• 5. 对芯片面积、功耗和延时影响小
背景• 1. 集成电路产业飞速发展,分工越来越细,设计
与制造分离,导致集成电路设计与制造过程中参与的人员与组织不可控,第三方组织的可靠性值得商榷,很可能被地方所利用
• 2. 使用第三方 EDA 工具,例如综合工具以及综合库等是否可靠,是否会对综合结果植入恶意结构
• 3. 第三方 IP 的使用• 4. 掩膜生产商的可信度?• 5. 代工厂的可信度?
问题?• 随之而来的问题
如何对芯片进行验证,排除被嵌入硬件木马的可能呢?
硬件木马检测技术• 传统的硬件木马检测技术:• 1. 输入激励,观察错误输出– 特点:耗时长,成本高,存在覆盖率问题以及
输入端的可控制性和输出端的可观察性。• 2. 旁道信号分析– 特点:通过观察木马电路对芯片功耗、延时等
旁路信号的影响检测硬件木马,耗时长,存在木马激活程度以及木马和电路规模相对大小问题。
发现问题
传统的硬件木马检测技术普遍存在的问题:
验证时间过长,这会加重产品的成本, 同时延缓产品的上市时
间。
如何缩短硬件木马检测时间,提高木马检测的效
率?
影响硬件木马检测的因素• 1. 工艺偏差• 2. 环境差异
由于硬件木马相对于原始电路来说一般规模比较小,它对电路旁路信号的影响很可能被工艺偏差或环境差异所掩盖。• 为了检测出硬件木马,我们需要增加硬件
木马对原始电路的影响,即增加木马的激活度。
问题转换• 硬件木马的活跃程度直接影响到了硬件木马
检测速度,也就是
硬件木马的检测时间∝硬件木马的激活时间
缩短硬件木马检测时间 = 缩短硬件木马激活时间• 因此可以提出一种方法,这种方法能够有效
缩短硬件木马激活时间,就可以有效提高硬件木马的检测效率
• 传统的木马检测方法中,功耗分析法使用最为广泛,因此,因此要想加速硬件木马的检测速度,就需要提出一种方法,这种方法能够增加木马的激活度,进而增加硬件木马对芯片功耗的影响,亦或是可以使规模较小的木马被完全激活并产生错误输出。
• 提出了一种加速木马激活程度的方法,就是在电路中插入扫描触发器( dSFF)
木马的结构
• 举例:
触发部分(trigger)
有效载荷(payload)
木马输入
(来自于原始电路
内部线网)
原始电路中的信号
硬件木马结构框图
有效载荷输出
基本概念• 木马逻辑锥:连接到木马门单元输入端的
组合逻辑电路• P0 :某线网位置出现逻辑 0 的概率• P1 :某线网位置出现逻辑 1 的概率• 翻转概率:某线网位置发生由逻辑 0 到 1
或由 1 到 0 的逻辑翻转的概率 Pj=P1*P0
实验 1
• 目标电路: Trojan1 和 Trojan2Trojan1 :逻辑锥较大,包含门数多,级数多;Trojan2 :逻辑锥较小,包含门数少,级数少
实验 1
• 仿真过程:使用 1000 组随机测试向量施加到目标电路输入端,观察木马输出端翻转次数
• 仿真结果:1. Trojan1 的 Tg1门输出端发生 67次翻转2. Trojan2 的 Tg3门输出端发生 421次翻转
• 结论:木马逻辑锥的结构、级数、输入信号数量以及木马门单元的类型能够影响硬件木马中线网翻转概率
实验 2
• 目标电路:( a)包含与门和或门( b)只包含与门
• GD 模型 : 线网发生一次翻转所需时钟周期数为 1/P-1;其中 P 为线网位置发生翻转的概率。
实验 2
• 实验过程:使用 1000 组随机测试向量施加到目标电路输入端,观察木马输出端发生一次翻转所需时钟周期数
• 实验结果及结论:仿真结果与通过 GD 模型计算得到的结果近似相等;木马输出端翻转概率与逻辑锥中门的类型相关
实验 3
• 目标电路: ISCAS’89 s298 和 s344– S298 :输入信号及触发器数较少;– S344 :输入信号及触发器数较多,二者门数相近
测试程序 输入信号数量 触发器数量 输入信号和触发器总数
包含门单元数
s298 3 14 17 68
s344 9 15 24 71
实验 3
• 实验过程:产生 1000 组随机测试向量,施加到目标电路输入端,记录电路中发生的翻转次数。
• 实验结果: s344 电路中检测到 56560次翻转,而 s298则发生了 44600次翻转。
• 结论: s344 和 s298包含的门单元数基本相等,但是前者包含的输入信号和触发器数量要比后者要多,仿真结果是 s344 翻转次数要比 s298多,这从侧面上反映了插入冗余的触发器可以起到提高电路翻转概率的作用。
引发的问题
如何插入冗余触发器?• 前面我们已经看到,插入冗余触发器可以
提高电路翻转概率,进而缩短木马的验证时间。那么如何插入硬件木马,在提高硬件木马验证效率的同时,又不会对原始电路造成影响是首当其冲的问题。
插入冗余触发器• 依据翻转概率 Pj=P1*P0 可知,当 P1≈P0 时,
翻转概率取最大值,而实际的电路中某线网位置出现逻辑 1 (或 0)的概率要远远大于逻辑 0 (或 1)的概率,因此就会造成该位置的翻转概率很小。
• 解决的办法是:– P0>>P1 时,引入或门,它可以降低该处逻辑 0 的概率– P1>>P0 时,引入与门,它可以降低该处逻辑 1 的概率
P1>>P0 P0>>P1
dSFF-AND dSFF-ORdSFF dSFF
插入冗余触发器
实验 4
• 目标电路:将实验 2 中的木马通过 dSFF-OR插入 dSFF 得到新目标电路
实验 4
• 实验过程:产生 1000 组随机测试向量施加到新的目标电路,观察记录输出端发生一次翻转所需要的时钟周期,同时使用 GD 模型计算发生一次翻转所需要的时钟周期
• 实验结果:仿真和计算结果显示插入 dSFF后,输出端翻转概率增加
• 结论:仿真结果表明通过插入冗余触发器能够增加线网位置翻转概率。
冗余触发器插入程序设置Pth
设置当前设计
计算设计中所有线网位置翻转概率
线网分组
翻转概率大
于Pth的线网
翻转概率小
于Pth的线网
排序得到新线网
序列(递增)
取出排在最前面的线
网作为target net
根据target net决定要
引入的门的类型
在目标线网位置通过前面确定
的dSFF-OR或dSFF-AND插入dSFF
统计小于Pth
的线网数
判断是否大于0
输出最终设计
是
否
冗余触发器插入程序1. 设置翻转概率阈值Pth
2. 设置当前设计3. 计算电路中所有线网位置逻辑翻转概率4. 找出翻转概率大于Pth的线网,组成线网序列HighTransitionNets
5. 设置排序方式为递增模式6. 将翻转概率大于Pth的线网排序7. 分离出翻转概率小于Pth的线网,组成线网序列LowTransitionNets
8. 统计翻转概率小于Pth的线网数目9. 取出排序后的HighTransitionNets序列中最前面的线网作为dSFF插入目标线网10. 根据目标线网位置出现0或1的概率大小决定引入的逻辑门类型11. 在目标线网位置通过逻辑门插入dSFF12. 更新设计为插入dSFF后的电路13. 计算更新的设计中所有线网位置翻转概率14. 分离出翻转概率小于Pth的线网15. 统计翻转概率小于Pth的线网数,判断该线网数是否小于插入dSFF前小于Pth的线网数16. 如果小于Pth的线网数在减少,则将当前设计更新为插入dSFF后的设计17. 判断小于Pth的线网数是否大于零,如果大于零则返回第9步继续进行dSFF插入操作,否则输出最终
设计
程序实现• 模块划分:• 1. 计算各线网位置翻转概率( TetraMAX)• 2.执行冗余触发器插入操作( Perl语言)• 3. 产生随机测试向量,并记录和分析各向往位置翻转情况( VCS)
实验 6
• 还有没有解决的问题,如何设定 Pth ?– 为此进行以下仿真实验,分别记录不插入 dSFF 以及插入
dSFF且 Pth 分别为 10e-05 、 10e-04 、 10e-03 、 10e-02
• 目标电路:分别插入了四种不同的木马电路的 s38417测试电路。
• 实验中主要记录参数: 1. 电路中总的翻转概率• 2.LT 、 MT 线网中翻转概率• 3. 木马电路中的翻转次数• 4. 木马翻转次数占总翻转次数的比率 TCA• 5. 产生错误输出的次数(即木马完全激活的次数) POC
实验 6
• 实验过程:产生 1000 组随机测试向量施加到测试电路中,并根据设定的 Pth 进行 dSFF插入,记录电路中翻转情况
实验结果
实验 6
• 实验结论:从中可以看出,插入冗余触发器后,TCA 参数在增加,也就是木马对电路的影响在增加。从 Pth 由 10e-05 增加到 10e-04 时, LT 、 MT以及 TCA 和 POC都在增加,但是继续增加到 10e-03 时,电路总的翻转次数反而在减少。这个实验也说明了增加 Pth 能够增加木马对电路的影响,但是 Pth 并不是越大越好,而是需要选定合适的Pth ,具体如何选择 Pth ,需要综合考虑插入 dSFF带来的面积和延时开销以及最大木马激活度去选择最优值。
小结• 电路的基本输入和触发器数目决定了电路
的翻转频率,通过插入冗余触发器可以有效提高木马的激活度,从而增大木马对芯片功耗的影响,从而提高木马的检测效率。
• 适用范围:适用于木马输入信号来自于原始电路的线网,对规模较小的木马效果尤为显著,而对于规模较大的木马则可以通过旁道信号分析进行检测。