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

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

乐鑫 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 产品开发高性价比的安全连接设备若您对此感兴趣或有其他任何问题,欢迎随时联系我们。 


相关资源链接

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>