Закрыть

Как работают алгоритмы хеширования данных. Лучшие алгоритмы хеширования

В закладки
Аудио
Как работают алгоритмы хеширования данных. Лучшие алгоритмы хеширования
Содержание

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

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

Криптографические алгоритмы отличаются по сложности, разрядности, криптографической надежности, особенностям работы. 

Алгоритмы хеширования появилась более пятидесяти назад, и за эти годы, хотя кардинальных изменений не произошло, хеширование данных приобрело много новых свойств.

Что такое хеширование?

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

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

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

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

Как работает хэш-функция? Сравнение хеш функций

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

На примере слов “Binance“ и “binance”, которые пропущены через алгоритм хеширования SHA-256 (используется в сети Биткоин), проиллюстрируем это.

SHA-256

Входные данные

Результат (256 бит)

Binance

f1624fcc63b615ac0e95daf9ab78434ec2e8ffe402144dc631b055f711225191

binance

59bba357145ca539dcd1ac957abc1ec5833319ddcae7f5e8b5da0c36624784b2

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

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

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

SHA-1

Входные данные

Результат (160 бит)

Binance

7f0dc9146570c608ac9d6e0d11f8d409a1ee6ed1

binance

e58605c14a76ff98679322cca0eae7b3c4e08936

Акроним SHA расшифровывается как Secure Hash Algorithms (безопасный алгоритм хеширования). Он относится к набору криптографических хэш-функций, который включает такие алгоритмы как SHA-0 и SHA-1 вместе с группами SHA-2 и SHA-3. SHA-256 является частью группы SHA-2, наряду с SHA-512 и другими аналогами. В настоящее время, только группы SHA-2 и SHA-3 считаются безопасными.

Коллизии

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

Коллизии возникают из-за того, что в хеш используется мало символов. Чем меньше знаков использует конечная формула, тем больше вероятность итерации (повтора) одного и того же хэш-кода на разные наборы данных. Чтобы снизить риск появления коллизии, применяют двойное хеширование строк, образующее открытый и закрытый ключ – то есть, используется 2 протокола, как, например, в сети Bitcoin. 

Технические параметры

Рассмотрим основополагающие характеристики протоколов хеширования:

  1. Наличие внутрисистемных уравнений, позволяющих модифицировать нефиксированный объем информации в лаконичный набор знаков и цифр заданной длины.
  2. Прозрачность для криптографического аудита.
  3. Наличие функций, которые дают возможность надежно кодировать первоначальную информацию.
  4. Способность к расшифровке хэш-суммы с использованием вычислительного оборудования средней мощности.

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

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

Требования

К эффективной во всех отношениях хэш-функции выдвигаются следующие требования:

  • протокол должен обладать чувствительностью к изменениям, происходящим во входящих документах – то есть, обязан распознавать перегруппировку абзацев, переносы, другие элементы текстовых данных;
  • технология обязана таким образом преобразовывать поток информации, чтобы на практике было невозможно осуществить обратную процедуру – восстановить из значения хэш первоначальные данные;
  • протокол должен использовать такие математические уравнения, которые исключают или значительно снижают факт появления коллизии.

Виды хешей 

  • MD5 - хеш-функция была описана в 1991 году Роном Ривестом. В настоящее время она считается небезопасной и не используется в криптографии.
  • SHA-1 - алгоритм хеширования 1 используется с 1995 года, но не считается безопасным с 2005 года, после того, как его несколько раз успешно атаковали. Надежнее использовать SHA-2 или SHA-3.
  • SHA-2 - это семейство хеш-функций, которые являются преемниками SHA-1. Функции SHA-2 содержат многочисленные улучшения, которые делают их безопасными. Однако SHA-256 и SHA-512 бывают уязвимы для атак с увеличением длины, поэтому в определенных ситуациях лучше всего реализовывать SHA-3.
  • SHA-3 - самый новый член семейства Secure Hash Algorithm, он построен совсем не так, как его предшественники.

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

    • RIPEMD - еще одно семейство функций, разработанное академическим сообществом. RIPEMD основан на многих идеях MD4 (предшественника MD5) и не ограничен никакими патентами. RIPEMD-160 считается безопасным, но он не получил широкого распространения.
    • Whirlpool - это хеш-функция, основанная на модификации AES, она также не подпадает под действие каких-либо патентов. Считается безопасной, но работает медленнее, чем альтернативные варианты.

Популярные алгоритмы хеширования

Перечислим, какие алгоритмы хеширования являются самыми известными: 

  • Message Digest 5 (MD5)

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

  • RSA

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

  • Безопасный алгоритм хеширования (SHA)

Secure Hash Algorithm (SHA) - это семейство криптографических хеш-функций, которые используются большинством криптовалют. Они были разработаны Национальным институтом стандартов и технологий. Последний был выпущен в 2000 году. Считаются одними из самых безопасных алгоритмов хеширования. 

  • Scrypt

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

  • Ethash

Ethash - это алгоритм майнинга Proof-of-Work, созданный и реализованный сетью Ethereum. Алгоритм хеширования был разработан для решения трех основных задач криптовалютного сообщества: развить устойчивость к ASIC, для легкой проверки клиентов и обработки всей цепочки хранения. Виталик Бутерин принимал участие в создании этого алгоритма хеширования.

Заключение

В любой технологии шифрования все сводится к решению одной из двух задач: 

1) увеличения сложности внутренних операций хэширования;

2) увеличения длины hash-выхода данных с расчетом на то, что вычислительные мощности атакующих не смогут эффективно вычислять коллизию.

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

Предыдущая статья Понравилась статья? 0 Следующая статья
Комментарии: 0
Оставить комментарий
Сервис подписки в данный момент находится в завершающей стадии разработки. Регулярная отправка новостных материалов на Ваш email начнется в ближайшее время. Повторная подписка не потребуется.
Добавить еще