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

SHA-2

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

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

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

Стандарт SHA-2 был принят в качестве федерального стандарта обработки информации (FIPS) в США и рекомендован для использования в государственных учреждениях. В России алгоритмы SHA-2 не входят в перечень, утверждённый Федеральной службой безопасности (ФСБ) для использования в государственных информационных системах, где применяются национальные стандарты ГОСТ Р 34.11-2012Стрибог»). Тем не менее SHA-2 широко используется в коммерческих и международных проектах, включая протоколы TLS, SSH, IPsec, а также в блокчейн-технологиях.

Устройство и принцип работы

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

  • Разбиение на блоки: сообщение дополняется до длины, кратной размеру блока (512 бит для SHA-256 и SHA-224; 1024 бита для SHA-512 и SHA-384). В конце добавляется 64-битное (или 128-битное) представление исходной длины сообщения.
  • Инициализация: устанавливаются начальные значения хэша (константы, производные от квадратных корней простых чисел).
  • Обработка блоков: каждый блок проходит через 64 (для SHA-256) или 80 (для SHA-512) раундов сжатия. В каждом раунде используются битовые операции (сдвиги, XOR, AND, NOT) и сложение по модулю 2^32 (или 2^64). Раунды включают нелинейные функции, такие как Ch (choose) и Maj (majority).
  • Формирование дайджеста: после обработки всех блоков полученное значение (или его часть) выдаётся в качестве хэша.

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

Варианты SHA-2

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

ВариантДлина хэша (бит)Размер блока (бит)Число раундовПрименение
SHA-22422451264Протоколы с ограниченной пропускной способностью
SHA-25625651264Наиболее распространённый, используется в TLS, Bitcoin
SHA-384384102480Высоконадёжные системы, сертификаты
SHA-512512102480Криптовалюты, цифровые подписи
SHA-512/224224102480Специализированные приложения (NIST)
SHA-512/256256102480Специализированные приложения (NIST)

Варианты SHA-512/224 и SHA-512/256 были введены в 2012 году для обеспечения совместимости с 64-битными архитектурами при сохранении длины хэша, аналогичной SHA-224 и SHA-256.

Применение

SHA-2 является основой для множества криптографических протоколов и систем:

  • Цифровые подписи: алгоритмы SHA-2 используются для создания дайджеста сообщения, который затем подписывается асимметричным ключом (например, RSA или ECDSA). Это обеспечивает целостность и аутентичность данных.
  • Протоколы безопасности: TLS (Transport Layer Security), SSH (Secure Shell), IPsec — все они используют SHA-2 для проверки целостности пакетов и аутентификации.
  • Блокчейн и криптовалюты: SHA-256 является основой для майнинга биткойна и других криптовалют. В биткойне хэширование блоков требует нахождения значения, меньшего заданного целевого числа (Proof-of-Work).
  • Проверка целостности файлов: хэши SHA-2 применяются для контроля версий программного обеспечения, загрузок и резервных копий. Например, дистрибутивы Linux часто сопровождаются контрольными суммами SHA-256.
  • Аутентификация сообщений: в сочетании с HMAC (Hash-based Message Authentication Code) SHA-2 используется для проверки подлинности сообщений в сетевых протоколах.

Криптоанализ и безопасность

На 2025 год SHA-2 считается криптостойким алгоритмом. Известные атаки на SHA-1 (например, атака с коллизией, продемонстрированная в 2017 году командой Google и CWI Amsterdam) не работают против SHA-2 из-за большего числа раундов и более сложной структуры. Теоретические атаки на SHA-2, такие как атака на 31 раунд из 64 (для SHA-256) или на 38 раундов из 80 (для SHA-512), были опубликованы, но они не представляют практической угрозы для полной версии алгоритма. Основные риски связаны с:

  • Квантовыми вычислениями: алгоритм Гровера теоретически может сократить сложность поиска коллизии с 2^128 до 2^64 для SHA-256, но для практической реализации требуется квантовый компьютер с миллионами кубитов, что пока недостижимо.
  • Атаками на реализацию: уязвимости могут возникать из-за ошибок в программной или аппаратной реализации, например, утечки по побочным каналам (timing attacks).

В 2015 году NIST объявил о начале конкурса на новый стандарт хэш-функции (SHA-3), который был завершён в 2012 году с выбором алгоритма Keccak. SHA-3 не является заменой SHA-2, а дополняет его, предлагая альтернативную конструкцию (sponge function). SHA-2 остаётся рекомендованным для использования в большинстве приложений.

Сравнение с другими хэш-функциями

  • SHA-1: устарел из-за коллизий; не рекомендуется для новых систем.
  • SHA-3: основан на другой математической структуре (sponge); обеспечивает устойчивость к некоторым атакам, но медленнее в программной реализации на 32-битных архитектурах.
  • MD5: полностью скомпрометирован; не используется в криптографии.
  • BLAKE2: более быстрый, чем SHA-2, но менее распространён в стандартах.
  • ГОСТ Р 34.11-2012 (Стрибог): российский стандарт, обязательный для государственных информационных систем в РФ; длина хэша 256 или 512 бит.

Интересные факты

  • SHA-256 используется в биткойне для майнинга, что привело к созданию специализированных интегральных схем (ASIC), способных выполнять миллиарды хэшей в секунду.
  • В 2018 году исследователи из компании Trail of Bits показали, что SHA-256 можно реализовать на графических процессорах (GPU) с производительностью до 10 ГХэш/с.
  • SHA-512/256 и SHA-512/224 были разработаны для защиты от атак, связанных с расширением длины сообщения (length extension attack), которые возможны для SHA-256 и SHA-512.

Источники

  • National Institute of Standards and Technology (NIST). FIPS PUB 180-4: Secure Hash Standard (SHS). — 2012.
  • Handschuh, H., Knudsen, L. R., Robshaw, M. J. B. Analysis of SHA-1 in the Context of Hash Function Security. — 2001.
  • Stevens, M., Bursztein, E., Karpman, P., et al. The first collision for full SHA-1. — 2017.
  • Bernstein, D. J., Lange, T. Post-quantum cryptography. — 2017.
  • Федеральная служба безопасности Российской Федерации. ГОСТ Р 34.11-2012: Функция хэширования. — 2012.

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

На главную BFOmetr →