Источник энтропии

Источники энтропии используются для накопления энтропии с последующим получением из неё начального значения (англ. initial value, seed, random seed), необходимого для работы генераторов истинно случайных чисел (ГСЧ).

Источники энтропии значительно различаются в зависимости от своей реализации, например, тепловой шум (или шум Джонсона), источник радиоактивного распада, Генератор гармонических колебаний. Также источниками могут служить:

  • большинство видео- и аудиоустройств
  • кольцевой генератор
  • любая система с вращающимся диском
  • высокоточные таймеры
  • специализированные аппаратные генераторы чисел, встроенные в компьютер (например, Intel i82802 RNG, встроенный генератор микропроцессора VIA C3)
  • температурный датчик.

Применение

Энтропия — это среднее количество информации, приходящееся на одно элементарное сообщение источника.[1] При накоплении достаточного количества энтропии, она может быть использована как начальное значение (seed) для создания необходимой величины криптографически стойкой хаотичности.

В отличие от генератора псевдослучайных чисел (ГПСЧ), который использует одно фиксированное начальное значение (seed), ГСЧ всегда формирует случайные числа, опираясь на случайную величину, предоставленную различными высококачественными источниками энтропии.

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

Необходимый объём энтропии

Это минимальное количество случайных данных (измеряемое в битах), требуемое для конкретной криптографической или технической задачи. Недостаток энтропии делает систему уязвимой.

Например, в AES (Advanced Encryption Standard) стандартная длина ключа составляет 128 бит, хотя поддерживаются варианты на 192 и 256 бит.[2] В высокозащищённых системах обычно используют ключи длиной 256 бит. При необходимости создания набора ключей применяют криптографически стойкие алгоритмы, требующие качественного случайного начального значения (seed). Нескольких сотен случайных бит, получаемых при однократном запуске компьютера, бывает достаточно для безопасной работы таких алгоритмов.

Аппаратные источники энтропии

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

(NIST SP 800-90B)[3]

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

Видео- и аудиовходы

Многие компьютерные системы оснащены входами для оцифровки аналоговых сигналов, как звук из микрофона или видео с камеры. Качество энтропии, получаемой таким способом, существенно зависит от аппаратной реализации устройства. Например:

  • При отсутствии звукового сигнала (микрофон в тихом помещении) или при закрытой крышке камеры входные данные представляют собой преимущественно тепловой шум электронных компонентов.
  • Наличие усилителей, детекторов сигнала и качественного АЦП может повысить энтропию.
  • В UNIX-подобных системах для сбора энтропии можно использовать устройство /dev/audio, считывая тепловой шум при отсутствии звукового сигнала или фоновый шум низкого уровня. Получаемые таким образом случайные данные требуют дополнительной проверки и обработки перед использованием в криптографических целях.

Дисковые накопители

Дисковые накопители (жёсткие диски) демонстрируют незначительные случайные колебания скорости вращения обусловленные турбулентностью воздушного потока внутри корпуса и механическими колебаниями компонентов. Измерение времени поиска данных (seek time) усиливает энтропийную составляющую. Данные, полученные таким образом, как правило, сильно взаимозависимы, поэтому необходима значительная обработка.

В 1990-х годах даже на медленных системах достигалась генерация примерно 100 бит/мин (после обработки).

В середине 2000-х годов на современном (на тот момент) оборудовании генерация составляла свыше 10 000 бит/с.

Метод применяется в системных RNG (например, в Linux через /dev/random).

Кеширование не создаёт проблем, так как операции чтения выполняются за очень короткое время.

Неаппаратные источники

"Программные источники энтропии полагаются на события, которые трудно предсказать, но не являются истинно случайными, такие как временные метки, ввод пользователя или системные прерывания."

(RFC 4086 "Randomness Requirements for Security")

Такие источники генерируют случайные данные на основе непредсказуемых, но нефизических событий, таких как время нажатия клавиш, движение мыши или сетевые пакеты. Они менее надежны, чем аппаратные.

Часы и серийные номера

Компьютерные часы и связанные с ними временные метки часто предоставляют меньше энтропии, чем предполагает их техническая спецификация.

Исследования[4] выявили следующие проблемы:

  1. Нестабильность разрешения:
    • Одна версия ОС на определённом оборудовании может обеспечивать микросекундное разрешение (например, QueryPerformanceCounter в Windows), тогда как та же ОС в другой конфигурации возвращает идентичные младшие биты при последовательных запросах.
    • Пример: в Linux до ядра 4.18 gettimeofday() на некоторых процессорах давал лишь миллисекундную точность, несмотря на заявленные микросекунды.[5]
  2. Артефакты генерации:
    • При частых запросах некоторые реализации увеличивают значение часов вручную (например, инкрементируя на 1), если реальное время не изменилось. Это создаёт предсказуемые последовательности.
  3. Проблемы переносимости:
    • Разработка кроссплатформенных приложений, использующих часы для генерации энтропии, крайне сложна из-за вариативности поведения (см. POSIX-стандарт для clock_gettime()).

Использование идентификаторов (MAC-адреса, серийные номера SSD) также ограничено из-за структурированности данных: MAC-адреса содержат OUI-префикс производителя (3 байта), что снижает энтропию. Так, Dell использует несколько известных префиксов (включая 00:14:22 и 00:1C:23)[6], позволяя предсказать часть адреса.

Эти ограничения делают часы и серийные номера ненадёжными источниками энтропии без дополнительной обработки.

Время и сетевой трафик

Системы могут собирать энтропию из:

  • Временных характеристик:
    • Нажатия клавиш (интервалы между нажатиями)
    • Движения мыши (время и траектория)
  • Сетевых событий:
    • Время прибытия сетевого пакета
    • Размер пакета

Проблемы:

  • Буферизация ввода в некоторых ОС затрудняет доступ к точным временным меткам
  • Отсутствие стандартизированного API для разных платформ
  • Повторяемость пользовательских действий снижает энтропийную ценность
  • Возможная предсказуемость трафика

Методы, использующие данные источники энтропии, эффективны против удаленных атак, но напрямую зависят от качества измерений случайных величин.

Примечания

  1. Шеннон К. Работы по теории информации и кибернетике. — 1963.
  2. Advanced Encryption Standard (AES) // NIST. — 2001.
  3. NIST SP 800-90B // NIST.
  4. A Survey of Timing Channels and Countermeasures // ACM Computing Surveys. — 2016.
  5. Bovet D., Cesati M. Understanding the Linux Kernel, 3rd Edition. — 2005.
  6. OUI standards.

Ссылки

  • RFC 4086 — Randomness Requirements for Security
  • Pseudo Random Number Generators. Cryptography. OpenBSD (11 мая 2009). — Источники энтропии и применение случайных чисел в OpenBSD. Дата обращения: 8 апреля 2010. Архивировано 13 апреля 2012 года.
Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9

Portal di Ensiklopedia Dunia

Kembali kehalaman sebelumnya