Научная статья на тему 'Анализ современных методов хеширования'

Анализ современных методов хеширования Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
1662
287
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
СОВРЕМЕННОЕ ХЕШИРОВАНИЕ / ХЕШИРОВАНИЕ И ХРАНЕНИЕ ПАРОЛЕЙ / ХЕШ ТАБЛИЦА И СТРУКТУРЫ / ВЫЧИСЛЕНИЯ И КРИПТОГРАФИЧЕСКАЯ ХЕШ-ФУНКЦИЯ / ПРЕОБРАЗОВАНИЕ КЛЮЧА

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Шамухамедов Гуванч Ходжамухамедович, Хыдыров Недир Какамырадович, Союнова Огулджерен Мухамметхалыловна

В статье анализируются самые распространенные,современные методы хеширования. Показаны актуальность и цели их использования в тех или иных областях, основные направления применения хеширования при сверке информации, предъявляемые требования к хеш-функциям в криптографической защите. Методы используемые для решения задач хеширования: AES, MD4/5, SHA MD, RSA и их положительные и отрицательные стороны в тех или иных областях.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Анализ современных методов хеширования»



SCIENCE TIME

АНАЛИЗ СОВРЕМЕННЫХ МЕТОДОВ ХЕШИРОВАНИЯ

Шамухамедов Гуванч Ходжамухамедович, Хыдыров Недир Какамырадович, Союнова Огулджерен Мухамметхалыловна, Туркменский государственный институт финансов, г. Ашхабад

E-mail: guwan4@mail.ru

Аннотация. В статье анализируется самые распространенные, современные методы хеширования. Показаны актуальность и цели их использования в тех или иных областях, основные направления применения хеширования при сверке информации, предъявляемые требования к хеш -функциям в криптографической защите. Методы используемые для решения задач хеширования: AES, MD4/5, SHA MD, RSA и их положительные и отрицательные стороны в тех или иных областях.

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

Хеширование (англ. hashing), как известно, это преобразование по определённому алгоритму входного массива данных произвольной длины в выходную битовую строку фиксированной длины таким образом, чтобы изменение входных данных приводило к непредсказуемому изменению выходных данных. Называются они хеш-функциями или функциями свёртки, а результаты именуются хешем, хеш-кодом или дайджестом сообщения (англ. message digest). Дайджест может быть использован в качестве контрольной суммы исходного сообщения, обеспечивая таким образом контроль целостности информации.

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

Рассмотрим хеширование в тех или иных областях.

При использовании хеширования в сверке данных производится проверка информации на идентичность оригиналу без использования оригинала. Для

59Q

SCIENCE TIME

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

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

- для проверки парольной фразы. Чаще всего на целевых объектах хранятся лишь хеш-значения парольной фразы. Так как хранить парольные фразы на целевых объектах нецелесообразно. При несанкционированном доступе к файлу с фразами становятся известны все парольные фразы. В случае хранения хеш -значений можно будет узнать только лишь хеш-значения, которые в свою очередь необратимы в исходные данные.

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

Также хеширование используется для криптографической защиты информации. В криптографии к хеш-функциям предъявляются требования такие как стойкость к коллизиям первого рода: для заданного сообщения M должно быть практически невозможно подобрать другое сообщение M', имеющее такой же хеш. А также учитывается стойкость к коллизиям второго рода: должно быть практически невозможно подобрать пару сообщений (M, M'), имеющих одинаковый хеш.

Вот самые распространенные методы хеширования:

- DES/Triple DES. (Data Encryption Standard, стандарт шифрования данных). В основе данного стандарта лежит добавление 8-битовой строки, состоящий из случайных букв или цифр. Поскольку современные вычислительные средства позволяют быстро раскрыть ключ, то был разработан алгоритм Triple DES, представляющий собой процедуру шифрования такую же как в алгоритме DES, но повторяющуюся 3 раза;

- AES. (Advanced Encryption Standard, улучшенный стандарт шифрования). Этот способ хеширования использует 16 байтовое разбиение на блоки и поддерживает размеры ключей (дописываемых символов) - 16, 24 и 32 бита. Указанный алгоритм является довольно быстрым и отно-сительно надежным;

- MD4/5, SHA MD (Message Digest). Указанный стандарт является одним из самых известных на сегодняшний день. Алгоритм MD5 в процессе своей работы разбивает пароль на части по 64 байта, затем дописывает последовательности 64 -битового значения случайных символов. После чего создаются 4 переменных с определенным значением. Дальше выполняются 4 цикла по 4 оператора, в

59 1

которых с помощью специальной функции эти переменные пере-мешиваются и после каждого цикла записываются в хеш;

- RSA (Rivest Shamir Algorithm). Криптографическая стойкость этого алгоритма ниже чем у MD5.

Алгоритм выработки хеша должен обладать следующими свойствами:

- постоянством размера. Для входного массива данных произвольного размера результатом должен быть блок данных фиксированного размера;

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

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

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

Распространенным методом является использование эмпирически подобранной хеш-функции [4], которая по значению ключа производит вычисление значения индекса в границах массива и равномерно распределяет ключи по элементам массива. Если выражение ORD(k) обозначает порядковый номер ключа k в упорядоченном множестве до-пустимых ключей, а N - число элементов в массиве записей, то одной из наиболее естественных хеш-функций является H(k) = ORD(k) MOD N, т.е. взятие остатка от деления порядкового номера ключа на число элементов массива. Такая функция выполняется очень быстро, если N является степенью числа 2. Для числовых ключей функция обеспечивает достаточную равномерность распределения ключей в массиве.

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

Используются и более сложные способы вычисления хеш-функции [3], основанные, например, на вырезке поднабора бит из битового представления

SCIENCE TIME

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

- использовать изначальную хеш-функцию, теряя производительность из-за роста коллизий;

- выбрать хеш-функцию «с запасом», что повлечет потери дискового пространства;

- периодически менять функцию, пересчитывать все адреса. Такой метод отнимает много ресурсов.

Эти функции полезны для сортировки, которая не потребует никакой дополнительной работы. Возможно избежать множества сравнений, так как, для того, чтобы отсортировать объекты по возрастанию, достаточно просто линейно просканировать хеш-таблицу. Всегда можно создать такую функцию, при условии, что хеш-таблица больше, чем пространство ключей. Таким образом можно сделать следующие выводы:

- применяя методы хеширования для поиска информации возможно значительно сократить процессорное время за счет анализа не всего массива данных, а только некоторой его части;

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

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

Литература:

1. Боричев С.Г., Серов Р.Е. Основы современной криптографии

2. Варфоломеев А. А., Жуков А.Е., Пудовкина М.А. Поточные криптосистемы. Основные свойства и методы анализа стойкости. М.: ПАИМС, 2000.

3. Дональд Кнут. Искусство программирования, том 3. Сортировка и поиск М.: «Вильямс», 2007

4. Методы сортировки и поиска [Электронный ресурс]. - URL: http:// www.citforum.ru/programming/theory/sorting/sorting2.shtml

i Надоели баннеры? Вы всегда можете отключить рекламу.