STM32信息安全 1.2 课程架构介绍:芯片生命周期管理与安全调试

news2024/11/19 21:24:11

STM32信息安全 1.2 课程架构介绍:STM32H5 芯片生命周期管理与安全调试

下面开始学习课程的第二节,简单介绍下STM32H5芯片的生命周期和安全调试,具体课程大家可以观看STM32官方录制的课程,链接:1.2. 课程架构介绍:STM32H5 芯片生命周期管理与安全调试

1. 调试端口访问控制与安全调试

image-20240312223518544

  • 调试端口访问控制,防止通过调试端口获取芯片内部资源
  • 锁定全部调试访问或部分调试功能
  • 永久关闭调试端口
  • 保留回复调试连接的可能
  • 管理不同生命周期阶段能够访问到的内部内部资源

2. STM32H5 调试访问控制与设备生命周期管理

image-20240312223534956

2.1 生命周期管理

  • 新的芯片生命周期管理机制
  • 更安全更灵活的资源访问控制
  • 在不同阶段管理芯片内部资源的访问权限

2.2 基于认证的调试访问

  • 芯片Close之后仍可以保留回退和调试能力
  • 提供受控的回退机制
  • 提供安全调试功能

2.3 硬件特性与资源

  • Product State
    • 设备可以处于Open,Provising,Closed,Locked等不同转台
  • Debug Authentication(DA) STM32 H5新引入的特性
    • 受控芯片回退
      • 基于密码或数字证书校验的回退
    • 安全调试
      • 基于数字证书和挑战应答机制回复调试功能

3. STM32H5 新的产品生命周期管理机制

image-20240312223547964

Product State 主要状态及其转换

Product State与RDP对比

  • Open相当于RDP Level0,就是完全开放的一个状态,即时出厂默认的一个状态,没有任何的保护
  • TZ-Closed,相当于Cortex M33内核的RDP 0.5,即TrustZone的安全侧的调试全部关闭,只允许非安全调试这样的一个状态。
  • 另外就是Locked状态,它相当于RDP2,也就是说一进入这个状态,调试端口就永久关闭了,是不可以恢复的。
  • 之前存在RDP1,目前不存与RDP1状态完全等同的一个状态。

这几种状态之间是有一定的状态转换关系存在的。通常情况下,默认我们拿到芯片是Open状态,然后它可以进入provisioning状态,在provisioning状态的时候是我们用来去烧写一些关键数据的,比如说我们后面会提到的OBK的安全存储区,我们需要往里面写数据的时候,通常是需要在provision的状态下去做一个写入。

provisioning的意思就是我们整个的关键数据的烧写,包括firmware烧写,OBK数据的少些。

到TZ-Closed状态时,相当于我把安全侧的所有的调试都关闭了,TZ-Closed状态只有开启了Trust-Zone的时候才会有,H556x或者H57x系列芯片,默认出厂时就是没有开启的状态,这个时候时没有TZ-Closed的状态,TZ-Closed状态可以变成Closd状态或者时Lock状态,这两个状态时二选一的,在这种情况下,调试端口都是完全关闭的,此时不允许任何连接的,这是这些状态之间的一个主要流向。

还有其他路径,比如说从Open直接切换到Provisioning的状态,或者是在Provisioning状态下切换到Closed或者时Locked的状态。

4. STM32H5 Debug Authentication安全调试

image-20240312223606831

Debug Authentication

  • 产品状态回退
  • 重新使能调试

除此之外,在Closed的状态,回到Open的状态,或者临时打开调试端口等,都是在STM32H5上面推出的一个新的功能上面,叫做Debug Authentication安全调试。

Debug Authentication实际上是在芯片和上位机工具之间要完成一个挑战应答的这样的一个 debug authentication的一个协议,通过你的密码,预设的密码或者是我的数字证书以及密钥去发起安全调试的一个请求。如果这个请求认证通过了,它可以让你做一个产品状态的回退。

5. STM32H5 新的产品生命周期管理机制

Product State 认证后的回退

image-20240312223650081

比如说我可以从close的状态回到TZ-close的状态,或者是回到open的状态,或者是临时的重新去使能这个调试的功能,让你又可以连到我的芯片上去调试我的代码,而这种临时的调试端口的恢复,并不会擦除flash里面的内容,所以你是可以去在线调试你的产品的功能。在Locked状态下,你已经不能再去做任何其他的状态回退了,但是如果说不是处在Locked的状态,我们是可以通过这种Debug Authentication直接回到 open状态的。

如果是在close的状态的话,我们同样经过Debug Authentication,可以选择回到TC close的状态,也就是说我会恢复安全侧的一个安全调试,非安全侧的一个调试,但是安全侧的代码是不是不会动的,而且它不会被擦除。

但是这个时候你只能去调试你非安全测的一个代码,或者是同样经过 Debug Authentication的流程,从close直接回到open的一个状态。这个是产品状态的一个回退。

那这个回退的过程有两种方式,如果不使能TrustZone,那么它是一个基于密码的认证,如果开启了TrustZone这个功能,它将会使用的是数字证书和私钥的方式来完成基于数字证书的一个认证。

6. STM32H5 新的产品生命周期管理机制

Product State 带认证的调试

image-20240312223704056

​ 另外一种是待认证的调试,我们刚才说的是从某一种状态,除了lock以外的某一种状态可以回到open,还有一种是我不做这个产品状态的回退,但是我希望临时开启调试的功能,那么这个时候比如说你在TC-Closed或者是close的状态的话,我们是可以通过Debug Authentication,我们临时恢复调试的一个连接,允许你把Debug端口又恢复,然后你可以连上去去做一些调试。

​ 但是之后只要断电再上电,那么我们刚才使能的调试端口又恢复到了之前已经关闭完全关闭或者半关闭的一个状态。这个是通过Debug Authentication开始,去实现一个带认证的安全调试这样的一个功能,同样的需要做安全调试的时候,不是做产品状态回退,我希望临时打开安全调试。我们默认提供的Debug Authentication的功能的话,是需要在开启Trust-Zone的情况下才支持,这个时候一定是会使用数字证书和挑战应答的方式来完成认证,那么你允许开启的Debug的范围,也是你可以去指定的,比如说我可以说只允许非安全侧的调试,或者是我们允许安全和非安全侧的调试一起调,包括 HTTP level,我们后面会提到我允许调试 HTTP level几的代码,而是所有的flash里面上面的代码都允许调试,还是说比如说我只允许调试 HTTP level3的代码,这个是在我去做Debug时候可以通过配置去进行选择的。

7. STM32H5 Debug Authentication安全调试

image-20240312223719892

关于产品状态以及debug authentication安全调试,这一部分我们会有更详细的内容在第二个部分课程当中去做具体的介绍。

image-20240312223733226

关于Debug authentication,在Wiki页面上的相关的资源。这里列出来了几个链接供大家参考,大家可以点击这个链接去相关的Wiki网页上面去观看详细的内容,既包括特性的介绍,也有 how to start,他会告诉step by step如何去使用这样的一个功能。

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

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

相关文章

Flex最后一行左对齐

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Flex最后一行左对齐</title><style&…

HDFS磁盘写满问题分析

HDFS磁盘写满问题分析 1. 问题说明1.1 namenode常规分配datanode策略1.2 DFS Used很大时是否能够继续写入数据 2 问题修复2.1 集群均衡操作2.2 配置系统预留参数 3. 疑问和思考3.1. 是否需要配置dfs.datanode.du.reserved&#xff1f; 4. 参考文档 探讨hdfs的datanode节点磁盘被…

【vue项目中点击下载】弹窗提示:离开此网站?系统可能不会保存您所做的更改,改为直接下载,不提示此弹窗内容,已解决

项目中用的是window.location.href实现下载 在Web浏览器中&#xff0c;当尝试通过window.location.href重定向到一个文件下载URL时&#xff0c;浏览器通常会显示一个确认对话框&#xff0c;询问用户是否要离开当前页面&#xff0c;因为下载的文件通常是在新窗口或新标签页中打…

【C语言】空心正方形图案

思路&#xff1a; 1&#xff0c;两行两列打印* &#xff1a;第一行和最后一行&#xff0c;第一列和最后一列。 2&#xff0c;其他地方打印空格。 代码如下&#xff1a; #include<stdio.h> int main() { int n 0; int i 0; int j 0; while (scanf("…

avue-crud顶部操作按钮插槽;avue-crud列数据插槽;avue-crud行操作按钮插槽

1.avue-crud顶部操作按钮插槽&#xff1b; <template slot"menuLeft" slot-scope"{ size }"><div class"left"><div class"btn"><el-button type"primary" size"small" click"onBatchR…

彻底学会系列:一、机器学习之梯度下降(1)

1 梯度下降概念 1.1 概念 梯度下降是一种优化算法&#xff0c;用于最小化一个函数的值&#xff0c;特别是用于训练机器学习模型中的参数&#xff0c;其基本思想是通过不断迭代调整参数的值&#xff0c;使得函数值沿着梯度的反方向逐渐减小&#xff0c;直至达到局部或全局最小…

【Linux】一文解决如何在终端查看 python解释器 的位置

【Linux】一文解决如何在终端查看 python解释器 的位置 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望得到您的订阅…

【Liunx-后端开发软件安装】Liunx安装nginx

【Liunx-后端开发软件安装】Liunx安装nginx 使用安装包安装 一、简介 nginx&#xff0c;这个家伙可不是你厨房里的那位大厨&#xff0c;它可是互联网世界的“煎饼果子摊主”。想象一下&#xff0c;在熙熙攘攘的网络大街上&#xff0c;nginx挥舞着它的锅铲——哦不&#xff0c;是…

KVM安装-kvm彻底卸载-docker安装Webvirtmgr

KVM安装和使用 一、安装 检测硬件是否支持KVM需要硬件的支持,使用命令查看硬件是否支持KVM。如果结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的 egrep ‘(vmx|svm)’ /proc/cpuinfo关闭selinux将 /etc/sysconfig/selinux 中的 SELinux=enforcing 修改为 SELinux=d…

python知识点总结(三)

python知识点总结三 1、有一个文件file.txt大小约为10G&#xff0c;但是内存只有4G&#xff0c;如果在只修改get_lines 函数而其他代码保持不变的情况下&#xff0c;应该如何实现? 需要考虑的问题都有那些?2、交换2个变量的值3、回调函数4、Python-遍历列表时删除元素的正确做…

编曲学习:如何编写钢琴织体 Cubase12逻辑预置 需要弄明白的问题

钢琴织体是指演奏形式、方式,同一个和弦进行可以用很多种不同的演奏方法。常用织体有分解和弦,柱式和弦,琶音织体,混合织体。 在编写钢琴织体前,先定好歌曲的调。 Cubase小技巧:把钢琴轨道向上拖动打和弦轨道,就可以显示和弦!如果你有一些参考工程,不知道用了哪些和…

jenkins Pipeline接入mysql

背景&#xff1a; jenkin pipeline进化过程如下&#xff1a; Jenkins Pipeline 脚本优化实践&#xff1a;从繁琐到简洁 >>>>> Jenkins Pipeline脚本优化&#xff1a;为Kubernetes应用部署增加状态检测>>>>>> 使用Jenkins和单个模板部署多个K…

Vue+SpringBoot打造康复中心管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 普通用户模块2.2 护工模块2.3 管理员模块 三、系统展示四、核心代码4.1 查询康复护理4.2 新增康复训练4.3 查询房间4.4 查询来访4.5 新增用药 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的康复中…

电子科技大学链时代工作室招新题C语言部分---题号D

1. 题目 这道题大概的意思就是对一个整形数组的元素进行排序&#xff0c;然后按新的顺序打印原本的下标&#xff1b; 例如&#xff0c;在题目给出的Note部分&#xff0c;{a1, a2, a3, a4, a5}进行排序之后变为了{a2, a1, a4, a3, a5}&#xff0c;于是输出2 1 4 3 5。 排序的规则…

【JavaScript编程实操07】1.查找一个字符串中是否具有某个字符 2.完成数组去重

前言 1、查找一个字符串中是否具有某个字符 代码&#xff1a; 实现效果&#xff1a; 2、完成数组去重 第一种方法 代码&#xff1a; 实现效果&#xff1a; 第二种方法 代码&#xff1a; 实现效果&#xff1a; 总结 前言 本次主要是针对Javascript阶段的字符串和数组…

Python图像处理:3.七种图像分割方法

一、常见图像分割方法 (1)传统算法 阈值分割&#xff08;Thresholding&#xff09;&#xff1a;这是最简单也是应用最广泛的一种分割方法&#xff0c;通过选定一个阈值将图像转换为二值图像&#xff0c;从而分割出目标区域。这种方法适用于图像的前景和背景对比明显的情况。 …

链表中的倒数第k个结点 合并两个链表 分割链表 链表的回文结构

前言 &#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&#x1f32f;C语言进阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f349;本篇简介:>:分析力扣中有关链表的部分题目. 目录 前言一、链表中倒…

【冲击蓝桥篇】动态规划(下):你还在怕动态规划!?进来!答题模板+思路解析+真题实战

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《数据结构与算法&#xff1a;初学者入门指南》&#x1f4d8;&am…

Java项目:60 ssm基于JSP的乡镇自来水收费系统+jsp

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 系统可以提供信息显示和相应服务&#xff0c; 其管理员管理水表&#xff0c;审核用户更换水表的请求&#xff0c;管理用户水费&#xff0c;包括抄表以…

运动想象 (MI) 迁移学习系列 (9) : 数据对齐(EA)

运动想象迁移学习系列:数据对齐&#xff08;EA&#xff09; 0. 引言1. 迁移学习算法流程2. 欧式对齐算法流程3. 与RA算法进行对比4. 实验结果对比5. 总结欢迎来稿 论文地址&#xff1a;https://ieeexplore.ieee.org/abstract/document/8701679 论文题目&#xff1a;Transfer Le…