文献标识码:A
DOI:10.16157/j.issn.0258-7998.190190
中文引用格式:刘敏,严迎建,南龙梅. 面向CGRCA配置比特流的硬件木马攻击防护方法[J].电子技术应用,2019,45(9):39-45.
英文引用格式:Liu Min,Yan Yingjian,Nan Longmei. A hardware Trojan attack protection method for CGRCA configuration bitstream[J]. Application of Electronic Technique,2019,45(9):39-45.
0 引言
粗粒度可重构阵列(CGRA)[1]兼具通用处理器(GPP)和专用集成电路(ASIC)的优势,在计算机视觉、信号处理和密码运算等数据密集型应用上,展现了强大的优势和潜力[1-2]。近年来,基于CGRA的粗粒度可重构密码阵列(CGRCA)[2]在密码处理领域发展十分迅速。与传统密码芯片相比,CGRCA是专门面向密码算法高速实现而设计的CGRA,具有可重构、并行度高和效率高的特点。随着芯片产业全球化的不断推进,CGRCA也遭受硬件木马(Hardware Trojan Horse,HTH)[1,3-4]攻击的潜在威胁。
硬件木马是对硬件电路的恶意修改或添加以达成攻击者的目的。CGRCA依赖配置流实现可重构[5],当前针对可重构设备配置流的硬件木马检测和防护技术,主要通过认证和编码实现,大多集中在FPGA领域,难以直接移植应用于CGRCA。如文献[1]面向CGRCA提出基于动态规划的安全配置方案,侧重于硬件木马容忍,无法防护攻击配置流的硬件木马。文献[6]提出一种基于软错误容忍的编码技术,以保护基于SRAM的配置存储器,但难以防护恶意硬件木马。文献[7]、文献[8]提出采用AES-GCM和AES-CMAC模式对FPGA配置流进行加密认证保护,但难以直接移植于CGRCA。
针对已有工作的不足,为了对CGRCA配置流进行保护,本文提出基于认证和加密安全引擎的硬件木马攻击防护方法。首先,综合分析了CGRCA结构及其配置特点,总结了面向CGRCA未加密原始配置流的安全漏洞,并给出了可能的攻击流程和植入方法。其次,针对该攻击流程,本文提出了基于改进CCM安全引擎的硬件木马防护措施,以软硬结合的形式实现对配置流完整性和真实性的保护,并通过资源复用进一步优化了面积开销。
1 CGRCA结构分析
1.1 CGRCA结构分析
CGRCA采用数据流加配置流驱动[2],主要由配置网络、控制网络和数据网络三部分组成[9]。CGRCA的硬件结构如图1所示。
如图1所示,配置网络由配置解析器和4个配置页面组成,通过配置可重构物理资源,完成对数据网络和控制网络的重构。控制网络经配置网络配置后,产生数据网络所需控制信号,以支持数据网络的正确运算。数据网络是CGRCA的主要运算部分,其核心是针对密码运算设计的2D-mesh结构可重构处理单元阵列(Reconfigurable Processing Unit Array,RPUA)。数据网络经配置网络配置后,能够组成特定密码运算所需的结构,在控制网络支持下,完成对数据的加解密操作。
1.2 CGRCA配置情况分析
下文以规模为8×8的CGRCA阵列为对象,分析其配置情况。单个规模8×8的阵列由4个规模4×4的小阵列组成,其中单个RPU为最小运算单元和最小配置单元。在具体配置时,阵列实际配置信息来自于阵列外部FIFO,其大小取决于具体映射的密码算法。所有配置信息采用层次化存储方式存储在配置网络中,其配置网络分为三层,包括单元配置存储UCM、局部配置存储LCM和全局配置存储GCM,如图2所示。配置网络中单元配置存储UCM负责单个RPU单元单个配置页面的配置信息寄存,每个RPU单元的配置信息由4个UCM共同负责。局部配置存储LCM负责阵列的配置信息存储,全局配置存储GCM负责阵列的配置信息存储和4个小阵列的共享存储。具体配置比特文件由包头和配置信息块组成,其组织形式如图3所示。
图3中,包头将配置信息分成不同的模块。包头包含配置信息块的分发和转移信息,配置信息块则代表具体配置任务。CGRCA在配置时,首先,在配置端完成从算法DFG图到配置比特流的转换,接着通过JTAG端口将外部配置流文件传输到CGRCA的输入FIFO,然后由CGRCA配置端口写入CGRCA阵列存储器内,最后,配置解析器解析配置流文件,通过不同单元配置信息的分发和转移来完成配置。配置信息在分发和转移时,都以1个配置页面为最小单元,从而能实现单个RPU的单时钟周期配置。
2 面向CGRCA配置流的硬件木马攻击威胁
2.1 面向CGRCA配置流的硬件木马分类
面向配置流进行硬件木马攻击,通常通过不可信的EDA工具、不可信的传输信道或者不可信的使用者实施。其攻击对象是CGRCA配置流,其主要手段是直接修改配置信息比特流文件。与FPGA配置流的硬件木马[5]类似,根据硬件木马电路与原始电路在CGRCA的占用资源是否重叠,可以分为资源相关型硬件木马(RDH)和资源无关型硬件木马(RIH)两类。图4为两类硬件木马的示意图。
图4(a)为未受到硬件木马攻击时,含有6个节点的原始DFG图映射到阵列上的情况。资源相关型硬件木马是指插入的硬件木马电路与原始电路在CGRCA上占用的资源部分或者完全重叠。此时,硬件木马电路与原始电路不独立,而是以某种方式相互连接。如图4(b)中,RDH型硬件木马的触发电路与节点C所在单元重合。资源无关型攻击是指插入的硬件木马电路与原始电路在CGRCA上占用的资源无重叠。资源无关型硬件木马通常不会影响到原始电路功能,和原始电路功能彼此独立。如图4(c)中,RIH型硬件木马电路的触发单元和有效载荷均不与原始电路相连。考虑到CGRCA主要用于实现密码算法,因此对攻击者而言,其主要目的是窃取密钥或者破坏原始电路逻辑功能。RIH型硬件木马虽然插入简单,但是不能破坏原始功能,无法完成上述攻击目的。因此,本文侧重讨论资源相关型硬件木马(RDH型)攻击。
2.2 RDH型硬件木马攻击流程
RDH型硬件木马插入较为复杂,需要攻击者熟悉配置比特流与CGRCA架构连接之间的相关性。对于攻击者而言,即便配置比特流是可获得的,要成功实施RDH型攻击,仍然存在两个主要问题:首先,攻击者必须熟悉配置比特流的结构;其次,必须在大量原始比特流中找到对应攻击比特。现有可重构设备的比特流均采用专有文件格式[10],并没有公开文献分析比特流与硬件资源的对应关系。因此,即使攻击者完全获取到比特流,如何识别和攻击未知设计中的关键部件也是巨大的挑战。而通过分析CGRCA的结构特征可知,CGRCA中的关键加密部件包含密钥处理单元RKB和非线性部件RSB。假设攻击者掌握原始比特流中对应包头信息,则针对特定的RKB和RSB进行攻击是完全可行的。
为成功实施攻击,攻击者首先利用原始比特流文件,通过搜索应RKB对应包头信息,找到原始阵列平台中的密钥处理单元配置流信息,然后通过修改关键数据流以针对性地插入硬件木马,导致最终结果出错。因此,硬件木马攻击的输入为原始配置信息流文件和硬件木马数据库,关键步骤为特定资源搜索和比特流修改,其攻击流程如图5所示。
图5中,Golden.bin文件表示与原始映射设计对应的二进制文件,HT.bin文件表示硬件木马对应的二进制文件。硬件木马修改程序首先采用资源搜索子程序识别出配置比特流中的关键资源,若找到关键资源,则顺序搜索选定硬件木马数据库中的硬件木马,再通过比特流修改子程序对原始文件进行修改,得到篡改比特流文件Modifiedgolden.bin。如果未找到特定资源或合适的硬件木马,则退出程序不做修改。资源搜索子程序的目标是利用原始配置比特流识别出关键资源块,比特流修改子程序的目标是利用硬件木马数据库修改关键资源数据流数据。
根据上述攻击流程可知,无安全机制的保护时,配置比特流易遭受硬件木马攻击。攻击者能成功实施攻击的一个重要原因,在于Golden.bin文件和最终输入的Modifiedgolden.bin文件之间不存在校验机制,导致应用者不能保证最终配置流就是正确的配置流。
3 面向配置流的硬件木马防护方法
为了使对手难以通过直接修改比特流来插入硬件木马,防止配置流出现错误或被恶意篡改,可重构设备在配置时必须对配置比特流真实性和完整性进行保护。现有文献主要有校验[5,10]和认证[7-8]两类方法,前者通常在比特流中添加校验码,采用的线性函数可以相对容易地伪造,且难以检测恶意篡改[12]。后者的安全基础是认证加密算法,不仅能对比特流进行加密和认证,同时能实现比特流信息防篡改,因此本文采用认证加密的方式。
3.1 标准CCM模式原理
早期认证加密主要存在三种模式[5]:加密后认证(Encrypt-Then-MAC,ETM),认证后加密(MAC-Then-Encrypt,MTE)以及加密并认证(MAC-And-Encrypt,MAE),但这些模式难以保证安全性。公钥密码(PKC)和哈希消息认证码(HMAC)理论上适用于比特流认证和加密,但是其硬件成本较高[5],考虑到实现的安全性和硬件实现效率,本文采用国际标准化组织和 NIST收录的CCM模式[13]进行加密认证。CCM加密认证分别采用计数模式(Counter,CTR)和CBC-MAC模式,均为前向反馈模式,因此其加解密函数相同,适用于资源受限、安全要求高的CGRCA应用场景。
标准CCM模式同时具有加密和认证的功能,是CTR加密模式和CBC_MAC认证模式的组合。下面对CCM模式下的部分变量进行定义。设输入明文数据为长度为Plen的字符串P,采用格式化函数分块以后的字符串表示为Bj(1≤j≤),密钥为K,加密过程生成中间值为Si,其中i的取值范围是[0,],认证过程生成的中间值为Yj,其中j的取值范围也是[0,],最终加密得到密文数据为C,则基于CTR模式下的加密过程的定义式如式(1)所示:
式中,表示不小于实数x的最小整数,||代表拼接运算,MSBx(y)表示取y数的高x位,CTR(x)代表第x个计数块,计数块的值由随机数Nounce和计数器共同决定,T是由CBC_MAC模式生成的认证码。
基于CBC_MAC模式下的认证过程的定义式如式(2)所示:
由定义可知,在标准CCM模式下,加密和认证过程采用相同的密钥,这导致在硬件实现时,一旦攻击者获取了密钥,将导致所有密文和认证码均失效。同时,标准CCM采用格式化函数统一处理数据,并对处理后的所有数据进行加密。而对于阵列配置文件而言,不同配置文件的数据量由实际算法确定,其采用包头+数据的形式,若采用全部加密,数据量可能较大,导致加密时间过长,因此数据统一处理无法直接应用于阵列配置流的加密。
基于以上分析,本文提出的改进CCM安全机制对标准CCM模式进行如下调整:(1)加密和认证过程采用不同密钥;(2)数据加密认证前,首先进行预处理,将包头与数据分离,仅对数据部分进行加密认证。将调整后的认证加密过程嵌入到原始配置流程中。
3.2 改进CCM机制原理
为了实现对配置比特流文件的保护,防止其被篡改,改进CCM安全机制采用软硬结合的方式,分别建立了基于加密认证的配置安全保护机制和基于解密验证的硬件安全防护结构,其安全配置保护机制和硬件安全防护结构如图6所示。
改进CCM安全机制首先在基于加密认证的配置安全保护下,通过软件方式对生成的配置比特流进行部分加密并生成消息认证码,保证配置流难以被篡改。其次,在配置比特流加载到配置端口前,采用基于验证的硬件安全结构对其进行解密和认证,保证配置流的任何篡改都能被发现。
基于加密认证的配置安全保护流程在原始配置流程中添加了加密和认证的步骤,首先定义配置安全保护流程的先决条件和涉及参数。
先决条件:128位AES分组密码算法;加密密钥K1;认证密钥K2;预处理函数f(x);格式化函数g(x);计数块生成函数h(x);后处理函数p(x);生成认证码长度Tlen。
输入:随机数N;长度为Plen的配置流数据P;
输出:加密密文C;
具体步骤如下:
为了正确解密和验证配置流文件,本文设计了图6右侧的基于解密验证的硬件安全防护端,其中阴影部分为包含了两个并行AES核以及一个异或非验证门的硬件安全引擎。与软件安全配置流程对应,安全双引擎的两个AES核采用不同的密钥并行工作,一个核用于解密,一个核用于认证。其数据处理过程与加密认证过程相逆,此处不再赘述。
本方案中的加密步骤采用部分加密,即仅对配置流中的配置信息块进行加密,相比于全部加密,其优势在保持安全性的同时使得开销更低。同时,加密和认证使用不同的密钥,能够避免漏洞,进一步保证系统的安全性。在实际操作过程中,操作者可以通过配置选择信号选择是否进行身份验证,若不使用身份验证,可以采用全0替换计算好的认证码。
3.3 改进CCM硬件实现
本文提出的防护方法采用软硬结合的方式,在安全配置流程的配合下,采用改进AES-CCM模式实现对配置流数据的加密认证。在硬件实现时,两个采用前向反馈模式的AES核并行执行操作,极大减小数据处理时间,通过共享S盒查找表和密钥生成模块,进一步节省面积开销。
改进CCM安全机制在实现时,两个AES核并行工作,其中解密引擎CORE1以CTR模式工作的AES作为数据加密方式,对去掉包头的信息块进行解密。认证引擎CORE2以CBC-MAC模式工作的AES对去除MAC的数据部分进行认证,CTR和CBC_MAC并行工作原理如图7所示。
为了保证CMAC认证过程和CTR解密过程是并行执行的,本文调整了解密块数据生成的顺序。首先通过认证块B0和解密密文块C1生成B1,再依次生成Bi(2≤i≤n-1),并生成验证码T。同时,通过CTR(0)生成S(0),与密文低Tlen位异或得到传送过来的验证码,最后将传送验证码与计算验证码进行异或验证,得到验证信号valid。具体时序如图8所示。在生成CMAC时的具体硬件结构示意如图9所示。
硬件实现时,为了提高加密和验证的速度,基于CTR-CMAC模式的双引擎架构使用4个32位AES实现128位AES运算进行解密和身份验证。在使用CBC-MAC模式完成认证的同时,使用CTR模式执行解密过程,对于一组128位的数据至少需要12个时钟周期才能完成解密和验证工作。因此硬件安全引擎的最大吞吐量为:
其中,fmax为最大工作频率,block为分组数据长度,T为分组处理时钟周期数,吞吐量单位为Mb/s。
4 评估与验证
为了对硬件木马防护方法进行验证和评估,本文以规模8×8的CGRCA阵列为目标电路进行仿真实验。首先,采用C语言编程实现了2.2节中描述的硬件木马可能攻击流程,挑选典型密码算法AES算法、SMS4算法和A5/1算法的无流水配置文件,作为Golden.bin文件。同时,分别设计如图10、图11示意的组合触发功能修改型(C型)和时序触发功能修改型(S型)硬件木马,建立CGRCA硬件木马数据库,并面向CGRCA生成相应HT.bin文件。该数据库包含20种硬件木马,为便于结果检测,均为功能修改型硬件木马。表1列举了硬件木马数据库部分信息。
为了对本文的设计方案进行验证,采用C++在配置端实现了安全配置流程,并采用硬件描述语言Verilog HDL在CGRCA中搭建硬件双安全引擎架构,按照攻击流程对CGRCA配置流实施攻击。为了验证防护效果,将硬件木马通过配置流分别插入到原始电路和防护电路中进行多次实验,将防护前后的平均硬件木马攻击成功率RS、平均正确输出比例APCO[1]作为指标进行对比,表2为待测电路防护前后的对比结果。
表2以插入硬件木马的个数标识待测电路,如AES(CS5/5)指在原始电路上插入5个C型木马和5个S型木马。硬件木马攻击成功率RS为对配置流进行硬件木马攻击后,成功并实现逻辑功能修改的概率。正确输出比例APCO是指错误输出个数占总输出个数的比例。表2的结果表明,在不同的待测电路上,插入不同种类和数量的硬件木马后,防护后的电路均能有效降低硬件木马攻击成功率,并提高平均正确输出比例。为了进一步评估防护方法的性能,将本文架构的硬件实现结果与现有文献的加密验证结构AES-CCM[16]、AES-GCM[7,17]、AES-SHA[7]进行对比,对比指标包括面积、频率、吞吐率和效率,其中效率的计算方式为吞吐率与面积的比值,具体对比结果如表3所示。
从表3可以看出,本文所用硬件结构在综合效率上优于文献[7]、[16]和[17]中的结构,同时本文采用的结构能达到最高的吞吐率。在所选的三项指标上,本文与文献[7]的GCM结构性能比较接近,但是本文在实现加密认证的同时,首次提出了将其应用于CGRCA配置流的硬件木马防护。综合来看,本文结构有较好的优越性。软件安全配置流程保证了CGRCA配置流难以被篡改,双安全引擎的构造可实现对配置流的解密和认证,分块加密增加了硬件处理速度,共享AES加密核进一步减小了硬件面积开销,提高了硬件结构的整体效率。
5 结论
随着CGRA越来越多地应用于各领域,面向CGRA的安全防护至关重要。硬件木马作为主要安全威胁之一,能对无校验机制的CGRCA配置流实施攻击。本文首先详细分析了CGRCA的结构及其配置过程,得出了配置过程中可能的攻击流程和攻击方法。然后,针对这种可能的攻击,提出了一种有效的硬件木马防护方案,采用软件上的安全配置流程,结合硬件上共享S盒的双AES安全引擎,实现对配置流数据的完整性和真实性的保护。该防护方法效率高,面积开销小,同时对现有配置过程影响较小,适合工程实践。
参考文献
[1] Liu Leibo,Zhou Zhuoquan,Wei Shaojun,et al.DRMaSV:enhanced capability against hardware trojans in coarse grained reconfigurable architectures[J].IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems,2017,37(4):782-795.
[2] 李远铭,严迎建,李伟.基于粗粒度可重构密码阵列的AES算法映射实现[J].计算机应用与软件,2018(3):304-308.
[3] XIAO K,FORTE D,JIN Y,et al.Hardware trojans:lessons learned after one decade of research[J].ACM Transactions on Design Automation of Electronic Systems,2016,22(1):1-23.
[4] AGRAWAL D,BAKTIR S,KARAKOYUNLU D,et al.Trojan detection using IC fingerprinting[C].IEEE Symposium on Security and Privacy.IEEE Computer Society,Berkeley,USA,2007:296-310.
[5] CHAKRABORTY R S,SAHA I,PALCHAUDHURI A,et al.Hardware trojan insertion by direct modification of FPGA configuration bitstream[J].IEEE Design & Test,2013,30(2):45-54.
[6] AHILAN A,DEEPA P.Modified decimal matrix codes in FPGA configuration memory for multiple bit upsets[C].IEEE International Conference on Computer Communication and Informatics,2015:1-5.
[7] HORI Y,KATASHITA T,SAKANE H,et al.Bitstream protection in dynamic partial reconfiguration systems using authenticated encryption[J].IEICE Transactions on Information & Systems,2013,E96-D(11):2333-2343.
[8] SAAR D.Security for volatile FPGAs[D].University of Cambridge,2009.
[9] 陈韬,罗兴国,李校南,等.一种基于流处理框架的可重构分簇式分组密码处理结构模型[J].电子与信息学报,2014,36(12):3027-3034.
[10] SWIERCZYNSKI P,FYRBIAK M,KOPPE P,et al.FPGA trojans through detecting and weakening of cryptographic primitives[J].IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems,2015,34(8):1236-1249.
[11] Xilinx Inc.Virtex-II platform FPGA user guide(v2.2)[DB/OL].(2012-07-xx)[2019-02-25].http://www.xilinx.com/support/documentation/virtex-ii.htm.
[12] SALMANI H,TEHRANIPOOR M,KARRI R.On design vulnerability analysis and trust benchmark development[C].IEEE International Conference on Computer Design(ICCD),2013.
[13] DRIMER S.Authentication of FPGA bitstreams:why and how[C].International Conference on Reconfigurable Computing:Architectures,Tools and Applications.Springer-Verlag,2007:73-84.
[14] DWORKIN M.Recommendation for block cipher modes of operation:the CMAC mode for authentication[DB/OL].[2019-02-25].https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-38b.pdf.
[15] PARELKAR M.Authenticated encryption in hardware[D].George Mason University,2005.
[16] ABDELLATIF K M,CHOTIN-AVOT R,MEHREZ H.Protecting FPGA bitstreams using authenticated encryption[C].IEEE International New Circuits and Systems Conference,2013:1-4.
[17] PHAN T T D,HOANG V P,DAO V L.An efficient FPGA implementation of AES-CCM authenticated encryption IP core[C].IEEE Information and Computer Science,2016:202-205.
作者信息:
刘 敏1,严迎建1,南龙梅1,2
(1.解放军信息工程大学,河南 郑州450001;2.复旦大学 专用集成电路与系统国家重点实验室,上海200433)