I.MX RT1170加密启动详解(3):HAB加密启动原理

news2024/7/2 3:35:53

上一节使用对镜像进行签名认证,这可以防止镜像被篡改。但我们还是希望Flash中的程序不会被别人看到,所以这就需要加密启动了。

文章目录

  • 1 HAB加密启动流程
  • 2 扩展知识: DCP和SNVS

1 HAB加密启动流程

如下图所示就是HAB加密启动的整个流程:

  • HAB加密启动仅适用于non-XIP的情况
    在这里插入图片描述

NXP提供了一个CST(Code Signing Tool)工具,它可以生成一个称为DEK(Data Encryption Key)的随机密钥,实际上DEK就是一个基于AES-CCM 128/192/256bit的对称密钥,它用来加密和解密镜像。

  • CST下载地址:i.MX High Assurance Boot Reference Code Signing Tool

如何保存DEK
DEK用于对镜像进行加解密,所以我们需要将它保存下来供MCU获取,但也不能随便被用户得到。NXP将OTPMK(eFuse中出厂预烧录的每个芯片都唯一的密钥)作为SNVSDEK通过SNVS密钥加密为DEK Blob保存在image镜像最后的DEK blob字段。如下图所示
在这里插入图片描述
在上电之后,BootROM通过SNVS解密DEK Blob来得到DEK,然后通过DEK解密镜像获得原始bin文件,然后拷贝到RAM中运行。所以这种方法仅适用于non-XIP的方案。

2 扩展知识: DCP和SNVS

  • 参考链接:https://www.cnblogs.com/henjay724/p/13327060.html

DCP(Data Co-Processor)即通用数据协处理器,它可以完成CRC32、SHA、AES等算法。对于AES算法来说,实现了明文数据到密文数据的转化,中间的数据迁移由DCP内部集成的memcopy功能实现。

对于加解密而言,一个重要的特性就是密钥管理,DCP的AES-128密钥的来源有四种:
1、SRAM-baser keys:用户自定义的存放于SRAM中的密钥,最终写入DCPKEY_DATA寄存器中,最多4组
2、Payload key:用户自定义的跟加解密数据放在一起的密钥,操作时由DCP解析
3、eFuse SW_GP2 key:烧录到eFuse SW_GP2区域的密钥
4、SNVS Master Key:芯片出厂时预订的唯一密钥,密钥值无法获知,DCP可以通过内置途径获得
SNVS(Secure Non-Volatile Storage)提供一个独特的Master Key给DCP模块,这个Master key的一种产生方式为

OTPMK,即eFuse里出厂预烧录的且每个芯片唯一的OTPMK(256bit),它不可以被软件访问。
DCP模块的驱动在SDK_2_12_1_MIMXRT1170-EVK\middleware\mcu-boot\src\drivers\dcp,分为两个函数:

DCP_AES_EncryptEcb()用于加密、DCP_AES_DecryptEcb()用于解密。

OTFAD加密使用SNVS Master Key的前提条件是设置eFuse SEC_CONFIG[1:0]设为2’b10(Hab Close),且在调试状态下无法获取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/598997.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝桥杯国赛备赛(嵌入式组)

一、数码管(拓展板)(共阴接法) 引脚控制 PA3 :RCLK 串型存储时钟输入 (上升沿有效) PA2 :SCK 串行移位时钟输入(上升沿有效) PA1 :SER 串型数据输入 发送数据时先发高位&#xff1…

【UnityShader入门精要】【总结记录】【第二章-1】

☀️博客主页:CSDN博客主页 💨本文由 萌萌的小木屋 原创,首发于 CSDN💢 🔥学习专栏推荐:面试汇总 ❗️游戏框架专栏推荐:游戏实用框架专栏 ⛅️点赞 👍 收藏 ⭐留言 📝&a…

使用 Access SQL 插入、更新和删除表格记录

参考链接 使用 Access SQL 插入、更新和删除表格记录 | Microsoft Learnhttps://learn.microsoft.com/zh-cn/office/vba/access/concepts/structured-query-language/insert-update-and-delete-records-from-a-table-using-access-sql 将记录插入表格 基本上有两种方法可以向…

client-go架构与原理介绍

个人博客 一、架构展示 client-go 库中的各种组件架构如下图所示: 二、目录结构 client-go 是用 Golang 语言编写的官方编程式交互客户端库,提供对 Kubernetes API server 服务的交互访问。 其源码目录结构如下: . ├── discovery …

再识openmmlab,用mmDeploy实现部署的前期需要了解一些内容

OpenMMLab 是一个用于学术研究和工业应用的开源算法体系,于2018年年中开始,由 MMLab(香港中文大学多媒体实验室)和商汤科技联合启动。 如果第一接触的话,还是建议参考官方环境配置教程:Windows 环境配置 -…

Midjourney万能高清咒语,真正的近看也美

明明我都拿人家的图垫图了,为什么质量还是很差? 明明别人都把咒语分享出来了,为什么质量还是很差? 今天我们就来解决这两个问题,看到就是缘分,点点手指来个小心心不过分吧,哈哈 什么你在怀疑我的…

Spring Boot + ElasticSearch实战之CRUD及多数据源配置

概述 本文记录工作中使用Spring Boot ElasticSearch的实战&#xff0c;Spring Boot版本&#xff1a;2.1.6.RELEASE。 基础 Spring Boot已是Java开发标配&#xff0c;使用SB提供的starter&#xff0c;简单高效。 配置 引入依赖&#xff1a; <dependency><groupI…

Rocketmq如何保证消息不丢失

如果想要保证消息不丢失就要知道&#xff0c;消息可能出现丢失得地方。 1.producer发送消息 2.Broker存储消息 3.Consumer消费消息 4.Broker主从切换 下面一共有9个维度可以保证消息不丢失。 目录 维度一&#xff1a;同步发送 维度二.异步发送 维度三.刷盘策略 维度四…

数据库期末复习(2)

关系数据库 图1 上图为思考题1的答案 \d student #查看完整性约束 模式和实例 关系的模式:关系有哪些、关系又什么类型、关系的约束时什么&#xff0c;一般来说关系的模式一般比较稳定&#xff0c;不会随着动态的变化而变化。 关系的实例:关系的实例一般随着变化的次数比较…

体验 InsCode AI,原来 AI 也扛不住互联网黑话

CSDN AI写作助手上线了&#xff01;InsCode AI 创作助手不仅能够帮助用户高效创作文章&#xff0c;而且能够作为对话式AI回答你想知道的问题。成倍提高生产力&#xff01;以下是我的体验分享 一、你平时会使用这类AI工具吗&#xff1f;你对这类型的工具有什么看法&#xff1f;…

RPC(2):RPC简介

1 RFC RFC(Request For Comments) 是由互联网工程任务组(IETF)发布的文件集。文件集中每个文件都有自己唯一编号&#xff0c;例如&#xff1a;rfc1831。目前RFC文件由互联网协会(Internet Society&#xff0c;ISOC)赞助发行。 RPC就收集到了rfc 1831中。可以通过下面网址查看…

微信小程序websocket使用protobuf,发送arraybuffer

❤️砥砺前行&#xff0c;不负余光&#xff0c;永远在路上❤️ 目录 前言一、如何在小程序websocket中使用 Protobuf 发送buffer二、使用过程遇到的坑&#xff08;版本问题&#xff09;1、需要注意下Protobuf版本 使用 protobufjs6.8.6最好&#xff0c;我在使用的时候安装7.多 …

1_7后端优化

后端优化是指将一段时间内相机所有关键帧的位姿、内参、每个点3维坐标作为参数进行优化&#xff0c;得到最优的内、外参&#xff1b;利用的方法主要是Bundle Adjustment。 所谓Bundle Adjustment可以理解为从任意特征点发射出来的几束光线&#xff0c;它们会在几个相机的成像平…

寄存器-汇编复习(2)

通过阅读本文小节内容&#xff0c;可以清楚的明白汇编承接的能力和机器语言&#xff0c;高级语言之间的表达关系。文中虽然讨论16位cpu&#xff0c;最新的64或以后的128理论都一样的&#xff0c;类推就好了。 继续将 通用寄存器-汇编复习(1)_luozhonghua2000的博客-CSDN博客 …

很多人打商标的主意,悄悄埋伏

很多人在打商标的主意&#xff0c;等着抢劫呢 等你的品牌结了果实&#xff0c;然后出手勒索 趣讲大白话&#xff1a;鬼子进村&#xff0c;打枪的不要 【趣讲信息科技183期】 **************************** 有些公司申请几千件商标 有公司一个月申请100件 春江水暖贼先知 有一条…

WSL2网络配置

WSL2越来越好用了&#xff0c;但是在windows下使用clash时&#xff0c;配置WSL2的网络很麻烦&#xff0c;通常使用设置环境变量export ALL_PROXY"http://127.0.0.1:8000"的方式有很大的弊端&#xff0c;例如pip和conda就不会走代理。 经过我亲身体验&#xff0c;最好…

基于小脑模型神经网络的轨迹跟踪研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

模拟退火算法(附简单案例及详细matlab源码)

作者&#xff1a;非妃是公主 专栏&#xff1a;《智能优化算法》 博客地址&#xff1a;https://blog.csdn.net/myf_666 个性签&#xff1a;顺境不惰&#xff0c;逆境不馁&#xff0c;以心制境&#xff0c;万事可成。——曾国藩 文章目录 专栏推荐序一、概论二、物理退火1. 加温…

MyBatis - CRUD 操作

文章目录 1.环境配置1.1 导入相关依赖1.2 基本配置1.3 数据模型 2.基于 XML 开发2.1 创建 Mapper 接口2.2 创建 XML 映射文件2.3 insert2.4 select2.5 delete2.6 update2.7 编写单元测试 3.基于注解开发3.1 常用注解3.2 创建 Mapper 接口 MyBatis 支持通过 XML 和注解两种方式来…

chatgpt赋能python:Python运行程序没反应怎么办?

Python运行程序没反应怎么办&#xff1f; Python作为一种高级编程语言&#xff0c;已经成为了很多开发者的首选语言。然而&#xff0c;在使用Python编写程序时&#xff0c;有时候会出现运行程序却没有任何反应的情况。这是什么原因导致的呢&#xff1f;本文将为大家介绍Python…