在过去20年中,FPGA (现场可编程门阵列)已经从原型开发工具演变为消费和工业应用的灵活解决方案。随着FPGA逻辑复杂性从几千个逻辑门升至数百万个逻辑门,器件可以容纳更多的系统关键功能(即知识产权,IP)。
如今,设计者可以选择FPGA,利用各种技术保护配置数据—OTP (一次性可编程)反熔丝、基于闪存的可重复编程存储单元以及可重复编程、基于SRAM的可配置逻辑单元。由于配置数据存储于FPGA芯片,并且芯片具有防止存储数据读取的机制,反熔丝和基于闪存的解决方案都提供了相对安全的方案。此外,除非采用非常复杂的方法,例如解包、微探针、电压对比电子束显微镜和聚焦离子束(FIB)探测,来“窃听”硅体并使安全机制失效1,否则数据遭到破坏的可能性非常低(关于FPGA的简要背景资料,请参考附录A,FPGA工艺及相关事项)。
然而,基于静态RAM (SRAM)的FPGA几乎没有任何安全措施保护IP (配置数据),防止数据被非法复制和剽窃。原因在于,一旦加载数据,则被存储于SRAM存储器单元,而该存储器很容易被侦测确定其内容。此外,缺乏一定的安全机制保护加载到芯片之前的配置数据,该数据对各种侦测措施敞开了大门。由于比特流通常储存在独立的存储器芯片,并由FPGA在上电加载配置的模式下进行读取,所以有可能遍历数据。尽管如此,还是可以找到一些简单方式保护数据,防止人为复制配置数据、剽窃IP。
基于SRAM的FPGA的弱点
由于两芯片方案(FPGA和配置存储器)中,配置数据比特流在上电阶段暴露在外部,而FPGA不能分辨比特流是“真实数据”还是非法获得的复本,配置数据所包含的IP完全不受保护。通过密钥和比特流加密可以部分地解决这个问题。但是,由于这种保护方法成本高昂,只能用于高端FPGA,并不适合消费类产品。
没有保护
在没有比特流加密的情况下,基于SRAM的FPGA设计特别容易被盗版。可以捕获配置比特流,并将其重新编程写入配置PROM,或简单回放,对原始设计进行克隆。从而使克隆产品与原版产品竞争,窃取研究和开发投资,降低原制造商的市场份额和效益。
即使没有加密,反熔丝或基于闪存的FPGA也比基于SRAM的FPGA更加安全,因为配置数据没有暴露在外部。但如果由装配厂编程FPGA,装配厂即有可能对更多的设备(多于授权数量)进行编程并自行销售,无需投入任何研发成本。这种非授权器件与授权器件很难区分,会严重影响公司效益。
在一定程度上提高基于SRAM的FPGA设计安全性的一种方法是:采用多芯片封装,并将非易失存储器与FPGA封装在一起。但如果有人打开封装,存储器和FPGA之间的数据接口仍然会暴露在外部,配置模式的安全性仍有可能受到威胁。
配置比特流的结构(即数据位的顺序、如何编码和识别)基本没有正式的文件说明。尽管理论上可行,但比特流的模糊度、复杂性及其尺寸,使得逆向工程非常困难且耗时1。如果逆向工程成功,即使只对配置数据流进行部分逆向工程,仍有可能非法侵入机顶盒以窃取服务或篡改交通工具的动力设置,导致原厂的责任问题。
设计挑战
为了防止系统成本剧增,设计人员还必须继续使用不带加密的基于SRAM的FPGA。但他们必须找到IP保护的方法,并将安全措施的成本控制在尽可能低的等级,而且不会对生产流程造成大的影响。
把用于安全保护的硬件电路装入电路板允许的空间而且不会增加整体功耗,这一点对于设计非常重要。并且,安全性对于FPGA资源(例如:引脚和逻辑单元的数量)的影响必须尽可能小。
响应:认证
认证过程的目的是在两个或多个实体之间建立标识验证。基于密钥的认证方法是把密钥和被验证数据(即“信息”)作为输入,计算信息验证代码(MAC)。然后将MAC附加在信息中,信息接收方进行相同的计算并将其计算的MAC与随信息传送的MAC进行比较。如果两个MAC一致,则判断信息可靠。
该基本模型有一个缺点:被拦截的消息可以由非验证发出方随后重新发送,并且被误认为是经过认证的。如果MAC计算包含了由MAC接收方选择的随机质询,则将避免这种简单的“重放攻击”的成功几率。图1所示为该模式的通用概念。质询码越长,潜在的重放就越难以记录所有可能的响应。
为了检验MAC发送方的真实性,MAC接收方产生一个随机数字并将其作为质询发送到发送方。然后,MAC发送方必须根据密钥、信息和接收方的质询计算新的MAC。随后,发送方将计算结果返回给接收方。如果发送方被证实能够计算任何质询码的有效MAC,则可以确认其已知密码并被视为可靠。这个过程称为质询-响应认证(参见图1)。
用于计算MAC的算法有多种,例如Gost-Hash、HAS-160、HAVAL、MDC-2、MD2、MD4、MD5、RIPEMD、SHA系列、Tiger和WHIRLPOOL。经过仔细审议并被国际认可的一种单向散列算法是SHA-1,这种算法由美国国家标准技术研究所(NIST)开发。SHA-1已经纳入国际标准ISO/IEC 10118-3:2004。
通过NIST网站可以查询SHA-1算法的数学依据2,SHA-1算法具有以下显著特征:
●不可逆:确定与MAC对应的输入在计算上是不可行的。
●防冲突:不能找出多个可产生给定MAC的输入消息。
●高雪崩效应:输入的任何改变都将导致MAC结果的重大改变。
由于上述原因,以及国际上对该算法的认定,SHA-1成为安全存储器质询-响应认证的最佳选择。
硬件实现
质询-响应认证方案可以作为基于SRAM的FPGA系统设计的一部分实施,这种方式成本低廉(图2)。该例中,安全存储器件仅通过一个引脚连接到配置为双向(开漏)通信的FPGA引脚。连接至VDD的电阻为安全存储器供电并为漏极开路通信提供偏置。Maxim的DS28E01 1Kb保护型1-Wire EEPROM带有SHA-1引擎,非常适合这种设计。该器件包含一个SHA-1引擎、128字节用户存储器、可用于芯片内部操作但不能从外部读取的密钥以及唯一的、不可更改的识别码。
DS28E01的1-Wire接口将通信通道减少至单个FPGA引脚,用于质询-响应认证。因为FPGA的I/O引脚常常受限,这种安全方案对系统的影响最小。另一种可构建的实施方案是利用FPGA实现通用I?C接口,通过DS28CN01 (等效于DS28E01的I?C器件)进行认证,或通过在小规模ASIC或CPLD中实现SHA-1引擎和其它功能。但是,如果安全保护是器件的唯一功能,使用ASIC会大大增加成本。
为了加强DS28E01的安全特性,FPGA必须能够进行以下操作:
●产生质询随机数(片上随机数发生器通常产生伪随机数,不具备和真随机数同等的安全性)。
●已知用于内部操作的安全密钥,但不能从外部侦测。
●计算包括密匙、随机数及附加数据在内的SHA-1 MAC,类似于安全存储器。
●逐字节比较数据,使用FPGA实现CPU的异或功能。
一些主要的FPGA供应商提供类似于微控制器功能的宏。Xilinx微控制器功能占用192个逻辑单元,这仅仅是一片Spartan-3 XC3S50器件的11%。
工作原理
上电时,FPGA从其配置存储器开始自行配置。当前的FPGA微控制器功能生效并执行质询-响应认证,也称为敌我识别(IFF),这个识别过程包含以下步骤:
●产生一个随机数,将其作为质询(Q)发送至安全存储器。
● 通知安全存储器根据其密匙、质询、唯一识别码及其它固定数据计算SHA-1 MAC。
●根据相同输入、安全存储器使用的常数以及FPGA密钥计算SHA-1 MAC,即所预期的响应(MAC1)。
●将安全存储器计算的SHA-1 MAC (读取认证MAC)作为响应(MAC2)与所预期的响应(MAC1)进行比较。
●如果MAC1、MAC2一致,FPGA将其环境认定为“朋友”,因为它显然知道密钥。FPGA转变为正常工作,激活/执行所有配置编码定义的功能。但是,如果两个MAC不同,环境则必被认定为“敌人”。这种情况下,FPGA执行应用相关的操作而不是正常工作。
为什么该过程是安全的
除了SHA-1提供的固有安全性以外,上述IFF认证过程的主要安全单元是密钥,安全存储器或FPGA都不能对其进行读取。并且,因为比特流中的数据杂乱无章,当FPGA自我配置时,对配置流的窃听不会泄露密钥。考虑到数据字节的尺寸,对比特流进行逆向工程以推测设计架构非常耗时,几乎不可能完成该项任务。
另一个至关重要的安全措施是质询的随机性。可预测的质询(常数)产生可预测的响应,该过程可以记录一次,随后由模拟安全存储器的微控制器重放。利用可预测的质询码,微控制器可以成功地让FPGA将其认定为“朋友”。IFF方法中质询码的随机性消除了上述忧虑。
如果每个安全存储器中的密钥都是与器件相关的,则可以进一步提高安全性:每个具体密钥都是利用主控密钥、SHA-1存储器的唯一识别码以及相关的常数计算得到。如果具体个体密码被公开,则只影响单个器件,而非整个系统的安全性。为了支持个体密钥,FPGA需要知道主密钥并在计算预期响应之前首先计算1-Wire SHA-1存储器芯片的密钥。
逻辑问题
对于要构建的所有单元,开发商(OEM)必须向利用嵌入式FPGA制造产品的合同厂商(CM)提供适当的预编程安全存储器。这种一对一的关系限制了CM能够构建的授权设备的数量。为了防止CM窃取安全存储器(例如:声称由于某些内存的编程不正确,需要更多内存),建议OEM对安全密钥设置写保护。
即使其没有写保护,也无需担心1-Wire EEPROM数据存储器的安全性。设计保证只有知道密钥的人才能够更改该存储器数据。这一附加作用很受欢迎,因为该功能使应用设计者可以进行软件功能管理—FPGA可以根据从SHA-1安全存储器读取的数据激活/禁止某些功能。
OEM并不总是在将存储器件运送给CM之前先对其进行预编程。为了解决这一问题,安全存储器制造商可以为OEM设置SHA-1密钥和EEPROM阵列预编程服务。Maxim为您提供这样的服务,根据OEM的输入,在工厂登记和配置安全存储器,然后将其直接运送给CM。该服务具有以下主要优势:
●消除OEM向CM透露密钥的必要性。
●避免了OEM实施自己预编程系统的必要性。
●只有OEM授权的第三方可以访问注册器件。
●供应商保存运输数量的记录,以备OEM审核。
方案验证
本文介绍的FPGA安全认证方案已经在Xilinx产品上进行了测试,Xilinx也在其应用笔记XAPP780中声明:“该系统的安全性建立在密钥和安全环境中加载密钥的安全性基础上。整个参考设计,除密钥外,都满足得到普遍应用的Kerckhoffs原理。应用笔记提供的编程和认证的简单接口简化了防盗版保护方案的实施”4 (Flemish语言学家Auguste Kerckhoffs在其关于军事加密领域极具创造性的文章中指出:除了依靠模糊性之外,安全应该依靠密钥的力量。他主张,遭到入侵时只需要更换密钥,而不是整个系统)。
结论
只需添加一片类似于DS28E01的低成本芯片并更新FPGA配置码,即可实现IP保护,避免设计被盗版。利用1-Wire接口,只需将FPGA的一个引脚用于安全性设计。如果FPGA有更多引脚,则可使用I?C接口的安全存储器,替代1-Wire设计。设计中还需对FPGA配置以及嵌入式微控制器的控制软件进行某些修改。
可以定购固定密钥或计算密钥及特殊应用数据的安全存储器。然后将预编程器件仅发送给OEM,或发送给经过授权的CM。CM只能生产、提供与预编程器件相同数量的产品。