Компьютерра, 2007 № 44 (712) | страница 20



Криптографы АНБ, спору нет, слывут очень компетентными специалистами, однако генератор, предложенный этим ведомством в 2006 году, известен независимым исследователям с другой стороны - как довольно странный алгоритм, очень медленный в работе и весьма мутный по конструкции. Более того, на августовской конференции CRYPTO 2007 два аналитика (Dan Shumow и Niels Ferguson) показали, что алгоритм содержит слабость, называемую backdoor, то есть "черный ход". Устроено это примерно так. Dual_EC_DRBG работает на основе аппарата эллиптических кривых, которые задаются определенным набором констант. АНБ не объясняет, почему были выбраны именно эти константы. Но они хотя бы известны. Однако при анализе схемы выяснилось, что эти числа связаны со вторым, секретным набором чисел, которые действуют в качестве "скелета" схемы или мастер-ключа. И если вы знаете эти секретные числа, то всего по 32 байтам выхода можно предсказывать всю генерируемую "случайным генератором" последовательность. Проще говоря - взламывать безопасность, обеспеченную Dual_EC_DRBG, фактически на лету.

Таким образом, следует всячески избегать Dual_EC_DRBG. Однако выбор возможен далеко не всегда. Скажем, генератор случайных чисел, встроенный в ОС Windows, автоматически используется во всех приложениях системы, связанных с защитой информации. И при этом конкретные алгоритмы генерации, используемые в Microsoft для данной цели, никогда открыто не публиковались и не подвергались независимому анализу. Ныне этот пробел восполнила группа израильских криптографов из университетов Иерусалима и Хайфы (Leo Dorrendorf, Zvi Gutterman, Benny Pinkas), которые провели обратную инженерную разработку критичных мест в двоичном коде Windows 2000, в частности, восстановив функцию CryptGenRandom. И обнаружили массу неприятных вещей (eprint.iacr.org/2007/419).

Прежде всего, аналитики нашли уязвимость, позволяющую организовать атаку, эффективно отыскивающую предыдущие состояния генератора, а значит, и вычислять будущие числа на выходе. Кроме того, установлено, что генератор управляется системой таким образом, который многократно усиливает значение уязвимости. А именно - функция запускается в режиме пользователя, а не в режиме ядра, что делает очень легким доступ к состояниям генератора даже без привилегий администратора. В совокупности с другими выявленными слабостями это приводит к тому, что злоумышленник, получив всего лишь одно состояние генератора (например, переполнение буфера), может вычислить 128 килобайт прошлых и будущих "случайных" чисел на выходе алгоритма. Используемых, напомним, в качестве секретных криптопараметров для всех алгоритмов защиты информации в ОС, которая имеет много общего с самой распространенной на сегодня Windows XP. Никто толком не знает, как устроен генератор случайных чисел в XP, но есть веские основания полагать, что он не слишком отличается от Windows 2000.