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

FIPS PUB 180-2

FIPS PUB 180-2 — это федеральный стандарт обработки информации США (Federal Information Processing Standard), опубликованный Национальным институтом стандартов и технологий (NIST) 1 августа 2002 года. Данный стандарт определял три алгоритма криптографического хеширования: SHA-1, SHA-256, SHA-384 и SHA-512. Он стал важной вехой в развитии криптографии, поскольку впервые ввёл семейство алгоритмов Secure Hash Algorithm (SHA) с длиной хеша более 160 бит, что было вызвано необходимостью повышения стойкости к коллизиям и атакам на протоколы цифровой подписи.

История

Предпосылки создания

До появления FIPS PUB 180-2 основным стандартом хеширования в США был FIPS PUB 180-1 (1995 год), который определял алгоритм SHA-1 с длиной выходного хеша 160 бит. К началу 2000-х годов криптоаналитики, в том числе группа под руководством Ван Сяоюня, продемонстрировали теоретические атаки на SHA-1, снижающие его стойкость. Кроме того, развитие вычислительной техники и рост требований к безопасности (например, в системе цифровых подписей DSS) потребовали создания алгоритмов с большей длиной хеша.

Разработка и публикация

NIST начал работу над новым семейством алгоритмов в 1999 году. В 2001 году был опубликован проект FIPS PUB 180-2, который включал SHA-256, SHA-384 и SHA-512. После общественного обсуждения и доработки стандарт был утверждён 1 августа 2002 года. В 2004 году в стандарт была добавлена четвёртая версия — SHA-224, которая была включена в обновлённую версию FIPS PUB 180-2 (Change Notice 1).

Замена и наследие

В 2015 году NIST опубликовал новый стандарт FIPS PUB 180-4, который заменил FIPS PUB 180-2. Однако алгоритмы, определённые в FIPS PUB 180-2, остаются широко используемыми в криптографических библиотеках, протоколах TLS/SSL, блокчейн-технологиях (например, биткойн использует SHA-256) и системах электронной подписи.

Структура и содержание стандарта

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

Определение хеш-функции

Стандарт определял хеш-функцию как детерминированную функцию, которая преобразует входное сообщение произвольной длины (вплоть до 2^64 бит для SHA-1 и SHA-256, и до 2^128 бит для SHA-384 и SHA-512) в выходную строку фиксированной длины. Выходное значение (хеш) должно быть вычислительно невозможно обратить (свойство однонаправленности) и найти два различных сообщения с одинаковым хешем (свойство коллизионной стойкости).

Алгоритмы, включённые в стандарт

АлгоритмДлина хеша (бит)Размер блока (бит)Количество раундовПримечания
SHA-116051280Унаследован от FIPS PUB 180-1, считается устаревшим и нерекомендуемым для новых применений.
SHA-25625651264Основной алгоритм семейства SHA-2.
SHA-384384102480Усечённая версия SHA-512 с другим начальным вектором.
SHA-512512102480Наиболее стойкий алгоритм в стандарте.

Общая схема работы

Все алгоритмы семейства SHA-2 (SHA-256, SHA-384, SHA-512) работают по единой схеме:

  1. Дополнение сообщения — к исходному сообщению добавляется бит «1», затем нули, а в конце — 64-битное (или 128-битное для SHA-384/512) представление длины исходного сообщения. Это обеспечивает кратность длины блока.
  2. Разбиение на блоки — дополненное сообщение делится на блоки фиксированного размера (512 или 1024 бит).
  3. Инициализация — задаётся начальное значение хеша (константы, определённые стандартом).
  4. Обработка блоков — каждый блок обрабатывается с помощью раундовой функции, которая использует операции сдвига, XOR, сложения по модулю 2^32 (или 2^64) и нелинейные функции (например, Majority, Ch, Sigma).
  5. Формирование выхода — после обработки всех блоков полученное значение хеша выводится.

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

SHA-1

К моменту публикации FIPS PUB 180-2 SHA-1 считался стойким, но уже в 2005 году группа Ван Сяоюня опубликовала атаку, снижающую сложность нахождения коллизии с 2^80 до 2^69 операций. В 2017 году компания Google и CWI Amsterdam продемонстрировали практическую коллизию для SHA-1 (атака SHAttered). В результате NIST в 2011 году объявил SHA-1 устаревшим и рекомендовал переход на SHA-2.

SHA-2 (SHA-256, SHA-384, SHA-512)

На момент публикации FIPS PUB 180-2 и по состоянию на 2025 год не было опубликовано эффективных атак на SHA-2, снижающих его стойкость ниже заявленного уровня. Наилучшие известные атаки (например, на основе дифференциального криптоанализа) имеют сложность, близкую к полному перебору (2^256 для SHA-256). Однако в 2022 году исследователи из Китая и США опубликовали атаку на 31 раунд из 64 для SHA-256, что не представляет практической угрозы.

Применение

FIPS PUB 180-2 и его алгоритмы нашли широкое применение в различных областях:

  • Цифровые подписи — алгоритмы SHA-2 используются в стандартах DSS (Digital Signature Standard) и ECDSA.
  • Протоколы безопасностиTLS 1.2 и 1.3, IPsec, SSH, PGP поддерживают SHA-256 и SHA-512.
  • Блокчейн и криптовалюты — биткойн (SHA-256), эфириум (SHA-256 в майнинге), другие системы.
  • Хранение паролей — хотя для паролей чаще используют bcrypt или scrypt, SHA-2 применяется в некоторых системах как часть хеширования.
  • Контроль целостности — проверка целостности файлов, образов дисков, программного обеспечения.

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

Отсутствие устойчивости к атакам на длину

Алгоритмы SHA-2 подвержены атакам на удлинение сообщения (length extension attack), что ограничивает их использование в некоторых протоколах (например, в HMAC требуется дополнительная обработка).

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

SHA-512 на 64-битных процессорах работает быстрее, чем SHA-256, но на 32-битных системах уступает. SHA-384 и SHA-512 требуют больше памяти и вычислительных ресурсов.

Устаревание

Стандарт FIPS PUB 180-2 был заменён на FIPS PUB 180-4, который добавил алгоритмы SHA-512/224 и SHA-512/256, а также уточнил требования к тестированию. Однако SHA-2 остаётся основным стандартом до полного перехода на SHA-3 (FIPS PUB 202).

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

  • Алгоритм SHA-256, определённый в FIPS PUB 180-2, используется в системе майнинга биткойна. Сложность вычисления хеша регулируется так, чтобы блоки находились в среднем каждые 10 минут.
  • SHA-384 является усечённой версией SHA-512 с другим начальным вектором, что делает его несовместимым с простым обрезанием выхода SHA-512.
  • В 2012 году NIST объявил конкурс на новый стандарт хеширования (SHA-3), который завершился в 2015 году выбором алгоритма Keccak. Однако SHA-2, определённый в FIPS PUB 180-2, остаётся широко используемым.

Источники

  • FIPS PUB 180-2: Secure Hash Standard (SHS). National Institute of Standards and Technology, 2002.
  • FIPS PUB 180-4: Secure Hash Standard (SHS). National Institute of Standards and Technology, 2015.
  • Wang, X., Yin, Y. L., & Yu, H. (2005). Finding Collisions in the Full SHA-1. Advances in Cryptology – CRYPTO 2005.
  • Stevens, M., Bursztein, E., Karpman, P., Albertini, A., & Markov, Y. (2017). The first collision for full SHA-1. Google Research.
  • NIST Special Publication 800-107: Recommendation for Applications Using Approved Hash Algorithms. 2012.

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

На главную BFOmetr →