下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

最新资讯
简化任何设备的身份验证云连接。
利用 CoAP 设计节能型云连接 IoT 解决方案。
11.0.0 版 FreeRTOS 内核简介:
FreeRTOS 路线图和代码贡献流程。
使用 FreeRTOS 实现 OPC-UA over TSN。

精选 FreeRTOS IoT 集成
针对使用数字签名外设的 Espressif ESP32-C3 RISC-V MCU

这种精选参考集成为您提供了极大的灵活性,使您可以调整其功能并利用 您的硬件特性。或者,为了简单起见,也可以考虑 ExpressLink 精选集成

 

简介

本页记录的演示项目演示了如何集成模块化 FreeRTOS 软件 和硬件强制安全,帮助创建更安全的云连接应用程序。该项目是预 配置为在 ESP32-C3-DevKitM-1IoT 开发板上运行,该开发板包括 ESP32-C3 微控制器 (MCU)。

ESP32-C3 是具有 Wi-Fi 和蓝牙 5 (LE) 连接功能的单核 RISC-V MCU。它自带 数字签名 (DS) 外设和 HMAC(基于哈希的消息验证码)外设,以增强设备身份安全。

ESP32-C3 的 Secure Boot 有助于确保只在设备上运行受信任的软件,而且 闪存加密可以保护信息。 ESP32-C3 的片外闪存内容被转换为加密形式,如果没有正确转换成原始结构(解密)就无法理解其内容 。

 

已证明的安全最佳实践

 

防止未经授权的软件在设备上运行

确保设备仅使用原始设备制造商 (OEM) 信任的软件启动, 有助于确保设备的安全。Secure Boot 阻止设备运行任何未经授权(如未签名)的代码; 它会检查每个正在启动的软件是否受 OEM 信任。该演示使用 Espressif 的 Secure Boot V2。 ESP32-C3 的 Secure Boot 包含一级引导程序(存储在不可更改的 ROM 中)和二级引导程序 。一级引导程序加载二级引导程序,而二级引导程序又加载应用程序二进制文件。二级引导程序和应用程序二进制文件使用 RSA 私钥 进行签名。使用该私钥对引导程序映像进行签名 可确保映像在签名后不会被篡改,因为如果映像被篡改, 使用对应公钥进行签名验证将会失败。

RSA 私钥必须保密,因为 恶意行为者如果获取该私钥,可以用它来提供未经授权的二进制文件。RSA 私钥生成 并存储在设备外的 OEM 位置(可以是安全构建机器或远程签名服务器),并且 不会被设备访问。对应的公钥存储在附加到 引导程序和应用程序映像的签名块中。公钥的哈希值存储在 eFuse

eFuse 只能编程一次,并提供以不可更改的方式存储信息的方法。ESP32-C3 具有 许多 eFuse 块,OEM 可以使用这些块存储系统和安全参数。每个签名块 除了包含公钥之外,还包含相应映像的签名。eFuse 中的公钥哈希值 用于验证映像签名块中的公钥是否有效。

Secure Boot 包含以下步骤:

  1. 当一级引导程序加载二级引导程序时,它会验证二级引导程序的签名块和映像。映像验证包括,比较嵌入到二级引导程序签名块中的公钥哈希值和存储在 eFuse 中的公钥哈希值,以及使用公钥来验证引导程序映像的签名。如果验证成功,则执行二级引导程序。
  2. 当 二级引导程序加载应用程序映像时,它同样按上述方式验证应用程序的签名 块和映像。如果验证成功,则执行应用程序映像 。请参阅 ESP-IDF 的 Secure Boot V2 编程指南,了解更多信息。
 

确保设备身份和机密信息的安全

确保传输层安全 (TLS) 通信安全要求发送者和接收者通过建立标识来验证身份。设备的唯一私钥及其对应的客户端证书用于识别和验证设备。私钥必须保密,阻止未经授权的访问和通信。ESP32-C3 之所以能够在安全 TLS 通信期间保护设备的身份,是因为 数字签名 (DS) 外设允许在 TLS 连接中采用唯一的 RSA 私钥,同时使其不被 DS 外设以外的软件访问,来实现保密。

为防止私钥曝光,TLS 连接中使用的私钥是经 AES 加密的,并存储在闪存中。而且它只能由 DS 外设读取,如只能由硬件读取。DS 外设使用散列消息认证码 (HMAC) 模块和 eFuse 来生成加密私钥所需的密钥。HMAC 用于密钥派生,反过来它利用选定的 eFuse 块作为输入密钥。eFuse 中的这种密钥是一个随机生成的 256 位数值(在 OEM 的主机系统上生成), 在 OEM 配置 DS 外设操作期间被刻录到选定的 eFuse 块中。请参阅 ESP-IDF 的 DS 外设编程指南以及 DS 技术参考手册 ,了解 DS 外设工作方式的详细描述。

 

通过双向验证保障 TLS 通信的安全

设备与 AWS IoT Core MQTT 代理之间的通信使用 TLS version 1.2 进行加密。请参阅 AWS IoT 传输安全,了解详情。演示使用集成在 ESP32-C3 SoC 上的 DS 外设、加密闪存、HMAC 模块和 eFuse 来存储和使用 X.509 TLS 客户端证书及相关的 RSA 私钥。这些用于使用 coreMQTT 库与 AWS IoT Core MQTT 代理建立 TLS 连接。

 

保障 over-the-air 更新安全 (OTA)

为了能够远程修复安全漏洞和程序故障,演示包括 Over the Air (OTA) 更新。这种更新使用适用于 FreeRTOS 的 AWS IoT OTA 服务,该服务包括 AWS IoT 代码签名。在 OTA 更新之前,必须使用私钥对固件映像进行数字签名,以确保更新来自可靠来源并且未被篡改。私钥生成是 OTA 设置过程的一部分,私钥由 AWS 证书管理器存储,只有 OEM 可以访问。对应的公钥证书用于验证签名的映像,嵌入在设备上运行的应用程序二进制文件中,因此无法更改。

ESP32-C3 上的 OTA 客户端软件使用 AWS IoT OTA 库。当收到等待的 OTA 更新通知时,设备会将新映像下载到 ESP32-C3 的辅助 OTA 闪存分区中。OTA 客户端随后使用公钥证书对整个映像进行代码签名验证以确认作者, 并保证代码在签名后没有被篡改或 损坏。请参阅 ESP-IDF 的 OTA 编程指南,了解详情。

 

此演示使用的库

此演示使用:

“核心”和 "FreeRTOS for AWS" 库符合 LTS 代码质量标准, 其中包括内存安全证明。

 

演示入门

访问 FreeRTOS/iot-reference-esp32c3 GitHub 存储库开始入门 立即体验。源代码示例、功能列表以及有关如何构建和运行演示的说明 都可以在存储库中找到。

Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.