doc - Курс "Защита информации".

advertisement
Эссе по курсу “Защита информации”
кафедра радиотехники
Московский физико-технический институт (ГУ МФТИ)
Хеширование.
Чуркин Илья
Гр. 413
Содержание.
1. Описание хеширования.
2. Применение хешей.
3. Методы взлома и способы защиты от него.
4. Заключение.
5. Список литературы
1. Описание хеширования.
Хеширование ( от англ. hashing ) — преобразование входных данных
произвольной длины в выходную битовую строку фиксированной длины таким
образом, чтобы изменение входных данных приводило к непредсказуемому
изменению выходных данных. Такие преобразования также называются хешфункциями или функциями свёртки, а их результаты называют хешем или
хеш-кодом.
Простым примером хеширования может служить нахождение контрольной
суммы сообщения: сумма кодов всех входящих в него символов, от которой
берётся несколько последних цифр. На данный момент существует много
способов хеширования для различных случаев.
В общем случае алгоритмы хеширования состовляются таким образом, чтобы
было практически невозможно найти два сообщения с одинаковым хешем. Но
совсем этого избежать на данный момент невозможно, поэтому происходят
коллизии. Каждая хеш-функция оценивается по стойкости к возникновению
коллизий. В связи с этим выделяют криптографически стойкие хеш-функции.
Криптографическая стойкость хеш-функций обеспечивается следующими
свойствами:
1. Стойкость к коллизиям первого рода: для заданного сообщения
должно быть практически невозможно подобрать другое сообщение
, имеющее такой же хэш. Это свойство также называется
необратимостью хэш-функции.
2. Стойкость к коллизиям второго рода: должно быть практически
невозможно подобрать пару сообщений
хэш.
, имеющих одинаковый
Согласно парадоксу о днях рождениях, нахождение коллизии для хэш-функции
с длиной значений n бит требует в среднем перебора около 2n / 2 операций.
Поэтому n-битная хэш-функция считается криптостойкой, если
вычислительная сложность нахождения коллизий для нее близка к 2n / 2.
2. Применение хешей.
С наши дни с хешированием мы сталкиваемся едва ли не на каждом шагу: при
работе браузером (список Web-ссылок), текстовым редоктором или
переводчиком (словари), языками скриптов (Perl, PHP, Python и др.),
компилятором (таблица символов) и т.д.
Вот основные направления, которые используют алгоритмы хеширования:
1. Проверка парольной фразы
Сегодня опасно хранить пароли на целевых объектах, ведь от туда они могут
быть похищены злоумышленниками и использованы в своих целях. Поэтому
там хранятся только хеши паролей, которые нельзя обратить и узнать пароль.
При проверки же пароля, вводимый пароль подвергается хешированию и
сравниваются хеш-значения.
Самые расспространенных алгоритмы:
MD5 (MD4, MD2), SHA1, MySQL 3.23, MySQL SHA1 – используются в интернет
скриптах.
LanMan, NT LanMan – используются в ОС Microsoft Windows.
2. Ускорение поиска данных
Хеш код очень часто используют для ускорения поиска данных. Например, в
базе данных, при записи текстовых полей может расчитываться их хеш-код и
записываться в отдельное поле. Тогда при поиске данных нужно будет
вычислить хеш-код данных и искать уже не по всей базе, а только по одному
ее разделу.
Простой пример такого типа поиска: помещение слов в словаре по алфавиту.
Первая буква является хеш-кодом, поэтому при поиске мы будем
просматривать не весь словарь, а только нужную букву.
3. Вычисление контрольной суммы
Для проверки пакета на наличие ошибок часто используется контрольная
сумма, которая передается вместе с сообщением. На приемном конце, при
получении сообщения еще раз вычисляется контрольная сумма и если значие
совпадает с переданым значит сообщение передано без ошибок.
4. Вычисление электронной цифровой подписи.
Электронная цифровая подпись используется для защиты электронного
документа от подделки. Получается в результате преобразования информации
с использованием закрытого ключа, позволяет идентифицировать владельца
ключа подписи и установить отсутсвие искажения информации в электронном
документе. При создании цифровой подписи в России по госту ГОСТ Р 34.102001 используется алгоритм хеширования ГОСТ Р 34.11-94(ГОСТ Р 34.311-95).
3. Методы взлома и способы защиты от него.
С хешированием мы сталкиваемся довольно часто, особенно в интернете. А
значит стали появляться способы взлома хешей. Единственным известным их
уязвимым местом являются коллизии, поэтому их поиском и занимаются
программы для взлома хешей.
Первый вариант – это простой перебор, при котором выполняется проход по
всем возможным вариантам. Но для сложных вариантов это занимает очень
много времени, поэтому токой способ решили доработать.
В настоящее время для вскрытия паролей, преобразованных при помощи хешфункции используют радужные таблицы.
Радужная таблица (от англ. rainbow table) — специальный вариант таблиц
поиска (lookup table) использующий механизм уменьшения занимаемой памяти
за счет увеличения времени поиска.
Радужная таблица создается построением цепочек возможных паролей.
Каждая цепочка начинается со случайного возможного пароля, затем
подвергается действию хеш-функции и функции редукции. Данная функция
преобразует результат хеш-функции в некоторый возможный пароль.
Промежуточные пароли в цепочке отбрасываются и в таблицу записывается
только первый и последний элементы цепочек. Создание таблиц требует
времени и памяти (вплоть до сотен гигабайт), но они позволяют очень быстро
(по сравнению с обычными методами) восстановить исходный пароль.
Для восстановления пароля данное значение хеш-функции подвергается
функции редукции и ищется в таблице. Если не было найдено совпадения, то
снова применяется хеш-функция и функция редукции. Данная операция
продолжается, пока не будет найдено совпадение. После нахождения
совпадения, цепочка содержащая его, восстанавливается для нахождения
отброшенного значения, которое и будет искомым паролем.
В итоге получается таблица, которая может с высокой вероятностью
восстановить пароль за небольшое время.
Таблицы могут взламывать только ту хеш-функцию, для которой они
создавались, то есть таблицы для MD5 могут взломать только хеш MD5.
Впервые этот метод был использован в программе Ophcrack для взлома
хешей LanMan использующихся в Microsoft Windows. Позже была разработана
более совершенная программа RainbowCrack, которая может взламывать
хеши по нескольким алгоритмам(LanMan, NT LanMan, MD5, MD4, MD2, SHA1,
MySQL 3.23, MySQL SHA1, Cisco PIX, RIPEMD-160 и др.). Необходимость в
больших таблицах для взлома сложных хешей привела к появлению проектов
распределенного вычисления радужных таблиц и online-взломах хешей,
поскольку вычиление таблиц такого размера на одной машине не
представляется возможным. Современные программы содержат порядка 1 Тб
таблиц для каждого алгоритма.
В настоящее время идет разработка программы The UDC, которая позволяет
строить таблицы не по набору символов, а по набору словарей, что позволяет
восстанавливать более длинные пароли, нежели RainbowCrack.
Защита от радужных таблиц.
Для защиты от радужных таблиц используют метод, который делает их
неэфективными. Для этого используют хеш-функции, которые включают соль
(salt). Например, рассмотрим такую функцию для создания хеша от пароля:
Хеш = соль + MD5 (пароль + соль)
Здесь «+» означает конкатенацию.
Поэтому для восстановления пароля взломщику необходимы таблицы для
всех значений соли. Таким образом соль увеличивает длину и сложность
пароля и зачастую предотвращает восстановление пароля.
В настоящее время практически все дистрибутивы ОС Unix, GNU/Linux и BSD
используют хеши с солью для хранения системных паролей. Хотя многие
приложения, интернет скрипты все еще используют просто хеш (в основном
MD5) без соли. OC Microsoft Windows использует хеши Lan Manager и NT Lan
Manager, которые так же не используют соль, что делает их одними из самых
популярных для создания радужных таблиц.
4. Заключение.
В наши дни хеш-функции играют огромную роль, они применяются
повсюду: в интернете, электронных словарях, поисковиках, языках
программирования, программых защиты и т.д. Поэтому данное направление
довольно хорошо и быстро развивается, а разработка новых методов
хеширования является достаточно приоритетной задачей. Таким образом
дальнейшее развитие этого направления не заставит себя долго ждать.
5. Список литературы:
1. http://www.wikipedia.org
2. http://planetmath.org/encyclopedia/Hashing.html
3. Хлебостроев В. Г. «Технологии программирования»
Download