Добавить в корзинуПозвонить
Найти в Дзене
Техно Колибри

От Цезаря до Виженера: как работает «невозможный для взлома» шифр

Три века его считали «невозможным для взлома». А до этого пользовались шифром, который взламывался всего за 32 попытки! Так о чём идет речь? Что представляет собой самый простой шифр Цезаря и самый удобный, но и самый «неразгадываемый» шифр Виженера? И почему их до сих пор изучают в школах криптографии? Давайте разбираться вместе. Начнём с классики. Шифр Цезаря (также известный как шифр сдвига или код Цезаря) – это один из древнейших и на сегодняшний день самый лёгкий и понятный способ зашифровать текст, который также легко и просто поддается взлому, т.е. расшифровке. Древнеримский полководец Юлий Цезарь действительно использовал подобный метод шифрования для военной переписки. Он был уверен, что если письмо попадало в руки противника, тот видел лишь набор бессмысленных символов. Как он работает? Объясню на примере русского алфавита. Представьте алфавит в виде замкнутого круга. Вы выбираете число сдвига (ROT – это и есть ваш «ключ») и заменяете каждую букву на ту, что стоит через указа
Оглавление

Три века его считали «невозможным для взлома». А до этого пользовались шифром, который взламывался всего за 32 попытки! Так о чём идет речь? Что представляет собой самый простой шифр Цезаря и самый удобный, но и самый «неразгадываемый» шифр Виженера? И почему их до сих пор изучают в школах криптографии? Давайте разбираться вместе.

Шифр Цезаря, когда «А = Б»

Начнём с классики. Шифр Цезаря (также известный как шифр сдвига или код Цезаря) – это один из древнейших и на сегодняшний день самый лёгкий и понятный способ зашифровать текст, который также легко и просто поддается взлому, т.е. расшифровке.

Древнеримский полководец Юлий Цезарь действительно использовал подобный метод шифрования для военной переписки. Он был уверен, что если письмо попадало в руки противника, тот видел лишь набор бессмысленных символов.

Как он работает? Объясню на примере русского алфавита.

Представьте алфавит в виде замкнутого круга. Вы выбираете число сдвига (ROT – это и есть ваш «ключ») и заменяете каждую букву на ту, что стоит через указанное количество позиций вправо.

Например, если ключ ROT2 – это значит каждую букву нужно сдвинуть на 2 позиции вправо. Тогда у нас получается так:

  • А → В
  • Б → Г
  • ….
  • Ю → А
  • Я → Б (круг замкнулся)

Зашифруем слово «КОЛИБРИ» с ключом ROT2:

  • К → М
  • О → Р
  • Л → Н
  • И → Л
  • Б → Г
  • Р → Т
  • И → Л

Получается «МРНЛГТЛ».

Шифр Цезаря (шифр сдвига или код Цезаря) – древнейших и самый лёгкий и понятный способ зашифровать текст.
Шифр Цезаря (шифр сдвига или код Цезаря) – древнейших и самый лёгкий и понятный способ зашифровать текст.

Чтобы прочитать сообщение обратно, получатель просто сдвигает каждую букву на столько позиций, сколько указано в ключе. Тайна раскрыта!

Да, взломать его очень просто. В русском алфавите 33 буквы, значит, возможных сдвигов всего 32 (33-й вернёт исходный текст). Перебрать их вручную – дело нескольких минут, а простой скрипт справится за миллисекунды.

В древнегреческом алфавите было 27 букв, поэтому и вариантов сдвига было еще меньше, а в английском – 26. Именно поэтому шифр Цезаря сегодня не используют для реальной защиты данных.

Если его легко взломать, то зачем изучают? Затем, что это идеальный «учебный полигон». Он наглядно показывает базовые понятия криптографии – открытый текст, шифротекст, ключ, симметричность алгоритма.

Это как учебный велосипед перед тем, как сесть за руль настоящего автомобиля.

Многие вспомнят форумы, где можно было раскодировать всё что угодно, в том числе и шифр Цезаря!
Многие вспомнят форумы, где можно было раскодировать всё что угодно, в том числе и шифр Цезаря!

Шифр Виженера простой, но сложный

А что, если буква «А» в начале сообщения превратится в «Д», а такая же «А» в середине текста в «М»? Или, наоборот, две разные буквы в шифре будут идти как одна?

Именно эту идею реализовал в XVI веке французский дипломат Блез де Виженер. Хотя историки утверждают, что этот код (шифр) изобретался много раз, а первым его описал Джованни Баттиста Беллазо. Но не в этом суть. Мы рассмотрим сам шифр.

Данный метод продержал статус «неразгадываемый шифр» (le chiffre indéchiffrable) более 300 лет.

Почему? Потому что он сломал главный инструмент криптоаналитиков того времени – частотный повторяющийся анализ.

Если сказать математическим языком, то:

Шифр Виженера – это метод полиалфавитного шифрования, который состоит из последовательности нескольких шифров Цезаря с различными значениями сдвига и является простой формой многоалфавитной замены.
Шифр Виженера использует шифр Цезаря в каждой позиции в тексте. Значение сдвига определяется с помощью повторяющегося ключевого слова.

На самом деле этот метод удивителен тем, что он простой (!) для понимания и реализации, но практически недоступный (!) для взлома. Во всяком случае, так считали 3 века подряд.

Блез де Виженер – французский дипломат, криптограф и алхимик. Изобретение шифра, называемого в настоящее время шифром Виженера, в XIX веке было ошибочно приписано именно ему. Давид Кан в своей книге «Взломщики кодов», написал: «история проигнорировала важный факт и назвала шифр именем Виженера, несмотря на то, что он ничего не сделал для его создания».
Блез де Виженер – французский дипломат, криптограф и алхимик. Изобретение шифра, называемого в настоящее время шифром Виженера, в XIX веке было ошибочно приписано именно ему. Давид Кан в своей книге «Взломщики кодов», написал: «история проигнорировала важный факт и назвала шифр именем Виженера, несмотря на то, что он ничего не сделал для его создания».

Принцип работы шифра Виженера предельно понятный. В отличие от шифра Цезаря, где сдвиг строго фиксирован, здесь сдвиг меняется в зависимости от позиции буквы и секретного слова – буквенного ключа.

Допустим, наш текст: КОЛИБРИ, а буквенный ключ: ДЗЕН.

Ключ мы повторяем до тех пор, пока не закроем все слово (количество букв в нем), получается что для слова из 6 букв ключ будет: ДЗЕНДЗЕ

Если мы захотим зашифровать словосочетание, предложение или длинное письмо, например, ТЕХНО КОЛИБРИ (где 12 букв – пробел не считается), то ключ будет: ДЗЕНДЗЕНДЗЕН (тоже 12 букв), а если короткое, например ОЛЯ (3 буквы), то ключ будет: ДЗЕ (тоде 3 буквы). Ну, вы поняли…

Для шифрования используется специальная таблица – квадрат Виженера, где каждая строка – это алфавит, сдвинутый на одну позицию относительно предыдущей (код Цезаря).

Таблица Виженера. Как простой шифр оказался «невозможным для взлома».
Таблица Виженера. Как простой шифр оказался «невозможным для взлома».

Итак, шифруем текст КОЛИБРИ с ключом ДЗЕНДЗЕ.

Для этого, берём первую букву текста К и первую букву ключа Д. Находим в таблице столбец К и строку Д, а на пересечении получаем букву О. И так весь текст.

Процесс шифрования будет следующим:

  1. К + Д → О
  2. О + З → Ц
  3. Л + Е → Р
  4. И + Н → Ц
  5. Б + Д → Е
  6. Р + З → Ш
  7. И + Е → Н

Итог: КОЛИБРИ (текст) → ОЦРЦЕШН (шифротекст)

Для расшифровки процесс идёт в обратную сторону: по букве ключа находим строку, в ней ищем символ шифротекста и смотрим, какому столбцу он соответствует.

Почему шифр считался «неприступным»?

В обычном русском тексте буква О встречается чаще всего. В шифре Цезаря криптоаналитик ищет самый частый символ в шифровке, предполагает, что это О, и быстро вычисляет ключ.

В шифре Виженера одна и та же буква открытого текста шифруется по-разному в зависимости от ключа. Частоты «размазываются», и текст выглядит как равномерный шум. До середины XIX века это действительно работало. Но… его всё-таки взломали!

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

Измерив расстояние между такими повторами, можно вычислить длину ключа. А зная длину, текст разбивается на несколько независимых шифров Цезаря, каждый из которых уже взламывается частотным анализом. Так «вечный» шифр пал. Но… не для обычных людей.

Чтобы понять насколько метод Касиски сложен, я просто приведу скриншот маленького кусочка из объяснения в Википедии...

Криптограф Фридрих Касиски смог найти формулу, по которой можно определить длину ключа кода Виженера.
Криптограф Фридрих Касиски смог найти формулу, по которой можно определить длину ключа кода Виженера.

И всё же – код Виженера самый «народный» и надёжный!

Благодаря тому, что понять принцип шифрования при помощи шифра Виженера очень просто – он становится доступным и для физиков, и для лириков.

Причем усложнить сам шифр можно во сто крат даже людям, которые не сильны в математике. А вот расшифровать обратно зашифрованное слово, не зная ключа и последовательности действий шифровальщика – практически невозможно!

Как усложнить квадраты, которые могут применяться в качестве основы для многоалфавитной системы? Очень просто!

Договоритесь с тем, кто будет расшифровывать ваш текст, что столбец будет начинаться не с «А», а с другой буквы. Или добавьте к алфавиту цифры, знаки препинания или символы. Таким образом Вы многократно усложните расшифровку.

Хотите сделать защиту по-настоящему крепкой? Используйте принцип «матрёшки»:

  1. Сначала перемешайте буквы в исходном тексте другим методом (например, шифром перестановки).
  2. Затем пропустите полученный результат через шифр Виженера.
  3. Потом зашифруйте его при помощи шифра Цезаря.

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

Важный нюанс: не ставьте первым слоем шифр Цезаря. Два подряд идущих шифра замены математически «схлопываются» в один простой сдвиг, поэтому реальной дополнительной безопасности это не даст, а лишь создаст иллюзию защиты.

Золотое правило: избегайте коротких ключей. Чем чаще ваше секретное слово повторяется по ходу текста, тем чётче проявляются статистические закономерности, на которых строится взлом. Поэтому в идеале выбирайте ключ длиной с сам текст.

Другими словами, если ключ такой же длинный, как и всё сообщение, если он сгенерирован случайным образом, содержится в тайне и используется лишь однократно, то такая схема называется «схема одноразовых блокнотов» и это единственная система шифрования, для которой доказана абсолютная (!) криптографическая стойкость даже в наше время!

Но… никогда не используйте в качестве ключа сам текст – это в первую очередь проверяется взломщиками.

Вместо заключения

Зачем нам это знать сегодня? Конечно же, ни шифр Цезаря, ни шифр Виженера сейчас не защищают ваши пароли или банковские карты. Но их идеи – фиксированный сдвиг, полиалфавитная замена, зависимость шифра от ключа, уязвимость к повторам – стали фундаментом всей современной криптографии. Изучая эти методы, современные криптографы тренируют своё алгоритмическое мышление.

А какой подход к шифрованию, на ваш взгляд, окажется самым надёжным в ближайшие 10 лет: усложнение шифров, постквантовые алгоритмы или всё же биометрия (отпечатки пальцев, сетчатка глаза, ДНК, форма лица)?

Здесь увлекательная подборка :

Забавная математика))) | Техно Колибри | Дзен

А здесь, помните, мы писали свои имена на японском:

-6

Благодарю, что дочитали до конца. Лайк – лучшее спасибо мне, как автору!