<< Предыдущая

стр. 26
(из 39 стр.)

ОГЛАВЛЕНИЕ

Следующая >>

управления цифровыми правами и применении стеганографии для зашиты
данных. Также приводится анализ причин появления ненадежных средств
защиты.
Глава 15


Обеспечение
секретности
Практически всегда под защитой данных понимается наложение ограниче-
ний на доступ к информации. Эти ограничения, как правило, бывают трех
типов:
• кто имеет право доступа;
• в течение какого периода разрешен доступ;
• какие виды доступа разрешены.
Пользователь может взаимодействовать с данными двумя основными спосо-
бами: локально и удаленно. При удаленном (сетевом) доступе пользователь
сначала проходит процедуры идентификации и аутентификации, а потом
запрашивает у сервера необходимую ему информацию. Сервер выполняет
все необходимые проверки и принимает решение либо о предоставлении
доступа, либо об отказе. Для защиты удаленных данных разработаны фор-
мальные модели разграничения доступа, описание которых можно найти
в любом хорошем учебнике по сетевой безопасности.
Мы же будем рассматривать ситуации, когда все проверки реализуются ло-
кально. То есть пользователь (или противник) теоретически может полно-
стью контролировать все шаги, которые та или иная программа выполняет
для получения доступа к данным.
В условиях локальности проверок ограничивать, например, период доступа
гораздо сложнее, чем при выполнении контроля на сервере. Но для про-
стого обеспечения секретности, по идее, нет никаких препятствий — доста-
точно спросить у пользователя пароль или получить от него какую-то дру-
гую аутентифицирующую информацию, при помощи хорошей хэш-функции
вычислить ключ шифрования и зашифровать на нем защищаемые данные
при помощи стойкого криптографического алгоритма. Однако в практиче-
ских реализациях этой простейшей последовательности действий разработ-
чики ухитряются допускать самые разнообразные ошибки, значительно
снижающие уровень защищенности информации, а иногда и вовсе сводят
его к нулю.
178 Часть IV. Основные аспекты защиты данных


Защита данных может осуществляться в совершенно разных условиях,
и, соответственно, в каждом случае необходимо использовать свои приемы
защиты.


15.1. Архивация с шифрованием
Многие современные программы упаковки данных (архиваторы) имеют
встроенную поддержку шифрования. Если пользователь пожелает защитить
от чужих глаз информацию, находящуюся в архиве, ему надо при упаковке
ввести пароль, а архиватор сам выполнит все остальные действия. При по-
пытке извлечения зашифрованного файла архиватор запросит у пользовате-
ля пароль и распакует файл только в том случае, если пароль верен.
Стоит отметить, что зашифрование всегда выполняется после компрессии,
т. к. зашифрованные данные должны быть неотличимы от случайной после-
довательности, и, следовательно, архиватор не сможет найти в них избыточ-
ность, за счет удаления которой и происходит упаковка.

15.1.1. ZIP
Свойства алгоритма шифрования, использованного в архивном формате
ZIP, уже многократно обсуждались в этой книге.
Не повторяя детали, вспомним, что алгоритм шифрования уязвим к атаке на
основе открытого текста и достаточно знать 12 незашифрованных байт (по-
сле компрессии), чтобы расшифровать весь файл за приемлемое время.
Для архивов, содержащих 5 и более файлов и созданных архиваторами, ос-
нованными на библиотеке InfoZIP, возможна атака, использующая в качест-
ве открытого текста данные из заголовков зашифрованных файлов. Этой
атаке были подвержены файлы, созданные при помощи WinZIP, но в по-
следних версиях этого архиватора проблема была исправлена.
Еще в июле 2002 года компания PKWARE, Inc. выпустила версию архи-
ватора PKZIP, поддерживающего более стойкие алгоритмы шифрования.
Но, видимо, по той причине, что PKZIP позиционируется как продукт для
корпоративных пользователей, новое шифрование не получило широкого
распространения.

15.1.2. ARJ
Популярный во времена DOS, но довольно редко используемый в настоя-
щее время архиватор, разработанный Робертом Янгом (Robert Jung), исполь-
зовал следующий алгоритм шифрования.
Глава 15. Обеспечение секретности 179

Из пароля по очень простому обратимому алгоритму получалась гамма, рав-
ная по длине паролю. Эта гамма накладывалась на шифруемые данные пу-
тем сложения по модулю 2 (операция хсж). Таким образом, наличие откры-
того текста, равного по длине паролю, позволяло моментально определить
гамму и использованный пароль.
Более того, в самом начале упакованных данных содержалась информация
компрессора, такая как таблицы Хаффмана (Huffman tables), и часть этой
информации могла быть предсказана, что позволяло значительно повысить
скорость поиска пароля перебором.
Начиная с версии 2.60 (ноябрь 1997 года) ARJ поддерживает шифрование по
алгоритму ГОСТ 28147-89 (см. разд. 6.1).

15.1.3. RAR
Архиватор, разработанный Евгением Рошалем (Eugene Roshal), является
неплохим примером того, как можно подходить к шифрованию данных.
В алгоритме шифрования, используемом в RAR версии 1.5, есть некоторые
недочеты. Так эффективная длина ключа шифрования составляет всего
64 бита, т. е. перебором 2 64 вариантов ключа можно гарантированно рас-
шифровать пароль. Более того, наличие открытого текста позволяет умень-
шить множество перебираемых вариантов до 2 40 . Следовательно, атака мо-
жет быть успешно выполнена даже на одном компьютере. Скорость
перебора на компьютере с процессором Intel Pentium ИГ 333 МГц составляет
примерно 600 000 паролей в секунду.
При переходе к версии 2.0, видимо, была проведена серьезная работа над
ошибками. Во всяком случае, взлом нового алгоритма шифрования перебо-
1023
ром требует примерно 2 операций, что намного больше, чем может быть
выполнено на современной технике. Об эффективных атаках, использую-
щих открытый текст, ничего не известно. Скорость перебора паролей сни-
зилась примерно до 2000 штук в секунду (в 300 раз).
Но разработчики RAR решили не останавливаться на достигнутом. В вер-
сии 3.0, появившейся в мае 2002 года, для шифрования стал использоваться
алгоритм AES (Rijndael) с ключом длиной 128 бит. Такое решение выглядит
вполне разумным как минимум по двум причинам. Во-первых, безопаснее
использовать проверенный и хорошо зарекомендовавший себя алгоритм,
чем нечто самодельное, и у AES здесь нет конкурентов. А во-вторых, у AES
скорость шифрования выше, чем у алгоритма, использованного в RAR 2.O.
Кроме замены алгоритма шифрования, в RAR 3.0 используется и другая
процедура получения ключа шифрования из пароля. Эта процедура требует
вычисления хэш-функции SHA1 262 144 раза, что позволяет перебирать
около 3-х паролей в секунду, т. е. в 600 раз меньше, чем для RAR 2.O.
) 80 Часть IV, Основные аспекты защиты данных


15.2. Секретность
в реализации Microsoft
Уже на протяжении многих лет программы, входящие в Microsoft Office, по-
зволяют зашифровывать документы по паролю, вводимому пользователем.
Однако далеко не всегда данные оказываются защищены должным образом.


15.2.1. Microsoft Word и Excel
Шифрование файлов было реализовано уже в Microsoft Word 2.0. Из пароля
с помощью легко обратимого алгоритма получалась 16-байтовая гамма, кото-
рая накладывалась на содержимое документа. Но вычисление гаммы без па-
роля не составляло никакого труда, т. к. гамма накладывалась и на служебные
области, которые имели фиксированное значение во всех документах.
В Word 6.0/95 и Excel 5.0/95 алгоритм шифрования не претерпел значитель-
ных изменений, но изменился формат файлов — он стал основываться на
хранилище OLE Structured Storage. Для восстановления пароля документа
все также требовалось найти 16-байтовую гамму, использованную для шиф-
рования данных.
Один из методов, позволяющих отыскать гамму, например, для документов
Word, основывается на простейшем статистическом анализе. Самый часто
встречающийся символ в тексте на любом языке — пробел. Таким образом,
достаточно определить код наиболее используемого символа в каждой из
16 позиций, соответствующих разным байтам гаммы. Выполнив операцию
XOR каждого найденного значения с кодом пробела (0x20), мы получим
16 байт гаммы.
В программах Word 97/2000 и Excel 97/2000 данные шифруются при помощи
алгоритма RC4 с ключом длиной 40 бит. Такое шифрование уже не позво-
ляет моментально определить пароль. Но производительность вычислитель-
ной техники за последние годы выросла настолько сильно, что единственно
правильный ключ шифрования документа Word (из 2 4 0 возможных) может
быть найден'максимум за четверо суток на компьютере с двумя процессора-
ми AMD Athlon 2600+.
Начиная с Office XP, наконец появилась поддержка шифрования документов
ключами длиной более 40 бит. Но, похоже, большинство пользователей до сих
пор продолжает использовать 40-битовое шифрование, т. к. оно позволяет от-
крывать защищенные документы в предыдущих версиях офисных программ.
Да и изменение настроек шифрования требует дополнительных действий со
стороны пользователя (открытия диалога настроек и выбора нужного крипто-
провайдера), а по умолчанию применяются 40-битовые ключи.
Глава 15. Обеспечение секретности 181


15.2.2. Microsoft Access
Базы данных Microsoft Access могут иметь два типа паролей: пароли на от-
крытие и пароли для разграничения доступа на уровне пользователя.
Пароль на открытие, похоже, никогда не представлял серьезной защиты,
т. к., начиная с Access версии 2.0, он хранился в заголовке базы данных.
Правда, сам заголовок был зашифрован алгоритмом RC4, но это не сильно
увеличивало стойкость, т. к. в рамках одной версии формата всегда исполь-
зовался один и тот же 32-битовый ключ шифрования, жестко прошитый
в динамически загружаемую библиотеку, отвечающую за работу с файлом
базы данных.
А учитывая то, что RC4 — синхронный потоковый шифр, достаточно было
один раз найти гамму, порождаемую RC4 с известным ключом. После этого
пароль можно было определить, выполнив сложение по модулю 2 гаммы и
нужных байт заголовка.
Так для Access 97 необходимо было выполнить XOR 13 байт, расположенных
по смещению 0x42 от начала файла базы данных, со следующей последова-
тельностью:
0x86, OxFB, ОхЕС, 0x37, 0x5D, 0x44, 0х9С, OxFA, ОхСб, 0х5Е, 0x28, ОхЕб, 0x13.
Альтернативный способ снятия пароля заключался в исправлении заголовка
и установке значения байта, соответствующего первому символу, в такое
состояние, чтобы после расшифровки заголовка там оказывался нулевой
байт. Тогда Access, интерпретирующий пароль как строку, заканчивающую-
ся нулевым символом, увидев ноль в первом байте, решит, что пароль во-
обще не установлен. Для снятия пароля в Access 97 необходимо установить
байт по смещению 0x42 от начала файла в значение 0x86.
Кстати, разработчики одной коммерческой программы, позволяющей вос-
становить забытые пароли к базам Microsoft Access, в описании новшеств
очередной версии указали, что время, затрачиваемое на отыскание пароля,
уменьшилось в 1,5 раза. Вероятно, для этого им пришлось уменьшить за-
держку перед выводом найденного пароля на экран, т. к. значительно слож-
нее придумать очень медленный способ выполнения XOR, а потом ускорить
его в 1,5 раза.
Начиная с Access 2000, простое наложение гаммы уже не позволяет сразу же
определить пароль, т. к. необходимо выполнить еще несколько дополни-
тельных несложных действий. Но пароль все равно хранится в заголовке,
а значит, может быть оттуда прочитан.
Что самое занимательное, установка пароля на открытие базы данных
не приводит к шифрованию ее содержимого. Однако Access поддерживает
такую операцию, как шифрование базы данных, но пароль в этом шифро-
182 Часть IV. Основные аспекты защиты данных


вании никак не участвует, а ключ шифрования хранится в заголовке файла .
базы.
Другой тип паролей, поддерживаемых Microsoft Access, используется не для
обеспечения секретности, а для разграничения доступа. Но при проектиро-
вании, похоже, было допущено несколько ошибок, связанных и с этими
паролями.
Правильно было бы хранить не пароли, а их хэши. Но, по непонятным при-
чинам, в системной базе данных, содержащей имена, пароли и прочие атри-
буты всех пользователей, можно найти сами пароли, зашифрованные трех-
кратным DES с двумя ключами в режиме EDE (Encrypt-Decrypt-Encrypt),
когда первый ключ применяется дважды, на первом и третьем шаге. Ключи,
как обычно, являются константами и хранятся в динамически загружаемой
библиотеке. Такая защита позволяет быстро определить пароль любого
пользователя, хотя Microsoft утверждает, что утерянные пароли пользовате-
лей Access не могут быть восстановлены.
В системной базе данных для каждого пользователя хранится и уникальный
идентификатор, являющийся функцией от имени пользователя и некоторой
произвольной строки, вводимой при создании учетной записи. И именно
этот идентификатор является ключом, по которому идентифицируются
пользователи в основной базе данных.
Так, например, у каждой таблицы в основной базе данных есть владелец,
который имеет максимальные права. Но в основной базе данных хранится
только идентификатор пользователя, являющегося владельцем, а имя и вся
вспомогательная информация для аутентификации пользователя хранится
в системной базе данных. И создается впечатление, что если системная база
данных будет утеряна, то доступ к содержимому основной базы данных по-
лучить не удастся.
Но функция вычисления идентификатора пользователя сравнительно легко
обращаема, что позволяет определить имя владельца идентификатора и
строку, введенную при создании его учетной записи. После этого остается
только создать новую системную базу данных и добавить в нее пользователя
с известными атрибутами, но вообще без пароля.


15.2.3. Microsoft Money
Программа учета личной финансовой истории Microsoft Money основывае
ся на том же ядре базы данных, что и Microsoft Access. Поэтому на протя
жении многих версий файлы Money поддерживали точно такой же парол
на открытие, как и базы Access.
Глава 15. Обеспечение секретности 183_


Однако в последних версиях, начиная с Money 2002, также называемой
Money 10, пароль используется для вычисления ключа и последующего
шифрования данных алгоритмом RC4, а не просто проверяется путем срав-
нения с сохраненным значением. То есть пароль может быть найден только
подбором.
Но и тут не обошлось без "оригинальных" технических решений. Дело
в том, что зашифровывается не весь файл, а только 15 первых блоков (в но-
вых версиях каждый блок занимает 4 Кбайта). Такой подход, скорее всего,
выбран с целью обеспечения возможности создания компактных архивных
копий баз Money.
Действительно, файл может иметь размер в десятки мегабайт, но если он
весь будет зашифрован, ни один архиватор не будет в состоянии уменьшить
объем занимаемого файлом дискового пространства. Если же зашифрован
только заголовок, то файл очень хорошо упаковывается и при этом не мо-
жет быть открыт в Money, т. к. важная информация, касающаяся структуры
таблиц и расположения их в файле, оказывается недоступной.
Однако подобное решение нельзя назвать правильным. Основная часть дан-
ных оказывается в базе в незашифрованном виде и, при желании, может
быть легко извлечена противником.

<< Предыдущая

стр. 26
(из 39 стр.)

ОГЛАВЛЕНИЕ

Следующая >>