Еженедельник Свет в Интернет

Главная

Новости

Статьи и обзоры
  Горожанин
  Обнинск в Internet
  Web Design
  Hardware
  Software
  Безопасность
  Серфинг
  Игродром
  Relax
  Технологии
  Web-обзор
  Интернет-ликбез
  Опросник
  УП-Технологии
  ART.net

Ссылки

Архив

О нас

Контакты

Форумы


Основатель:
К.Николаенко

Главный Редактор:
С.Коротков

Web Design:
Neutron


Наш спонсор






Порт POPULAR.RU
POPULAR.RU RegionalBanner Network.






Океан


НПП Метра - промышленные электронные автомобильные вагонные весы
Goldy Interior - салон офисной мебели: кабинеты руководителей, мебель для персонала

= Безопасность =

ФАЙЛЫ, КОТОРЫМ МЫ ДОВЕРЯЕМ

автор: Дмитрий Леонов

окончание, начало в: #32(144)
Пароли, пароли, пароли...

Очень важной характеристикой метода кодирования информации является его обратимость - существование простого способа получения исходной информации из закодированной. Различают принципиально необратимое, обратимое с помощью дополнительной информации и безусловно обратимое кодирование.
Принципиально необратимое кодирование (хэширование) используется, например, в операционных системах для хранения паролей. При первоначальном вводе пароль преобразуется с помощью так называемых односторонних функций (хэш-функций), подобранных таким образом, чтобы из полученной на их выходе строки принципиально нельзя было получить первоначальное значение пароля. При дальнейшем использовании пароль каждый раз преобразуется такой же фуекцией и сравнивается с первоначальным хэшем. При их совпадении делается вывод о правильности ввода пароля. Ситуация, когда два разных пароля дают один хэш, принципиально возможно, но вероятность такого совпадения мала настолько, что это не имеет никакого практического значения.
Объем полученной в итоге информации равен ровно одному биту: пароль совпал либо не совпал. В некоторых случаях этого может оказаться недостаточно, поэтому гораздо чаще используется кодирование, обратимое с помощью дополнительной информации (ключа шифрования). Входная информация преобразуется с помощью пароля таким образом, чтобы обратное преобразование также требовало знания пароля (простейший пример такого преобразования - операция XOR (исключающего ИЛИ) между байтами исходного текста и байтами пароля). Именно этот способ обычно используется при шифровании архивов.
Наконец, последний случай - безусловно обратимое кодирование, в случае которого обратное преобразование не требует знания какой-то дополнительной информации (например, XOR с фиксированным числом). В подавляющем большинстве случаев для хранения паролей к внешним ресурсам используется именно этот способ. К примеру, почтовому клиенту для получения почти необходимо передать на РОР3-сервер логин и пароль пользователя, который решил доверить их хранение клиенту, поставив соответствующую галочку. Пароль уходит на сервер в открытом виде, какие-то дополнительные пароли при его сохранении взять неоткуда (бессмысленно требовать от пользователя какой-то дополнительный пароль, если он только что захотел избавиться от возни с вводом основного), стало быть, остается единственный вариант - использовать как можно более запутанные алгоритмы кодирования и декодирования, которые выстоят до тех пор, пока не появится достаточно терпеливый человек, оснащенный дебаггером и дизассемблером.
При использовании первого и второго способов кодирования единственный способ восстановления пароля - его подбор, поэтому фуекции преобразования стараются сделать достаточно трудоемкими для увеличения времени перебора. Разумеется, чем длинней пароль, тем устойчивей он к подбору. И, разумеется, по мере развития вычислительной техники выбранные ранее решения частенько устаревают. Показательный пример - классическая реализация шифрования паролей в Unix, на сегодняшний день замененная более совершенными вариантами. Технике того времени на поиск искомого пароля потребовалось бы несколько сотен лет. Стоящий у среднего пользователя довольно скромный по нынешним меркам Pentiun II справится с этой задачей за считанные недели.
Для подбора паролей используются два способа - метод "грубой силы" (brute force) и перебор по словарю. В первом случае сперва задается входной алфавит, после чего пробуются все возможные комбинации входящих в него символов - сначала пароль из одной буквы, затем из двух, трех и т.д. Способ этот гарантированно приводит к результату, единственная проблема здесь - то, что время нахождения искомой комбинации при достаточно большой длине пароля и значительном размере используемого алфавита с легкостью может превысить время жизни взломщика.
Более продуктивный способ - использование словаря. Поскольку с паролями работают все-таки люди, очень сложно заставить их придумать и тем более запомнить пароли вида sFGS@07jRns. Гораздо чаще используются слова из родного (или не совсем) языка, комбинации имен, дней рождения и т.п. Поэтому вполне логично взять файл, содержащий по возможности большее количество подобных слов, и проверить пользователей на леность. Разумеется, использование комбинаций слов, цифр, замена части букв на цифры, переменный регистр, набор русских слов в латинской раскладке и прочие "хитрые трюки" могут быть с легкостью реализованы в программе перебора, так что не стоит успокаиваться, выбрав особо стойкий пароль LoVeGoDsEx.
В некоторых случаях жизнь взломщику облегчает реализация алгоритма шифрования, например, хранящая ключ вместе с зашифрованными данными либо позволяющая использовать заранее подготовленный словарь хэшей, уже не требующий обработки затратными (по времени) функциями. Для некоторых архиваторов возможно применения так называемой атаки с известным открытым текстом (know plain text attack). позволяющей значительно сократить время "вскрытия", если хотя бы один из файлов, находящихся в запароленном архиве, доступен в незашифрованном виде. Пример реализации подобной атаки для архиватора PKZIP (на английском языке) доступен по адресу www.svn.net/mycal/junk/attack.htm

Продолжение следует.

Copyright © Свет в Internet   Designed by Свет в Internet