从文档上看,高通的启动流程大致是RPM PBL -> APPS PBL ->SBL1,SBL1负责验证和加载TZ,RPM,LK镜像。
问题1:APPS PBL是如何验证SBL1的合法性的,签名和验证的密钥存在哪?密钥可以改吗?
问题2:SBL1如何验证TZ,LK镜像的合法性的,签名和验证的密钥存在哪?密钥可以改吗?
希望对高通有所了解的能回答一二,感谢!
这个是普通不能访问也不能更改的吧,你为什么要改?
不清楚高通的方案. 一般芯片公司都有自己的安全启动方案,算法也不一样,秘钥或者秘钥的hash一般是存在Efuse里,签名一般是放在image的头部(根据具体的安全启动方案来定)。ARM Trusted Firmware也包含安全启动方案,你可以参考下 load_auth_image
arm-trusted-firmware/bl_common.c at master · ARM-software/arm-trusted-firmware · GitHub
希望对你有帮助
PBL验证SBL:首先板子还未熔丝,系统起来进入TZ,TZ读取sec.dat文件中的公钥hash并写入fuse,然后熔丝,系统重启,PBL读取fuse中的公钥hash验证SBL中的公钥,再利用公钥验证SBL镜像合法性。
SBL验证TZ,TZ验证TA:由编译脚本随机生成3个密钥及证书来签名和验证,证书形成证书链来验证下一级镜像
感谢知乎大神的提点