Шифр Виженера
Шифр Виженера — полиалфавитный шифр: ключевое слово задаёт сдвиг для каждой буквы по очереди и повторяется по кругу, поэтому одна буква текста шифруется по-разному.
Как работает шифр Виженера
Ключевое слово выписывают под текстом и повторяют по кругу. Каждая буква ключа — сдвиг: «А» — ноль, «Б» — один, «Я» — тридцать два. Буква текста сдвигается вперёд на этот шаг, как в шифре Цезаря, но у каждой позиции шаг свой: c = (m + k) mod n, где m и k — номера букв текста и ключа, n — размер алфавита. Алфавит здесь русский, 33 буквы, «ё» между «е» и «ж», нумерация с нуля. Возьмём слово «АЛФАВИТ» и ключ «КЛЮЧ».
| Буква текста | Буква ключа | Сдвиг | Шифртекст |
|---|---|---|---|
| А | К | 11 | К |
| Л | Л | 12 | Ч |
| Ф | Ю | 31 | Т |
| А | Ч | 24 | Ч |
| В | К | 11 | М |
| И | Л | 12 | Ф |
| Т | Ю | 31 | Р |
Третья строка: у «Ф» номер 21, у «Ю» — 31, сумма 52, минус 33 даёт 19, это «Т». Две «А» превратились в разные буквы, «К» и «Ч», а вот «Л» и вторая «А» дали одну и ту же «Ч». В шифре Цезаря одинаковые буквы остались бы одинаковыми, а здесь частоты выровнялись, и подсчёт самой частой буквы не работает. Ключ из одной буквы возвращает обычный Цезарь: «Г» превращает «ПРИВЕТ» в «ТУЛЕЗХ», как в статье про шифр Цезаря.
То же читается по таблице Виженера, квадрату со всеми 33 сдвигами алфавита. Строка — буква ключа, столбец — буква текста, на пересечении результат. Фрагмент для букв нашего ключа:
| Ключ / текст | А | Б | В | Г | Д | Е | Ё |
|---|---|---|---|---|---|---|---|
| К | К | Л | М | Н | О | П | Р |
| Л | Л | М | Н | О | П | Р | С |
| Ю | Ю | Я | А | Б | В | Г | Д |
| Ч | Ч | Ш | Щ | Ъ | Ы | Ь | Э |
Откуда имя и почему шифр считали нерушимым
Имя носит Блез де Виженер, французский дипломат XVI века, но схему придумал не он. Первым шифр с ключевым словом описал итальянец Джованни Баттиста Беллазо в 1553 году. Виженер в «Трактате о шифрах» (1586) изложил другой, более стойкий вариант — с автоключом, где после короткого слова ключом служит сам открытый текст. Имя Виженера прикрепили к схеме Беллазо в XIX веке; историк Дэвид Кан возражал, что для её создания Виженер ничего не сделал. Около трёх столетий шифр считали неразгадываемым.
Как шифр взломали
Слабое место — короткий повторяющийся ключ. Буквы, зашифрованные одной и той же буквой ключа, образуют обычный сдвиг Цезаря, и в них видны частоты языка: их неравномерность измеряет энтропия информации. Остаётся узнать длину ключа, и это умеют два метода.
- Метод Касиски. Слово, которое встретилось дважды на расстоянии, кратном длине ключа, зашифруется одинаково. Фридрих Касиски опубликовал метод в 1863 году; Чарльз Бэббидж разработал метод вскрытия в 1854-м, но не опубликовал. Пример: текст «ТАЙНА ДВУХ ЭТО ТАЙНА» с ключом «ЛУНА» превращается в «ЮУЧНЛЧПУБРАОЮУЧНЛ». Фрагмент «ЮУЧНЛ» повторяется через 12 букв, значит, длина ключа делит 12: это 2, 3, 4, 6 или 12. В длинном тексте повторов много, и общие делители их расстояний сужают выбор.
- Индекс совпадений. Вероятность того, что две случайные буквы текста одинаковы. Для русского текста она около 0,056, для случайных букв — 1/33, около 0,030 (расчёт по частотам букв из НКРЯ). Берут каждую t-ю букву шифртекста и считают индекс: близко к 0,056 — вероятно, длина ключа t. Тест предложил в 1920-х годах Уильям Фридман.
Когда длина найдена, шифртекст раскладывают по столбцам, и каждый вскрывают, как шифр Цезаря, по самой частой букве. Не поддаётся случайный ключ длиной с текст, использованный один раз: это одноразовый блокнот, теоретически нераскрываемый шифр.
Виженер рядом с Цезарем, Атбашем и ROT13
У Цезаря один сдвиг на весь текст, у Атбаша — зеркальная замена без ключа, у ROT13 — сдвиг на 13 на латинице, у Виженера сдвиг меняется по ключевому слову. Сегодня это учебный пример и материал для головоломок. Шифртекст можно записать в QR-код с текстом для квеста, но QR-код его не защитит: сканер сразу покажет все буквы. Чем шифрование отличается от кодирования, разобрано в статье про кодирование информации.
Частые вопросы
Как расшифровать шифр Виженера без ключа?
Сначала найдите длину ключа: ищите повторы в шифртексте и раскладывайте расстояния между ними на делители (метод Касиски) или считайте индекс совпадений для разных длин. Затем разложите текст по столбцам и разберите каждый как шифр Цезаря по частоте букв.
Безопасен ли шифр Виженера сегодня?
Нет. Метод Касиски известен с 1863 года, индекс совпадений — с 1920-х, и сегодня шифр вскрывается небольшой программой. Данные защищают стойкими алгоритмами вроде AES, а Виженер остался учебным примером.
Чем шифр Виженера отличается от шифра Цезаря?
В шифре Цезаря сдвиг один на весь текст, поэтому каждая буква всегда превращается в одну и ту же. В шифре Виженера сдвиг зависит от позиции и ключевого слова: одна «А» может дать «К», другая — «Ч». Цезарь — частный случай Виженера с ключом из одной буквы.
Почему онлайн-калькуляторы шифра Виженера дают разный результат?
Различаются три договорённости: 32 или 33 буквы в алфавите (без «ё» результаты другие), шифруются ли пробелы и знаки (здесь пропускаются) и с какой буквы начинается ключ. Сверьте правила, прежде чем сравнивать ответы.