No Image

Хэш функция sha 256

СОДЕРЖАНИЕ
0 просмотров
11 марта 2020

SHA-2 (англ. Secure Hash Algorithm Version 2 — безопасный алгоритм хеширования, версия 2) — семейство криптографических алгоритмов — однонаправленных хеш-функций, включающее в себя алгоритмы SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/256 и SHA-512/224.

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

Содержание

История [ править | править код ]

Хеш-функции SHA-2 разработаны Агентством национальной безопасности США и опубликованы Национальным институтом стандартов и технологий в федеральном стандарте обработки информации FIPS PUB 180-2 в августе 2002 года [1] . В этот стандарт также вошла хеш-функция SHA-1, разработанная в 1995 году. В феврале 2004 года в FIPS PUB 180-2 была добавлена SHA-224 [2] . В октябре 2008 года вышла новая редакция стандарта — FIPS PUB 180-3 [3] . В марте 2012 года вышла последняя на данный момент редакция FIPS PUB 180-4, в которой были добавлены функции SHA-512/256 и SHA-512/224, основанные на SHA-512 (поскольку на 64-битных архитектурах SHA-512 работает быстрее, чем SHA-256) [4] .

В июле 2006 года появился стандарт RFC 4634 «Безопасные хеш-алгоритмы США (SHA и HMAC-SHA)», описывающий SHA-1 и семейство SHA-2.

Агентство национальной безопасности от лица государства выпустило патент на SHA-2 [5] под лицензией Royalty-free [6] .

Алгоритм [ править | править код ]

Общее описание [ править | править код ]

Хеш-функции семейства SHA-2 построены на основе структуры Меркла — Дамгора.

Исходное сообщение после дополнения разбивается на блоки, каждый блок — на 16 слов. Алгоритм пропускает каждый блок сообщения через цикл с 64 или 80 итерациями (раундами). На каждой итерации 2 слова преобразуются, функцию преобразования задают остальные слова. Результаты обработки каждого блока складываются, сумма является значением хеш-функции. Тем не менее, инициализация внутреннего состояния производится результатом обработки предыдущего блока. Поэтому независимо обрабатывать блоки и складывать результаты нельзя. Подробнее — см. псевдокод.

Алгоритм использует следующие битовые операции:

Сравнение хеш-функций [ править | править код ]

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

Хеш-функция Длина дайджеста сообщения (бит) Длина внутреннего состояния (бит) Длина блока (бит) Максимальная
длина сообщения (бит)
Длина слова (бит) Количество итераций в цикле Скорость (MiB/s) [7]
SHA‑256, SHA‑224 256/224 256 (8 × 32) 512 2 64 − 1 32 64 139
SHA‑512, SHA‑384, SHA‑512/256, SHA‑512/224 512/384/256/224 512 (8 × 64) 1024 2 128 − 1 64 80 154

Псевдокод [ править | править код ]

SHA-256 [ править | править код ]

SHA-224 идентичен SHA-256, за исключением:

  • для инициализации переменных h0 — h7 используются другие начальные значения,
  • в итоговом хеше опускается значение h7 .

SHA-512 имеет идентичную структуру, но:

  • слова имеют длину 64 бита,
  • используется 80 раундов вместо 64,
  • сообщение разбито на чанки по 1024 бит,
  • начальные значения переменных и константы расширены до 64 бит,
  • постоянные для каждого из 80 раундов — 80 первых простых чисел,
  • сдвиг в операциях rotr и shr производится на другое число позиций.

SHA-384 идентичен SHA-512, за исключением:

  • переменные h0 — h7 имеют другие начальные значения,
  • в итоговом хеше опускаются значения h6 и h7 .

SHA-512/256 идентичен SHA-512, за исключением:

  • переменные h0 — h7 имеют другие начальные значения,
  • итоговый хеш обрезается до левых 256 бит.

SHA-512/224 идентичен SHA-512, за исключением:

  • переменные h0 — h7 имеют другие начальные значения,
  • итоговый хеш обрезается до левых 224 бит.

Примеры [ править | править код ]

Ниже приведены примеры хешей SHA-2. Для всех сообщений подразумевается использование кодировки ASCII.

Малейшее изменение сообщения в подавляющем большинстве случаев приводит к совершенно другому хешу вследствие лавинного эффекта. К примеру, при изменении dog на cog получится:

Криптоанализ [ править | править код ]

В 2003 году Гилберт и Хандшух провели исследование SHA-2, но не нашли каких-либо уязвимостей. [8] Однако в марте 2008 года индийские исследователи Сомитра Кумар Санадия и Палаш Саркар опубликовали найденные ими коллизии для 22 итераций SHA-256 и SHA-512. [9] В сентябре того же года они представили метод конструирования коллизий для усечённых вариантов SHA-2 (21 итерация). [10] [11] Позднее были найдены методы конструирования коллизий для 31 итерации SHA-256 [12] и для 27 итераций SHA-512 [13] .

Читайте также:  Что такое фишинг вирус

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

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

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

Ввиду алгоритмической схожести SHA-2 с SHA-1 и наличия у последней потенциальных уязвимостей принято решение, что SHA-3 будет базироваться на совершенно ином алгоритме. [14] [15] 2 октября 2012 года NIST утвердил в качестве SHA-3 алгоритм Keccak.

Применение и сертификация [ править | править код ]

SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/256 и SHA-512/224 законом США допускаются к использованию в некоторых правительственных приложениях, включая использование в рамках других криптографических алгоритмов и протоколов, для защиты информации, не имеющей грифа секретности. Стандарт также допускает использование SHA-2 частными и коммерческими организациями. [16]

Хеш-функции SHA-2 используются для проверки целостности данных и в различных криптографических схемах. На 2008 год семейство хеш-функций SHA-2 не имеет такого широкого распространения, как MD5 и SHA-1 [17] , несмотря на обнаруженные у последних недостатки.

Некоторые примеры применения SHA-2 указаны в таблице:

Область применения Детали
S/MIME SHA-224, SHA-256, SHA-384 или SHA-512 дайджесты сообщений [18]
OpenLDAP SHA-256, SHA-384 или SHA-512 хеши паролей [19]
DNSSEC SHA-256 дайджесты DNSKEY в протоколе DNSSEC [20]
X.509 SHA-224, SHA-256, SHA-384 и SHA-512 используются для создания электронной цифровой подписи сертификата [21]
PGP SHA-256, SHA-384, SHA-512 используются для создания электронной цифровой подписи [22]
IPSec Некоторые реализации поддерживают SHA-256 в протоколах ESP и IKE [23]
DSA Семейство SHA-2 используется для создания электронной цифровой подписи [24]
SHACAL-2 Блочный алгоритм шифрования SHACAL-2 построен на основе хеш-функции SHA-256
Bitcoin Эмиссия криптовалюты Bitcoin осуществляется посредством поиска строк, SHA-256-хеш которых имеет заданную структуру

Как показали исследования [25] , алгоритмы SHA-2 работают в 2—3 раза медленнее других популярных хеш-алгоритмов MD5, SHA-1, Tiger и RIPEMD-160.

Сертификация [ править | править код ]

Реализации SHA-2, как и всех Федеральных стандартов обработки информации, могут быть сертифицированы для использования в некоторых приложениях на территории США. Сертификация происходит в рамках процедуры Cryptographic Module Val > [en] , которая проводится Национальным институтом стандартов и технологий США совместно с канадским Бюро безопасности связи.

На 5 ноября 2008 года было сертифицировано более 250 реализаций SHA-2, четыре из которых могли оперировать сообщениями с длиной в битах, не кратной восьми. [26]

Сертифицировано FIPS PUB 180-4, CRYPTREC и NESSIE.

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

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

SHA-2 включает значительные изменения от своего предшественника, SHA-1. SHA-2 семья состоит из шести хэш-функции с дайджест (хэш-значений), которые находятся 224, 256, 384 или 512 бит: алгоритм SHA-224, SHA-256, SHA-384, алгоритм SHA-512, алгоритм SHA-512/224, алгоритм SHA-512/256.

Читайте также:  Mg2440 сброс памперса программа

SHA-256 и SHA-512 являются новыми хэш-функциями, вычисленными с 32-разрядными и 64-разрядными словами соответственно. Они используют различные количества сдвига и аддитивные константы, но их структуры в остальном практически идентичны, отличаясь только количеством раундов. SHA-224 и SHA-384 являются просто усеченными версиями первых двух, вычисленными с различными начальными значениями. SHA-512/224 и SHA-512/256 также являются усеченными версиями SHA-512, но начальные значения генерируются с использованием метода, описанного в федеральных стандартах обработки информации (FIPS) PUB 180-4. SHA-2 было опубликовано в 2001 Национальным Институтом стандартов и технологии (NIST) Федеральный стандарт США (FIPS). Семейство алгоритмов SHA-2 запатентовано в патенте США 6829355. Соединенные Штаты выпустили патент под безвозмездной лицензией.

В настоящее время лучшим публичные нападки сломать прообраз сопротивление по 52 из 64 раундов SHA-256 или 57 из 80 раундов алгоритма SHA-512, и столкновения сопротивление по 46 из 64 раундов алгоритма 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.
Читайте также:  Excel удалить пустые строки внизу листа

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вывод

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

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

Комментировать
0 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
Adblock detector