From d2cd0e72ef2106ab115779a65126134c9dc9b232 Mon Sep 17 00:00:00 2001 From: Aditya Patwardhan Date: Fri, 27 Dec 2024 18:04:36 +0800 Subject: [PATCH] fix(docs): Improved RNG documentation Updated the RNG documentation to add more details about the High speed ADC as a noise source and its limitations. Closes https://github.com/espressif/esp-idf/issues/14665 --- .../esp_rng_noise_source_rf_available.png | Bin 0 -> 39488 bytes .../esp_rng_noise_source_rf_unavailable.png | Bin 0 -> 37026 bytes docs/en/api-reference/system/random.rst | 64 +++++++++++++++--- 3 files changed, 54 insertions(+), 10 deletions(-) create mode 100644 docs/_static/esp_rng_noise_source_rf_available.png create mode 100644 docs/_static/esp_rng_noise_source_rf_unavailable.png diff --git a/docs/_static/esp_rng_noise_source_rf_available.png b/docs/_static/esp_rng_noise_source_rf_available.png new file mode 100644 index 0000000000000000000000000000000000000000..7af9335ec19f3ebad352b1ee78bec6abb60d5c0f GIT binary patch literal 39488 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 literal 0 HcmV?d00001 diff --git a/docs/en/api-reference/system/random.rst b/docs/en/api-reference/system/random.rst index ca0a13a1d7..aeb370a464 100644 --- a/docs/en/api-reference/system/random.rst +++ b/docs/en/api-reference/system/random.rst @@ -8,18 +8,62 @@ Random Number Generation {IDF_TARGET_NAME} contains a hardware random number generator (RNG). You can use the APIs :cpp:func:`esp_random` and :cpp:func:`esp_fill_random` to obtained random values from it. +Every 32-bit value that the system reads from the RNG_DATA_REG register of the random number generator is a true random number. These true random numbers are generated based on the thermal noise in the system and the asynchronous clock mismatch. + +.. only:: SOC_WIFI_SUPPORTED or SOC_IEEE802154_SUPPORTED or SOC_BT_SUPPORTED + + - Thermal noise comes from the high-speed ADC or SAR ADC or both. Whenever the high-speed ADC or SAR ADC is enabled, bit streams will be generated and fed into the random number generator through an XOR logic gate as random seeds. + +.. only:: not SOC_WIFI_SUPPORTED and not SOC_IEEE802154_SUPPORTED and not SOC_BT_SUPPORTED + + - Thermal noise comes from the SAR ADC. Whenever the SAR ADC is enabled, bit streams will be generated and fed into the random number generator through an XOR logic gate as random seeds. + +.. only:: not esp32 + + - RC_FAST_CLK is an asynchronous clock source and it increases the RNG entropy by introducing circuit metastability. See the :ref:`secondary entropy` section for more details. + +The following digram shows the noise sources for the RNG on the {IDF_TARGET_NAME}: + +.. only:: SOC_WIFI_SUPPORTED or SOC_IEEE802154_SUPPORTED or SOC_BT_SUPPORTED + + .. image:: /../_static/esp_rng_noise_source_rf_available.png + :scale: 80 % + :align: center + +.. only:: not SOC_WIFI_SUPPORTED and not SOC_IEEE802154_SUPPORTED and not SOC_BT_SUPPORTED + + .. image:: /../_static/esp_rng_noise_source_rf_unavailable.png + :scale: 80 % + :align: center + The hardware RNG produces true random numbers so long as one or more of the following conditions are met: .. list:: - :SOC_WIFI_SUPPORTED or SOC_IEEE802154_SUPPORTED or SOC_BT_SUPPORTED: - RF subsystem is enabled. i.e., {IDF_TARGET_RF_NAME} {IDF_TARGET_RF_IS} enabled. - - The internal entropy source (SAR ADC) has been enabled by calling :cpp:func:`bootloader_random_enable` and not yet disabled by calling :cpp:func:`bootloader_random_disable`. + :SOC_WIFI_SUPPORTED or SOC_IEEE802154_SUPPORTED or SOC_BT_SUPPORTED: - RF subsystem is enabled. i.e., {IDF_TARGET_RF_NAME} {IDF_TARGET_RF_IS} enabled. When enabled, the RF subsystem internally enables the High Speed ADC that can be used as the entropy source. The High Speed ADC may only be available when the respective RF subsystem is active (e.g., not in sleep mode). See the :ref:`enabling RF subsystem` section for more details. + - The internal entropy source SAR ADC has been enabled by calling :cpp:func:`bootloader_random_enable` and not yet disabled by calling :cpp:func:`bootloader_random_disable`. - While the ESP-IDF :ref:`second-stage-bootloader` is running. This is because the default ESP-IDF bootloader implementation calls :cpp:func:`bootloader_random_enable` when the bootloader starts, and :cpp:func:`bootloader_random_disable` before executing the application. When any of these conditions are true, samples of physical noise are continuously mixed into the internal hardware RNG state to provide entropy. Consult the **{IDF_TARGET_NAME} Technical Reference Manual** > **Random Number Generator (RNG)** [`PDF <{IDF_TARGET_TRM_EN_URL}#rng>`__] chapter for more details. If none of the above conditions are true, the output of the RNG should be considered as pseudo-random only. +.. only:: SOC_WIFI_SUPPORTED or SOC_IEEE802154_SUPPORTED or SOC_BT_SUPPORTED + + .. _enabling RF subsystem: + + Enabling RF subsystem + --------------------- + + The RF subsystem can be enabled with help of the following APIs: + + .. list:: + + :SOC_WIFI_SUPPORTED: - Wi-Fi: :cpp:func:`esp_wifi_start` + :SOC_BT_SUPPORTED: - Bluetooth (NimBLE): :cpp:func:`nimble_port_init()` which internally calls :cpp:func:`esp_bt_controller_enable()` + :SOC_BT_SUPPORTED: - Bluetooth (Bluedroid): :cpp:func:`esp_bt_controller_enable()` + :SOC_IEEE802154_SUPPORTED: - Thread/Zigbee: :cpp:func:`esp_openthread_init` + Startup ------- @@ -27,22 +71,20 @@ During startup, the ESP-IDF bootloader temporarily enables the non-RF internal e .. only:: not SOC_WIFI_SUPPORTED and not SOC_IEEE802154_SUPPORTED and not SOC_BT_SUPPORTED - However, after the application starts executing, then normally only pseudo-random numbers are available until the internal entropy source has been enabled again. + For {IDF_TARGET_NAME}, the High Speed ADC is not available. Hence the non-RF internal entropy source (SAR ADC) is kept enabled by default at the time of application startup. Please note that if the application wants to use ADC for other purposes, it should call :cpp:func:`bootloader_random_disable` before using the ADC and :cpp:func:`bootloader_random_enable` to re-enable the entropy source when the Random Number Generator is needed again. .. only:: SOC_WIFI_SUPPORTED or SOC_IEEE802154_SUPPORTED or SOC_BT_SUPPORTED However, after the application starts executing, then normally only pseudo-random numbers are available until {IDF_TARGET_RF_NAME} {IDF_TARGET_RF_IS} initialized or until the internal entropy source has been enabled again. -To re-enable the entropy source temporarily during application startup, or for an application that does not use {IDF_TARGET_RF_NAME}, call the function :cpp:func:`bootloader_random_enable` to re-enable the internal entropy source. The function :cpp:func:`bootloader_random_disable` must be called to disable the entropy source again before using any of the following features: + To re-enable the entropy source temporarily during application startup, or for an application that does not use {IDF_TARGET_RF_NAME}, call the function :cpp:func:`bootloader_random_enable` to re-enable the internal entropy source. The function :cpp:func:`bootloader_random_disable` must be called to disable the entropy source again before using any of the following features: -.. list:: + .. list:: - - ADC - - :esp32: - I2S - - :SOC_WIFI_SUPPORTED or SOC_IEEE802154_SUPPORTED or SOC_BT_SUPPORTED: - {IDF_TARGET_RF_NAME} + - ADC + :esp32: - I2S + :SOC_WIFI_SUPPORTED or SOC_IEEE802154_SUPPORTED or SOC_BT_SUPPORTED: - {IDF_TARGET_RF_NAME} .. note:: @@ -54,6 +96,8 @@ To re-enable the entropy source temporarily during application startup, or for a .. only:: not esp32 + .. _secondary entropy: + Secondary Entropy -----------------