一、安全启动
安全启动(Secure Boot)是指为安全应用而建立的可信平台启动流程,它以不可变的序列启动系统,使用信任链机制和RSA加密认证的方法,来验证启动序列中涉及到的软件的来源的真实性,因此可防止任何未经授权或恶意修改的软件在设备上运行。[1]
由此需要建立安全启动的信任链,在启动流程中,每级镜像都由其前一级镜像执行合法性验证。而第一级镜像的验证无法由软件保证,因此需要硬件出手,需要有一个只写一次的存储区域,来保证安全启动的可信实体。
简单来说,我们把整个验证链的第一个证书称为根证书,根证书是验证其他证书的基础。为了保证根证书的有效,系统利用熔丝机制将根证书的Hash值存储到Fuse中。在芯片通电之后,PBL(APPS PBL+TME PBL)首先会验证这个根证书的Hash值与熔丝中存储的是否一致,若一致则继续后面的启动过程,若不一致则启动失败。由于PBL本身也是在芯片制造时固化到芯片中,所以在这个阶段,PBL和根证书的Hash都不能再改变,由此保证了Secure Boot不被绕过。Secure Boot的启动过程可以用下面这张图来表示——[1]