大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT 系列中数据协处理器DCP 使用 SNVS Master Key 加解密的注意事项。
i.MXRT 不仅仅是处理性能超强的 MCU,也是安全等级极高的 MCU。如果大家用过痞子衡开发的一站式安全启动工具 NXP-MCUBootUtility,应该会从其 用户手册 3.3 节中了解到 i.MXRT 支持的几种安全启动等级,其中 HAB 加密启动方式和 BEE/OTFAD 加密启动方式中都提及了一种神秘的密钥 - SNVS Master Key,今天痞子衡就跟大家聊聊这个密钥用于 DCP 模块的注意事项(文中仅以 i.MXRT1060 为例,其他 RT10xx 型号或许有微小差别)。
一、DCP 模块简介
先来给大家科普下 DCP 模块,DCP 是 Data Co-Processor 的简称,从名字上看是个通用数据协处理器。在 i.MXRT1060 Security Reference Manual 中有一张系统整体安全架构简图,这个简图中标出了 DCP 模块的主要功能 :CRC-32 算法、AES 算法、Hash 算法、类 DMA 数据搬移。
![8f74e08006fb86c4b71ecc0ae5e4c07d.png](https://i-blog.csdnimg.cn/blog_migrate/87518ee9d3402902fe824835946e9fad.jpeg)
看到 DCP 支持的功能,你就能明白其模块命名的由来了。本质上它就是一个数据处理加速器,如果说 CRC-32/Hash 算法只是算出一个结果(下图中 Mode3),而 AES 算法则是明文数据到密文数据的转换(存在数据迁移,下图中 Mode2),DMA 式数据搬移则更明显了(下图中 Mode1)