技术领域
[0001] 本
发明属于硬件安全技术领域,具体涉及一种低开销的FPGA硬件木马设计方法的设计。
背景技术
[0002] 近年来FPGA(Field-Programmable Gate Array,现场可编程
门阵列)在各个领域的大量应用使得其安全问题日益成为研究重点。硬件木马作为黑客攻击硬件安全的重要技术手段,也被实现于FPGA设计中,影响其运行可信性与可靠性。
[0003] 现有的FPGA硬件木马设计大多数都是在RTL(Register Transfer Level,寄存器传输层次)级,通过硬件描述语言直接添加硬件木马模
块而得,例如在Digilent BASYS Spartan-3FPGA开发板上实现了8种不同的针对加密模块的RTL级硬件木马,或者通过添加和
修改VHDL(Very-High-Speed Integrated Circuit Hardware Description Language,超高速集成
电路硬件描述语言)在Leon3处理器中加入非法内存
访问和影子模式等恶意功能。在FPGA设计流程中,对代码的任何微小修改都会导致整个设计的重新综合与布局布线,因此,除非对原始代码进行优化来减少开销,否则使用这种方法设计的硬件木马增加总资源开销是无法避免的。
[0004] 现有的另一种RTL级与布局级共同实现硬件木马植入的方法,需要先在RTL级修改原始设计得到含有硬件木马的完整设计,再从布局级去掉硬件木马与原始设计之间的连线。该方法规避了设计重新综合布局的不确定性,但硬件木马占用的资源开销也是无法避免的。
[0005] 另一类设计FPGA硬件木马的技术则是完全在布局级实现硬件木马的植入,例如在布局布线完成的原始设计中,通过FPGA Editor工具,添加恶意硬件木马逻辑,或者利用RapidSmith API实现FPGA布局级的硬件木马植入。以上方法的硬件木马逻辑开销大小取决于设计者对木马的优化程度,但也都使用了新的片上逻辑资源。
发明内容
[0006] 本发明的目的是为了减少在FPGA上实现硬件木马所需的资源开销,增加硬件木马的隐蔽性,提出了一种低开销的FPGA硬件木马设计方法。
[0007] 本发明的技术方案为:一种低开销的FPGA硬件木马设计方法,包括以下步骤:
[0008] S1、对不含木马的FPGA设计进行综合与布局布线,得到该FPGA设计的原始设计网表。
[0009] S2、构建硬件木马触发机制与预期实现的恶意功能,并采用FPGA支持的基本元件(LUT、寄存器和进位链逻辑等)搭建硬件木马逻辑。
[0010] S3、寻找FPGA中可用于木马植入的LUT资源。
[0011] S4、根据香农展开定理分解硬件木马逻辑的布尔函数。
[0012] S5、将分解后的布尔函数全部分配到可用于木马植入的LUT资源中。
[0013] S6、判断硬件木马电路中所有LUT逻辑是否都在FPGA中实现,若是则进入步骤S7,否则返回步骤S4。
[0014] S7、得到植入硬件木马的网表文件。
[0015] 本发明的有益效果是:本发明充分利用了FPGA中一个LUT可以实现两个不同布尔函数的特性,大幅度降低硬件木马植入带来的开销,尤其当木马逻辑完全由LUT实现的时候,开销降低效果更加明显。
附图说明
[0016] 图1所示为本发明
实施例提供的一种低开销的FPGA硬件木马设计方法
流程图。
[0017] 图2所示为本发明实施例提供的实现6输入布尔函数的LUT示意图。
[0018] 图3所示为本发明实施例提供的实现2输入布尔函数的LUT示意图。
[0019] 图4所示为本发明实施例提供的硬件木马逻辑在可利用的LUT中的实现效果示意图。
具体实施方式
[0020] 现在将参考附图来详细描述本发明的示例性实施方式。应当理解,附图中示出和描述的实施方式仅仅是示例性的,意在阐释本发明的原理和精神,而并非限制本发明的范围。
[0021] 本发明实施例提供了一种低开销的FPGA硬件木马设计方法,如图1所示,包括以下步骤S1-S7:
[0022] S1、对不含木马的FPGA设计进行综合与布局布线,得到该FPGA设计的原始设计网表。
[0023] S2、构建硬件木马触发机制(触发器)与预期实现的恶意功能(有效
载荷),并采用FPGA支持的基本元件(LUT、寄存器和进位链逻辑等)搭建硬件木马逻辑(暂不嵌入FPGA中)。
[0024] 针对原始设计的功能,攻击者可以设计不同的木马激活方式以及恶意功能攻击原始设计。FPGA设计与一般的数字电路设计不同的地方在于,通过LUT实现门电路相应的逻辑函数,因此在设计硬件木马时,虽然采取通常的组合、时序
逻辑电路设计原理分别对触发器和有效载荷进行实现,但需要将门电路逻辑通过LUT表示。
[0025] LUT(Look-Up-Table,查找表)是FPGA中最基本的组成元素,可以用于实现任何N个布尔变量的逻辑函数,其中N为LUT输入引脚数。本发明实施例中以Xilinx FPGA为例,Xilinx FPGA一般由6输入LUT组成,一个LUT包含6个输入引脚A1~A6和两个独立输出引脚O5、O6。一个LUT可实现:
[0026] (1)任意一个6输入布尔函数,如图2所示。图2中A1~A6为输入引脚,O6为输出引脚。
[0027] (2)任意两个5输入布尔函数,要求两个函数具有共同的输入,引脚A6置‘1’。
[0028] (3)任意两个3输入与2输入,或更少输入的布尔函数,引脚A6置‘1’。
[0029] 通过利用上述特性,一个LUT可以实现两个布尔函数,本发明得以降低硬件木马的LUT开销。
[0030] S3、寻找FPGA中可用于木马植入的LUT资源。
[0031] 步骤S3具体包括以下分步骤S31-S33:
[0032] S31、根据步骤S1得到的原始设计网表信息,获取原始电路占用的LUT集合A。
[0033] S32、删除集合A中不能被木马利用的LUT资源,得到可用于木马植入的LUT集合C。
[0034] 其中,不能被木马利用的LUT资源包括输出引脚已完全被占用的LUT集合B1、输入引脚已经完全被占用的LUT集合B2以及输入引脚只有一个未被占用的LUT集合B3,因此C=A-B1-B2-B3。
[0035] S33、对集合C进行标记,作为可用于木马植入的LUT资源。
[0036] S4、根据香农展开定理分解硬件木马逻辑的布尔函数。
[0037] 从可用于木马植入的LUT资源中任意选取一个硬件木马电路的LUT逻辑fj(1≤j≤n,n为实现硬件木马所需的LUT数量),根据香农展开定理对其所包含的布尔函数进行分解,表示为若干子函数的和,使得每个子函数的变量个数减少;重复上述分解步骤,直至每个子函数的变量个数pi小于等于4(1≤pi≤4,1≤i≤m,m为子函数的个数)。
[0038] 硬件木马的组合逻辑电路都是由6输入LUT搭建而成的,其布尔函数为f(x1,x2,x3,x4,x5,x6)。由香农展开定理,任何一个逻辑函数f(x1,x2,…,xi-1,xi,xi+1,…,xn),都可以表示为:
[0039]
[0040] 根据该定理,可以将布尔函数分解为若干个子函数的和,使得每个子函数变量个数都小于等于4。
[0041] 本发明实 施例中 ,假设在硬 件木马电 路中选取的 LUT函数为 :根据香农展开定理,该硬件木马逻辑的布尔函数可以被
分解为 F3=N3+N2+N1,其中,F1、F2、F3即为三个子函数。
[0042] S5、将分解后的布尔函数全部分配到可用于木马植入的LUT资源中。
[0043] 对步骤S4分解得到的任一子函数fi,在集合C中随机选取一个剩余引脚数大于等于pi的LUT,在原始设计网表上修改该LUT的
真值表,在其未使用的输出端实现子函数fi的输出,同时将该LUT从集合C删除;重复该步骤直至所有的子函数都被分配到FPGA可用于木马植入的LUT资源中。
[0044] 本发明实施例中,以步骤S4中的一个子函数F3=N3+N2+N1为例,变量数p3=3,在集合C中随机选取一个2输入布尔函数的LUT,剩余4个引脚,如图3所示。图3中A4、A5为输入引脚,O6为输出引脚。在原始设计网表上修改该LUT真值表,使O5实现子函数F3输出,实现效果如图4所示。图4中实现了两个布尔函数,引脚A6置‘1’,引脚A4、A5、O6为原始设计中的2输入布尔函数,引脚A1~A3、O5实现的是子函数F3。
[0045] S6、判断硬件木马电路中所有LUT逻辑是否都在FPGA中实现,若是则进入步骤S7,否则返回步骤S4。
[0046] S7、选取FPGA中的其它逻辑元件(寄存器和进位链逻辑等)实现硬件木马的其余逻辑,使这些逻辑元件同木马LUT之间的汉明距离之和最短,再通过最
短路径
算法对硬件木马逻辑进行布线,使其与原始FPGA设计相关联,能够实施恶意功能,得到植入硬件木马的网表文件。
[0047] 根据本发明的方法,将硬件木马的设计技术通过Vivado 2016.4
软件,实现在VC707开发板上,FPGA芯片型号为xc7vx485tffg1761-2。本发明实施例中,采用的原始设计为一个对32位明文数据加密的RSA模块,仅设计硬件木马的触发部分,不实现木马的恶意功能,足以说明本发明木马设计技术的有效性。该硬件木马在输入明文第八次为32’h01fa0301时被触发。表1为加入木马前、普通的布局级设计木马方法(在布局布线完成的原始设计中,通过FPGA Editor工具,添加恶意硬件木马逻辑)、本发明的方法设计木马的资源开销比较。
[0048] 表1
[0049] 无木马设计 普通方法 本发明方法
LUT 669 680 669
寄存器 645 649 649
[0050] 通过对比可以看出,采用普通的布局级设计木马方法的硬件木马LUT开销为11个,寄存器开销为4个,而采用本发明方法设计的硬件木马LUT开销为0个,寄存器开销为4个。因此,本发明在很大程度上节省了实现硬件木马所需要的LUT资源开销。
[0051] 本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体
变形和组合,这些变形和组合仍然在本发明的保护范围内。