MDM9607平台 Secure Boot调试记录

本文详细介绍了MDM9607平台的Secure Boot调试过程,包括安全启动原理、证书链、签名镜像格式和熔丝熔断的步骤。调试涉及生成证书链、配置Root-of-Trust、签名镜像文件以及启用安全启动的调试策略。通过理解这些流程,读者可以更好地理解和实现MDM9607平台的安全启动功能。
摘要由CSDN通过智能技术生成

本博客只涉及技术问题,尊重原创,不涉及商用问题。

目录

一 概述... 4

二 原理及流程... 4

2.1 安全启动原理... 4

2.2 安全启动结构图:... 5

2.3 安全启动流程图... 5

三 证书简介... 6

四 签名镜像格式... 7

五 熔丝熔断... 7

5.1 熔断使能... 7

5.2 熔断过程... 8

5.2.1. 8

5.2.2. 8

5.2.3. 8

5.2.4. 8

5.2.5. 8

5.2.5. 9

5.2.6. 9

六 安全启动使能步骤... 9

1 利用openssl工具生成证书链... 9

2 配置Root-of-Trust to QFPROM eFuses. 10

3 签名镜像文件... 11

七 调试策略... 13

附录... 15

名词及缩写:... 15

参考文档:... 16

 

 

 

 

概述

安全启动是指为安全应用程序建立可信平台的启动序列。它以一个不变的启动序列开始,该序列使用加密身份校验来验证代码的来源,因此只能执行授权的软件。启动序列将设备置于已知的安全状态,防止用二进制修改软件和镜像重刷攻击。

 

安全启动系统向启动过程的每个阶段添加加密检查。每个过程判断设备执行的所有安全软件镜像的真实性。这个附加检查可防止任何未经授权或恶意修改的软件在设备上运行。安全启动通过一组硬件熔丝来启用。必须由硬件保险丝中标识的受信任签署实体程序才能被运行。

 

原理及流程

2.1 安全启动原理

设备的启动包含多个过程。每个过程中的镜像都会执行特定的功能,并且每个镜像都由上一个镜像(例如,主引导加载程序(PBL)→辅助引导加载程序(SBL)→ARM TrustZone)进行验证。根信任(启动此过程的最受信任的实体)是PBL,它是出厂固化在ROM中,因此已经受信任。在执行启动序列中的下一个镜像之前,首先对该镜像进行身份验证,以确保它是授权软件。例如,只有当SBL被PBL成功验证之后,才会让SBL运行。因为SBL现在是可信的,所以可以信任它来对下一个镜像进行身份验证。这些镜像通过其功能进一步建立了设备的安全性。

2.2 安全启动结构图:

2.3 安全启动流程图

 

证书简介

证书链用于对镜像进行身份验证。首先,验证镜像的证书链。例如,sbl使用appsbl的证书链对应用程序引导加载程序(appsbl)镜像进行身份验证。链中的认证证书根据中间证书进行认证(认证CA,反过来根据根CA进行认证(见下图)。根证书本身根据不可变区域中提供的散列进行身份验证–位于受信任区域中的QFPROM或qti的密钥表。

 

验证证书链后,使用认证证书(公钥A)中的公钥对其进行解密,来验证代码签名(签名D)。

 

签名镜像格式

 

安全启动场景:

熔丝熔断

5.1 熔断使能

以下熔丝必须被熔断来使能安全启动:

 

5.2 熔断过程

5.2.1 使用Sectorols.py工具生成一组自定义的熔丝熔断值。此工具生成具有以下格式的sec.dat二进制文件:

 

5.2.2 生成的sec.dat文件被烧写到设备nand中的sec分区。以下命令用于将sec.dat烧写到sec分区中:

Fastboot flash sec <Path of sec.dat>

5.2.3 在烧写后的下一次重新启动中,SBL1从设备读取SE分区数据并将其加载到TrustZone DDR区域

5.2.4 在跳转到appsbl之前,trustzone确定是否已发生熔丝熔断。这是通过读取QFPROM_RAW_RD_WR_PERM_MSB中的OEM_SEC_BOOT位是否断开来完成的。

5.2.5 如果没有断开,trustzone将解析DDR中加载的sec.dat文件,并逐个解析熔丝列表中的熔丝值。

5.2.5 要强制执行熔丝值,TrustZone将重新启动设备

5.2.6 重新启动后,将对所有预期的熔丝列表进行熔断。

流程框图如下:

安全启动使能步骤

1 利用openssl工具生成证书链

1.1 新建临时目录tmp

mkdir tmp

cd tmp

 

1.2 复制opensslroot.cfg和v3.ext到tmp目录,这两个文件在后面的命令中要用到:

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

suvine

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值