MAX II器件实现FPGA设计安全解决方案

本文提供的解决方案可防止fpga设计被拷贝,即使配置比特流被捕获,也可以保证fpga设计的安全性。通过在握手令牌由max ii器件传送给fpga之前,禁止用户设计功能来实现这种安全性。选用max ii器件来产生握手令牌,这是因为该器件具有非易失性,关电时可保持配置数据。而且,对于这种应用,max ii器件是最具成本效益的cpld。本文还介绍了采用这种方案的一个参考设计。
硬件实现
fpga设计安全解决方案的硬件实现如图1所示。max ii器件产生连续的握手令牌,发送至fpga,以使能用户设计。fpga和max ii器件之间传送5个信号:clock、shift_ena、random_number、ready和handshaking_data。
一旦fpga经过配置后,它向max ii器件提供连续时钟。同时连接至fpga和max ii器件的启动/复位信号必须置位,以启动系统工作。fpga中的随机数发生器(rng)开始为fpga和max ii器件产生初始计数值(每次上电或者启动/复位信号置位时,仅向max ii器件发送一次随机数)。随机数准备好后,shift_ena信号变为高电平,采用random_number信号,随机数串行移位至max ii器件。随机数全部移位至max ii器件后,ready信号置位,指示fpga可以接收来自max ii器件的握手令牌。
配置之后,由于enable信号还是逻辑低电平,fpga中的用户设计功能被禁止。只有max ii器件送出的握手令牌和fpga内部产生的数据相匹配,enable信号才会置位,启动用户设计功能。这两个数据之间出现差异时,enable信号变为低电平,禁止用户设计功能。max ii器件中产生握手令牌和fpga器件中产生数据的方法和过程相同。如果没有正确的令牌,fpga器件中的用户设计功能被禁用。这样,即使配置比特流被捕获,也可以防止用户设计被拷贝。
图1:fpga设计安全方案的硬件实现。
设计构建模块
fpga的设计安全组成包括一个时钟分频器、随机数发生器(rng)、安全内核、比较器和可靠性部分,而max ii器件的设计安全组成只包括图1所示的安全内核。
fpga和max ii器件使用的安全内核相同,如图2所示,由以下部分构成:随机数接收器、64位计数器、编码器、移位器/复用器。
图2:fpga和max ii器件的安全内核。
1、时钟分频器fpga中的时钟分频器用于从系统时钟产生速率较低的时钟,供给fpga和max ii器件的安全内核使用。这是因为安全内核不需要运行在非常高的频率下。特别是当系统运行频率非常高时,时钟分频器的作用便比较显著,否则,如果系统运行频率较低,可以不使用该分频器。
2、随机数发生器(rng)每次启动/复位信号置位时,rng为64位计数器产生随机初始值。然后,随机数同时串行移位至fpga和max ii器件的安全内核。参考设计采用32位rng。
3、随机数接收器随机数接收器接收来自rng的串行随机数,并按照正确的顺序排列数据,将其做为初始值送入64位计数器。
4、64位计数器64位计数器用于产生送入编码器的64位数据。它是按照公式x=x+a进行的一个简单加法器。x是一个64位初始值,而a是计数器递增值,应为质数。初始值x来自rng。参考设计中,32位来自rng,其余32位由用户在设计代码中设置。a可以由用户在设计代码中设置。计数器输出送入编码器,对数据进行加密。编码器每次完成前一数据的加密后,计数器数值递增。
5、编码器编码器可以采用任何难以破译的加密标准。参考设计采用了三重数据加密标准(3des)。3des编码器的输入和输出是64位值,需要48个时钟周期完成64位数据加密。
6、移位器/复用器移位器/复用器将编码器输出比特(16位)的一部分按照特定顺序,存储在寄存器中,编码器准备下一数值时,将其串行移位至比较器。
7、比较器比较器将max ii器件的编码数据(握手令牌)与fpga内部产生的编码数据逐位比较。如果max ii器件和fpga的数据相匹配,enable信号置位,使能用户设计功能。如果出现不匹配,请参见下面的可靠性保证一节。这种方式可以重复几次,以产生更多的enable信号,使能用户设计的不同部分。这种重复方式可以防止有人篡改fpga比特流(这种可能性较低),致使enable信号变为高电平,导致设计安全方案失效。
8、可靠性可靠性部分处理随机比特错误,这种错误可能会导致系统停止工作。参考设计允许每10个时钟周期中出现一次数据不匹配(这仅仅是一个例子,用户可以根据实际应用,修改该方法,达到最佳效果)。换句话说,如果10个时钟周期中,数据不匹配不超过一次,enable信号仍将保持高电平,系统继续工作。如果10个时钟周期中出现两个错误,那么,enable信号变为低电平,禁止用户设计功能。在启动/复位信号置位,复位系统前,系统停止工作。
图3:不支持安全方案的fpga设计。
用户设计模块
用户设计模块是真正的fpga设计。来自安全模块的enable信号低电平时用于禁止用户设计模块。换言之,如果比较器发现max ii器件和fpga的数据不匹配,考虑到可靠性之后,将禁止用户设计功能。
图3是enable信号低电平时,禁止用户设计功能的实例。图3所示的fpga用户设计具有clk_en输入信号,用于使能设计中的时钟。只有clk_en信号高电平时,才启动设计功能。为实现设计安全方案,对用户设计稍做修改(增加了一个and逻辑门),这样,当来自安全模块的enable信号低电平时,禁止用户设计,如图4所示。
解决方案的安全性
上电时,当fpga的配置比特流由外部存储器传送至fpga时,有可能被捕获。使用捕获的比特流来配置其他fpga可以拷贝fpga设计。
采用该解决方案,只有当max ii器件的握手令牌与fpga内部产生的数据相匹配时,fpga用户设计才开始工作。由于被复制的设计在没有握手令牌时无法工作,因此保证了fpga设计的拷贝安全性。用于产生握手令牌的max ii器件具有非易失特性,关电时可保持其配置。
解决方案的安全性依赖于max ii器件产生的握手令牌。要破解该方案,需要拷贝max ii器件产生的全部令牌比特流,或者计算出编码器用于产生令牌的密钥。由于每次上电时,max ii器件产生的握手令牌都不同,因此,拷贝全部比特流来破解该方案是不可能的。这在于采用了rng,它在上电时产生不同的数值送给max ii器件。
图4:支持安全方案的fpga设计。
如果采用了成熟的加密算法,那么破解编码器使用的密钥将非常困难。而且,无法从外部看到编码器输入数据,只有一部分加密数据串行移出,更难实现纯文本攻击。纯文本攻击分析编码器的输入和输出数据,猜出密钥,实施攻击。因此,该解决方案保护了fpga设计。
为保证该方案正常工作,安全模块的时钟应和fpga用户设计的时钟一致,如图1所示。这样可以防止有人在enable信号高电平时,禁用安全模块时钟。
本文小结
fpga设计安全解决方案保护了altera fpga设计被拷贝(即使配置比特流被捕获)。在max ii器件通过握手令牌验证前,禁止fpga用户设计,实现了该解决方案。只有握手令牌与fpga内部产生的数据匹配时,fpga用户设计才被使能。该解决方案还保护了fpga中的设计人员知识产权。

链接认知断点,构建自己的工业互联网全景认知
变频器常见参数有哪些 变频器控制电动机的运行
韩国将启用基于5G网络的自动驾驶测试场
以NMOS举例,只用万用表二极管档测量MOS管的好坏
澜起集合清华微电子RCP技术和英特尔至强(Xeon)处理器推出Xeon处理器及平台
MAX II器件实现FPGA设计安全解决方案
智能遥控灯的制作教程
三星今年向中国品牌出售其5G SOC,有助于推动Exynos芯片组销量
如何定义一台好的液晶广告机,未来它将如何发展
如何选挑选好一部合适的矿机
基于DSP的广播级数字音频延时器
基于VHDL的4PSK的设计与实现
是德Keysight MSOS604A 示波器
2020年ASML对外销售了31台EUV光刻机,带来了45亿欧元的收入
GSA:2020离散5G调制解调器数量增加一倍多 5G处理器增加了九倍
如何破解PCIe 6.0带来的芯片设计新挑战?
基于Nios Ⅱ软核处理器和FPGA实现人脸检测跟踪系统的设计
采用GPS定位技术的美国智能运输系统简介
军用手持机可满足军工行业在机动性、灵活性等方面的需求
基于Kubernetes实现CI/CD配置的流程