嵌入式安全第一关:Secure Boot是怎么保护你的设备的?

你有没有想过一个问题:如果攻击者直接拿编程器夹住你的Flash芯片,把固件全部读出来,你的加密算法就算再强,又有什么用?

这不是假设。我们团队之前做过一个测试------市面上售价百元以内的几款物联网终端设备,超过六成没有做任何物理层面的安全防护。一把夹子、一条杜邦线、一个半小时,固件就能完整dump出来。

很多人把嵌入式安全简单等同于"在代码里用AES加密数据",但在这个连Flash都可以热风枪吹下来放在编程器上读的物理世界里,代码加密的前提是------别人读不到你的代码。

所以要理解嵌入式安全,首先得理解一个概念:信任根。

先看一段典型的MCU启动流程:

c 复制代码
void boot_sequence(void) {
    uint32_t *app_entry = (uint32_t *)APP_START_ADDR;

    // 1. 读取复位向量
    if (*app_entry != 0xFFFFFFFF) {
        // 2. 计算当前固件哈希
        uint8_t hash[32];
        sha256_calculate(APP_START_ADDR, APP_SIZE, hash);

        // 3. 与存储在OTP区域的签名对比
        if (memcmp(hash, (void *)OTP_HASH_ADDR, 32) == 0) {
            // 4. 签名验证通过,正常启动
            jump_to_app(app_entry);
        } else {
            // 固件被篡改,进入安全模式
            enter_safe_mode();
        }
    }
}

这段代码呈现的是一个典型的Secure Boot流程,但关键不在于代码怎么写,而在于"OTP区域的签名"是怎么来的。

OTP,全称One Time Programmable,是信任链的第一环。

芯片出厂时,厂商在OTP区域烧录一个公钥哈希或者设备证书。这个区域只能写一次,且物理上无法被外部接口读取。信任从这里开始------如果连OTP的内容都可以被篡改,那么整个安全体系就崩塌了。

真正的问题是:OTP里的根密钥怎么保证安全?

一个有意思的设计是,很多MCU厂商在芯片内部集成了一个硬件不可克隆函数,英文叫Physically Unclonable Function,简称PUF。PUF利用芯片制造过程中硅片掺杂浓度的微小差异来生成一个唯一的、不可复制的"指纹"。这个指纹被用来派生加密密钥,密钥从不出芯片,只在需要时由PUF实时生成。

绕了一圈,本质逻辑其实是:与其拼命保护一把密钥,不如让这把密钥根本就不存在。不存在的东西,自然偷不走。

再往上一层看,即使Secure Boot和无密钥存储都做好了,还有另一个常被忽视的环节------固件更新通道。

c 复制代码
/* 不安全的固件更新 */
if (receive_packet(&pkt) == SUCCESS) {
    write_flash(UPDATE_ADDR, pkt.data, pkt.len);
    reboot();
}

/* 稍微可靠的版本 */
if (receive_packet(&pkt) == SUCCESS) {
    if (verify_signature(pkt.data, pkt.len, pkt.sig) == VALID) {
        if (decrypt_in_place(pkt.data, pkt.len, session_key) == OK) {
            write_flash(UPDATE_ADDR, pkt.data, pkt.len);
            reboot();
        }
    }
}

两种实现的差别不只是多几行if判断。前一种在OTA升级时,任何人只要在无线信号范围内发送一个伪造的固件包,就能让所有设备变砖------更糟糕的是,如果攻击者植入一个恶意固件,设备就成了别人手里的僵尸。

后一种实现多做了两件事:签名验证保证固件来源可信,会话密钥解密保证传输过程中不会被窃听。这里使用session_key而不是固定密钥的原因是------如果设备所有者的通信都用同一把对称密钥加密,密钥在设备出厂后就无法更换,一旦泄漏就全盘皆输。

从信任根出发,到Secure Boot验证,再到安全固件更新,这三层构成了一条完整的信任链。但有个容易被忽略的细节:信任链的强度取决于最弱的一环。如果生产环节中固件烧录器可以直接跳过签名验证,那前面所有工作都白做了。

生产安全本身就是一个不小的课题。

相关推荐
嘟哩DuliDuli1 天前
AI 短剧生成为什么要有角色库、场景库和镜头卡
android·人工智能·安全·ai·软件工程
恒锐丰小瑞1 天前
率能SS6812T 40V/1A/双通道H桥驱动芯片,PWM电流控制与混合衰减模式(eTSSOP28),用于POS打印机/安防相机/机器人
单片机·嵌入式硬件·数码相机·机器人
高工智能汽车1 天前
新石器发布行业首个L4无人车安全智能体“玄武“,升级规模化安全运营体系
安全
Arnold.Shen1 天前
Dell Storage SC - 如何发送SupportAssist,并启用安全控制台
linux·安全
猫咪宝妖1 天前
【信息安全工程师】第2章 网络安全法律与标准
安全·web安全
嵌入式阿蔡1 天前
传感器_02:MPU6050 六轴 IMU 姿态入门——从一串看不懂的数,到一个不漂的角度
网络·stm32·单片机·嵌入式硬件·嵌入式实时数据库
BenSmith1 天前
RTOS漏洞分析(三):CVE-2026-8718和CVE-2026-9771
安全
恒锐丰科技韩生1 天前
SS6951A|8.2‑36V 双通道 4A H 桥电机驱动 ETSSOP28 带散热焊盘 工业缝纫机打印机机器人专用
嵌入式硬件·硬件工程
恒锐丰小瑞1 天前
率能SS6811H 38V/1.6A/双通道H桥驱动芯片,PWM控制接口与低功耗睡眠模式,用于舞台灯光/安防相机/机器人
单片机·嵌入式硬件·数码相机·机器人
怀民民民1 天前
开篇:基于 Cortex-M7、OpenMV 与双频 GNSS 的智能派件 AGV 设计与实现
单片机·嵌入式硬件·gnss·openmv·智能车