Программирование ARM ESP-IDF: использование функции esp_random Sun, July 12 2026  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


ESP-IDF: использование функции esp_random Печать
Добавил(а) microsin   

Функция esp_random из ESP-IDF действительно генерирует случайные значения. Однако важно понимать, что качество этих значений (будут ли они действительно истинно случайными или только псевдослучайными) полностью зависит от состояния аппаратного генератора случайных чисел (HWRNG) на момент вызова.

[Как работает esp_random]

esp_random() — это функция, предоставляемая ESP-IDF, которая читает 32-битное значение из аппаратного регистра случайных чисел. В основе этого генератора лежат физические процессы, такие как тепловой шум и асинхронный тактовый сигнал, что позволяет получать истинно случайные числа.

Функция автоматически ожидает достаточное количество тактов, чтобы гарантировать, что в состояние генератора была внесена новая энтропия, прежде чем вернуть значение. Исходный код показывает, что для ESP32-S3 этот таймаут настроен на достижение максимальной частоты считывания около 45 КГц.

Аппаратный RNG производит истинно случайные числа (TRNG) в следующих случаях:

1. Включен RF-модуль (Wi-Fi или Bluetooth): это основной и самый надежный способ реально случайных значений. Когда радиочастотная подсистема активна, она использует высокоскоростной АЦП, который является отличным источником энтропии.

2. Вручную включен внутренний источник энтропии: вы можете вызвать функцию bootloader_random_enable(), чтобы активировать SAR ADC в качестве источника шума. Важно не забыть вызвать bootloader_random_disable(), когда он больше не нужен (например, перед использованием ADC или RF).

3. Во время работы загрузчика ESP-IDF второй ступени: по умолчанию загрузчик включает источник энтропии на время своей работы.

[Когда значения являются только псевдослучайными (PRNG)]

Если ни одно из вышеуказанных условий не выполнено, то выход RNG должен рассматриваться как псевдослучайный. В документации говорится, что даже в этом случае встроенный вторичный источник энтропии (основанный на асинхронном внутреннем генераторе) может обеспечить достаточно хорошее качество, но официально это не гарантируется.

[Ссылки]

1. ESP-IDF FAQ.

 

Добавить комментарий


Защитный код
Обновить

Top of Page