Криптография
Шифры подстановки
В 1587 году Мария Стюарт, королева Шотландии, отправила зашифрованное письмо с планом убийства Елизаветы I. Она использовала моноалфавитный шифр с 26! ≈ 4×10²⁶ возможных ключей - больше, чем атомов в человеческом теле. Перебрать их все невозможно даже сегодня. И всё же письмо было расшифровано, а Мария - казнена. Как? Ответ - в этом уроке.
- **ROT13** (шифр Цезаря с k=13) используется на форумах и в email для скрытия спойлеров и непристойного содержимого
- **Частотный анализ** Аль-Кинди - предшественник всех статистических методов взлома, включая современный криптоанализ
- **Головоломки-криптограммы** в газетах - это моноалфавитные шифры, которые решаются именно частотным анализом
Предварительные знания
Шифр Цезаря: сдвиг алфавита
**Гай Юлий Цезарь** шифровал военные послания простейшим способом: сдвигал каждую букву на фиксированное число позиций вперёд по алфавиту. Исторически он использовал сдвиг на 3: A становилась D, B - E, и так далее.
**Математическая формула.** Пронумеруем буквы: A=0, B=1, ..., Z=25. Тогда шифрование буквы x с ключом k:
**Фатальная слабость:** ключ k может принимать всего 25 значений (1..25, сдвиг на 0 бессмыслен). Атакующий перебирает все 25 вариантов за доли секунды - это называется **brute-force** (полный перебор).
**ROT13** - частный случай шифра Цезаря с k=13. Его особенность: шифрование = дешифрование, потому что 13+13=26. ROT13 до сих пор используется в интернете для скрытия спойлеров.
Слово 'HELLO' зашифровано шифром Цезаря с ключом k=5. Какой получится шифротекст?
Шифр Атбаш: зеркало алфавита
**Шифр Атбаш** - один из древнейших шифров, использовавшийся в древнееврейских текстах. Название образовано от первой и последней букв еврейского алфавита: Алеф-Тав-Бет-Шин. Принцип прост: алфавит отражается зеркально.
**Формула:** если буква имеет номер x (от 0 до 25), то шифрованная буква:
**Библейский пример.** В книге пророка Иеремии (25:26, 51:41) слово **"Шешах"** (שֵׁשַׁךְ) - это Атбаш-шифрование слова **"Бавель"** (בָּבֶל), то есть Вавилон. Пророк зашифровал имя врага - одно из первых задокументированных использований криптографии в истории.
**Связь с шифром Цезаря.** Атбаш можно рассматривать как частный случай аффинного шифра (который мы разберём далее): E(x) = (-1 · x + 25) mod 26. Но его нельзя выразить как простой сдвиг Цезаря, потому что Атбаш **инвертирует** порядок букв, а не просто сдвигает.
Какое ключевое свойство отличает Атбаш от большинства других шифров?
Моноалфавитный шифр: иллюзия безопасности
**Шифр Цезаря слишком прост - всего 25 ключей.** А что, если вместо сдвига использовать **произвольную** перестановку алфавита? Каждой букве ставим в соответствие любую другую - без системы, без формулы.
**Пространство ключей** - все возможные перестановки 26 букв:
**Казалось бы, шифр неуязвим?** Нет! В IX веке арабский учёный **Аль-Кинди** изобрёл метод, который ломает этот шифр за минуты - **частотный анализ**.
**Идея частотного анализа:** в любом языке буквы встречаются с разной частотой. В английском: E (~12.7%), T (~9.1%), A (~8.2%). В русском: О (~10.9%), Е (~8.5%), А (~8.0%). Моноалфавитный шифр **сохраняет** эти частоты - просто переименовывает буквы. Самая частая буква в шифротексте, скорее всего, соответствует E (или О в русском).
**Урок, который изменил криптографию навсегда:** огромное пространство ключей (26! вариантов) **не означает безопасность**. Структура языка просачивается сквозь шифр. Этот принцип остаётся актуальным: современные шифры должны скрывать не только буквы, но и **статистические паттерны**.
Моноалфавитный шифр имеет 26! ≈ 4×10²⁶ возможных ключей. Почему он всё равно ненадёжен?
Аффинный шифр: обобщение Цезаря
**Аффинный шифр** объединяет идеи Цезаря и Атбаша в одной формуле. Вместо простого сдвига он применяет **линейное преобразование** - умножение и сложение:
**Ограничение на параметр a.** Для того чтобы дешифрование было возможным, a должно быть **взаимно простым** с 26, то есть gcd(a, 26) = 1. Иначе разные буквы могут зашифроваться в одну и ту же, и восстановить текст будет невозможно.
**Не путайте с Цезарем!** При a=2 шифр сломан: gcd(2, 26)=2, значит буквы A и N обе зашифруются в одну и ту же букву. Проверяйте gcd(a, 26) = 1 перед использованием.
**Иерархия шифров подстановки:** Цезарь (25 ключей) → Аффинный (312 ключей) → Моноалфавитный (4×10²⁶ ключей). Но ни один из них не устоит перед частотным анализом. Следующий шаг - **полиалфавитные** шифры, которые меняют подстановку от буквы к букве.
Больше параметров в формуле шифра = более надёжное шифрование. Аффинный шифр с двумя параметрами (a, b) должен быть намного безопаснее Цезаря.
Пространство ключей аффинного шифра - всего 312 (12 допустимых a × 26 значений b). Это больше, чем у Цезаря (25), но всё ещё ничтожно мало. Перебор 312 вариантов занимает микросекунды. Количество параметров в формуле не определяет безопасность - важен реальный размер пространства ключей и устойчивость к аналитическим атакам.
Параметр a ограничен условием gcd(a, 26) = 1, что оставляет только 12 вариантов. Добавление параметра не помогает, если его допустимых значений мало. Моноалфавитный шифр имеет 4×10²⁶ ключей - и всё равно ломается частотным анализом. Безопасность определяется не количеством параметров, а стойкостью к известным методам атаки.
Почему значение a=2 нельзя использовать в аффинном шифре E(x) = (ax + b) mod 26?
Ключевые идеи
- **Шифр Цезаря** - сдвиг на k позиций: E(x) = (x + k) mod 26. Всего 25 ключей - взлом за секунды
- **Атбаш** - зеркальное отражение алфавита: E(x) = 25 - x. Шифрование = дешифрование (involution)
- **Моноалфавитный шифр** - произвольная подстановка. 26! ≈ 4×10²⁶ ключей, но уязвим к частотному анализу Аль-Кинди
- **Аффинный шифр** - E(x) = (ax + b) mod 26, обобщает Цезаря и Атбаш. Пространство ключей: всего 312
- **Главный вывод:** огромное пространство ключей не гарантирует безопасность - письмо Марии Стюарт тому доказательство
Связанные темы
Шифры подстановки - фундамент для понимания эволюции криптографии:
- Полиалфавитные шифры — Следующий шаг: меняют подстановку от буквы к букве, чтобы скрыть частоты
- Классический криптоанализ — Методы взлома подстановочных шифров: частотный анализ, анализ биграмм, index of coincidence
- Модульная арифметика — Математическая основа: операция mod, обратные элементы, gcd
Вопросы для размышления
- Почему шифр с 4×10²⁶ ключами оказался слабее, чем кажется? Какой общий принцип безопасности из этого следует?
- Криптограф XVI века хочет безопасно переписываться - какие улучшения к моноалфавитному шифру можно предложить?
- Аффинный шифр имеет два параметра, но только 312 ключей. Можно ли построить шифр с одним параметром, но бОльшим пространством ключей?