Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

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




Незнание или нежелание использовать известные алгоритмы - такая ситуация, как ни парадоксально, также имеет место, особенно в программах типа 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. Была построена процедура, которая из данного хэш-значения путем небольшого перебора получает 32-байтовую последовательность, которая, конечно, не является истинным паролем, но тем не менее воспринимается Novell Netware как таковой, т.к. применение к ней хэш-алгоритма, выдает в точности имеющееся хэш-значение.

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

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

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

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

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

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

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

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

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

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

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

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







Дата добавления: 2015-09-07; просмотров: 104. Нарушение авторских прав

Studopedia.info - Студопедия - 2014-2018 год . (0.002 сек.) русская версия | украинская версия