Журнал "Компьютерра" №714
Шрифт:
АНАЛИЗЫ: Хитрости крипторемесла
Автор: Киви Берд
Как уже сообщалось в "КТ" #712, Бенни Пинкас, Цви Гуттерман и Лео Доррендорф (Benny Pinkas, Zvi Gutterman, Leo Dorrendorf), криптографы из университетов Хайфы и Иерусалима, вскрыли схему работы генератора псевдослучайных чисел, используемого Microsoft во всех криптоприложениях Windows 2000. Исследователи проанализировали стойкость подсистемы защиты и выявили в ней серьезнейшую уязвимость. В частности, они обнаружили, что из-за слабой схемы генератора злоумышленники могут всего лишь по одному внутреннему состоянию алгоритма предсказывать большое количество криптоключей, вырабатываемых в ОС. Причем не только ключей для будущих потребностей, но и уже сгенерированных.
Windows 2000 по сию пору используется многими компаниями и организациями, оставаясь, согласно общим оценкам, второй по популярности операционной системой Microsoft после XP. Но когда разнеслась весть о слабостях в PRNG (pseudo-random number generator), встал вопрос об уязвимости крипто в более новых системах, XP и Vista, - можно ли и их атаковать аналогичным образом?
Поначалу реакция Microsoft была довольно уклончивой и сводилась к заверениям, что последние версии Windows "содержат разнообразные изменения и доработки в схеме генератора случайных чисел", но затем Редмонд все же признал, что Windows XP тоже уязвима для атаки, описанной в работе Пинкаса, Гуттермана и Доррендорфа. Что же касается систем Windows Vista, Windows Server 2003 SP2 и планируемой к выпуску Windows Server 2008, то там, по словам Microsoft, схема генерации псевдослучайных чисел работает иначе и обладает иммунитетом к подобному методу взлома.
Попутно была сделана попытка интерпретировать работу израильтян не как выявление серьезной и реальной угрозы для безопасности XP (не говоря уж о Win2000), а как сугубо "теоретическую атаку". Ибо, по официальному мнению Microsoft, выявленный баг не отвечает определению "уязвимость", поскольку для эксплуатации слабостей в PRNG злоумышленник должен обладать правами администратора. Или, дословно, "поскольку администраторы по определению имеют доступ ко всем файлам и ресурсам системы, это [восстановление внутреннего состояния PRNG и вычисление ключей] не является недопустимым раскрытием информации". То, что множество известных червей и троянцев умеет повышать свои привилегии до уровня администратора, Microsoft, очевидно, сочла не относящимся к делу, но дабы публика не слишком волновалась, пообещала залатать-таки дыру в PRNG - где-нибудь в первой половине следующего года, вместе с выходом третьего сервис-пака, Windows XP SP3.
Иначе говоря, слабость, обнаруженную израильтянами в генераторе случайных чисел Windows, Microsoft хочет представить как нечто мелкое, не заслуживающее внимания. Что ж, желание понятное. Да вот беда, базовые принципы, на основе которых должен работать криптографически качественный PRNG, прекрасно известны, так что разработчику проще выбрать известный хороший криптоалгоритм, нежели разрабатывать собственный плохой. Тем не менее в программных продуктах Microsoft криптография всегда оказывается существенно слабее, чем могла бы быть. Понять, почему это так, нетрудно, если обратиться к истории вопроса.
Стандарт криптозащиты WEP для беспроводных сетей WiFi порой неверно расшифровывают как Wireless Encryption Protocol, или протокол беспроводного шифрования. На самом деле аббревиатура означает Wired Equivalent Privacy (приватность, эквивалентная проводным сетям). Уже само имя дает основание предполагать, что защита, обеспечиваемая таким шифрованием, вряд ли обладает высокой стойкостью к атакам.
На первый взгляд, впрочем, все выглядело весьма пристойно. Хорошо исследованный и вполне качественный шифр RC4, своевременно увеличенная с 64 до 128 бит длина ключа - все эти базовые характеристики позволяли сделать достаточно надежную схему защиты. Однако в конкретной реализации RC4 для WEP, особенно в алгоритме разворачивания ключа, аналитики вскоре нашли серьезные слабости, ощутимо понижающие стойкость системы.
Начиная с 2001 года эффективность атак на WEP и скорость вскрытия ключей понемногу довели с нескольких часов до нескольких минут. Апофеозом же этого процесса можно считать наглядную демонстрацию в апреле 2007 года, когда трое исследователей из германского Университета Дармштадта на одной из конференций
И хотя с 2003 года для защиты беспроводных сетей разработаны и применяются существенно более стойкие протоколы WPA и WPA2, изготовители сетевого оборудования по-прежнему ставят стандарт WEP первым в списках возможных опций для средств безопасности. Вследствие этого, как показали исследования, проводившиеся в текущем году в Германии, около половины всех WiFi-сетей используют для защиты откровенно слабый WEP и лишь чуть больше четверти - WPA. Остальные, впрочем, не применяют защиты вообще.
Строго говоря, общедоступных официальных (или неофициальных) документов с хронологией развития и внятным рассказом о средствах защиты информации в программах MS не существует. Причина - в закрытости кодов Windows-платформы. Имеются, правда, заслуживающие доверия источники вроде книги "Написание безопасных кодов" [Michael Howard and David LeBlanc, Writing Secure Code. Microsoft Press, 2002], подготовленной специалистами корпорации и выпущенной издательством Microsoft Press. Но содержательные моменты в устройстве используемых криптоалгоритмов излагаются там лишь в самых общих чертах, без углубления в принципиально важные конструктивные подробности.
С другой стороны, из-за огромной распространенности программ Microsoft имеется масса достоверной, хотя и обрывочной информации о взломе подсистем защиты, работающих под Windows, для всех периодов развития этой платформы. Сопоставляя эти сведения с информацией из упомянутой книжки, а также принимая во внимание общеполитические процессы, на фоне которых происходило развитие, можно вкратце восстановить картину примерно в таком виде.
По словам авторов книги Майка Ховарда (Michael Howard) и Дэвида Леблана (David Le-Blanc), генератор псевдослучайных чисел, вызываемый функцией CryptGen-Random, впервые появился в Windows 95, то есть в середине 1990-х годов. С той поры его стали включать во все базовые версии операционных систем Microsoft и их вариации. По свидетельству тех же авторов, конструкция алгоритма PRNG оставалась неизменной вплоть до Windows XP. Правда, при вскрытии схемы генератора в Win2000 израильтяне установили, что это не совсем так - некоторые модификации были, причем далеко не в лучшую сторону. Но в любом случае трудно не поражаться, что алгоритм Windows PRNG - несомненно, самого распространенного в мире криптогенератора - оставался невскрытым и никем не проанализированным на протяжении почти полутора десятков лет.
Объяснить это проще всего тем, что защиту в Windows удавалось вскрывать все эти годы и без знания работы генератора. Нагляднее всего, наверное, данный факт иллюстрируется на примере пакета MS Office, эволюция которого крепко привязана к версиям ОС Windows, а потому и криптография примерно та же самая. Так вот в процессе эволюции криптосредства для защиты информации претерпевали серьезные усовершенствования. Однако на словах и безопасность, и этапы ее усиления всякий раз выглядели существенно иначе, нежели на деле.
В самом первом продукте, MS Office 95, уже имелись средства шифрования документов. Но реально шифрование сводилось к применению побитовой операции XOR к паролю пользователя и тексту документа. С точки зрения криптоанализа защиты это не обеспечивало. Создавалась лишь ее видимость - превращение читаемого текста в нечитаемый.
Применение шифров из арсенала бойскаутов в тот период, когда миру уже была прекрасно известна программа PGP - символ общедоступного и очень сильного крипто, конечно, не злой умысел (или невежество) Microsoft. Просто все предыдущие десятилетия американские законы считали стойкие криптосредства столь же опасным военным товаром, как наступательные виды оружия, и они подлежали строжайшим экспортным ограничениям. В течение 1990-х годов, впрочем, эти драконовские законы были заметно ослаблены, а вместе с ними менялась и стойкость криптографии в Windows и MS Office.