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