Хеш-функции: SHA-256 и далее
Изучите свойства криптографических хеш-функций: устойчивость к коллизиям, устойчивость к нахождению прообраза и области применения.
«Хеш-функции: SHA-256 и далее» — бесплатный урок Cyber Security Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cyber Security Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cyber Security Academy содержит 4 уроков всего.
Что такое криптографическая хеш-функция
Криптографическая хеш-функция принимает входные данные произвольной длины и создаёт выходные данные фиксированной длины (дайджест). Она должна быть детерминированной, быстрой для вычисления, устойчивой к поиску прообраза (её нельзя обратить), устойчивой к коллизиям (нельзя найти два входных значения с одинаковым хешем) и обладать лавинным эффектом (небольшое изменение → совершенно другой хеш).
Семейство SHA-2
Семейство SHA-2 (разработанное NSA, стандартизированное NIST) включает:
- SHA-256 — выход длиной 256 бит, широко используется
- SHA-384 — выход длиной 384 бита
- SHA-512 — выход длиной 512 бит, быстрее на 64-битных CPU
SHA-256 используется в Bitcoin, сертификатах TLS и идентификаторах коммитов Git.
Семейство SHA-3
SHA-3 использует совершенно иную конструкцию (губчатую конструкцию Keccak), чем SHA-2. Он был стандартизирован как запасной вариант на случай обнаружения слабых мест SHA-2. SHA-3 широко не применяется, но используется в некоторых криптографических протоколах и аппаратных средствах.
MD5 и SHA-1: скомпрометированы
Никогда не используйте MD5 или SHA-1 в целях безопасности:
- MD5: коллизию можно найти за секунды с помощью массового оборудования
- SHA-1: первая практическая коллизия продемонстрирована в 2017 году (SHAttered)
Они по-прежнему полезны как контрольные суммы для задач, не связанных с безопасностью (дедупликация файлов), но не подходят для обеспечения целостности.
Применение хеша: целостность файлов
Проверка загружаемых файлов:
sha256sum ubuntu-24.04.iso
# Compare with the hash published on the official site
# If hashes match, file is unmodifiedПрименение хеша: цифровые подписи
При подписании документов мы не шифруем весь документ закрытым ключом (это слишком медленно). Вместо этого мы:
- Вычисляем хеш документа (быстро)
- Шифруем хеш закрытым ключом (небольшой объём, быстро)
- Получатель расшифровывает его открытым ключом и сравнивает с самостоятельно вычисленным хешем
HMAC: ключевой хеш для обеспечения целостности
HMAC (код аутентификации сообщения на основе хеш-функции) объединяет хеш-функцию с секретным ключом для создания тега аутентификации. Он используется для проверки целостности и подлинности данных. HMAC применяется в токенах JWT, для аутентификации API и в TLS.
import hmac, hashlib
mac = hmac.new(key, message, hashlib.sha256).hexdigest()Атаки расширения длины хеша
SHA-2 (конструкция Меркла — Дамгорда) уязвим к атакам расширения длины: если известно H(secret+message), можно вычислить H(secret+message+extension), не зная секрета. HMAC предотвращает это. SHA-3 неуязвим к таким атакам.
Радужные таблицы и соль
Радужная таблица заранее вычисляет соответствия хеш → входные данные для быстрого поиска. Соль предотвращает это: добавление уникального случайного значения к каждому входному значению делает каждый хеш уникальным, поэтому для каждой записи требуется полный перебор вместо поиска в таблице.
Деревья Меркла
Дерево Меркла — это дерево хешей, в котором каждый родительский узел содержит хеш своих дочерних узлов. Деревья Меркла используются в блокчейне Bitcoin, Git и журналах прозрачности сертификатов, чтобы эффективно проверять большие наборы данных без их полной загрузки.
Выбор подходящего хеша
Руководство по выбору:
- Общая целостность и контрольные суммы: SHA-256
- Хранение паролей: Argon2id, bcrypt (NOT использовать SHA-256 напрямую)
- Аутентификация сообщений: HMAC-SHA-256
- Цифровые подписи: SHA-256 или SHA-384 в качестве базового хеша
- Избегайте: MD5 и SHA-1 в приложениях, связанных с безопасностью
Быстрая проверка: хеш-функции
Какая конструкция предотвращает атаки расширения длины и при этом требует секретного ключа?
Итоги урока
Хеш-функции создают дайджесты фиксированной длины из входных данных произвольной длины. SHA-256 и SHA-512 являются действующими стандартами. MD5 и SHA-1 непригодны для задач безопасности. HMAC добавляет секретный ключ для обеспечения аутентифицированной целостности. Для паролей используйте Argon2 и bcrypt. Деревья Меркла расширяют применение хеширования, позволяя эффективно проверять большие наборы данных.
Часто задаваемые вопросы
Урок «Хеш-функции: SHA-256 и далее» бесплатный?
Да — полный текст урока «Хеш-функции: SHA-256 и далее» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cyber Security Academy, подпишись на CoddyKit PRO. Курс Cyber Security Academy содержит 4 уроков всего.
Чему я научусь в уроке «Хеш-функции: SHA-256 и далее»?
Изучите свойства криптографических хеш-функций: устойчивость к коллизиям, устойчивость к нахождению прообраза и области применения. Ты практикуешь Cyber Security Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cyber Security Academy?
Предыдущий опыт не требуется. Cyber Security Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Хеш-функции: SHA-256 и далее»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cyber Security Academy?
Да. Каждый урок Cyber Security Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Симметричное шифрование: AES и потоковые шифры
- Асимметричное шифрование: RSA и эллиптические кривые
- Хеш-функции: SHA-256 и далее
- Цифровые подписи и сертификаты