Если и есть что-то, в чем компьютеры хороши, так это предсказуемость. Они могут выполнять одну и ту же операцию миллион раз, и если мы будем каждый раз давать им одни и те же данные, мы всегда будем получать одни и те же результаты. Это выгодно с точки зрения надежности, но неудачно для криптографов. В криптографии термин «случайный» означает непредсказуемый. Вся криптография основана на информационной асимметрии. Это означает, что процесс генерации случайных битов безопасен, если злоумышленник не может предсказать следующий бит с точностью более 50%. Значение, сгенерированное в данный момент, не должно каким-либо образом коррелировать с предыдущими значениями. Последовательность считается случайной, если в ней нельзя распознать закономерности. Поэтому нужен хороший генератор случайных чисел, который можно использовать и в других подобных целях.
Использование случайных чисел
Чтобы генерировать коды для надежного шифрования компьютеру нужен источник данных:
- случайных;
- непредсказуемые;
- хаотичных.
Отличным их источником оказывается внешний мир, потому что события в физическом мире непредсказуемы. Случайные входные данные называются криптографическим начальным числом. Истинная случайность — это любая информация, полученная путем измерения физического процесса. Компьютеры могут генерировать действительно случайные числа, наблюдая, например, за движениями мыши или шумом вентилятора, которые невозможно предсказать, и создавая на их основе данные. Это называется пулом энтропии — это набор случайностей, который считается безопасным. Его непредсказуемость зависит либо от присущей измеряемому физическому процессу непредсказуемости (например, непредсказуемости радиоактивного распада), либо от неточности, присущей проведению точных физических измерений (например, неточности младших значащих цифр некоторых физических измерений, таких как измерение температура процессора или время нажатия клавиш на клавиатуре).
Формирование случайных чисел
Однако получение действительно случайных значений обычно дорого и медленно, поэтому использовать их напрямую в криптографических алгоритмах нецелесообразно. Вместо этого используется псевдослучайность. Генераторы случайных чисел пытаются обойти предсказуемость своих чисел, генерируя начальные числа из многих, казалось бы, непредсказуемых источников. Однако тот факт, что эти начальные источники обычно не являются случайными, означает, что система все же более уязвима, чем случайный источник. В конце 1990-х годов эксперты по безопасности обнаружили, что начальное число генератора случайных чисел Netscape исходило только из трех параметров:
- Времени суток.
- Идентификатора процесса.
- Идентификатора родительского процесса.
Обычный подход к решению проблем безопасности состоит в том, чтобы смешать несколько источников случайности вместе в пуле энтропии системы (при условии, что пока некоторые источники остаются нескомпрометированными, система остается безопасной), которые затем объединяются с псевдослучайными числами.
Просмотров страницы: 28