摘 要:针对SRAM工艺FPGA应用中的安全问题,提出了一种采用双重认证(身份认证和产权认证)的保护方法。不仅能够使得非法者无法使用FPGA,而且有效防止IP核被盗用。在FPGA外部添加安全芯片,负责完成身份认证,确认使用者的合法性;在IP核内添加保护模块,与安全芯片交互完成产权认证,确认IP核的合法性。详细介绍了双重认证方法的思想、原理和实现过程,并进行了安全性分析。
关键词:FPGA; IP核; 保护; 双重认证
在电子产品设计中,FPGA由于灵活方便、性能突出等优点,得到了越来越广泛的应用。目前,市场占有率最高的两大公司Xilinx和Altera生产的FPGA大都是基于SRAM工艺的,而SRAM工艺FPGA由于自身的特点,存在诸多安全问题[1]。因此,实际应用中需要采取一定的保护手段,确保SRAM工艺FPGA的安全应用。
1 SRAM工艺FPGA的安全问题
SRAM工艺FPGA具有掉电易失性,在实际的应用中需要外部存储器来存储其配置信息。因此,SRAM工艺的FPGA具有可反复使用、升级方便、配置电路简单等优点。然而,由于FPGA的配置电路及时序是公开的,在FPGA加载配置信息的过程中,不法者可以通过侦测FPGA配置管脚,截取配置信息来配置其他FPGA。而配置信息是设计者IP核的具体表现形式,这样,IP核被非法复制,使设计者的产权受到破坏。
针对该问题,参考文献[2]提出一种结合EDA软件和FPGA的方法,有效防止IP核被非法复制;参考文献[3]在IP核中添加保护模块,通过保护模块和外部验证设备通信认证来确认IP核的合法性。以上文献从不同方面对IP核的防复制进行了研究[4],但都未对使用FPGA的用户进行身份认证。由于FPGA通常作为电子系统的核心或关键模块,为合法用户提供一定的服务,因此,实际应用中需对使用FPGA的用户进行身份认证。本文对此提出一种采用双重认证(身份认证、产权认证)的保护方法,以满足SRAM工艺FPGA防止非法用户使用及IP核防复制的双重需求。
2 双重认证方法的设计
2.1 双重认证方法的思想及模型
由于FPGA芯片供应商对配置数据流的定义是不公开的,所以无法通过配置数据流推测内部电路。因此需要在IP核中添加保护模块,使得配置成功后FPGA先不工作,只有在身份认证、产权认证成功后,FPGA才正常工作。双重认证方法既认证使用者的合法性,又认证IP核的合法性,确保SRAM工艺FPGA的安全应用。
本设计需要在IP核中嵌入保护模块,同时在FPGA外添加安全芯片。系统上电后,从配置器件加载IP核到FPGA,IP核中的工作电路暂时不能工作,只有当产权认证成功,保护模块发出使能信号,IP核中工作电路才开始工作。产权认证由IP核中保护模块和外部的安全管理芯片交互实现,而身份认证则由安全管理芯片完成。双重认证方法模型如图1所示,主要包括FPGA、FPGA配置器件、安全芯片等。
本设计中,对FPGA及其配置器件无特殊要求,选用通用器件即可,这里选用的分别是Altera公司的EP2C20F256C8和EPCS1。
安全芯片既要实现身份认证,又要通过与IP核中保护模块的交互实现产权认证,对安全性及其他性能都有较高的要求。本设计选用Z32芯片作为安全芯片。
2.2 双重认证方法的工作流程
本设计采用双重认证机制保护FPGA的安全应用,其工作流程如图2所示。系统上电后,从存储器件加载IP核到FPGA中,首先进行用户身份认证,身份认证成功后进行产权认证。只有当身份认证和产权认证全部成功后,FPGA才开始正常工作。两次认证中任意一次失败,就会启动错误计数器,当计数达到设定的值后,系统就会销毁存储的秘密信息,使得系统失效。
从图2可以看出,产权认证受身份认证保护,即只有身份认证通过,才能进行产权认证。不法者即使获得IP核配置信息,由于不能通过身份认证, 也无法使FPGA正常工作;合法使用者如果复制IP核的配置信息来配置其他FPGA,由于不能通过产权认证,也无法使FPGA正常工作。因此,双重认证方法有效地满足了SRAM工艺FPGA的安全应用需求。
3 关键模块的设计及实现
首先对以下两个符号进行说明:
(1) Kp:口令密钥,在身份认证成功后由口令、口令哈希值等分量合成,主要用于对密文存在的认证密钥Ka解密。
(2) Ka:认证密钥,受口令密钥Kp保护,身份认证成功前以密文形式存在,是产权认证过程中AES算法的密钥。
3.1 身份认证模块
身份认证主要由Z32安全芯片来完成。本设计在Z32的固件程序中,实现AES算法和SHA-256算法。在芯片的Flash中开辟安全存储区,只有固件控制程序可以对该安全存储区操作,外部程序无访问权限。为了提高身份认证的安全性,本设计采用口令方式进行身份认证,安全存储区中不存储口令的明文,仅存储正确口令的哈希值及认证密钥Ka的密文。
身份认证原理如图3所示。本设计采用了密钥分级保护的思想,通过口令密钥Kp来保护认证密钥Ka。只有用户口令正确,系统才能计算出口令密钥Kp,然后调用AES算法将认证密钥Ka解密;若口令不正确,则即使将系统暴力拆解,直接读取芯片的存储区,也只能获得Ka的密文,而无法获得Ka的值。
身份认证的具体过程为:
(1) 接收用户输入的口令。
(2) 将用户输入的口令用SHA-256算法处理,其结果与安全存储区中正确口令的哈希值(256 bit)进行比对。若比对结果一致,则跳过步骤(3),否则执行步骤(3)。
(3) 重新执行步骤(1),同时启动错误计数器,错误值加1。当计数到设定值,则销毁安全存储区中的数据,系统被锁死。
(4) 将口令与哈希值的低128 bit按位异或,得口令密钥Kp。若口令值不足128 bit,则将口令高位补为0,补足128 bit;若口令多于128 bit,则仅取其低128 bit。
(5) 调用AES算法,用步骤(4)得到的口令密钥Kp将密文存储的Ka解密,得认证密钥Ka。解密后的Ka也存储在安全Flash区中。同时,Z32芯片将生成的口令密钥Kp清零。
(6) 身份认证成功,向IP核保护模块发出产权认证开始信号,等待其响应。
若身份认证成功后,用户输入修改登录口令的命令,则首先用原口令密钥Kp将认证密钥Ka解密,然后计算出新口令的哈希值及新的口令密钥Kp,调用AES算法将认证密钥Ka用新的口令密钥加密,最后将安全存储区中数据用新口令的哈希值和Ka新的密文替换。在这里需要注意的是认证密钥Ka的值并未变化,改变的仅为存储区中Ka的密文。
3.2 产权认证模块
产权认证由Z32芯片和IP核中的保护模块共同完成,产权认证原理如图4所示,虚线为控制信号,实线为数据流。IP核保护模块由伪随机数发生器、AES加/解密器、比对模块、比对结果处理模块、寄存器等组成。当用户通过身份认证后,Z32芯片将安全存储区中加密存储的认证密钥Ka解密,然后通知FPGA,FPGA响应该信号,即产权认证开始。
产权认证的具体过程为:
(1) Z32芯片向FPGA发出产权认证开始信号。
(2) IP核保护模块响应产权认证开始信号,伪随机数发生器产生一个伪随机序列。
(3) 伪随机序列分成两路:一路存储在保护模块的寄存器中;另一路用AES算法加密(其中加密密钥为Ka),然后把密文传给Z32芯片。
(4) Z32芯片接收到密文后,利用身份认证过程中解密所得的认证密钥Ka,将所接收到的密文解密,然后将结果回传给FPGA认证模块。
(5) IP核保护模块接收到Z32传回的序列,将其与步骤(1)中产生的序列值比对。若比对结果一致,则发出使能信号,IP核中工作电路开始工作;若不一致,则比对模块向Z32控制器传回比对错误信号,重新执行步骤(1),同时Z32芯片启动错误计数器,错误值加1,当计数到设定值,则销毁Z32安全存储区中的信息,系统被锁死。
4 安全性分析
本设计中,IP核工作电路只有在产权认证成功后才能工作,由于产权认证采用了挑战应答方式,每次产生的随机序列不同,非法者使用重放攻击不能通过产权认证。由于对伪随机序列采用的是AES加密,在不知道密钥的情况下很难破解,安全可靠性高[5]。因此,产权认证的安全性取决于认证密钥Ka的安全性。
认证密钥Ka存在于FPGA的配置数据流和安全芯片中。因为 FPGA芯片供应商对配置数据流的定义是不公开的,所以无法获得配置数据流中的认证密钥Ka。而若想破解安全芯片而获得认证密钥Ka也是不现实的,因为Ka受口令密钥Kp保护,只有用户输入正确的口令,才能利用口令、口令哈希值计算出口令密钥Kp,才能将Ka解密。非法用户没有正确的口令,不能计算出口令密钥Kp,无法使FPGA正常工作,这样便达到了防止非法用户使用FPGA的目的;合法用户通过身份认证后能够将Ka解密,但只有固件程序能够对Ka操作,用户也无法获得Ka的具体值,即使拷贝IP核配置信息来配置其他FPGA,由于不知道Ka的具体值,无法通过产权认证,复制的IP核也不能工作,实现了对设计者产权的保护。
本文设计的保护方法采用了身份认证、产权认证两重认证机制,体现了分级保护的思想。虽然消耗了一部分硬件资源,但有效地保证了SRAM工艺FPGA的安全应用,达到了非法用户不能使用FPGA、合法用户不能侵犯设计者产权的目的。本设计安全性高、通用性强,具有广泛的应用前景。
参考文献
[1] GUAJARDO J,KUMAN S, SCHRIJEN S, et al. Physical unclonable functions and public-key crypto for FPGA IP protection[C]. Amsterdam: Field Programmable Logic and application, 2007: 189-195.
[2] 章礼宏, 范全润. 基于EDA软件和FPGA的IP核保护技术[J]. 电子设计工程, 2009, 17(3):98-100.
[3] 范明俊, 李宁, 赵乐军,等. 一种安全可靠性高的全新IP核保护方法[J]. 微电子学, 2007, 37(2):185-188.
[4] GUNGYSU T, MOLLER B, PAAR C, et al. Dynamic intellectual property protection for reconfigurable devices[C].Kitakyushu: Field-Programmable Technology, 2008:169-172.
[5] 杨义先, 钮心析. 应用密码学[M]. 北京: 北京邮电大学出版社, 2005.