Терминология PKI

Из всего выше сказанного можно выделить некоторые пункты, а также добавить новые, для того чтобы определить основные термины, используемые в PKI. Итак, в PKI используются термины:

Сертификат открытого ключа

Электронный документ, удостоверенный электронной подписью удостоверяющего центра, содержащий открытый ключ, информацию о сроке его действия и владельце ключа.

Закрытый ключ

Ключ, известный только его владельцу, сгенерированный с помощью асимметричного криптографического алгоритма, использующийся для электронной подписи данных и расшифровки данных зашифрованных на соответствующем этому закрытому ключу открытом ключе.

Открытый ключ

Ключ, создаваемый в паре с закрытым ключом с помощью асимметричного криптографического алгоритма, используется для шифрования данных и проверки электронной подписи.

Отпечаток открытого ключа (fingerprint/thumbprint)

Информация, по которой можно идентифицировать открытый ключ. Отпечаток создаётся путём применения криптографической хеш-функции к значению открытого ключа.

Подписанные данные

Данные, подписанные при помощи закрытого ключа пользователя.

Зашифрованные данные

Данные, зашифрованные при помощи открытого ключа пользователя.

Путь доверия

Цепочка документов, которая позволяет удостовериться, что предъявленный сертификат был выдан доверенным центром; последним звеном в этой цепочке является предъявленный сертификат, начальным — сертификат корневого доверенного центра сертификации, а промежуточными — сертификаты, выданные промежуточным центрам сертификации. Особенностью пути доверия является то, что при потере доверия к начальному звену цепочки (корневому центру сертификации) теряется доверие ко всей цепочке, то есть ко всем выданным данным центром сертификатам и к предъявленному в том числе.

Личные сертификаты

Сертификаты которые хранятся у пользователя в личном хранилище сертификатов.

Корневые центры сертификации

Центры сертификации, которым доверяют изначально все, либо руководствуясь политикой предприятия, либо из-за предустановленных настроек хранилища сертификатов, и которые могут находиться в начале пути доверия.

Доверенные центры сертификации

Список центров сертификации, которым доверяют владельцы сертификатов. Чтобы сделать какой-либо центр доверенным, достаточно получить от него сертификат и внести его в список доверенных центров.

PKI

Концепции PKI

Помимо криптографии, PKI использует два очень важных понятия (эти понятия не относятся к криптографии, это понятия из «реального мира»): идентичность и доверие.
Идентичность — набор данных о субъекте (не обязательно человеке), позволяющий отличить субъекта от всех остальных возможных субъектов. Это может быть набор паспортных данных (вполне себе идентичность человека) или реквизиты юрлица (аналогично, но для организаций). А ещё это может быть емейл. Глупо? Зато удобно. В суде такое не примут, а вот в большинстве других случаев (например, при шифровке переписки) — емейла вполне достаточно. Ведь он позволяет однозначно отличить один емейл от другого.
Собственно, те, кто выступает в качестве субъектов криптографии (то есть тех, кто что-то подписывает, шифрует, прячет и т. д.), так и называют субъект криптографии.
Доверие — это фундаментальная идея всей инфраструктуры открытых ключей. Все связи внутри инфраструктуры — это указание на то, кто кому что и как доверяет . Точно определить термин «доверие» сложно, и для практических нужд PKI используется следующая: «А доверяет Б, если поведение Б соответствует ожидаемому А». Другими словами, если мы кому-то доверяем (деньги), то мы уверены, что этот человек будет себя вести так, как мы ожидаем (в хорошем смысле).
Заметим, что доверие редко бывает всеобщим. Обычно мы доверяем в каком-то конкретном вопросе (или наборе вопросов).
Эти два понятия «идентичность» и «доверие» являются основой для построения PKI.

Сертификат

Определение сертификата очень простое:
Сертификат — подписанная доверенной стороной связь между идентичностью и её открытым ключом (-ами).
На самом деле в этом определении очень много того, о чём мы пока не говорили. Оставим в стороне «подписанная доверенной стороной» (об этом позже). Сфокусируемся на «связь между идентичностью и открытым ключом».
Фактически, сертификат — это ключ, к которому дописали, чей это ключ. Мы открываем сертификат и видим, что он принадлежит Васе Пупкину. Значит, подписи сообщения от Васи Пупкина следует проверять указанным открытым ключом, и шифровать письма Васе Пупкину надо так же этим открытым ключом.
Однако, просто указание на имя (емейл) и открытый ключ не достаточно — такая конструкция ничем не отличается от предыдущей (электронное письмо «мой открытый ключ XXX-XXX-XXX-XXX, С уважением, Вася Пупкин»). Нужны какие-то объективные доказательства того, что ключ Васи Пупкина — это таки ключ Васи Пупкина. И Вася Пупкин — это именно ТОТ Вася, о котором мы думаем.
В принципе, если подумать, то если связь «вася пупкин + открытый ключ» подпишет кто-то из тех, чей ключ мы знаем (уже), то это добавит нам уверенности. Но только в том случае, если этот «кто-то» нам знаком и мы ему доверяем. А если нет?
Было бы неплохо иметь аналог нотариальной конторы, которая бы могла заверять связь идентичности и ключа. Нотариусу мы доверяем, значит, мы можем быть уверены, что ключ принадлежит именно тому, чья идентичность указана в сертификате.

Центры доверия

Обобщённая концепция нотариуса нас приводит к следующему понятию:
Удостоверяющий центр (УЦ) (англ. Certificate authority) — точка доверия, которая подписывает сертификаты. (то самое «…подписанная доверенной стороной…» из определения сертификата). В чём доверяют УЦ? Это вопрос очень сложный и о нём мы поговорим много позже, пока, для удобства изложения, будем считать, что как минимум, доверяют правильности заполнения полей, описывающих идентичность в сертификате. То есть УЦ действительно подтверждает, что сертификат, выданный на имя Васи Пупкина выдан именно Васе Пупкину.
Кстати, нетривиальный момент: что означает «выдан?» (ведь сертификат, как и открытый ключ, вероятнее всего, будет публично доступен) Есть ли разница, кому именно отдадут файл сертификата?
Выдача сертификата — это заверение цифровой подписью открытого ключа и идентичности. Другими словами, «выдача сертификата», это не передача каких-то данных, а проверка, что у Васи Пупкина есть закрытый ключ, соответствующий открытому ключу в сертификате. В первом (грубом) приближении, УЦ делает две вещи: проверяет (например) паспортные данные Васи Пупкина и проверяет, что Вася Пупкин имеет закрытый ключ, соответствующий открытому ключу, добавляемому в сертификат.
Об УЦ мы будем ещё много говорить (там есть много сложностей и нюансов), а пока примем как грубую модель, что УЦ связывает идентичность и открытый ключ.
Сертификат УЦ. Есть ещё один важный момент. УЦ подписывает сертификат своим закрытым ключом. Мы хотим проверить сертификат. Это значит, что мы должны иметь открытый ключ УЦ (ну, или, точнее, его сертификат). Откуда он у нас? Есть два варианта:
1. Сертификат УЦ подписан другим УЦ (да, так может быть). А сертификат того УЦ подписан третьим УЦ. И так до бесконечности? Нет.
2. Сертификат УЦ может быть подписан самим УЦ. (конец цепочки).

Удостоверяющие центры и сертификаты

Как было сказано раньше, у нас не существует методов доказать, что подпись «а» была его подписью на момент получения нами подписанного неким ключом документа. Хотя… В жизни, мы можем распечатать хэш открытого ключа, и у нотариуса, с подписью (а то и личным участием) обладателя закрытого ключа заверить её.
Передовое решение эпохи электронного документооборота, да. (Примерно так же бывает, когда выборку данных сначала распечатывают, потом заверяют печатью, отправляют, получатель эту распечатку сканирует, распознаёт, вбивает в свою базу данных. Глупо и неэффективно).
Куда интереснее будет, если нотариус заверит ключи отправителя в электронном виде. Своим, электронным ключом. Который мы знаем. На момент подписания (в электронном виде) документа, мы проверим, что ключ, которым подписан, заверен нотариусом. Если человек, подписывавший документ, будет отрицать, что подпись его, то нотариус, заверявший её, сможет подтвердить, что это таки подпись обвиняемого.
Заметим, чтобы мы могли проверить, что ключ «а» действительно принадлежит человеку «А», мы должны увидеть не только подпись нотариуса на проверяемых ключах, но и явное доказательство, что эти ключи принадлежат «А». То есть нотариус должен подписать не только открытый ключ (закрытый подписывать не нужно, так как закрытый ключ НИКОМУ не показывается, даже нотариусу), но и какую-то информацию об А. Например, его паспортные данные. Или другую идентичность.
Важно: мы должны ДОВЕРЯТЬ (в том смысле, как было описано ранее) нотариусу, то есть нотариус ведёт себя так, как мы от него ожидаем: он заверяет идентичность и подпись только проверив их (если нотариус заверит идентичность и подпись не проверив их, то он не оправдает нашего доверия). В принципе, документ подписывается обеими сторонами, то есть подписывающий тоже должен доверять тому нотариусу, который заверил наши ключи. Проще всего, если это один и тот же нотариус.
Так вот, важно: связь идентичности и открытых ключей называется СЕРТИФИКАТОМ. А тот, кто подписывает эту связь (и проверяет, что идентичность — это идентичность) называется УДОСТОВЕРЯЮЩИМ ЦЕНТРОМ. Понятно, что мы должны доверять удостоверяющему центру, если хотим проверять сертификаты, которые он подписал.
Но нотариусов же много! Один заверился в юр.конторе возле дома, второй возле дома. А живут — на разных концах города. Нам надо иметь открытые ключи всех нотариусов, чтобы проверять все возможные подписи? Глупо.
А что, если мы будем иметь единственный сертификат адвокатской коллегии, ключом которого подписываются сертификаты нотариусов, которые, в свою очередь, подписывают сертификаты людей (организаций)? Это будет удобнее.
Это — и есть иерархия удостоверяющих центров. Удостоверяющий центр заверяет подпись и идентичность нотариуса (и, это важно, указывает, что это нотариус, то есть лицо, имеющее право заверять чужие подписи). Нотариус заверяет ключи и идентичность персоны, однако, указывает, что этими ключами можно только подписывать договора (а вот заверять чужие сертификаты уже нельзя). Почему он это делает? Потому что он НЕ ДОВЕРЯЕТ лицам (у них нет нужной квалификации). Зато мы ему (нотариусу) доверяем. Почему? Потому что он не делает глупостей, а все его заверения — истины и могут быть приняты в суде.
Таким образом, всем жителям города достаточно иметь один сертификат для проверки подписей. Проверка выглядит так: получить сертификат, которым подписывали документ (сертификаты могут свободно распространяться, потому что не содержат в себе закрытых ключей). Проверить, что сертификат подписан кем-то (нотариусом?). Проверить, что сертификат нотариуса заверен адвокатской палатой. Если всё правильно, то есть сертификат признан годным, то мы проверяем, что подпись на документе подлинная и точно знаем, что это именно та подпись именно того лица, о котором написано в сертификате.
Вот эти отношения доверия — и есть суть PKI. PKI — это не процесс подписи, это процесс проверки того, что подпись принадлежит именно тому лицу, которое должно было подписать документ. Для этого используются удостоверяющие центры, которым мы доверяем.

Top