问题的提出
开发电子产品,包括嵌入式FPGA的配置代码,其成本是相当高的。因此应当防止未经授权的机构对这些设计和配置进行拷贝,以保护设计者的知识产权。有很多种方法能实现这样的保护功能。如在Xilinx Virtex-II和Virtex-4这类的高端FPGA中,支持对配置数据流的加密操作。这样仅当FPGA中含有相同的密钥时,这些数据流才可以工作。但是这种加密的方法对更为广泛的、对成本很敏感的应用场合来说不甚合适。因此,这里利用另一种可行的身份识别法来防止意外拷贝。这种方法对所有FPGA家族都适用。
设计思想
在身份识别的概念中,要求FPGA的设计者实现与一个安全存储器通讯的功能以进行工作。图1是实现该设计的一个简化原理图,即用DS2432的1-Wire存储器件为FPGA提供安全控制和保护的简化框图。
安全存储芯片需满足下列要求: 包含用于芯片内部操作的密钥,该密钥对外界不可见; 包含一个的不可改变的识别号。可用该识别号来计算一个与设备绑定的密钥;能够进行包含密钥、随机数(用做质询机制)、识别号及附加数据(常数)在内的HASH运算。
为了满足应用所需的安全性,该HASH算法应满足:不可逆,即要使从一个HASH结果逆推出与之相关的输入数据在计算上是不可行的;防“碰撞”,使用另外一组输入数据来产生一个相同的HASH结果是不可行的;具有极高的雪崩效应,即输入数据的任何变化,都会极大的影响到HASH运算结果。
而SHA-1算法是一个被全面而广泛验证的单向HASH算法,可以满足上述需求。因SHA-1算法的主要特征为:不可逆性-从计算角度讲,不可能从MAC推演出输入信息或不可能根据SHA-1输出推算出对应的输入;实际上无法找到一种以上的输入以产生同一个给定的输出;高雪崩效应,即输入的任何变化都会使MAC结果产生巨大的变化;经过了周密的审查和论证,SHA-1已经发展成被ISO/IEC 10118-3:2004国际标准所采用。
应用DS2432安全存储器是设计方案的理想选择
内置SHA-1算法的安全存储器DS2432。SHA-1存储器件将为附件/外设鉴别及防窜改、存储器应用提供低成本、高效的解决方案。DS2432或DS28E01-100是内置SHA-1算法的安全存储器。这些器件的单总线接口非常适合此类应用,因为他们只需FPGA的一根引脚就可实现这些功能。这主要取决于它的功能特征。
DS2432在单个芯片内集成了1024位EEPROM、64位密钥、512位SHA-1引擎,以极低的成本提供了一个安全的方案。修改DS2432的数据时,1-Wire主机必须成功地计算并发送160位SHA-1信息鉴定码(MAC),这需要预先知道DS2432的数据结构,其中包括没有泄漏的64位密码。DS2432还提供一个读存储器命令,可自动为1-Wire主机计算并提供160位MAC。注意,该过程使用了未经泄漏的密码,为主机鉴别基于DS2432的从机配件或外设提供了一种非常有效的解决方案。另外,该器件还提供性的写保护和OTP EPROM模式。每个DS2432具有自身的、由工厂刻入的64位ROM注册码,为其所嵌入的产品或系统提供的ID。这个的64位码也是SHA-1的组成成份之一。DS2432的通信和操作通过单点连接的1-Wire接口实现,并可以在-40°C至+85C°、2.8V至5.25V宽压范围内进行读、写操作。图2为DS2432内部组成与外接μC示意图。
DS2432 SHA-1安全存储器数据单元和数据流路径
DS2432 1-Wire接口、1kb SHA—1安全存储器的主要数据单元和数据流路径如图3所示。可以看到8字节密钥和临时存储质询码的缓冲存储器(暂存器)。前面未曾提及的数据单元包括独的器件ID号(标准1-Wire特性)、四个用户EEPROM页面、控制寄存器和系统常数。器件ID用作1-Wire网络中的节点地址,同时还用于过程。用户存储器存放待“信息”的主要部分。系统常数有助于满足格式需求和完成填充功能,从而构成SHA-1计算的64字节输人数据块。控制寄存器执行特定的器件功能,例如可选的密钥写保护或EEPROM仿真模式;控制寄存器通常不参与过程。
关于信息认定码
DS2432的SHA-1存储器件安全性依赖于双向数据通信中的信息码(MAC)。计算MAC 仅需要输入公开的字符串(由存储器内容、器件的序列号和随机质询码等组成),和结合密码字结合在一起,进行SHA-1运算。以及一个作为SHA-1算法输入信息的机密密钥。计算出的摘要(或散列)被称为MAC。将MAC连同信息一起传输,提供了一种安全的方法,验证你是否知道密钥,以及在传输过程中数据未被篡改。在读操作期间,SHA-1存储器件以MAC响应,据此验证其是真实可信的,以及主机正确地接收数据。在写操作期间,主机提供MAC,以验证它有权对器件的存储内容进行修改和器件正确地接收到新存储器内容。 FPGA需实现下述功能,以利用这些器件的安全特性:产生随机数;知道一个用于芯片内部运算的密钥,且该密钥对外界不可见;同安全存储器一样进行包含密钥、随机数、附加数据及器件识别号在内的HASH计算;比较HASH计算结果。
对基于MAC的安全系统算法的成功攻击是要找出密钥。对大多数现有的SHA-1存储器件来说,其密钥长度为64位,仅能写入(不久将推出新型的、更长的密钥长度器件)。攻击者向器件发出质询码,读入器件生成的MAC码,接着对全部64位数执行穷举搜索,直到发现相匹配的MAC码。这一过程需要进行2的64次方次SHA-1运算,一台64 CPU Cray X1超级计算机需要花费十多年时间才能计算出。
找到一条与给定摘要相匹配的信息源,需要2的160次方次运算(远超过找出密钥所需的264次运算)。由于输入信息的长度被固定为512位,并且其中448位是已知的公开数据,因此最直接的方法是寻找剩下64位的正确值(即密钥)。只要由一个给定的摘要不能反推出生成摘要的原始信息",那么就不存在比穷举法搜索密钥更成功的攻击方法。
注意:尽管为找出机密密钥所进行的2的64次方次运算其复杂程度要小于为发现一对信息发生碰撞需要的2的69次方次运算,但两种攻击方式之间没有可比性。如果研究人员找到一种在2的50次方次运算之内发现SHA-1碰撞,但仍然需要经过2的64次方次SHA-1运算才能找到密钥。因此,此次新的攻击虽然在任意两条输入信息之间找到碰撞的新攻击方法,并不能用于为一个确定的输入信息找到碰撞,这是因为需要仔细地选择输入信息。
由此分析可明显看出, 所定义的SHA-1算法具有两点安全性:防碰撞和不可逆性。这些设备的实用性取决于安全散列算法的坚固性和安全性。
以上对FPGA的功能要求需要FPGA具备微控制器的性能,例如PicoBlaze,它是Xilinx专用于Spartan-3,Virtex-II,Virtex-II Pro,Virtex-4 FPGA和CoolRunner-II CPLD的自由宏。PicoBlaze使用192个逻辑单元,仅为Spartan-3 XC3S200器件的5%。
对FPGA的身份识别及防拷贝技术的实现
当器件上电后,FPGA从Flash PROM中读取数据对自己进行配置。配置完成后FPGA的微处理器功能被启动并进行工作,该工作包括下列步骤:产生一组随机数并作为一个质询机制(Q)发送给安全存储器;向安全存储器发出指令,要求其计算一个基于密钥、质询机制、识别号和固定附加数据的HASH结果;FPGA本身计算一个基于其自身存储密钥、发送给安全存储器的相同数据和固定附加数据的期望HASH结果(E);读取由安全存储器件所计算出的HASH结果作为响应(A)与期望HASH结果(E)做比较。
如果A和E相匹配,微控制器认为该电路是“友方”电路,因为它拥有正确的密钥。此时FPGA进入正常工作状态,开启/执行其配置数据中的所有功能。如果A和E不匹配,则该电路被认为是一个“敌方”电路。此时FPGA进入非正常运行状态,只执行有限的功能。图4为FPGA的身份识别及防拷贝技术实现过程示意框图。
对FPGA的身份识别及防拷贝技术的实现此过程安全性分析
对于每个制造单元,设计者(OEM)必须为制造带有嵌入式FPGA产品的一方(制造商或CM)提供一个正确预编程的DS2432。这种一对一的关系限制了CM可以制造授权产品的数量。为防止CM窜改安全存储器(或许CM会以存储器没有被正确编程为由申请需要更多存储器),因此建议对密钥进行写保护。即使不进行写保护,也无需担心单总线EEPROM中数据的安全性。在设计上就保证了,只有在知道密钥的情况才可更改存储器中的数据。由此产生一个很有用的附加功能,设计者可以利用此特性实现软特性控制:FPGA可以根据从受SHA-1保护的存储器中读出的数据来开启/关闭FPGA中的相应功能。
由OEM来对这类器件在分发到CM手上之前进行编程是不方便或不可行的。为了能较好的解决该问题,达拉斯半导体为OEM客户提供SHA-1密钥及EEPROM阵列的预编程服务。在这种服务下,达拉斯半导体的工厂按照客户的要求对这类器件进行注册和配置,然后直接把器件运到CM手里。这类服务的优势如下: OEM无需向CM泄漏SHA-1密钥; OEM无需执行系统预编程; 只有经过OEM授权第三方才可以访问登记的器件; 达拉斯半导体保存发送单元的数量纪录,以备OEM查账之需。
除了SHA-1本身所具有的安全特性,上述类型的身份识别的安全特性依赖于密钥,而该密钥不可能从安全存储器,也不可能从FPGA中读出。更进一步,该密钥不可能在FPGA进行配置时,利用窃听其配置数据流的手段而被发现。如同从一个可执行代码开始,尝试破解Windows应用程序的C++源代码一样,通过数据流的反向工程(在该过程中会试图略去过程)来判断系统设计,将是一个十分艰巨的任务。
另一个至关重要的安全因素是随机质询机制Q。一个可预测的质询机制(如一个常数)会引发一个可预测的响应结果,因为该结果可被记录,然后由一个微控制器来取代安全存储器。在这种可预测的情况下,微控制器可以让FPGA认为其是一个“友方”电路。而随机的质询机制消除了这种可能性。
如果为每个器件绑定一个密钥就可以进一步提高安全级别。密钥由公共密钥(主密钥)、器件的识别号和由应用所指定的常数计算得来。在这种条件下,如果有一个密钥被破解,则只会有一个器件受到影响,从而不破坏整个系统的安全性。为实现这种功能,FPGA需要知道主密钥,并在计算期望响应(E)之前计算存储器所用的密钥。
结语
本文描述了如何利用安全存储器DS2432来完成身份识别功能,以实现对FPGA设计的保护。在完成身份识别特性的同时,还可实现软功能管理和电路板识别功能。
利用身份识别(IFF)概念可以保护知识产权,使之免受非法克隆,这只需要增加一块低成本的芯片并更新FPGA配置代码。安全存储芯片及其在线可编程性使设计者可以通过远程修改配置来实现软件功能管理,而无需派出技术人员到场。对于那些没有应用于软件功能管理的安全存储空间,就可应用于电路板身份标识。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。