Серия «Вехи криптографии через геймификацию»

14

Шифр Сатаны!⁠⁠

Серия Вехи криптографии через геймификацию

Здравствуйте, ребятушки! Сегодня у нас на повестке шифр из самых недр преисподней. У одного из предков современной блочной криптографии буквально было имя Lucifer — прямо в служебных документах IBM, без иронии и без маркетинга.

Никакого дьявола. Виноват лимит на длину имени файла

В конце 1960-х в исследовательском центре IBM в Йорктаун-Хайтс шла разработка системы защиты данных под кодовым названием Demonstration. Операционная система не умела в длинные имена файлов — и Demonstration пришлось сократить до Demon. А дальше кто-то из инженеров решил, что раз уж «демон», можно и доиграть словами. Так появился Lucifer.

Человек, который сбежал от нацистов, чтобы придумать шифр для американской армии

Автора Lucifer звали Хорст Фейстель, и его собственная биография тянет на отдельный сценарий фильма, который никто не снимет. Да и зачем, можно же снимать сказки и ремейки старых фильмов, ведь на такую историю финансирование не получишь, не то, что… Стоп! Статья же про криптографию.

Хорст Фейстель родился в Берлине 30 января 1915 года. В 1934 году транзитом через Швейцарию он эмигрировал в США (не стал ждать повестки в военкомат, в Германии всеобщая воинская повинность была официально введена в 1935 году) где получил степень бакалавра по физике в MIT, а затем магистра в Гарварде.

Во время Второй мировой войны Фейстель, как уроженец Германии, находился под домашним арестом. Американское гражданство он получил только 31 января 1944 года. Уже на следующий день ему дали допуск к работе и он приступил к работе в Air Force Cambridge Research Center — над системами радиолокационного опознавания «свой-чужой».

После войны были лаборатория Линкольна при MIT, MITRE, а в 1968 году — исследовательский центр IBM в Йорктаун-Хайтс. Именно там Фейстель занялся криптографией и вместе с коллегами начал разрабатывать Lucifer.

Что вообще такое «сеть Фейстеля»

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

Блок данных режется пополам — на левую L и правую R части. Дальше несколько раундов подряд повторяется одно и то же:

  1. Правая половина R проходит через функцию F вместе с ключом раунда. F может быть сколь угодно сложной и даже необратимой — и это нормально.

  2. Результат складывается с левой половиной L по модулю 2 — то есть выполняется операция XOR.

  3. Половины меняются местами, и всё повторяется заново.

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

Именно поэтому внутрь F можно засунуть довольно сложную начинку — например, нелинейные S-блоки — не боясь, что шифр станет невозможно расшифровать.

Вехи создания

У Lucifer было несколько версий, и Фейстель с коллегами постепенно усложняли конструкцию. Начиналось всё с 48-битного блока и 48-битного ключа, затем появились варианты с другими параметрами. В одной из версий Джона Л. Смита использовались 64-битный ключ и 32-битный блок.

А затем появился Lucifer с 128-битным блоком и 128-битным ключом, построенный уже на сети Фейстеля. Именно эта версия особенно важна для нашей истории: из неё выросла конструкция, которая в итоге привела IBM к DES (созвучно с death, они что там, не крещенные? Так по загробному миру фанатеть...).

То, ради чего вообще статья затевалась

Интерфейс интерактивной визуализации

Интерфейс интерактивной визуализации

Визуализация данного алгоритма, а точнее упрощенная версия сети Фейстеля представляет собой левую активную панель (где и будем экспериментировать, менять значения) и правую панель, что бы видеть подробно каждый шаг, но в тоже время иметь объективное представление обо всех этапах алгоритма.

На начальном шаге необходимо определиться с текстом, который будем шифровать, далее само собой перевести его в двоичный код

На начальном шаге необходимо определиться с текстом, который будем шифровать, далее само собой перевести его в двоичный код

Я выбрал отрывок из великолепнейшего произведения. Работать будем с текстом, так что кодировка по умолчанию utf-8, соотвественно по байтовое представление символов. Выберем второй байт символа "к" (выбирать можно интуитивно понятным способом) и жмем Далее

Я выбрал отрывок из великолепнейшего произведения. Работать будем с текстом, так что кодировка по умолчанию utf-8, соотвественно по байтовое представление символов. Выберем второй байт символа "к" (выбирать можно интуитивно понятным способом) и жмем Далее

Шаг 2 - собственно фиксируем байт, с которым будем работать далее, тут не очень интересно, показывать нечего, жмём Далее

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

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

Шаг 4, в предыдущих шифрах выработка и доставка ключа была за Алисой, тут же у нас некая третья сущность ЦУС (Центр Управления Сетями). Даем команду Разослать ключ, только после этого сможем перейти к следующему шагу

Шаг 4, в предыдущих шифрах выработка и доставка ключа была за Алисой, тут же у нас некая третья сущность ЦУС (Центр Управления Сетями). Даем команду Разослать ключ, только после этого сможем перейти к следующему шагу

Что еще хочется отметить Я никогда не устану повторять ... если мы говорим именно о защите чувствительной информации криптографией, которая регулируется государством (не важно каким) на данный момент на каждом этапе (создание, доставка на объекты, загрузка ключа) присутствует человеческий фактор. А человек это брешь в любой системе безопасности. Ну если уж не брешь, то слабое место. Anyway двигаемся дальше.

Нарезаем по алгоритму (с фиксированным сдвигом бит) наш мастер ключ на раундовые ключи (всего 4 раунда). Алгоритм нарезки един как для Алисы так и для Боба, это важно. Пока не нарежем ключи, кнопка далее будет не активна.

Нарезаем по алгоритму (с фиксированным сдвигом бит) наш мастер ключ на раундовые ключи (всего 4 раунда). Алгоритм нарезки един как для Алисы так и для Боба, это важно. Пока не нарежем ключи, кнопка далее будет не активна.

S-блок. Сердце алгоритма. Он заранее создан, значения постоянны. В DES тоже S-блоки, точнее набор из 8 фиксированных S - блоков. Они разработаны в IBM при непосредственном участии АНБ (по доброте душевной). Мы к этому еще веренемся, а пока Далее

S-блок. Сердце алгоритма. Он заранее создан, значения постоянны. В DES тоже S-блоки, точнее набор из 8 фиксированных S - блоков. Они разработаны в IBM при непосредственном участии АНБ (по доброте душевной). Мы к этому еще веренемся, а пока Далее

Наконец то приступаем к 1 раунду шифрования. Ксати на каждом этапе советую открывать подсказку "Что здесь происходит" - я старался наиболее подробно и простым языком описывать каждый шаг. Подготавливаем промежуточное значение Х и идем Далее

Наконец то приступаем к 1 раунду шифрования. Ксати на каждом этапе советую открывать подсказку "Что здесь происходит" - я старался наиболее подробно и простым языком описывать каждый шаг. Подготавливаем промежуточное значение Х и идем Далее

Применяем S-блок, получаем значение функции F

Применяем S-блок, получаем значение функции F

Получаем правую половину R1

Получаем правую половину R1

R1 мы вичислили, а вот в L1 мы переносим значения из R0 (изначальные биты)

R1 мы вичислили, а вот в L1 мы переносим значения из R0 (изначальные биты)

Открываем карту шифрования и наблюдаем краткое ревью проделанной работы и будущие манипуляции

Открываем карту шифрования и наблюдаем краткое ревью проделанной работы и будущие манипуляции

Раунд 2, 3, 4 - всё тоже самое, только с обновленными значениями половинок

Раунд 2, 3, 4 - всё тоже самое, только с обновленными значениями половинок

Шифротекст готов, идём к следующему этапу

Шифротекст готов, идём к следующему этапу

Сообщение доставлено

Сообщение доставлено

Расшифровываем по раундам в обратном порядке и всё. Проще пареной репы

Расшифровываем по раундам в обратном порядке и всё. Проще пареной репы

Сразу подстелю себе соломку - визуализация этого прекрасного алгоритма это моя упрощенная интерпретация. Цель - донести идею наиболее простым языком, что бы отличать магию от ловкости рук.

Сделка с дьяволом: могло ли АНБ оставить в DES бэкдор?

Ну что, с сетью Фейстеля разобрались и даже немного поиграли. Теперь вернёмся к Lucifer — потому что именно здесь начинается самая интересная часть истории.

В 1973 году американское Национальное бюро стандартов (NBS, ныне NIST) объявило конкурс на единый стандарт шифрования для гражданских ведомств. IBM предложила доработанный Lucifer. Работу над ним возглавили Уолтер Тачмен и Карл Мейер.

И тут в историю вошло АНБ.

АНБ узнало, что Уолтер Тачмен из IBM работает над новой версией Lucifer. Агентство оформило ему допуск к секретной информации (в переводе с бусурманского - к гос. тайне) и подключилось к совместной работе над шифром.

Дальше возник вопрос, который до сих пор делает историю DES такой интересной:

а нельзя ли встроить в шифр секретный вход для тех, кто знает, где его искать?

Бэкдор, которого никто не должен увидеть

На первый взгляд идея кажется вполне реалистичной.

Если ты участвуешь в разработке стандарта, можешь влиять не только на длину ключа, но и на саму конструкцию алгоритма. А в DES особенно подозрительно выглядели S-блоки — таблицы, которые превращают входные данные в выходные и добавляют шифру нелинейность.

АНБ участвовало в их разработке, но принципы проектирования долгое время не раскрывались.

Отсюда и подозрение: а вдруг внутри S-блоков спрятана математическая лазейка?

Такую возможность обсуждали вполне официально. В документах того времени фигурирует понятие trapdoor — условно говоря, секретная дверь, позволяющая обойти обычную защиту алгоритма. Если такая дверь существует, обладателю секретного знания не обязательно знать ключ пользователя. Он получает другой путь к расшифровке.

Но доказательств того, что подобную дверь действительно оставили, найдено не было.

А вот ключ действительно укоротили

Зато здесь никаких теорий заговора не требуется.

В процессе стандартизации АНБ настояло на сокращении длины ключа. Обсуждались разные варианты, а в итоге остановились на 56 битах.

При этом АНБ участвовало и в разработке S-блоков.

Получилась странная комбинация: одну часть защиты сделали слабее, а другую — загадочным образом изменили в закрытом режиме.

В 1977 году DES стал федеральным стандартом США — FIPS PUB 46.

И почти сразу появились вопросы.

«56 бит? Вы серьёзно?»

В том же году Уитфилд Диффи и Мартин Хеллман опубликовали статью с недвусмысленным названием — Exhaustive Cryptanalysis of the NBS Data Encryption Standard.

В рамках теоретического подхода они посчитали стоимость специальной машины для перебора ключей DES и получили оценку около $20 миллионов за систему, способную найти ключ примерно за сутки. Но короткий ключ был не единственной причиной для подозрений.

Оставался вопрос: что именно АНБ сделало с S-блоками?

В 1978 году специальный комитет Сената США расследовал участие АНБ в создании DES. Скрытой математической «двери» в алгоритме не обнаружили. Но выяснилось, что АНБ действительно убедило IBM согласиться на сокращённый ключ и участвовало в разработке S-блоков. То есть подозрения имели под собой почву. Просто доказательств бэкдора не нашли. И на этом историю можно было бы закончить. Но тогда мы не получили бы главный твист.

Тайна, которую скрывали почти 20 лет

В 1990 году Эли Бихам и Ади Шамир опубликовали метод дифференциального криптоанализа — мощный способ атаковать блочные шифры. И тут выяснилось кое-что странное.

DES оказался очень хорошо защищён от этой атаки.

В 1994 году Дон Копперсмит, один из разработчиков DES в IBM, раскрыл причину: IBM знала о дифференциальном криптоанализе ещё с 1974 года — задолго до того, как о нём узнал открытый научный мир. Более того, устойчивость к этой атаке была одним из критериев при проектировании S-блоков и перестановки DES.

То есть те самые загадочные S-блоки, которые подозревали в наличии секретной лазейки, оказались очень хорошо защищены от атаки, о существовании которой разработчики тогда даже не знали.

И вот здесь появляется настоящий вопрос.

Откуда IBM знала об этой атаке в 1974 году?

IBM утверждала, что разработала соответствующие методы самостоятельно. Историки также обсуждали возможность того, что определённые знания пришли от АНБ. Но документального доказательства того, что АНБ передало IBM готовый метод дифференциального криптоанализа, нет. Поэтому здесь заканчиваются факты и начинаются исторические вопросы.

Но парадокс остаётся:

АНБ действительно вмешалось в разработку DES.
АНБ действительно добилось более короткого ключа.
АНБ действительно участвовало в разработке S-блоков.
Но доказательств, что оно оставило бэкдор, нет.

А спустя двадцать лет выяснилось, что S-блоки были спроектированы гораздо умнее, чем могла знать публика.

Диффи и Хеллман всё-таки оказались правы

Оставалась другая проблема — 56-битный ключ. В 1998 году Electronic Frontier Foundation построила специализированную машину Deep Crack менее чем за $250 000.

Она перебирала ключи DES со скоростью около 88 миллиардов ключей в секунду и нашла нужный ключ за 56 часов.

Год спустя EFF вместе с distributed.net сделали это уже за 22 часа 15 минут.

То, что в 1977 году казалось машиной за десятки миллионов долларов, спустя два десятилетия превратилось в относительно доступный специализированный компьютер.

DES было пора на пенсию. Lucifer умер да здавствует... Кхе, кхе

Но сеть Фейстеля никуда не делась

Да, DES устарел, а идея Фейстеля — нет.

На сети Фейстеля или её модификациях построены Blowfish, Twofish, Camellia, KASUMI и другие шифры. Похожие конструкции используются и в форматно-сохраняющем шифровании.

А по другую сторону железного занавеса существовала своя история.

В СССР был создан ГОСТ 28147-89 — блочный шифр с 64-битным блоком, 256-битным ключом и 32 раундами, тоже на сети Фейстеля. Его разработка проходила в закрытой системе советской криптографии, поэтому подробности долго оставались недоступными. Сегодня обновленная версия этого алгоритма в российском стандарте ГОСТ Р 34.12-2015 известен как «Магма».

В 2001 году NIST утвердил новый стандарт — AES. Он уже не использовал сеть Фейстеля, а был построен на другой архитектуре — подстановочно-перестановочной сети, но это уже совсем другая история.

Lucifer умер. DES тоже.

А идея одного немецкого гражданина, эмигрировавшего в США, продолжает жить.

И всё началось с довольно простой мысли: разделить блок пополам, немного покрутить одну половину, смешать её с другой — и повторить.

И в заключении хотелось бы сказать: "Помните алгоритмы шифрования - это всё здорово, но самое главное, берегите себя и своих близких".

Показать полностью 16
1714

Шифр Вернама: победил криптоанализ — и проиграл реальности⁠⁠

Серия Вехи криптографии через геймификацию

Можно ли создать шифр, который невозможно взломать вообще?

Не «очень трудно». Не «требует тысяч лет вычислений».

А именно невозможно в принципе. В криптографии такой шифр действительно существует.
И что удивительно — он предельно простой. Его можно записать одной строкой:
C = P XOR K
Это шифр Вернама, его частный случай известнен как одноразовый блокнот (One‑Time Pad).

Интерактивная модель шифра Вернама в <a href="https://pikabu.ru/story/shifr_vernama_pobedil_kriptoanaliz__i_proigral_realnosti_13909447?u=https%3A%2F%2Fludus-lab.ru%2Fgames%2Fvernamcipher%2Findex.html&t=Ludus%20Lab&h=a7765dc70aecab6f4143ac52e9cb3c9db0df9924" title="https://ludus-lab.ru/games/vernamcipher/index.html" target="_blank" rel="nofollow noopener">Ludus Lab</a>

Интерактивная модель шифра Вернама в Ludus Lab

Он настолько прост, что его легко реализовать буквально на уровне бит.
И при этом — при правильном использовании — он обладает математически доказанной абсолютной секретностью.

Это не маркетинговое утверждение.
В 1949 году Клод Шеннон, один из основателей теории информации, строго доказал, что такой шифр невозможно взломать никаким криптоанализом. Более того — это единственный известный шифр, для которого существует подобное доказательство.

От телеграфа к криптографии

История шифра начинается не с математиков, а с телеграфных инженеров. В начале XX века сообщения уже передавались не буквами, а кодами. Один из самых распространённых был
код Бодо (Baudot code).

Каждый символ в нём кодировался 5 битами. 5 бит дают 32 комбинации — этого мало для букв, цифр и знаков одновременно. Поэтому код использовал два режима:
— режим букв
— режим цифр и знаков

Переключение между ними происходило специальными управляющими символами.
Именно с такими потоками бит работали телеграфные машины начала XX века.

В 1917 году инженер AT&T Гилберт Вернам (Gilbert Vernam) предложил шифровать телеграфный сигнал. Идея была неожиданно простой: если сообщение уже представлено в виде битов,
можно смешать его с другим потоком битов — ключом. Для этого используется логическая операция XOR. Метод был запатентован в 1919 году: 📄 Vernam, G. S. Secret signaling system

Как работает XOR

Правило операции очень простое:
0 XOR 0 = 0
1 XOR 0 = 1
0 XOR 1 = 1
1 XOR 1 = 0
Результат равен 1 только тогда, когда биты различаются.
Если обозначить:
P — бит открытого текста
K — бит ключа
C — бит шифротекста
получается формула:
C = P XOR K

У операции XOR есть удивительное свойство. Если применить её дважды с тем же ключом:
(P XOR K) XOR K = P
То есть та же самая операция выполняет и шифрование, и расшифровку.
С инженерной точки зрения это почти идеально:
— одна операция
— одинаковый алгоритм в обе стороны
— легко реализуется аппаратно

Но магия совершенной секретности появляется только при одном условии.
Ключ должен быть:
— полностью случайным
— длиной не меньше сообщения
— использован только один раз
Так появляется концепция одноразового блокнота (One‑Time Pad).

Почему его нельзя взломать

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

Факт, который часто удивляет

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

Почему его почти не используют

Причина — не в алгоритме. Причина в ключах. Как было отмечено выше, что бы использовать одноразовый блокнот, необходимо:
— иметь случайный ключ
— длиной не меньше сообщения
— передать его получателю заранее
— и никогда больше не использовать
Если вы хотите отправить 10 мегабайт данных — у вас уже должен быть 10‑мегабайтный секретный ключ. И его нужно передать другой стороне безопасно. Фактически задача передачи ключа становится сложнее самой передачи сообщения.

Попытки взлома

Криптоаналитики пытались атаковать одноразовый блокнот с разных сторон. Но почти всегда проблема оказывалась не в алгоритме, а в его использовании. Самая известная уязвимость — повторное использование ключа. Если один и тот же ключ применить к двум сообщениям:
C1 = P1 XOR K
C2 = P2 XOR K
то
C1 XOR C2 = P1 XOR P2
Ключ исчезает из уравнения.
А дальше можно использовать статистику языка и постепенно восстанавливать сообщения.
Эта атака называется two‑time pad attack.

Кодировки, которые я применил в визуализации шифра

Кодировки в игре добавлены скорее как справочный элемент.
Они показывают, как текст превращается в поток бит перед шифрованием.
Доступны:
— Код Бодо
— ASCII‑7
— ASCII‑8
— UTF‑8
В оригинальной системе Вернама использовался ранее упомянутый код Бодо, имеющий на борту 5 бит в два режима (для букв и для цифр + доп. символы). Остальных кодировок тогда просто не существовало.

ASCII появится только в 1963 году. Он является примером фиксированной кодировки.
Каждый символ занимает одинаковое количество бит.

ASCII‑7
7 бит → 128 символов

ASCII‑8
8 бит → 256 символов

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

Чуть более инетересной выглядит UTF‑8, появившаяся в 1992 году.

Как работает UTF‑8

UTF‑8 — кодировка переменной длины. Символ может занимать:
1 байт (8 бит)
2 байта (16 бит)
3 байта (24 бита)
4 байта (32 бита)
Как декодер понимает длину символа? По первому байту. Он содержит специальный префикс:
0xxxxxxx → 1 байт
110xxxxx → начало 2‑байтового символа
1110xxxx → начало 3‑байтового символа
11110xxx → начало 4‑байтового символа
Все последующие байты начинаются с:
10xxxxxx
Поэтому границы символов можно определить однозначно.
Примеры:
A
01000001
Ж
11010000 10010110
😊
11110000 10011111 10011000 10001010

Как это реализовано в геймплее визуализации

Давайте уже переходить от чтения к любимому делу нажиманию кнопок.
Как и в предыдущих визуализациях процесс разбит на наблюдаемые шаги.

Выбор кодировки

Выбираем кодировку, в правой панели представлены примеры закодированных символов

Выбираем кодировку, в правой панели представлены примеры закодированных символов

Ввод сообщения

Вводим сообщение

Вводим сообщение

Стоит отметить, я немного заморочился. При наведении на каждый символ сообщения в таблице кодировки из правой панели будут подсвечиваться соответствующие и символу и его позиции биты из левой панели. И наоборот.

Генерация ключа

Предупреждение о том, что условия одноразового блокнота не соблюдены

Предупреждение о том, что условия одноразового блокнота не соблюдены

Всё в порядке! Секрет останется секретом

Всё в порядке! Секрет останется секретом

Помните?) Не менее длины сообщения. В данном случае длина сообщения 392 бита
и ключ в 512 бит вполне удовлетворяет этому условию. Хотя, можно было выбрать и вариант
"По длине сообщения".
А что насчет условия по случайности генерации ключа? Ну, на качественный генератор случайных чисел или оборудование квантового распределения ключей я не накопил, так что для демо целей сойдёт и Math.random()

Ключ сгенерировали, считай треть дела сделано!

Ключ сгенерировали, считай треть дела сделано!

Зашифровываем сообщение

Два режима:
Ручной (Следующий бит) - кликаем, наблюдаем постепенное побитовое преобразование, под кнопками в реальном времени наблюдаем XOR операцию.
Автоматический (Мгновенное шифрование) - надоело кликать, а 392 клика подряд не каждому дано осилить, добиваем процесс зашифрования в одно нажатие.

Процесс передачи как ключа так и шифротекста

Это база! Основа основ. Вечная проблема

Это база! Основа основ. Вечная проблема

Этот этап был и в Полибии, и в Цезаре, и в Виженере. Потому что это по сути ключевая проблема криптографии. Во всех смыслах.
Я даже позволил себе некоторые фривольности, так сказать, решил сделать небольшой подкольчик. Если шифротекст (по нажатию кнопки) отправляется по прямой, то ключ же полетит по кривой Безье. Владельцы большого парка СКЗИ, решившие вопрос без костылей по гарантировано безопасной передаче, выработке и загрузке ключей в ПАК - моё почтение!

Процесс расшифроки шифротекста

Тут без креатива, обратная функция. Я не знаю что еще сказать.

Тут без креатива, обратная функция. Я не знаю что еще сказать.

Комментарии излишне. Хотя... Отмечу что на 42 клике мне стало скучно и я воспользовался функцией "Мгновенное шифрование".

Декодирование

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

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

Итоги сеанса

Thats all folks

Thats all folks

Итоги статьи

На этом всё ребятушки, подписывайтесь на канал, ставьте лайк, всем пока...
Раньше здесь был мат пара-папам-па-па-пам

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

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

👉 Игра «Шифр Вернама» в Ludus Lab

Показать полностью 11
35

Шифр Виженера: le chiffre indechiffrable эпохи Ренессанса⁠⁠

Серия Вехи криптографии через геймификацию

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

Интерактивная модель шифра Виженера в <a href="https://pikabu.ru/story/shifr_vizhenera_le_chiffre_indechiffrable_yepokhi_renessansa_13847530?u=https%3A%2F%2Fludus-lab.ru%2Fgames%2Fvigenerecipher%2Findex.html&t=Ludus%20Lab&h=9a265c602d2bc38222651725f60f20b02026ce0f" title="https://ludus-lab.ru/games/vigenerecipher/index.html" target="_blank" rel="nofollow noopener">Ludus Lab</a>

Интерактивная модель шифра Виженера в Ludus Lab

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

А это значит:
— частоты букв никуда не деваются
— текст можно восстановить статистически

После работ Аль-Кинди (IX век) это стало не просто наблюдением, а рабочим методом взлома.

И здесь происходит ключевая перемена в понимании: важна не величина сдвига, а его неизменность на протяжении всего текста.

Промежуточные попытки

Дальше люди долго ходили вокруг этой проблемы.

Пробовали:
— разные алфавиты (перемешанные, а не по порядку)
— более сложные замены
— комбинации правил

Но всё это оставалось в рамках одной модели:
один символ → одна замена. И всё это по-прежнему ломалось частотным анализом. Нужно было сделать так, чтобы одна и та же буква открытого текста в разных местах шифровалась по-разному.

Идея, которая реально меняет правила игры, появляется в эпоху Возрождения.

Леон Баттиста Альберти (XV век) предлагает:
а что если менять алфавит по ходу шифрования?
Это уже принципиально другой подход:
— одна и та же буква может шифроваться по-разному
— появляется зависимость от позиции

Позже Джованни Беллазо описывает использование ключевого слова — фактически тот механизм, который мы сегодня называем шифром Виженера.

Сам Виженер не столько «изобрёл», сколько систематизировал и популяризировал этот подход.
И именно поэтому его имя закрепилось.

Что такое шифр Виженера

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

Формально: C = (P + Kᵢ) mod N
Где главное отличие от Цезаря — индекс i. Ключ меняется на каждой позиции.

Как это выглядит

Простой пример:
HELLO - исходный текст
KEY - ключ

Располгаем ключ (а он циклический) под исходным текстом:
HELLO
KEYKE

Здесь:
— H шифруется сдвигом K
— E — сдвигом E
— L — сдвигом Y
etc.

И результат уже не сохраняет очевидных паттернов.

Почему это было так сильно

В шифре Цезаря:
— буква E всегда становится одним и тем же симолом в шифротексте

В Виженере:
— одна и та же E может превратиться в разные символы

Это значит:
— частоты «размазываются»
— текст теряет статистическую подпись

Это реально ломает привычные методы криптоанализа (на тот момент).
На протяжении нескольких веков шифр Виженера считался «невзламываемым»
(le chiffre indéchiffrable, согласитесь, все таки французский язык обладает изысканым шармом)
И это не преувеличение — для своего времени он действительно был огромным шагом вперёд.

Как он ломается

Но есть нюанс, который всё портит. Ключ повторяется.
А что это значит:
— структура всё равно есть,
— просто она стала более сложной.

Первый шаг криптоанализа — найти длину ключа.
Метод Касиски (XIX век) делает это довольно изящно:
— в тексте ищутся повторяющиеся фрагменты
— измеряются расстояния между ними
— находятся общие делители этих расстояний

Одинаковые куски открытого текста, зашифрованные одним и тем же фрагментом ключа, дают одинаковый результат. А значит — выдают период.
После этого происходит ключевой момент:
Если длина ключа известна, текст разбивается на несколько «слоёв».
Например, если длина ключа = 3:
— каждая 1-я буква → один поток
— каждая 2-я → второй
— каждая 3-я → третий

И каждый из этих потоков — это… обычный шифр Цезаря.
Дальше применяется всё тот же частотный анализ.

Этот метод был формализован в XIX веке (Касиски, Бэббидж), и с этого момента шифр Виженера перестал быть «le chiffre indéchiffrable».

Важно:
Он не стал «плохим» — просто стало понятно, от чего зависит его стойкость.
Она полностью зависит от ключа.

Короткий ключ → быстро ломается
Длинный, но повторяющийся → всё равно уязвим
Случайный, неповторяющийся и равный длине сообщения → уже совсем другая история
(к слову, не менее захватывающая)

Как это реализовано в игре/визуализации

В Ludus Lab эта схема показана максимально буквально — через таблицу Виженера.

И вот здесь начинается самое интересное:
игра не просто «шифрует», а разбивает процесс на наблюдаемые шаги.

Текст приводится к выбранному алфавиту (русский или английский).
Это убирает лишние неоднозначности.
Ключевое слово вводится и автоматически повторяется под сообщением.
Это наглядно показывает сам принцип.
Для каждой буквы:
— берётся символ ключа
— выбирается строка и столбец
— получается результат

И хорошо видно:
одинаковые буквы → разные результаты.

Предача сообщений как и раньше:
— ключ передаётся отдельно
— шифротекст отдельно

Это допущение, но оно помогает изолировать сам алгоритм.

При расшифровке используется обратная операция:
— известен ключ
— по нему восстанавливается исходный текст

Пошаговый режим позволяет буквально «проследить» каждое действие.

Важные допущения модели
Чтобы сохранить прозрачность:
— используется повторяющийся ключ
— ключ передаётся явно
— не моделируются атаки (Касиски и др.)
— алфавит ограничен
— убраны лишние символы
Это осознанное упрощение — оно показывает саму механику, не перегружая модель.

Шифр Виженера — это не просто «усложнённый шифр Цезаря».
Это смена парадигмы:
— от одного правила → к последовательности правил
— от статического ключа → к динамическому
— от прямой статистики → к её размыванию

Он не идеален.
Но именно здесь криптография начинает становиться системой.

И если смотреть на него внимательно, становится понятно:
одна из важнейших проблем современной криптографии (как симметричной так и асимметричной) — это развитие той же идеи управления ключом. От методов его создания до проблематики его доставки до адресатов.

Попробовать самому и посмотреть, как ключ «двигается» по сообщению можно здесь:
👉 Игра «Шифр Виженера» в Ludus Lab

Показать полностью 1
19

Шифр Цезаря: как сдвиг букв в Древнем Риме заложил основы криптографии?⁠⁠

Серия Вехи криптографии через геймификацию

После квадрата Полибия логично перейти к ещё более известному, но не менее революционному методу — шифру Цезаря. Это не просто «первая ласточка» криптографии, а настоящий артефакт, переживший два тысячелетия и до сих пор живущий в учебниках и поп-культуре.

Немного теории: что такое шифр Цезаря?

Вы наверняка слышали, что Гай Юлий Цезарь использовал секретную переписку, в которой буквы сдвигались на фиксированное число позиций. Этому есть косвенное подтверждение — «Жизнь двенадцати цезарей» Светония, в частности упоминается: «Употреблял он [Цезарь] также и тайные знаки, при переписке с близкими, — буквы меняя местами так, чтобы не вышло ни слова, и перечитывать их было нельзя, если не умеешь расставить буквы по местам (первую на четвертую, A на D и так далее)».

Шифр Цезаря применялся не только в Риме. Его вариации встречаются в разных культурах как базовый способ «запутать» текст. Сам Цезарь, вероятно, не считал это полноценным «шифром» в современном смысле. Для него это был скорее способ скрыть текст от случайного прочтения. При этом он был устойчив ровно настолько, насколько нужно в бытовых или военных условиях своего времени.

Важно понимать контекст. Речь не о защите от современного криптоаналитика, а о реальной коммуникации в условиях войны. Письма перехватывались, гонцы исчезали, информация утекала. И даже простое искажение текста уже давало преимущество: смысл нельзя было извлечь мгновенно. Иногда этог достаточно.

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

C = (P + K) mod N

Это не просто удобная формула. Это тот же принцип, который используется в цифровых системах: работа с остатками, кольцевая арифметика, замкнутые структуры.

Исторически Цезарь использовал сдвиг на 3. Но ключ здесь — не число 3, а сам факт существования параметра. Меняете его — меняется весь результат.

И это уже полноценная криптографическая модель.

Как его начали ломать

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

Например, в английском часто встречается E, в русском — О и Е. Это «частотная подпись» языка.
Теперь ключевой момент: шифр Цезаря ничего не делает с этой структурой. Он просто сдвигает буквы. Частоты остаются теми же — только «переименованными».

Если в тексте самая частая буква — X, можно предположить, что это сдвинутая E. Проверка нескольких вариантов — и шифр раскрывается.

Даже без этого можно перебрать все варианты. Их всего:
— 26 для английского,
— 33 для русского.

То есть шифр можно взломать полностью за секунды.

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

Идея сдвига не осталась на уровне абстракции.
В XV веке Леон Баттиста Альберти создал криптографический диск — два кольца с буквами, которые можно было вращать друг относительно друга. Это был физический способ реализовать тот же самый сдвиг. Но главное — не устройство, а следующий шаг.

Альберти предложил менять сдвиг прямо во время шифрования. Это превращает одну простую операцию в последовательность разных сдвигов. И именно отсюда рождаются полиалфавитические шифры — следующий этап развития.

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

Как это реализовано в игре

Симуляция в Ludus Lab повторяет классическую схему шифра Цезаря, но делает её наблюдаемой. Процесс разбит на этапы, и каждый этап соответствует отдельной части протокола.

Ввод сообщения

Текст ограничен выбранным алфавитом (русским или английским).
Это упрощение убирает неоднозначности: все символы однозначно принадлежат системе.

Настройка ключа

Задаётся:
— величина сдвига,
— направление (влево или вправо).
Направление — это не просто визуальная деталь. Оно меняет знак операции и, соответственно, результат.

Шифрование

Каждая буква проходит одно и то же преобразование:
— определяется её позиция в алфавите,
— применяется сдвиг,
— получается новый символ.

Диск визуализирует это как смещение двух алфавитов друг относительно друга: внутренний (исходный) и внешний (зашифрованный).

Это не дополнительная механика, а прямая иллюстрация формулы.

Передача в модели разделена на два канала:

— ключ передаётся отдельно,
— шифротекст — отдельно.

Это допущение. В реальных системах передача ключа — самая сложная часть, и именно она определяет безопасность всей схемы. Здесь она упрощена, чтобы сосредоточиться на самом преобразовании.

Расшифровка

Используется обратная операция:

P = (C − K + N) mod N

То есть тот же самый механизм, но со сдвигом в противоположную сторону.

Режимы работы

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

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

Допущения

И так, что бы сохранить прозрачность модели, сделаны упрощения:
— используется фиксированный сдвиг (без смены ключа по ходу),
— отсутствуют знаки препинания и цифры,
— ключ передаётся явно,
— не моделируются атаки.

ИТОГО

Шифр Цезаря — это предельно простая система, в которой уже есть всё необходимое:

— ключ,
— правило преобразования,
— обратимость,
— уязвимости.

Именно поэтому он до сих пор используется как отправная точка — не потому что он надёжен, а потому что он прозрачен.

Попробовать зашифровать и передать своё сообщение можно здесь:
👉 Игра «Шифр Цезаря» на Ludus Lab

Показать полностью 1
19

Квадрат Полибия: первая в истории система координатного шифрования⁠⁠

Серия Вехи криптографии через геймификацию

После двух заходов в квантовую криптографию захотелось сделать шаг в сторону — не назад, а вглубь. К более простым, почти «примитивным» вещам, в которых неожиданно скрываются те же самые идеи.

Квадрат Полибия: первая в истории система координатного шифрования

Квадрат Полибия — отличный кандидат для такого разворота. На первый взгляд это просто таблица с буквами и цифрами, что-то на уровне школьной задачки. Но стоит задержаться на нём чуть дольше, и становится видно: перед нами один из первых способов представить текст как структуру. Не как набор символов, а как систему координат.

Есть в этом даже что-то парадоксальное. Мы привыкли думать, что «оцифровка» текста — это заслуга компьютеров. Но здесь, больше двух тысяч лет назад, уже появляется та же логика: символ → код → передача → восстановление. Только вместо бит — строки и столбцы.

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

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

Немного теории: что такое Квадрат Полибия?

Если убрать весь исторический ореол, квадрат Полибия — это способ сказать: «буква — это координата». И в этом его главная сила.

Во II веке до н.э. Полибий предложил разложить алфавит в таблицу и передавать не сами буквы, а их положение — номер строки и столбца. На практике это выглядело почти как древний «чат»: комбинации сигналов (например, факелов) кодировали числа, а числа — буквы. То есть текст превращался в поток числовых пар. Для своего времени это был почти скачок в другое измерение.

Интересно, что это один из первых случаев, когда язык «сжимают» в структуру. Мы привыкли, что цифровое представление текста — это что-то из мира компьютеров, но по сути идея та же самая: символ → код.

Для русского алфавита удобно использовать таблицу 6×6. Например, буква А → 11, Б → 12 и так далее. Всё предельно просто, но в этой простоте есть ловушка: как только меняется порядок букв в таблице, полностью меняется и весь шифротекст. То есть сама таблица становится ключом.

И вот здесь появляется первая «трещина» между простотой и безопасностью. С одной стороны, метод легко понять за пару минут. С другой — если не знать таблицу, перед вами просто поток чисел без очевидной структуры. А если таблица ещё и перемешана, задача резко усложняется.

Переходим к практике: что представляет собой игровая симуляция?

В Ludus Lab мы не просто показываем результат — мы замедляем процесс.

Вместо «ввёл текст → получил шифр» вы видите, как каждая буква буквально проходит путь трансформации. Это похоже на разбор механизма с прозрачным корпусом: все шестерёнки на виду.

Сценарий остаётся классическим: Алиса отправляет сообщение Бобу. Но главное здесь не сюжет, а наблюдение за тем, как информация меняет форму.

Интерфейс разбит на этапы, и каждый из них делает видимой отдельную идею:

  1. Ввод сообщения
    Вы задаёте текст и сразу видите квадрат. Это важный момент: таблица не где-то «внутри алгоритма», она перед глазами, как полноценный участник процесса.

  2. Шифрование (фактически это конечно же кодирование)
    Здесь начинается самое интересное. Буква не просто исчезает и заменяется числами — она «привязывается» к своей позиции. Подсветка строки и столбца создаёт ощущение, что буква оставляет за собой координатный след.

  3. Передача
    На этом этапе хорошо чувствуется идея шифрования: вместо текста по каналу идут числа.

  4. Расшифровка
    И здесь происходит обратное «собирание». Координаты снова превращаются в буквы, и становится очевидно, что весь процесс полностью обратим — при одном условии: у вас есть та же таблица.

В итоге симуляция работает не как демонстрация, а как опыт: вы видите не только «что происходит», но и «почему это работает».

Механика и геймплей: как проходит эксперимент?

Мы сознательно сделали взаимодействие простым, но с возможностью контролировать темп.

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

Автопилот, наоборот, показывает общую картину. Когда процесс идёт непрерывно, становится видно, как текст «течёт» через систему преобразований.

Отдельно стоит сказать про визуальные акценты. Они не просто для красоты:

  • зелёный закрепляет связь с исходным текстом,

  • синий — с шифротекстом,

  • подсветка строки и столбца превращает абстрактные координаты в конкретное действие.

Самый важный раздел: допущения и упрощения (Игра vs Реальность)

Любая визуализация — это всегда выбор: что показать, а что упростить.

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

В симуляции мы сознательно оставили алфавит упорядоченным. Это снижает криптостойкость, но делает идею прозрачной. Здесь важнее увидеть принцип, чем усложнить задачу до уровня криптоанализа.

То же касается символов и пробелов. В реальных системах их либо кодируют отдельно, либо убирают. Мы оставили их как есть, чтобы текст оставался читаемым и не превращался в «сплошной поток».

Передача координат тоже упрощена: в жизни почти всегда добавляют разделители или используют другие форматы. У нас же важнее визуально связать пары чисел с буквами.

И главное: мы не моделируем атаку. Нет «Евы», нет взлома. Потому что цель этой сцены — не противостояние, а понимание механики.

Что в итоге? Какие инсайты даёт игра?

Самый ценный эффект от этой симуляции — смена восприятия текста.

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

Несколько ключевых моментов:

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

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

Сама идея «разбить символ на две координаты» — это прообраз современных систем кодирования, где данные представляются числами. В каком-то смысле это предок ASCII и Unicode.

Попробовать зашифровать и передать своё сообщение можно здесь:
👉 Игра «Квадрат Полибия» на Ludus Lab

Показать полностью
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества