有可能太成功吗?好吧,如果你创建了一个低销量的嵌入式系统,你可以在内部控制整个过程。然而,如果您的产品被证明非常流行,因此需要大量生产,那么您可能最终会与合同制造商(CM)合作,而CM执行的任务之一是将固件编程到产品的微控制器中。

如果您正在使用CM,您需要保护自己不受IP被盗和系统生产过剩的影响。据估计,全世界大约10%的电子产品是假冒的,而CM的过度生产占了这些假冒产品的很大一部分。

不同的人以不同的方式看待IP(知识产权)。对于嵌入式系统,硬件设计是IP的一种形式,固件是另一种形式。在某些情况下,克隆硬件可能相对容易,但如果没有固件,硬件是无用的。如果CM可以不受限制地访问硬件和固件,那么系统的发起者就只能依靠CM的道德和声誉,直到现在…

在本月早些时候于德国纽伦堡举行的嵌入式世界会议上,赛格牌手表宣布了一个名为闪光灯安全针对知识产权盗窃和生产过剩的问题。


(来源:SEGGER)

有多种可能的使用模式。上图反映了一个常见的场景。这是基于每个微控制器包含唯一标识符(UID)的事实。固件IP的所有者——通常是嵌入式系统的设计者——为CM提供Flasher SECURE平台。同时,固件本身驻留在受信任的服务器上,该服务器仍受IP所有者的控制。

当对系统进行编程时,Flasher SECURE从要编程的设备读取UID,并将其传输到可信服务器,该服务器验证UID并生成加密签名。然后将固件和签名返回给Flasher SECURE,后者将它们编程到微控制器中。

当产品通电时,固件所做的第一件事是读取其微控制器上的UID,并在执行任何其他操作之前检查该UID是否与给出的签名相符。底线是固件的这个实例化将仅在这个特定的微控制器上运行。

但是“时间就是金钱,”正如他们所说。如果这个过程减缓了生产,那么它也会增加成本。好吧,不用担心,因为SEGGER的员工已经考虑到了这一点。事实上,作为编程第一个设备的一部分,固件仅从可信服务器下载一次,然后存储在Flasher SECURE中。


(来源:SEGGER)

当涉及到后续单元时,在Flasher SECURE对固件进行编程的同时,它还读取微控制器的UID并将该UID发送到受信任的服务器。可信服务器验证UID,并在编程完成之前创建并返回相应的签名。一旦固件被加载到设备中,剩下的就是加载签名,这需要的时间非常少。

那么,如果固件确定它在假冒系统上运行,会发生什么?这取决于它的创造者。一种选择是它干脆拒绝做任何事情。另一种可能性是固件显示一条消息,通知最终用户他们正在使用非法产品。根据系统(您不希望在安全关键产品中执行此操作),固件是否可能假装在实际产生错误结果或做出荒谬行为的同时,却在做自己的工作,从而使新主人感到不满,他们会强行向那些最初就破坏了系统的小骗子表达不满。

我特别偏爱的另一个选项是固件假装在积极尝试访问互联网并广播尽可能多的信息以帮助IP所有者追踪的同时。

如果你想变得非常讨厌,你可以让固件尽其所能对它接触到的任何东西造成破坏,但也许我们应该努力克制自己,不要堕落到坏人的水平。你怎么认为?如果有人偷了你的设计警告:这是一个伪造的系统消息就够了,还是你想“大闹一场,让战争的狗粮溜走?”(向吟游诗人道歉)?