secure boot(一)

0.前言

    本系列讲解的是如何在高通的QCA4020开发板上实现secure boot功能,以及一些相关的概念。

 

1.什么是secure boot

    Secure boot指的是建立用于运行已验证应用程序的可信平台的启动序列。它从一个不可变的序列开始,使用密码验证验证代码的源,从而只执行授权的软件。启动序列将设备置于已知的安全状态,并检测软件的二进制操作和反射攻击。

    secure boot系统向启动过程的每个阶段添加加密检查。此过程在设备执行之前验证所有的安全软件镜像。这个额外的检查阻止了任何未经授权或者恶意修改的软件软件在设备上运行。通过一组硬件保险丝来启用secure boot。对于要执行的代码,它必须由硬件保险丝中标识的的可信实体签名。

 

2.实现secure boot的硬件基础

    QCA402x芯片组包含一次可编程(OTP)熔断器。最初所有的保险丝都是0,。一旦写入(或者吹过),保险丝永久地将状态改变为1.将熔断器从吹改为未吹是不可能的。OTP程序员工具在QCA402x SDK中提供的。这个工具可以基于用户提供的输入来编程secure boot保险丝。启用secure boot功能一定要小心,任何的错误的步骤都有可能使你的板称为砖块。

 

3.编程保险丝的工具

     在QCA4020 SDK中包含OTP编程软件工具,可通过编程选择熔断器来启动设备上的secure boot功能。用户可以选择由工具支持的三个设备配置文件中的一个。

    

一个设备配置文件在熔断器被编程之后定义设备的状态,有三种支持的设备配置文件。

    开发配置文件:配置保险丝的最小数量。所有的debug功能都将被打开。所有相关的OTP 读/写区域都可被访问。这个配置文件应该被用于初步开发和bringup。

    产品测试配置文件:类似于使用JTAG调试启用的产品配置文件

    产品配置文件:设计用于生成就绪的设备。相关的OTP读/写区域被锁定,所有的JTAG调试被禁用。

    一旦一个配置文件被编程到一个设备上,它就不可被修改了。因此,如果一个设备使用开发配置文件进行编程,它不能被升级到产品测试配置文件或者产品配置文件。

### Secure Boot 是什么? Secure Boot种固件级别的安全特性,通常由设备的 BIOS 或 UEFI 固件实现。其主要目的是在系统启动过程中验证每个阶段的代码完整性,从而防止恶意软件或未经授权的内核加载。Secure Boot 通过公钥/私钥机制验证签名是否合法,确保只有经过数字签名的可信代码才能被执行[^2]。它从固件级别开始,逐步验证引导加载程序、操作系统内核等组件,建立个信任链,以确保整个启动过程的安全性[^3]。 ### 如何启用 Secure BootSecure Boot 的启用通常涉及以下几个步骤: 1. **进入固件设置界面(BIOS/UEFI)**:在计算机启动时按下指定键(如 F2、Del 或 Esc),进入 BIOS/UEFI 设置界面。 2. **查找 Secure Boot 设置选项**:在“Security”或“Boot”菜单中找到“Secure Boot”相关选项。 3. **启用 Secure Boot**:将 Secure Boot 状态更改为“Enabled”。 4. **保存并退出**:保存更改并重启系统,Secure Boot 即可生效。 某些系统可能还提供“Setup Mode”、“Audit Mode”和“User Mode”等不同模式,用于管理密钥配置和策略控制[^1]。 ### 如何配置 Secure BootSecure Boot 的具体配置取决于平台和固件支持情况,以下是通用流程及 ESP32 的特定配置示例: #### 通用 PC 平台(如 Windows 或 Ubuntu) - **添加/删除信任密钥**: - 在 UEFI 设置中,可以导入自定义的签名密钥(PK、KEK、db、dbx)来允许或阻止特定引导程序加载。 - 例如,在 Linux 中使用 `sbsigntools` 对引导程序进行签名,并通过 `efibootmgr` 工具管理 EFI 启动项。 - **处理 Secure Boot 引导链验证失败问题**: - 若在安装 VMware 或 Ubuntu 时遇到 Secure Boot 验证失败,可以选择关闭 Secure Boot,或者使用已签名的引导程序(如 Shim)来兼容 Secure Boot 策略[^1]。 #### ESP32 平台(使用 ESP-IDF) ESP32 支持 Secure Boot v1 和 v2,可通过以下方式配置: ```bash idf.py menuconfig ``` 进入配置菜单后,选择: - `Security Features` —> `Enable Secure Boot in bootloader` —> 选择 Secure Boot 版本(v1 或 v2) - 可选:启用 Flash 加密(Flash Encryption) 配置完成后编译并烧录项目: ```bash idf.py build idf.py flash ``` 系统会在首次启动时生成签名并锁定 eFuse,后续启动将自动验证固件签名[^3]。 ### 注意事项 - 启用 Secure Boot 后,未签名的操作系统或引导程序将无法加载。 - 某些 Linux 发行版需要 Shim 来兼容 Secure Boot。 - ESP32 上旦启用 Secure Boot,部分 eFuse 将被永久写入,不可逆,请谨慎操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值