应用笔记 3826

利用1-Wire®接口的SHA-1安全存储器实现Xilinx® FPGA的识别及防拷贝机制


摘要 : 本文描述了如何利用安全存储器来完成身份识别功能,以实现对FPGA设计的保护。在完成身份识别特性的同时,还可实现软功能管理和电路板识别(IFF)功能。本文所涉及的FPGA均来自Xilinx, Inc.。

动机

开发电子产品,包括嵌入式FPGA的配置代码,其成本是相当高的。因此应当防止未经授权的机构对这些设计和配置进行拷贝,以保护设计者的知识产权。有很多种方法能实现这样的保护功能。如在Xilinx Virtex-II®和Virtex-4®这类的高端FPGA中,支持对配置数据流的加密操作。这样仅当FPGA中含有相同的密钥时,这些数据流才可以工作。但是这种加密的方法对更为广泛的、对成本很敏感的应用场合来说不甚合适。因此,这里利用另一种可行的身份识别法来防止意外拷贝。这种方法对所有FPGA家族都适用,包括低端的Xilinx Spartan-3®和Spartan-6® FPGA。

前提

在身份识别的概念中,要求FPGA的设计者实现与一个安全存储器通讯的功能以进行认证工作。图1是实现该设计的一个简化原理图。

图1. Maxim的1-Wire存储器件为FPGA提供安全控制和保护的简化框图
图1. Maxim的1-Wire存储器件为FPGA提供安全控制和保护的简化框图

安全存储芯片需满足下列要求:
  • 包含用于芯片内部操作的密钥,该密钥对外界不可见。
  • 包含一个唯一的不可改变的识别号。可用该识别号来计算一个与设备绑定的密钥。
  • 能够进行包含密钥、随机数(用做质询机制)、唯一识别号及附加数据(常数)在内的HASH运算。
为了满足应用所需的安全性,该HASH算法应满足:
  • 不可逆—要使从一个HASH结果逆推出与之相关的输入数据在计算上是不可行的。
  • 防“碰撞—使用另外一组输入数据来产生一个相同的HASH结果是不可行的。
  • 具有极高的雪崩效应—输入数据的任何变化,都会极大的影响到HASH运算结果。
SHA-1算法—一个被全面而广泛验证的单向HASH算法可以满足上述需求。该算法由美国国家标准技术局开发,被ISO/IEC 10118-3:2004国际标准所采用。公众可在NIST的网站上获得该算法的数学原理。

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

FPGA需实现下述功能,以利用这些器件的安全特性:
  • 产生随机数。
  • 知道一个用于芯片内部运算的密钥,且该密钥对外界不可见。
  • 同安全存储器一样进行包含密钥、随机数、附加数据及器件识别号在内的HASH计算。
  • 比较HASH计算结果。
以上对FPGA的功能要求需要FPGA具备微控制器的性能,例如PicoBlaze™,它是Xilinx专用于Spartan-3,Spartan-6,Virtex-II,Virtex-II Pro®,Virtex-4® FPGA和CoolRunner®-II CPLD的自由宏。PicoBlaze使用192个逻辑单元,仅为Spartan-3 XC3S200器件的5%。

技术的实现

当器件上电后,FPGA从Flash PROM中读取数据对自己进行配置。配置完成后FPGA的微处理器功能被启动并进行认证工作,该认证工作包括下列步骤:
  1. 产生一组随机数并作为一个质询机制(Q)发送给安全存储器。
  2. 向安全存储器发出指令,要求其计算一个基于密钥、质询机制、唯一识别号和固定附加数据的HASH结果。
  3. FPGA本身计算一个基于其自身存储密钥、发送给安全存储器的相同数据和固定附加数据的期望HASH结果(E)。
  4. 读取由安全存储器件所计算出的HASH结果作为响应(A)与期望HASH结果(E)做比较。
如果A和E相匹配,微控制器认为该电路是“友方”电路,因为它拥有正确的密钥。此时FPGA进入正常工作状态,开启/执行其配置数据中的所有功能。如果A和E不匹配,则该电路被认为是一个“敌方”电路。此时FPGA进入非正常运行状态,只执行有限的功能。

此过程的安全性何在?

对于每个制造单元,设计所有者(OEM)必须为制造带有嵌入式FPGA产品的一方(制造商或CM)提供一个正确预编程的DS28E01-100或DS2432。这种一对一的关系限制了CM可以制造的授权产品的数量。为防止CM窜改安全存储器(或许CM会以存储器没有被正确编程为由申请需要更多存储器),因此建议对密钥进行写保护。即使不进行写保护,也无需担心1-Wire EEPROM中数据的安全性。在设计上就保证了,只有在知道密钥的情况才可更改存储器中的数据。由此产生一个很有用的附加功能,设计者可以利用此特性实现软特性控制:FPGA可以根据从受SHA-1保护的存储器中读出的数据来开启/关闭FPGA中的相应功能。

由OEM来对这类器件在分发到CM手上之前进行编程是不方便或不可行的。为了能较好的解决该问题,Maxim为OEM客户提供SHA-1密钥及EEPROM阵列的预编程服务。在这种服务下,Maxim的工厂按照客户的要求对这类器件进行注册和配置,然后Maxim直接把器件运到CM手里。这类服务的优势如下:
  1. OEM无需向CM泄漏SHA-1密钥。
  2. OEM无需执行系统预编程。
  3. 只有经过OEM授权第三方才可以访问登记的器件。
  4. Maxim保存发送单元的数量纪录,以备OEM查账之需。
除了SHA-1本身所具有的安全特性,上述类型的身份识别认证的安全特性依赖于密钥,而该密钥不可能从安全存储器,也不可能从FPGA中读出。更进一步,该密钥不可能在FPGA进行配置时,利用窃听其配置数据流的手段而被发现。如同从一个可执行代码开始,尝试破解Windows®应用程序的C++源代码一样,通过数据流的反向工程(在该过程中会试图略去认证过程)来判断系统设计,将是一个十分艰巨的任务。

另一个至关重要的安全因素是随机质询机制Q。一个可预测的质询机制(如一个常数)会引发一个可预测的响应结果,因为该结果可被记录,然后由一个微控制器来取代安全存储器。在这种可预测的情况下,微控制器可以让FPGA认为其是一个“友方”电路。而随机的质询机制消除了这种可能性。

如果为每个器件绑定一个唯一密钥就可以进一步提高安全级别。唯一密钥由公共密钥(主密钥)、器件的唯一识别号和由应用所指定的常数计算得来。在这种条件下,如果有一个密钥被破解,则只会有一个器件受到影响,从而不破坏整个系统的安全性。为实现这种功能,FPGA需要知道主密钥,并在计算期望响应(E)之前计算存储器所用的密钥。

更多内容

这里提供的信息在一个相当抽象的水平上给出了通过FPGA和安全存储器实施的IFF认证的概念。 欲了解更多信息,请参见以下文件:

结语

利用身份识别(IFF)概念可以保护知识产权,使之免受非法克隆,这只需要增加一块低成本的芯片并更新FPGA配置代码。安全存储芯片及其在线可编程性使设计者可以通过远程修改配置来实现软件功能管理,而无需派出技术人员到场。对于那些没有应用于软件功能管理的安全存储空间,就可应用于电路板身份标识。