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

FIPS PUB 180-4

FIPS PUB 180-4 (Federal Information Processing Standards Publication 180-4) — это стандарт правительства США, определяющий алгоритмы хеширования семейства Secure Hash Algorithm (SHA). Четвертая версия стандарта, опубликованная в марте 2012 года, заменила предыдущую версию FIPS PUB 180-3 и установила три новых алгоритма: SHA-512/224, SHA-512/256 и SHA-3 (на основе алгоритма Keccak), дополнив ранее утвержденные SHA-1, SHA-224, SHA-256, SHA-384 и SHA-512. Стандарт является обязательным для использования в федеральных государственных учреждениях США при обработке незасекреченной информации, но широко применяется в криптографии, цифровых подписях, аутентификации и контроле целостности данных по всему миру.

История

Предшествующие версии

Первая версия стандарта, FIPS PUB 180 (Secure Hash Standard), была опубликована Национальным институтом стандартов и технологий США (NIST) 11 мая 1993 года. Она определяла алгоритм SHA-0 (позднее признанный небезопасным из-за уязвимости). В 1995 году вышла редакция FIPS PUB 180-1, заменившая SHA-0 на SHA-1, который имел 160-битное выходное значение. В 2002 году стандарт был расширен до FIPS PUB 180-2, включив SHA-256, SHA-384 и SHA-512 (с длинами хеша 256, 384 и 512 бит соответственно). В 2004 году к нему добавили SHA-224 (224-битный хеш) через изменение FIPS PUB 180-2 Change Notice 1.

Переход к FIPS PUB 180-4

В 2005 году были обнаружены серьезные криптографические атаки на SHA-1 (в частности, метод коллизий, предложенный Ван Сяоюнем), что подорвало доверие к алгоритму. В ответ NIST в 2007 году объявил конкурс на разработку нового стандарта хеширования — SHA-3. Параллельно велась работа над усилением существующих алгоритмов. В марте 2012 года NIST опубликовал FIPS PUB 180-4, который:

  • добавил SHA-512/224 и SHA-512/256 (варианты SHA-512 с усеченным выходом);
  • включил SHA-3 (на основе алгоритма Keccak) как дополнительный алгоритм;
  • сохранил SHA-1, SHA-224, SHA-256, SHA-384 и SHA-512, но с рекомендацией постепенного отказа от SHA-1.

Последующие изменения

В 2015 году NIST выпустил FIPS PUB 180-4 с изменениями (Change Notice 1), уточнившими тестовые векторы и описания. В 2023 году стандарт был заменен на FIPS PUB 180-5, который включил SHA-3 как основной алгоритм и исключил SHA-1 для новых приложений (хотя SHA-1 остался для обратной совместимости). Однако FIPS PUB 180-4 остается важной вехой в истории криптографии.

Алгоритмы, определенные в стандарте

FIPS PUB 180-4 определяет шесть семейств алгоритмов, каждое из которых имеет фиксированную длину выходного хеша:

АлгоритмДлина хеша (бит)Размер блока (бит)Максимальная длина сообщения (бит)Примечания
SHA-11605122^64 − 1Признан небезопасным для криптографических целей после 2010 года
SHA-2242245122^64 − 1Усеченная версия SHA-256
SHA-2562565122^64 − 1Наиболее распространенный алгоритм семейства
SHA-38438410242^128 − 1Усеченная версия SHA-512
SHA-51251210242^128 − 1Высокозащищенный, но медленный алгоритм
SHA-512/22422410242^128 − 1Усеченная версия SHA-512, добавлена в 2012 году
SHA-512/25625610242^128 − 1Усеченная версия SHA-512, добавлена в 2012 году
SHA-3-2242241152Не ограниченаНа основе Keccak, добавлен в 2012 году
SHA-3-2562561088Не ограниченаНа основе Keccak
SHA-3-384384832Не ограниченаНа основе Keccak
SHA-3-512512576Не ограниченаНа основе Keccak

SHA-1

SHA-1 (Secure Hash Algorithm 1) — первый алгоритм семейства, разработанный Агентством национальной безопасности США (АНБ) в 1995 году. Генерирует 160-битный хеш. До 2005 года считался безопасным, но после публикации атаки Ван Сяоюня (требующей около 2^69 операций) и последующих улучшений (атака Марка Стивенса в 2017 году, показавшая возможность коллизии за 2^61 операций) SHA-1 был признан уязвимым. В 2017 году Google и CWI Amsterdam продемонстрировали первую практическую коллизию SHA-1 (два разных PDF-файла с одинаковым хешем). С 2017 года NIST рекомендует отказаться от SHA-1 для всех криптографических приложений, кроме проверки подписей, созданных до 2016 года.

SHA-2

Семейство SHA-2 включает SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 и SHA-512/256. Все они основаны на структуре Меркла-Дамгора с использованием функций сжатия, построенных на основе алгоритма SHA-1, но с увеличенной длиной хеша и улучшенной криптостойкостью. SHA-256 и SHA-512 являются наиболее распространенными: SHA-256 используется в блокчейне биткойна, TLS/SSL, PGP, SSH, а SHA-512 — в системах, требующих высокой защиты (например, в правительственных приложениях США). SHA-512/224 и SHA-512/256 были добавлены в FIPS PUB 180-4 для обеспечения совместимости с 32-битными платформами (они используют 64-битные операции, но выдают 224- или 256-битный хеш).

SHA-3

SHA-3 (Secure Hash Algorithm 3) — семейство алгоритмов, разработанное в рамках конкурса NIST (2007–2012). Победителем стал алгоритм Keccak, созданный Гвидо Бертони, Жоаном Дайменом, Микаэлем Питерсом и Жилем ван Ассше. В отличие от SHA-2, SHA-3 использует конструкцию «губка» (sponge construction), которая не основана на структуре Меркла-Дамгора. Это обеспечивает устойчивость к атакам на основе удлинения сообщения (length extension attack), которым подвержены SHA-1 и SHA-2. SHA-3 был включен в FIPS PUB 180-4 как дополнительный алгоритм, а в 2023 году стал основным в FIPS PUB 180-5.

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

Общая схема

Все алгоритмы семейства SHA (кроме SHA-3) работают по следующей схеме:

  1. Дополнение сообщения (padding): сообщение дополняется битами так, чтобы его длина стала кратной размеру блока (512 или 1024 бит). В дополнение включается длина исходного сообщения.
  2. Разбиение на блоки: сообщение разбивается на блоки фиксированного размера.
  3. Инициализация: устанавливаются начальные значения хеш-переменных (константы, определенные стандартом).
  4. Обработка блоков: каждый блок обрабатывается с помощью функции сжатия, которая обновляет хеш-переменные. Функция сжатия включает несколько раундов (например, 80 раундов для SHA-1, 64 для SHA-256, 80 для SHA-512).
  5. Вывод: после обработки всех блоков хеш-переменные объединяются в выходное значение фиксированной длины.

SHA-3

SHA-3 использует конструкцию «губка»:

  1. Впитывание (absorbing): сообщение разбивается на блоки, которые XOR-ятся с состоянием (state) — массивом из 5×5×64 бит (1600 бит для SHA-3). После каждого блока применяется функция перестановки Keccak-f (с 24 раундами).
  2. Выжимание (squeezing): после обработки всех блоков из состояния извлекается выходное значение нужной длины.

Применение

Криптография и безопасность

  • Цифровые подписи: алгоритмы SHA-2 и SHA-3 используются в стандартах цифровой подписи (DSA, ECDSA, EdDSA) для создания хеша сообщения перед подписанием.
  • Аутентификация: в протоколах TLS/SSL, SSH, IPsec хеши применяются для проверки целостности данных и аутентификации сторон.
  • Контроль целостности: хеши используются для проверки неизменности файлов (например, в системах контроля версий Git, в загрузчиках операционных систем).
  • Хранение паролей: хотя для паролей чаще применяются медленные хеши (bcrypt, scrypt), SHA-256 используется в некоторых системах (например, в Linux для хеширования паролей в /etc/shadow).

Блокчейн и криптовалюты

  • Биткойн: использует SHA-256 для майнинга (двойное хеширование: SHA-256(SHA-256(block))) и для создания адресов (SHA-256 + RIPEMD-160).
  • Эфириум: использует Keccak-256 (вариант SHA-3) для хеширования транзакций и создания адресов.
  • Другие криптовалюты: Litecoin — Scrypt (на основе SHA-256), Dogecoin — Scrypt, Monero — RandomX (не SHA).

Государственные и военные стандарты

В США FIPS PUB 180-4 обязателен для всех федеральных агентств при обработке незасекреченной информации. В России аналогичные функции выполняют стандарты ГОСТ Р 34.11-2012 («Стрибог») и ГОСТ Р 34.11-94. В Китае — стандарт SM3.

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

Уязвимости SHA-1

Основная критика FIPS PUB 180-4 связана с сохранением SHA-1 в стандарте до 2023 года. Хотя NIST рекомендовал отказаться от SHA-1 с 2017 года, его включение в стандарт создавало путаницу: многие организации продолжали использовать SHA-1 из-за обратной совместимости. Практическая коллизия SHA-1, продемонстрированная в 2017 году, показала, что алгоритм полностью скомпрометирован.

Атаки на SHA-2

На SHA-2 не обнаружено практических коллизий, но теоретические атаки существуют. В 2016 году исследователи показали, что SHA-256 может быть атакован с помощью метода «различителя» (distinguisher) с трудоемкостью 2^149.5 операций (против 2^256 для полного перебора). Однако это не представляет практической угрозы. Основная уязвимость SHA-2 — атака на основе удлинения сообщения (length extension attack), которая позволяет злоумышленнику, зная хеш сообщения, вычислить хеш сообщения с добавленными данными без знания исходного сообщения. SHA-3 лишен этой уязвимости.

Производительность

SHA-512 на 64-битных процессорах работает быстрее SHA-256, так как использует 64-битные операции. На 32-битных процессорах SHA-256 быстрее. SHA-3 медленнее SHA-2 на программном уровне (примерно в 2–3 раза), но может быть быстрее на аппаратном уровне (ASIC, FPGA). Это ограничивает применение SHA-3 в высоконагруженных системах.

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

  • Алгоритм Keccak, ставший SHA-3, был разработан командой, в которую входил Жоан Даймен — один из создателей AES (Advanced Encryption Standard).
  • В 2017 году Google и CWI Amsterdam опубликовали два разных PDF-файла с одинаковым SHA-1-хешем (коллизия), что потребовало 9,5 миллионов долларов на вычисления (в пересчете на стоимость облачных ресурсов).
  • FIPS PUB 180-4 стал первым стандартом, включившим алгоритмы с переменной длиной хеша (SHA-512/224 и SHA-512/256), что позволило адаптировать их под разные платформы.
  • SHA-3 был разработан как резервный алгоритм на случай, если SHA-2 будет скомпрометирован. По состоянию на 2025 год SHA-2 остается безопасным, и SHA-3 используется редко.
  • В России стандарт ГОСТ Р 34.11-2012 («Стрибог») имеет длину хеша 256 или 512 бит и основан на конструкции, отличной от SHA. Он обязателен для использования в государственных информационных системах РФ.

Источники

  • National Institute of Standards and Technology. FIPS PUB 180-4: Secure Hash Standard (SHS). March 2012.
  • National Institute of Standards and Technology. FIPS PUB 180-4 Change Notice 1. October 2015.
  • National Institute of Standards and Technology. FIPS PUB 180-5: Secure Hash Standard (SHS). August 2023.
  • Wang X., Yin Y.L., Yu H. Finding Collisions in the Full SHA-1. CRYPTO 2005.
  • Stevens M., Bursztein E., Karpman P., Albertini A., Markov Y. The First Collision for Full SHA-1. CRYPTO 2017.
  • Bertoni G., Daemen J., Peeters M., Van Assche G. The Keccak Reference. 2011.
  • СТБ 34.101.31-2011 (ГОСТ Р 34.11-2012). Информационная технология. Криптографическая защита информации. Функция хеширования. 2012.

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

На главную BFOmetr →