Так прошло несколько дней. Поскольку дождь лил, просто не переставая, мы с папой передвигались только на машине. Мы приезжали к Кате в первой половине дня, и папа вел научные занятия и демонстрировал опыты, рассказывал всякие удивительные истории. Всё это было очень интересно, но как-то раз он вновь вспомнил о протоколе Диффи — Хеллмана. Он спросил:
— А думали ли вы, как можно взломать протокол обмена секретными ключами по открытому каналу, который мы с вами изучили не так давно?
Мы с Катей, конечно же, не думали. Тогда папа сказал:
— Кажется, что протокол безупречен. Его стойкость основана на гипотезе, что обратную операцию для возведения в степень по модулю проделать очень сложно. Пока что эту гипотезу никто не опроверг. Но давайте посмотрим на проблему с другой стороны. Для этого воспользуемся той аналогией с перемешиванием цветов, которую придумала Катя, поскольку так будет проще объяснять.
Папа раздал нам листочки бумаги и напомнил, что надо сделать. Мы должны загадать по одному секретному цвету и взять один цвет открытый. Катя взяла себе секретный белый цвет, а я взял зелёный секретный и красный — открытый. Затем я написал на листочке два слова: «красный» и «коричневый» и уже хотел передать его Кате, но папа остановил меня:
— А теперь представьте такую ситуацию. Вы же обмениваетесь информацией по открытому каналу, то есть как и куда она может попасть, вы не знаете. Давайте представим, что я сижу между вами и все ваши передачи идут через меня. Почему бы и нет? Ведь канал открытый. Так что, Кирилл, давай мне листочек.
Я протянул листочек отцу, уже чувствуя что-то не то. Отец отложил его в сторону, взял новый листок и написал на нём — «синий» и «оранжевый», после чего передал Кате. Катя недоумённо посмотрела на него, а он объяснил:
— Смотрите, я заменил информацию. Поскольку канал открыт, никто из вас не может гарантировать, что передача информации произойдёт без искажений. Вот я и исказил данные. Теперь Катерина должна взять у меня листок и использовать его так, как будто бы получила от Кирилла. То есть взять оранжевый цвет, которым я заменил коричневый, и использовать его для получения итогового цвета. А красный цвет смешать со своим секретным, после чего передать его Кириллу. Что получается?
— Розовый.
Катя взяла новый листок и, написав на нём слово «розовый», передала его отцу. Он положил новый листок перед собой и продолжил:
— Теперь Катерина должна получить свой ключ. Она смешивает оранжевый и свой секретный цвет. Я пока не знаю новый цвет, но его использует Катерина для шифровки. А Кириллу я передаю данные так, как будто от Катерины пришёл цвет, полученный от смешения красного и, например, синего.
Отец взял новый листок, написал на нём «фиолетовый» и передал его мне. Затем он нарисовал диаграмму взаимодействия.
— Вы поняли, что получилось, откуда я взял оранжевый и фиолетовый? Я не знаю ваших секретных цветов, но вместо них придумал новые — жёлтый для Кирилла и синий для Катерины, и использовал их так же, как и вы. Но теперь я буду использовать для общения с Кириллом один цвет, а для общения с Катериной — другой.
Затем он продолжил:
— Видите, в диаграмме появилось новое лицо, то есть я. Я нахожусь между вами. Все ваше взаимодействие происходит через меня. И у меня есть возможность заменить ваши ключи так, чтобы они стали мне известны. И когда Кирилл посылает Катерине сообщение — оно попадает ко мне, и я могу его расшифровать ключом Кирилла, а потом зашифровать ключом Катерины и передать его ей. И наоборот — сообщения от Катерины я расшифровываю её ключом, а зашифровываю ключом Кирилла. И вы ничего не узнаете. Подумайте, что я ещё могу сделать, кроме того, что узнаю ваши сообщения?
Я сразу выпалил:
— Ты можешь, как хочешь, менять их содержание, и мы тоже ничего не узнаем.
— Молодец, Кирилл. Всё правильно. И этот способ взлома называется «человек посередине», или по-английски «man in the middle», а для краткости просто MITM. Это одна из самых мощных атак на практически любую систему защиты, от неё сложно защититься. Но скоро мы узнаем как.
Катя вздохнула и спросила:
— А есть ли вообще системы шифрования, не поддающиеся взлому?
— Теоретически есть. Проблема в том, что на практике всегда возникают разные нюансы, которыми может воспользоваться злоумышленник или криптоаналитик. Вот, например, так называемый одноразовый блокнот, который мы скоро изучим. В теории это абсолютно стойкая криптосистема, однако опять возникает проблема распространения ключей. Для неё есть решение, но оно может быть взломано при помощи атаки MITM.
Но давайте не будем торопить события: сегодня мы и так очень много занимались. Обдумайте всё, что сегодня изучили. Посмотрите на этот способ атаки: теперь вы всегда будете пробовать эту атаку, изучая новые системы шифрования, чтобы понять, насколько они слабые или сильные. Впрочем, опытный и проницательный криптоаналитик подбирает такие атаки, которые специфичны для конкретной криптографической системы.
Наконец дожди закончились. За это время отец рассказал нам столько, сколько мы не узнали бы за целый год обучения в школе. Впрочем, про криптографические штуки он больше не вспоминал, резонно решив, что нам с Катей надо осмыслить всё, что мы узнали о протоколе распределения ключей по открытым каналам. Так что он рассказывал про мир вокруг нас. Для Кати все эти рассказы были в диковинку, а я вспомнил, как мы с ним занимались, когда мне было четыре года и я называл себя «учёный по природе» — тогда мы каждый день что-нибудь придумывали, делали опыты, собирали гербарии и коллекции насекомых, наблюдали за погодой. Где-то даже сохранились мои журналы наблюдений за природой и проведения научных опытов, где я корявыми буквами записывал всё, что узнал.