ZHCAAD3A September   2020  – June 2026 F29H850DM , F29H850TU , F29H859TU-Q1 , F29P329SM-Q1 , F29P589DM-Q1 , F29P589DU-Q1 , TMS320F2800132 , TMS320F2800133 , TMS320F2800135 , TMS320F2800137 , TMS320F280033 , TMS320F280034 , TMS320F280034-Q1 , TMS320F280036-Q1 , TMS320F280036C-Q1 , TMS320F280037 , TMS320F280037-Q1 , TMS320F280037C , TMS320F280037C-Q1 , TMS320F280038-Q1 , TMS320F280038C-Q1 , TMS320F280039 , TMS320F280039-Q1 , TMS320F280039C , TMS320F280039C-Q1 , TMS320F28384D , TMS320F28384D-Q1 , TMS320F28384S , TMS320F28384S-Q1 , TMS320F28386D , TMS320F28386D-Q1 , TMS320F28386S , TMS320F28386S-Q1 , TMS320F28388D , TMS320F28388S , TMS320F28P550SG , TMS320F28P550SJ , TMS320F28P559SG-Q1 , TMS320F28P559SJ-Q1 , TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DH-Q1 , TMS320F28P659DK-Q1 , TMS320F28P659SH-Q1

 

  1.   1
  2.   摘要
  3.   商标
  4. 1 简介
  5. 2 安全闪存启动概述
  6. 3 CMAC 身份验证
  7. 4 安全闪存启动选项
  8. 5 安全闪存启动流程
  9. 6 C2000Ware 示例详细信息
  10. 7 对超过 16KB 的闪存代码进行身份验证
  11. 8 调试资源
  12. 9 其他信息和注意事项
  13. 10C2000 CMAC 算法与 OpenSSL 的对齐
    1. 10.1 C28x 存储器和二进制文件字节顺序
    2. 10.2 闪存二进制字节顺序
    3. 10.3 CMAC 密钥字节顺序
    4. 10.4 CMAC 输出对齐流程
    5. 10.5 工作示例
    6. 10.6 差异总结
  14. 11参考文献
  15. 12修订历史记录

差异总结

hex2000 --cmac 签名流程与直接调用 OpenSSL AES-128-CMAC 命令之间仅存在唯一的行为差异,即围绕 AES 操作的两次 swapwords 变换。在两种情况下,底层密码算法、密钥编排和初始化向量完全相同。表 10-2 总结了两种流程之间的完整对应关系,以供参考。

表 10-2 C2000 与 OpenSSL CMAC 流程对比
方面 C2000 OpenSSL
消息预处理 在 AES 之前应用 swapwords(masked_binary) 原始字节流;不应用变换
签名区域屏蔽 字节偏移 0x4–0x13 替换为 0xFF 调用 OpenSSL 前必须手动应用
密钥字节顺序 MSB 在前 (CMACKEY0 || ... || CMACKEY3) MSB 在前;顺序相同,无需转换
AES-128-CMAC 算法 NIST SP 800-38B (OMAC1) NIST SP 800-38B (OMAC1);完全相同
初始化向量 全 0(在 CMAC 标准中隐式定义) 全 0(在 CMAC 标准中隐式定义)
标签后处理 嵌入前应用 swapwords(aes_tag) 原始 AES 标签输出;必须手动应用 swapwords
输出 嵌入了所存储标签的已签名二进制文件 16 字节原始 AES 标签;需进一步处理
注:

swapwords 变换以 32 位组为单位操作,因此要求身份验证区域长度为 4 字节的倍数。16KB(0x4000 字节)的 C28x 主安全启动区域可满足此要求。当按照 节 7 所述对自定义闪存范围执行扩展身份验证时,起始和结束地址同样必须对齐到 128 位,才能使 CMAC 算法在无填充的情况下正确运行。