对于安全引导功能的实现和验证过程各家芯片公司的方案都不一样,这是由该芯片的启动流程以及启动所需镜像文件来决定的,但都会遵循链式验签启动的原则。
ARMv7架构并没有使用ATF,系统的启动流程与以前一样使用BootLoader来引导Linux内核和TEE
OS。安全引导的启动流程如图下所示。
安全引导的启动流程
系统启动过程使用链式验签的方式进行引导,其中任何一环验签失败都会导致系统启动失败,为防止通过替换ramdisk来修改根文件系统中的内容,一般将ramdisk与Linux内核打包在同一个镜像文件中,而且该镜像文件需要待验签通过后才可被使用。
签名信息一般是对镜像文件的内容进行哈希计算获取摘要后再对该摘要使用RSA私钥进行电子签名来获得,验证时同样会计算需要被引导的镜像文件的摘要,然后使用该摘要、签名信息以及RSA公钥进行RSA算法的验证。这个就是对称的过程,加密签名,验签解密。
ARMv8安全引导的过程
ARMv8架构之后ARM提供了ATF,BootLoader、TEE镜像文件、Linux内核镜像文件、recovery镜像文件都是由ATF来进行引导和加载而不是由ChipRom来完成的。
ChipRom只会去验证ATF中bl1的合法性,后续引导过程同样也是按照链式验签的方式进行,符合TBBR规范。读者可使用git命令从gitHub上获取ATF的所有源代在ARMv8架构中整个安全引导的流程如图下所示。
ARMv8的Secure Boot流程
ARMv8架构中引入了ATF,同时在ATF中提供了安全引导的功能,BootLoader镜像、Linux内核、recovery镜像和TEE OS镜像文件的签名方式都由ATF决定。当然开发者也可以对ATF进行定制化,修改ATF中的验签过程,但是修改后的验签方案需要符合TBBR规范。
此时ATF不要和BL31搞混了哦。ATF是一个整个启动链路。
全部0条评论
快来发表一下你的评论吧 !