0Pricing
Cyber Security Academy · Урок

Хеш-функции: 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

Применение хеша: цифровые подписи

При подписании документов мы не шифруем весь документ закрытым ключом (это слишком медленно). Вместо этого мы:

  1. Вычисляем хеш документа (быстро)
  2. Шифруем хеш закрытым ключом (небольшой объём, быстро)
  3. Получатель расшифровывает его открытым ключом и сравнивает с самостоятельно вычисленным хешем

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 — локальная установка не требуется.

Все уроки этого курса

  1. Симметричное шифрование: AES и потоковые шифры
  2. Асимметричное шифрование: RSA и эллиптические кривые
  3. Хеш-функции: SHA-256 и далее
  4. Цифровые подписи и сертификаты
← Назад к Cyber Security Academy