SEC 2
SEC 2 — это стандарт безопасности для криптографических хеш-функций, разработанный Национальным институтом стандартов и технологий США (NIST) и опубликованный в 2002 году. Он определяет семейство алгоритмов, известных как SHA-2 (Secure Hash Algorithm 2), которые используются для создания цифровых отпечатков (хешей) фиксированной длины из произвольных входных данных. SEC 2 является преемником стандарта SEC 1 (SHA-1) и обеспечивает более высокую устойчивость к коллизиям и атакам, что делает его основой для современных систем аутентификации, цифровых подписей и блокчейн-технологий.
История
Предпосылки создания
В конце 1990-х годов алгоритм SHA-1, разработанный Агентством национальной безопасности США (АНБ), начал демонстрировать признаки уязвимости к коллизионным атакам. В 2005 году группа китайских криптографов (Ван Сяоюнь, Ицзюнь Инь и Хунбо Ю) опубликовала метод нахождения коллизий для SHA-1 с вычислительной сложностью 2^69 операций, что значительно ниже теоретического предела 2^80. Это создало угрозу для систем, полагающихся на целостность хешей, таких как сертификаты SSL/TLS и системы контроля версий.
Разработка и публикация
В ответ на растущие риски NIST в 2002 году инициировал конкурс на создание нового стандарта хеширования. АНБ предложило семейство алгоритмов, основанных на структуре SHA-1, но с увеличенной длиной хеша и более сложными внутренними преобразованиями. В 2002 году был опубликован проект FIPS PUB 180-2, который включал SHA-256, SHA-384 и SHA-512. В 2004 году к стандарту добавили SHA-224, а в 2008 году — SHA-512/224 и SHA-512/256. Окончательная версия стандарта SEC 2 была утверждена в 2012 году как FIPS PUB 180-4.
Современное состояние
С 2010-х годов SHA-2 является основным стандартом хеширования в большинстве криптографических протоколов. В 2015 году NIST объявил о постепенном отказе от SHA-1 к 2030 году, а в 2023 году Google и Microsoft начали блокировать сертификаты, подписанные с использованием SHA-1. Однако SHA-2 также сталкивается с вызовами: в 2022 году исследователи из Китая продемонстрировали атаку на SHA-256 с использованием квантовых компьютеров, что ускорило разработку постквантовых стандартов, таких как SHA-3.
Классификация
Семейство SHA-2
Стандарт SEC 2 определяет шесть вариантов алгоритмов, различающихся длиной выходного хеша и внутренней структурой:
| Алгоритм | Длина хеша (бит) | Размер блока (бит) | Количество раундов | Применение |
|---|---|---|---|---|
| SHA-224 | 224 | 512 | 64 | Wi-Fi Protected Access (WPA2) |
| SHA-256 | 256 | 512 | 64 | Биткойн, TLS 1.2, PGP |
| SHA-384 | 384 | 1024 | 80 | SSL/TLS, DNSSEC |
| SHA-512 | 512 | 1024 | 80 | Электронные подписи, блокчейн |
| SHA-512/224 | 224 | 1024 | 80 | Встраиваемые системы |
| SHA-512/256 | 256 | 1024 | 80 | Криптовалюты с низким энергопотреблением |
Отличия от SHA-1 и SHA-3
- SHA-1 (SEC 1): длина хеша 160 бит, 80 раундов, уязвим к коллизиям (с 2017 года считается небезопасным).
- SHA-3 (Keccak): основан на другой структуре (sponge-конструкция), не связан с SHA-2, но принят NIST в 2015 году как альтернатива на случай взлома SHA-2.
Устройство и характеристики
Внутренняя структура
Все алгоритмы SHA-2 используют структуру Меркла-Дамгора с функцией сжатия, основанной на раундовой функции. Каждый раунд включает:
- Операции сложения по модулю 2^32 (для SHA-256) или 2^64 (для SHA-512).
- Логические функции: AND, OR, XOR, NOT.
- Циклические сдвиги (ротации) и сдвиги (shift).
- Константы (K-значения), полученные из кубических корней простых чисел.
Процесс вычисления
- Дополнение сообщения: входные данные дополняются битом «1» и нулями до длины, кратной размеру блока (512 или 1024 бит). В конце добавляется 64-битное (или 128-битное) представление исходной длины сообщения.
- Инициализация: устанавливаются начальные значения хеша (H0–H7) на основе дробных частей квадратных корней из простых чисел.
- Обработка блоков: каждый блок (512 или 1024 бит) разбивается на 16 слов (32 или 64 бита), которые расширяются до 64 (или 80) слов. Затем выполняется раундовая функция с использованием текущего состояния хеша и расширенных слов.
- Финальное хеширование: после обработки всех блоков полученное состояние (H0–H7) конкатенируется в выходной хеш.
Криптографическая стойкость
- Устойчивость к коллизиям: для SHA-256 требуется 2^128 операций для нахождения коллизии (теоретический предел).
- Устойчивость к прообразу: для SHA-256 — 2^256 операций.
- Лавинный эффект: изменение одного бита входных данных приводит к изменению примерно 50% битов выходного хеша.
Применение
Криптовалюты и блокчейн
- Биткойн (SHA-256): используется для майнинга (Proof-of-Work) и создания адресов кошельков.
- Эфириум (Keccak-256, основан на SHA-3): для хеширования транзакций и смарт-контрактов.
- Лайткойн (Scrypt, использует SHA-256 в качестве компонента).
Цифровые подписи и сертификаты
- X.509: сертификаты SSL/TLS, подписанные с использованием SHA-256 или SHA-384.
- PGP/GPG: хеширование ключей и сообщений.
- DNSSEC: защита записей DNS от подделки.
Аутентификация и контроль целостности
- HMAC-SHA256: аутентификация сообщений в протоколах HTTP/2, SSH, IPsec.
- Git: хеширование коммитов и тегов (SHA-1, но переход на SHA-256 планируется с 2025 года).
- Антивирусные базы: хеширование файлов для обнаружения вредоносного ПО.
Государственные и военные системы
- США: стандарт для защиты конфиденциальной информации (FIPS 140-2/3).
- Россия: ГОСТ Р 34.11-2012 (Стрибог) — альтернатива SHA-2, но SHA-256 используется в межгосударственных протоколах.
- Европейский союз: ETSI TS 102 176-1 рекомендует SHA-256 для электронных подписей.
Критика и ограничения
Уязвимости
- Квантовая атака: алгоритм Гровера позволяет найти коллизию для SHA-256 за 2^128 операций на квантовом компьютере, что вдвое меньше классического предела. Однако для практической реализации требуется квантовый компьютер с миллионами кубитов, что пока недостижимо.
- Атаки на реализацию: уязвимости в программных и аппаратных реализациях (например, side-channel attacks) могут привести к утечке ключей.
- Коллизии в SHA-256: в 2023 году исследователи из Университета Торонто нашли коллизию для 31-раундовой версии SHA-256 (полный алгоритм — 64 раунда), что не представляет практической угрозы.
Альтернативы
- SHA-3: более устойчив к квантовым атакам, но медленнее в программной реализации.
- BLAKE2: оптимизирован для скорости, используется в криптовалюте Decred и протоколе Zcash.
- ГОСТ Р 34.11-2012: обязателен для использования в российской государственной информационной системе.
Интересные факты
- Алгоритмы SHA-2 были разработаны АНБ, но NIST проводил открытые консультации и публиковал спецификации для общественности.
- В 2017 году Google и CWI Amsterdam продемонстрировали коллизию для SHA-1 (SHAttered), что ускорило переход на SHA-2.
- SHA-256 используется в блокчейне Биткойна для создания хешей блоков, которые начинаются с определённого количества нулей (сложность майнинга).
- В 2024 году NIST объявил о начале перехода на постквантовые стандарты, но SHA-2 останется обязательным для обратной совместимости до 2035 года.
Источники
- NIST FIPS PUB 180-4: Secure Hash Standard (SHS), 2012.
- Bruce Schneier, «Applied Cryptography», 2nd edition, 1996.
- Wang X., Yin Y., Yu H., «Finding Collisions in the Full SHA-1», 2005.
- Google, «SHAttered: The First Public Collision for SHA-1», 2017.
- ГОСТ Р 34.11-2012: Информационная технология. Криптографическая защита информации. Функция хеширования.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →