Эволюция шифрования в Microsoft Office

В заключении своей статьи “Почему криптосистемы ненадежны”, написанной в 1998 году, я указывал, что положение с применением сильной криптографии в приложениях начинает меняться в лучшую сторону. Рассмотрим эволюцию использования криптографических средств на примере одного из самых популярных приложений для персональных компьютеров  - офисного пакета MS Office, тем более, что недавно Microsoft официально открыла спецификации этого пакета, включая используемые алгоритмы шифрования. Ниже я буду говорить только о паролях на открытие файла, т.к. при установке остальных паролей (на доступ по чтению и т.д.) сам текст документа не зашифровывается и они поэтому могут быть легко обойдены.

Первым шифрованием, применяемым в MS Office до версии 6.0 включительно, было ни что иное, как обычный XOR. Понятно, что такой простейший алгоритм шифрования не обеспечивает никакой защиты (и теперь стыдливо называется в спецификации словом “запутывание” (“obfuscation”)), и любые пароли восстанавливались мгновенно. Такое запутывание не запутало специалистов по криптографии, и соответствующие программы по взлому MS Word и Excel появились очень быстро. Как отмечал один из их авторов Marc Thibault, “ложное чувство безопасности гораздо хуже, чем ее отсутствие” и просил фирму Microsoft улучшить защиту в Office.

Что и было сделано в следующих версиях MS Office - 97 и 2000. Там уже использовались проверенные и сильные криптографические алгоритмы MD5 и RC4, поэтому о мгновенном взломе любых паролей пришлось забыть (временно, как оказалось позже). Но тут в дело вступил иной фактор - так называемые “ограничения по экспорту сильной криптографии”, действовавшие в то время в США. Вообще говоря,  разумное зерно в ограничении доступа к современным криптографическим алгоритмам нежелательным лицам, бесспорно, есть. Иное дело, что таким способом этот доступ террористам и иже с ними не ограничить - например, исходные тексты программы PGP, которые нельзя было вывозить из США в электронном виде, были вывезены в виде бумажной распечатки в соответствии с первой поправкой к конституции, затем отсканированы и переведены обратно в электронную форму.

Так вот, экспортные ограничение предписывали не иметь в программах, использующихся за пределами США, криптоалгоритмы с ключом более 40 бит. Это привело к тому, что ключи в алгоритме RC4, которые в MS Office 97/2000 потенциально могли быть до 128 бит, искусственно сокращались до 40. Т.е. из 16 байт, полученных на выходе Md5, 11 байт просто затирались нулями, и из 5 значащих байт и 11 нулей формировался уже сам ключ RC4.

Это привело к возможности атаки полным перебором на все возможные ключи. Для того, чтобы расшифровать файл Word/Excel 97/2000, необходимо перебрать максимум 240 ключей, после чего мы с гарантией найдем нужный ключ, независимо от длины и сложности используемого пароля. (Если вам непонятно отличие ключа от пароля - почитайте FAQ). Я  тоже занимался написанием такой программы в 2000 году, и после всех оптимизаций (причем одной из самых существенных была замена инструкции mov eax, 0 на xor eax, eax - я этого еще коснусь в этом блоге) на тогдашнем Pentium II/333 Мгц она должна была считаться около 70 дней. Сегодня перебор 240 ключей из Microsoft Office занимает 3 дня на двуядерном Core 2 Duo/2 ГГц.

Создатели программ для восстановления паролей Office 97/2000 на этом не остановились. Дело в том, что если создать огромную базу данных предвычисленных значений и применить т.н. Rainbow-атаку, то нужный ключ можно найти за секунды. По сути, мы заменяем сложные и долгие вычисления поиском в заранее вычисленной таблице (в оптимизации это называется “замена время-память”). Чем больше таблица, тем с большей вероятностью мы найдем там ключ. Обычно эта вероятность составляет более 99%. Первым, насколько я помню, появился онлайн-сервис Decryptum, предлагавший мгновенную расшифровку файлов Office 97/2000. Затем появились другие сервисы и программы, которые можно найти здесь.

В Office XP/2003 эволюция шифрования продолжилась. К тому времени экспортные ограничения была отменены, а Microsoft разработала свой CryptoAPI, который и не преминула использовать в новой версии Office. Но, по не очень понятной причине, в качестве шифрования по умолчанию был оставлен все тот же алгоритм с 40-битными ключами, рассмотренный выше. Это означает, что для многих файлов, созданных в Office XP/2003, также возможна гарантированная расшифровка. Что касается нового шифрования через CryptoAPI, то были сделаны следующие изменения:

  • вместо алгоритма хэширования MD5 используется SHA1;
  • ключи в алгоритме RC4 теперь могут быть до 128 бит;
  • длина пароля увеличена с 16 до 255 символов.

В остальном же схема шифрования достаточно стандартна - из пароля с помощью хеширования получается ключ, на этом ключе шифруется документ. Таким образом, говорить о гарантированной расшифровке файлов Office XP/2003 уже не приходится - это невозможно для ключей более 64 бит для пользователя или небольшой организации, имеющей несколько сотен компьютеров. К десятой версии MS Office шифрование наконец стало достаточно адекватным.

Иное дело, что используемая схема шифрования и проверки пароля допускает достаточно высокую скорость перебора - до 1.000.000 паролей в секунду на одном ядре (столько показывает самая быстрая известная мне программа по восстановлению паролей MS Office XP/2003 - Parallel Password Recovery (Office module)), что означает, что на современном четырехъядерном компьютере можно перебрать все пароли из латинских букв и цифр вплоть до 8 символов за неделю!

Именно с большой скоростью перебора была призвана бороться новая схема шифрования, используемая в последней версии Office - 2007.  В ней было сделано три принципиальных отличия от предыдущей версии:

  • вместо хорошего, но неоднократно неправильно примененного (в том числе в самом Office) потокового алгоритма RC4 используется стандарт шифрования AES
  • вместо однократного хэширования пароля, результат хешируется циклически еще 50.000 раз
  • возможно применение сторонних алгоритмов шифрования.

В результате скорость перебора паролей в Office 2007 упала с одного миллиона до 200 паролей в секунду (в 50.000 раз, что логично, потому что именно этот цикл хэширования и является самым “тактопожирающим”), и за разумное время теперь можно подобрать пароли не длинее 5-6 симоволов.

Таким образом, применяемая схема шифрования в последней версии Microsoft Office 2007 не имеет известных уязвимостей, не допускает никаких атак, кроме перебора паролей, а скорость этого перебора значительно ограничена…

… была до недавнего времени, пока не появились возможности перебора паролей на современных графических картах (GPU), в особенности технология CUDA от NVidia. Но об этом в следующий раз.

Дополнительные ссылки:

3 комментариев

Other Links to this Post

  1. Все о паролях и практической криптографии » Пароли MS Office на GPU — 15 Июнь 2009 @ 14:21

  2. Все о паролях и практической криптографии » Старые недоработки в MS Office на новый лад — 3 Декабрь 2009 @ 19:37

  3. Office 2010. Аргументы «ЗА» с точки зрения безопасности « Быть, а не казаться — 16 Декабрь 2010 @ 12:08

RSS лента комментариев к этой записи.

Оставить комментарий

You must be logged in to post a comment.

WordPress Themes