0Pricing
Cryptology Academy · Урок

Шифрование XOR и одноразовый блокнот

Создайте простой шифр XOR и познакомьтесь с его вариантом, обеспечивающим совершенную секретность

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

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

Шифрование с помощью XOR устроено просто: шифротекст = открытый текст XOR ключ. Если ключ действительно случаен и используется только один раз, получается одноразовый блокнот — единственный шифр, для которого доказана невозможность взлома.

Основы шифрования с помощью XOR

key = bytes([0x5A, 0xF2, 0x3C, 0x11]) plaintext = bytes([0x48, 0x65, 0x6C, 0x6C]) # 'Hell' ciphertext = bytes(p^k for p,k in zip(plaintext,key)) # Result: 0x12 0x97 0x50 0x7D

Свойство сам обратимости XOR

Расшифрование выполняется так же, как шифрование: plain = cipher XOR key Доказательство: (P XOR K) XOR K = P XOR (K XOR K) = P XOR 0 = P Благодаря этому шифры на основе XOR являются тривиально симметричными.

Концепция одноразового блокнота

В одноразовом блокноте (OTP) используется случайный ключ длиной с сообщение, причём ключ применяется ровно один раз. Теоретически такой шифр невозможно взломать: каждый шифротекст с одинаковой вероятностью расшифровывается в любой возможный открытый текст.

Доказательство совершенной секретности Шеннона

Клод Шеннон доказал в 1949 году: шифр обладает совершенной секретностью тогда и только тогда, когда ключ случаен, имеет длину не меньше сообщения и используется не более одного раза. OTP — единственный такой практически применимый шифр.

Практические ограничения OTP

Ключ должен быть такой же длины, как сообщение. Его необходимо безопасно распределить. Повторно использовать его нельзя. Из-за этих ограничений OTP непрактичен для большинства применений.

Атака при повторном использовании ключа: многоразовый блокнот

Если C1 = P1 XOR K и C2 = P2 XOR K, то C1 XOR C2 = P1 XOR P2. Ключ сокращается! Получив два шифротекста, атакующий получает P1 XOR P2, что раскрывает закономерности.

Атака с подбором фрагмента

Если атакующий угадывает часть P1 — зацепку, например «это», — и выполняет XOR с P1 XOR P2 в каждой позиции, становится виден соответствующий текст P2. Постепенно восстанавливаются полные открытые тексты.

Реальный случай сбоя из-за повторного использования ключа

Проект «Венона» расшифровал тысячи советских сообщений, зашифрованных одноразовым блокнотом, потому что агенты KGB повторно использовали блокноты под давлением военного времени. Повторное использование ключей разрушило шифрование, совершенная секретность которого была доказана.

XOR в потоковых шифрах

Современные потоковые шифры (ChaCha20, RC4) генерируют псевдослучайную гамму и выполняют её XOR с открытым текстом. Они приближаются к одноразовому блокноту, но используют короткий ключ, расширенный с помощью CSPRNG.

Демонстрация шифрования с помощью XOR в Python

import os def otp_encrypt(plaintext: bytes) -> tuple: key = os.urandom(len(plaintext)) ciphertext = bytes(p^k for p,k in zip(plaintext,key)) return ciphertext, key ciphertext, key = otp_encrypt(b'Secret!')

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

Почему повторное использование ключа одноразового блокнота катастрофически небезопасно?

Итоги

XOR и одноразовый блокнот — фундаментальные понятия. Далее мы изучим, почему наивные схемы XOR не работают на практике и какие атаки используют повторное применение ключа.

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

Урок «Шифрование XOR и одноразовый блокнот» бесплатный?

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

Чему я научусь в уроке «Шифрование XOR и одноразовый блокнот»?

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

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

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

Сколько времени занимает урок «Шифрование XOR и одноразовый блокнот»?

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

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

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

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

  1. Повторение побитовых операций
  2. Шифрование XOR и одноразовый блокнот
  3. Почему одного XOR недостаточно для безопасности
  4. XOR внутри AES и потоковых шифров
← Назад к Cryptology Academy