Summary

  • RFC 1750 отделила статистически правдоподобную случайную последовательность от непредсказуемого для противника начального состояния. Если генератор посеян показанием часов, приблизительное время запуска резко сокращает перебор.
  • Документ разбирал часы, заводские номера, действия человека и моменты прихода сетевых пакетов. RFC 4086 в 2005 году обновила этот разбор, добавив источники энтропии и накопительные пулы.

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

Такой поворот описала RFC 1750, опубликованная в декабре 1994 года. Программная криптография всё шире использовалась в сетях; паролям и ключам требовались секретные числа. Авторы указали на источник этих чисел. Противнику иногда проще воспроизвести среду создания секрета, чем искать его во всём номинальном пространстве значений. Длина результата способна скрыть бедность исходного выбора.

Документ проводит важное различие. Последовательность может успешно пройти статистические проверки, но оставаться полностью воспроизводимой по известному начальному состоянию. RFC приводит пример общедоступной таблицы CRC: числа в ней могут иметь приличные статистические свойства, однако таблицу может прочитать любой. Беспорядочный вид — плохой свидетель секретности. В деле участвует противник, а не зритель, оценивающий узор.

Часы казались удобным источником. Интерфейс показывал множество разрядов, иногда микросекунды. RFC 1750 напоминала, что младшие разряды могут повторяться или изменяться благодаря программной подстройке, а не новому непредсказуемому событию. Одинаково называемые системы на разных конфигурациях вели себя по-разному. Аппаратные серийные номера тоже имели структуру: производитель и порядок выпуска ограничивали область поиска. Уникальный идентификатор вполне может оказаться угадываемым.

Авторы обращались и к менее дисциплинированным источникам: интервалам между нажатиями клавиш, движениям мыши, времени прихода пакетов. Но клавиатурный буфер способен скрыть точное время; действия пользователя бывают однообразны; на сетевой трафик может влиять сам атакующий. Здесь приходилось проверять не красивое название источника, а путь данных от события до состояния генератора. По дороге неопределённость можно потерять.

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

В другом примере RFC берёт большой архив USENET, доступный обеим сторонам. Выбор 32 байтов из общедоступного массива скрывает прежде всего место начала чтения. При допущениях этого примера авторы оценили его неопределённость максимум примерно в 25 бит. Число относится к конкретной исторической модели 1994 года. Общий приём шире: размер материала, который есть и у противника, нельзя записывать целиком в графу «секрет».

Отсюда следуют разные обязанности системы. Получить физические или внешние изменения, которых противник не знает. Сохранить их при считывании. Осмысленно смешать несколько вкладов. Затем выдать нужное количество чисел. Генератор может растянуть хорошее состояние на длинную последовательность; он не добавит задним числом неизвестности, которой не было при сборе.

RFC 4086, вышедшая в июне 2005 года, заменила RFC 1750 и подробнее рассмотрела кольцевые генераторы колебаний, пулы энтропии и механизмы тогдашних операционных систем. Инструменты менялись вместе с машинами. Но проверка начиналась с прежнего места: до появления длинного ключа кто и каким способом добыл его непредсказуемое начало? За часами в этой истории следил и вор.