安全基础二 安全启动(笔记)

 一、安全启动

         安全启动(Secure Boot)是指为安全应用而建立的可信平台启动流程,它以不可变的序列启动系统,使用信任链机制和RSA加密认证的方法,来验证启动序列中涉及到的软件的来源的真实性,因此可防止任何未经授权或恶意修改的软件在设备上运行。[1]

        由此需要建立安全启动的信任链,在启动流程中,每级镜像都由其前一级镜像执行合法性验证。而第一级镜像的验证无法由软件保证,因此需要硬件出手,需要有一个只写一次的存储区域,来保证安全启动的可信实体。

        简单来说,我们把整个验证链的第一个证书称为根证书,根证书是验证其他证书的基础。为了保证根证书的有效,系统利用熔丝机制将根证书的Hash值存储到Fuse中。在芯片通电之后,PBL(APPS PBL+TME PBL)首先会验证这个根证书的Hash值与熔丝中存储的是否一致,若一致则继续后面的启动过程,若不一致则启动失败。由于PBL本身也是在芯片制造时固化到芯片中,所以在这个阶段,PBL和根证书的Hash都不能再改变,由此保证了Secure Boot不被绕过。Secure Boot的启动过程可以用下面这张图来表示——[1]

        由上,在PBL自验后,会以此为信任根开始对XBL SC(eXtensibleboot loader system controller)镜像证书链进行验证,如下图,对分别由解密得到的Hash值和计算得到的Hash值进行对比,若一致,则校验通过,执行权从APPS PBL切换至XBL SC;(完整启动过程在下一篇中介绍)

        总的来说,Secure Boot是使用链式方法对图像进行身份验证,然后对镜像的证书链进行验证。关于证书链的格式描述如下,

Signing system using certificate profiles

         由图可知,三证书链中包含三张证书,每张证书中又包含了自身的签名和下一张证书的公钥。一张证书的签名由前一张证书的私钥生成,前一张证书的公钥用于验证这一张证书的签名,以此类推共进行两次证书验证,最后证书用其公钥解密签名镜像的代码签名。注意,Root CA的证书签名是由存储在QFPROM的OEM公钥Hash来验证,QFPROM这个区域就是所说的熔丝区,一旦写入数据即不能更改,以此来保证安全。[2]
        其中,证书配置文件遵循ITU-T X.509 v3格式,三个签名Signature(I)、Signature(A)、Signature(D)均是通过ECDSA和SHA-384计算得来;Root CA的Signature(R)是对其本身进行SHA-384计算得来的OEM公钥Hash值。它们之间的关系如下:[2]

  1. 使能Secure Boot功能时将OEM公钥Hash值写入到熔丝区,其与Signature(R)是一致的;
  2. Root CA通过Private Key(R)生成Signature(I),放在Attestation CA中;
  3. Attestation CA通过Private Key(I)生成Signature(A),放在Attestation Certificate中;
  4. Attestation Certificate通过Private Key(A)生成Signature(D),放在签名镜像中。

二、 安全启动的使能

见上图,Secure Boot的使能可分为几步,

1. 生成密钥、证书

2. 生成sec.dat文件

3. 生成签名镜像,其中可见,签名镜像中包括了源码,代码签名和证书链

4. 烧录镜像包,并使能安全启动

参考平台:sm84xx

参考链接:

[1] 独角兽暑期训练营系列 | 高通芯片安全相关熔丝设定及检测方法研究-安全客 - 安全资讯平台

[2] 安全启动Securt Boot_error: function: sahara_rx_data:276 unable to read_FANG_YISHAO的博客-CSDN博客

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值