developer • 7 мин чтения • Обновлено: 2026-09-20

Коллизии хэш-функций: почему MD5 и SHA-1 небезопасны

Хэш-функция преобразует массив данных произвольного размера в строку фиксированной длины. Но что происходит, когда двум совершенно разным файлам соответствует одинаковый хэш? Разбираем механику коллизий, атаку SHAttered от Google и причины, по которым современный веб полностью перешёл на семейство SHA-2 и SHA-3.

Что такое коллизия и парадокс дней рождения

По принципу Дирихле («принцип ящиков»), если распределить бесконечное количество возможных исходных файлов по конечному числу уникальных хэш-значений, неизбежно найдутся два разных файла с идентичным дайджестом. Это явление называется коллизией.

Интуиция человека подсказывает, что для хэша длиной N бит потребуется перебрать около 2^N вариантов, чтобы найти совпадение с заданным файлом (стойкость к нахождению прообраза).

Однако для нахождения любой произвольной пары файлов с одинаковым хэшем (Collision Resistance) действует теория вероятностей «Парадокса дней рождения»:
• Чтобы вероятность совпадения дней рождения у двух людей в комнате превысила 50%, требуется всего 23 человека, а не 183;
• Для хэш-функции длиной N бит вычислительная сложность нахождения первой коллизии составляет не 2^N, а всего 2^(N/2) операций!

Для MD5 (128 бит) барьер устойчивости составляет всего 2^64 операций, что легко преодолевается кластером современных GPU за считанные часы.

Полезный инструмент: Для вычисления контрольных сумм и проверки целостности используйте вычисление хэшей MD5 и SHA-256.

Полезный инструмент: При хешировании паролей пользователей создавайте ключи через генератор надёжных паролей онлайн.

Как пала стойкость MD5 и SHA-1 (Атака SHAttered)

• MD5 (1991 год, Рональд Ривест): в 2004 году группа китайских исследователей под руководством профессора Сяоюнь Ван доказала наличие критических уязвимостей в структуре сжатия Меркла-Дамгора. В 2008 году эксперты сгенерировали поддельный валидный сертификат удостоверяющего центра SSL/TLS с одинаковым MD5-хэшем. Сегодня MD5 пригоден исключительно для быстрой проверки целостности файлов от случайных битовых сбоев, но категорически запрещён в безопасности.

• SHA-1 (1995 год, NSA, дайджест 160 бит): теоретическая стойкость составляла 2^80. Однако в 2017 году исследователи из Google и CWI Amsterdam представили атаку SHAttered: они создали два PDF-документа с совершенно разным содержимым, но абсолютно идентичным SHA-1 хэшем. Затраты составили эквивалент 110 лет работы одного GPU — вполне доступный бюджет для спецслужб и киберпреступников.

Почему SHA-256 невозможно взломать полным перебором

Дайджест алгоритма SHA-256 составляет 256 бит (64 шестнадцатеричных символа). Стойкость к коллизиям с учётом парадокса дней рождения составляет:
2^(256 / 2) = 2^128 операций.

Число 2^128 превышает 3.4 × 10^38:
• Для совершения такого количества операций всем суперкомпьютерам Земли, работающим синхронно, потребовались бы миллиарды лет;
• Энергия, необходимая для переключения такого количества транзисторов, превосходит энергетический баланс Солнца за всю историю его существования.

Поэтому алгоритмы SHA-256 и SHA-512 остаются криптографическим золотым стандартом для блокчейна, цифровых подписей TLS и проверки пакетов ПО.

Часто задаваемые вопросы (FAQ)

Только с использованием уникальной случайной «соли» (salt) и алгоритмов медленного хэширования (Argon2, bcrypt, PBKDF2). Чистый SHA-256 работает слишком быстро: злоумышленник на ферме видеокарт может перебирать миллиарды простых паролей в секунду.

Математически нет — хэширование является необратимым односторонним преобразованием. Восстановление возможно только методом перебора по радужным таблицам (Rainbow Tables) для очень коротких и предсказуемых паролей.

Воспользуйтесь нашим инструментом «Генератор хэшей онлайн» — он мгновенно вычисляет MD5, SHA-1, SHA-256 и SHA-512 с использованием Web Crypto API прямо на вашем устройстве.

Скопировано в буфер обмена!