Но помните: чтобы писать шифровки, вы должны передать ключи всем, с кем хотите поддерживать связь. У вас и вашего партнера должен быть общий секрет, такие ключи, которыми вы могли бы зашифровывать и расшифровывать свои письма так, чтобы посредник оказался выключен из цепочки.
Для этого были придуман метод открытых ключей. Идея довольно сложная, но невероятно остроумная.
В методе открытых ключей каждый пользователь имеет два ключа. Ключи – это длинные цепочки всякой математической абракадабры, и свойства у них поистине волшебные. Все, что вы зашифруете одним ключом, можно расшифровать с помощью другого, и наоборот. Мало того, такую операцию можно проделать только с этой парой ключей – если вы расшифровали текст с помощью первого ключа, то можете быть уверены, что для зашифровки использовался именно второй ключ, а не какой-то другой. И, соответственно, наоборот.
Так что просто возьмите один из этих ключей – не имеет значения какой – и опубликуйте его. Сделайте всеобщим достоянием. Пусть его знает весь мир. Естественно, этот ключ называется открытым.
А другой ключ вы прячете в самом дальнем уголке своего разума. Бережете его как зеницу ока. Никогда и никому его не раскрываете. Этот ключ, понятное дело, называется закрытым или личным.
Теперь, предположим, вы шпион и хотите поговорить со своим начальством. Их открытый ключ известен каждому. Ваш открытый ключ тоже известен каждому. Никто, кроме вас самих, не знает ваш личный ключ. Никто, кроме ваших боссов, не знает их личный ключ.
Вы хотите послать сообщение. Первым делом вы шифруете его своим личным ключом. Потом отправляете. Ваши боссы получат письмо и поймут, что оно пришло именно от вас. Почему? Потому что, если они смогли расшифровать его вашим открытым ключом, значит, зашифровать его могли только вы – своим личным ключом. Все равно что вы поставили под письмом свою подпись или печать. Она подтверждает: «Это написал я и никто иной. Ни один человек не вскрывал это письмо и не подменил его содержимое».
Но вот беда – при таком методе вы не сможете сохранить в секрете содержание письма. Потому что ваш открытый ключ известен всем и каждому. Иначе и быть не может, потому что в противном случае вы сможете посылать письма только тем, кто знает ваш открытый ключ. Прочитать письмо сумеет каждый, кто его перехватит. Изменить его и сделать вид, будто оно написано вами, они тоже не смогут, однако, если вы желаете сберечь тайну, нужен способ получше.
И такое решение есть. Сначала вы шифруете письмо своим личным ключом, а потом – открытым ключом своего босса. Теперь послание как бы заперто на два замка. Первый – открытый ключ босса – отпирается только личным ключом вашего босса. Второй – ваш личный ключ – отпирается только вашим открытым ключом. Ваши начальники, получив сообщение, отомкнут его двумя ключами и будут знать наверняка, что, во‐первых, это письмо написали именно вы, и во‐вторых, прочитать его могут только они.
Крутая штука, правда? Когда я узнал о ней, мы с Дэррилом в тот же день обменялись ключами и потом несколько месяцев, хихикая и потирая руки, посылали друг другу совершенно секретные письма о том, где нам встретиться после школы и есть ли у него хоть малейший шанс добиться внимания Ванессы.
Но если вы хотите понять, как работают системы безопасности, приходится учитывать любые возможные ситуации, даже самые невероятные. Например, если я подменил открытый ключ вашего босса своим открытым ключом и заставил вас в это поверить? Вы зашифруете письмо своим личным и моим открытым ключом. Я его перехвачу, расшифрую, прочитаю, снова зашифрую настоящим открытым ключом вашего босса и отправлю по адресу. Ваш босс будет в полной уверенности, что письмо не мог написать никто, кроме вас, и прочитать не может никто, кроме него.
А я буду сидеть между вами, как жирный паук в центре паутины, и читать ваши секреты.
Самый легкий способ избежать этого – как можно шире распространить ваш открытый ключ. Чем проще будет всем и каждому узнать ваш открытый ключ, тем труднее станет работа того, кто сидит посередине. Но, как ни странно, сделать какие-либо сведения широко известными гораздо труднее, чем удержать их в тайне. Только вдумайтесь, сколько миллиардов долларов тратится на рекламу шампуней и прочей дребедени, о которой ее изготовитель хочет уведомить как можно большее количество людей.
Существует и более дешевый способ решения проблемы посредника – сеть доверия. Предположим, перед вашим отъездом на задание вы с вашими боссами сидите в штаб-квартире за чашечкой кофе и обмениваетесь своими ключами. И никаких посредников! Вы абсолютно уверены, что полученные ключи – именно те, чьи надо, потому что приняли их от своего шефа из рук в руки.
До сих пор все идет хорошо. Но у этой затеи существует естественный предел. С каким количеством людей вы сможете встретиться лично и передать ключи? Сколько часов в день согласны посвятить нудному занятию, похожему на составление телефонного справочника? И много ли народу согласны уделить вам примерно такое же время?
Да, такой обмен ключами можно рассматривать как аналогию телефонным справочникам. Когда-то в мире существовали миллионы таких справочников, и если вы хотели куда-то позвонить, то должны были отыскать там нужный номер. Но среди номеров, которые вдруг понадобились вам, есть множество таких, которые вы знаете наизусть или можете у кого-то спросить. Даже сегодня, держа в руках сотовый телефон, я часто спрашиваю Джолу или Дэррила, есть ли у них нужный мне номер. Это гораздо быстрее и проще, чем искать его в сети, да и надежнее. Если Джолу отвечает «Есть», я ему доверяю, а заодно верю и в правильность этого номера. Это называется «транзитивное доверие» – доверие, которое расходится по сети наших отношений в обществе.
Примерно так же, только в бóльших масштабах, работает сеть доверия. Скажем, я встречаюсь с Джолу и получаю его ключ. Я могу повесить его на свою «связку» – набор ключей, который я подписал своим личным ключом. Это значит, что вы можете отпереть его моим открытым ключом и знать с уверенностью, что я – или тот, у кого есть мой ключ, – сказал: «Этот ключ принадлежит вон тому парню».
Так что я передаю вам свою «связку» и заявляю, что я действительно лично встречался с каждым из обладателей этих ключей и готов подтвердить их подлинность. Если вы мне верите, то смело берете ее и добавляете к своему набору. Потом вы тоже встречаетесь с кем-то еще и передаете свой набор. Список расширяется, и если вы доверяете следующему человеку в цепочке и он тоже доверяет своему преемнику, то все мы можем быть уверены, что находимся в безопасности.
Вот так я и пришел к мысли о тусовках с подпиской ключей. Выглядеть это будет именно так, как звучит: все собираются вместе, и каждый переписывает себе открытые ключи всех остальных. Мы с Дэррилом, обмениваясь ключами, представляли собой мини-вариант такой тусовки, правда всего с двумя скромными участниками. Но если народу соберется больше, то вы заложите основу сети доверия, и эта сеть начнет разрастаться. И каждый, кого вы внесли в свой набор ключей, выйдет в бескрайний мир, будет встречаться с новыми людьми, добавлять к списку все больше и больше имен. И вам не обязательно лично знакомиться с этими новобранцами, достаточно верить, что подписанный ключ, который вы получили от них, правилен.
Теперь вы понимаете, почему сеть доверия и тусовки с подпиской ключей прямо-таки созданы друг для друга.
– Надо предупредить всех, что это очень-очень закрытая тусовка, только по приглашениям, – сказал я. – Пусть не приводят с собой никого из посторонних, иначе их самих не пустят.
Джолу посмотрел на меня поверх кофейной чашки.
– Шутишь, что ли? Стоит это сказать, и они притащат с собой целые толпы друзей.
– Тьфу ты, – отозвался я. В эти дни я раз в неделю ночевал у Джолу, мы вместе обновляли код для индинета. В «Пигсплине» мне действительно заплатили за это кругленькую сумму. Ощущение было странноватое. Вот уж не думал, что когда-нибудь буду писать программы за деньги.
– Тогда что же нам делать? Мы хотим собрать только тех, кому полностью доверяем, и не желаем сообщать им, в чем дело, пока не соберем у всех ключи и не разошлем секретные письма.
Джолу отлаживал программу, а я смотрел ему через плечо. Раньше такую процедуру называли «экстремальным программированием», но это звучало чересчур громко. Теперь это называют просто «программированием». Вдвоем гораздо проще заметить ошибку, чем в одиночку. Как говорится, чем больше глаз, тем меньше проблем.
Работа продвигалась к концу, еще немного – и мы запустим новую сборку. Обновление происходило автоматически в фоновом режиме, так что пользователям не придется ничего делать, просто раз в неделю они будут обнаруживать, что программа стала еще лучше. До чего приятно было сознавать, что программой, которую я написал, уже завтра будут пользоваться сотни тысяч людей!
– Что делать? Понятия не имею. Наверно, смириться. Ничего тут не поделаешь.
Мне вспомнились золотые дни «Харадзюку Фан Мэднесс». В той игре часто попадались задания, требующие общения с большими группами.
– Ну ладно, делать нечего. Но давай хотя бы попробуем сохранить тайну. Скажи им, что разрешается привести самое большее одного гостя и это должен быть человек, которого они лично знают самое меньшее пять лет.
Джолу оторвался от экрана.
– А вот это уже подействует. Хорошая мысль. Знаешь, если бы мне сказали никого не приводить, я бы возмутился: мол, да кем, черт возьми, они себя возомнили! А если поставить вопрос именно так, то получаются шпионские игры в духе агента 007.
Потом я выловил еще один баг. Потом мы выпили кофе. Потом я вернулся домой, немного поиграл в «Пиратов», стараясь не думать о подозрительных партнерах с дотошными вопросами, лег и проспал до утра без задних ног.
Сатро-Батс – это наши американские почти настоящие древнеримские развалины. Они были построены в 1896 году и на тот момент были самыми большими в мире закрытыми купальнями. В огромном стеклянном солярии викторианского стиля располагались несколько бассейнов и ванн и даже старинные водные горки. Но в пятидесятые годы популярность купален стала падать, и в 1966 году владельцы сожгли их, чтобы получить страховку. Остался от грандиозного здания лишь лабиринт побитых ветром и дождями камней на голом склоне в Оушен-Бич. Всем кажется, что этот лабиринт похож на древнеримские руины – такой же обветшалый и таинственный. А ниже руин спряталась вереница пещер, открывающихся прямо в море. В высокий прилив волны проникают внутрь и захлестывают развалины. Говорят, там время от времени тонут зазевавшиеся туристы, затянутые уходящей водой.