Edit online

安全启动配置

9 Dec 2024
Read time: 1 minute(s)
安全启动支持以下功能配置:
  1. 密钥管理

    密钥分为签名秘钥 和固件加解密的密钥。有部分密钥在出厂阶段烧录在 eFuse 相关密钥区域, 部分密钥嵌入到启动镜像中,保存在存储介质。
    1. 签名密钥

      芯片支持对启动镜像进行签名,固定使用 RSA-2048 进行签名和验证。涉及的密钥和相关数据有:

      1. RSA-2048 非对称密钥对(公钥和私钥)

        RSA 密钥对可由 Openssl 工具生成。RSA 私钥用于对启动镜像进行签名,在生成量产固件时使用,厂商必须严密保管以防泄露。 RSA 公钥保存为标准的 DER 公钥文件,并且保存在启动镜像中,设备启动过程中 BROM 用其对加载的启动镜像进行签名认证。

      2. ROTPK

        为了保证公钥的真实性,需要将 RSA 公钥的数据摘要信息 (MD5) 烧录到 eFuse 的 ROTPK 区域, BROM 在使用公钥前首先要检查其数据摘要信息与 ROTPK 中的数据摘要信息是否一致。 ROTPK 需要在出厂时设置写保护,以防被恶意修改。

    2. AES 密钥

      芯片支持使用 AES-128 算法对启动镜像的可执行代码区域进行加密,其使用的密钥在出厂阶段烧录在 eFuse 的 SSK 区域。BROM 在启动时会使用 SSK 对固件进行解密。

      SSK 区域需要在出厂时设置为仅硬件加解密模块可以读访问,CPU 不可读写,以防被攻击者读取到密钥的信息。

  2. 签名验证:
    1. 将启动镜像加载到芯片内部 RAM 中。

    2. 首先计算公钥数据的数据摘要(MD5),与 ROTPK 中的值进行对比。

    3. 如果公钥有效,则使用公钥对镜像的签名数据进行解密,得到镜像的原始数据摘要。

    4. 重新计算镜像的数据摘要,并与原始数据摘要进行比较。

    5. 结果一致,则签名验证通过。

  3. 固件解密

    1. 配置硬件加解密模块 (CE),使用 SSK 对代码区域进行 AES-CBC 解密。

    2. 解密是原地进行的,直接覆盖原来的加密数据区域。

  4. 安全 eFuse 配置

    eFuse 中与启动安全相关的区域有:

    1. SECURE

    2. SSK

    3. ROTPK