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块看起来像是设计的有机组成部分,因而无法被识别。