0Pricing
Cryptology Academy · Урок

ECB и CBC: закономерности и векторы инициализации

Продемонстрируйте атаку с пингвином на ECB и поймите, почему для CBC требуется случайный вектор инициализации

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

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

ECB и CBC — два режима блочного шифра. ECB известен своей небезопасностью из-за утечки закономерностей. CBC со случайным IV значительно надёжнее. Давайте подробно разберём оба режима.

Режим ECB: электронная кодовая книга

ECB шифрует каждый блок независимо: Ci = AES(K, Pi). Один и тот же блок открытого текста каждый раз даёт один и тот же блок шифротекста. Блоки внутри одного сообщения или разных сообщений совпадают, если совпадает содержимое.

Пингвин ECB

«Пингвин ECB» — классическая демонстрация: зашифруйте изображение PNG с Туксом, пингвином Linux, с помощью AES-ECB. Результат всё ещё похож на пингвина — одинаковые цветные области шифруются в одинаковые закономерности.

Уязвимость ECB: повтор блоков

В режиме ECB атакующий может переставлять блоки шифротекста, не зная ключа: - Блоки независимы - Перестановка блоков → перестановка расшифрованного открытого текста - Дублирование блоков → дублирование содержимого - Удаление блоков → удаление содержимого

Режим CBC: сцепление блоков шифротекста

CBC выполняет XOR каждого блока открытого текста с предыдущим блоком шифротекста перед шифрованием: C0 = AES(K, P0 XOR IV) Ci = AES(K, Pi XOR C(i-1)) Один и тот же открытый текст в разных позициях → разный шифротекст.

Вектор инициализации (IV)

IV — это «C(-1)» для первого блока. Он должен быть: - случайным и уникальным для каждого сообщения - несекретным (передаётся вместе с шифротекстом) - никогда не использоваться повторно с тем же ключом Предсказуемый IV нарушает безопасность CBC.

Расшифрование CBC

Pi = AES_Dec(K, Ci) XOR C(i-1) P0 = AES_Dec(K, C0) XOR IV Обратите внимание: для расшифрования блока i нужны только Ci и C(i-1). Блоки можно расшифровывать параллельно, в отличие от шифрования.

Атака с изменением битов CBC

Изменение бита i в блоке Ci приводит к следующему: (1) искажённый Pi, (2) предсказуемое изменение бита i в P(i+1). Без аутентификации атакующий может изменять отдельные биты открытого текста, зная их положение.

Атака BEAST на TLS 1.0 (2011)

BEAST использовала применение CBC с предсказуемыми IV в TLS 1.0. Последний блок одной записи использовался как IV для следующей. Атаку продемонстрировали Rizzo и Duong, что вынудило браузеры перейти на TLS 1.1 и более новые версии.

Почему CBC требует аутентификации

Шифрование CBC без MAC допускает атаки с изменением битов и атаки с использованием оракула дополнения. Всегда сочетайте CBC с HMAC (сначала шифрование, затем MAC) или переходите на AES-GCM (AEAD встроен).

Практическое использование CBC в Python

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes import os iv = os.urandom(16) key = os.urandom(32) cipher = Cipher(algorithms.AES(key), modes.CBC(iv)) enc = cipher.encryptor() ciphertext = enc.update(padded_plaintext) + enc.finalize()

Краткая проверка

Почему режим ECB раскрывает информацию о структуре открытого текста?

Итоги

ECB опасен, CBC лучше, но требует аутентификации. Далее мы изучим режим CTR — превращение AES в потоковый шифр.

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

Урок «ECB и CBC: закономерности и векторы инициализации» бесплатный?

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

Чему я научусь в уроке «ECB и CBC: закономерности и векторы инициализации»?

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

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

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

Сколько времени занимает урок «ECB и CBC: закономерности и векторы инициализации»?

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

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

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

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

  1. Основы блочных шифров и дополнение
  2. ECB и CBC: закономерности и векторы инициализации
  3. Режим CTR и поведение потокового шифра
  4. GCM и аутентифицированное шифрование
← Назад к Cryptology Academy