(Впервые опубликовано – декабрь 2007)
В теории хорошо известно, как делать сильные шифры. Однако в жизни криптография обычно оказывается слабой. Как это происходит.

Что такое «уязвимость»
Группой израильских криптографов из университетов Иерусалима и Хайфы (Benny Pinkas, Zvi Gutterman, Leo Dorrendorf), недавно была вскрыта схема работы генератора псевдослучайных чисел, используемого Microsoft во всех криптоприложениях операционной системы Windows 2000 [eprint.iacr.org/2007/419].
Знание работы этого алгоритма позволило исследователям проанализировать общую стойкость подсистемы защиты и выявить в ней серьезнейшую уязвимость.
В частности, было показано, что из-за слабой схемы генератора злоумышленники могут без проблем, всего по одному внутреннему состоянию алгоритма, предсказывать большое количество криптоключей, вырабатываемых в ОС. Причем не только ключей для будущих потребностей, но и уже сгенерированных в прошлом.
Система Windows 2000 по сию пору используется многими компаниями и организациями, оставаясь, согласно общим оценкам, второй по популярности ОС Microsoft после XP. Но когда разнеслась весть о слабостях в PRNG (от pseudo-random number generator), то всех, естественно, взволновал вопрос об уязвимости крипто в более новых системах, XP и Vista. А именно, можно ли и их атаковать аналогичным образом?
Первая реакция Microsoft на подобные вопросы была довольно уклончивой и сводилась к заверениям публики в том, что последние версии Windows «содержат разнообразные изменения и доработки в схеме генератора случайных чисел».
Но коль скоро уже вскрытую схему выявить в системе гораздо легче, чем неизвестную, в Microsoft все же решились сказать правду и чуть позже признали, что Windows XP тоже уязвима для атаки, описанной в работе Пинкаса, Гуттермана и Доррендорфа.
Что же касается систем Windows Vista, Windows Server 2003 SP2 и планируемой к скорому выпуску Windows Server 2008, то там, по свидетельству Microsoft, схема генерации псевдослучайных чисел работает иначе и поэтому обладает иммунитетом к подобному методу взлома.
Попутно тут же была предпринята попытка интерпретировать работу израильтян не как выявление серьезной и реальной угрозы для безопасности XP (о старой Win2000 речи вообще не идет), а как сугубо «теоретическую атаку». Ибо, по официальному мнению Microsoft, выявленный «баг» не отвечает определению «уязвимость», поскольку для эксплуатации слабостей в PRNG злоумышленник должен обладать правами администратора.
Или, цитируя дословно, «поскольку администраторы по определению имеют доступ ко всем файлам и ресурсам системы, это [восстановление внутреннего состояния PRNG и вычисление ключей] не является недопустимым раскрытием информации».
То, что множество уже известных вредоносных программ, вроде всяких червей и троянцев, умеет повышать свои привилегии до уровня администратора, здесь, очевидно, считается не относящимся к делу.
Однако, дабы публика не слишком уж волновалась, Microsoft пообещала залатать-таки выявленную проблему в PRNG – где-нибудь в первой половине следующего года, вместе с выходом третьего сервис-пака, Windows XP SP3.
Иначе говоря, проблему хотят представить как нечто маловажное и не особо серьезное. Однако реальная проблема тут, строго говоря, заключается в ином.
Дело в том, что базовые принципы, на основе которых должен работать криптографически качественный PRNG, прекрасно известны. Грамотному разработчику, можно сказать, проще выбрать известный хороший криптоалгоритм, нежели разрабатывать собственный плохой.
Однако в программных продуктах Microsoft криптография всегда оказывается существенно слабее, чем могла бы быть. И вовсе не секрет, почему так происходит. Увидеть это совсем несложно, если взглянуть на историю вопроса в ретроспективе. Читать «Хитрости крипторемесла» далее