Cryptology Academy · Урок

Семейство SHA-1 и SHA-2

Разберитесь в слабости SHA-1 и различиях между SHA-256 и SHA-512

Урок 3 из 413 шагов

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

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

SHA-1 и SHA-2 — преемники MD5, разработанные NSA. SHA-1 теперь выведен из эксплуатации. SHA-256 и SHA-512 остаются отраслевым стандартом для большинства приложений.

Обзор SHA-1

SHA-1 создаёт 160-битный (20-байтовый) хеш. Разработан NSA и опубликован в 1995 году. Пример: SHA1('hello') = aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d

Структура SHA-1

SHA-1 использует 80 раундов, объединённых в 4 этапа по 20 раундов. На каждом этапе применяются разные логические функции (Ch, Parity, Maj). Алгоритм расширяет 16 входных слов до 80 с помощью XOR и циклических сдвигов.

Коллизия SHA-1: SHAttered, 2017 год

В 2017 году Google и CWI Amsterdam создали первую практически осуществимую коллизию SHA-1 (атаку SHAttered). Два PDF-файла имели одинаковые хеши SHA-1, но разное содержимое. Стоимость: примерно 6500 лет работы GPU.

Семейство SHA-2

В семейство SHA-2 входят SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 и SHA-512/256. Все они используют конструкцию Меркла—Дамгора. SHA-256 — наиболее часто используемый вариант.

Структура SHA-256

SHA-256 использует 64 раунда для блоков размером 512 бит. Он хранит 8 слов состояния по 32 бита каждое (a,b,c,d,e,f,g,h). На каждом раунде входные слова смешиваются с помощью функций Ch, Maj, Σ0 и Σ1.

SHA-256 в Python

import hashlib msg = b'hello' digest = hashlib.sha256(msg).hexdigest() print(digest) # 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

SHA-512 и SHA-256

SHA-512 использует 80 раундов со словами размером 64 бита и создаёт результат размером 512 бит. На 64-битном оборудовании он работает быстрее, но создаёт более длинные дайджесты. Используйте SHA-512, когда требуется уровень безопасности 256 бит.

SHA-3 (Keccak)

SHA-3 был стандартизирован в 2015 году как альтернативная конструкция. Вместо конструкции Меркла—Дамгора он использует губчатую конструкцию, благодаря чему не подвержен атакам с расширением длины.

Атаки с расширением длины на SHA-2

SHA-256(secret || message) уязвим: зная Hash(message), атакующий может вычислить Hash(message || padding || extra). Поэтому HMAC использует конструкцию с двойным хешированием.

Что и когда использовать

SHA-256: общего назначения, TLS, сертификаты и HMAC. SHA-512: приложениям с большим запасом безопасности. SHA-3: новым протоколам, в которых не требуется защищаться от расширения длины. Для новых разработок никогда не используйте SHA-1 или MD5.

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

Какую конструкцию использует SHA-3, благодаря чему он не подвержен атакам с расширением длины?

Итоги

Теперь Вы понимаете развитие семейства SHA. Далее мы изучим практическое применение хешей: контрольные суммы, HMAC и использование SHA в Git.
Можно начать бесплатно

Изучай Cryptology Academy с ИИ-репетитором — бесплатно

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

Курсы
67
Уроки
261

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

Урок «Семейство SHA-1 и SHA-2» бесплатный?

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

Чему я научусь в уроке «Семейство SHA-1 и SHA-2»?

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

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

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

Сколько времени занимает урок «Семейство SHA-1 и SHA-2»?

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

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

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

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

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