Cryptology Academy · Урок

Истинная случайность и псевдослучайность

Научитесь различать источники аппаратной энтропии и программные PRNG

Урок 1 из 413 шагов

«Истинная случайность и псевдослучайность» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.

Почему случайность важна

Криптографическая безопасность в основе своей зависит от непредсказуемости. Если злоумышленник может предсказать ваш ключ, IV или одноразовое число — даже частично, — вся криптографическая система может разрушиться. Слабая случайность уже приводила к катастрофическим взломам в реальном мире.

Генераторы истинных случайных чисел (TRNG)

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

Пул энтропии

OS поддерживает пул энтропии — набор образцов физического шума, объединённых с помощью XOR и хеширования. Linux: /dev/random и /dev/urandom получают данные из этого пула. По мере работы системы пул непрерывно пополняется.

Генераторы псевдослучайных чисел (PRNG)

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

PRNG и CSPRNG

PRNG может иметь обнаружимое статистическое смещение или быть предсказуемым по наблюдаемым результатам. Криптографически стойкий PRNG (CSPRNG) добавляет: (1) прямую защищённость — прошлый результат нельзя предсказать по текущему состоянию, и (2) устойчивость к обратному отслеживанию — будущий результат нельзя предсказать по прошлому.

Проверка различимости

PRNG считается криптографически стойким, если ни один алгоритм с полиномиальным временем не может отличить его результат от истинно случайной последовательности с вероятностью, существенно превышающей 1/2. Это критерий непредсказуемости следующего бита.

Источники энтропии на разных платформах

Linux: /dev/urandom (не блокирует выполнение после первоначальной инициализации), системный вызов getrandom(). Windows: CryptGenRandom(), BCryptGenRandom(). macOS/iOS: SecRandomCopyBytes(). Браузер: window.crypto.getRandomValues(). Все они подают данные в пул энтропии OS.

Статистические проверки

NIST SP 800-22 содержит 15 статистических проверок случайности: частотная проверка, частотная проверка блоков, проверка серий, универсальная проверка Маурера, линейная сложность и другие. Прохождение статистических проверок не доказывает криптографическую безопасность, а лишь свидетельствует об отсутствии очевидного смещения.

Качество начального значения

CSPRNG, инициализированный слабой энтропией, например текущим временем в секундах, предсказуем. Злоумышленник, знающий начальное значение, может восстановить весь результат. Всегда используйте энтропию OS: os.urandom(32) в Python, а не time.time() или random.random().

Аппаратные генераторы случайных чисел

Intel RDRAND (инструкция x86) возвращает аппаратно сгенерированные случайные байты от встроенного TRNG. Эквивалентное оборудование существует у AMD и ARM. Linux смешивает RDRAND с данными /dev/urandom. Его используют как дополнительный источник энтропии, а не как единственный источник из-за проблем с доверием.

Квантовые генераторы случайных чисел

QRNG используют явления квантовой механики (время прибытия фотонов и флуктуации вакуума) для получения доказуемо случайного результата. Коммерческие QRNG (ID Quantique, Quantis) применяются в приложениях с высокими требованиями к безопасности. Для общего применения их стоимость слишком высока.

Быстрая проверка

Какое свойство отличает CSPRNG от обычного PRNG?

Итоги

TRNG собирают физическую энтропию; PRNG детерминированно расширяют начальное значение; CSPRNG неотличимы от истинной случайности. Пулы энтропии OS объединяют оба источника. Далее: конкретные конструкции CSPRNG, используемые на практике.

Можно начать бесплатно

Изучай Cryptology Academy с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
67
Уроки
261

Часто задаваемые вопросы

Урок «Истинная случайность и псевдослучайность» бесплатный?

Да — полный текст урока «Истинная случайность и псевдослучайность» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.

Чему я научусь в уроке «Истинная случайность и псевдослучайность»?

Научитесь различать источники аппаратной энтропии и программные PRNG Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cryptology Academy?

Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Истинная случайность и псевдослучайность»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cryptology Academy?

Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Истинная случайность и псевдослучайность
  2. Криптографически стойкие PRNG
  3. Истощение энтропии и ошибки из-за слабых ключей
  4. Безопасная генерация ключей, одноразовых чисел и векторов инициализации
← Назад к Cryptology Academy