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修订历史记录

安全启动流程

本节介绍基于 MSPM0 SDK CSC 示例 (MSPM0 SDK 2.08.00.03) 的 CSC 解决方案中的详细引导流程,如图 3-3 所示。整个执行流程与图 3-1图 3-2 中所示的流程图基本兼容。

完成 ROM 引导代码执行后,在程序首次进入 CSC 固件时,INITDONE (SYSCTL.SECCFG.SECSTATUS.INITDONE) 处于清除状态。CSC 首先在特权状态下工作。它从两个闪存存储体中搜索最高版本的映像,检查版本回滚,然后通过对称方法(硬件中的 AES-CMAC)或非对称方法(软件中的 SHA256+ECDSA)验证应用程序映像的权威和完整性。验证通过后,CSC 会更新回滚计数器、CMAC 标签、SECRET 密钥和 KEYSTORE。然后,它在 SECRET 闪存区域和可锁定闪存区域中配置防火墙,并确定存储体交换策略。CSC 发出 INITDONE 以触发 SYSRST,并且器件进入非特权状态。在置位状态下检查 INITDONE 后,器件会再次从 CSC 固件运行。检查前一个引导状态成功后,CSC 会跳转到应用程序映像以启动应用程序。

下面是一些与 CSC 示例执行流程相关的重要说明:

  • 需要启用 NONMAIN 闪存中的 CSCEXISTS 和 FLASHBANKSWAPPOLICY 字段,才能启用整个 CSC 序列。
  • PB0 表示物理 Bank0。由于存储体交换策略在特权状态 (pre-INITDONE) 下不会生效,因此在特权状态下使用的闪存地址 CSC 始终指物理地址。
  • 如果 PB0 和 PB1 中的两个映像的版本相同,则会以更高的优先级验证并执行 PB0 映像。
  • 如果最高版本的映像未通过 SHA256+ECDSA 验证,则会立即验证另一个存储体(如果存在)中的映像。
  • 在非对称身份验证的情况下,首先在软件中计算应用程序代码的安全哈希 (SHA2-256) 摘要,然后软件 ECDSA 根据固件中的公钥验证映像签名。
  • 对称 AES-CMAC 算法是一种省时的机制,用于在未检测到固件更新时验证应用程序映像。由于 AES-CMAC 是硬件加速的,因此简单地检查标签并确保其未经修改要快得多,因为它是不对称的验证。AES-CMAC 方法仅在发生 BOOTRST 时应用,并且自上次 BOOTRST 后,闪存中没有更高版本的映像放置。
  • SECRET 闪存区域是用户指定的一个区域,用于存储机密信息并且由防火墙进行读取-执行保护。可锁定闪存区域是用户指定的区域,用于存储未修改的信息并由防火墙进行写保护。有关更多详细信息、请参阅闪存存储器映射


 MSPM0 SDK CSC 执行流程

图 3-3 MSPM0 SDK CSC 执行流程