Криптография без иллюзий. От стены недоверия к трём опорам

- -
- 100%
- +

Иллюстрация на оложке Created with Grok
© Сергей Кирницкий, 2026
ISBN 978-5-0070-6612-9
Создано в интеллектуальной издательской системе Ridero
Введение. Письмо незнакомцу
Каждый день ты делаешь то, что ещё сто лет назад сочли бы либо фокусом, либо безумием. Набираешь номер карты в поле на чужом сайте и нажимаешь «оплатить». Пишешь пароль, который не знает никто на свете, и отправляешь его — куда-то. Говоришь близкому человеку что-то, предназначенное только ему, хотя между вами лежат тысячи километров провода, стекла и чужих машин, о существовании которых ты даже не подозреваешь.
И это работает. Секрет доходит. Не к соседу, не к случайному прохожему в цифровой толпе, а именно туда, куда ты целился, — к человеку или к службе, которых ты чаще всего и в лицо-то никогда не видел. Ты делаешь это между делом, не задерживая дыхания, как открывают кран: повернул — потекло.
Остановись на секунду и посмотри на это глазами того, кому такое показали впервые. Ты вручаешь запечатанное письмо толпе — толпе, в которой не знаешь никого. Ты не знаешь, кто примет конверт и передаст дальше, кто стои́т на перекрёстках, в чьих руках он побывает по дороге. А рук этих — не одна и не две: твоё письмо перелетает из города в город, от посредника к посреднику, и ни одного из них ты не выбирал и ни одному не давал разрешения. Толпа кишит чужими, и любой из них держит письмо хотя бы мгновение — успел бы и вскрыть, и подменить, и просто прочитать. И всё же ты почему-то уверен, что распечатает его один-единственный адресат — тот, кому оно написано.
Как это вообще возможно?
Вопрос звучит наивно — так наивно, что взрослый человек стесняется его задать вслух. Есть же шифрование; про него все слышали; на замочек в углу экрана можно ткнуть пальцем; значит, всё в порядке. Но наивные вопросы обычно и есть настоящие — те, мимо которых мы привыкли проходить, потому что кто-то однажды сказал, что тут всё решено. За спокойным словом «шифрование» прячется не одна загадка, а несколько, и они вложены друг в друга, как коробки. Снаружи — «как спрятать письмо от чужих глаз». У этой загадки есть красивый ответ, и мы к нему придём; он и вправду похож на фокус. Но чуть глубже лежит другая, и она куда упрямее: откуда ты знаешь, что письмо уходит именно тому, кому ты его пишешь? Что запечатанный конверт, который толпа несёт куда-то в темноту, ляжет в руки твоего адресата, а не того, кто лишь назвался им?
Ведь ты никогда его не видел. Не слышал его голоса. Между вами — только линия, по которой бегут сигналы, и на дальнем её конце кто-то говорит: «это я». Почему ты веришь?
Вот с этого вопроса всё и начнётся. Не «надёжен ли замок» — замки давно надёжны, — а «твой ли это замок вообще». Обещаю сразу и честно: к последней странице ты не получишь на него ответа «да» или «нет». Больше того — сам вопрос к тому времени изменится. Он не растворится в тумане, а станет точнее: из простого «можно ли доверять незнакомцу?» вырастет другой, на который уже можно опереться и с которым можно жить. Пока я не скажу, во что именно он превратится, — иначе испорчу дорогу. А дорога здесь важнее пункта назначения. Мы пройдём её так, как проходит всякий, кто однажды всерьёз задумался: от простого удивления к неудобной правде и дальше — к правде, которая освобождает.
Одно слово всё же назову заранее, потому что оно простое и понадобится нам с самого начала. Опора. Когда ты веришь, что на том конце линии — именно твой человек, эта вера на чём-то держится. Где-то под ней есть опора — что-то, что ты когда-то увидел своими глазами, услышал своими ушами, получил из рук в руки или просто однажды решил считать надёжным. Достаточно почувствовать: у всякого доверия под ногами есть опора, даже когда ты её не замечаешь, — как не замечаешь пола, пока он тебя держит.
И всё же ты пишешь. Каждый день, десятки раз, ты доверяешь свои секреты незнакомцам за стеклом экрана — и почти всегда оказываешься прав. Это не глупость и не слепая удача. Люди отправляли важное в руки посыльных, гонцов и почтмейстеров задолго до всякой электроники и чаще всего не ошибались — не потому, что мир был безопасен, а потому, что вера их на чём-то стояла. Стои́т на чём-то и твоя.
Возьми же в руку это письмо — к тому, кого ты никогда не видел. Мы отправим его в путь. И по дороге, шаг за шагом, разберёмся, на чём держится тихая, привычная вера, что оно дойдёт.
Часть I. Обещание
…контакт, который может состояться между любыми двумя людьми — независимо от того, общались ли они когда-либо прежде.
— Уитфилд Диффи, Мартин Хеллман. «Новые направления в криптографии» (1976)
Кажется, что безопасность — это вопрос удачно выбранного инструмента. Найди достаточно хитрый замок — и любой разговор, даже с человеком, которого ты никогда не видел, станет непроницаем для чужих. В этой вере есть своя логика: вся многовековая история секретной переписки — это история замков, которые становились всё изощрённее, пока их всё равно не вскрывали. Асимметрия, с которой начинается современная криптография, поначалу встаёт в этот же ряд — просто очередной замок, самый хитрый из всех, почти магия.
Но у неё есть свойство, которого не было ни у одного замка прежде: её можно показать всем и ничего при этом не отдать. Замок, выставленный на площади, — и ключ, который остаётся только у тебя. Из этого свойства растут сразу две вещи, и спутать их опасно: умение спрятать письмо от посторонних и умение доказать, чья рука его написала. Прятать и удостоверять — не одно и то же, хотя фокус проделывает и то, и другое как будто одним движением руки.
И всё же за самой красивой версией этого фокуса остаётся вопрос, который он не закрывает. Замок можно выставить на всеобщее обозрение — но откуда тот, кто собирается им воспользоваться, знает, что замок и вправду твой? Этот вопрос пока полежит в стороне. Дорога к нему начинается с предмета, знакомого до скуки: с почтового ящика, в щель которого письмо бросает кто угодно, а вынуть его может только владелец.
Глава 1. Замок без ключа, ключ без замка
Тысячи лет тайна держалась на общем секрете. Двое, желавшие говорить так, чтобы третий не понял, должны были сперва сойтись на чём-то, известном только им, — слове, шифре, уговоре о том, как переставлять буквы. И всякий раз всё упиралось в одну и ту же заминку: этот общий секрет сначала надо было как-то передать. Передать до разговора, по какому-то каналу, который сам ещё ничем не защищён, — курьером, при встрече, шёпотом на ухо. Замок и ключ были, по сути, одним предметом: кто умел запереть, тот умел и отпереть, а потому ключ приходилось делить на двоих.
Идея, что запирать и отпирать могут разные ключи, звучит поначалу как трюк с двойным дном — будто где-то припрятан подвох. Если посторонний способен закрыть замок, почему тот же посторонний не способен его открыть? И всё же именно на этой несимметричности держится разговор с незнакомцем. Прежде чем разбирать её как устройство, стоит один раз пережить её на предмете, который висит в каждом подъезде.
1.1. Почтовый ящик
Обычный почтовый ящик в подъезде — вещь, которую ты видел тысячу раз. Металлическая дверца, за ней полость, а в дверце прорезана узкая щель. В эту щель письмо может опустить кто угодно — сосед, почтальон, случайный человек, заглянувший с улицы. Ему не нужно ни разрешения, ни ключа: щель для того и сделана, чтобы принимать. А открыть дверцу и достать накопившееся может только один — тот, у кого ключ от неё. Щель работает в одну сторону. Опустить письмо — свободно; вынуть — только хозяину.
В этой обыденности спрятана большая идея, и на ней стоит задержаться чуть дольше, чем она просит. Смотри: чтобы бросить письмо, тебе не нужно ничего секретного. Ты не должен знать, есть ли у владельца ключ, какой он и где он его держит. Тебе довольно найти щель. Щель не спрашивает, кто ты: она не отличает хозяина от чужого, званого от незваного — принимает любое письмо от любого. Владеть ящиком и владеть ключом от него — разные вещи, и разведены они намеренно: тот, кто пользуется щелью, и тот, кто отпирает дверцу, могут не знать друг друга в лицо и никогда не встретиться.
Вот это и есть асимметрия — раньше, чем мы произнесли слово. У ящика словно два разных «ключа» с разными правами. Один общедоступен — это сама щель, ею пользуются все подряд. Другой единственный — это ключ от дверцы, он у хозяина. И, что здесь важнее всего, они не две половины одного секрета, поделённого поровну, а пара с несимметричными правами: то, чем кладут, и то, чем достают. Именно это веками и казалось невозможным. Раз замок заперт, рассуждали все, — значит, есть тот, кто умеет его отпереть; и чтобы позволить кому-то запереть, приходилось выдать ему заодно и способ отпереть. Здесь запирающий и отпирающий разведены начисто: сколько ни заглядывай в щель, открыть ею дверцу нельзя.
Чтобы почувствовать, до чего это устройство необычно, оглядись по сторонам. Почти все замки вокруг тебя устроены наоборот. Дверь в квартиру: один и тот же ключ и запирает, и отпирает, — а потому копию этого ключа ты отдаёшь только тем, кому доверяешь целиком, и сам миг передачи копии всегда чуть тревожен. Навесной замок на гараже, замочек на дневнике, дверца сейфа — та же история: кто может закрыть, тот может и открыть. Симметрия здесь настолько привычна, что её перестали замечать. И на этом ровном фоне почтовый ящик делает нечто тихо-странное: из обыденных предметов он едва ли не единственный уже развёл два права, которые прочие держат слитно, в одном ключе.
А теперь сделай следующий шаг сам — он напрашивается. Раз щель нужна каждому, кто захочет тебе написать, её место снаружи, на виду. Общедоступную половину не прячут; напротив, чем она заметнее, тем лучше делает свою работу. В этом смысле она похожа вовсе не на секрет, а на адрес. Адрес на конверте не берегут как тайну — его сообщают всем, от кого ждут вестей; он затем и существует, чтобы его знали. Открытая половина пары — вещь того же рода: её назначение в том, чтобы быть известной. Не «утаить», а «объявить».
В этом и странность: спрятанный адрес — бесполезный адрес; чем больше людей его знают, тем лучше он служит владельцу. Тайна, которую выгодно разглашать, звучит как противоречие в терминах — и всё же ровно так ведёт себя открытая половина пары.
Пока запомним только это простое узнавание — оно ещё пригодится. Та часть пары, которой пользуются другие, — не тайна, а адрес, и держать её естественно на виду. Но заметь, за чем именно мы сейчас проследили: за одним-единственным умением ящика — прятать брошенное в него от чужих глаз. У самой асимметрии есть и второе умение, совсем другого сорта; и спутать эти два умения — первая из ошибок, которых стоит остерегаться.
1.2. Что обещает асимметрия
Второе умение асимметрии живёт в другом предмете. Ящик прячет — это вся его забота: что опустили в щель, то и укрыто от посторонних глаз, и совершенно неважно, кто опустил. Но есть нужда прямо противоположная: не спрятать написанное, а, наоборот, оставить его открытым для всех и при этом намертво связать с тем, кто его написал. Для этого служит не ящик, а печать.
Вспомни сургучную печать на старом письме. Она не прячет ни строчки — письмо под ней прочтёт всякий, кому хватит духу сломать сургуч. Печать делает другое: пока она цела, она свидетельствует, чья рука закрыла конверт и что с тех пор его никто не вскрывал. Ящик отвечает на вопрос «кто это увидит?»; печать — на вопрос «от кого это пришло?». Два предмета, две разные работы, и смешивать их так же нелепо, как ждать, что дверной замок сам расскажет тебе, кто ломился в дверь, пока тебя не было.
Ценность печати вовсе не в том, что она что-то скрывает, — а в том, что её нельзя подделать и что она привязана к одному человеку. Перстень с гербом оставляет оттиск, который видит всякий; но оставить такой оттиск может лишь владелец перстня. Оттиск открыт для глаз и закрыт для подделки: любой прочтёт, чей он, и никто не проставит его от чужого имени. Ровно этого мы и хотим от подлинности — чтобы происхождение письма было на виду, а присвоить его чужому было невозможно.
Назовём обе услуги точно — дальше всё будет держаться на этом различии. Первая услуга — тайна: содержимое укрыто от чужих. Вторая — подлинность: удостоверено, чья рука за письмом стои́т. Это не два положения одного тумблера, не «режим А» и «режим Б» одной и той же кнопки. Это два разных обещания, которые асимметрия раздаёт порознь, и каждое можно получить без другого.
Здесь легко оступиться, потому что в обиходе обе услуги сливаются в одно смутное слово — будто есть единая кнопка «сделать безопасно», и, нажав её, ты получаешь всё сразу. Говорят «тут всё зашифровано, значит, надёжно» — и в этом коротком «надёжно» незаметно просят сразу двух разных вещей: чтобы чужой не прочёл и чтобы свой оказался и вправду своим. Просят двух, а проверяют, в лучшем случае, одно.
Письмо можно спрятать безупречно — и всё же не знать, от кого оно. Вообрази послание, запечатанное так плотно, что ни одна живая душа, кроме адресата, не разберёт ни слова: тайна идеальна. Но идеальная тайна ни слова не говорит о том, чья рука это письмо составила; под непроницаемой обёрткой может сидеть кто угодно. Письмо, запечатанное от всех глаз и подписанное «твой навсегда», трогает нежностью строк — а чья это рука, нежность не доказывает ничем. Спрятать — не значит удостоверить.
И наоборот. Письмо можно удостоверить безупречно — и не прятать при этом вовсе. Публичное объявление, скреплённое подписью, которую нельзя подделать, читают все желающие: тут нет ни крупицы тайны, зато в авторстве нельзя усомниться. Так работает манифест, прибитый к дверям на виду у города, — важно не спрятать текст, а не дать отпереться от подписи под ним. Удостоверить — не значит спрятать.
Отсюда следствие простое, но неуютное: провал одной услуги не лечится успехом другой. Сколько ни наращивай тайну, она не прибавит ни капли уверенности в том, кто перед тобой; сколько ни укрепляй подлинность, она не укроет от чужих глаз ни строчки. Перед нами две отдельные оси, и двигаться по одной можно, не сместившись по другой ни на шаг. Идеально спрятанное письмо бывает от самозванца; идеально подписанное прочитано всеми.
Запомни это различие — это развилка, к которой мы ещё вернёмся не раз. Почти всё, что случится с нами дальше, случится оттого, что две услуги слишком легко принять за одну: успех в одной обманчиво сходит за успех во всём. Пока довольно того, что ты видишь их порознь — ящик, который прячет, и печать, которая удостоверяет: два предмета, а не один.
1.3. Подпись и шифрование — два глагола
Услугу удобно обратить в глагол — тогда сразу видно, что у неё есть дополнение, предмет, на который она направлена. Тайна — это глагол «спрятать»: спрятать что. Подлинность — глагол «доказать»: доказать кто. Разные глаголы правят разными дополнениями, и подставить одно на место другого нельзя — как нельзя спрятать «кто» или доказать «что»: выйдет бессмыслица уже на уровне грамматики, ещё до всякой техники.
Эта грамматика проступает и в мастерской, там, где абстракция обрастает конкретикой. Открой набор инструментов, которыми сегодня подписывают и шифруют, и встретишь два ключа с почти близнецовыми именами: ed25519 и X25519. Они выросли из одной математической семьи — общий предок, общая порода, — и всё же тебе твёрдо скажут: этот, ed25519, — чтобы подписывать; тот, X25519, — чтобы двоим сойтись на общей тайне, под которой потом прячут переписку. Их держат порознь и дают им разные имена вовсе не из педантизма. Один делает глагол «доказать»: скрепляет письмо подписью, которую никто другой не оставит. Другой делает работу, ведущую к «спрятать»: помогает двоим условиться о секрете, невидимом для третьего. Одна кровь — противоположные ремёсла.
Близнецовость имён — ловушка для глаза, и попадаются в неё постоянно. Но инструмент попасться не даёт: подсунь ключ не к тому глаголу — и всё встанет, потому что каждый ключ умеет ровно своё и наотрез отказывается делать чужое. Разведение, которое на словах выглядит придиркой, в работе оказывается жёстким: два ключа не взаимозаменяемы, как не взаимозаменяемы «доказать» и «спрятать».
И чем ближе сходство, тем слаще соблазн его не заметить. Именно родственность этих ключей и подталкивает обойтись одним: раз они так похожи, рассуждает уставший человек, к чему держать оба? Ловушка тем и коварна, что стои́т на подлинном сходстве, а не на обмане: различие тонко, а родство очевидно.
Вот тут и караулит искушение срезать угол: «возьму один ключ, тот, которым подписываю, и в него же стану шифровать — меньше хозяйства». Мысль понятная — и совершенно ложная. Просить ключ подписи хранить тайну — категориальная ошибка: ошибка не в расчёте, а в самом роде вещи. Подпись доказывает кто; шифрование прячет что. Требовать от подписи, чтобы она ещё и прятала, — всё равно что требовать от сургучной печати, чтобы она заодно заклеила конверт: печать не для того сделана, у неё другое ремесло. Или возьми подпись под договором: весь её смысл в том, чтобы стоять на виду рядом с текстом, который она заверяет; попросить эту подпись сделать договор нечитаемым для других — значит не понять, зачем подпись вообще ставят. Она свидетельствует и не скрывает; заставить её скрывать нельзя ни нажимом, ни хитростью — можно только сломать само различие, на котором держится смысл обеих услуг.
И заметь тонкость: ключ подписи — совершенно исправный ключ, он безупречно делает своё дело. Ошибка не в ключе, а в глаголе, который ему навязали. Исправность инструмента не делает его пригодным для чужой работы; печать не становится клеем оттого, что она исправна. Различие тайны и подлинности, минуту назад казавшееся философской тонкостью, оборачивается вполне практическим запретом: два глагола не складываются в один, сколько ни хочется ужать связку ключей до одного. И это лишь первый случай, где успех в одном глаголе легко принимают за безопасность в обоих; таких подмен впереди ещё немало, и почти каждая начинается ровно с этой — с молчаливой веры, что раз одно сделано хорошо, то и второе как-нибудь сделается само.
Теперь у тебя в руках весь механизм. Две услуги, разведённые по двум предметам; два глагола, разведённые по двум ключам; и в каждой паре — открытая половина, которую незачем стеречь: тайны в ней нет с самого начала. Инструмент понят до конца — со всей его силой и со всеми границами. И самое лёгкое, что напрашивается сделать с этой открытой половиной, лежит прямо под рукой.
1.4. Соблазн
Так сделай же этот лёгкий шаг. Раз открытая половина — не секрет, а адрес, значит, и хранить её незачем: опубликуй, вывеси на самом видном месте, и любой, кто захочет написать тебе тайно, возьмёт её оттуда и напишет. Не нужно встречаться, не нужно шептать пароль на ухо, не нужно искать надёжного курьера и вздрагивать за него всю дорогу. Довольно один раз объявить свой адрес всему свету — и тайная переписка с кем угодно вдруг становится возможной.
Вспомни, чего это стоило раньше. Двое, желавшие говорить тайно, сперва добывали общий секрет: сходились на условленном слове, переписывали от руки одинаковые таблицы шифра, заучивали порядок, в котором будут путать буквы. И всё это добро надо было ещё и вручить друг другу — в запечатанном пакете с оказией, при короткой встрече в условленном месте, через человека, которому оба соглашались верить. Пакет мог потеряться в пути, встреча — сорваться, память — подвести; обряд был так хлопотен и ненадёжен, что тайна выдыхалась ещё прежде, чем начаться. Секрет, чтобы сделаться общим, должен был сперва проехать по свету — и вся затея держалась на этой доставке.
Остановись на миг и почувствуй, что здесь только что случилось. Вся тяжесть, которую человечество веками волокло на плечах, — необходимость сперва как-то доставить секрет по пути, который сам ещё ничем не защищён, тот самый узел, о который спотыкались все до единого, — эта тяжесть будто испарилась. Секрет больше не надо возить. Да и возить-то нечего: то, что нужно другим, ты и так отдаёшь всем, а то, что нужно тебе, не отдаёшь никому и никуда не везёшь. Задача, казавшаяся вечной, решается не хитрым курьером и не замком покрепче, а простым отказом от самой доставки.
И до чего это красиво в своей простоте. Прежде, чтобы сказать что-то тайное незнакомцу на другом конце земли, ты был обязан завести с ним сперва общую тайну — а как заведёшь её с тем, кого в глаза не видел? Замкнутый круг, из которого не было выхода: чтобы говорить тайно, нужен общий секрет, а чтобы передать общий секрет, нужно уже уметь говорить тайно. Теперь выхода искать не приходится: круг разомкнулся сам, стоило лишь перестать прятать то, что и не требовалось прятать. Публичность ключа — не досадная уступка, не слабина, за которую придётся расплачиваться; напротив, именно она и есть решение. Чем шире ты раздал свой адрес, тем большему числу людей открыл дорогу к себе — и ни на волос не убавил собственной безопасности, ведь отдал ты ровно то, что и создано для раздачи.
Раздавать его можно сколь угодно щедро. Печатай открытую половину на визитной карточке, вписывай в справочник, ставь в конце каждого письма, вывешивай хоть на дверях — любая копия ничем не хуже первой, ведь утекать тут нечему: то, что не было тайной, невозможно выдать. Один и тот же объявленный адрес служит разом всем — и первому встречному, и тысячному; а ты для тысячного не сделал ни на грош больше, чем для первого. Один-единственный жест — и дорога к тебе открыта целому свету, до каждого, кто когда-нибудь захочет тебе написать.
Читатель уже кивает — и правильно делает, ведь придраться не к чему. Вывод безупречен на каждом шаге: две услуги разведены, два глагола разведены, открытая половина затем и создана, чтобы быть открытой, — стало быть, открой её и живи спокойно. Есть особое облегчение в том, как трудная задача вдруг оказывается решённой — не с боем, не ценой изнурительного труда, а от одного смещения взгляда, после которого прежнее препятствие перестаёт быть препятствием. Мысль ложится под ноги твёрдой почвой; на ней хочется выпрямиться во весь рост и оглядеть поле, которое ещё недавно казалось непроходимым. И отсюда, с этой высоты, видно далеко — а всё видимое говорит одно и то же: задача, мучившая столько поколений подряд, наконец закрыта. Закрыта чисто, без остатка, и притом почти даром.
Замок, который незачем прятать, незачем и охранять. Повесь его на виду — и щель твоего ящика открыта каждому, кто захочет написать тебе тайно; ящик стои́т посреди города, дверца заперта, ключ при тебе, и это выглядит не уязвимостью, а самим решением. Тот, кто веками искал безопасный способ доставить секрет, вдруг обнаруживает, что доставлять больше нечего: он просто повесил свой замок на площади и стал ждать писем.
И только одно легонько царапает — даже не мысль, а её лёгкость. Тяжесть, которую волокли столько поколений, не может ведь взять и раствориться без следа — а она, похоже, растворилась, и вдобавок задаром. Слишком гладко. Но сколько ни ищи, изъян не находится: замок на виду, ключ при тебе, незнакомец пишет — и всё сходится, всё на своих местах. Читатель стои́т на твёрдой почве и кивает; почва под ним кажется совершенно надёжной.
Глава 2. Человек посередине
Раз ключ публичный, самое страшное — что его узнают: так подсказывает осторожность, приученная веками прятать. Но узнать публичное — не беда по определению; на то оно и публичное. Ключ можно напечатать на визитке, выбить на памятнике, разослать всем подряд — и ничего не случится. Осторожность сторожит не ту дверь.
Опасность сидит там, куда взгляд не заглядывает, — не в том, что кто-то прочтёт открытый ключ, а в том, что кто-то встанет между тобой и собеседником и будет решать, какой ключ ты вообще увидишь. Не подслушать разговор, а владеть самим каналом, по которому он идёт. Подслушивающий бессилен изменить то, что течёт мимо него; хозяин канала меняет само течение — и в этом вся пропасть между ними. И самое неприятное: письмо, прошедшее через такие руки, приходит без единого следа — правильное, целое, именно такое, какого ждёшь. Проверять его на выходе бесполезно; проверять надо было на входе.



