MDM9607平台 Secure Boot调试记录

article/2025/10/20 12:17:55

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

目录

一 概述... 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.c


http://chatgpt.dhexx.cn/article/LSCsxw65.shtml

相关文章

MDM9205简介

大家好&#xff0c;今天小白给大家介绍下高通新推出的下一代物联网专用调制解调器Qualcomm 9205&#xff0c;欢迎一起学习交流。 去年12月17日&#xff0c;高通宣布推出下一代物联网&#xff08;IoT&#xff09;专用调制解调器Qualcomm 9205。全新Qualcomm 9205 LTE调制解调器…

基于机智云gokit4.0(G)和MDM9206的 小型智能气象站

项目介绍 小型气象站广泛应用于气象、农业、环境检测和治理等领域。小型气象站对空气温湿度、光照、风速、风向、雨量、土壤湿度、蒸发量、大气压力等环境气象要素进行全天候现场检测。通过更换不同的传感器&#xff0c;该装置也可用于楼宇环境监控、安防、智慧农业等领域。 由…

MWC2018 机智云发布gokit4.0G全栈IoT开发套件,支持高通MDM9206

MWC2018 机智云发布gokit4.0G全栈IoT开发套件&#xff0c;支持高通MDM9206 NB-IoT/eMTC 继2月14日Qualcomm高通宣布&#xff0c;推出面向Qualcomm MDM9206LTE IoT全球多模调制解调器的全新LTEIoT软件开发包&#xff08;SDK&#xff09;&#xff0c;并已预集成机智云物联网云平…

【沙龙】基于MDM9206芯片的gokit4(G)的应用实操

导读 紧跟前沿通信技术、Get最新开发技能&#xff0c;高通Qualcomm&机智云&移远通信高级工程师手把手教开发&#xff1a;通过GoKit4(G)MDM9206快速接入机智云&#xff0c;4小时掌握高通MDM9206 C-IoT SDK实现不同IoT应用场景的方法&#xff0c;实现NB-IoT产品原型设计…

在线公开课】基于MDM9206的GoKit4(G)在线公开课

【在线公开课】基于MDM9206的GoKit4(G)在线公开课 基于Qualcomm C-IoT SDK的物联网开发以及GoKit4应用开发指导 MDM9206 LTE IoT调制解调器是一款专为支持全球多模功能而打造的解决方案&#xff0c;它可支持eMTC&#xff08;Cat M1&#xff09;、NB-IoT&#xff08;Cat NB-1&…

MDM9206简介

MDM9206简介 大家好&#xff0c;今天小白给大家介绍一下当前很火热的一款多模多频的高通的NB-IOT芯片&#xff0c;欢迎一起讨论学习。 1. MDM9206芯片的发展背景 接下来我们看看该款具有代表性的多模多频NB-IOT芯片是基于什么样的大背景下产生的&#xff1f; 从2G、3G如今的…

VMware虚拟机centOS7的终端命令:权限不够

我的VMware虚拟机centOS7在终端命令的时候老是跟我说权限不够&#xff1a; 然后我就去网上查查查&#xff01;有一个大佬的博客非常完美的解决了我的问题&#xff01; (5条消息) VM虚拟机CentOS7提升用户权限_JzjSunshine的博客-CSDN博客 现在&#xff1a; 但是我高兴了太早我执…

centos中常用命令

centos中常用命令 一:使用 CentOS 常用命令查看 cpu 如果觉得需要看的更加舒服 grep “model name” /proc/cpuinfo | cut -f2 -d: 二.使用 CentOS 常用命令查看 cpu 是 32 位还是 64 位 查看 CPU 位数(32 or 64) 三:使用 CentOS 常用命令查看当前 linux 的版本 more /etc/r…

CentOS 7关闭防火墙命令

1、命令行界面输入命令“systemctl status firewalld.service”并按下回车键。 2、然后在下方可以查看得到“active&#xff08;running&#xff09;”&#xff0c;此时说明防火墙已经被打开了。 3、在命令行中输入systemctl stop firewalld.service命令&#xff0c;进行关闭…

centos命令源码获取

源码链接 https://vault.centos.org/7.9.2009/os/Source/SPackages/ 查看本地命令版本 which ls rpm -qf /usr/bin/ls下载指定命令的rpm包 wget https://vault.centos.org/7.9.2009/os/Source/SPackages/coreutils-8.22-24.el7.src.rpm提取源码 rpm2cpio coreutils-8.22-24.…

centos下所有命令都不能用

问题描述&#xff1a; 解决办法&#xff1a; --- export PATH"/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin:/bin:/sbin" 总的来说&#xff0c;不说运行在linux上的一些应用&#xff0c;或者你之前部署过的产品&#xff0c;就是很多linux的基本命令&#xff0…

centos linux升级命令,在CentOS系统下包更新的命令

在CentOS系统下包更新的命令 更新和升级yum update 全部更新 yum update package1 更新指定程序包package1 yum check-update 检查可更新的程序 yum upgrade package1 升级指定程序包package1 yum groupupdate group1 升级程序组group1 更多命令 一、安装yum install 全部安装 …

centos常用命令大全

文章目录 命令帮助查询操作压缩、解压网络相关文件操作命令文件与目录操作查看文件内容文本内容处理yum安装器系统相关简单命令修改密码策略 命令帮助 【要执行的命令】 --help 查询操作 全局查找 find / -name 【查询的内容】 压缩、解压 解压tar.gz结尾的压缩文件 tar -…

盘点大数据开发常用的四种编程语言

1.Python语言 如果你的数据科学家不使用R&#xff0c;他们可能就会彻底了解Python。如果你有一个需要NLP处理的项目&#xff0c;就会面临数量多得让人眼花缭乱的选择&#xff0c;包括经典的NTLK、使用GenSim的主题建模&#xff0c;或者超快、准确的spaCy。还有Juypter/iPython…

学习大数据,公司常用开发的编程语言是什么?

最近有不少初学者来问到&#xff0c;学习大数据&#xff0c;学习spark公司主要使用那些语言编写&#xff0c;每听到这一个问题&#xff0c;起码还是很不错的&#xff0c;证明你已经开始学习大数据了&#xff0c;并了解大数据Spark是可以使用多种语言来实现开发的&#xff0c;那…

大数据分析语言Python的价值和意义

Python提供了大量用于处理大数据的库。就开发代码而言&#xff0c;您还可以比其他任何编程语言更快地使用Python处理大数据。这两个方面使世界各地的开发人员能够将Python视为大数据项目的首选语言。要获得有关Python及其各种应用程序的深入知识&#xff0c;您可以咨询AAA教育支…

大数据基础语言 Scala 入门学习笔记

Scala 语言学习笔记 概述 Scala 简介: Scala 是一门基于 JVM 的多范式编程语言&#xff0c;通俗的说&#xff1a;Scala 是一种运行在 JVM 上的函数式的面向对象语言&#xff0c;之所以这样命名是因为它的设计目标是&#xff1a;随着用户的需求一起成长。Scala 可被广泛应用于…

大数据开发

Java基础学习 核心技术点&#xff1a; Java基础语法 面向对象 API Eclipse开发工具的使用 集合的底层原理 基本算法 jvm参数 JDK8的部分特性 IO、线程、套接字、反射使用 EasyMall项目开发 Java基础 Java简介,跨平台 1995由SUN公司提供的&#xff0c;互联网首选的语言&…

入行大数据,需要学习哪些编程语言?

Java java可以说是大数据最基础的编程语言&#xff0c;据我这些年的经验&#xff0c;我接触的很大一部分的大数据开发都是从JaveWeb开发转岗过来的&#xff08;当然也不是绝对我甚至见过产品转岗大数据开发的&#xff0c;逆了个天&#xff09;。 一是因为大数据的本质无非就是…

大数据需要学什么?(一)语言篇

大概两年前写过同样标题的一篇文章&#xff0c;对于这个问题感兴趣的人不少&#xff0c;后台收到不少同学的提问&#xff0c;所以准备细致地解答一下这些问题&#xff0c;希望能解决掉大家90%的疑问。下次再看到相关的提问我会理直气壮地把这篇文章的链接甩你脸上。但是可能又会…