2024年4月1日发(作者:牢玮)
固件芯片物理写保护
措施一:关闭通往外界的“大门”
芯片的烧录接口(如UART、JTAG)就像是通往外界的“大门”。
通过这扇门,工具可以将固件灌入芯片或者读取出来。如果不把这扇
门给关上,里面的固件极易被抄袭者读取,然后烧录到复制的硬件。
这样,辛苦培养的“孩子”就变成了别人家的“孩子”
关闭“大门”有以下几种方式:
使能加密位(如LPC802的CRP),关闭烧录接口,任何工具都
无法接入。这种方式可靠性高,大多数MCU都具备这种特性;
固件主动将烧录接口管脚配置成IO管脚,实现烧录接口关闭,如JTAG
的TCK管脚配置成GPIO。这种方式有一定风险,固件必须在芯片启
动后尽可能快地关闭;剪掉烧录管脚。除非打开芯片,否则很难将管
脚引出。由于可操作性较差,适用于产品量少、价值低的情况。
措施二:为固件“加壳”
“加壳”就是为固件披上“保护罩”,数据格式及含义发生变化。
抄袭者拿到数据后,至少得花个几年的时间才能够解开。最终解开时,
产品即将跨入生命终点,这时已经没什么意义了。适用于不具备加密
机制的NoRFlash、NandFlash、EEPROM。具体措施是:采取加密算法
对原始数据加密,将加密后的数据写入存储器。读取时,采用解密算
法还原成原始数据。这种方式,需要工程师在固件中设置好加解密算
法。
措施三:采用唯一ID芯片,固件跟硬件绑定
如果做最坏的打算,固件已经被读出来了,是否还有希望防抄袭?
有!有些工程师巧妙地选用具有唯一ID的芯片,这样便无法复制出
完全相同的硬件。固件会检查ID是不是与它期望的一样。如果不一
样,就可以判断出有人已经破解成功,检测出固件被烧到其它硬件。
不过现在UID也可以备复制,所以安全性还是有待商榷。
措施四:不要轻易将原始固件交给其他人
在将固件交给工厂时,也要特别注意做好加密。看似安全的地方
往往容易隐藏着问题。不管是交给自己的工厂,还是交给代烧工厂,
尽量建立加密工程,并且限定只能在特定编程器上使用、限定允许烧
录的次数。即便加密工程被抄袭者拿到,也没有任何用处。
2024年4月1日发(作者:牢玮)
固件芯片物理写保护
措施一:关闭通往外界的“大门”
芯片的烧录接口(如UART、JTAG)就像是通往外界的“大门”。
通过这扇门,工具可以将固件灌入芯片或者读取出来。如果不把这扇
门给关上,里面的固件极易被抄袭者读取,然后烧录到复制的硬件。
这样,辛苦培养的“孩子”就变成了别人家的“孩子”
关闭“大门”有以下几种方式:
使能加密位(如LPC802的CRP),关闭烧录接口,任何工具都
无法接入。这种方式可靠性高,大多数MCU都具备这种特性;
固件主动将烧录接口管脚配置成IO管脚,实现烧录接口关闭,如JTAG
的TCK管脚配置成GPIO。这种方式有一定风险,固件必须在芯片启
动后尽可能快地关闭;剪掉烧录管脚。除非打开芯片,否则很难将管
脚引出。由于可操作性较差,适用于产品量少、价值低的情况。
措施二:为固件“加壳”
“加壳”就是为固件披上“保护罩”,数据格式及含义发生变化。
抄袭者拿到数据后,至少得花个几年的时间才能够解开。最终解开时,
产品即将跨入生命终点,这时已经没什么意义了。适用于不具备加密
机制的NoRFlash、NandFlash、EEPROM。具体措施是:采取加密算法
对原始数据加密,将加密后的数据写入存储器。读取时,采用解密算
法还原成原始数据。这种方式,需要工程师在固件中设置好加解密算
法。
措施三:采用唯一ID芯片,固件跟硬件绑定
如果做最坏的打算,固件已经被读出来了,是否还有希望防抄袭?
有!有些工程师巧妙地选用具有唯一ID的芯片,这样便无法复制出
完全相同的硬件。固件会检查ID是不是与它期望的一样。如果不一
样,就可以判断出有人已经破解成功,检测出固件被烧到其它硬件。
不过现在UID也可以备复制,所以安全性还是有待商榷。
措施四:不要轻易将原始固件交给其他人
在将固件交给工厂时,也要特别注意做好加密。看似安全的地方
往往容易隐藏着问题。不管是交给自己的工厂,还是交给代烧工厂,
尽量建立加密工程,并且限定只能在特定编程器上使用、限定允许烧
录的次数。即便加密工程被抄袭者拿到,也没有任何用处。