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

Хеш — фиксированная выходная сумма данных

Хеш (от англ. hash, буквально «рубка, измельчение») — фиксированная по длине последовательность битов, вычисляемая из входных данных произвольного размера с помощью хеш-функции. Хеш является детерминированным: одни и те же входные данные всегда дают один и тот же хеш, а любое изменение входа, даже в одном бите, приводит к совершенно иному результату. Хеши широко применяются в информационной безопасности, базах данных, системах контроля целостности и блокчейнах.

Хеш-функции

Хеш-функция — математическое преобразование, которое сопоставляет входной строке или набору байтов фиксированный выход. Основные свойства криптографически стойких хеш-функций:

Основные алгоритмы

MD5

Алгоритм MD5 (Message Digest 5) разработан Рональдом Ривестом в 1991 году, формирует 128-битный хеш. Долгое время был стандартом для проверки целостности файлов, но к 2000-м годам были обнаружены эффективные методы подбора коллизий, поэтому MD5 признан криптографически небезопасным. По-прежнему применяется в незащищённых сценариях, например для контроля сумм загрузок.

SHA-1

SHA-1 (Secure Hash Algorithm 1) разработан Агентством национальной безопасности США (NSA) в 1995 году, формирует 160-битный хеш. В 2017 году исследователи Google и CWI Amsterdam продемонстрировали первый реальный случай подбора коллизий (атака SHAttered), после чего SHA-1 был официально отозван для криптографических целей.

SHA-2

Семейство SHA-2 включает варианты с длиной хеша 224, 256, 384 и 512 бит (SHA-224, SHA-256, SHA-384, SHA-512). Разработано в 2001 году, является действующим стандартом и повсеместно применяется в TLS-сертификатах, цифровых подписях и криптовалютах. Bitcoin использует дважды применённый SHA-256 для адресов и майнинга.

SHA-3

SHA-3 был выбран в результате открытого конкурса NIST в 2012 году на основе алгоритма Keccak, разработанного бельгийскими криптографами Гвидо Берто, Йоаном Деменом, Михаэлем Петитом и Бартом Ванассе. В отличие от SHA-2, SHA-3 построен на принципе губки (sponge construction) и устойчив к атакам, потенциально применимым к конструкциям Меркла — Дамгора. Стандартизирован как FIPS 202.

Русские стандарты

В России действует ГОСТ Р 34.11-2012 «Информационная технология. Криптографическая защита информации. Функция хеширования», разработанная под руководством В. Б. Мальцева. Алгоритм формирует 256-битный хеш и входит в состав стандартов цифровой подписи (ГОСТ Р 34.10-2012) и электронной подписи (Федеральный закон № 63-ФЗ). Применяется в государственных информационных системах и банковских операциях на территории России.

Другие алгоритмы

  • BLAKE2 и BLAKE3 — быстрые современные функции, основанные на SHA-3-конкурсном BLAKE, используются в Argon2 и различных приложениях.
  • Whirlpool — 512-битная функция, включена в стандарт ISO/IEC 10118-3.
  • RIPEMD-160 — 160-битная функция, применяется в Bitcoin для создания адресов из SHA-256 хешей.

Применение

Контроль целостности

Хеши позволяют проверить, что файл не был изменён. Распространённые утилиты (md5sum, sha256sum) вычисляют хеш файла, который пользователь сравнивает с опубликованным автором. Любое изменение файла меняет хеш, что обнаруживает повреждение или подмену.

Криптография и цифровые подписи

Хеш-функции лежат в основе алгоритмов цифровой подписи: подпись вычисляется не от исходного сообщения, а от его хеша, что ускоряет процесс и повышает безопасность. Хеши используются в протоколах аутентификации (например, HMAC — Hash-based Message Authentication Code), для хранения паролей (с солью) и в цепочках Меркла.

Блокчейн

В блокчейне Bitcoin хеши образуют цепочку: заголовок блока содержит хеш предыдущего блока, что обеспечивает неизменяемость записей. Майнинг заключается в подборе nonce, дающего хеш с нужным числом ведущих нулей. Цепочки Меркла используются для компактной проверки транзакций.

Системы контроля версий

Git идентифицирует коммиты, файлы и деревья с помощью SHA-1 (с переходом на SHA-256), что обеспечивает неизменяемость истории репозитория.

Коллизии

Коллизия — ситуация, когда два разных входа дают одинаковый хеш. Для n-битной хеш-функции коллизия гарантированно существует (принцип дирихлева), однако её поиск в общем случае требует порядка 2^(n/2) операций (атака дня рождения). Для MD5 это 2^64 операций, что выполнимо на современном оборудовании, а для SHA-256 — 2^128, что практически неосуществимо.

Источники

  • Райбов С. С., Часовских В. С. «Основы информационной безопасности»
  • Справочник по криптографии: RFC 1321 (MD5), FIPS 180-4 (SHA-2), FIPS 202 (SHA-3)
  • ГОСТ Р 34.11-2012 «Функция хеширования»
  • Мальцев В. Б., Петросян Ю. В. «Криптографические функции хеширования»
  • Stallings W. «Cryptography and Network Security: Principles and Practice»
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru