secure boot

本文详细解释了SecureBoot如何在芯片启动流程中工作,通过验证固件和操作系统的签名确保其完整性和可信度,以及链式认证过程中的证书签名校验机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在开启secure boot之前需要先了解芯片的整体启动流程,可以帮助更好地理解secure Boot在整个系统中的作用和重要性

Secure Boot是一种使用加密身份验证启动序列,建立了一个可信的平台,用于安全应用程序。它始于一个不可变的引导序列,通过密码验证代码的来源,以便只有经过授权的软件才能执行。引导序列将设备置于已知的安全状态,并防止软件的二进制篡改和重新刷写攻击。

Secure boot过程是嵌入在整个芯片启动流程中的

芯片的启动流程,也被称为引导过程,是指设备从关闭状态到完全运行状态的一系列步骤。这个过程涉及硬件初始化、固件加载、操作系统启动等多个阶段。在这个过程中,芯片会执行一系列预定义的操作,来准备和配置系统的硬件和软件环境

Secure Boot则是在这个启动流程中的一个环节,通常在固件或操作系统加载之前。它通过验证固件或操作系统的签名来确保它们的完整性和可信度

设备的启动是一个多阶段的过程,每个阶段的镜像执行一个特定的功能,并由前一个镜像进行验证。信任根(RoT)是在PBL中启动流程的受信任实体,PBL是片上代码的一部分,因此已经受信任且不可变。对镜像进行授权软件的身份验证,然后才执行启动序列中的下一个镜像。

例如:PBL > SBL > (TZ)/QSEE只有当PBL认证成功后,控制权才会转移到SBL。由于SBL现在是可信的,因此可以信任它对下一个镜像进行身份验证。图像通过其功能进一步建立设备的安全性。有了加密组件和体系结构,就可以验证启动软件和安全应用程序的真实性。APPS是主引导处理器。PBL支持ELF类型的镜像加载和身份验证,这允许SBL1和HEXProgrammer像保留其他系统镜像一样保留ELF格式。系统调试镜像(SDI)功能在SBL和TZ中实现。

安全启动是通过一组芯片上的硬件保险丝实现的。硬件保险丝中识别的受信任实体必须为代码签名才能执行。

链式认证:

1. Root CA (根证书颁发机构):这是最顶层的认证机构,它拥有一对密钥(公钥 R 和私钥 R)。Root CA 使用其私钥 R 生成下一级认证机构(Attestation CA)的签名 I

2. Attestation CA (认证证书颁发机构):Attestation CA 也有自己的一对密钥(公钥 I 和私钥 I)。它使用私钥 I 生成下一级的证书(Attestation Certificate)的签名 A

3. Attestation Certificate (认证证书):此证书包含一对密钥(公钥 A 和私钥 A)。私钥 A 被用来生成最终源数据(Source)的签名 D

在这个过程中,每个签名都需要被相应的公钥验证以确保签名的有效性

Attestation CA 的签名 I 需要被 Root CA 的公钥 R 验证;Attestation Certificate 的签名 A 需要被 Attestation CA 的公钥 I 验证;最终源数据的签名 D 需要被 Attestation Certificate 的公钥 A 验证

验证签名是否成功:

在加密密钥和证书的生成过程中都包含了相同主题信息,可以通过grep查看镜像是否包含主题信息->侧面验证镜像是否签名成功

### Secure Boot 技术原理 Secure Boot 是一种用于验证设备启动过程中加载的固件和操作系统镜像完整性和真实性的机制。该过程依赖于公钥基础设施 (PKI),其中每个阶段都由前一阶段验证其真实性并传递信任[^2]。 #### 启动流程中的信任链建立 在典型的嵌入式系统中,启动顺序分为多个阶段: - **Primary Boot Loader (PBL)**:这是第一个被执行的代码片段,在高通芯片上通常存储于 ROM 中不可更改。它负责初始化基本硬件资源,并加载 Secondary Boot Loader(SBL)[^1]。 - **Secondary Boot Loader (SBL)**:此模块继续完成剩余必要的配置工作,比如设置内存控制器参数等之后会去寻找合法的操作系统映像文件准备执行[^1]。 对于每一个要被加载的新组件,都会先检查附带的数字签名以确认来源可靠以及未遭篡改。只有经过认证机构签署过的程序才能顺利进入下一个环节直至最终引导至目标 OS 运行环境内。 ```c // Pseudo-code example of a simplified secure boot process verification function. bool verify_image_signature(const uint8_t* image, size_t length) { // Load public key from trusted storage area like fuses or eFUSEs on Qualcomm chips. const PublicKey pub_key = load_public_key(); // Extract signature and data to be verified from the provided binary blob. Signature sig; DataToVerify data; parse_image(image, &sig, &data); // Perform cryptographic validation using loaded public key against extracted signature. return crypto_verify(pub_key, data, sig); } ``` ### 安全目的与影响 引入 Secure Boot 主要是出于保障产品安全性考虑,旨在阻止未经授权访问底层硬件接口的行为发生,从而维护制造商利益不受侵害的同时也提高了终端用户体验的安全等级[^3]。 尽管官方宣传重点在于抵御潜在恶意软件入侵风险方面,但实际上这也间接限制了一些高级用户自定义安装非官方版本OS的可能性。因此,在某些情况下可能会引起争议关于开放性与控制之间的平衡问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值