imx283上测试crypto boot
by Mcuzone
所谓crypto boot,可以理解为加密启动,或者用加密的程序启动。
以前在arm9上,因为都需要外置存储,比如nand,nor,都没有办法实现程序的加密,将介质里的程序dump出来换个芯片就可以启动。imx283上有一个crypto的机制,原理是:
1. 芯片上的otp区域有用户可编程的128bit的key
2. 工具elftosb可以将编译生成的文件通过一个key来加密,生成加密后的烧写文件
结果是:
1. 烧写文件本身被key加密,没有key就无法获取编译文件的原始面貌
2. 烧写文件只能在otp区域被编程为对应的key的芯片上才能运行
otp查看与写入工具:
![](https://i-blog.csdnimg.cn/blog_migrate/1c0e6ad33bcd5eae0c2a1353d41c91cc.jpeg)
测试过程中,将一片imx283的key编程,然后发现原来烧写到nand的程序开机就无法运行,因为key不对,console将提示错误:
H0x80501006
含义为:
//! 0x80501006
//! Key dictionary lookup failed.
#define ERROR_ROM_LDR_KEY_NOT_FOUND (ERROR_ROM_GROUP | ERROR_ROM_LOADER_GROUP | 0x6)
将linux的zImage重新通过elftosb用key加密成sb再烧写后才能正确启动。
H0x80501006
含义为:
//! 0x80501006
//! Key dictionary lookup failed.
#define ERROR_ROM_LDR_KEY_NOT_FOUND (ERROR_ROM_GROUP | ERROR_ROM_LOADER_GROUP | 0x6)
将linux的zImage重新通过elftosb用key加密成sb再烧写后才能正确启动。
这样就可以加密用户引用,并锁定固件到某片soc上。