Открыть сервис

Семейство SHA-2

SHA-2 (Secure Hash Algorithm 2) — это семейство криптографических хеш-функций, разработанное Агентством национальной безопасности США (NSA) и опубликованное Национальным институтом стандартов и технологий США (NIST) в 2001 году как стандарт FIPS PUB 180-4. SHA-2 является преемником SHA-1 и включает в себя несколько алгоритмов с различной длиной выходного хеша: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 и SHA-512/256. Основное назначение SHA-2 — обеспечение целостности данных, создание цифровых подписей и аутентификация сообщений в информационных системах.

История создания

Разработка SHA-2 была инициирована после обнаружения уязвимостей в SHA-1, который к началу 2000-х годов начал проявлять признаки криптографической слабости. В 2001 году NIST опубликовал первую версию стандарта FIPS PUB 180-2, который включал SHA-256, SHA-384 и SHA-512. В 2004 году в стандарт был добавлен SHA-224, а в 2012 году — SHA-512/224 и SHA-512/256. SHA-2 остаётся основным стандартом хеширования в большинстве государственных и коммерческих систем, хотя в 2015 году NIST рекомендовал переход на SHA-3 как на более современный алгоритм, но SHA-2 продолжает широко использоваться.

Классификация и варианты

Семейство SHA-2 включает шесть основных алгоритмов, различающихся длиной выходного хеша и внутренней структурой:

АлгоритмДлина хеша (бит)Размер блока (бит)Размер слова (бит)Количество раундов
SHA-2242245123264
SHA-2562565123264
SHA-38438410246480
SHA-51251210246480
SHA-512/22422410246480
SHA-512/25625610246480

SHA-224 и SHA-256 основаны на 32-битных словах, а SHA-384, SHA-512, SHA-512/224 и SHA-512/256 — на 64-битных. Варианты SHA-512/224 и SHA-512/256 являются усечёнными версиями SHA-512, что позволяет использовать более быстрые 64-битные вычисления на современных процессорах, сохраняя при этом меньший размер хеша.

Принцип работы

Алгоритмы SHA-2 относятся к классу итеративных хеш-функций на основе структуры Меркла — Дамгора. Процесс хеширования включает несколько этапов:

  1. Предварительная обработка: сообщение дополняется до длины, кратной размеру блока (512 или 1024 бит), путём добавления единичного бита, нулей и 64-битного (или 128-битного) представления исходной длины сообщения.
  2. Инициализация: задаются начальные значения хеша (константы, основанные на квадратных корнях простых чисел).
  3. Обработка блоков: каждый блок данных преобразуется с помощью раундовой функции, использующей побитовые операции (AND, OR, XOR, сдвиги) и константы, полученные из кубических корней простых чисел.
  4. Формирование выходного хеша: после обработки всех блоков полученное значение хеша (или его усечённая версия) выдаётся в качестве результата.

Количество раундов для SHA-256 составляет 64, для SHA-512 — 80. Внутренняя функция сжатия использует 8 рабочих переменных, которые обновляются на каждом раунде.

Криптографическая стойкость

SHA-2 считается криптостойким на момент 2024 года. К настоящему времени не опубликовано ни одной успешной атаки на полные раунды SHA-256 или SHA-512, которая бы позволила найти коллизию (два разных сообщения с одинаковым хешем) быстрее, чем методом «дня рождения» (2^(n/2) операций, где n — длина хеша). Для SHA-256 это 2^128 операций, что считается практически невозможным при современном уровне вычислительных мощностей.

Однако существуют атаки на усечённые версии SHA-2 (например, на 31 раунд из 64 для SHA-256) и теоретические исследования, показывающие возможность снижения стойкости при определённых условиях. В 2016 году Марк Стивенс и соавторы продемонстрировали коллизию для SHA-1, что подтвердило необходимость использования SHA-2 или SHA-3.

Применение

SHA-2 широко используется в различных областях информационной безопасности:

  • Цифровые подписи: алгоритмы SHA-2 применяются в стандартах цифровой подписи (DSA, ECDSA, RSA-PSS) для создания хеша сообщения перед подписанием.
  • SSL/TLS: в протоколах защиты транспортного уровня (TLS 1.2 и выше) SHA-2 используется для аутентификации и проверки целостности.
  • Блокчейн и криптовалюты: SHA-256 является основой для майнинга биткоина и многих других криптовалют, а также для создания хешей транзакций.
  • Хранение паролей: SHA-256 и SHA-512 используются для хеширования паролей (часто в сочетании с солью, хотя для этой цели рекомендуется более медленный алгоритм, например bcrypt).
  • Проверка целостности файлов: утилиты sha256sum, sha512sum и аналогичные позволяют проверять контрольные суммы загруженных файлов.
  • Государственные стандарты: в России ГОСТ Р 34.11-2012 (Стрибог) является альтернативой SHA-2, но SHA-2 также применяется в российских информационных системах, не требующих сертификации ФСБ.

Сравнение с SHA-1 и SHA-3

SHA-2 значительно превосходит SHA-1 по стойкости: длина хеша SHA-1 составляет 160 бит, что делает его уязвимым для атак на коллизии (в 2017 году Google и CWI продемонстрировали коллизию SHA-1). SHA-2, с минимальной длиной хеша 224 бита, обеспечивает значительно больший запас прочности.

SHA-3, разработанный в 2015 году, основан на другой конструкции (кекак) и не подвержен некоторым теоретическим атакам на структуру Меркла — Дамгора. Однако SHA-2 остаётся более распространённым из-за большей скорости реализации на многих платформах и более раннего внедрения.

Реализации

SHA-2 реализован во всех основных криптографических библиотеках: OpenSSL, Bouncy Castle, Crypto++ и других. Аппаратная поддержка SHA-2 встроена в процессоры Intel (начиная с архитектуры Goldmont) и AMD (начиная с Zen), что позволяет выполнять хеширование с высокой скоростью. В операционных системах семейства Linux и Windows SHA-2 используется для проверки целостности системных файлов и обновлений.

Критика и ограничения

Основная критика SHA-2 связана с его происхождением: алгоритм разработан NSA, что вызывает подозрения в возможном наличии закладок. Однако NIST и независимые криптографы не обнаружили скрытых уязвимостей. Другим недостатком является подверженность атакам по времени (timing attacks) при программной реализации, если не используются защищённые методы (например, константное время выполнения). Кроме того, SHA-2, как и все хеш-функции на основе структуры Меркла — Дамгора, уязвим для атак удлинения сообщения (length extension attack), что требует использования дополнительных мер (например, HMAC) при построении кодов аутентификации.

Будущее

Несмотря на рекомендацию NIST переходить на SHA-3, SHA-2 остаётся основным стандартом на 2024 год. В России и странах СНГ параллельно используется ГОСТ Р 34.11-2012, но SHA-2 широко применяется в международных системах. Ожидается, что SHA-2 будет оставаться безопасным как минимум до середины 2030-х годов, после чего может потребоваться переход на алгоритмы с большей длиной хеша (например, SHA-512 или SHA-3).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →