0Pricing
Cryptology Academy · Урок

Что делает хеш-функцию хорошей

Изучите стойкость к нахождению прообраза, стойкость к коллизиям и лавинный эффект

«Что делает хеш-функцию хорошей» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.

Добро пожаловать

Криптографическая хеш-функция преобразует любые входные данные в дайджест фиксированной длины. В этом уроке мы изучим свойства, благодаря которым хеш-функция становится криптографически стойкой.

Детерминированный результат

Hash(M) всегда выдаёт один и тот же результат для одинаковых входных данных. SHA-256('hello') всегда равен aabb... независимо от того, где и когда Вы его вычисляете.

Фиксированная длина результата

SHA-256 всегда выдаёт 256 бит (32 байта = 64 шестнадцатеричных символа). SHA-512 всегда выдаёт 512 бит. Входные данные могут иметь размер 0 байт или 10 GB — размер результата никогда не меняется.

Стойкость к нахождению прообраза

Получив хеш h, атакующий должен не иметь практически осуществимой возможности найти любое сообщение M, для которого Hash(M) = h. Одностороннее свойство означает, что хеш нельзя обратить.

Стойкость к нахождению второго прообраза

Для заданного M1 должно быть практически невозможно найти M2 ≠ M1, такое что Hash(M1) = Hash(M2). Это не позволяет атакующему подменить сообщение другим сообщением с тем же хешем.

Стойкость к коллизиям

Должно быть практически невозможно найти ANY два сообщения M1 ≠ M2, для которых Hash(M1) = Hash(M2). Это сложнее, чем найти второй прообраз, но свойство слабее, чем может показаться: принцип Дирихле гарантирует существование коллизий.

Лавинный эффект

Изменение одного бита во входных данных должно изменять примерно 50% выходных битов. SHA-256('hello') и SHA-256('hellp') различаются примерно 128 битами. Такая чувствительность препятствует атакам с инкрементальным перебором.

Конструкция Меркла—Дамгорда

MD5, SHA-1 и SHA-2 используют конструкцию Меркла—Дамгорда: входные данные делятся на блоки, через которые последовательно пропускается функция сжатия. Итоговое значение цепочки является хешем. Эта конструкция уязвима для атак расширения длины.

Конструкция губки

SHA-3 (Keccak) использует конструкцию губки: входные данные поглощаются состоянием, после чего результат выжимается из него. Конструкции губки устойчивы к атакам расширения длины и более универсальны, чем конструкция Меркла—Дамгорда.

Граница дня рождения

Атака дня рождения находит коллизии за 2^(n/2) операций, а не за 2^n. SHA-256 имеет 256-битный результат, поэтому стойкость к коллизиям составляет примерно 2^128. У SHA-1 (160 бит) это примерно 2^80 — на практике он уже взломан.

Хеш, MAC и подпись

Хеш: без ключа, обеспечивает только целостность. MAC (HMAC): хеш с ключом, обеспечивает целостность и подлинность. Цифровая подпись: асимметричный ключ, обеспечивает целостность, подлинность и невозможность отказа от авторства.

Быстрая проверка

Какое свойство гарантирует, что практически невозможно найти входные данные, создающие заданный результат хеширования?

Итоги

Теперь Вы понимаете свойства безопасности хеш-функций. Далее мы изучим MD5 — когда-то стандарт, а теперь полностью взломанный алгоритм.

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

Урок «Что делает хеш-функцию хорошей» бесплатный?

Да — полный текст урока «Что делает хеш-функцию хорошей» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.

Чему я научусь в уроке «Что делает хеш-функцию хорошей»?

Изучите стойкость к нахождению прообраза, стойкость к коллизиям и лавинный эффект Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cryptology Academy?

Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Что делает хеш-функцию хорошей»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cryptology Academy?

Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

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

  1. Что делает хеш-функцию хорошей
  2. MD5: история, применение и причины уязвимости
  3. Семейство SHA-1 и SHA-2
  4. Применение хешей: контрольные суммы, HMAC и Git
← Назад к Cryptology Academy