JSSemeone

JSSemeone

Пикабушник
Дата рождения: 4 июня
1898 рейтинг 15 подписчиков 0 подписок 7 постов 1 в горячем
1712

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

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

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

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

А именно невозможно в принципе. В криптографии такой шифр действительно существует.
И что удивительно — он предельно простой. Его можно записать одной строкой:
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

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

Протокол E91: Как квантовая запутанность защищает информацию — разбор игровой симуляции

Меня зовут JSSemeone. Я делаю проект ludus-lab.ru — визуализации сложных вещей на стыке науки и игр. Моя цель простая: превращать теорию и сложные практические реализации в интерактивные эксперименты, где идеи можно не только прочитать, но и «пощупать» руками.

У читателя может возникнуть вопрос: «Кто такие "мы"?» Честный ответ — по сути я делаю всё один. Идеи визуализаций, общий подход и направление проекта принадлежат мне. При этом я не программист, и изначально не было задачи писать какой-то уникальный код или «изобретать велосипед» на уровне разработки. Появление вайбкодинга и быстрый прогресс нейросетей стали для Ludus Lab мощным толчком: они позволили мне сосредоточиться на главном — на смысле, подаче и интерактивности — и сделать ресурс реальным, а не просто задумкой.

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

Немного теории: в чём суть E91?

Протокол E91 (также известный как Eke91) был предложен Артуром Экертом в 1991 году. Его ключевое отличие от BB84 заключается в использовании не одиночных фотонов, а запутанных пар.

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

Как это работает в криптографии?

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

  2. Измерение: Алиса и Боб независимо и случайным образом выбирают один из трех базисов для измерения поляризации своих фотонов (в игре используются базисы с ориентацией 0°, 45° и 90°).

  3. Корреляция результатов: Благодаря запутанности, результаты измерений Алисы и Боба оказываются скоррелированными. Если они выбрали одинаковый базис, их результаты всегда будут противоположны (антикоррелированы). Это и есть основа для формирования секретного бита. Если базисы разные — корреляция отсутствует, результаты случайны.

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

  5. Просеивание ключа: Они оставляют только те биты, для которых базисы совпали. Остальные отбрасываются.

  6. Обнаружение Евы: Для проверки факта перехвата используется часть данных, полученных в разных базисах. Анализ их статистики (проверка нарушения неравенств Белла) позволяет с высокой точностью определить, было ли внешнее вмешательство, разрушившее запутанность.

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

Важное замечание о практической реализации

Говоря о квантовой нелокальности и корреляциях, важно понимать, что в реальных физических системах существуют ограничения:

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

  • Потери в канале: Фотоны могут поглощаться или рассеиваться в оптическом волокне, особенно на больших расстояниях.

  • Ограниченная скорость генерации: Создание и детектирование запутанных пар — вероятностный процесс, что ограничивает скорость генерации ключа.

  • Необходимость синхронизации: Требуется точная временная синхронизация между источником, Алисой и Бобом.

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

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

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

Миссия игры: Успешно сгенерировать общий 8-битный секретный ключ, поняв логику каждого этапа

Интерфейс игры

Лабораторная установка претерпела изменения по сравнению с симуляцией BB84:

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

  • Панели управления: У Алисы и Боба появилось по три базиса для измерения (вместо двух), что необходимо для реализации протокола Экерта.

  • Визуализация Евы: Вмешательство Евы отображается появлением красного символа 👁️‍🗨️ в момент перехвата, что визуально разрушает "чистоту" эксперимента.

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

Фаза 1: Генерация и накопление данных

Вы выбираете режим работы (ручной, полуавтоматический, автоматический) и запускаете процесс.

  1. Источник создает запутанную пару — в центре канала появляется фиолетовая сфера с символом ⚛️.

  2. Два фотона отправляются к Алисе и Бобу. Над ними на короткое время появляются индикаторы выбранных базисов.

  3. В момент регистрации фотонов детекторами происходит "схлопывание" волновой функции. Если базисы совпали, значения битов Алисы и Бобы оказываются строго противоположными. Если базисы различаются — значения случайны и независимы.

  4. Результаты каждого цикла (значения Алисы и Боба, использованные базисы, факт перехвата) фиксируются в таблице «сырого ключа».

Цветовая маркировка в таблице позволяет быстро оценить, совпали ли базисы (синий фон) или нет (красноватый фон), а значок "E" отмечает скомпрометированные пары.

Фаза 2: Просеивание и формирование ключа

Когда накоплено не менее 8 совпадающих и не перехваченных битов, кнопка «Просеять ключ» становится активной. При её нажатии:

  • Квантовый канал деактивируется.

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

  • Игра автоматически отбирает все пары с совпавшими базисами, исключая перехваченные, и из первых восьми таких формирует финальный ключ, который отображается в нижней части экрана.

Фаза 3: Детальный анализ

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

  • Какие базисы использовали Алиса и Боб.

  • Какие значения они получили.

  • Был ли зафиксирован перехват Евой.

  • Совпали ли базисы.

  • Попал ли данный бит в финальный ключ или был отбракован, и по какой причине.

Режимы игры

  • Ручной режим: Полный контроль над каждым шагом. Идеален для первого знакомства и медленного, осмысленного прохождения.

  • Полуавтоматический режим: Запутанные пары генерируются автоматически с интервалом, но базисы для Алисы и Боба вы выбираете вручную. Позволяет быстрее набрать статистику, сохраняя контроль.

  • Автоматический режим: Полная симуляция процесса, где и генерация пар, и выбор базисов происходят случайным образом автоматически. Полезен для наблюдения статистики процесса.

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

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

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

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

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

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

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

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

  • Роль классического канала: Четкое разделение функций квантового канала (передача состояний) и классического (обсуждение базисов).

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

Попробовать провести сеанс связи с использованием запутанных фотонов можно здесь:
👉 Все игры и эксперименты доступны на ludus-lab.ru.

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

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

Если бы Макс Пейн был собирательным образом среднего класса. Нуарная аллегория

“Говорят, средний класс — это опора общества. Но любой опоре свойственно трескаться под весом обязательств. Ты надеваешь костюм, как броню, зарабатываешь свой хлеб, но в конце дня ты просто курьер, доставляющий ресурсы тем, чей аппетит невозможно удовлетворить…”

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

Играем в квантовую криптографию: разбираем протокол BB84

Меня зовут JSSemeone. Я делаю проект Ludus Lab — визуализации сложных вещей на стыке науки и игр. Моя цель простая: превращать теорию и сложные практические реализации
в интерактивные эксперименты, где идеи можно не только прочитать, но и «пощупать» руками.

У читателя может возникнуть вопрос: «Кто такие «мы»?» Честный ответ — по сути я делаю всё один. Идеи визуализаций, общий подход и направление проекта принадлежат мне.
При этом я не программист, и изначально не было задачи писать какой-то уникальный код
или «изобретать велосипед» на уровне разработки.

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

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

Немного теории: в чём суть BB84?

Представьте классическую проблему: Алиса хочет передать секретное сообщение Бобу,
но есть Ева, которая может подслушивать. В классической криптографии если Ева перехватит ключ шифрования, она сможет незаметно скопировать его и прочитать всё сообщение.
Задача BB84, предложенного в 1984 году Чарльзом Беннетом и Жилем Брассаром, — создать общий секретный ключ между Алисой и Бобом так, чтобы любая попытка подслушивания обязательно была обнаружена. Безопасность здесь основана
не на вычислительной сложности (как в RSA и прочих алгоритмов с открытым ключом),
а на фундаментальных законах квантовой механики.

Ключевой принцип: нельзя измерить квантовое состояние (например, поляризацию фотона),
не изменив его (если только не знать заранее, как именно его измерять).

Как это работает? Кратко по шагам:

  1. Кодирование: Алиса генерирует случайную последовательность битов (0 и 1). Для каждого бита она случайно выбирает базис (способ кодировки): «прямой» (+; 0° или 90°)
    или «диагональный» (× 45° или 135°). Она отправляет фотоны в этих состояниях Бобу.

  2. Измерение: Боб, получив фотон, тоже случайно выбирает базис для измерения.
    Если его базис совпал с базисом Алисы — он получает верный бит. Если не совпал — результат случайный (50/50).

  3. Обсуждение базисов: По открытому (классическому, незащищённому!) каналу Алиса и Боб говорят друг другу, какие базисы они использовали для каждого фотона. Значения битов
    при этом не раскрываются.

  4. Просеивание: Они оставляют только те биты, где базисы совпали (примерно 50% от всех). Это и есть основа их будущего секретного ключа.

  5. Обнаружение Евы: Чтобы проверить, не подслушивала ли Ева, они сравнивают
    по открытому каналу случайную часть из этих оставшихся битов. Если Ева пыталась измерить фотоны, она неизбежно внесла ошибки (в ~25% случаев). Высокий уровень ошибок (QBER) — сигнал, что ключ скомпрометирован, и его нужно выбросить.

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

В игре наша основная задача — дать вам почувствовать себя наблюдателем-экспериментатором, который видит процесс генерации ключа со всех сторон одновременно.
Вы не просто Алиса или Боб — вы видите и их действия, и (в образовательных целях!)
действия Евы.

Миссия игры: успешно сгенерировать общий 8-битный секретный ключ, поняв логику каждого этапа.

Интерфейс игры делится на несколько логических зон:

  1. Лабораторная установка: Слева Алиса, справа Боб, между ними — квантовый
    и классический каналы связи.

  2. Панель управления Алисой: Здесь вы, как Алиса, выбираете состояние фотона
    (бит 0/1 и базис +/×). Ключевая особенность — три режима работы, которые переключаются кнопками:

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

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

    3. Автоматический режим: Полная симуляция. И фотоны отправляются, и их состояния (базис и бит) выбираются случайным образом автоматически. Полезен для наблюдения «чистой» статистики процесса и быстрого накопления данных для анализа.

  3. Визуализация передачи: Анимация движения фотона, появление индикаторов выбранных базисов.

  4. История и статистика: Таблицы отправленных («сырой ключ») и итоговых битов, счётчики совпадений и перехватов.

  5. Панель протокола: Свёрнутое текстовое описание шагов BB84 для справки.

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

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

Фаза 1: Накопление данных

  • Вы выбираете состояние фотона (например, «0 в прямом базисе | ») и нажимаете «Отправить».

  • На экране разворачивается анимация: фотон летит по квантовому каналу. Над каналом могут появиться индикаторы: какой базис выбрала Алиса (ваш выбор) и какой случайный базис выбрал для измерения Боб.

  • Важный образовательный момент: Если в канале ненадолго появляется иконка Евы 👁️‍🗨️ — это значит, что в этой итерации произошёл перехват. Игра честно показывает вам, когда Ева активна.

  • Результат (бит Боба, факт перехвата) записывается в таблицу «сырого ключа». Цвет ячейки показывает, совпали ли базисы (синий — да, красноватый — нет). Иконка «E» отмечает перехваченные кубиты.

Фаза 2: Анализ и просеивание

  • Накопив достаточно битов (минимум 8 совпадающих и не перехваченных), вы нажимаете кнопку «Просеять ключ».

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

  • Игра автоматически сравнивает базисы Алисы и Боба для каждого отправленного фотона. Кубиты с совпавшими базисами (и без перехвата) переносятся в окно «Квантовый ключ», формируя конечный 8-битный секрет.

Фаза 3: Изучение

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

Режимы игры:

  • Ручной: Полный контроль для понимания каждого шага.

  • Полуавтоматический: Фотоны отправляются сами, но базис вы выбираете. Позволяет быстрее набрать статистику.

  • Автоматический: Всё происходит само. Полезно, чтобы увидеть «чистую» статистику процесса.

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

Здесь мы вскрываем «кухню» и честно говорим, где и ради чего наша симуляция отступает от реального протокола.

Резюме по упрощениям: Наша цель — не создать точный симулятор для инженеров КРК (QKD), а визуализировать и сделать осязаемым фундаментальный принцип BB84: безопасность, основанную на невозможности незаметного измерения квантового состояния. Все упрощения служат этой дидактической цели.

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

После 10-15 минут с симуляцией у игрока (даже далёкого от физики) формируется чёткая интуиция:

  • Случайность — это система. Становится очевидно, почему хаотичный выбор базисов —
    не баг, а краеугольный камень безопасности.

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

  • Разделение каналов. Чётко разделяются роли «квантового» канала (для хрупких состояний) и «классического» (для смелого обмена служебной информацией).

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

Теория — это здорово, но квантовая механика оживает только в действии.

Попробовать провести сеанс связи в игровой симуляции: Игра «Квантовый ключ: BB84» на Ludus Lab

В следующих статьях разберём протокол E91, основанный на запутанности, и другие. Интересно услышать ваше мнение: насколько такой игровой формат помогает в понимании сложных тем? Какие ещё протоколы или концепции было бы интересно увидеть в подобной визуальной форме? Критика и идеи по поводу допущений в симуляции особенно приветствуются в комментариях!

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

Темы

Политика

Теги

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

Сообщества

18+

Теги

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

Сообщества

Игры

Теги

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

Сообщества

Юмор

Теги

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

Сообщества

Отношения

Теги

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

Сообщества

Здоровье

Теги

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

Сообщества

Путешествия

Теги

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

Сообщества

Спорт

Теги

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

Сообщества

Хобби

Теги

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

Сообщества

Сервис

Теги

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

Сообщества

Природа

Теги

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

Сообщества

Бизнес

Теги

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

Сообщества

Транспорт

Теги

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

Сообщества

Общение

Теги

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

Сообщества

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

Теги

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

Сообщества

Наука

Теги

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

Сообщества

IT

Теги

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

Сообщества

Животные

Теги

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

Сообщества

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

Теги

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

Сообщества

Экономика

Теги

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

Сообщества

Кулинария

Теги

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

Сообщества

История

Теги

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

Сообщества

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

Теги

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

Сообщества