1 原理
首先,Secure Boot功能的目的是什么?查了下资料,就是不让设备刷第三方的固件。类似圆环套圆环,圆环第一环是CPU,CPU定制了空间保存密钥,然后就是Boot,然后是OS,最后一直套到最后APP。如下图:
高通芯片流程如下,基本和上面的差不多,就是Bootloader分成了两个:
稍微要注意的就是有一个efuse,保存了根密钥的hash值,可以用来验证后面的hash是否正确。就是电子保险丝,一旦写入之后就不能更改。
可以看到的是以后手机,刷机成了不再可能的事情了,甚至可能刷一个软件都不行。。。
在Andorid的层面,又进行了扩展。搞了一个Verified boot,运行时也可以校验。
2 用Openssl生成密钥
可以看下面这篇,我觉得写的还不错:
https://zhuanlan.zhihu.com/p/492475360
3 以高通为例
在高通平台上,提供了一套python的工具,用的是Openssl,还有一个V3.ext。
官方的流程大概是以下几步:
3.1 Generate secure boot keys
这一步就是把openssl,和v3.ext的相关文件拷贝到一个文件夹。同时配置配置文件。
3.2 Generate root key pair and certificate
生成根CA密钥对和证书。
四个openssl命令。
3.3 Generate attestation CA key pair and certificate
生成认证CA密钥对和证书。
同样也是4个openssl命令。
3.4 Configure PK hash in fuse
生成电子熔断中的根证书hash。
用openssl digest命令。
3.5 Generate sec.elf image
生成加密分区。
3.6 Sign the images
对各个分区镜像进行签名。这里可以看到,高通常规的操作是对各个分区进行验证。如果私下对有的分区进行了烧写,就可能导致校验不过无法启动。
3.7 Flash signed image on device
烧写分区。
4 参考
https://source.android.com/docs/security/features/verifiedboot?hl=zh-cn
Secure boot and image authentication in mobile tech | Qualcomm
android手机系统的启动流程-secureboot流程(以MTK平台为例)_android secure boot怎么开启-优快云博客