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-1 | 160 | 512 | 80 | Унаследован от FIPS PUB 180-1, считается устаревшим и нерекомендуемым для новых применений. |
| SHA-256 | 256 | 512 | 64 | Основной алгоритм семейства SHA-2. |
| SHA-384 | 384 | 1024 | 80 | Усечённая версия SHA-512 с другим начальным вектором. |
| SHA-512 | 512 | 1024 | 80 | Наиболее стойкий алгоритм в стандарте. |
Общая схема работы
Все алгоритмы семейства SHA-2 (SHA-256, SHA-384, SHA-512) работают по единой схеме:
- Дополнение сообщения — к исходному сообщению добавляется бит «1», затем нули, а в конце — 64-битное (или 128-битное для SHA-384/512) представление длины исходного сообщения. Это обеспечивает кратность длины блока.
- Разбиение на блоки — дополненное сообщение делится на блоки фиксированного размера (512 или 1024 бит).
- Инициализация — задаётся начальное значение хеша (константы, определённые стандартом).
- Обработка блоков — каждый блок обрабатывается с помощью раундовой функции, которая использует операции сдвига, XOR, сложения по модулю 2^32 (или 2^64) и нелинейные функции (например, Majority, Ch, Sigma).
- Формирование выхода — после обработки всех блоков полученное значение хеша выводится.
Криптографическая стойкость
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 →