ZHCAC19A January   2023  – December 2025 MSPM0C1105 , MSPM0C1106 , MSPM0G1105 , MSPM0G1106 , MSPM0G1107 , MSPM0G1505 , MSPM0G1506 , MSPM0G1507 , MSPM0G1518 , MSPM0G1519 , MSPM0G3105 , MSPM0G3106 , MSPM0G3106-Q1 , MSPM0G3107 , MSPM0G3107-Q1 , MSPM0G3505 , MSPM0G3506 , MSPM0G3506-Q1 , MSPM0G3507 , MSPM0G3507-Q1 , MSPM0G3518 , MSPM0G3518-Q1 , MSPM0G3519 , MSPM0G3519-Q1 , MSPM0L1105 , MSPM0L1106 , MSPM0L1227 , MSPM0L1227-Q1 , MSPM0L1228 , MSPM0L1228-Q1 , MSPM0L1303 , MSPM0L1304 , MSPM0L1304-Q1 , MSPM0L1305 , MSPM0L1305-Q1 , MSPM0L1306 , MSPM0L1306-Q1 , MSPM0L1343 , MSPM0L1344 , MSPM0L1345 , MSPM0L1346 , MSPM0L2227 , MSPM0L2227-Q1 , MSPM0L2228 , MSPM0L2228-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 1引言
    1. 1.1 关键概念
    2. 1.2 网络安全目标
    3. 1.3 平台信息安全机制
  5. 2器件安全模型
    1. 2.1 器件标识
    2. 2.2 启动时的初始条件
    3. 2.3 引导配置例程 (BCR)
    4. 2.4 引导加载程序 (BSL)
    5. 2.5 启动流程
    6. 2.6 用户指定的安全策略
      1. 2.6.1 引导配置例程 (BCR) 策略
        1. 2.6.1.1 串行线调试相关策略
          1. 2.6.1.1.1 SWD 安全级别 0
          2. 2.6.1.1.2 SWD 安全级别 1
          3. 2.6.1.1.3 SWD 安全级别 2
        2. 2.6.1.2 引导加载程序 (BSL) 启用/禁用策略
        3. 2.6.1.3 闪存保护和完整性相关策略
          1. 2.6.1.3.1 锁定应用 (MAIN) 闪存
          2. 2.6.1.3.2 锁定配置 (NONMAIN) 闪存
          3. 2.6.1.3.3 验证应用 (MAIN) 闪存的完整性
        4. 2.6.1.4 引导加载程序 (BSL) 安全策略
          1. 2.6.1.4.1 BSL 访问密码
          2. 2.6.1.4.2 BSL 读取策略
          3. 2.6.1.4.3 BSL 安全警报策略
      2. 2.6.2 客户安全代码 (CSC) 安全策略
        1. 2.6.2.1 CSC 强制存储体交换
        2. 2.6.2.2 CSC 强制防火墙
        3. 2.6.2.3 CSC 密钥写入 KEYSTORE
      3. 2.6.3 配置数据错误抵抗
        1. 2.6.3.1 由 CRC 支持的配置数据
        2. 2.6.3.2 16 位关键字段模式匹配
  6. 3安全启动
    1. 3.1 安全处理环境隔离
    2. 3.2 客户安全代码 (CSC)
      1. 3.2.1 安全启动流程
      2. 3.2.2 闪存映射
      3. 3.2.3 特性
        1. 3.2.3.1 CMAC 加速
        2. 3.2.3.2 非对称验证
        3. 3.2.3.3 KEYSTORE 及防火墙
        4. 3.2.3.4 CSC 性能
      4. 3.2.4 快速入门指南
        1. 3.2.4.1 环境设置
        2. 3.2.4.2 分步指导
        3. 3.2.4.3 CSC NONMAIN 配置
        4. 3.2.4.4 定制 CSC 示例上的更改
    3. 3.3 启动映像管理器 (BIM)
      1. 3.3.1 安全启动流程
      2. 3.3.2 闪存映射
      3. 3.3.3 快速入门指南
  7. 4安全存储
    1. 4.1 闪存写保护
    2. 4.2 闪存读取-执行保护
    3. 4.3 闪存 IP 保护
    4. 4.4 数据存储体保护
    5. 4.5 安全密钥存储
    6. 4.6 SRAM 保护
    7. 4.7 硬件单调计数器
  8. 5加密加速
    1. 5.1 硬件 AES 加速
      1. 5.1.1 AES
      2. 5.1.2 AESADV
    2. 5.2 硬件真随机数发生器 (TRNG)
  9. 6常见问题解答
  10. 7总结
  11. 8参考资料
  12. 9修订历史记录

常见问题解答

  1. MSPM0 CSC 解决方案中的信任根是什么?

    A:信任根包括不可变的 TI ROM 引导代码及静态写保护的 CSC 区域。它们在正确的 NONMAIN 配置后是不可更改的。有关详细信息,请参阅 CSC NONMAIN 配置

  2. CSC 是否处理固件更新过程?

    A:编号CSC 仅验证已提前置于特定闪存地址的应用程序固件,但不处理固件更新过程(引导加载程序),也不考虑固件如何加载到闪存中。

  3. CSC 解决方案中不同算法的时序特性是什么?

    A:有关详细信息,请参阅 CSC 性能

  4. 当我尝试将新固件下载到运行具有 CSC 或存储体交换的应用程序的器件时,为什么 CCS/Uniflash 报告擦除错误?

    A:启用存储体交换后,逻辑低存储体将获得读取-执行权限并失去写入/擦除权限。另一个存储体(逻辑高存储体)可读以及可写但不可执行。当 CCS 或 Uniflash 尝试从地址 0x0000 下载固件时,由于逻辑低存储体地址不可擦除,它将报告擦除错误。您可以从高位存储体地址开始更新固件,或者只是在加载程序之前恢复出厂设置。

  5. 下载 CSC 示例后,为什么需要下电上电或 NRST 复位?

    A:CSC 示例包括用于启用 CSC 的 NONMAIN 配置。NONMAIN 配置在引导代码期间生效,只有 BOOTRST(或更高级别)复位可以使 MSPM0 返回到 ROM 引导代码。

  6. 如何在 CSC 中更改应用程序起始地址?

    A:有关详细信息,请参阅在 CSC 上自定义更改示例

  7. 对于 CSC、应用程序映像和 NONMAIN 区域输出,我应该选择哪种输出格式?

    A:.txt/.bin/.hex 格式可用于固件更新。NONMAIN 配置应与 CSC 一起编程,不会与应用程序固件一起更新 NONMAIN 区域。有关指导,请参阅逐步指导

  8. 构建 customer_secure_sample_image 时,CCS 为什么报告编译后失败错误?

    A:在构建 CSC 样本映像示例之前,请检查您是否已成功设置 Python 环境。并确保 CSC 示例与 CSC 样本映像示例位于同一工作区。

  9. 应用程序中是否存在用于非对称加密/解密的密钥存储区域?

    A:MSPM0 器件仅对 AES 引擎提供对称的密钥存储 (KEYSTORE)。非对称加密/解密算法密钥(如 ECDSA 公钥)存储在 SECRET 区域中。此 SECRET 区域只能在特权状态(INITDONE 预置)下访问、并且在运行应用程序时通过防火墙受读保护写保护

  10. 我如何在链接器文件中提供应用程序地址?

    A:在启用存储体交换的配置中,应始终使用给定的逻辑低存储体地址构建应用程序。以 MSPM0G3519 为例,链接器文件(CCS 中的.cmd)中定义的地址范围应为 0x00000~0x40000。但是,在更新应用固件时,需要将固件加载到逻辑高存储体地址,因为程序在逻辑低存储体中运行,只有逻辑高存储体具有读写访问权限。

  11. 如果我要定义自己的应用程序映像格式该怎么办?

    A:当前,SDK CSC 示例使用 MCUBOOT 提供的签名工具 imgtool 来生成包含接头和签名信息等的应用程序映像。用户可以定义自己的映像格式,但需要为自己定义的映像格式实现 CSC 中的解析程序。

  12. 如果我只想将对称方法用于安全启动,该怎么办?

    A:用户可以使用 AES-CMAC 在支持 AESADV 的 MSPM0 器件中进行对称映像验证,有关详细信息,请参阅平台信息安全机制。确保存储在 MCU 中的 AES 密钥已经事先通过安全的方式与映像供应商一致。