0Pricing
Cryptology Academy · Урок

Режим CTR и поведение потокового шифра

Используйте режим счётчика, чтобы превратить блочный шифр в генератор потока ключей

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

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

Режим счётчика (CTR) превращает любой блочный шифр в потоковый. Он допускает параллельную обработку, не требует дополнения и лежит в основе AES-GCM. Давайте освоим его.

Концепция режима CTR

Сгенерируйте поток ключа, зашифровывая последовательные значения счётчика: Keystream[i] = AES(K, Nonce || Counter_i) Ciphertext = Plaintext XOR Keystream Счётчик увеличивается для каждого блока. Расшифрование идентично шифрованию.

CTR и CBC

CBC: последовательное шифрование (каждый блок зависит от предыдущего). CTR: полностью распараллеливаемый режим (каждый блок независим). Для файла размером 1 ГБ CTR может использовать все ядра CPU, а CBC — нет.

Заполнение не требуется

CTR создаёт поток ключей произвольной длины. Выполняйте XOR с открытым текстом побайтно. Для сообщения размером 100 байт используется 100 байт потока ключей — заполнение не требуется. Отличный вариант для потоковых данных.

Структура одноразового числа и счётчика

Распространённое разделение для 128-битного блока AES: - 64-битное случайное одноразовое число (уникальное для каждого сообщения) - 64-битный счётчик (увеличивается для каждого блока) Или 96-битное одноразовое число + 32-битный счётчик (стандарт GCM). Уникальность одноразового числа критически важна — никогда не используйте повторно пару (одноразовое число, ключ).

Атака при повторном использовании одноразового числа CTR

CTR с одной и той же парой (ключ, одноразовое число) создаёт один и тот же поток ключей. При шифровании двух разных сообщений: C1 XOR C2 = P1 XOR P2. Точно так же работает атака на одноразовый блокнот при многократном использовании. Катастрофическая утечка информации.

Произвольный доступ в CTR

CTR поддерживает произвольный доступ: чтобы расшифровать блок 1000, напрямую вычислите AES(K, Nonce || 1000). Предыдущие блоки расшифровывать не нужно. Идеальный вариант для баз данных и шифрования дисков (в сочетании с другими режимами).

CTR в Python

from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes import os nonce = os.urandom(16) # Used as counter start cipher = Cipher(algorithms.AES(key), modes.CTR(nonce)) enc = cipher.encryptor() ciphertext = enc.update(plaintext) + enc.finalize()

CTR и распространение ошибок

В режиме CTR один повреждённый бит шифротекста изменяет ровно один бит открытого текста. Ошибки не распространяются на другие блоки (в отличие от CBC, где повреждение блока искажает следующий блок). Это хорошо подходит для каналов с помехами.

Режим SIV для устойчивости к ошибкам использования одноразового числа

AES-SIV (синтетический вектор инициализации) устойчив к ошибкам использования одноразового числа: даже если одноразовое число используется повторно, раскрывается только равенство открытых текстов, а не сами открытые тексты. Применяется в сценариях, где сложно гарантировать уникальность одноразового числа.

От CTR к GCM

AES-GCM = AES-CTR + аутентификация GHASH. Режим счётчика отвечает за шифрование. GHASH вычисляет тег аутентификации с помощью умножения в поле Галуа. Вместе они обеспечивают аутентифицированное шифрование.

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

Каково главное преимущество режима CTR перед режимом CBC при шифровании больших объёмов данных?

Итоги

Вы освоили режим CTR! Далее мы объединим его с аутентификацией в AES-GCM, чтобы получить аутентифицированное шифрование.

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

Урок «Режим CTR и поведение потокового шифра» бесплатный?

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

Чему я научусь в уроке «Режим CTR и поведение потокового шифра»?

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

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

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

Сколько времени занимает урок «Режим CTR и поведение потокового шифра»?

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

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

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

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

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