【安全硬件】Chap.3 如何插入一个硬件木马到芯片的组合逻辑电路的漏洞里?如何进行硬件的逻辑加密在不影响正常电路的功能的情况下
- 1. 组合逻辑电路的漏洞
- 组合逻辑电路中的硬件木马—举例
- Fault injection attacks
- 士兵巡逻预案系统解决方法——硬件的逻辑加密(Logic encryption of hardware )
- 士兵巡逻预案系统的反思
- 硬件的逻辑加密(Logic encryption of hardware )
- 2. Design for Trust Techniques
- 3. 组合逻辑电路的一般设计流程与卡诺图化简
硬件木马(Hardware Trojan)一般潜伏在实际电路里面,平时并不会影响电路的运行,但因为组合逻辑电路的漏洞常常会造成系统崩坏。而逻辑加密logic encryption,通过在原始设计中插入额外的门(称为密钥门)来隐藏设计的功能和实现,从而在一定情况下防止硬件木马。
1. 组合逻辑电路的漏洞
输出取决于输入信号的逻辑组合的电路称为“数字组合逻辑电路”,因为没有记忆(memory)所以其输出仅取决于其输入的当前值,主要用来搭建功能性的模块(functional block)。
组合逻辑电路中的硬件木马—举例
本作者在这里举个例子,来说明硬件木马的破坏力Hardware Trojan:比如要求设计一个在挑选士兵巡逻预案的系统,列出了5种天气情况下,士兵X和士兵Y巡逻任务安排,编写真值表如下:
inputs | outputs | |||||
---|---|---|---|---|---|---|
编码说明 | A | B | C | X | Y | |
下雪 | 0 | 0 | 0 | 两人都巡逻 | 1 | 1 |
刮风 | 0 | 0 | 1 | X巡逻 | 1 | 0 |
炎热 | 0 | 1 | 0 | X巡逻 | 1 | 0 |
下雨 | 0 | 1 | 1 | Y巡逻 | 0 | 1 |
下冰雹 | 1 | 0 | 0 | Y巡逻 | 0 | 1 |
设计者的本意是按照领导的意思,不管下雪还是下冰雹,都有一个人巡逻,于是他很开心地列出了逻辑表达式:
- X = A ˉ B ˉ + A ˉ C ˉ X=\bar{A}\bar{B}+\bar{A}\bar{C} X=AˉBˉ+AˉCˉ
- Y = B C ˉ + B ˉ C ˉ Y=B\bar{C}+\bar{B}\bar{C} Y=BCˉ+BˉCˉ
然后他根据表达式搭建了这个挑选士兵巡逻预案的硬件芯片的组合逻辑:
细心的读者可以发现,上面的真值表包含了其他输入情况下的无关项,但是实际上这片军营附近并不会出现其他的天气,也就是说在正常情况下不管下雪还是下冰雹,都有一个人巡逻。
假如有一个刺客,我想搞一个暗杀行动,不想今天有人巡逻,我就得让两个士兵都接收不到命令,即想办法使得输出A和B都是0。实际上原设计并不会输出AB为00的情况因为硬件芯片组合逻辑电路上没有这个功能。
分析完成后,那么我攻击目的很简单:
- 首先让系统能输出00的情况,在这种情况下,今天不会有人巡逻。
- 得到刺杀任务之后,辅助采取别的手段激活这种情况,有特殊的输入可以启动我的木马让系统能输出00。
第一件事就是插入一个木马,为注入攻击留下后门。观察真值表中的无关项,将无关项置零(给系统加上隐患漏洞),让硬件系统有输出00的可能。
根据真值表的写出表达式:发现实际上只变了在输出Y的表达式
- X = A ˉ B ˉ + A ˉ C ˉ X=\bar{A}\bar{B}+\bar{A}\bar{C} X=AˉBˉ+AˉCˉ
- Y = A ˉ B C ˉ + B ˉ C ˉ Y=\bar{A}B\bar{C}+\bar{B}\bar{C} Y=AˉBCˉ+BˉCˉ
根据逻辑表达式画出此时的组合逻辑图
实际上,我这个“刺客”只添加了一个与门,增加了两条连线就把巡逻任务置于危险之下:此时的士兵巡逻预案系统可以输出00,即添加了没有士兵巡逻的情况。称原设计为一种Untrusted Design,插入硬件木马后的设计为Infected Design。
插入硬件木马后的设计为Infected Design,不影响日常的使用,因为平时的系统使用也用不到其他的输入,正如前文提及实际上这片军营附近并不会出现其他的天气,也就是说在正常情况下不管下雪还是下冰雹,都有一个人巡逻。但是,刺客在硬件上开了这个后门,允许无人巡逻的情况发生。
This creates a backdoor into the design which can be used as a killer switch or for fault inection attack.
这时候比如刺客有很先进的一个强光照射设备可以改变某一处的电压,直接让系统的输入为111,那么士兵巡逻预案系统如刺客所想,可以直接输出00,即士兵A和士兵B都不巡逻,结果是没有士兵巡逻。。。
Fault injection attacks
Fault injection attacks on cryptographic devices and countermeasures
IoT Security - Part 20 (101 - Introduction to Fault Injection Attack (FI))
故障注入是在异常情况下对设备的物理攻击,目的是故意在系统中注入故障以改变其预期行为。
- 改变电源电压 ——产生尖峰
- 改变时钟频率 ——产生故障
- 加热设备,使得芯片过热
- 强光照射——相机闪光灯或精确激光光束
士兵巡逻预案系统解决方法——硬件的逻辑加密(Logic encryption of hardware )
士兵巡逻预案系统的反思
刺客所设计的硬件木马直接破坏了所设计的硬件IC芯片的安全性,这一切的一切都是因为系统的设计者留下了无关项,给刺客可乘之机。很简单的改进策略就是,让系统不能产生00输出,将无关项的输出全部给1,这样就保证了至少有一个人巡逻。
Simple countermeasure: To prevent a 00 output you can specify the "don’t care "conditions.
硬件的逻辑加密(Logic encryption of hardware )
硬件的逻辑加密(Logic encryption of hardware )并不是用密码算法对设计文件进行加密; 相反,它意味着加密硬件的功能。通过在原始设计中插入额外的门(称为密钥门)来隐藏设计的功能和实现。以免设计表现出不正确的功能(即防止产生不正确的输出)。
2. Design for Trust Techniques
Design for Trust是一种思想,使用预防性设计技术来克服木马检测的挑战。策略是构建可信赖的 IC电路,它完全按照要求进行设计逻辑,不多也不少
- The use preventative design techniques has been proposed to overcome the challenges of Trojan detection.
- A trusted IC is an integrated circuit which does exactly what it is asked for, no less and no more.
- Untrusted circuit may fail to deliver all required functional specifications or may perform additional malicious tasks.
基本分类有四种:
- 逻辑加密logic encryption,通过在原始设计中插入额外的门(称为密钥门)来隐藏设计的功能和实现。
- 拆分制造split manufacturing
- IC 伪装IC camouflaging
- 木马激活Trojan activation
Regaining Trust in VLSI Design: Design-for-Trust Techniques
Advancing the State-of-the-Art in Hardware Trojans Design
3. 组合逻辑电路的一般设计流程与卡诺图化简
- 分析要解决的问题。电路的功能、输入输出是什么、画出简单的小系统框图(block diagram)可以分析输入输出的关系。
- 使用合适的设计表示来表述问题。真值表或波形图描述、用计算机语言编码一定的输入输出符号。(formulate the problem using a suitable design representation)
- 选实施的功能性模块,如ROM、PLA、二选一选择器、译码器、或门、离散门等等。(Choose implementation target)
- 按照步骤实施,卡诺图化简成想要的形式(可能是两层gj括号的表达式方便控制延迟)、硬件描述语言verilog描述并用工具解释(Follow implementation procedure)
K-maps for two-level will reduce delay