首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

利用异步采样电路提高SRAM工艺FPGA的设计安全性

利用异步采样电路提高SRAM工艺FPGA的设计安全性

关键字:异步采样   SRAM   FPGA   CPLD  
  随着FPGA的容量、性能以及可靠性的提高及其在消费电子、汽车电子等领域的大规模应用,FPGA设计的安全性问题越来越引起人们的关注。相比其他工艺FPGA而言,处于主流地位的SRAM工艺FPGA有一些优势,但是由于SRAM的易失性,掉电以后芯片中的配置信息将丢失,所以每次系统上电时都需要重新配置。这就使得剽窃者可以通过对FPGA的配置数据引脚进行采样,得到该FPGA的配置数据流,实现对FPGA内部设计电路的克隆。为了保护设计者的知识产权以及推动SRAM工艺FPGA更大规模的应用,产业界和学术界从加密算法的角度对SRAM工艺FPGA的设计安全性提出了多种解决方案[1~2]。

  异步电路的竞争和险象问题所导致的不确定性,是数字电路设计中令人头疼的问题。但是,如果把这种不确定性应用在本安全方案中,同样可以困扰剽窃者,从而更有效地保护设计。为此,本文提出了利用异步采样电路的不确定性提高SRAM工艺FPGA设计安全性的方法,以提高系统的安全性。

  1 方案简介

  1.1 设计方案的指导思想

  (1) CPLD是难以用反向工程等物理手段进行破解的,而且用这些方法破解CPLD的成本和设计的开发成本相近。Xilinx公司声称其CoolRunner-II系列CPLD的安全性完全可以达到ASIC相当的等级[3]。并且,CPLD也可以用抗攻击性强的小规模反熔丝FPGA来代替[4]。

  (2) CPLD中触发器资源较少,因此应尽量降低CPLD中的电路复杂度。

  本方案借助了跳频的理念,在FPGA和CPLD中分别保存两个密钥表,在一开始同步之后,FPGA中的密钥选择状态机根据异步采样电路输出的状态跳转指示信号进行跳转。同时CPLD接收FPGA送来的状态跳转信号,其中的密钥状态机也进行相应的跳转,并将密钥传回给FPGA。在没有差错的情况下,这两个状态机将一致地跳转。FPGA通过对CPLD送来的密钥进行确认来验证CPLD的合法性:检验是否和自己的密钥状态机所选择的密钥一致,如果一致,则说明所连接的CPLD为合法的CPLD,FPGA电路正常工作;否则认为所连接的CPLD为非法,停止FPGA电路工作。由以上指导思想设计的系统框图如图1所示。


  此外,CPLD向FPGA传递的密钥先利用M序列进行加密,这样使得对系统的破解首先需要对M序列加密算法进行破解,从而进一步提高了系统的抗攻击能力。

  1.2 异步采样电路

  温度的变化、电压的波动等因素都会使晶振所输出的时钟发生抖动。因此,用一个时钟去采样另一个时钟驱动的信号,其采样值是不可预测的。异步采样电路的机理就是利用两个时钟之间相位和频率的不确定性,产生一个不可预测的序列。单比特异步采样电路的示意图如图2所示。图中有4个触发器(FF1、FF2、FF3、FF4)和两个时钟(clk、clks)。FF1、FF2由clks信号驱动,其中FF1是用于防止亚稳态出现的触发器,它的输入信号同步于clk的信号,FF2的输出信号则同步于clks的信号。FF3、FF4由clk信号驱动,其中FF3的作用和FF1类似,用于防止亚稳态的出现,它的输入信号同步于clks的信号;FF4的输出信号则同步于clk的信号。通过上述处理后,FF4的输出产生了一个随机序列,这个随机序列不同于同步电路产生的伪随机序列,其状态的转移同温度、电压等外界因素有关,是一个完全不可预测的随机序列。此外,异步采样电路对两个时钟之间的相位敏感,所以在电路板每次上电时所生成的序列也是不同的。


  异步采样模块的VHDL实现如下:


  其中:din为同步于clk的输入序列,dout为输出的随机序列。

  将本文所设计的方法应用到Altera公司的Cyclone[5]系列FPGA中,利用Quartus II中的SignalTapII Logical Analyzer工具,两次采样复位后FPGA内异步采样电路的输入输出信号,得到如图3所示的波形,其中两个时钟:clk为2.000MHz,clks为2.048MHz。观察系统复位后异步采样电路输出序列的随机性可以发现,每次将系统复位后,采用同步电路设计的伪随机序列发生器产生相同的伪随机序列(din);但是,将这个伪随机序列(din)输入异步采样电路后,在输出(dout)却得到不同的随机序列。这说明同一块电路板每次上电时都将生成不同的随机序列。


  1.3 密钥选择状态机

  FPGA和CPLD中各有一个完全相同的密钥选择状态机,该状态机根据异步采样电路输出的随机序列进行跳转,其跳转规则可以自定义。在本文设计的系统中,密钥表中存放有8个32位长的密钥,密钥状态机共有8个状态,记为状态0~状态7,每个状态分别对应一个密钥,记为密钥0~密钥7。

  假设当前状态为状态i,异步采样电路的输出为j,其中i、j∈N,且0≤i, j≤7。那么可以采用如下简单的跳转规则:当采样电路的输出为0时,跳转到状态0;否则,跳转到状态(i+j)mod8。为了提高系统的安全性,也可以采用各种无序的跳转规则,通过改变跳转规则和密钥表,可以得到不同的系统。
返回列表