Как генерируются по-настоящему случайные числа: TRNG, PRNG и CSPRNG простыми словами

A simple 3-step pipeline: Physical Source -> Sensor/Digitizer -> Binary Output.

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

Дальше — о том, как устроена эта технология, где она даёт сбой и как выбрать подход под вашу задачу.

Как работает TRNG: от физического хаоса к цифровым битам

Истинный генератор случайных чисел (TRNG) — его также называют аппаратным генератором случайных чисел (HRNG) — не подчиняется формуле. Он соединяет непредсказуемый физический мир и жёсткую логику цифровых систем, захватывая внешний источник энтропии и превращая его аналоговый сигнал в бинарный поток.

Ещё в 1951 году Джон фон Нейман предупреждал: «Всякий, кто задумывает получать случайные цифры арифметическими методами, разумеется, находится в состоянии греха».

Три распространённых источника энтропии

Источник Что измеряет Пример устройства
Тепловой шум Флуктуации напряжения от движения электронов в цепях Secure Enclave в смартфонах (Apple A-серии, Google Tensor)
Атмосферный шум Радиопомехи от природных явлений вроде молний Выделенные RNG-серверы
Квантовые явления Радиоактивный распад, флуктуации вакуума ANU Quantum RNG, корпоративные серверы

Простой трёхступенчатый конвейер: Физический источник -> Датчик/Оцифровщик -> Двоичный вывод.

Конвейер прост: Физический источник → Датчик/Оцифровщик → Бинарный вывод. С одного конца входит «сырая» энтропия, с другого — чистые случайные биты.

TRNG против PRNG: детерминированный разрыв

Главное разделение в генерации случайных чисел проходит между физической энтропией и алгоритмической логикой.

Свойство TRNG (аппаратный) PRNG (алгоритмический) CSPRNG (гибрид)
Источник Физическая энтропия Математическая формула Аппаратный сид + алгоритм
Предсказуем? Нет Да — если известен сид Чрезвычайно сложно
Скорость Ниже (блокирующий) Очень высокая Высокая
Воспроизводимость? Нет Да (один сид = тот же вывод) Нет
Сценарий Ключи шифрования, токены безопасности Симуляции, игры Продакшен-системы безопасности

Когда PRNG подводят: мошенничество Hot Lotto

PRNG использует значение сида как стартовую точку для математической формулы. Вывод выглядит случайным, но полностью детерминирован. Если кто-то знает сид и формулу, он может предсказать каждое число.

Это не теория. В скандале с мошенничеством Hot Lotto инсайдер установил вредоносное ПО, которое заставляло PRNG использовать предсказуемый сид во время техобслуживания, — и подстроил джекпот в $16,5 млн.

Наглядное сравнение PRNG \(Детерминированный/Быстрый\) и TRNG \(Недетерминированный/Защищённый\).

Когда PRNG — правильный выбор

PRNG подходят для задач, где важны скорость и воспроизводимость. В симуляциях Монте-Карло учёным нужно прогонять одну и ту же последовательность многократно, чтобы сверять результаты. Поскольку можно переиспользовать один и тот же сид, симуляция остаётся согласованной — чего блокирующий TRNG дать не может.

Гибридное решение: CSPRNG

Большинство современных систем используют криптографически стойкий псевдослучайный генератор чисел (CSPRNG) — гибрид, который берёт немного истинной аппаратной энтропии для инициализации быстрого алгоритма. Так достигается непредсказуемость TRNG при скорости PRNG.

Отраслевой стандарт — NIST SP 800-90A, который определяет, как такие генераторы должны строиться для госсектора и промышленности.

Руководство разработчика: какую библиотеку выбрать

Язык Небезопасный (PRNG) Защищённый (CSPRNG)
Python random (Mersenne Twister) secrets (читает из /dev/urandom)
JavaScript Math.random() crypto.getRandomValues()
Go math/rand crypto/rand
Java java.util.Random java.security.SecureRandom

Правило: для всего, что связано с безопасностью, используйте secrets / crypto / SecureRandom. random / Math.random() — только для игр и симуляций.

TRNG в потребительском железе 2026 года

К 2026 году аппаратная энтропия перешла из корпоративных серверов в повседневные устройства. В чипы современных смартфонов встроены выделенные TRNG внутри Secure Enclave: они снимают тепловой шум прямо с процессора, чтобы генерировать ключи шифрования для FaceID, цифровых кошельков и защищённого обмена сообщениями.

Для корпоративной безопасности фронт — квантовая генерация случайных чисел. Такие системы, как у Австралийского национального университета, получают числа из квантовых флуктуаций вакуума — уровень случайности, который, вероятно, не смогут взломать даже будущие квантовые компьютеры.

Отбеливание: от «сырого» шума к чистым данным

«Сырая» энтропия редко равномерна. Тепловой датчик из-за температурного дрейфа может выдавать чуть больше единиц, чем нулей. Чтобы убрать смещение, данные проходят отбеливание (whitening) — обычно через XOR-операцию или криптографический хэш, — которое сглаживает закономерности и обеспечивает равномерное распределение.

Этот этап постобработки обязателен по NIST SP 800-90B для любого источника энтропии в сертифицированной системе.

Краткая история сбора хаоса

  • 1927: Л. Г. К. Типпет опубликовал таблицу из 41 600 цифр, собранных вручную из переписных записей.
  • 1955: RAND Corporation выпустила A Million Random Digits, используя машину с электронными импульсами.
  • 2013: Скандал с Dual_EC_DRBG выявил, что АНБ встроило бэкдор в сертифицированный NIST генератор, что позволяло взламывать SSL-соединения. Этот инцидент подтолкнул отрасль к смешиванию энтропии из нескольких источников — никакого единого отказа.

Заключение

Истинно случайные числа — фундамент цифрового доверия. Для них нужно физическое «железо», которое связывает предсказуемый код и хаотичную реальность. Будь то тепловой шум в вашем телефоне или квантовые флуктуации в серверной, переход от псевдослучайности к аппаратно-подтверждённой энтропии критически важен для безопасности в 2026 году.

Разработчикам: используйте secrets (Python) или crypto.getRandomValues() (JavaScript), но никогда random или Math.random() для задач безопасности. Организациям: аппаратные TRNG больше не опциональны — это базовое требование для шифрования.

FAQ

Является ли внутренний таймер компьютера источником истинной случайности?

Нет. Таймер предсказуем и часто используется как сид PRNG именно потому, что меняется. Но если злоумышленник примерно знает, когда было сгенерировано число, он может сузить пространство вариантов. Истинная случайность требует измерения недетерминированных событий — интервалов между нажатиями клавиш, теплового шума — с последующим статистическим отбеливанием.

Может ли человек сгенерировать истинно случайную последовательность?

Люди плохо справляются со случайностью. Мы избегаем кластеров (вроде «1, 1, 1»), хотя они естественным образом встречаются в случайных наборах, и слишком часто переключаемся между вариантами. Статистические тесты легко выявляют такие закономерности, поэтому ввод человека допустим для инициализации, но недостаточен для критичных к безопасности задач.

Какие статистические тесты проверяют истинную случайность?

NIST Statistical Test Suite (STS) — золотой стандарт. Среди других фреймворков — тесты Dieharder и стандарт AIS 31. Эти тесты ищут повторяющиеся паттерны, длинные серии одинаковых битов и прочие аномалии, указывающие на смещение или предсказуемость.

Комментарии

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *