
Упрощенная версия криптографической атаки на основе парадокса дней рождения: Sweet32 (CVE-2016-2183)
Это демонстрация атаки Sweet32 (CVE-2016-2183): https://sweet32.info/
Атака является примером атаки дня рождения, которая использует криптоалгоритмы с маленьким размером блока (64 бита) в режиме CBC, такие как 3DES и Blowfish. Атака требует генерации большого количества зашифрованных блоков с известным открытым текстом. После генерации можно идентифицировать одинаковые зашифрованные блоки и использовать их для определения значения открытого текста блоков с неизвестным открытым текстом.
Эта реализация использует 3DES (Triple DES) в качестве алгоритма шифрования, который имеет размер блока 64 бита (8 байт) — тот же размер блока, который делает реальный 3DES уязвимым к атаке Sweet32.
Когда два блока шифротекста совпадают (c_i = c_j), мы можем восстановить неизвестный открытый текст, используя:
p_i = p_j ⊕ c_{i-1} ⊕ c_{j-1}
Где:
p_i — неизвестный открытый текст (например, секретный cookie)p_j — известный открытый текст (например, HTTP-заголовки)c_{i-1} и c_{j-1} — предыдущие блоки шифротекстаЭто работает, потому что в режиме CBC коллизия означает, что входные данные блочного шифра были равны, что позволяет восстановить XOR без знания ключа шифрования.
Запустите демонстрацию с гарантированной коллизией:
# Step 1: Generate encrypted packet with secret cookie
python generate_rigged_packets.py rigged_demo.bin
# Step 2: Execute the attack to recover the cookie
python sweet32.py --block-size 8 rigged_demo.bin
Атака покажет значение SECRET COOKIE, а затем восстановит его, используя только шифротекст!
generate_rigged_packets.pyСоздает пакет с гарантированной коллизией для демонстрационных целей. Значение cookie подобрано так, чтобы оно совпадало с блоком известного открытого текста.
sweet32.pyВыполняет атаку дня рождения Sweet32 для восстановления cookie.
Атака Sweet32 использует парадокс дней рождения. Для 64-битного блочного шифра:
Это делает 3DES (и другие 64-битные блочные шифры) уязвимыми в долгоживущих HTTPS-сессиях.
Для реальной атаки Sweet32 на 3DES (64-битные блоки):
| Размер блока | Размер блока | Количество пакетов | Необходимый объем данных | Количество блоков |
|---|---|---|---|---|
| 8 byte | 64 bits | ~785GB | ~785GB | ~2^32 blocks |
Реальная атака требует шифрования ~785 ГБ данных под одним и тем же ключом, поэтому она в первую очередь затрагивает долгоживущие HTTPS-соединения.