← Все комнаты Путь «Криптография» →
СложныйКриптография Флаг Неделя криптографииОсенний CTF

Блокнот на два раза

Прогресс комнаты 0 / 4
Задание 1Введение

Цель: Почему одноразовый блокнот нельзя использовать дважды.

Два сообщения зашифрованы XOR с одним и тем же случайным ключом (одноразовый блокнот, использованный дважды). Первое сообщение — открытое объявление, его текст известен.

Задание 2Теория и инструменты

Одноразовый блокнот абсолютно стоек, только если ключ случаен, не короче сообщения и используется один раз.

Если ключ k использован дважды: c1 ⊕ c2 = m1 ⊕ m2. Ключ исчезает! Зная m1, сразу получаем m2.

Инструменты

  • Python: bytes.fromhex, zip, XOR

Больше теории — в разделе «Обучение: Криптография».

Задание 3Практика: найдите флаг
Данные задания265 символов
m1 = ATTENTION ALL STAFF: THE SERVER ROOM WILL BE CLOSED ON FRIDAY.
c1 = 2641dfa48ed4dc9d35810b118c378d90042541c4eb14bffe6258a7d5689fd792ddac9423c267079eebdef9ebd13670d34be7beb5e996be47a9ecb1b20929
c2 = 2441cd9aaeb3e3e109fe386eb564ed9b713c3790f81f838a2f38bdf70abef8
Войдите, чтобы ответить

Пошаговый план — открывайте по одному шагу

  1. 1
    Переведите c1 и c2 из hex в байты.

Подсказки — каждая до решения стоит −50 очков

Задание 4Как защититься

Никогда не переиспользуйте ключ или nonce. В AES-GCM и ChaCha20 повтор nonce с тем же ключом даёт ровно эту уязвимость.

Разборы участников

Разборы открываются после того, как вы решите комнату, — чтобы не спойлерить ответ.