基于 ESP32-H2 构建高性价比的安全物联网设备

news2025/1/13 13:33:00

如今,人们对网联设备安全性的认识和关注不断增加。在欧盟《网络弹性法案》也即将生效的,为网联设备增加硬件层面的安全功能非常重要。 

乐鑫 ESP32-H2 致力于为所有开发者提供高性价比的安全解决方案,这款芯片经过专门设计以集成多种安全功能,主要分为以下几大类: 

  • 安全启动 (Secure Boot) 
  • Flash 加密 (Flash Encryption)
  • 保护调试接口 (Protecting Debug Interfaces) 
  • 安全存储 (Secure Storage)
  • 内存保护 (Memory Protection)
  • 设备身份保护 (Device Identity Protection)

以上安全功能基于 ESP32-H2 内置的多个硬件加速器和相应的软件流程得以实现,下面我们将进行介绍。 


安全启动 (Secure Boot)

安全启动 (Secure Boot) 功能通过检查芯片启动时运行的每一段代码,确保其具有正确的签名,并以此保护芯片不会运行任何未经授权(即未签名)代码。例如,ESP32-H2 的安全启动功能会对所有二级引导加载程序及全部应用程序代码进行检查。注意,由于一级引导加载程序为不可更改的 ROM 代码,并不需要签名。 

安全启动工作流程

ESP32-H2 安全启动功能的主要工作流程如下: 

1.在加载二级引导加载程序时,一级引导加载程序会验证二级引导加载程序的 RSA-PSS 或 ECDSA 签名。如验证成功,则将执行二级引导加载程序。 

2.在加载特定的应用程序代码时,二级引导加载程序会验证该应用程序的 RSA-PSS 或 ECDSA 签名。如验证成功,则将执行应用程序代码。 

ESP32-H2 支持用户选择使用基于 RSA-PSS 或 ECDSA 的安全启动验证机制。对比来说,ECDSA 的安全强度与 RSA 相当,但使用的密钥长度较短。按照目前的估计,如果使用 P-256 曲线的 ECDSA 机制,其安全性相当于使用 3072 位的 RSA 密钥。不过,与 RSA 签名验证相比,ECDSA 在验证签名时,需要更多的时间。 

签名验证时间对比

RSA-PSS 或 ECDSA 的公钥存储在芯片的 eFuse 中,而对应的私钥则保存在一个芯片永远无法访问的位置。在芯片的生产制造过程中,我们最多可以生成并在 eFuse 中存储三个公钥。此外,ESP32-H2 还支持用户永久撤销其中某个公钥。 

Flash 加密 (Flash Encryption)

Flash 加密是对 ESP32-H2 的封装外 flash 中的内容进行加密。一旦启用该功能,固件将以明文形式烧录至 flash 中,并在首次启动时进行加密。因此,用户即使通过物理手段读取 flash,但大部分内容不会被恢复,从而保证安全。

当启用 Flash 加密时,所有对 Flash 的内存映射读访问都会在运行时进行透明解密。ESP32-H2 使用 XTS-AES 块密码模式,密钥长度为 256 位,用于 Flash 加密。Flash 控制器使用存储在 eFuse 中的密钥来执行解密操作。同样地,任何内存映射的写操作会在写入 Flash 之前将相应数据透明加密。 

在开发阶段,开发人员经常需要向 Flash 烧录各种明文形式的固件,并测试 Flash 加密过程,也就是说,此时必须允许芯片在“固件下载”模式不限次数地加载明文形式的固件。然而,在制造或生产阶段,出于安全原因,不应允许“固件下载”模式访问 Flash 内容。因此,我们专门针对这两种不同场景提供 Flash 加密配置。 

在“开发”模式下,芯片仍可以将新的明文固件烧录至 Flash,接着通过“UART DL”模式下载的 stub 代码可以利用存储在硬件中的密钥,对该固件进行透明加密,相当于间接允许芯片读取 Flash 中固件的明文内容。在“发布”模式下,如果不知道加密密钥,则不能向 Flash 烧录明文固件。正因如此,Flash 加密功能仅应在“发布”模式下使用。 

OTP 存储器:eFuse 

eFuse 在保证芯片整体安全方面发挥十分重要的作用,相当于在芯片中增加了安全存储空间,并且可以封掉一些现场部署设备中可能存在的后门。 

eFuse 是一种一次性可编程 (OTP) 存储器,一旦从 0 编程为 1,就无法再改回 0。eFuse 在芯片的安全功能中发挥着重要作用,主要用于存储用户数据和硬件参数,包括硬件模块的控制参数、校准参数、MAC地址以及加密和解密模块使用的密钥。 

ESP32-H2 拥有一个 4096 位的 eFuse 存储器,其中 1792 位保留给客户应用程序使用。通过配置,让只有被允许的硬件外设才能读取和使用存储在 eFuse 中密钥,而其他任何正在运行的软件都无法读取这些密钥。eFuse 还可用于禁用 USB 调试和 JTAG 调试。 

内存保护 (Memory Protection)

ESP32-H2的权限管理可以分为两个部分:PMP(物理内存保护)和APM(访问权限管理)。 

访问权限检查工作流程

PMP 管理 CPU 对所有地址空间的访问。APM 则不管理 CPU 对 ROM 和 SRAM 的访问。CPU 如果需要访问 ROM 和高速 SRAM,只需要 PMP 权限;如果需要访问其他地址空间,则需要先通过 PMP 权限检查,然后再通过 APM 权限检查。如果 PMP 检查失败,则不会继续检查 APM 权限。 

APM 模块包含两个部分:TEE(可信执行环境)控制器和 APM 控制器。 

  • TEE 控制器负责配置 ESP32-H2 中特定主设备访问内存或外设寄存器时的四种安全模式。当 RISC-V CPU 处于机器模式时,安全模式设置为可信任 (TEE) 模式。当 RISC-V CPU 处于用户模式时,则可根据寄存器配置,将安全模式设置为 3 个 REE 中的任意一种。 
  • APM 控制器负责在访问内存和外设寄存器时管理主设备的权限(读取/写入/执行)。通过将预配置的地址范围和相应的访问权限与总线上携带的信息(如主设备 ID、安全模式、访问地址、访问权限等)进行比较,APM 控制器可以判断允许或阻止访问。所有空间(包括内部存储器、外部存储器和外设空间)可以细分为 16 个权限地址区域,分别针对各个细分区域定义不同的访问权限。 

当发生非法访问时(如启用),芯片会生成一个中断,并记录非法访问的详细信息。APM 控制器将记录相关信息,包括每条访问路径的主设备 ID、安全模式、访问地址、非法访问原因(地址越界或权限限制)以及权限管理结果。 

设备身份保护 (Device Identity Protection)

数字签名 (DS) 外设是 ESP32-H2 中包含的一项安全功能,比起乐鑫芯片中以往的版本有所增强,可在不需要软件访问私钥的情况下,生成硬件加速的数字签名,从而保证芯片上的私钥不会受到任何非法访问。详情可了解我们之前发布的博客。 

数字签名外设支持制造商针对每个设备,生成唯一的对称加密密钥,并使用相同的加密密钥加密设备私钥。在设备运行时,该外设允许应用程序使用该加密设备的私钥执行签名操作,而软件无法访问明文私钥。 

数字签名外设使用预先通过 HAMC 密钥衍生函数加密的参数来计算签名。反之,HMAC 则使用 eFuse 作为输入密钥。整个过程均由硬件完成,因此在计算签名时,软件无法访问解密密钥或 HMAC 密钥衍生函数的输入密钥。 

ECDSA 加速器 (ECDSA Accelerator)

ESP32-H2 同时支持基于 ECDSA 或 RSA 的私钥,这在与 Matter 相关的场景中尤为重要。Matter 安全模型基于公钥基础设施 (PKI),是一种互联网上广泛采用的密码机制,使用采用 P-256 曲线的 ECC 算法进行数字签名和密钥交换,所以基于 ECDSA 的签名在证书交换中必不可少。

椭圆曲线数字签名算法 (ECDSA) 是一种较复杂的公钥加密算法。密钥是通过椭圆曲线密码学生成的,其长度比数字签名算法生成的密钥整体较短。ECDSA 的重要优势在于使用较短的密钥,仍能实现与其他数字签名算法相同级别的安全性,从而降低如密钥存储和交换等过程的实现成本。 

加解密加速器 (Cryptographic Accelerators)

ESP32-H2 内置丰富的加解密加速器,可以代替 CPU 处理上述安全功能,以及其他常见应用场景中的加解密需求。ESP32-H2 保留了 ESP32 系列中常见的加速器,包括: 

  • AES-128/256:ESP32-H2 集成了一个 AES 加速器,支持 FIPS PUB 197 中规定的 AES-128/AES-256 加密和解密标准,可用于防止 DPA 攻击。该外设还支持 NIST SP 800-38A 中的块加密模式,包括 ECB、CBC、OFB、CTR、CFB8 和 CFB128。
  • SHA 加速器:ESP32-H2 集成了一个 SHA 硬件加速器,支持 FIPS PUB 180-4 中引入的 SHA-1、SHA-224 和 SHA-256 标准。SHA 加速器的应用非常广泛,所有采用 SSL/TLS 连接标准的数字签名和证书,以及数字签名外设本身都需要使用 SHA 加速器。 
  • RSA加速器:RSA 算法是一种基于公钥密码学的公钥签名算法。ESP32-H2 的 RSA 加速器从硬件上支持各种 RSA 非对称密码算法中的高精度计算需求,极大程度缩短运行时间并降低软件复杂度。RSA 加速器还支持不同长度的运算子,为计算提供更大的灵活性。 
  • HMAC 加速器:如 RFC 2104 中所述,HMAC(基于哈希的消息认证码)外设可从硬件层面加速 SHA256-HMAC。如上文介绍,256 位的 HMAC 密钥存储在芯片的一个 eFuse 密钥块中,可以设置为“只读”保护。HMAC 则使用预共享的密钥,保证消息的真实性和完整性。
  • ECC加速器:椭圆曲线密码学 (ECC) 是一种基于椭圆曲线代数结构的公钥密码学方法。相比于 RSA 加速器,ECC 算法可使用较短的密钥,提供与 RSA 同等水平的安全性。

ESP32-H2 的 ECC 加速器可以基于 FIPS 186-3 中定义的 P-192 和 P-256 椭圆曲线完成各种计算,从而加速 ECC 算法及 ECC 衍生算法的计算。ESP32-H2 的 ECC 加速器支持多达 11 种工作模式。 

ESP32-H2 的上述安全特性支持开发者在丰富场景下基于 ESP32-H2 产品开发高性价比的安全连接设备若您对此感兴趣或有其他任何问题,欢迎随时联系我们。 


相关资源链接

  • ESP-IDF 安全指南
  • 安全启动 V2 指南
  • Flash 加密指南
  • 设备身份保护指南
  • eFuse 管理器指南

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

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

相关文章

【java】java访问https并验证账号密码

java访问https,获取页面或者数据时,需要证书和账号密码的验证。 一 获取CRT证书 获取网站的证书,拿到证书后可能是crt格式,可以使用下面的命令转为p12格式 openssl pkcs12 -export -in Mycert.crt -inkey Mykey.key -out Mycer…

0基础学习VR全景平台篇第35篇:场景功能-细节

本期为大家带来蛙色VR平台,场景管理—细节功能操作。 功能位置示意 一、本功能将用在哪里? 细节功能,用于展示VR漫游作、大像素、高清矩阵作品中细微不容易发现,但却又比较有亮点或者能起到关键作用的画面。 通过在全景图中添加…

javaWeb ssh课程资源网站myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh课程资源网站系统是一套完善的web设计系统(系统采用ssh框架进行设计开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用 B/S模式开发。开发环境为TOMCAT7.…

字节的测试面试题,你觉得很难吗?不是有手就行....

年前的时候,我的一个粉丝跟我说,他在面试美团的自动化测试岗的时候,不幸挂掉了。 越想越可惜,回想面试经过,好好总结了几个点,发现面试没过的主要原因是在几个关键的问题没有给到面试官想要的答案 字节的…

6-HEX, SE,引物荧光标记试剂,胺反应性琥珀酰亚胺酯,广泛用于nucleic acid测序和相关研究

6-HEX, SE | 6-HEX,SE [6-羧基-2,4,4,5,7,7-六氯荧光素,琥珀酰亚胺酯] |CAS:N/A | 纯度:95% (文章资料汇总来源于:陕西新研博美生物科技有限公司小编MISSwu)​ 结构…

Android Cannot resolve symbol 找不到资源解决方案

一、介绍 在android开发中,我们经常会发现依赖了系统提供的库,但是无法引用,或者找不到, Cannot resolve symbol style/Theme.AppCompat.NoActionBar ,报红。这些最经典的无法加载。 出现这个原因并不是你项目的原因&…

手把手教你如何正确永久使用Microsoft Office365?

office2019和office 365有什么区别的呢?为什么越来越多的人更加钟爱office365。简单来说office 2019的零售版本属于一次售出永久使用,价格上比较贵,而且功能上也不会再有更新。而office 365是一种基于云的订阅服务,我们花钱买的是…

Datax同步MySQL到ES

Datax同步MySQL到ES 1、在MySQL中建表2、在ES建立索引3、构建从MySQL到ES的Datax的Json任务4、运行mysql2es.json脚本以下是工作中做过的ETL,如有需要,可以私信沟通交流,互相学习,一起进步 1、在MySQL中建表 建表语句 CREATE TABL…

如何在Flutter 中启用空安全

目录 Step 1: 开启空安全设置 Step 2:检查可升级的三方库 Step 3:升级三方库 Step 4:代码适配支持空安全 Step 1: 开启空安全设置 Flutter 2默认启用了空安全,所以通过Flutter 2创建的项目是已经开启了空安全的检查的,不知道自己是什么版本的可以通…

【MCS-51单片机汇编语言】期末复习总结①——常见指令汇总(题型一)

文章目录 七大寻址方式重要指令转移堆栈加减乘除位操作跳转条件转移子程序常考题型 七大寻址方式 立即寻址:通过一个立即数来指定存储单元的地址,例如#41H;寄存器寻址:Rn(n0~7),A,B&#xff0c…

自学软件测试,一般人我劝你还是算了吧

软件测试自学是完全可以的,但是这句话并不代表人人都可以自学。 想转行软件测试,纯自学会遇到以下8个问题: 1、自学需要很高的自律性,你能做到吗? 2、自学在学习过程中会碰到很多困难,你都能解决吗&#xf…

直播入门手册

直播除了带货,现在越来越成了分享知识,增近主播和粉近距离互动的平台。最近看到抖音上越来越多的主播进行编程经验的分享,这是一个很好的传播知识的方式,以前我们学习编程技术一般看视频,其实视频的互动性没有直播那么…

智能家居数据分析:语音交互为用户偏好模式,使用最高达72%

哈喽大家好,近些年来,智能家居行业的发展无比迅速,同时,最近两年来人工智能技术的不断突破,对智能家居有着无与伦比的推动力。本期将为大家介绍下智能家居的行业形势。 通过数据可视化平台把报表数据处理后展示出来的…

(4)NUC980 RootFs

Buildroot是一个开源的嵌入式Linux系统构建工具,它可以帮助用户自动化构建Linux系统的各个部分,包括Linux内核、库、文件系统、应用程序等。通过Buildroot,用户可以根据需要选择和配置所需的软件包,从而构建一个定制化的Linux系统…

Nginx网站服务——编译安装及系统服务添加

Nginx网站服务——编译安装及系统服务添加 一、Nginx的相关知识1.Nginx的简介2. Apache与Nginx的区别3.Apache的优势4.Nginx的优势 二、Nginx编译安装1.关闭防火墙,将安装nginx所需软件包传到/opt目录下2.安装相关的依赖包3.创建运行用户、组4.编译安装Nginx5.检查、…

【Rust学习】web框架 Axum,提供REST API

cargo-watch:有修改就重启服务器,类似java web的热部署 安装:cargo install cargo-watch 使用:cargo watch -x run 这样每次有修改就会自动重启web服务 vscode插件Thunder Client(类似postman) hello,world 建议用cargo add的方式添加 […

视频压缩存储解决方案

一、背景介绍 随着视频技术的不断发展,人们对视频质量和存储需求的要求也越来越高。而视频文件的大小往往会给存储和传输带来诸多困扰。因此,如何有效地压缩视频文件成为了一个非常重要的问题。 二、压缩算法简介 有损压缩:通过去除视频中的…

SpringBoot3整合SpringSecurity,实现自定义接口权限过滤

接口权限过滤是指对于某些接口或功能,系统通过设定一定的权限规则,只允许经过身份认证且拥有相应权限的用户或应用程序进行访问和操作。这种技术可以有效地保护系统资源和数据安全,防止未授权的用户或程序进行恶意操作或非法访问。通常情况下…

广州华锐互动:智能虚拟人运用到短视频行业能带来哪些价值?

随着科学技术的不断发展,虚拟数字人呈现飞跃式发展,各式各样的虚拟数字人进入到我们的视野,而同样作为新风口的短视频行业,也成为了人们日常生活中不可或缺的一部分。那么,将这两者结合起来会带来哪些变化呢&#xff1…

C#开发串口调试助手实现modbusRTU通信

今天给大家搞个项目,跟我来,走过路过不要错过,看大V如何玩C#工业软件开发,搞事的目的是:掌握MODBUSRTU通信协议,掌握简单型串口调试助手开发,掌握串口通信过程 硬件产品:串口RS232温…