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

SHA-512

SHA-512 (Secure Hash Algorithm 512) — это криптографическая хеш-функция, относящаяся к семейству SHA-2 (Secure Hash Algorithm 2). Она предназначена для преобразования входных данных произвольной длины в выходное значение (хеш, дайджест) фиксированной длины — 512 бит (64 байта). SHA-512 является односторонней функцией: по заданному хешу практически невозможно восстановить исходные данные, а также найти два различных входных сообщения с одинаковым хешем (коллизию). Алгоритм разработан Агентством национальной безопасности США (NSA) и опубликован Национальным институтом стандартов и технологий США (NIST) в 2001 году как часть стандарта FIPS PUB 180-4.

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

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

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

Алгоритм работы

SHA-512 обрабатывает входные данные блоками по 1024 бита (128 байт). Алгоритм включает несколько этапов:

  1. Дополнение (Padding): Исходное сообщение дополняется битами так, чтобы его длина стала кратной 1024 битам. Дополнение всегда включает один бит «1», затем необходимое количество нулевых битов, а в конце — 128-битное представление исходной длины сообщения (в битах). Это гарантирует уникальность хеша для каждого сообщения.
  1. Инициализация: Устанавливаются восемь начальных 64-битных констант (H0–H7), полученных из дробных частей квадратных корней первых восьми простых чисел. Эти константы фиксированы и не зависят от входных данных.
  1. Обработка блоков: Каждый 1024-битный блок разбивается на 80 раундов. Для каждого раунда используются:
  • Функции сжатия: Логические операции (AND, OR, XOR, NOT), циклические сдвиги и сложение по модулю 2^64.
  • Константы раундов: 80 уникальных 64-битных значений, полученных из дробных частей кубических корней первых 80 простых чисел.
  • Расписание сообщений: Из 16 слов (по 64 бита) каждого блока генерируется 64 дополнительных слова, что обеспечивает лавинный эффект — изменение одного бита входных данных приводит к изменению примерно половины битов хеша.
  1. Формирование дайджеста: После обработки всех блоков восемь 64-битных значений (H0–H7) объединяются в 512-битный хеш. В усечённых версиях (SHA-512/224, SHA-512/256) берётся только часть битов.

Классификация и варианты

SHA-512 существует в нескольких модификациях, стандартизированных в FIPS PUB 180-4:

  • SHA-512: Полный 512-битный дайджест. Используется в системах, требующих максимальной стойкости к коллизиям (например, в цифровых подписях, блокчейнах).
  • SHA-512/224: Усечённая версия с длиной хеша 224 бита. Отличается от SHA-512 начальными константами (используются другие значения, не связанные с квадратными корнями). Предназначена для систем с ограниченной памятью или пропускной способностью.
  • SHA-512/256: Усечённая версия с длиной хеша 256 бит. Имеет собственные начальные константы. Обеспечивает такую же стойкость, как SHA-256, но на 64-битных процессорах работает быстрее.
  • SHA-384: Формально является усечённой версией SHA-512 (отбрасываются старшие 128 бит), но стандартизирована отдельно. Используется в протоколах, где требуется 384-битный хеш (например, в некоторых версиях TLS).

Применение

SHA-512 широко применяется в областях, где требуется криптографическая стойкость и устойчивость к коллизиям:

  • Цифровые подписи: В сочетании с асимметричными алгоритмами (RSA, ECDSA) SHA-512 используется для создания и проверки цифровых подписей. Например, в протоколе TLS 1.3 и в стандарте DNSSEC.
  • Хеширование паролей: Хотя SHA-512 не предназначен для хранения паролей (из-за высокой скорости вычислений, что делает его уязвимым для атак перебором), он часто используется в комбинации с солью и функциями растяжения ключа (например, в алгоритме PBKDF2). Однако для паролей рекомендуется использовать специализированные функции (bcrypt, scrypt, Argon2).
  • Блокчейн и криптовалюты: SHA-512 применяется в некоторых криптовалютах (например, в Bitcoin Cash — в комбинации с SHA-256) и в системах распределённого реестра для обеспечения целостности данных.
  • Контроль целостности данных: SHA-512 используется для проверки неизменности файлов, прошивок, программного обеспечения. Например, в Linux-дистрибутивах для проверки ISO-образов.
  • Протоколы аутентификации: В протоколах IPsec, SSH, TLS для генерации ключей и проверки целостности сообщений.

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

SHA-512 считается криптостойким алгоритмом. На 2024 год не опубликовано успешных атак, позволяющих найти коллизию для SHA-512 быстрее, чем за 2^256 операций (теоретическая сложность для алгоритма с длиной хеша 512 бит). Однако существуют атаки на усечённые версии:

  • SHA-384: Теоретически уязвим к атакам на основе расширения длины (length extension attack), так как является усечением SHA-512. Для SHA-512/224 и SHA-512/256 эта уязвимость устранена за счёт разных начальных констант.
  • Атаки на основе квантовых вычислений: В теории, квантовый компьютер с алгоритмом Гровера может найти коллизию для SHA-512 за O(2^256) операций, что вдвое быстрее классического перебора. Однако практическая реализация таких атак на существующих квантовых системах невозможна.

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

ХарактеристикаSHA-1SHA-256SHA-512SHA-3 (Keccak)
Длина хеша (бит)160256512Переменная (224, 256, 384, 512)
Размер блока (бит)51251210241600
Разрядность операций32-бит32-бит64-бит64-бит
Стойкость к коллизиямСлабая (атаки с 2005 г.)ВысокаяВысокаяВысокая
Производительность на 64-бит CPUНизкаяСредняяВысокаяСредняя

SHA-512 превосходит SHA-256 по производительности на 64-битных процессорах за счёт работы с 64-битными словами, что сокращает количество операций на блок. Однако SHA-512 генерирует более длинные хеши (64 байта против 32), что может быть нежелательно в системах с ограниченным хранилищем или пропускной способностью.

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

Несмотря на высокую стойкость, SHA-512 имеет ряд недостатков:

  • Уязвимость к атакам на основе расширения длины: Для полной версии SHA-512 злоумышленник, зная хеш сообщения, может вычислить хеш сообщения с добавленным суффиксом без знания исходного текста. Это ограничивает использование SHA-512 в протоколах, где требуется защита от подделки (например, в HMAC).
  • Высокая скорость вычислений: SHA-512 оптимизирован для скорости, что делает его непригодным для хеширования паролей без дополнительного замедления (например, с помощью итераций).
  • Отсутствие защиты от квантовых атак: Как и все классические хеш-функции, SHA-512 уязвим к квантовым атакам (алгоритм Гровера), хотя практическая угроза пока не реализована.

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

  • SHA-512 используется в алгоритме SHA-512/256, который входит в стандарт FIPS PUB 180-4 и рекомендуется для использования в системах, где требуется 256-битная стойкость, но доступна 64-битная архитектура.
  • В 2018 году исследователи из компании Trail of Bits продемонстрировали, что SHA-512 может быть реализована на языке программирования Rust с производительностью, близкой к оптимизированным реализациям на C.
  • SHA-512 является частью стандарта FIPS 202, который включает SHA-3, но не заменяет его — оба семейства считаются безопасными и используются параллельно.

Источники

  • FIPS PUB 180-4: Secure Hash Standard (SHS). National Institute of Standards and Technology, 2015.
  • Handbook of Applied Cryptography. A. J. Menezes, P. C. van Oorschot, S. A. Vanstone. CRC Press, 1996.
  • Applied Cryptography: Protocols, Algorithms, and Source Code in C. B. Schneier. John Wiley & Sons, 2015.
  • NIST SP 800-107: Recommendation for Applications Using Approved Hash Algorithms. National Institute of Standards and Technology, 2012.
  • SHA-512/256: A New Hash Function for 64-bit Platforms. J. Kelsey, S. Lucks. IACR Cryptology ePrint Archive, 2007.

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

На главную BFOmetr →