Текст книги "Введение в криптографию (ЛП)"
Автор книги: Филипп Циммерман
Жанры:
Программное обеспечение
,сообщить о нарушении
Текущая страница: 2 (всего у книги 7 страниц)
Цифровые подписи
Дополнительное преимущество от использования криптосистем с открытым ключом состоит в том, что они предоставляют возможность создания электронных цифровых подписей (ЭЦП). Цифровая подпись позволяет получателю сообщения убедиться в аутентичности источника информации (иными словами, в том, кто является автором информации), а также проверить, была ли информация изменена (искажена), пока находилась в пути. Таким образом, цифровая подпись является средством аутентификации и контроля целостности данных. Кроме того, ЭЦП несёт принцип неотречения, который означает, что отправитель не может отказаться от факта своего авторства подписанной им информации. Эти возможности столь же важны для криптографии, как и секретность.
ЭЦП служит той же цели, что печать или собственноручный автограф на бумажном листе. Однако вследствие своей цифровой природы ЭЦП превосходит ручную подпись и печать в ряде очень важных аспектов. Цифровая подпись не только подтверждает личность подписавшего, но также помогает определить, было ли содержание подписанной информации изменено. Собственноручная подпись и печать не обладают подобным качеством, кроме того, их гораздо легче подделать. В то же время, ЭЦП аналогична физической печати или факсимиле в том плане, что, как печать может быть проставлена любым человеком, получившим в распоряжение печатку, так и цифровая подпись может быть сгенерирована кем угодно с копией нужного закрытого ключа[5]5
Таким образом, цифровая подпись, в отличие от собственноручной, свидетельствует не о том, что конкретный индивидуум (физическое лицо) заверил информацию, а что конкретный криптографический ключ заверил информацию. Цели «связывания» криптографического ключа и физического лица служат цифровые сертификаты и механизмы защиты ключа, основанные на личностных (биометрических) данных его владельца.
[Закрыть].
Некоторые люди используют цифровую подпись гораздо чаще шифрования. Например, вы можете не волноваться, если кто-то узнает, что вы только что поместили $1000 на свой банковский счёт, но вы должны быть абсолютно уверены, что производили транзакцию через банковского кассира.
Простой способ генерации цифровых подписей показан на рисунке 6. Вместо зашифрования информации чужим открытым ключом, вы шифруете её своим собственным закрытым. Если информация может быть расшифрована вашим открытым ключом, значит её источником являетесь вы.
Хэш-функция
Однако описанная выше схема имеет ряд существенных недостатков. Она крайне медлительна и производит слишком большой объём данных – по меньшей мере вдвое больше объёма исходной информации. Улучшением такой схемы становится введение в процесс преобразования нового компонента – односторонней хэш-функции. Одностороняя хэш-функция берёт ввод произвольной длины, называемый прообразом, – в данном случае, сообщение любого размера, хоть тысячи или миллионы бит – и генерирует строго зависящий от прообраза вывод фиксированной длины, допустим, 160 бит. Хэш-функция гарантирует, что если информация будет любым образом изменена – даже на один бит, – в результате получится совершенно иное хэш-значение.
В процессе цифрового подписания PGP обрабатывает сообщение криптографически стойким односторонним хэш-алгоритмом. Эта операция приводит к генерации строки ограниченной длины, называемой дайджестом сообщения (message digest)[6]6
Синонимы – хэш-значение, свёртка, сигнатура, контрольная сумма, код аутентичности сообщения.
[Закрыть]. (Опять же, любое изменение прообраза приведёт к абсолютно иному дайджесту.)
Затем PGP зашифровывает полученный дайджест закрытым ключом отправителя, создавая «электронную подпись», и прикрепляет её к прообразу. PGP передаёт ЭЦП вместе с исходным сообщением. По получении сообщения, адресат при помощи PGP заново вычисляет дайджест подписанных данных, расшифровывает ЭЦП открытым ключом отправителя, тем самым сверяя, соответственно, целостность данных и их источник; если вычисленный адресатом и полученный с сообщением дайджесты совпадают, значит информация после подписания не была изменена. PGP может как зашифровать само подписываемое сообщение, так и не делать этого; подписание открытого текста без зашифрования полезно в том случае, если кто-либо из получателей не заинтересован или не имеет возможности сверить подпись (допустим, не имеет PGP).
Если в механизме формирования ЭЦП применяется стойкая односторонняя хэш-функция, нет никакого способа взять чью-либо подпись с одного документа и прикрепить её к другому, или же любым образом изменить подписанное сообщение. Малейшее изменение в подписанном документе будет обнаружено в процессе сверки ЭЦП.
ЭЦП играют важнейшую роль в удостоверении и заверении ключей других пользователей PGP.
Цифровые сертификаты
Одна из главных проблем асимметричных криптосистем состоит в том, что пользователи должны постоянно следить, зашифровывают ли они сообщения истинными ключами своих корреспондентов. В среде свободного обмена открытыми ключами через общественные серверы-депозитарии атаки по принципу«человек посередине» представляют серьёзную потенциальную угрозу. В этом виде атак злоумышленник подсовывает пользователю собственный ключ, но с именем предполагаемого адресата; данные зашифровываются подставным ключом, перехватываются его владельцем-злоумышленником, попадая в итоге в чужие руки.
В среде криптосистем с открытым ключом критически важно, чтобы вы были абсолютно уверены, что открытый ключ, которым собираетесь что-то зашифровать – не искусная имитация, а истинная собственность вашего корреспондента. Можно попросту шифровать только теми ключами, которые были переданы вам их владельцами из рук в руки на дискетах. Но предположим, что нужно связаться с человеком, живущим на другом краю света, с которым вы даже незнакомы; как вы можете быть уверены, что получили его подлинный ключ?
Цифровые сертификаты ключей упрощают задачу определения принадлежности открытых ключей предполагаемым владельцам.
Сертификат есть форма удостоверения. Иные виды удостоверений включают ваши водительские права, государственный паспорт, свидетельство о рождении, и т. п. Каждое из них несёт некоторую идентифицирующую вас информацию и определённую неподделываемую запись, что кто-то другой (госструктура, организация) установил вашу личность. Некоторые сертификаты, такие как паспорт, – самодостаточное подтверждение вашей личности; будет довольно скверно, если кто-то похитит его, чтобы выдать себя за вас.
Цифровой сертификат в своём предназначении аналогичен физическому. Цифровой сертификат ключа – это информация, прикреплённая к открытому ключу пользователя, помогающая другим установить, является ли ключ подлинным и верным. Цифровые сертификаты нужны для того, чтобы сделать невозможной попытку выдать ключ одного человека за ключ другого.
Цифровой сертификат состоит из трёх компонентов:
открытого ключа, к которому он приложен;
данных, или записей, сертификата (сведения о личности пользователя, как то, имя, электронная почта и т. п., а также, по необходимости, дополнительные ограничителельные сведения: права допуска, рабочие лимиты и прочее);
одной или нескольких цифровых подписей, "связывающих" ключ с сертификатом.
Цель ЭЦП на сертификате – указать, что сведения сертификата были заверены доверенным третьим лицом или организацией. В то же время цифровая подпись не подтверждает достоверность сертификата как целого; она является поручительством только того, что подписанная запись сертификата (идентифицирующая информация) связаны с данным открытым ключом.
Таким образом, сертификат, обычно, – это открытый ключ с прикреплёнными к нему одной или несколькими формами ID плюс отметка подтверждения от доверенного лица, "связывающая" ID и открытый ключ.
Распространение сертификатов
Сертификаты применяются, когда нужно обменяться с кем-нибудь ключами. Небольшим группам людей, нуждающимся в защищённой связи, не составит труда просто передать друг другу дискеты или отправить электронные письма, содержащие копии их ключей.
Это – ручное распространение открытых ключей, и оно эффективно только до определённого этапа. Дальнейшее – за пределами возможностей данного метода, и тогда возникает необходимость развёртывания системы, которая бы обеспечивала достаточную надёжность и безопасность, предоставляла возможности хранения и обмена ключами, так что коллеги, бизнес-партнёры или незнакомцы смогли бы отправлять друг другу зашифрованные сообщения, если в том возникнет необходимость.
Такая система может реализоваться в форме простого хранилища-депозитария, называемого сервером сертификатов, или сервером-депозитарием открытых ключей, или иметь более сложную и комплексную структуру, предполагающую дополнительные возможности администрирования ключей, и называемую инфраструктурой открытых ключей(Public Key Infrastructure, PKI).
Серверы-депозитарииСервер-депозитарий, также называемый сервером сертификатов, или сервером ключей, – это сетевая база данных, позволяющая пользователям оставлять и извлекать из неё цифровые сертификаты. Сервер ключей также может иметь некоторые функции администрирования, помогающие организации поддерживать свою политику безопасности. Например, на хранение могут оставляться только ключи, удовлетворяющие определённым критериям.
Инфраструктуры открытых ключей (PKI)PKI, как и простой сервер-депозитарий, имеет базу данных для хранения сертификатов, но, в то же время, предоставляет сервисы и протоколы по управлению открытыми ключами. В них входят возможности выпуска (издания), отзыва (аннулирования) и системы доверия сертификатов. Главной же особенностью PKI является наличие компонентов, известных как Центр сертификации(Certification Authority, CA) и Центр регистрации (Registration Authority, RA).
Центр сертификации (ЦС) издаёт цифровые сертификаты и подписывает их своим закрытым ключом. Из-за важности своей роли, ЦС является главным компонентом инфраструктуры PKI. Используя открытый ключ ЦС, любой пользователь, желающий проверить подлинность конкретного сертификата, сверяет подпись Центра сертификации и, следовательно, удостоверяется в целостности содержащейся в сертификате информации и, что более важно, во взаимосвязности сведений сертификата и открытого ключа.
Как правило, Центром регистрации (ЦР) называется система людей, механизмов и процессов, служащая целям зачисления новых пользователей в структуру PKI и дальнейшего администрирования постоянных пользователей системы. Также ЦР может производить "веттинг" – процедуру проверки того, принадлежит ли конкретный открытый ключ предполагаемому владельцу.
ЦР – это человеческое сообщество: лицо, группа, департамент, компания или иная ассоциация. С другой стороны, ЦС – обычно, программа, выдающая сертификаты своим зарегистрированным пользователям. Существуют и защищённые от взлома аппаратные реализации ЦС, сооружённые из пуленепробиваемых материалов и снабжённые "красной кнопкой", аннулирующей в критической ситуации все выданные ключи.
Роль ЦР-ЦС аналогична той, что выполняет государственный паспортный отдел: одни его сотрудники проверяют, требуется ли выдача паспорта (работа ЦР), а другие изготовляют сам документ и передают его владельцу (работа ЦС). Наличие ЦР для ЦС не обязательно, но оно обеспечивает разделение функций, которое иногда необходимо.
Формат сертификатовЦифровой сертификат – это набор идентифицирующих сведений, связанных с открытым ключом и подписанных доверенным третьим лицом, дабы доказать их подлинность и взаимосвязность. Сертификат может быть представлен множеством различных форматов.
PGP поддерживает два формата сертификатов:
Сертификаты OpenPGP (чаще называемые просто ключами PGP)
Сертификаты X.509
Формат сертификата PGPСертификат PGP содержит, в частности, следующие сведения:
Открытый ключ владельца сертификата – открытая часть ключевой пары и её алгоритм: RSA v4, RSA Legacy v3, DH или DSA.
Сведения о владельце сертификата – информация, идентифицирующая личность пользователя: его имя, адрес электронной почты, номер ICQ, фотография и т. д.
ЭЦП владельца сертификата – подпись ключевой пары, связанной с сертификатом (т. н. автоподпись).
Период действия сертификата – дата начала действия сертификата и дата окончания его действия; указывает на то, когда сертификат станет недействительным (аналогично сроку действия водительских прав). Если ключевая пара содержит дополнительные подключи шифрования, то здесь будет указан период действия каждого из них.
Предпочтительный алгоритм шифрования – указывает на то, зашифрованную каким алгоритмом информацию предпочитает получать владелец сертификата. Поддерживаются следующие: CAST, AES, IDEA, Triple-DES и Twofish.
Вы можете представить сертификат PGP в виде открытого ключа с одной или несколькими привязанными к нему "бирками" (рис. 9). На этих "бирках" указана информация, идентифицирующая владельца ключа, а также подпись этого ключа, подтверждающая, что ключ и идентификационные сведения взаимосвязаны. (Этот вид подписи называется автоподписью (self-signature); её содержит каждый сертификат OpenPGP.)
Уникальный аспект формата сертификатов PGP в том, что каждый сертификат может содержать множество подписей. Любой человек может подписать идентификационно-ключевую пару, чтобы заверить, полагаясь на своё личное убеждение, что открытый ключ принадлежит именно указанному в ID пользователю. Если поищете на общественных серверах-депозитариях, то можете обнаружить некоторые ключи, как, например, принадлежащий автору PGP Филу Циммерману, содержащие огромное количество подписей.
Некоторые PGP-сертификаты состоят из открытого ключа с несколькими "бирками", каждая из которых содержит собственные сведения, идентифицирующие владельца ключа (например, имя владельца и его рабочий e-mail, прозвище владельца и его домашний e-mail, фотография владельца – всё на одном сертификате). Список подписей на каждой из "бирок" может быть различным; подписи указывают на достоверность определённой "бирки" и её принадлежность открытому ключу, а не на то, что все "бирки" достоверны. (Учтите, что "достоверность" зависит от установившего её: подписи – это мнения, и разные люди уделяют разную степень внимания проверке подлинности перед подписанием ключа.)
Формат сертификата Х.509Х.509 – это другой очень распространённый формат. Все сертификаты Х.509 соответствуют международному стандарту ITU-T X.509; таким образом (теоретически), сертификат Х.509, созданный для одного приложения, может быть использован в любом другом, поддерживающем этот стандарт. На практике, однако, сложилась ситуация, что разные компании создают собственные расширения для Х.509, не все из которых между собой совместимы.
Всякий сертификат требует, чтобы кто-то заверил взаимосвязность открытого ключа и идентифицирующей владельца ключа информации. Имея дело с PGP-сертификатом, каждый может выступать в качестве заверителя содержащихся в нём сведений (за исключением случаев, когда эта возможность намеренно ограничена политикой безопасности). Но в случае сертификатов Х.509 заверителем может быть только Центр сертификации или некто, специально уполномоченный им на эту роль. (Имейте в виду, что PGP-сертификаты также в полной мере поддерживают иерархическое структурирование системы доверия, использующее ЦС для удостоверения сертификатов.)
Сертификат Х.509 – это набор стандартных полей, содержащих сведения о пользователе или устройстве, и их соответствующий открытый ключ. Стардарт Х.509 определяет, какие сведения входят в сертификат и как они кодируются (формат данных).
Сертификат Х.509 содержит следующие сведения:
Версия Х.509 – указывает, на основе какой версии стандарта Х.509 построен данный сертификат, что определяет, какая информация может в нём содержаться.
Открытый ключ владельца сертификата – открытый ключ наряду с идентификатором используемого алгоритма (указывающим криптосистему, к которой принадлежит данный ключ) и прочая информация о параметрах ключа.
Серийный номер сертификата – организация-издатель сертификата обязана присвоить ему уникальный серийный (порядковый) номер для его опознавания среди прочих сертификатов, выданных данной организацией. Эта информация применяется в ряде случаев; например, при аннулировании сертификата, его серийный номер помещается в список аннулированных сертификатов (Certificate Revocation List, CRL).
Уникальный опознаватель владельца ключа (или DN, distinguished name – уникальное имя) – это имя должно быть уникальным и единственным во всём Интернете. DN состоит из нескольких подпунктов и может выглядеть примерно так:
CN=Bob Davis, [email protected], OU=PGP Engineering,
O=PGP Corporation, C=US
(Что обозначает Понятное имя субъекта, Электронную почту, Подразделение организации, Организацию и Страну соответственно.)
Период действия сертификата – дата начала действия сертификата и дата окончания его действия; указывает на то, когда сертификат станет недействителен.
Уникальное имя издателя – уникальное имя организации, подписавшей сертификат. Обычно, это наименование Центра сертификации. Использование сертификата подразумевает доверие организации, его подписавшей. (В случаях с корневыми сертификатами выдавшая организация – этот же ЦС – подписывает его сама.)
ЭЦП издателя – электронная подпись, созданная закрытым ключом организации, выдавшей сертификат. Идентификатор алгоритма подписи – указывает алгоритм, использованный ЦС для подписания сертификата.
Существует ряд фундаментальных различий между форматами сертификатов Х.509 и PGP:
вы можете лично создать собственный сертификат PGP;
вы должны запросить и получить сертификат Х.509 от Центра сертификации; сертификаты Х.509 содержат только одно имя владельца сертификата;
сертификаты Х.509 содержат только одну ЭЦП, подтверждающую подлинность сертификата.
Чтобы получить сертификат Х.509, вы должны попросить ЦС выдать его вам. Вы предоставляете системе свой открытый ключ, чем доказываете, что обладаете соответствующим закрытым, а также некоторые идентифицирующие вас сведения. Затем вы электронно подписываете эти сведения и отправляете весь пакет – запрос сертификата – в Центр сертификации. ЦС выполняет определённый процесс по проверке подлинности предоставленной информации и, если всё сходится, создаёт сертификат, подписывает и возвращает вам.
Вы можете представить сертификат Х.509, как обычный бумажный сертификат или аттестат с приклеенным к нему открытым ключом. На нём указано ваше имя, а также некоторые сведения о вас, плюс подпись издателя сертификата.
Вероятно, наибольшая польза от сертификатов Х.509, это их применение в Веб-браузерах.
Подлинность и довериеЛюбой пользователь в среде криптосистем с открытым ключом рискует рано или поздно принять по неосторожности поддельный ключ (сертификат) за настоящий. Достоверность (подлинность) состоит в том, что конкретный открытый ключ принадлежит именно тому владельцу, чья идентификационная информация указана в сертификате ключа. Подлинность является одним из важнейших критериев в среде системы открытых ключей, где вы должны определять аутентичность каждого конкретного сертификата.
Убедившись, что чужой открытый ключ достоверен (то есть действительно принадлежит именно предполагаемому владельцу), вы можете подписать копию этого ключа на своей связке, чем засвидетельствуете факт, что вы его проверили и нашли достоверным. Если захотите, чтобы другие знали вашу степень доверия этому сертификату, вы можете экспортировать свою подтверждающую подпись на сервер-депозитарий с тем, чтобы другие могли её видеть и могли на неё положиться при определении подлинности этого ключа.
Как было описано в параграфе "Инфраструктуры открытых ключей (PKIs)", некоторые компании уполномочивают один или несколько Центров сертификации (ЦС) на проверку подлинности сертификатов. В организации, использующей PKI с сертификатами Х.509, задача Центров регистрации состоит в приёме запросов на сертификаты, а задача Центров сертификации – в выдаче сертификатов конечным пользователям: процесс ответа на запрос пользователя на получение сертификата. В организации, использующей сертификаты PGP без PKI, задача ЦС – в проверке достоверности всех PGP-сертификатов и подписании подлинных. Как правило, основная цель ЦС – собственной подписью "связать" открытый ключ с идентификационной информацией, содержащейся в сертификате, чем заверить третьих лиц, что были приняты определённые меры по установлению связи между ключом и идентификационными сведениями.
Центр сертификации в организации – это краеугольный камень системы подлинности и доверия; в некоторых организациях, как, например, в тех, которые используют PKI, ни один сертификат не считается подлинным, пока не будет подписан доверенным ЦС.
Проверка подлинностиОдин из способов определения подлинности сертификата – некоторая механическая процедура. Существует несколько методик её проведения. Например, вы можете попросить своего корреспондента передать копию его открытого ключа «физически», то есть вручить на жёстком носителе – магнитном или оптическом диске и т. п. Но зачастую это бывает неудобно и неэффективно.
Другой вариант – сверить отпечаток (fingerprints) сертификата. Насколько уникальны отпечатки пальцев людей, настолько же уникальны и отпечатки каждого сертификата PGP. Отпечаток – это хэш-значение сертификата пользователя, которое показано как одно из его свойств. В PGP отпечаток может быть представлен или как шестнадцатеричное число, или как набор так называемых биометрических слов, фонетически чётких и применяемых для упрощения вербальной идентификации отпечатка.
Вы можете определить подлинность сертификата позвонив владельцу ключа (таким образом, что вы начнёте коммуникацию) и попросив его прочитать отпечаток с его ключа; вам же нужно сверить этот отпечаток против того, который находится на полученной вами копии. Такой способ допустим, если вам знаком голос корреспондента, но как вы установите личность того, с кем даже незнакомы? Некоторые с этой целью помещают отпечатки ключей на свои визитные карточки.
Ещё один метод определения подлинности чужого сертификата – положиться на мнение третьей стороны, уже установившей его подлинность.
ЦС, например, ответственен за детальную проверку принадлежности открытого ключа предполагаемому владельцу перед выдачей ему сертификата. Любой пользователь, доверяющий ЦС, будет автоматически расценивать подлинными все сертификаты, подписанные ЦС.
Параллельный аспект проверки подлинности и достоверности состоит в том, чтобы убедиться, что сертификат не был аннулирован (отозван). За дополнительной информацией по этому вопросу обращайтесь к параграфу "Аннулирование сертификата".