Next: Сколько дырок в вычислительных
Up: 6.4. Поучимся на чужих
Previous: 6.4. Поучимся на чужих
Contents: Содержание
Рассмотрим примеры использования криптографических алгоритмов в широко
распространенных программных продуктах.
В последнее время проблема защиты информации перестала быть головной
болью только государственных структур, над нею начинают задумываться
многие обычные пользователи ПК. Идя навстречу их пожеланиям, многие
производители программ стали включать в свои продукты функции
защиты данных. Однако в большинстве случаев разработчики таких
программ не ставят своей целью использовать в них сколько-нибудь
стойкие алгоритмы. Они считают основной своей задачей предоставить
пользователям возможность защитить информацию либо от случайного
несанкционированного доступа, либо от неквалифицированного взломщика.
Программные продукты, о которых речь пойдет ниже, широко известны. Они,
скорее, маскируют информацию, чем реализуют алгоритмы надежного
криптографического закрытия.
Многие из вас, наверное, пользовались для редактирования документов
программным продуктом Microsoft Word. Эта программа предоставляет
пользователю широкий спектр возможностей для работы с документами, в
том числе возможность сохранения информации в файлах в различном
формате.
Если вы посмотрите в меню сохранения документов программы Word, то в
параметрах этой операции обнаружите возможность указать пароль для
доступа к документу. То есть для его открытия и дальнейшей работы с ним
пользователь должен ввести пароль. Что происходит с документом, если в
соответствующем поле параметров ввести пароль?
Для ответа на этот вопрос достаточно посмотреть на два документа,
желательно идентичных по содержанию, но сохраненных с паролем и без
него. В редакторе они будут выглядеть совершенно одинаково. Однако,
откроем эти документы (они имеют расширение .doc) какой-нибудь
программой просмотра файлов.
Мы увидим, что файл, представляющий документ в формате Microsoft
Word, имеет сложную структуру. Он состоит из заголовка и нескольких
разделов, которые описывают текст, а также содержат данные о работе
пользователя с документом и служебную информацию. В одном из разделов
файла, соответствующем документу без пароля, мы можем увидеть сам
открытый текст. При этом в том же разделе файла с паролем мы обнаружим
уже случайную последовательность символов. Оказывается, пароль
использовался не только для разрешения доступа к документу при его
открытии, но и являлся ключом некоторой криптографической схемы,
зашифровавшей текст.
Очевидно, что если не зашифровывать текст, то сама идея использовать
пароль была бы бесполезной. Любой пользователь сначала мог бы ``вытащить
руками'' из файла большую часть текста, а потом перенести его в Word. В
то же время, выбранная в Microsoft Word схема шифрования информации
остановит только начинающего хакера [4]. Рассмотрим ее подробнее.
Из пароля пользователя Word вырабатывает массив длиной 16 байт, который
назовем гаммой
(gamma[0..15]). Далее, каждый байт открытого
текста (plain_text[i]) последовательно складывается побитно
(XOR) с
байтом гаммы, в результате получаются знаки шифрованного текста
(cipher_text[i]),
которые мы можем видеть в файле с паролем. То есть
шифрование производится согласно формуле:
cipher_text[i] := plain_text[i] XOR gamma[i mod 16]
,
где mod 16 - операция получения остатка от целочисленного
деления на 16.
Перед нами
типичный пример криптографической схемы гаммирования
короткой гаммой. Так как каждый шестнадцатый символ шифрованного текста
получается прибавлением к символу открытого текста одного и того же
значения гаммы, можно считать, что мы имеем дело с 16-ю простыми
заменами. Для каждой из шестнадцати позиций символа в тексте подсчитаем
таблицу частот его значений, после чего выберем в каждой из них
значения символа, встретившегося чаще других.
Заметим, что самый частый символ в документе Word - это пробел (его
значение в кодировке ASCII есть 0x20). В этом легко убедиться,
просматривая документ в шестнадцатиричном формате. Следовательно, самым
частым символам в таблице частот соответствуют зашифрованные пробелы,
и, складывая побитно значения этих символов с 0x20, мы получим все
16 знаков гаммы. Далее, зная гамму, расшифровываем весь текст. Не правда
ли, просто!
На эту очевидную слабость многие сразу обратили внимание. Поэтому фирма
Microsoft для последних версий текстового процессора Microsoft Word,
начиная с Word 97, полностью изменила алгоритм шифрования файлов,
встроив в него хорошо известные алгоритмы шифрования RC4 и
хеширования MD5.
Теперь посмотрим,
как защищаются пароли пользователя в операционных
системах (ОС) MicrosoftWindows95 первых версий (до OSR 2).
Большинство современных сетевых ОС являются многопользовательскими, это
и Novell NetWare, и Microsoft Windows NT, и т.д. Для разграничения
доступа пользователей к своим ресурсам эти ОС требуют от последних
доказать свою подлинность. Делается это с помощью пароля, который
известен и ОС, и пользователю. Ясно, насколько важно системе для
обеспечения ее безопасности надежно и недоступно для постороннего
доступа хранить информацию о паролях пользователей.
ОС Microsoft Windows 95 не является многопользовательской и не
предоставляет возможность пользователям разделять свои ресурсы. Тем не
менее, для удобства работы она запрашивает у пользователя при входе в
систему его имя и пароль. Но если он ничего не ответит (нажмет кнопку
``Cancel''), ОС все равно разрешит ему работать дальше. Для чего же
тогда запрашивается пароль?
Дело в том, что ПК
может работать в локальной вычислительной сети
(ЛВС), где ему доступны ресурсы или серверы, для обращения к которым
требуются пароли, причем, возможно, различные. Чтобы пользователю не
нужно было их все запоминать, ОС Microsoft Windows 95 запоминает
пароли для доступа к ресурсам ЛВС в специальном файле с именем
``имя_пользователя.pwl''. В этом файле данные шифруются на
том самом пароле, который система запрашивает у пользователя при его
входе в систему. Если пароль введен правильно, то в дальнейшем ОС сама
подставляет соответствующий пароль при запросе пользователя на доступ к
ресурсам или серверам ЛВС.
Данные в .pwl файлах шифруются следующим образом [5]. Из пароля
пользователя по алгоритму шифрования RC4 вырабатывается
гамма.
Каждый
пароль на доступ к соответствующему ресурсу вместе с некоторой
служебной информацией суммируется побитно с полученной гаммой. То есть
каждый раз при шифровании используется одна и та же гамма. Если учесть,
что .pwl файл содержит зашифрованную запись, начинающуюся с имени
пользователя, дополненного до 20 символов пробелами, то задача вскрытия
пароля становится элементарной. Получив первые 20 знаков гаммы, мы
можем прочитать любой сохраненный в файле пароль (учитывая то
обстоятельство, что редко когда используются пароли длиной более 10
символов).
Следует отметить, что сам по себе алгоритм RC4 довольно сложный, и в
данном случае использовались слабости не самого алгоритма, а схемы его
применения, а именно многократное использование одной гаммы.
Next: Сколько дырок в вычислительных
Up: 6.4. Поучимся на чужих
Previous: 6.4. Поучимся на чужих
Contents: Содержание
|