ESP-IDF 例程——加密
18. security 目录
18.1 flash_encryption
| 字段 | 描述 |
|---|---|
| 例程名称 | Flash 加密示例 |
| 所在文件夹路径 | examples\security\flash_encryption |
| 核心功能说明 | 演示如何在开发和发布模式下启用和使用 Flash 加密,包括检查 Flash 加密状态、读写加密分区、初始化加密和非加密 FATFS 和 NVS 分区 |
| 主要调用的内部/外部函数或模块 | - Flash 加密 API |
- NVS 加密 API
- FATFS 组件
- 支持多种 ESP32 芯片 |
| 输入输出参数说明 | 配置参数: - Flash 加密模式(开发或发布)
- 分区表配置
- 加密密钥设置
输出结果:
- Flash 加密状态检查结果
- eFuse 状态信息
- 加密分区读写结果
- FATFS 和 NVS 初始化状态
- 加密数据操作结果 |
| 适用场景及典型应用案例 | - 保护敏感数据不被物理读取 - 物联网设备的固件保护
- 工业设备的安全存储
- 金融设备的数据加密
- 医疗设备的隐私保护 |
18.2 hmac_soft_jtag
| 字段 | 描述 |
|---|---|
| 例程名称 | HMAC 软 JTAG 示例 |
| 所在文件夹路径 | examples\security\hmac_soft_jtag |
| 核心功能说明 | 演示如何使用 HMAC 外设安全地重新启用软件禁用的 JTAG 接口,实现设备的 Return Material Access (RMA) 功能 |
| 主要调用的内部/外部函数或模块 | - HMAC 外设 API |
- JTAG 控制 API
- console 组件(命令行界面)
- 支持多种 ESP32 芯片 |
| 输入输出参数说明 | 配置参数: - HMAC 密钥生成
- 令牌数据生成
- JTAG 重新启用命令
输出结果:
- JTAG 状态信息
- HMAC 密钥生成结果
- 令牌生成结果
- JTAG 重新启用状态 |
| 适用场景及典型应用案例 | - 设备的 RMA(退货授权)流程 - 安全调试和维护
- 工业设备的远程调试
- 智能设备的售后支持 |
18.3 nvs_encryption_hmac
| 字段 | 描述 |
|---|---|
| 例程名称 | NVS 加密 HMAC 示例 |
| 所在文件夹路径 | examples\security\nvs_encryption_hmac |
| 核心功能说明 | 演示如何使用基于 HMAC 的加密密钥保护方案进行 NVS 加密,密钥从 eFuse 存储的 HMAC 密钥派生,无需单独的 nvs_keys 分区 |
| 主要调用的内部/外部函数或模块 | - NVS 加密 API |
- HMAC 外设 API
- eFuse API
- 支持多种 ESP32 芯片 |
| 输入输出参数说明 | 配置参数: - HMAC 密钥生成
- eFuse 密钥烧录
- NVS 加密方案启用
输出结果:
- HMAC 密钥生成结果
- eFuse 烧录状态
- NVS 加密初始化状态
- NVS 读写操作结果 |
| 适用场景及典型应用案例 | - 物联网设备的配置存储 - 敏感配置数据的保护
- 设备凭证的安全存储
- 加密密钥的管理 |
18.4 security_features_app
| 字段 | 描述 |
|---|---|
| 例程名称 | 安全功能应用示例 |
| 所在文件夹路径 | examples\security\security_features_app |
| 核心功能说明 | 演示如何同时启用多种安全功能,包括 Secure Boot V2、Flash Encryption、HMAC-based NVS Encryption 和 Secure JTAG Return Material Access |
| 主要调用的内部/外部函数或模块 | - Secure Boot V2 API |
- Flash 加密 API
- NVS 加密 API
- HMAC 外设 API
- JTAG 控制 API
- 支持 ESP32-C3 和 ESP32-S3 芯片 |
| 输入输出参数说明 | 配置参数: - Secure Boot V2 密钥生成和烧录
- Flash 加密启用
- NVS 加密配置
- Secure JTAG 配置
输出结果:
- 安全功能启用状态
- eFuse 烧录结果
- Flash 加密状态
- NVS 加密初始化状态
- JTAG 状态信息 |
| 适用场景及典型应用案例 | - 生产环境中的设备安全配置 - 高安全性要求的物联网设备
- 企业级设备的安全部署
- 批量设备的安全配置 |
18.5 tee (Trusted Execution Environment)
18.5.1 tee_basic
| 字段 | 描述 |
|---|---|
| 例程名称 | TEE 基础示例 |
| 所在文件夹路径 | examples\security\tee\tee_basic |
| 核心功能说明 | 演示如何使用 ESP-TEE 框架在可信执行环境中执行安全服务,包括 AES 加密/解密操作 |
| 主要调用的内部/外部函数或模块 | - ESP-TEE 框架 |
- AES 加密 API
- 安全服务组件
- 支持多种 ESP32 芯片 |
| 输入输出参数说明 | 配置参数: - TEE 安全服务注册
- 加密/解密操作配置
输出结果:
- TEE 初始化状态
- 安全服务注册结果
- 加密/解密操作结果 |
| 适用场景及典型应用案例 | - 敏感数据的加密/解密 - 安全密钥管理
- 数字签名生成和验证
- 安全认证 |
18.5.2 tee_attestation
| 字段 | 描述 |
|---|---|
| 例程名称 | TEE 证明示例 |
| 所在文件夹路径 | examples\security\tee\tee_attestation |
| 核心功能说明 | 演示如何使用 ESP-TEE 框架生成实体证明令牌,用于设备身份验证和完整性验证 |
| 主要调用的内部/外部函数或模块 | - ESP-TEE 框架 |
- 证明令牌生成 API
- 加密密钥管理
- 支持多种 ESP32 芯片 |
| 输入输出参数说明 | 配置参数: - 证明密钥生成
- 设备身份信息配置
输出结果:
- TEE 初始化状态
- 证明令牌生成结果
- 设备身份验证状态 |
| 适用场景及典型应用案例 | - 设备身份验证 - 固件完整性验证
- 安全启动流程
- 物联网设备的可信连接 |
18.5.3 tee_secure_ota
| 字段 | 描述 |
|---|---|
| 例程名称 | TEE 安全 OTA 示例 |
| 所在文件夹路径 | examples\security\tee\tee_secure_ota |
| 核心功能说明 | 演示如何使用 ESP-TEE 框架进行安全 OTA 更新,确保固件更新的安全性和完整性 |
| 主要调用的内部/外部函数或模块 | - ESP-TEE 框架 |
- OTA 服务 API
- HTTPS 客户端
- 固件签名验证
- 支持多种 ESP32 芯片 |
| 输入输出参数说明 | 配置参数: - OTA 服务器配置
- 固件签名验证配置
- 安全更新策略
输出结果:
- TEE 初始化状态
- OTA 连接状态
- 固件下载进度
- 固件验证结果
- 更新结果 |
| 适用场景及典型应用案例 | - 安全固件更新 - 设备远程管理
- 漏洞修复
- 功能升级 |
18.5.4 tee_secure_storage
| 字段 | 描述 |
|---|---|
| 例程名称 | TEE 安全存储示例 |
| 所在文件夹路径 | examples\security\tee\tee_secure_storage |
| 核心功能说明 | 演示如何使用 ESP-TEE 框架提供的安全存储功能,实现数据的加密存储和签名保护 |
| 主要调用的内部/外部函数或模块 | - ESP-TEE 框架 |
- 安全存储 API
- 加密和签名 API
- 支持多种 ESP32 芯片 |
| 输入输出参数说明 | 配置参数: - 安全存储区域配置
- 数据加密策略
- 签名验证配置
输出结果:
- TEE 初始化状态
- 安全存储初始化状态
- 数据读写操作结果
- 签名验证结果 |
| 适用场景及典型应用案例 | - 敏感数据的安全存储 - 密钥和凭证管理
- 配置数据的完整性保护
- 审计日志的不可篡改存储 |
18.6 技术要点
安全启动:
- 支持 Secure Boot V2
- 多签名密钥支持
- 固件完整性验证
- 防回滚保护
Flash 加密:
- 支持开发和发布模式
- AES-XTS 加密算法
- 分区级加密控制
- 加密密钥管理
NVS 加密:
- 基于 HMAC 的密钥派生
- 无需单独的密钥分区
- 透明的加密/解密操作
- 支持多个加密 NVS 分区
JTAG 安全:
- 软件禁用 JTAG
- HMAC 认证重新启用
- RMA 流程支持
- 调试权限管理
TEE 功能:
- 隔离的可信执行环境
- 安全服务注册
- 加密操作保护
- 安全存储
- 远程证明
- 安全 OTA
18.7 构建与运行
- 设置目标芯片:
idf.py set-target <chip_name> - 配置项目:
idf.py menuconfig - 选择安全功能配置
- 构建项目:
idf.py build - 烧录并监控:
idf.py -p PORT flash monitor - 运行测试或使用命令行工具进行验证
18.8 应用场景总结
- 适用于对安全性要求较高的设备
- 保护敏感数据和固件
- 支持多种安全功能的组合使用
- 适合物联网、工业自动化、金融、医疗等领域
- 提供从开发到生产的完整安全解决方案
这些例程展示了 ESP-IDF 在设备安全方面的强大功能,涵盖了从固件保护到数据加密,再到安全执行环境的全方位安全解决方案,为开发者提供了构建高安全性设备的工具和示例。
ESP-IDF 例程——加密
https://blog.zhaosn.top/ESP32-examples/18.security/