Кори Доктороу - Младший брат
Конечно, владея шифровальным делом, вы сумеете эффективно противостоять попыткам напасть изнутри на ваши каналы связи. Если у вас на вооружении есть криптография, противник, даже добравшись до ваших сообщений, не сможет прочитать их, подправить, подменить на ложные. Именно для этого и придумали тайнопись.
Но помните, чтобы криптография работала, вы должны снабдить своих партнеров декрипторными ключами, то есть поделиться с ними кое-какими своими секретами, знанием способов шифрования и дешифрования сообщений, так, чтобы не подпустить и близко к вашей информации желающих подпортить ее изнутри.
В этой связи у специалистов возникла немного напряжная, но невероятно остроумная идея использовать «открытые» декрипторные ключи.
При открытой системе каждая пара пользователей имеет по два ключа, которые представляют собой длинные цепочки математической абракадабры и обладают почти магическими свойствами. Что бы вы ни зашифровали одним ключом, вторым обязательно расшифруете, и наоборот. Более того, данную операцию могут проделать исключительно эти два ключа, и никакие другие. Поэтому если вам удалось расшифровать сообщение с помощью одного из двух ключей, то вы знаете, что оно зашифровано посредством второго, парного ключа (и наоборот).
Так вот, вы берете один из этих двух ключей (все равно какой) и просто-напросто раскрываете его, рассекречиваете, делаете общеизвестным. Пусть о нем знает весь белый свет. Вот, собственно, почему этот ключ и называется «открытым».
Второй ключ вы прячете в самых темных уголках вашего сознания. Вы защищаете его ценой собственной жизни. Никто ни при каких условиях не должен знать, что он собой представляет. Поэтому его зовут вашим «личным ключом». (Уф-ф!)
Теперь предположим, что вы шпион и хотите провести сеанс связи со своим шефом. Его открытый ключ известен всему миру. Ваш открытый ключ известен всему миру. Но никто, кроме вас, не знает вашего личного ключа. И никто, кроме шефа, не знает его личного ключа.
Вам надо послать своему шефу донесение. Во-первых, вы шифруете его своим личным ключом. Теперь ваше донесение готово к отправке, и дело в шляпе, поскольку шеф получит донесение и поймет, что оно от вас. Почему? Очень просто: раз полученное донесение можно расшифровать вашим открытым ключом, значит, его могли зашифровать только вы и только вашим личным ключом. Это все равно что заверить копию оригинала собственной подписью и печатью. Ваш личный ключ будто говорит за вас: это написал я, и никто другой; текст данного документа не был подменен или подправлен.
К сожалению, при таком раскладе посланное вами донесение фактически перестает быть секретным, поскольку ваш открытый ключ всем известен (так и должно быть, иначе вы сможете отправлять шифрованные сообщения только ограниченному кругу людей, которые знают ваш открытый ключ). Любой, кто перехватит донесение, сможет прочитать его. Ему не удастся подменить или исправить содержание, но если вы не хотите, чтобы посторонние знали, о чем информируете шефа, вам необходимо найти лучшее решение.
Вот почему вы шифруете донесение не только своим личным ключом, но также открытым ключом вашего шефа. Теперь оно под двойным замком. Первый замок, запертый открытым ключом шефа, отпирается только личным ключом шефа. Второй замок, запертый вашим личным ключом, отпирается вашим открытым ключом. Шеф, получив донесение, отопрет оба замка в полной уверенности, что: а) донесение написано вами, и б) никто из посторонних не прочитает донесение.
Круто, правда? Когда я впервые узнал об этой системе, мы с Даррелом тут же обменялись ключами и несколько месяцев прикалывались и потирали руки от удовольствия, посылая друг другу совершенно секретные сообщения о том, где встречаемся после уроков и какие у Даррела шансы добиться внимания Ванессы.
Однако специфика дела обеспечения безопасности такова, что вам придется учитывать самые шизоидные варианты. Типа, как поступить, если я наколю вас и заставлю поверить, что мой открытый ключ — это открытый ключ вашего шефа? Вы зашифруете свое донесение своим личным ключом и моим открытым ключом. Я расшифрую ваше донесение, прочитаю, снова зашифрую настоящим открытым ключом вашего шефа и переправлю адресату. А ваш шеф будет по-прежнему думать, что только вы готовили это донесение и он один прочитал его.
А я устроюсь посередке, как жирный паук в центре паутины, и поимею все ваши секреты.
Так вот, самый простой способ избежать этого — изо всех сил рекламировать ваш открытый ключ. Чем проще станет любому человеку узнать ваш настоящий открытый ключ, тем тяжелее придется тому, кто пытается осуществить подрыв изнутри. Кстати, к вашему сведению, добиться широкой известности так же трудно, как хранить секреты. Только подумайте о миллиардах долларов, которые тратятся на рекламу шампуня и прочей дребедени с единственной целью — проинформировать не меньшее количество народу о существовании чего-то, о чем рекламодатель хочет, чтоб они знали.
Есть способ не допустить подрыва коммуникаций изнутри и подешевле: создать сеть доверия. Скажем, прежде чем покинуть штаб и отправиться в тыл к противнику, посидите на дорожку с шефом и за чашкой кофе оба разложите на столе свои ключи. Попробуй-ка теперь кто-нибудь подсунуть вам замочек, что отпирается чужим ключиком! Вы абсолютно уверены, что располагаете ключами вашего шефа, потому что он сам передал их вам из рук в руки.
Ладно, едем дальше. Для подобного взаимообмена ключами существуют физические рамки: сколько раз вы сможете вот так встретиться с человеком лицом к лицу, сколько часов в день готовы уделить работе, по объему равной составлению телефонного справочника? И сколько ваших партнеров согласны пожертвовать ради вас сопоставимым по длительности временем?
Сравнение с телефонным справочником в данном контексте весьма кстати. Было дело, телефонные справочники заполонили мир, и человек не мог без них обойтись. Но сейчас при желании или необходимости куда-нибудь позвонить, мы чаще всего вспоминаем нужный номер или просим кого-нибудь из окружающих подсказать его нам. Даже теперь, когда при мне всегда имеется мой сотовый телефон, я скорее спросил бы Джолу или — до недавнего времени — Даррела, не знают ли они, как позвонить в такое-то место. Так быстрее и проще, чем выискивать номер в онлайне, да и надежней тоже. Если Джолу знает этот номер, я ему доверяю, и номеру тоже доверяю. Такое доверие расходится от нас по сети наших отношений в обществе, а потому так и называется — «переходящее», или «транзитивное» доверие.
«Сеть доверия» — более широкое понятие. Скажем, я встречаю Джолу и получаю от него ключик к шифру. Вешаю этот ключик себе на «связку» — список кодов, «подписанных» моим личным ключом. То есть теперь вы можете разомкнуть «связку» моим открытым ключом и будете знать наверняка, что я — ну, или тот, у кого есть мой ключ — говорю вам, мол, «вот этот ключ принадлежит вон тому парню».
Итак, вы принимаете от меня мою связку и при этом верите, что я действительно лично встречался с обладателями нанизанных на нее ключей и в свою очередь полностью доверяю им. Так что вы смело добавляете мою связку к той, которая у вас уже имеется. Потом вы встречаетесь с кем-то еще и передаете всю связку ему. Таким образом, она все увеличивается, и пока сохраняется доверие к каждому очередному преемнику, мы все можем быть достаточно уверены, что находимся в безопасности.
Тут мы вплотную приблизились к понятию «тусовка с подпиской ключами», которое означает именно то, о чем вы подумали: народ собирается на тусовку и переписывает себе чужие открытые ключи. Когда я и Даррел доверили друг другу свои ключи, у нас состоялась как бы скоротечная мини-тусовка «с подпиской ключами», всего лишь с двумя скромными участниками, хоть и с далеко идущими последствиями. Но с толпой народа вы закладываете основу сети доверия, которая далее будет расти и развиваться сама по себе. Все те, кто уже находится на вашей связке ключей, выходят в мир, встречаются с другими надежными людьми, и к связке прибавляются все новые имена. И вам не обязательно лично знакомиться с новобранцами, просто верьте, что очередной ключ, добытый вашими товарищами, не подведет.
Теперь вы знаете, почему сеть доверия и тусовка «с подпиской ключами» сочетаются, как икра и сливочное масло.
— Просто надо предупредить всех, что это закрытая тусовка, вход только по приглашениям, — предложил я. — Мол, если приведете посторонних, вас самих не пустят.
Джолу перестал смотреть в свой кофе и поднял глаза на меня.
— Ты чего, обалдел? Тогда все точно приволокут за собой кучу приятелей и знакомых!
— Блин! — В последнее время я проводил один вечер в неделю дома у Джолу, обновляя код индинета. «Пигсплин» действительно заплатил мне за работу конкретные деньги, что меня приятно удивило. Никогда бы не подумал, что смогу зарабатывать программированием.