Jetson边缘嵌入式实战课程第五讲:Jetson Secure Boot - 安全启动

大家好,我是 孙杰 。
一直在做嵌入式系统、边缘设备和 AI 应用相关工作,也持续分享一些技术学习和项目实践中的经验。这套课程的内容,主要也是基于这些年的系统开发和项目积累整理出来的。
最近我和 与非网、贸泽电子 合作,做了一套 Jetson 边缘嵌入式实战课程。这套课程不是单独讲某一个工具,也不是只讲某一个 demo,而是希望把 Jetson 平台相关内容按更清晰的脉络梳理出来,从硬件、系统到应用,尽量形成一个完整的学习路径。
这一篇继续介绍第五讲的内容:安全启动与 Jetson Secure Boot。

一、为什么这一讲要讲安全启动
前面几讲更多是在回答几个基础问题:
- 硬件平台怎么选
- JetPack 和 SDK Manager 是什么
- L4T 和 Jetson 系统架构怎么理解
- 为什么 Jetson 产品化要走向 Yocto
到了第五讲,就要进一步回答一个更关键的问题:
系统怎么才能可信地启动起来。
对于真正要走向产品化的设备来说,能启动只是最基本的一步,更重要的是:
- 启动链路有没有被篡改
- Bootloader 能不能被替换
- Kernel 和系统镜像是不是可信
- OTA 升级是不是安全
- 关键算法和系统能力能不能被逆向利用
所以,Secure Boot 不是一个附加选项,而是 Jetson 平台进入产品化和量产阶段时必须认真面对的基础能力。

二、什么是 Secure Boot
Secure Boot 本质上是一种基于硬件的 可信启动机制 。
它的目标很明确:确保设备从上电开始,到 Bootloader、Kernel,再到系统启动的整个过程都处于可信状态。
对 Jetson 平台来说,Secure Boot 的核心价值主要体现在几个方面:
- 防止恶意固件或 Bootloader 被替换
- 确保启动镜像完整性,防止中间人攻击和恶意篡改
- 保证 OTA 升级可信,非法固件无法刷入
- 保护知识产权,避免 Bootloader 和 Kernel 被逆向或替换
- 为 OP-TEE、TrustZone 等安全机制提供根信任基础
也就是说,Secure Boot 不是单纯"把系统锁起来",而是在设备启动最早期就建立一条可信链路,让后面的系统安全有真正的基础。
三、如果没有 Secure Boot,会面临什么风险
如果没有 Secure Boot,最直接的问题就是:
系统虽然能启动,但启动出来的不一定是你真正信任的系统。
1. Bootloader 被替换,启动链失控
这是最严重的风险之一。
一旦没有可信验证机制,攻击者就可以替换 Bootloader,绕过原有启动逻辑,直接加载恶意 Kernel,甚至植入 Root 权限后门。这样一来,设备虽然照常启动,但系统控制权实际上已经被接管。
2. Kernel、设备树、RootFS 被篡改
如果没有签名机制,即使 Kernel、DTB 或 RootFS 被替换,系统也可能仍然正常启动。
表面上设备一切正常,实际上驱动可能被替换,系统文件中也可能已经被加入恶意内容。
这种问题的危险之处在于:它是无感的。
3. OTA 升级链路不再可信
量产设备很难避免 OTA 升级。
但如果启动链本身不可信,那么伪造升级包、中间人攻击、版本回滚这些问题都会变成现实风险。
也就是说,没有 Secure Boot,OTA 不只是"可能不稳定",而是从根本上缺乏可信基础。
4. 知识产权和安全模块失去保护
没有 SBK 和 Secure Boot,Bootloader 和 Kernel 更容易被 dump 和逆向。
对商业产品来说,这意味着关键算法、设备能力甚至部分安全机制可能被提取和利用。
更进一步说,像 OP-TEE 这样的安全模块,本身也依赖 Secure Boot 建立可信基础。一旦启动链失去可信性,上层安全系统也会被削弱。
四、Jetson Secure Boot 的核心思路是什么
这一讲里,一个核心问题就是:
Jetson 的 Secure Boot 到底是怎么工作的?
Jetson 的 Secure Boot 并不是只去校验某一个文件,而是建立一条完整的 Boot Chain(启动信任链)。
大致可以理解为:
text
BootROM -> MB1 -> MB2 -> UEFI -> Kernel
它的核心逻辑很简单,但非常重要:
每一级在接管执行权之前,都先验证下一级是否可信。
也就是说,Jetson 的安全启动不是单点验证,而是从底层硬件开始,一层一层把信任传递到操作系统。
如果从职责上去理解,可以简单分成这样几层:
- BootROM:建立最底层的硬件级信任根
- MB1:初始化早期硬件并继续验证下一级
- MB2:传递信任到后续启动阶段
- UEFI:加载并验证 Kernel
- Kernel:接管系统运行,并继续维持系统可信性
这一部分真正要理解的,不只是顺序,而是 为什么每一级都必须参与验证 。
因为只有每一级都可信,整条启动链才可信。
五、PKC、SBK 和 Fuse 分别负责什么
很多人在学习 Secure Boot 时,最容易混淆的就是这三个概念:
- PKC
- SBK
- Fuse
这一讲的一个重点,就是把它们拆开讲清楚。
1. PKC:解决"有没有被篡改"
PKC 可以理解为签名验证机制。
它主要解决的是 完整性和来源可信性 问题,也就是:
- 这个固件是不是你签发的
- 这个固件有没有被改过
在 Jetson 的 Secure Boot 启动链中,BootROM、MB1、MB2、UEFI 都会逐级验证签名,决定固件能不能继续执行。
所以,PKC 的核心作用就是:
防篡改,保证固件来源可信。
2. SBK:解决"会不会被读出来"
SBK 是对称加密机制。
它主要解决的是 机密性 问题,也就是防止 Bootloader 或其他固件镜像被 dump 之后直接读取和逆向分析。
如果用最简单的话来区分:
- PKC 解决"能不能信"
- SBK 解决"能不能看"
这两者不是互相替代,而是分别覆盖完整性和机密性两个不同层面。
3. Fuse:把信任根真正写进硬件
Fuse 是 SoC 内部的一次性可编程硬件位,也就是 OTP。
它最大的特点是:
一旦写入,不可回退。
Jetson 在上电阶段会由 BootROM 读取 Fuse 内容,并据此决定整个平台的安全策略。
所以,Fuse 的意义不在于"保存配置",而在于:
它把 Secure Boot 的根信任真正落到了硬件上。
这也是为什么 Secure Boot 真正启用之后,很多设置不能随意回滚。因为从这一刻开始,设备已经进入受硬件安全策略约束的状态。
六、第五讲具体会讲什么
这一讲不会只停留在概念解释上,而是会把 Jetson Secure Boot 的完整链路顺一遍,从原理到落地步骤尽量讲清楚。
整体上,内容会围绕下面几个部分展开:
1. Secure Boot 的作用和风险背景
先讲清楚 Secure Boot 到底解决什么问题,以及没有它会带来哪些实际风险。
这一部分的目的,是让 Secure Boot 不再只是"一个安全名词",而是和真实产品安全场景对应起来。
2. Jetson Secure Boot 的启动链结构
把 BootROM、MB1、MB2、UEFI、Kernel 之间的关系理顺,理解它为什么是一条逐级传递信任的启动链。
3. PKC、SBK 和 Fuse 的分工
这一部分会把三个核心概念拆开讲,让逻辑更清楚:
- PKC 负责签名验证
- SBK 负责镜像加密
- Fuse 负责固化硬件级信任根
4. Secure Boot 的执行流程
从真正落地的角度来看,Secure Boot 的过程大致包括:
- 生成 PKC 密钥对
- 准备 SBK 密钥
- 准备 K1/K2 密钥
- 构建 EKB 密钥包
- 编写 Fuse XML
- 烧录熔丝
- 刷写签名和加密后的安全镜像
这里真正重要的不是死记步骤,而是理解:
Secure Boot 是一整套链路配置,而不是"打开某个开关"。
七、这一讲的重点和难点
如果把第五讲再压缩一下,我觉得重点其实可以归纳成三层:
1. 为什么 Secure Boot 是产品化的基础能力
这一层解决的是认知问题。
也就是 Secure Boot 为什么重要,为什么它不是"以后再说"的功能。
2. PKC、SBK、Fuse 三者之间是什么关系
这一层解决的是机制问题。
很多人学到这里会混淆概念,但其实这三者分别负责:
- 完整性
- 机密性
- 硬件信任根
只要把分工理顺,整个 Secure Boot 的结构就会清楚很多。
3. Secure Boot 是一条链,而不是一个点
这一层解决的是工程理解问题。
真正的 Secure Boot 不是签一个镜像、烧一个 Fuse 就结束,而是一整套从密钥、熔丝到镜像刷写的安全启动链。
这一讲的难点也主要在这里:
- 密钥之间的依赖关系
- Fuse 写入流程的不可逆性
- SecurityMode 锁定之后不可恢复
- Secure Boot 配置顺序必须正确
所以,这一讲更重要的是建立一套清晰的理解框架,而不是单纯记几个命令。
八、这一讲适合谁看
如果你已经开始关注 Jetson 的系统安全、量产部署或者可信启动,这一讲会比较适合你。
尤其是下面这些情况:
- 正在做 Jetson 商用设备或量产产品
- 需要让设备只启动受控镜像
- 想保护 Bootloader、Kernel 和关键算法
- 需要提升 OTA 升级链路的可信性
- 准备把 Secure Boot 融入自己的构建系统或 Yocto 体系
如果你现在还只是处在开发板验证阶段,这一讲也值得先建立基础认识。因为很多后面真正影响产品稳定性的能力,往往不是最后补上去的,而是一开始就要理解清楚的。
九、视频与课程入口
B站视频地址
点击下方 "阅读原文" 跳转至视频。
与非网课程入口
https://www.eefocus.com/course/1993803.html
十、我想分享的内容
我一直觉得,边缘嵌入式开发走到后面,真正重要的不只是功能能不能跑起来,而是系统能不能以一种 可控、可信、可维护 的方式长期运行。
前面几讲更多是在帮大家把 Jetson 的硬件、系统和构建路径理清楚。
第五讲开始,课程进一步进入系统安全这一层。
把安全启动这一层看明白,后面很多关于 Jetson 产品化、可信启动和系统安全设计的问题,理解起来都会更顺。
如果你对 Jetson 和边缘嵌入式开发感兴趣,也欢迎继续关注我,后面我会把这个系列继续更新下去。