Пример: Транспортная логистика
Я ищу:
На главную  |  Добавить в избранное  

Программированиеи компьютеры /

Почему криптосистемы ненадежны?

←предыдущая  следующая→
1 2 3 4 



Скачать реферат


Russian LinkExchange Member

Security Page

Почему криптосистемы ненадежны?

Павел Семьянов, Центр Защиты Информации СПбГТУ

В современном программном обеспечении (ПО) криптоалгоритмы широко применяются не только для задач шифрования данных, но и для аутентификации и проверки целостности. На сегодняшний день существуют хорошо известные и апробированные криптоалгоритмы (как с симметричными, так и несимметричными ключами), криптостойкость которых либо доказана математически, либо основана на необходимости решения математически сложной задачи (факторизации, дискретного логарифмирования и т.п.). К наиболее известным из них относятся DES, ГОСТ, RSA. Таким образом, они не могут быть вскрыты иначе, чем полным перебором или решением указанной задачи.

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

Поэтому знание истории атак и "дыр" в криптосистемах, а также понимание причин, по которым они имели место, является одним из необходимых условий разработки защищенных систем. Перспективным направлением исследований в этой области является анализ успешно проведенных атак или выявленных уязвимостей в криптосистемах с целью их обобщения, классификации и выявления причин и закономерностей их появления и существования. Это и будет являться задачей данной статьи.

По аналогии с таксономией причин нарушения безопасности ВС [1], выделим следующие причины ненадежности криптографических программ (см. рис. 1):

1. Невозможность применения стойких криптоалгоритмов;

2. Ошибки в реализации криптоалгоритмов;

3. Неправильное применение криптоалгоритмов;

4. Человеческий фактор.

Отметим сразу, что рассматриваемые ниже причины покрывают только два вида потенциально возможных угроз: раскрытия и целостности, оставляя в стороне угрозу отказа в обслуживании, которая приобретает все большее значение по мере развития распределенных криптосистем.

Рис. 1. Причины ненадежности криптосистем.

Невозможность применения стойких криптоалгоритмов

Эта группа причин является наиболее распространенной из-за следующих факторов.

Малая скорость стойких криптоалгоритмов

Это основной фактор, затрудняющий применение хороших алгоритмов в, например, системах "тотального" шифрования или шифрования "на лету". В частности, программа Norton DiskReet, хотя и имеет реализацию DES, при смене пользователем ключа может не перешифровывать весь диск, т.к. это займет слишком много времени. Аналогично, программа компрессии "на лету" Stacker фирмы Stac Electronics имеет опцию закрытия паролем компрессируемых данных. Однако она не имеет физической возможности зашифровать этим паролем свой файл, обычно имеющий размеры в несколько сот мегабайт, поэтому она ограничивается очень слабым алгоритмом и хранит хэш-функцию от пароля вместе с защищаемыми данными. Величина криптостойкости1 этой функции была исследована и оказалась равной 28, т.е. пароль может быть вскрыт тривиально.

Экспортные ограничения

Это причина, связанная с экспортом криптоалгоритмов или с необходимостью приобретать патент или права на них. В частности, из США запрещен экспорт криптоалгоритмов с длиной ключа более 40 бит2. Очевидно, что такая криптостойкость не может считаться надежной при современных вычислительных мощностях и даже на персональном компьютере, положив скорость перебора в 50 000 паролей/сек, получим время перебора в среднем порядка 4 месяцев.

Известные примеры программ, подверженных экспортным ограничениям - это последние версии броузеров (browser) Интернета, в частности Netscape Navigatorфирмы Netscape Communications и Internet Explorer фирмы Microsoft. Они предоставляют шифрование со 128-битным ключом для пользователей внутри США и с 40-битным ключом для всех остальных.

Также в эту группу попадает последняя версия архиватора ARJ 2.60, известного своим слабым алгоритмом шифрования архивов. Теперь пользователи внутри США могут использовать криптостойкий алгоритм ГОСТ. Комизм ситуации в том, что хотя этот алгоритм является российским, даже россияне по законам США все равно не могут воспользоваться им в программе ARJ.

Использование собственных криптоалгоритмов

Незнание или нежелание использовать известные алгоритмы - такая ситуация, как ни парадоксально, также имеет место быть, особенно в программах типа Freeware и Shareware, например, архиваторах.

Как уже говорилось, архиватор ARJ (до версии 2.60 включительно) использует (по умолчанию) очень слабый алгоритм шифрования - простое гаммирование. Казалось бы, что в данном случае использование его допустимо, т.к. архивированный текст должен быть совершенно неизбыточен и статистические методы криптоанализа здесь не подходят. Однако, после более детального изучения оказалось, что в архивированном тексте присутствует (и это оказывается справедливым для любых архиваторов) некоторая неслучайная информация - например, таблица Хаффмана и некоторая другая служебная информация. Поэтому, точно зная или предсказав с некоторой вероятностью значение этих служебных переменных, можно с той же вероятностью определить и соответствующие символы пароля.

Далее, использование слабых алгоритмов часто приводит к успеху атаки по открытому тексту. В случае архиватора ARJ, если злоумышленнику известен хотя бы один файл из зашифрованного архива, он с легкостью определит пароль архива и извлечет оттуда все остальные файлы (криптостойкость ARJ при наличии открытого текста - 20 !). Даже если ни одного файла в незашифрованном виде нет, то все равно простое гаммирование позволяет достичь скорости перебора в 350000 паролей/сек. на машине класса Pentium.

Аналогичная ситуация имеет место и в случае с популярными программами из Microsoft Office - для определения пароля там необходимо знать всего 16 байт файла .doc или .xls, после чего достаточно перебрать всего 24 вариантов. В Microsoft Office 97 сделаны значительные улучшения алгоритмов шифрования, в результате чего осталась возможность только полного перебора, но... не везде - MS Access 97 использует примитивнейший алгоритм, причем шифруются не данные, а сам пароль операцией XOR с фиксированной константой!

В сетевой ОС Novell Netware фирмы Novell (версии 3.х и 4.х) также применяется собственный алгоритм хэширования. На входе хэш-функция получает 32-байтовое значение, полученное из оригинального пароля пользователя путем либо сжатия пароля длиной более 32 символов с помощью операции XOR, либо размножением пароля длиной менее 32 символов; а на выходе - 16-байтовое хэш-значение (Hash16). Именно оно (для Novell Netware 3.х) хранится в базе данных связок (bindery) в виде свойства "PASSWORD".

Одним из основных свойств криптостойкой хэш-функции должно быть то, что она не должна допускать легкого построения коллизий (таковой, например, является функция crypt(), используемая в UNIX, которая основана на DES). Именно это свойство нарушено в хэш-функции, применяемой в Novell Netware.

Была построена процедура, которая из данного хэш-значения путем небольшого перебора (несколько секунд на машине класса 80486DX2-66) получает 32-байтовую последовательность, которая, конечно, не является истинным паролем, но тем не менее воспринимается Novell Netware как таковой, т.к. применение к ней хэш-алгоритма, выдает в точности имеющееся хэш-значение.

Рассмотренный хэш-алгоритм остался и в 4 версии Novell Netware.

В свою очередь, фирма Microsoft также имеет серьезнейшие недостатки в своем основном хэш-алгоритме, применяемом во всех своих ОС, начиная с Windows 3.11, при аутентификации в локальных (протокол NetBIOS) и глобальных (протоколы CIFS и http) сетях, называемым LM (Lan Manager)-хэш [4]. (Впрочем, Microsoft ссылается на то, что он остался еще со времен OS/2 и что его разрабатывала IBM).

Он вычисляется следующим образом:

1. Пароль превращается в 14-символьную строку путем либо отсечки болеет длинных паролей, либо дополнения коротких паролей нулевыми элементами.

2. Все символы нижнего регистра заменяются на символы верхнего регистра. Цифры и специальные символы остаются без изменений.

3. 14-байтовая строка разбивается на две семибайтовых половины.

4. Используя каждую половину строки в роли ключа DES, с ним шифруется фиксированная константа, получая на выходе две 8-байтовые строки.

5. Эти строки сливаются для создания 16-разрядного значения хэш-функции.

Очевидно, что атаки на LM-хэш легко достигают успеха по следующим причинам:

• Преобразование всех символов в верхний регистр ограничивает и без того небольшое число возможных комбинаций для каждого (26+10+32=68).

• Две семибайтовых "половины" пароля хэшируются независимо друг от друга. Таким образом, две половины могут подбираться перебором независимо друг от друга, и пароли, длина которых превышает семь символов, не сильнее, чем пароли с длиной семь символов. Таким образом, для гарантированного нахождения пароля необходимо перебрать вместо 940+941+... 9414 ~4L1027 всего лишь 2L(680+681+...+687) ~1L1013 (т.е. почти в 1014 раз меньше) комбинаций.

←предыдущая  следующая→
1 2 3 4 



Copyright © 2005—2007 «Mark5»