声明:以下内容引用自某芯片的应用指导文档
Trusted模式启动用于产品交付给OEM后的阶段,Non-trusted模式仅用于早期的产品开发阶段。启动模式是Trusted模式还是Non-trusted模式由Fuse设置。
Trusted模式的技术背景
Trusted模式提供给用户符合工业标准的数字签名认证技术,运用了SHA256的哈希算法, RSA或者ECDSA加密算法。
Trusted模式的镜像文件
需要加密的固件二进制文件(bin)经过打包工具release.exe,自动添加一个FIP包头,合成新的镜像文件(image)。镜像文件的FIP包头中包含了OEM公钥(OEM’s RSA public decryption key) 和数字签名(signature)。
固件启动流程
如下图所示,分三个阶段介绍固件的数字签名和签名认证过程。
-
固件的签名过程: 客户通过打包工具release.exe在制作下载包的过程中自动对固件的二进制文件(例如: preboot.bin)采用SHA256算法求出哈希值(Hash),再自动用私钥签名固件的这个Hash,得到固件的数字签名文件。
-
镜像文件的内部结构: 客户通过打包工具release.exe把固件的二进制文件转化成镜像文件,为镜像文件添加了FIP的头,FIP中保存了OEM的公钥和数字签名。
-
OEM公钥的认证过程: 镜像文件(image)在固件烧写和板子启动的阶段都要进行签名认证。比如:下载包preboot.img, 从image的FIP头中读出OEM的公Secboot使能步骤钥,程序对公钥计算出Hash,并且与fuse中block2区域保存的OEM公钥Hash进行比对。如果两个Hash相同,说明公钥验证通过。如果不相同,说明镜像文件中的公钥验证不通过,退出下载或者启动过程。
-
镜像文件的签名认证过程: OEM公钥验证通过以后,下载或者启动程序会继续对镜像文件(image)中的固件二进制数据计算出Hash,再用FIP头中的OEM公钥对FIP头中的数字签名做解签得到另一个Hash,如果两个Hash值一致,说明签名认证通过。下载或者启动程序继续下一个流程。如果不相同,说明签名认证不通过,退出下载或者启动过程。
Secboot使能步骤
- 生成私钥和证书
- 制作烧写OEM公钥的fuse only下载包
- 烧写fuse only下载包
需要的Root Key和OEM公钥Hash被烧录进Fuse。
- 重启模块或者下电模块
模块重启以后,Bootrom进入Trusted 模式启用。新的证书开始生效,启动中完成c)的签名认证过程。
- 镜像签名
release工具对固件文件完成a)数字签名过程,生成b)镜像文件,制作出固件下载包。
- 固件烧录
烧写镜像文件的过程中必须通过d)签名认证,才能继续烧写过程。
- 重启模块
Trusted Boot,必须通过d)签名认证,才能继续启动。