Атака на ГПСЧ

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

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

Актуальность[править | править код]

Безопасность криптографических систем часто зависит от некоторых данных, которые должны быть известны лишь авторизованным пользователям и которые должно быть трудно угадать злоумышленнику. Примерами таких данных могут быть сессионные ключи, инициализирующие вектора, соль, уникальные параметры в функциях ЭЦП и многие другие объекты. Чтобы достичь требуемого уровня непредсказуемости при условии частой генерации случайных чисел, требуется надёжный источник случайных чисел. К сожалению, многие криптографические приложения не обладают надёжным источником случайных последовательностей значений, таких как, например, тепловой шум в электрических цепях или точное время между парой срабатываний счётчика Гейгера. Вместо этого приходится использовать генераторы псевдослучайных чисел (ГПСЧ). ГПСЧ получает на вход поток данных из источника с низкой энтропией и пытается его преобразовать в последовательность значений, практически неотличимую от настоящей случайной последовательности. Успешная атака на ГПСЧ может вскрыть многие криптографические системы независимо от того, насколько тщательно они были спроектированы. Тем не менее, некоторые системы используют плохо спроектированные ГПСЧ или делают это таким образом, что уменьшает сложность атак. Более того, требуется лишь одно успешное проникновение, чтобы скомпрометировать всю систему.

Типы атак на ГПСЧ[править | править код]

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

Прямая криптоаналитическая атака[править | править код]

Если атакующий способен напрямую отслеживать выходные данные ГПСЧ и исследовать закономерность их появления, то это является прямой криптоаналитической атакой. Этот вид атаки распространяется на большинство алгоритмов, использующие ГПСЧ. Однако если, например, ГПСЧ используется исключительно для генерации ключа, как сделано в Triple DES, то он не может быть уязвим для такого рода атак, так как выходы ГПСЧ непосредственно никогда не видны.

Атаки, основанные на входных данных[править | править код]

Данный тип атак возможен в случаях, когда злоумышленник может использовать знания о входных сигналах ГПСЧ или контролировать их. Атаки, основанные на входных данных, могут быть разделены на атаки с известными входными данными, атаки с воспроизводимыми входными данными и атаки на избранные входные данные.

Атаки с известными входными данными практически осуществимы в ситуациях, когда некоторые входные данные, предполагаемые проектировщиком системы как трудно предсказуемые, оказываются легко угадываемыми в некоторых частных случаях.

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

Атаки на избранные входные данные могут быть практически реализованы на системах использующих смарт-карты или токены. Также такая атака может быть опасна для приложений, использующих в ГПСЧ в качестве входных сигналов текстовые сообщения, пароли, задаваемые пользователем, статистику сети, время и т. д.

Атаки, основанные на вскрытии внутреннего состояния[править | править код]

При проведении такого типа атак злоумышленник пытается использовать ранее успешные атаки на ГПСЧ, вскрывшие его внутреннее состояние, с целью предсказания состояния дальнейших или предыдущих состояний ГПСЧ, насколько это возможно. Такого рода атаки могут быть успешны в том случае, когда ГПСЧ начинает свою работу с известного или предсказуемого состояния. На практике очень сложно определить тот факт, что внутреннее состояние было скомпрометировано. Именно поэтому ГПСЧ должны противодействовать компрометированию внутреннего состояния. Возможны как минимум 4 варианта такой атаки:

Атака с обратной прокруткой использует вскрытое состояние ГПСЧ в момент времени с целью восстановления состояний ГПСЧ и, соответственно, его выходов в предыдущие моменты времени.

Перманентное компрометирование состояния возможно для таких систем, в которых однажды раскрытое состояние в момент времени делает все предыдущие и последующие состояния уязвимыми для последующих атак.

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

Встреча посередине является по сути сочетанием атаки итеративным угадыванием и атаки с обратной прокруткой. Знание в моменты времени и позволить злоумышленнику восстановить состояние в моменты времени , a так же во всем временном промежутке от до .

Примеры ненадёжных систем[править | править код]

Ранние версии протокола шифрования SSL компании Netscape использовали псевдослучайные числа, которые создавались ГПСЧ, источником энтропии которого выступали значения трёх переменных: время суток, идентификатор процесса и идентификатор родительского процесса. Эти величины являются предсказуемыми и имеют относительно низкую энтропию. Соответственно, данная версия SSL была признана небезопасной. Уведомление о проблеме Netscape получили от Филиппа Хэлам-Бэйкера в 1994 году, который тогда работал исследователем в CERN. Однако проблема не была решена вплоть до выпуска программного продукта. Позже, в 1995 году, о проблеме вновь заговорили Иан Голдберг и Дэвид А. Вагнер[1]. Им пришлось подвергнуть объектные модули обратному инжинирингу, так как Netscape отказалась раскрыть детали генерации случайных чисел. ГПСЧ был исправлен в следующих выпусках (версия 2 и более поздние) изменением источника энтропии на более случайный и с более высоким уровнем энтропии.

Компания Microsoft использует неопубликованный алгоритм для генерации случайных чисел в операционных системах Windows. Пользователю этот алгоритм доступен через утилиту CryptGenRandom. В ноябре 2007 года Лео Дорредорф вместе с соавторами из Хайфского университета и Еврейского университета в Иерусалиме опубликовал статью под названием Cryptanalysis of the Random Number Generator of the Windows Operating System[2]. В статье продемонстрированы серьёзные недостатки алгоритма, представленного Microsoft. Выводы приведенные в статье были сформулированы в результате изучения дизасемблированного кода системы Windows 2000, но согласно заявлениям Microsoft, они так же могут относиться и к Windows XP[3].

Национальный институт стандартов и технологий (США) в марте 2007 опубликовал рекомендуемые «детерминированные генераторы псевдослучайных чисел», которые были стандартизованы в NIST Special Publication 800-90[4]. Один из приведённых ГПСЧ, Dual EC DRBG, введённый в стандарт Агентством национальной безопасности[5], основан на эллиптической криптографии и содержит определённый набор рекомендуемых констант. В августе 2007 году Дэн Шумов и Нильс Фергесон из Microsoft показали, что константы могут быть подобраны таким образом, что может возникнуть бэкдор в алгоритме[6].

В мае 2008 года исследователь Лучано Белло опубликовал работу, утверждавшую, что изменения, сделанные в 2006 году в ГПСЧ в пакете openssl, распространяемым вместе с Debian Linux и другими дистрибутивами, основанными на Debian, значительно уменьшает энтропию генерируемых значений, что делает ключи уязвимыми для атак.[1] [2] Проблема была вызвана изменениями, сделанными одним из разработчиков Debian в коде openssl в ответ на предупреждения компилятора о, на первый взгляд, избыточном коде. Данная уязвимость была устранена в тот же день, как о ней стало известно[7].

Способы защиты от атак на ГПСЧ[править | править код]

  • Используйте хеш-функции, чтобы скрыть реальные выходные значения ГПСЧ. Используйте результаты хеш-функций от выходных значений ГПСЧ вместо самих значений, чтобы предотвратить прямые криптоаналитические атаки. Данная методика, хоть и не гарантирует полной безопасности, делает систему более надёжной.
  • Хешируйте источник энтропии с метками времени, значениями счетчика или другими постоянно меняющимися значениями. Хеширование источника энтропии с каким-либо постоянно меняющимся значением перед входом в ГПСЧ способно защитить систему от атак, основанных на входных данных.
  • Периодически меняйте внутреннее состояние ГПСЧ. Полностью меняйте внутреннее состояние ГПСЧ время от времени. Это поможет защититься от атак, основанных на вскрытии внутреннего состояния, или, по крайней мере, уменьшит урон, нанесённый успешной атакой.

См. также[править | править код]

Примечания[править | править код]

  1. Randomness and Netscape Browser. Дата обращения: 9 декабря 2011. Архивировано 22 мая 2016 года.
  2. Cryptanalysis of the Random Number Generator of the Windows Operating System, Leo Dorrendorf. Дата обращения: 9 декабря 2011. Архивировано из оригинала 6 сентября 2012 года.
  3. Microsoft confirms that XP contains random number generator bug Архивировано 22 июня 2008 года.
  4. Recommendation for Random Number Generation Using Deterministic Random Bit Generators, NIST Special Publication 800-90 Архивировано 26 сентября 2007 года.
  5. Did NSA Put a Secret Backdoor in New Encryption Standard?
  6. On the Possibility of a Back Door in the NIST SP800-90 Dual Ec Prng. Дата обращения: 9 декабря 2011. Архивировано 26 февраля 2014 года.
  7. Debian OpenSSL Security Flaw. Дата обращения: 9 декабря 2011. Архивировано 6 сентября 2018 года.

Литература[править | править код]