# 安全性

[English]

## 内存保护

从 ESP-IDF v6.2 开始，在 ESP32-C5、ESP32-C6、ESP32-C61、ESP32-H2 和 ESP32-P4 上，二级引导加载程序不再配置或锁定任何 RISC-V PMP 表项。完整的 PMP 配置改由应用程序在启动早期编程并锁定。

被引导加载程序锁定的 PMP 表项在下一次 CPU 复位前无法重新配置。由于已部署设备上的引导加载程序通常不会更新，旧版引导加载程序锁定的表项可能与使用较新 ESP-IDF 版本构建的应用程序所期望的 PMP 布局发生冲突，导致启动失败，或使内存保护在没有任何提示的情况下失效。

使用 ESP-IDF 构建的应用程序不受影响，因为应用程序会在启动阶段、任何应用代码运行之前，自行编程并锁定完整的 PMP 配置。

由 ESP-IDF 二级引导加载程序启动的自定义（非 ESP-IDF）应用程序不得假定交接时任何 PMP 表项已被预先配置或锁定。此前，引导加载程序会配置并锁定覆盖 ROM 和外设地址空间等区域的表项；此类应用程序现在必须自行完成 PMP 配置。

## 镜像校验功能从 `bootloader_support` 中拆分

镜像校验与安全启动签名校验已从 `bootloader_support` 移至新的 `esp_image_verify` 组件。`bootloader_support` 不再依赖 `mbedtls`。

- 此前通过 `bootloader_support` 间接获得 `mbedtls` 或 `app_update` 依赖的组件，现在必须在 `PRIV_REQUIRES` / `REQUIRES` 中显式声明。

- `bootloader_common_get_sha256_of_partition()` 已弃用，请改用 `esp_partition_get_sha256()`。

- 在未包含 `esp_image_verify` 组件的工程中（未启用 OTA 或签名镜像功能），调用 `esp_partition_get_sha256()` 或上述弃用函数会在链接时因 `esp_image_get_metadata` / `bootloader_sha256_flash_contents` 未定义引用而失败。请将 `esp_image_verify` （或 `app_update`，它包含该组件并提供 OTA API）添加到调用组件的 `PRIV_REQUIRES` 或工程的 `COMPONENTS` 列表中。

- 启用 CONFIG_SECURE_SIGNED_ON_UPDATE_NO_SECURE_BOOT 的工程必须包含 `esp_image_verify` 组件，该组件提供启动时校验当前应用签名的检查。 使用 OTA 的应用会通过 `app_update` 自动引入该组件；裁剪组件依赖图的应用（如启用 `MINIMAL_BUILD`）必须将 `esp_image_verify` （或 `app_update`）添加到 `PRIV_REQUIRES` 或工程的 `COMPONENTS` 中。否则构建将以 `#error` 失败，而不会静默跳过已配置的安全检查。

- Kconfig 选项 `CONFIG_SECURE_SIGNED_DATA_PARTITION` 已重命名为 `CONFIG_APP_UPDATE_SECURE_SIGNED_DATA_PARTITION` （通过 `sdkconfig.rename` 兼容旧名称）。

此文档对您有帮助吗？

- 反馈已收到，谢谢！
- 如果您有其他意见，欢迎填写乐鑫文档反馈表。

- 我们重视您的反馈。
- 您可以填写乐鑫文档反馈表告诉我们如何改进该文档。