DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 125|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-17 15:09:11 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
基于SRAM的FPGA是易失器件,需要外部存储器来存储上电时发送给它们的配置数据。在传送期间,配置比特流可能会被捕获,用于配置其他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。



图1:FPGA设计安全方案的硬件实现。
  一旦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器件中的用户设计功能被禁用。这样,即使配置比特流被捕获,也可以防止用户设计被拷贝。
  设计构建模块
  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设计。
                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-12-22 14:36 , 耗时 0.110482 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表