Шифр Виженера

Полиалфавитный шифр, который считался «невзламываемым» три столетия и изменил историю криптографии

Зачем это нужно?

Представьте: вы — Алиса, дипломат эпохи Возрождения. Вам нужно отправить секретное послание Бобу, но почта ненадёжна — письма перехватывают, вскрывают, копируют.

Простой шифр замены (где А→Х, Б→Ц и т.д.) легко взломать частотным анализом: в русском языке буква «О» встречается чаще всех — значит, самый частый символ в шифротексте, скорее всего, и есть «О».

Шифр Виженера решает эту проблему. Вместо одного алфавита он использует множество алфавитов, переключаясь между ними по ключевому слову. Одна и та же буква открытого текста шифруется по-разному в зависимости от позиции — и частотный анализ перестаёт работать.

Этот метод был настолько надёжен, что его называли «le chiffre indéchiffrable» — «не взламываемый шифр». Лишь в 1863 году Фридрих Касиски опубликовал метод его взлома.

Как это работает?

В основе шифра — таблица Виженера: квадрат 33×33 (для русского алфавита), где каждая строка — это сдвинутый алфавит.

1

Подготовка таблицы

Первая строка — обычный алфавит. Каждая следующая строка сдвинута на одну позицию влево. Строка с номером K начинается с K-й буквы алфавита.

Пример для английского (первые 3 строки):

ABCDEFGHIJKLMNOPQRSTUVWXYZ
BCDEFGHIJKLMNOPQRSTUVWXYZA
CDEFGHIJKLMNOPQRSTUVWXYZAB
2

Выбор ключа

Алиса и Боб договариваются о ключевом слове, например КЛЮЧ. Это слово циклически повторяется под сообщением:

Сообщение: П Р И В Е Т М И Р У !
Ключ: К Л Ю Ч К Л Ю Ч К Л
3

Шифрование

Для каждой буквы сообщения:

  • Находим строку по букве ключа
  • Находим столбец по букве сообщения
  • На пересечении — зашифрованная буква

Формула: C = (P + K) mod N

где P — позиция открытого текста, K — позиция ключа, N — размер алфавита, C — шифротекст.

4

Расшифровка

Боб использует ту же таблицу, но в обратном порядке:

  • Строка = буква ключа
  • В этой строке ищем символ шифротекста
  • Столбец, где он находится — исходная буква

Формула: P = (C − K + N) mod N

Математика шифра Виженера
🔐 Шифрование
C = (P + K) mod N
Пример:
Шифруем П с ключом К
П = 16-я буква (0-индекс), К = 11-я
(16 + 11) mod 33 = 27 → Ч
🔓 Расшифровка
P = (C − K + N) mod N
Пример:
Расшифровываем Ч с ключом К
Ч = 27, К = 11, N = 33
(27 − 11 + 33) mod 33 = 16 → П
Почему это работало?
Каждая буква открытого текста шифруется разными буквами в зависимости от позиции ключа. Частотный анализ, который ломает простые шифры замены, становится бесполезным — буква «О» может превратиться в «А», «М», «Щ» и т.д.
Длина ключа > 5 → высокая стойкость
* В игре таблица визуализирована: строки и столбцы подсвечиваются при каждом шаге, чтобы вы видели процесс «вживую».
Ключевая мысль: Сила Виженера — в повторении ключа. Чем длиннее и случайнее ключ, тем сложнее его взломать. Но именно цикличность ключа стала его слабостью: метод Касиски использует повторения в шифротексте, чтобы найти длину ключа, а затем применить частотный анализ к каждой «подстроке».

А теперь — главная магия

Что вы сделаете в симуляции?

В игре вы не просто читаете о Виженере — вы проживаете весь цикл: от ввода сообщения до успешной передачи. Вы увидите, как абстрактная формула превращается в наглядную анимацию, и поймёте, почему этот шифр был прорывом для своего времени.

Для любознательных

Историческая справка

Шифр впервые описал Джован Баттиста Беллазо в 1553 году, но ошибочно приписали Блезу де Виженеру, который описал его в 1586 году. Название прижилось, и сегодня мы говорим «шифр Виженера».

Почему его взломали?

В 1863 году прусский офицер Фридрих Касиски опубликовал метод, который использует повторения в шифротексте. Если одна и та же фраза открытого текста зашифрована одним и тем же фрагментом ключа, в шифротексте появится одинаковая последовательность. Расстояние между такими повторениями часто кратно длине ключа.

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

Темы для углублённого изучения

Если вы хотите погрузиться глубже в криптографию, вот ключевые темы:

Частотный анализ

Как статистика языка помогает взламывать шифры: частоты букв, биграмм, триграмм

Метод Касиски

Алгоритм поиска длины ключа по повторениям в шифротексте

Индекс совпадения

Статистический тест Фридмана для определения длины ключа

Одноразовый блокнот

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

Современные блочные шифры

Как идеи полиалфавитного шифрования эволюционировали в AES, ChaCha20 и другие алгоритмы

Криптоанализ в Python

Практические скрипты для частотного анализа и атак на шифр Виженера

Практическое применение сегодня

Хотя шифр Виженера не используется для защиты реальных данных, он остаётся:

  • Отличным учебным примером полиалфавитного шифрования
  • Основой для понимания более сложных алгоритмов
  • Элементом CTF-соревнований и криптографических квестов
  • Историческим мостом между классической и современной криптографией

Теперь, когда вы понимаете основы, самое время попробовать на практике и увидеть шифр в действии!

В интерактивной симуляции вы сможете зашифровать своё сообщение и увидеть каждый шаг процесса