据估计,目前盛行的假冒电子产品已经占到整个市场份额的10%,这一数据得到了美国反灰色市场和反假冒联盟(AGMA)的支持。AGMA是由惠普、思科和其它顶级电子OEM公司组成的一个行业组织。据该组织估计,制造商因盗版造成的损失超过1000亿美元,而对最终用户来说,信誉损毁和可靠性问题带来的隐性成本则更难以确定。
可编程逻辑的流行和ASIC的衰退带来的负面影响是拷贝设计越来越容易。对ASIC做反向工程是一件困难、昂贵且费时的工作,而拷贝最流行的FPGA配置比特流则相对简单。如图1所示。
图1:偷窃一个FPGA设计并不复杂。
因此,许多公司也许会发现他们的知识产权(IP)第二天就出现在竞争对手的产品中。剽窃者无需花费研发成本,因而能够以比合法供应商低得多的价格出售产品,从而窃取更多的市场份额。
关键问题是如何才能阻止这种偷窃行为并证明设计所有权。Algotronix公司推出的DesignTag产品试图解决上述问题。DesignTag代码可隐藏在FPGA比特流中,因此很难被定位和去除,即使剽窃者知道FPGA比特流中包含的DesignTag代码。
一旦这个代码被复制进盗版比特流中,它就像信标一样不断提示:该设计是盗版的。这在概念上非常类似于使用UV笔标记邮政编码或邮递区号,尽管它不能阻止盗版,但日后被使用时则能明确所有权。
在XC3S2000 FPGA中DesignTag代码只占用价值0.57美分的硅片(使用100片以上的目录价),占用芯片上1.3%的逻辑资源。与非法拷贝造成的潜在损失相比,这点开销微不足道。
更隐匿的问题来自所谓的“过制造(over-building)”。造成这个问题的背景是,过去10多年中许多公司撤消生产部门,专注于设计产品,并将产品交给合同厂商(CEM)制造。这种方式将CEM置于中心和关键位置。当然,绝大多数CEM是负责任的,提供有价值的服务。但也有少数不道德的CEM会生产超出合同数量的产品并出售给灰色市场,以便从中赢取超额利润。这时DesignTag就能派上用场,用来识别设计的来源和所有者。
DesignTag的另一个应用是提供串行序列号或版本识别。例如,医疗、汽车、工业、军事或航空领域的制造商可能希望在设备上打上最终用户代码的标记,或跟踪FPGA配置版本。在更新频繁的应用场合,版本控制尤其重要。无需进行电气连接就能在运作中的系统中检测出DesignTag,这对球栅阵列封装来说好处更大,因为接触这种封装的顶部要比电气连接方便得多,而且无需借助于可能影响正常工作的软件或硬件中断就能实现监视功能。
另外一个潜在的好处是让嵌入式系统与DesignTag交互,以便标记出故障或状态条件。在这类应用场合,DesignTag经过编程可以输出一个指示内部状态的不同代码。
DesignTag工作原理
DesignTag是一个小型低成本IP内核,可以内置在FPGA中作为设计的一部分。它是一种带唯一代码(“签名”)的数字内核,可以从外部识别,而无需读取FPGA比特流或内部寄存器。
它的工作原理是以一种预先定义好的方式调制主器件的功耗。微小的热脉冲能以很低的衰耗透过芯片封装传播。功率“浪涌”电平被选中以提供只有约0.1℃的封装温升。额外增加的典型功耗值是5mW,而中等规模的Spartan FPGA的正常功耗通常大于150mW,这意味着这个标记信号远低于噪声电平。
DesignTag默认情况下在工作15分钟后关闭(用户可修改这个时间),这样做有两个作用。首先,它消除了少量增加的功耗。其次,它使剽窃者的检测更加困难。DesignTag也可以被FPGA中发生的内部事件触发,这种事件可以是发送ID代码或指示内部状态,或是故障条件的一条指令。
DesignTag数据库
所有DesignTag的代码数据都保存在中央数据库中。用户可以选择将他们的代码“公开”或“隐蔽”。公开列表的优势在于所有DesignTag阅读软件都可以检测这些代码,从而允许用户、执行代理或合同厂商确认被测器件(DUT)的有效性。
相比之下,当用户不希望任何第三方知道他们的产品是否被打上了标记时,隐蔽代码是最好的选择。在这种情况下,代码由用户分发到受信任方,只有安装了这些代码的阅读软件才能检测出相应的标记。
将DesignTag集成进FPGA
在FPGA中使用的这种IP内核被实例化为HDL代码,形成一个用Verilog或VHDL编写的“黑盒”。可供交付的内容包括,用于驱动热量输出的内置代码以及电路要求的I/O引脚。全数字设计的尺寸很小,一般在赛灵思的Spartan 3 FPGA中只占用256个片(slice)。
基于安全性考虑,这种内核只提供加密过的EDIF网表。该IP采用了多种技术来阻止“反向工程”,并且能够将自己隐蔽起来防止受到篡改或检测。DesignTag内核很大程度上独立于用户设计,因此对设计流程的影响很小。
图2:DesignTag提供了“偷窃证据”。
DesignTag采用2~250MHz范围之内的一个输入时钟来驱动工作时序。这个时钟应来源于系统内的任何有效时钟,而不能是专门为标记IP内核产生的时钟。最主要的原因是最低成本因素,它还能通过并入系统来迷惑检测或中止标记功能的企图。
DesignTag的控制输入可以由嵌入式系统驱动,或在设计阶段设置为默认值。例如,标记内核可以根据需要设置为连续发送;也可以在上电后的一段规定时间内发送,然后进入待机模式。还有另外一个选项,即发送序列可以在任何时间由一个触发脉冲(Trigger)输入端来启动。
标记内核可以许可最多4个不同的内置代码,这可以通过代码选择 (Code Select) 输入端进行选择。嵌入式系统可以对这个内核进行编程,让它根据要求发送其中一个代码来指示内部状态条件。例如,指示内存发生溢出或检测到软故障条件,整个过程不会中断系统功能。
篡改输出(Tamper output)信号可以从DesignTag送入嵌入式系统,这有两个好处。第一,它能用作削弱系统性能的去激活信号,并通过翻转配置比特流中的随机比特来迷惑取消标记功能的企图。第二,如果攻击者对比特流实施反向工程来重建设计,由于DesignTag块看起来像是设计的有机组成部分,因而无法被识别。
检测DesignTag输出
可以在器件正常工作时,将热电偶以良好热接触的方式放置在封装顶部来检测DesignTag代码,如图3所示。热量读取数据被输入进DesignTag阅读软件,并进行解密。完成代码识别的检测时间需要数分钟,系统可以检测和区分同一器件中的多个标记。
图3:用热电偶检测热信号。
不良条件可能增加检测时间,但内部算法会随着采样量的增加而使可靠性增加(图4)。如果阅读工作在静止空气中进行,获取时间则可以缩短。由于加电而导致DUT自身的散热不会阻止标记的检测。可能延长检测时间的因素包括:热不稳定状态,探针与封装之间接触不良,或一个设计中有多个代码。
图4:信号被累积和处理,直到取得很高的把握性。
DesignTag可以支持所有流行的封装类型。不过目前DesignTag不推荐用于散热器或采取强制制冷的场合。
Algotronix公司推荐使用Pico科技公司带热电偶的TC-08数据记录仪。其它设备正在评估中。TC-08已包含在DesignTag入门套件中,套件中还包含有阅读器软件、安装有FPGA和5个有效DesignTag代码的评估板(图5)。阅读器软件可在运行Windows(XP或Vista)的PC上运行。
图5:入门级套件包括数据记录仪、软件、评估板和5个唯一代码。
分析攻击DesignTag的企图
任何反剽窃机制的最重要特性之一是识别、删除或去激活身份标记的难度。潜在偷窃者要解决的第一个问题是判断盗版代码中是否包含DesignTag。微小的热信号包含有64位代码,必须使用DSP和解密技术才能检测出来。扩展代码被用来控制采用线性反馈移位寄存器(LFSR)这类电路的热发生器。
扩展代码发生电路基于唯一的‘标记ID’,就像是密钥一样,其中每个密钥可导致不同的伪噪声序列。DesignTag阅读软件可以识别公开代码,但没有基础知识和授权,软件是无法检测私有代码的,这些代码将保持隐秘状态。
各种形状的标记波形是伪随机的。这些代码通过重复的功率循环和关联被观察信号能够挫败那些解码信号的企图。
另外一种可能的攻击方式是获得多个DesignTag IP内核,并在比特流或加密的网表级对它们进行比较,以便观察哪些特殊源码被修改过,并假设这些特殊源码对应的就是标记代码比特。为了挫败这种攻击,标记IP内核的许多内容以随机方式加以改变,从而在任意两个标记实例之间形成巨大数量的差异。
攻击者可能试图去激活DesignTag。DesignTag是在设计捕获阶段作为黑盒实例化进FPGA设计的,一旦融入设计,就被集成进配置SRAM器件的比特流中。用户可以选择加密这些比特流,但大多数用户不会这么做。FPGA配置比特流的大小不等,一般从中等规模的Spartan器件的2Mb到大型Virtex系列器件的10Mb都有。攻击者可能试图使用软件从比特流信息中重构网表。
虽然过去这种软件已经开发出来,并且在技术文献中有过报告,但目前攻击者似乎还无法公开得到这些工具。这种软件的输出通常是映射到FPGA原语后的扁平设计网表;虽然在比特流基础上向前进了一步,但与原始的设计源代码相比还有很大的差距。
攻击者还可能在比特流级尝试和操作设计,他们会有选择的“翻转”某些比特,然后在关闭安全特性的情况下监视效果。挫败这种攻击的关键是使每次‘翻转一个比特,然后观察发生了什么’所需的时间尽可能长,并使攻击者很难判断实际的安全特性是否完全被关闭。读一个DesignTag代码需要花数分钟时间,这使得类似这种基于研究的攻击的可行性大大降低。
与FPGA设计安全机制相比,DesignTag的优势还在于它不依赖于FPGA的特定资源,而攻击者很容易利用这种依赖性确定比特流中的位置。
基于闪存或反熔丝技术的FPGA是在工厂中配置的,因此包含DesignTag的代码不会泄漏给最终用户。针对DesignTag的任何攻击都将涉及物理性地篡改器件,从而导致FPGA损坏。
热信号
到这里你可能想知道为何选择非传统的信号媒介。与芯片内电路交流信号最显而易见的方法是通过封装引脚。然而,这种机制在这种情景下有很大的缺陷。为了有益于最终用户,标记机制必须独立于安装芯片的电路板,并独立于任何系统软件。
在某些情况下,电路板和系统软件开发人员可能就是怀疑滥用IP的那一方。另外,访问标记不应要求详细地了解包含可疑芯片的系统。在使用BGA芯片和精细间距扁平封装时,即使在电路板上找到合适的位置来探测信号也可能很有技巧性。因此通过封装引脚访问标记信息通常要求训练有素的技术人员才能办到。
通过封装的热通道带宽很窄,这与DesignTag采用的信号机制非常匹配。数据传输速率很低,但创建代码只需极少量的比特,而且热信号方法还有一些额外的优点。例如,热信号通过封装发送,并被与封装顶部接触的探针检测到,这种方法不会影响器件的正常工作。由于无需访问电气连接,也不需要使用额外的封装引脚,因此DesignTag可以被增加到现有产品中而不改变其引脚布局。
半熟练操作人员可以从器件所在位置或在测试装置中进行阅读。高引脚数量的球栅阵列要求高密度的PCB走线,而引出到测试点的额外走线是个大问题,可能让攻击者想到DesignTag的存在。利用EMI、射频或电源噪声的标记信号方式理论上也是可能的。低电平电气信号机制将深受芯片正常工作、快速电源毛刺和地线反弹以及相邻PCB走线信号耦合带来的外部噪声的影响。而诸如无线电波、主电源和其它EMI等外部信号源也会造成干扰。
现代系统要求多个电源,这些电源必须很好地加以屏蔽和去耦。电源平滑滤波可能负面影响到芯片输出的回送信号,从而降低芯片性能和标记信号质量。虽然电气信号的宽带宽能够提供快速检测,但实验表明这种好处无法弥补上述缺点。
本文小结
反IP侵权和克隆设计的成本在迅速提高。本文介绍的DesignTag技术提供了在设计中增加水印的低成本便利方法。标记目标设计提供了验证盗版或侵权行为的简单途径,无需求助于冗长的工程评估。只需数分钟就能检测出赝品,这使得DesignTag成为一种值得推广的解决方案。