Шифр Цезаря и ROT13: как работают самые простые шифры
Гай Юлий Цезарь переписывался с полководцами через шифр, который сегодня взломает первоклассник: каждая буква сообщения сдвигалась по алфавиту на три позиции. A становилась D, Б — G в греческом счёте и так далее. Идея казалась надёжной два тысячелетия назад — большинство современников читать всё равно не умели. Сегодня этот шифр изучают на первом же уроке криптографии, и именно с него проще всего понять, как устроена вся криптография вообще.
Как работает сдвиг
Берёте алфавит и сдвигаете каждую букву сообщения на фиксированное число позиций. Сдвиг 3: А→Г, Б→Д, В→Е. Для расшифровки сдвигаете обратно. Весь секрет — это число сдвига, и поменять его — значит получить другой шифр. ROT13 — частный случай со сдвигом 13: ровно половина алфавита, поэтому повторное применение ROT13 возвращает исходный текст. Зашифровал — расшифровал — зашифровал снова той же операцией. Удобно для сокрытия спойлеров и ответов в форумах, где читатель применяет ROT13 одним нажатием.
Съезд → Фхзвж (сдвиг 3)
Hello → Uryyb (ROT13)
Uryyb → Hello (ROT13 ещё раз)Почему это не шифр в современном смысле
У сдвиговых шифров всего 25 возможных ключей для латиницы (и 32 для кириллицы). Перебор всех вариантов занимает секунды даже вручную: смотрите на 25 «расшифровок» и выбираете осмысленную. Это называется атака полным перебором, и против неё бессильна любая простая подстановка. Более того, частотный анализ взламывает такой шифр вообще без перебора — самая частая буква зашифрованного текста почти наверняка означает самую частую букву языка.
Где простые сдвиги до сих пор работают
- спойлеры к фильмам и ответы к загадкам на форумах и в соцсетях;
- обфускация email-адресов от простейших парсеров спама (не защита, а фильтр наивных ботов);
- обучение: через сдвиговые шифры удобно объяснять ключи, перебор и частотный анализ;
- игры и квесты — загадка «расшифруй сообщение» всё ещё работает на вовлечение.
Попробуйте сами: вставьте текст в ROT13-конвертер и посмотрите, как меняется сообщение. Там же можно поиграть со сдвигом Цезаря на произвольное число позиций, включая кириллицу.
Главный вывод — про отношения ключа и текста. Чем больше возможных ключей и чем равномернее они распределяют текст, тем сильнее шифр. У Цезаря ключей 25, у AES — 2²⁵⁶. Всё остальное — следствия из этой разницы.