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

客户安全代码 (CSC)

客户安全代码 (CSC) 是采用硬件隔离机制 (INITDONE) 的 MSPM0 器件的安全启动解决方案。图 3-1 展示了 CSC 引导和启动序列。在 BOOTRST 时,TI ROM 代码开始执行。成功引导后,引导代码会发出 BOOTDONE。此时,SYSCTL 向器件发出 SYSRST 以触发从 MAIN 闪存存储器执行。引导代码完成后,MAIN 闪存程序始终从物理地址 0x0004 向量(复位处理程序)开始。根据 NONMAIN 闪存 BCR 中的 CSCEXISTS 配置,BOOTDONE 之后有两个执行流程:

  • CSCEXISTS 设置:CSC 引导序列启用,并且 MAIN 闪存程序以 INITDONE 在清除状态下启动。在这种情况下,用户需要将 CSC 固件(MSPM0 SDK CSC 示例)放入 MAIN 闪存 0x0000 地址。CSC 固件需要通过 NONMAIN BCR 配置进行静态写保护。
  • CSCEXISTS 清除:不允许 CSC 引导序列,MAIN 闪存程序在置位状态下以 INITDONE 启动。任何与安全相关的策略都是不可配置的,在这种情况下,用户需要将应用程序固件放入 MAIN 闪存 0x0000 地址中。
注:

MAIN 闪存程序始终在 BOOTDONE 之后自物理地址 0x0004 开始。由于在 BOOTRST 期间会复位存储体交换策略,因此 MAIN 闪存程序始终在 BOOTDONE 之后启动而不会进行存储体交换。仅当在 NONMAIN 配置中同时启用 CSCEXISTS 和 FLASHBANKSWAPPOLICY 时,存储体交换才会在 INITDONE 之后生效。

对于 CSC 现有的情况,CSC 负责确定执行库、内存区域保护、将安全密钥初始化到 KEYSTORE 中、进行应用程序完整性和真实性验证等。该器件正在特权状态下工作,具有配置这些安全策略的权限。在 CSC 结束时会发出 INITDONE(通过写入 SYSCTL.SECCFG.INITDONE,请参阅特定于器件的技术参考手册以了解寄存器定义),然后 SYSCTL 会发出第二个 SYSRST,下面列出的所有安全策略在 INITDONE 期间生效,并且在下一个 BOOTRST 之前不修改:

  • 防火墙保护策略
  • 存储体交换策略
  • 密钥库保护

INITDONE 之后,器件进入非特权状态,再次从 MAIN 闪存的地址 0x0004 开始执行,并且 CSC 会第二次执行。这一次,CSC 发现 INITDONE 之前已经发出过(这是通过读取 SYSCTL.SECCFG.SECSTATUS.INITDONE 位来确定的),因此会直接跳至主应用程序。请参阅图 3-2,了解特权状态 (INITDONE) 和非特权状态(INITDONE 之后)下的 CSC 执行流程。

有关引导和启动顺序的更多详细信息,请参阅 MSPM0 G 系列 80MHz 微控制器技术参考手册(修订版 C)的安全一章。


 CSC 引导和启动序列

图 3-1 CSC 引导和启动序列

 客户安全代码 (CSC) 执行概述

图 3-2 客户安全代码 (CSC) 执行概述