随着现场可编程门阵列(Field Programmable Gate Arrays)技术的迅速发展,对知识产权安全性检测需要越发重要。当配置比特流在FPGA和外部存储器之间传送时,可以被捕获到。利用该比特流,配置其它FPGA器件,就可以未经许可条件下非法拷贝FPGA设计。开发基于FPGA的系统的成本是相当高昂,因此,应当防止未经授权的机构对这些设计和配置进行非法拷贝,以保护设计者的知识产权。在一些高端的FPGA,支持对配置数据流的加密操作。

仅当FPGA中含有相同的密钥时,这些数据流才可工作。但这种加密的方法对更为广泛的、低成本的应用场合不合适。本文利用一种基于安全散列算法(Secure Hash Algorithm,SHA)的方法来防止非法拷贝。它对所有FPGA家族都适用。对于这些低端的、不具备嵌入式比特流加密手段的FPGA,需要在生产过程中使用安全辅助芯片,以有效保护FPGA设计的知识产权。

1工作原理

安全散列算法SHA(Secure Hash Algorithm,SHA)是美国国家标准和技术局发布的国家标准FIPS PUB 180-1,一般称为SHA-1。其可对长度不超过264位的消息产生160位的消息摘要输出,可在NIST的网站上获得该算法的数学原理。IFF(Identification Friend or Foe, IFF)用于确定输入密钥是否正确。

其工作方式如下:

①在FPGA内部构造随机数生成模块,用于产生消息Q,并通过1-Wire总线发送DS2432芯片;

②DS2432内部拥有一个由设计者设定的密钥。由该密钥并结合一个散列函数对消息Q加密,产生一个响应A;

③与此同时,FPGA内部产生一个期望的响应E,判断该期望响应是否与DS2432的真实响应A一致;

④如果E与A吻合,则判断该设计为正版设计;否则判定为盗版设计;

⑤最终,FPGA程序可以对盗版设计做出程序锁止或减少功能。

除了SHA-1本身所具有的安全特性,上述方法的安全特性依赖于密钥,而该密钥既不可能从安全存储器,也不可能从FPGA中读出。更进一步,该密钥不可能在FPGA进行配置时,利用窃听其配置数据流的手段发现。这就如同从一个可执行代码破解操作系统的C++源代码一样,将是一个难于完成的任务。另一个至关重要的安全因素是随机质询机制。一个可预测的质询机制会引发一个可预测的响应结果,因为该结果可被记录,然后由一个微控制器来取代安全存储器。在这种可预测的情况下,微控制器可以让FPGA认为其是一个“友方”电路。而随机的质询机制消除了这种可能性。

2系统设计

根据以上介绍可知,为了满足应用所需的安全性。

HASH算法应满足以下条件:

①不可逆,即从一个HASH结果逆推出与之相关的输入数据在计算上是不可行的。

②防“碰撞”,即使用另外一组输入数据来产生一个相同的HASH结果是不可行的。

③具有极高的雪崩效应,当输入数据的任何变化,都会极大的影响到HASH运算结果。

DS28E01-100和DS2432是Dallas Semiconductor提供的内置SHA-1算法的安全存储器。这些器件的1-Wire接口非常适合此类应用,因为他们只需FPGA的一根引脚就可实现这些功能。

DS2432有以下几个主要的数据部件:

1)64位光刻ROM,

2)64位暂存器,

3)四个32字节的EEPROM页,

4)64位寄存器页,

5)64位密钥存储器,

6)一个512位SHA-1(安全散列算法)引擎。

与此同时,FPGA实现了下述功能,以利用DS2432的安全特性:

①SHA-1 引擎 :这一模块计算SHA-1 算法,进行安全认证。它接收安全存储器通过1 线接口传送来的设计,将其和MAC 结果进行对比。只有当哈希计算结果和安全存储器中SHA-1 引擎的哈希计算结果匹配时,才使能用户设计。

②随机数发生器(RNG):当复位信号置位SHA-1 引擎模块时,RNG 为该模块产生一个随机数。SHA-1 IFF参考设计使用了一个8 位RNG 块。SHA-1 引擎模块处理这一8位随机数,转换成40 位随机数据,进行哈希计算。

③1-Wire接口:这一模块支持FPGA 中参考设计和安全存储器之间的数据传送。1-Wire总线系统由一个总线主机和一个或多个从器件组成。在该应用中,DS2432做为从器件使用,总线主机通常是一个微控制器。对1-Wire总线系统的讨论分为3个部分:硬件配置、处理流程和1-Wire信令(信号类型和时序)。1-Wire协议根据特定时隙中总线的状态来工作,这些特定时隙始于总线主机发出的同步脉冲的下降沿。

对于每个制造单元,设计所有者必须为制造带有嵌入式FPGA产品的一方(生产方)提供一个正确预编程的加密EEPROM。这种一对一的关系限制了生产方可以制造的授权产品的数量。为防止生产方窜改加密EEPROM的内容,可对其中密钥进行写保护。这样就在设计上保证了只有在知道密钥的情况才可更改存储器中的数据。并由此对FPGA产生加密作用,即FPGA可以根据从受SHA-1保护的加密存储器中读出的数据来开启或关闭FPGA中的相应功能。

这种方法的优势如下:

①设计者无需向生产方泄漏SHA-1密钥。

②设计者无需执行系统预编程。

③只有经过设计者授权第三方才可以访问登记的器件。即使捕获了配置数据流,这一FPGA加密方法也能保护FPGA设计不被克隆。在FPGA 中和安全存储器中的哈希计算结果匹配之前,一直禁止用户设计。这一设计加密方法有效保护了FPGA设计人员的知识产权。

小知识之FPGA概念:

FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。