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

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.mzph.cn/news/748043.shtml

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

相关文章

闪电网络协议设计思想剖析

1. 引言 闪电网络可能是比特币之上部署的最受期待的技术创新。闪电网络,为由 Joseph Poon 和 Tadge Dryja 于2015年首次提出的支付层,承诺支持: 用户之间几乎无限数量的链下交易,几乎免费,同时利用比特币提供的安全性…

IDEA编译安卓源码TVBox(2)

一、项目结构:主要app和player app结构 二、增加遥控器按键选台 修改LivePlayActivity.java 1、声明变量 public String channelId "";public Timer timer new Timer();public Toast mToast;2、定义方法 private void mToastShow(String s){mToast …

微信小程序-webview分享

项目背景 最近有个讨论区项目需要补充分享功能,希望可以支持在微信小程序进行分享,讨论区是基于react的h5项目,在小程序中是使用we-view进行承载的 可行性 目标是在打开web-view的页面进行分享,那就需要涉及h5和小程序的通讯问…

Unity类银河恶魔城学习记录10-10 p98 UI health bar源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili HealthBar_UI.cs using System.Collections; using System.Collections.G…

计算机毕业设计-基于大数据技术下的高校舆情监测与分析

收藏和点赞,您的关注是我创作的动力 文章目录 概要 一、研究背景与意义1.1背景与意义1.2 研究内容 二、舆情监测与分析的关键技术2.1 robot协议对本设计的影响2.2 爬虫2.2.1 工作原理2.2.2 工作流程2.2.3 抓取策略2.3 scrapy架构2.3.1 scrapy:开源爬虫架…

专业无网设备如何远程运维?向日葵远程控制能源场景案例解析

清洁能源领域,拥有庞大的上下游产业链,涉及的相关工业设备门类多、技术覆盖全、行业应用广。在这一领域内,相关专业设备的供应商的核心竞争力除了本身产品的技术能力之外,服务也是重要的一环。 某企业作为致力于节能环保方向的气…

由浅到深认识C语言(7)

该文章Github地址:https://github.com/AntonyCheng/c-notes 在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.csdn…

云仓酒庄东莞分公司2024年日常沙龙:葡萄酒文化与品鉴之旅

原标题:云仓酒庄东莞分公司日常沙龙:葡萄酒文化与品鉴之旅,招商新机遇共融 在东莞这座充满活力的城市,云仓酒庄分公司近日举办了一场别开生面的日常沙龙活动。此次活动以葡萄酒文化与品鉴为主题,旨在让参与者深入体验…

Typecho CMS 反序列化漏洞(CVE-2018-18753)复现

1.环境搭建 项目地址:Release Typecho 1.0(14.10.10) typecho/typecho GitHub 安装: 创建数据库typecho create database typecho; 再进入安装程序,输入数据库密码,设置登录密码即可 直接使用即可 2.漏洞分析 install.php文…

[善用佳软]推荐掌握小工具:Json解析的命令行工具jq

前言: 我们在各种生产环境或者开发测试环境中,一定遇到有很多信息都是使用JSON串或者文本文件作为输入的。在没有JQ命令行工具之前,我们要从中获取真正的输入,大都把它复制到文本里头,然后使用文本编辑器进行加工整理…

PytorchAPI的使用及在GPU的使用和优化

API 调用API:和手动实现的思路是一样的。#1,#2这两个步骤是通用的步骤,相当于建立一个模型,之后你具体的数据直接丢进去就行了。只需要按着这样的样式打代码就行,死的东西,不需要你自己创造。 import torc…

【博士每天一篇文献-综述】Communication dynamics in complex brain networks

阅读时间:2023-11-30 1 介绍 年份:2018 作者:Andrea Avena-Koenigsberger,印第安纳大学心理与脑科学系;Bratislav Misic 蒙特利尔神经学研究所,麦吉尔大学 期刊: Nature reviews neuroscience…

【Linux进阶之路】HTTPS = HTTP + S

文章目录 一、概念铺垫1.Session ID2.明文与密文3.公钥与私钥4.HTTPS结构 二、加密方式1. 对称加密2.非对称加密3.CA证书 总结尾序 一、概念铺垫 1.Session ID Session ID,即会话ID,用于标识客户端与服务端的唯一特定会话的标识符。会话,即客…

基于DataX迁移MySQL到OceanBase集群

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

go和rust使用protobuf通信

先下载protoc 首先下载proc程序以生成代码 https://github.com/protocolbuffers/protobuf/releases 解压,然后把bin目录的位置放到环境变量 测试 rust作为server,rpc使用tonic框架 官方教程 go作为service,使用grpc go语言使用grpc 效…

Xilinx LVDS ISERDESE2

ISERDESE2 7 系列 FPGA 是一款专用的串行到并行转换器,具有特定的时钟和逻辑功能,旨在促进高速源同步应用的实现。该ISERDESE2避免了在FPGA架构中设计解串器时遇到的额外时序复杂性. ISERDESE2功能包括: 1,专用解串器/串行转换器 ISERDESE2解串器可实现高速数据传输,而无需…

FPGA静态时序分析与约束(四)、时序约束

系列文章目录 FPGA静态时序分析与约束(一)、理解亚稳态 FPGA静态时序分析与约束(二)、时序分析 FPGA静态时序分析与约束(三)、读懂vivado时序报告 文章目录 系列文章目录前言一、什么是时序约束&#xff1…

【JavaEE -- 多线程3 - 多线程案例】

多线程案例 1.单例模式1.1 饿汉模式的实现方法1.2 懒汉模式的实现方法 2. 阻塞队列2.1 引入生产消费者模型的意义:2.2 阻塞队列put方法和take方法2.3 实现阻塞队列--重点 3.定时器3.1 定时器的使用3.2 实现定时器 4 线程池4.1 线程池的使用4.2 实现一个简单的线程池…

【XR806开发板试用】基于WEBSOCKET实现人机交互(控制开关灯)以及开发问题记录

一、开发板编译、功能介绍 根据官方文档编译烧录成功后,我们修改下官方例子,进行开发来实现websocket。 整体流程:开发板先自动寻找指定的wifi并且连接,连接成功后,通过websocket来与服务端连接,连接成功后…

【SVG】前端-不依靠第三方包怎么画连线???

如何用SVG实现连线功能 在Web开发中,我们经常会遇到需要在页面上绘制图形或者实现一些图形交互的场景。SVG(Scalable Vector Graphics)作为一种用于描述二维图形的XML标记语言,在这方面提供了极大的便利。本文将以一个具体的例子…