文档介绍:用单片机实现 SRAM 工艺 FPGA 的加密应用
在现代电子系统设计中,由于可编程逻辑器件的卓越性能、灵活方便的可升级特性,而得到了广泛的应用。
由于大规模高密度可编程逻辑器件多采用 SRAM 工艺,要求每次上电,对 FPGA 器件进行重配置,这就使
得可以通过监视配置的位数据流,进行克隆设计。因此,在关键、核心设备中,必须采用加密技术保护设
计者的知识产权。
1 基于SRAM 工艺 FPGA 的保密性问题
通常,采用 SRAM 工艺的 FPGA 芯片的的配置方法主要有三种:由计算机通过下载电缆配置、用专用配置
芯片(如 Altera 公司的 EPCX 系列芯片)配置、采用存储器加微控制器的方法配置。第一种方法适合调试
设计时要用,第二种和第三种在实际产品中使用较多。第二种方法的优点在于外围电路非常简单,体积较
小,适用于不需要频繁升级的产品;第三种方法的优点在于成本较低,升级性能好。
以上几种方法在系统加电时,都需要将配置的比特流数据按照确定的时序写入 SRAM 工艺的 FPGA。因此,
采用一定的电路对配置 FPGA 的数据引脚进行采样,即可得到配置数据流信息。利用记录下来的配置数据
可对另一块 FPGA 芯片进行配置,就实现了对 FPGA 内部设计电路的克隆。典型
的克隆方法见图 1。
2 对 SRAM 工艺 FPGA 进行有效加密的方法
由于 SRAM 工艺的 FPGA 上电时的配置数据是可以被复制的,因此单独的一块 FPGA 芯片是无法实现有
效加密的。FPGA 芯片供应商对位数据流的定义是不公开的,因此无法通过外部的配置数据流信息推测内
部电路。也就是说,通过对 FPGA 配置引脚的数据进行采样可得到配置信息。但也不能知道内部电路结构。
如果在配置完成后使 FPGA 处于非工作状态,利用另外一块保密性较强的 CPU 产生密码验证信息与 FPGA
进行通信,仅在验证成功的情况下使能 FPGA 正常工作,则能有效地对设计进行加密。具体电路结构见图
2。
系统加电时,由单片机对 SRAM 工艺的 FPGA 进行配置。配置完成时,FPGA 内部功能块的使能端为低,
不能正常工作。此时,单片机判断到配置完成后,将 ASET 信号置为高电平,使能 FPGA 内的伪码发生电
路工作;同时,单片机产生一个伪码验证信息,在 FPGA 中将两路伪码进行比较,两者完全匹配时,FPGA
内部电路正常工作,否则不能正常工作。加密电路主要利用了配置完成后处于空闲状态的单片机和 FPGA
内部分逻辑单元,没有增加硬件成本。
由上述讨论可知,系统的加密能力主要由 CPU 的加密能力决定。这就要求 CPU 的加密算法要足够复杂,
使得对验证信息的捕获与识别足够困难。最常见的加密算法就是产生两个伪随机序列发生器:一个位于
SRAM 工艺的 FPGA 内;另一个位于 CPU 内。当两者匹配时,通过验斑点。对 PN 码有两点要求:一方
面,要求伪随机序列的长度足够长,使得要捕获整个序列不太可能;另一方面,伪随机序列的线性复杂度
要足够高,使推测伪随机序列的结构不易实现。
通常采用的伪随机码发生器的反馈电路如图 3 所示。实际中,可采用级数较高的线性反馈移位寄存器来产
生伪随机码。如采用 40 级线性移位寄存