SHA-256 алгоритм хеширования

SHA-256 — это алгоритм, вернее криптографическая хэш-функция, которая была разработана Агентством национальной безопасности США.

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

Что такое майнинг

Что такое майнинг

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

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

В Bitcoin критерием пригодности хеша считается необходимое количество «0» в его начале. Обнаружить подобное значение также невероятно трудно, как, например, отыскать номер автомобиля или сотового, кончающегося на пару 0. Разумеется, сделать такое для хеш-функции в много раз сложнее. В настоящее время, правильное значение должно включать приблизительно 17 начальных нулей, чему соответствует лишь одно из 1,4 умноженное на 10 в 20 степени. Проводя сравнение, отыскать подобный хеш значительно сложнее, нежели отыскать определенную песчинку среди всей нескончаемой массы песка на планете.

Особенности протокола SHA-256

Первоначальная версия алгоритма SHA-256 была создана Агентством национальной безопасности США весной 2002 года. Спустя несколько месяцев Национальный метрологический университет опубликовал новоявленный протокол шифрования в принятом на федеральном уровне стандарте безопасной обработки данных FIPS PUB 180-2. Зимой 2004 года он пополнился второй версией алгоритма.

В течение следующих 3 лет АНБ выпустила патент на SHA второго поколения под лицензией Royalty-free. Именно это дало старт применению технологии в гражданских сферах.

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

Данный протокол работает с информацией, раздробленный на части по 512 бит (или другими словами 64 байта). Он производит ее криптографическое «смешивание», а затем выдаёт 256-битный хеш-код. В состав алгоритма входит сравнительно простой раунд, который повторяется 64 раза.

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

  • Показатель размера блока (байт) – 64.
  • Предельно допустимая длина сообщения (байт) – 33.
  • Характеристика размера дайджеста сообщения (байт) – 32.
  • Стандартный размер слова (байт) – 4.
  • Параметр длины внутреннего положения (байт) – 32.
  • Число итераций в одном цикле – всего 64.
  • Достигаемая протоколом скорость (MiB/s) – примерно 140.

Работа алгоритма SHA-256 базируется на методе построения Меркла-Дамгарда, в соответствии с которым начальный показатель сразу после внесенного изменения разделяется на блоки, а те, в свою очередь, на 16 слов.

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

Также стоит упомянуть 6 битовых операций, на основе которых функционирует протокол:

  • «and» — побитовая операция «И»;
  • «shr» — перемещает значение на требуемое количество бит вправо;
  • «rots» — команда аналогичная по действию предыдущий, с той лишь разницей, что осуществляется циклический сдвиг;
  • «||» или конкатенация — операция соединения частей линейной структуры, чаще всего строк;
  • «xor» — команда, убирающая «ИЛИ»;
  • «+» — обыкновенная операция сложения.

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

Криптографический смысл SHA-256

Криптографический смысл SHA-256

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

Первые исследования SHA-256 на присутствие уязвимостей начали осуществляться специалистами с 2003 года. На тот момент ошибок в протоколе обнаружено не было.

Однако, уже в середине 2008 года группа экспертов из Индии смогла отыскать коллизии для 22 итераций архитектур семейства SHA. Через несколько месяцев был предложен способ разработки коллизий для усеченного варианта протокола, а затем и для 31 итерации хеширования непосредственного самого SHA-256.

Во время анализа функции свертки осуществляется тестирование ее сопротивляемости к 2 разновидностям атак:

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

Создатели второго поколения алгоритма SHA решили, что новый механизм шифрования будет функционировать на основе совершенно других принципов. Так, осенью 2012 года на свет появился протокол третьей серии — Keccak.

Практическое применение и сертификация технологии SHA-256

Законодательством Соединенных Штатов Америки разрешается использование SHA-256 и прочих аналогичных методов хеширования в определенных государственных программах для защиты сведений. Кроме того, допускается применение алгоритма коммерческими компаниями.

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

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

В противовес Bitcoin, Litecoin, Dogecoin и прочие схожие «коины» используют протокол шифрования Scrypt, который оснащен функцией повышения сложности. Данный алгоритм в ходе деятельности сохраняет 1024 различных значения хеш-функций, а уже на выходе соединяет их и получает преобразованный результат. Благодаря этому для реализации протокола нужны несравнимо большие вычислительные мощности.

Резюме

Подводя итог, можно сказать, что протокол SHA-256 оказался чересчур легким и сегодня имеется целое множество специализированных девайсов (так называемые майнеры), которые успешно обходят его. С их появлением отпала необходимость майнить на процессоре или собирать фермы из видеокарт, поскольку ASIC-устройства позволяют своим владельцам заработать намного больше. Однако, у этого есть и обратная сторона. Использование майнеров слишком сильно централизует криптовалюту, а значит, необходимо внедрение новых протоколов хеширования. Таким алгоритмом стал Scrypt — куда более продвинутый защитный механизм, который требует значительной производительности и поэтому теоретически лишает специальные приборы особого преимущества.

С позиции рядового пользователя нет никакой разницы между протоколами SHA-256 и Scrypt. Можно майнить цифровую валюту своим компьютером или фермой на любом из данных протоколов.

Алгоритм SHA-256 на сегодняшний день занимает более 40% всего рынка, однако, вне всякого сомнения, имеются и другие. И в скором времени они потеснят прославленного предшественника. Так, из сравнительно свежих необходимо упомянуть об особенно «майнероустойчивом» протоколе Dagger, который собираются использовать в децентрализованной площадке Эфириум. Возможно, именно он примет эстафету лидера в области хеширования и займет место SHA-256.

Совсем плохоПлохоНормальноХорошоСупер (Поставьте, пожалуйста Вашу оценку материалу. Спасибо :))


Загрузка...

Читайте также: