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

Одним из основных свойств криптостойкой хэш-функции должно быть то, что она не должна допускать легкого построения коллизий (таковой, например, является функция 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 раз меньше) комбинаций. Кроме того, те пароли, длина которых не превышает семь символов, очень просто распознать, поскольку вторая половина хэша будет одним и тем же значением AAD3B435B51404EE , получаемой при шифровании фиксированной константы с помощью ключа из семи нулей.

· Нет элемента случайности (salt) , как это сделано в crypt() - два пользователя с одинаковыми паролями всегда будут иметь одинаковые значения хэш-функции. Таким образом, можно заранее составить словарь хэшированных паролей и осуществлять поиск неизвестного пароля в нем.

Неправильная реализация криптоалгоритмов

Несмотря на то, что в этом случае применяются криптостойкие или сертифицированные алгоритмы, эта группа причин приводит к нарушениям безопасности криптосистем из-за их неправильной реализации.

Уменьшение криптостойкости при генерации ключа

Эта причина с весьма многочисленными примерами, когда криптосистема либо обрезает пароль пользователя, либо генерирует из него данные, имеющие меньшее количество бит, чем сам пароль. Примеры:

1. Во многих (старых) версиях UNIX пароль пользователя обрезается до 8 байт перед хэшированием. Любопытно, что, например, Linux 2.0, требуя от пользователей ввода паролей, содержащих обязательно буквы и цифры, не проверяет, чтобы 8-символьное начало пароля также состояло из букв и цифр. Поэтому пользователь, задав, например, достаточно надежный пароль passwordIsgood19 , будет весьма удивлен, узнав, что хакер вошел в систему под его именем с помощью элементарного пароля password .

2. Novell Netware позволяет пользователям иметь пароли до 128 байт, что дает (считая латинские буквы без учета регистра, цифры и спецсимволы) 68128 ~2779 комбинаций. Но при этом, во-первых, хэш-функция (см. выше ) получает на входе всего лишь 32-байтовое значение, что ограничивает эффективную длину пароля этой же величиной. Более того, во-вторых, на выходе хэш-значение имеет длину всего 128 бит, что соответствует 2128 комбинаций. Это дополнительно снижает эффективную длину до =21 символа3 , т.е. в 6 раз по сравнению с первоначальной.

3. Полностью аналогичная ситуация происходит с архиватором RAR версий 1.5x - выбор пароля больше 10 символов не приводит к росту времени, необходимого на его вскрытие.

Если длина пароля "сверху" в этом случае определяется реализацией криптоалгоритмов, то ограничение на длину "снизу" уже связано с понятием единицы информации или энтропии. В рассмотренном примере с Novell Netware для создания хэш-значения с энтропией 128 бит длина пароля должна быть не менее =69 бит4 или не менее 22 символов5 . То, что многие криптосистемы не ограничивают минимальную длину пароля, как раз и приводит к успеху атак перебором не ключей, а паролей.

Отсутствие проверки на слабые ключи

Некоторые криптоалгоритмы (в частности, DES, IDEA) при шифровании со специфическими ключами не могут обеспечить должный уровень криптостойкости. Такие ключи называют слабыми (weak). Для DES известно 4 слабых и 12 полуслабых (semi-weak) ключей. И хотя вероятность попасть в них равняется ~2L10-16 , для серьезных криптографических систем пренебрегать ей нельзя.

Мощность множества слабых ключей IDEA составляет не много - не мало - 251 (впрочем, из-за того, что всего ключей 2128 , вероятность попасть в него в 3L107 раз меньше, чем у DES).

Недостаточная защищенность от РПС

РПС (разрушающие программные средства) - это компьютерные вирусы, троянских кони, программные закладки и т.п. программы, способные перехватить секретный ключ или сами нешифрованные данные, а также просто подменить алгоритм на некриптостойкий. В случае, если программист не предусмотрел достаточных способов защиты от РПС, они легко способны нарушить безопасность криптосистемы. Особенно это актуально для операционных систем, не имеющих встроенных средств защиты или средств разграничения доступа - типа MS DOS или Windows 95:

1. Перехват пароля. Как пример можно привести самый старый способ похищения пароля, известный еще со времен больших ЭВМ, когда программа-"фантом" эмулирует приглашение ОС, предлагая ввести имя пользователя и пароль, запоминает его в некотором файле и прекращает работу с сообщением "Invalid password" . Для MS DOS и Windows существует множество закладок для чтения и сохранения паролей, набираемых на клавиатуре (через перехват соответствующего прерывания), например, при работе утилиты Diskreet v. 6.0.

2. Подмена криптоалгоритма. Примером реализации этого случая является закладка, маскируемая под прикладную программу-"ускоритель" типа Turbo Krypton . Эта закладка заменяет алгоритм шифрования ГОСТ 28147-89, реализуемой платой "Krypton-3" (демонстрационный вариант), другим, простым и легко дешифруемым алгоритмом [1 ].

К-во Просмотров: 222
Бесплатно скачать Реферат: Почему криптосистемы ненадежны?