当前位置: 首页 > news >正文

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

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如何去使用这样的一个功能。

相关文章:

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

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

springboot278基于JavaWeb的鲜牛奶订购系统的设计与实现

鲜牛奶订购系统的设计与实现 摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统鲜牛奶订购信息管理难度大&…...

SSH介绍及检测规则思路分析

一、SSH 1、定义 SSH是安全的加密协议,用于远程连接linux服务器。 2、ssh服务的主要功能: 1)提供远程链接服务器的功能; 2)对远程链接传输的数据进行加密 3、ssh与telnet的区别: 服务链接方式 服务数据…...

React核心⼊⻔-lesson1

自学React从入门到精通,从使用到写源码 React⼊⻔ 课堂⽬标资源起步 ⽂件结构⽂件结构⼀览React和ReactDomJSX 使⽤JSX组件 组件的两种形式 class组件function组件组件状态管理 类组件中的状态管理函数组件中的状态管理事件处理组件通信 Props属性传递contextredux⽣命周期 变…...

数据结构(三)——栈

三、栈、队列和数组 3.1 栈 3.1.1 栈的基本概念 线性表是具有相同数据类型的n(n≥0)个数据元素的有限 序列,其中n为表长,当n 0时线 性表是一个空表。若用L命名线性表,则其一般表示为 L (a1, a2, … , ai , ai1, ……...

【Redis知识点总结】(五)——Redis实现分布式锁

Redis知识点总结(五)——Redis实现分布式锁 setnxsetnx expiresetnx expire lua脚本set nx exset nx ex 随机值set nx ex 随机值 lua脚本set ex nx 随机值 lua脚本 锁续期RedissonRedLock 在Redis的众多应用场景中,分布式锁是Redis比…...

CSS 绝对定位 position:absolute

什么是CSS绝对定位absolute定位? 绝对定位absolute定位是CSS中的一种定位方式,可以将元素精确定位到一个确定的点,这与元素在文档流上的自然位置无关。相比起其他定位方式,绝对定位很灵活性,它可以将元素脱离文档流&am…...

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:RelativeContainer)

相对布局组件,用于复杂场景中元素对齐的布局。 说明: 该组件从API Version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 规则说明 容器内子组件区分水平方向,垂直方向: 水平方向为left&…...

Android制作微信添加多个图片,放大图片

1.添加依赖 implementation com.github.bumptech.glide:glide:4.12.0 //裁剪图片等等 implementation androidx.recyclerview:recyclerview:1.1.0 //recycleview依赖 2.使用recycleview <androidx.recyclerview.widget.RecyclerViewandroid:id"id/recyclerView"…...

iOS runtime理解和应用场景

一、runtime的动态性 OC的运行时系统(Runtime System)提供了丰富的动态特性,包括类与对象的创建、消息发送与转发、方法的动态添加与替换、属性的动态合成等。通过使用运行时库提供的API,可以在运行时获取和操作类与对象的信息,实现各种动态性的功能。 我对 Runtime 的理…...

画图实战-Python实现某产品全年销量数据多种样式可视化

画图实战-Python实现某产品全年销量数据多种样式可视化 学习心得Matplotlib说明什么是Matplotlib&#xff1f;Matplotlib特性Matplotlib安装 产品订单量-折线图某产品全年订单量数据数据提取和分析绘制折线图 产品订单&销售额-条形图某产品全年订单&销售额数据绘制条形…...

YOLOv9详解

1.概述 在逐层进行特征提取和空间转换的过程中&#xff0c;会损失大量信息&#xff0c;例如图中的马在建模过程中逐渐变得模糊&#xff0c;从而影响到最终的性能。YOLOv9尝试使用可编程梯度信息PGI解决这一问题。 具体来说&#xff0c; PGI包含三个部分&#xff0c;&#xff0…...

CRON 定时任务

检测是否安装了 cron systemctl status crond 如果没有安装使用 sudo yum install cronie 编辑 crontab -e * * * * * php /path/your.php Esc键 然后输入 :q 退出 :wq 保存并退出 第一个 * 表示分钟&#xff0c;表示每分钟执行一次。第二个 * 表示小时&#xff0c;表示每…...

环境安装篇 之 Kind 搭建 kubernetes 测试集群

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 环境安装 系列文章&#xff0c;介绍 使用Kind工具 快速安装 kubernetes 测试集群的详细步骤 1.Kind简介 Kind 是一个使用 Docker 容器“节点”运行本地 Kubernetes 集群的工具。Kind 主要用于测试kubernetes本…...

每日五道java面试题之mybatis篇(四)

目录&#xff1a; 第一题. 映射器#{}和${}的区别第二题. 模糊查询like语句该怎么写?第三题. 在mapper中如何传递多个参数?第四题. Mybatis如何执行批量操作第五题 MyBatis框架适用场景 第一题. 映射器#{}和${}的区别 #{}是占位符&#xff0c;预编译处理&#xff1b;${}是拼接…...

camunda流程引擎的插件如何使用

camunda工作流引擎是一个开放的架构&#xff0c;除了流程引擎默认提供的功能外&#xff0c;开发者可以通过流程插件机制&#xff0c;对流程引擎功能进行扩展。即流程引擎插件是流程引擎配置的扩展。插件必须提供 ProcessEnginePlugin 接口的实现。 下面以全局任务事件监听器为…...

Vue打包问题汇总:legacy、runtime.js

问题一&#xff1a;Vue3.x的版本中build后dist文件中出现legacy的js文件 解决办法是添加兼容的浏览器 package.json "browserslist": ["> 1%","last 2 versions","not dead","not ie 11" ]参考 Vue3.x的版本中build后…...

挑战杯 车位识别车道线检测 - python opencv

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习 机器视觉 车位识别车道线检测 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满分5分) …...

c++面经

1. 僵尸进程 僵尸进程&#xff08;Zombie Process&#xff09;在操作系统中指的是那些已经执行完毕&#xff0c;但其父进程尚未对其进行善后处理&#xff08;例如读取子进程的状态信息或者执行回收资源的操作&#xff09;的进程。在Unix和类Unix系统&#xff0…...

js中副作用的消除还解决了并行计算带来的竞争问题,具体是如何解决的

在JavaScript中&#xff0c;副作用是指对外部环境产生的可观察的变化&#xff0c;例如修改全局变量、修改DOM元素等。副作用的存在可能导致代码的可维护性和可测试性下降&#xff0c;并且在并行计算中可能引发竞争问题。 不纯的函数有可能访问同一块资源&#xff0c;如果先后调…...

3/14/24数据结构、线性表

目录 数据结构 数据结构三要素 逻辑结构 存储结构 数据运算 时间复杂度 空间复杂度 线性表 线性表定义 静态分配 动态分配 线性表插入 线性表删除 十天的时间学完了C语言督学课程&#xff0c;最后终于是可以投入到408的科目学习当中。关于数据结构和算法的学习很多部…...

软件测试面试200问,面试看这就够了。。。

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 Part1 1、你的测试职业发展是什么&#xff1f; 测试经验越多&#xff0c;测试能力越高。所以我…...

力扣● 583. 两个字符串的删除操作 ● 72. 编辑距离 ● 编辑距离总结篇

● 583. 两个字符串的删除操作 注意审题&#xff1a; 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以删除任意一个字符串中的一个字符。 删除最少的字符使两者相同&#xff0c;说明留下来的就是最大公共子序列。不要求…...

Git速成

文章目录 Git 分布式版本控制工具课程内容1. 前言1.1 什么是Git1.2 使用Git能做什么 2. Git概述2.1 Git简介2.2 Git下载与安装 3. Git代码托管服务3.1 常用的Git代码托管服务3.2 码云代码托管服务3.2.1 注册码云账号3.2.2 登录码云3.2.3 创建远程仓库3.2.4 邀请其他用户成为仓库…...

一文看懂softmax loss

文章目录 softmax loss1.softmax函数2.交叉熵损失函数3.softmax loss损失函数&#xff08;重点&#xff09;4.带有temperature参数的softmax loss参考 softmax loss 1.softmax函数 softmax函数是一种常用的激活函数&#xff0c;通常用于多分类任务中。给定一个向量&#xff0…...

用C语言链表实现图书管理

#include <stdio.h> #include <stdlib.h> #include <string.h> struct ListNode {int val;//编号char title[50];//书名float price;//价格struct ListNode* next; };// 在尾部插入节点 struct ListNode* insertAtTail(struct ListNode* head, int val,char …...

Hello,Spider!入门第一个爬虫程序

在各大编程语言中&#xff0c;初学者要学会编写的第一个简单程序一般就是“Hello, World!”&#xff0c;即通过程序来在屏幕上输出一行“Hello, World!”这样的文字&#xff0c;在Python中&#xff0c;只需一行代码就可以做到。我们把这第一个爬虫就称之为“HelloSpider”&…...

AI实景无人自动直播间怎么搭建?三步教你轻松使用

最近很多朋友看到AI自动直播带货玩法&#xff0c;也想开启自己的自动直播间&#xff0c;但还是有些问题比较担心&#xff0c;这种自动讲解、自动回复做带货的直播间是不是很麻烦&#xff1f; 实景无人自动直播 ​ 实际上这种直播间搭建相当简单便捷&#xff01;今天跟着笔者&…...

wechaty微信机器人,当机器人被@时做出响应

https://wechaty.js.org/zh/docs/api/message?_highlightmessage if (await msg.mentionSelf()) {console.log(this message were mentioned me! [You were mentioned] tip ([有人我]的提示))await room.say(不要微信机器人)} 我开发的人工智能学习网站&#xff1a; https://…...

8.6 Springboot项目实战 Spring Cache注解方式使用Redis

文章目录 前言一、配置Spring Cache1. @EnableCaching2. 配置CacheManager3. application.properties配置二、使用注解缓存数据1. 使用**@Cacheable** 改造查询代码2. 使用**@CacheEvict** 改造更新代码前言 在上文中我们使用Redis缓存热点数据时,使用的是手写代码的方式,这…...

南京网站房地产/国外搜索引擎入口

有些人说&#xff0c;我零基础&#xff0c;应该怎么学习&#xff1f;经过大半年的更新&#xff0c;大家细看里面的教程&#xff0c;基本都可以找到答案这里汇总了一份视频跟图文的教程&#xff0c;定期更新&#xff0c;所以大家收藏好学摄影&#xff0c;找的是合适的老师&#…...

java 网站开发实例/自动点击器软件

作者/Simba IBM资深商业分析师。 IT老兵。 终生学习者。 欢迎回来&#xff0c;本篇从一个基本概念——留存谈起。面试的时候“留存”也是大概率会被问到的一个问题&#xff0c;如果想确认自己的回答怎么样&#xff0c;我们一起探讨一下。本文约4000字&#xff0c;读完需要10…...

discuz 科技网站模板/手机网站模板下载

简介:KubeSphere是一个灵活的轻量级容器PaaS平台&#xff0c;通过了CNCF一致性认证&#xff0c;100%开源&#xff0c;由社区驱动与开发。KubeSphere可以部署并运行在任何基础架构以及所有版本兼容的Kubernetes集群之上&#xff0c;包括虚拟机、物理机、数据中心、公有云和混合云…...

做网站合同/搜索引擎排名2021

一、web push 使用动机与原理简述 相较于移动端本地应用&#xff0c;web站点常常缺少一项常用的功能&#xff1a;推送通知。此处的推送通知一般指由浏览器实现的消息推送&#xff0c;换个说法&#xff0c;就是用户在打开浏览器时&#xff0c;不需要进入特定的网站&#xff0c;就…...

主题资源网站建设 模块五作业/小程序开发模板

一、倒计时CountDownLatchCountDownLatch是一个非常实用的多线程控制工具类&#xff0c;称之为“倒计时器”&#xff0c;它允许一个或多个线程一直等待&#xff0c;直到其他线程的操作执行完后再执行。举了例子&#xff1a;我们知道的集齐七颗龙珠就可以召唤神龙&#xff0c;那…...

web服务器做网站/网络营销的作用和意义

今天遇到了一个叫人比较头疼的问题&#xff0c;早在一个月前公司拉来一台服务器&#xff0c;闲着没事我给装成了Esxi的虚拟机系统了&#xff0c;时间过久忘了当时设定的密码为何&#xff1f;故而翻了许久的资料&#xff0c;终于找好的方向&#xff0c;准备重置系统密码。准备搞…...