Инфраструктура открытых ключей
Шифрование с открытым ключом (также называемое шифрованием с асимметричным ключом) использует пару ключей для шифрования и расшифровки содержимого. Пара ключей состоит из одного открытого и одного закрытого ключей, которые математически связаны. Пользователь, который намерен безопасно общаться с другими пользователями, может распространять открытый ключ , но должен хранить закрытый ключ в секрете. Содержимое, зашифрованное с помощью одного из ключей, можно расшифровать с помощью другого. Предположим, например, что Боб хочет отправить безопасное сообщение электронной почты Алисе. Это можно сделать следующим образом:
- У Боба и Алисы есть свои пары ключей. Они сохранили свои закрытые ключи безопасно для себя и отправили свои открытые ключи непосредственно друг другу.
- Боб использует открытый ключ Алисы для шифрования сообщения и отправляет его ей.
- Алиса использует свой закрытый ключ для расшифровки сообщения.
В этом упрощенном примере показана по крайней мере одна очевидная проблема, связанная с открытым ключом, который он использовал для шифрования сообщения. То есть, он не может с уверенностью знать, что ключ, который он использовал для шифрования, на самом деле принадлежал Алисе. Возможно, другая сторона, следя за каналом связи между Бобом и Алиса, заменила другой ключ.
Концепция инфраструктуры открытых ключей изменилась для решения этой и других проблем. Инфраструктура открытых ключей (PKI) состоит из программных и аппаратных элементов, которые доверенное третье лицо может использовать для установления целостности открытого ключа и владения им. Доверяющая сторона, называемая центром сертификации (ЦС), обычно выполняет эту задачу, выдавая подписанные (зашифрованные) двоичные сертификаты, которые подтверждают удостоверение субъекта сертификата и привязывают это удостоверение к открытому ключу, содержательному в сертификате. ЦС подписывает сертификат с помощью закрытого ключа. Он выдает соответствующий открытый ключ всем заинтересованным сторонам в самозаверяющем сертификате ЦС. При использовании ЦС предыдущий пример можно изменить следующим образом:
- Предположим, что ЦС выдал подписанный цифровой сертификат, содержащий его открытый ключ. ЦС самостоятельно подписывает этот сертификат с помощью закрытого ключа, соответствующего открытому ключу в сертификате.
- Алиса и Боб соглашаются использовать ЦС для проверки своих удостоверений.
- Алиса запрашивает сертификат открытого ключа из ЦС.
- ЦС проверяет свою личность, вычисляет хэш содержимого, из которого будет входить сертификат, подписывает хэш с помощью закрытого ключа, соответствующего открытому ключу в опубликованном сертификате ЦС, создает новый сертификат путем объединения содержимого сертификата и подписанного хэша, а также делает новый сертификат общедоступным.
- Боб извлекает сертификат, расшифровывает подписанный хэш с помощью открытого ключа ЦС, вычисляет новый хэш содержимого сертификата и сравнивает два хэша. Если хэши совпадают, подпись проверяется, и Боб может предположить, что открытый ключ в сертификате действительно принадлежит Алисе.
- Боб использует проверенный открытый ключ Алисы для шифрования сообщения.
- Алиса использует свой закрытый ключ для расшифровки сообщения от Боба.
Таким образом, процесс подписи сертификата позволяет Бобу убедиться, что открытый ключ не был изменен или поврежден во время передачи. Перед выдачей сертификата ЦС хэширует содержимое, подписывает (шифрует) хэш с помощью собственного закрытого ключа и включает зашифрованный хэш в выданный сертификат. Боб проверяет содержимое сертификата, расшифровывая хэш с помощью открытого ключа ЦС, выполняя отдельный хэш содержимого сертификата и сравнивая два хэша. Если они совпадают, Боб может быть уверен, что сертификат и содержащийся в нем открытый ключ не были изменены.
Типичная PKI состоит из следующих элементов.
Элемент | Описание |
---|---|
Центр сертификации |
Выступает в качестве корня доверия в инфраструктуре открытых ключей и предоставляет службы, которые проверяют подлинность удостоверений отдельных лиц, компьютеров и других сущностей в сети. |
Центр регистрации |
Сертифицирован корневым ЦС для выдачи сертификатов для определенных применений, разрешенных корнем. В PKI Майкрософт центр регистрации (RA) обычно называется подчиненным ЦС. |
База данных сертификатов |
Сохраняет запросы на сертификаты, выданные и отозванные сертификаты и запросы сертификатов в ЦС или RA. |
Хранилище сертификатов |
Сохраняет выданные сертификаты и ожидающие или отклоненные запросы на сертификаты на локальном компьютере. |
Сервер архивации ключей |
Сохраняет зашифрованные закрытые ключи в базе данных сертификатов для восстановления после потери. |
API регистрации сертификатов позволяет отправлять запросы на архивацию сертификатов и ключей в центры сертификации и регистрации и устанавливать выданный сертификат на локальном компьютере. Он не позволяет напрямую управлять базой данных сертификатов или хранилищем сертификатов.
В следующих разделах более подробно рассматривается инфраструктура открытых ключей Майкрософт.