Как работает алгоритм хеширования SHA-256
Этот механизм получил широкую популярность после запуска майнинга Bitcoin в 2009 году. Однако государственные и коммерческие компании применяют криптошифрование для защиты информации с 1995-го. Алгоритм SHA-256 используется в протоколах TCP/IP/SSL и для проверки подлинности исходного документа. Механизм универсален, прост и устойчив к взлому, поэтому до сих пор популярен, несмотря на появление более современных версий. В статье — о том, как работает алгоритм SHA-256.
В основе криптошифрования лежит технология Меркла-Дамгарда — сообщение любой длины разбивается на 16 частей и перемешивается 64 раза. На выходе получается универсальный идентификатор фиксированного объема. Для шифрования следующего блока используют хеш предыдущего. Изменение хотя бы одного символа делает недействительной всю цепочку.
- Что такое SHA-256
- Сертификация
- Особенности
- История возникновения алгоритма
- Криптоанализ хеш-функции
- Шаги алгоритма хеширования SHA-256
- Предварительный
- Инициализирование значения хеша
- Инициализация округленных констант
- Цикл фрагментов
- Расписание сообщений
- Сжатие
- Изменение окончательных значений
- Финальный хеш
- Как применяется алгоритм
- Какие криптовалюты можно майнить на алгоритме
- Часто задаваемые вопросы
Что такое SHA-256
Аббревиатура расшифровывается как Secure Hash Algorithm (безопасный алгоритм расчета хеша), а 256 означает количество бит в ключе. В 2023 году это один из наиболее надежных методов защиты информации. С его помощью можно превратить любое значение в уникальный цифровой код фиксированной длины.
Каждому сообщению может соответствовать только один хеш. При изменении любого символа в исходных данных идентификатор будет уже другим. Таким образом, можно подтвердить подлинность документа, не раскрывая содержащейся в нем информации.
Сертификация
Алгоритм разработан Агентством национальной безопасности США для защиты государственных документов. Позже было разрешено коммерческое использование семейства криптопротоколов SHA-2. Для этого нужно пройти процедуру сертификации — Cryptographic Module Validation Program (CMVP). Всего к 2023 году ее выполнили более 250 вариаций SHA-2.
Обмен информацией в интернете происходит с помощью протокола HTTP. После получения запроса сервер отправляет данные (картинки, текст, ссылки) в исходном виде. Использовать такое соединение небезопасно — к нему может получить доступ третья сторона (например, интернет-провайдер). Поэтому в 2000 году протокол модернизировали. Зашифрованная версия HTTPS работает так:
- Пользователь передает запрос.
- Сервер отправляет данные о сертификате SSL/TLS и публичный ключ.
- Браузер проверяет информацию и создает на ее основе одноразовый код.
- Данные передаются по каналу в зашифрованном виде (на основе идентификатора сервера и онлайн-обозревателя).
Сначала для кодировки использовали алгоритм SHA-1. Но в 2018-2020 годах компании стали переходить на усовершенствованную версию SHA-2. Модернизация систем занимает много времени из-за проблем совместимости.
Особенности
Алгоритм применяют для защиты информации во многих областях. SHA-256 преобразует данные в идентификатор фиксированной длины. Файлы хранятся на сервере в зашифрованном виде. Даже если хакеры смогут получить к ним доступ, исходная информация не будет раскрыта. Особенности алгоритма:
- Работает на основе метода Меркла-Дамгарда. Массив данных делится на 16 блоков, каждый из которых сжимается и перемешивается 64 раза.
- Идентификатор имеет объем 256 байт.
- На выходе алгоритм выдает случайный хеш. Не существует другого способа найти верное значение, кроме перебора всех возможных вариантов.
- Чем больше мощность оборудования, тем выше вероятность получения правильного хеша.
История возникновения алгоритма
Первая версия криптозащиты SHA-1 появилась в 1995 году. Алгоритм применяли для защиты информации военные и гражданские чиновники. В 2002 году АНБ США выпустило усовершенствованную версию — SHA-2. Сначала был выдан патент только для военного использования. Но в 2005-м технологию разрешили применять в коммерческих целях.
Криптоанализ хеш-функции
Перед началом использования протокола эксперты проверяют его на способность дешифровки без использования ключа. Тестируется устойчивость к таким видам атак:
- Коллизии — одинаковый хеш для разных входных данных. От устойчивости зависит достоверность и защита цифровых подписей.
- Прообраз — нахождение исходного сообщения по хешу. От этого параметра зависит безопасность паролей для аутентификации на серверах.
Программисты со всего мира пытались взломать код SHA-256 с 2003 года. Найти коллизии удалось только в 2008-м. Индийские ученые опубликовали работу с решениями для 22 итераций SHA-256. Разработчики исправили уязвимости. В 2012 году вышла новая, модернизированная версия, основанная на другом принципе.
Несмотря на недостатки, SHA-256 считается надежным протоколом. До появления криптовалют его не получалось взломать. Коллизии встречаются редко, а для подбора хеша нужно иметь производительное вычислительное оборудование. Другие современные алгоритмы (например, Scrypt) основаны на более сложном принципе. Поэтому разработчики не могут создать для них ASIC.
Шаги алгоритма хеширования SHA-256
Hash-функция — это метод кодирования, при котором создаются уникальные отпечатки (цифровые подписи) фиксированной длины. На вход можно подать данные любого объема. Одно из главных свойств хеширования — необратимость. По известному идентификатору нельзя получить исходные данные. Общий принцип работы SHA-256 достаточно простой:
- Разбиение входной информации на 64-байтные блоки.
- Перемешивание.
- Генерирование 256-битного хеша.
Предварительный
Данные должны соответствовать заданному стандарту. Сначала информацию надо подготовить. Для этого:
- Сообщение преобразуют в двоичный код. В конец добавляют биты информации. Первый всегда равен единице. Остальное заполняют нулями, пока объем не достигнет 448 бит (512-64).
- Добавляют информацию о длине хеш-функции SHA-256. В конец нужно записать 64 бита в виде целого числа (функция big-endian) в двоичном формате.
Инициализирование значения хеша
В алгоритме используют жестко запрограммированные константы (h0-h7). Чтобы их получить, нужно:
- Вычислить квадратный корень первых восьми простых чисел.
- Взять только начальные 32 бит информации (конец отбрасывается).
Инициализация округленных констант
Необходимо вычислить еще ряд постоянных значений. Для этого проводят такие расчеты:
- Вычисляют кубический корень из первых натуральных чисел — 64 штуки.
- Записывают только начальные 32 бит информации.
Блокчейн Эфириум создавался как удобная и функциональная платформа для запуска dApps. Цепочка...
В СССР вся экономическая система находилась под контролем государства. Банки, пенсионный фонд и...
Криптодобытчики обращают внимание на то, что заявленная производительность фермы отличается от...
Цикл фрагментов
Данные разбивают на блоки по 512 бит. Операции выполняются последовательно для каждого из них.
Алгоритм шифрования SHA-256 преобразует сообщение любого размера. Для создания финального идентификатора в итерациях цикла нужно изменять значение хеша h0-h7 и активировать функцию для каждого фрагмента.
Расписание сообщений
Для кодирования данных нужно создать новый массив. Принцип такой:
- Добавить сообщение из шага 1 («Предварительный»).
- Каждая запись в массиве — 32-битное слово (наименьшая единица информации Word). К нему нужно добавить еще 48 значений (из нулей). Так получается 64-битный массив данных, в котором закодированная информация есть только в первых значениях.
- Полученные числа пропускают через хеш округленных констант. Нужно последовательно применять функцию. В одном раунде пользователь не заметит разницу, но после выполнения полного цикла информация меняется до неузнаваемости.
Сжатие
При первой итерации необходимо установить значение переменных, равное хешу h0-h7. Далее запускается цикл сжатия:
- Вычисляют 3 переменные с помощью математических функций.
- Значения A-H перемешивают. Некоторые из них получаются путем сложения (A + temp), другие — переопределения (B = C).
- Функции применяют к массиву.
- Переменные A-H меняют местами.
- Цикл повторяется 64 раза.
Изменение окончательных значений
После цикла сжатия протокол выдает конечные переменные A-H. К ним добавляют исходные константы h0-h7 (шаг «Инициализированные значения хеша»). При этом хеш перераспределяют (h0 + a = H0).
Финальный хеш
Значения, полученные на предыдущем шаге, суммируют. Итоговый хеш — H0 + H2…. + H7. Алгоритм хеширования SHA-256 простой — используются несложные логические функции:
- and — побитовое добавление данных.
- shr и rots — сдвиг информации на заданное количество бит вправо (обычный или циклический).
- || — добавление (соединение) строк.
- + — сложение.
Простота SHA-256 позволила создать ASIC — специальные устройства, осуществляющие математические вычисления. Современные микросхемы могут выполнять триллионы расчетов в секунду. Но, несмотря на простоту, алгоритм находится в числе самых надежных. Коллизии происходят редко. Для подбора решения нужно выполнить сложные расчеты.
Как применяется алгоритм
На выходе функции получается уникальный идентификатор объемом 256 байт. Код используют в майнинге и для защиты данных в ряде областей:
- Создание цифровых подписей.
- Проверка подлинности пароля.
- Контроль целостности данных.
Легко убедиться, что присланная на сервер информация соответствует хешу. Даже добавление пробела в исходном файле изменит идентификатор. Эта технология лежит в основе сертификатов TLS/SSL для сайтов, протокола удаленного доступа к ПК SSH, ПО для подписания документов PGP и других программ.
Какие криптовалюты можно майнить на алгоритме
SHA-256 используют для защиты Bitcoin и форков сети. Сложность майнинга биткоина постоянно растет, поэтому уже через 3-5 месяцев рентабельность бизнеса падает. Пользователи с небольшим хешрейтом переключаются на менее требовательные монеты. Список популярных криптовалют можно посмотреть в таблице.
Монета | Рыночная капитализация ($) | Доступность на CEX |
---|---|---|
Часто задаваемые вопросы
При использовании AES можно получить исходную информацию, применив ключ. Хеш-функция работает только в одну сторону.
На практике не удается добиться полного отсутствия одинаковых хешей для разных данных. Алгоритм считается надежным, если число коллизий стремится к теоретическому минимуму.
Учетные данные пользователей на сервере хранятся в виде идентификаторов. Единственный способ получить именную информацию — использовать метод перебора. Хакеры пропускают базу через массив простых, часто используемых ключей. Поэтому стоит устанавливать сложные пароли.
Хешрейт сети постоянно растет, поэтому для сохранения рентабельности придется докупать оборудование. Инвестиции принесут прибыль при высоком курсе монеты. Во время коррекции рынка майнеры только покрывают издержки. Поэтому надо предусмотреть варианты событий и заложить в бизнес-план среднюю цену Bitcoin. Опытные майнеры зарабатывают около 20-30% в год.
Среди свойств хеш-функции — уникальность. Когда пользователь указывает пароль на сайте, производится вычисление хеша. Если он совпадает с записанным на сервере, программа разрешает аутентификацию. Так можно подтвердить подлинность данных без раскрытия информации.