加密芯片是对内部集成了各类对称与非对称算法,自身具有极高安全等级,可以保证内部储存的密钥和信息数据不被非法读取与篡改的一类安全芯片的通称。使用到安全加密芯片的产品:银行加密U盾、刻录机、加密硬盘、PC锁、手机、智能门锁、公交地铁等。在使用到安全加密芯片这些产品中,储存在安全芯片里面的数据会进行高可靠性加密处理,使得这些数据很难被非法窃取。
如天嵌i.MX6UL核心板,CPU自带安全启动防窃取机制,可以使客户面向高度安全的应用进行设计,适用于交易类设备。embedsky.com下面说说NXP芯片的加密方式有哪些:
NXP LPC系列
LPC系列MCU大多采用配置字加密方式,即CRP(Code Read Protection)加密。将配置字(CRP Key)写入特定的Flash地址中。芯片上电启动后内部boot会根据配置选择禁用相应的功能。
CRP是一种允许用户在系统中启用不同级别的安全性的机制,从而可以限制对片上闪存的访问和ISP的使用。当需要时,通过在0x0002FC中闪存位置编程特定模式来调用CRP。IAP命令不受代码读取保护的影响。
以LPC824位例,在启动文件(*.s)中找到CRP Key根据需要进行修改,如图
注:切记在产品最终固件中才可使用CRP3,否则芯片将被锁死不能再被解锁。
NXP Kineits Cortex-M系列
Kineits Cortex-M系列的加密同样使用配置字的方式写入Flash特定区域,但它比LPC系列相对复杂一些功能也更加强大。Kineits Cortex-M系列的加密包含在FlashConfig区域,FlashConfig包含一些用于芯片内部Boot的配置信息,比如使能或禁能NMI引脚中断。
使用keil工具可以快速使用UI配置,如图所示:
GD32系列
GD32系列加密与和STM32系列加密方式类似。GD32内部包含一个FMC外设。FMC提供了一个安全保护功能来阻止非法读取闪存。此功能可以很好地保护软件和固件免受非法的用户操作。embedsky.com
FMC包含一个OB_RDPT字节与其补字节:
当将OB_RDPT字节和它的补字节被设置为0x5AA5,系统复位以后,闪存将处于非安全保护状态;
当设置OB_RDPT字节和它的补字节值为任何除0x5AA5外的值,系统复位以后,安全保护状态生效;
在安全保护状态下,主存储闪存块仅能被用户代码访问且前4KB的闪存自动处于页擦除/编程保护状态下。在调试模式下,或从SRAM中启动时,以及从boot loader区启动时,这些模式下对主存储块的操作都被禁止;
如果将OB_RDPT字节和它的补字节设置为0x5AA5,安全保护功能将失效,并自动触发一次整片擦除操作。
GD官方提供加密工具GigaDevice_MCU_ISP_Programmer或者使用FlyMCU等工具,操作界面如图所示:
i.MX RT系列
i.MX RT系列是NXP公司发布的跨界处理器,MPU的处理性能、MCU的开发方式。该系列不包含用户可用的内部Flash,所有代码都要存储在外部存储介质中。它使用FSL独有的HAB安全机制,能够达到比前面更安全的加密机制。
i.MX RT的加密是将程序固件完全通过工具转换为密文,不能够被反编译,同时i.MX RT内部包含OTP区域,用于编程密钥信息和启动信息,加密后不可读取。
芯片使用QSPI或HypeFlash时,可以实现边运行边解密,不占用额外的RAM空间,同时硬件解密配合内核中32KB ICache和32KB DCache使得程序运行不会受到固件加密的影响;embedsky.com
芯片还支持Boot时完全解密程序到内部RAM或外部SDRAM,这种方式代码的启动速度略微变慢,但是能够支持更多的启动方式:SD卡、MMC、Nand Flash等。
NXP提供加密工具CSF和密钥烧写工具FlashLoader,用于程序固件的加密和烧写。如有任何疑问可联系我们的FAE获得支持