针对FPGA克隆技术展开研究,指出其关键问题在于对加密密钥的攻击,并以Xilinx公司7系列FPGA为列,讨论了采用AES-256 CBC模式解密条件下的攻击点函数选择方法,通过单比特功耗模型实施差分能量攻击,成功恢复了256 bit密钥。同时,针对不可直接代入密钥检验正确性的问题,设计了一种基于DPA攻击相关系数极性的检验方法,避免了密钥错误引起FPGA错误配置,实验表明,该方法能够有效消除相关系数的“假峰”现象。
0 引言
随着可编程技术的不断发展,FPGA已经成为各类商业系统的重要组成部分。然而,由于配置文件(比特流)必须存储在FPGA外部,通过窃取外部存储器后,攻击者可直接盗版生产,还可通过FPGA逆向工程(FPGA Reverse Engineering)获得硬件设计[1,2]或加入硬件木马[3,4],对产品进行伪造和破坏,严重地威胁了用户知识产权。
为克服这一漏洞,Xilinx公司在ISE、Vivado等设计软件中增加AES-256 CBC加密配置方式,并在FPGA内部集成解密模块,从而防止硬件设计被克隆和伪造[5]。然而,这种方式并不完全可靠。2011年Moradi等人使用差分能量攻击(DifferenTIal Power Attack,DPA)恢复了Virtex-II Pro系列FPGA加密比特流所用3DES算法密钥[6],引起了工业界的广泛关注。此后,使用AES-256算法加密的Xilinx 4系列和5、6、7系列FPGA分别于2012年[7]和2016年[8]被DPA攻击和差分电磁攻击(DifferenTIal ElectromagneTIc Attack,DEMA)攻破。
本文针对Xilinx 7系列FPGA实施能量攻击,从攻击和检验等两个角度对攻击效率进行了提升。首先根据Xilinx FPGA解密的实现方式,讨论了攻击点函数的选取方法,使用DPA攻击成功恢复了AES-256算法密钥,并基于相关系数极性设计了一种新的检验方法。
1 FPGA克隆技术基于FPGA生产的商用产品,必须通过外部非易失存储器进行重新配置。而FPGA克隆则是通过非法手段获取比特流配置文件,配合FPGA逆向工具(如BIL[1]、FpgaTools[9])窃取其内部设计XDL/NCD网表的方法,具体流程如图1所示。
加密比特流结构如图2所示,使用HMAC算法生成认证码SHA256,并通过AES-256算法以CBC模式对SHA256、HMAC密钥kHMAC和配置信息加密;初始向量IV明文写入比特流中[5]。因此,密文存储时,FPGA克隆的关键在于AES密钥kAES的获取。
由于kAES保存于FPGA内部eFUSE中,一次性写入,外部无法读取[5],而明文信息plaintext直接用于FPGA配置,同样无法获取,kAES的获取演变为唯密文攻击(Ciphertext-Only Attack,COA)。由于CBC模式具备很强的抗COA攻击能力,传统密码分析方法难以攻破,此时引入旁道攻击成为一种较为理想的方法,如图1所示。
2 能量攻击方法设计2.1 能量攻击原理
2.1.1 攻击流程
能量攻击是最流行的旁道攻击方法,攻击者无须了解被攻击设备的详细知识,根据功耗的数据相关性,利用加密或解密时的能量迹即可恢复密钥,能量攻击流程如图3所示[10],具体流程如下:
(1)选取攻击点
(4)计算假设功耗值
(6)结果检验
一般直接代入攻击所得密钥,使用新的分组数据加密或解密,从而验证攻击结果的正确性。
2.1.2 常用功耗模型及统计方法
针对硬件实现的密码设备,DPA攻击通常针对寄存器翻转功耗的数据相关性进行攻击[10],根据统计方法不同,主要分为基于相关系数的CPA攻击和基于均值差的DPA攻击两种。
(1)基于相关系数的CPA攻击
其中,rij表示用第i个猜测密钥对能量迹上第j个点求得的均值差(下文统称相关系数)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)