Что такое PKI и зачем целая инфраструктура
Сама по себе пара из открытого и закрытого ключей мало что решает. Пока нет способа надёжно узнать, чей именно открытый ключ у вас в руках, любой может выдать чужой ключ за свой. PKI, от английского public key infrastructure, объединяет всё, что нужно для решения этой задачи: правила, роли, программы и хранилища, которые связывают ключи с личностями и устройствами.
Можно сравнить с системой паспортов. Сам бланк паспорта ничего не доказывает, важны орган выдачи, правила проверки личности, защита от подделок, списки недействительных документов и служба, которая их проверяет. В PKI роль паспорта играет сертификат стандарта X.509.
Базовые понятия о самих ключах вы найдёте в статье об открытом и закрытом ключе, а здесь разбираем то, что стоит вокруг них.
Из каких компонентов состоит
Центр сертификации подписывает сертификаты, о его работе подробно написано в отдельной статье. Центр регистрации проверяет заявителей и передаёт запросы на выдачу, в небольших системах его функцию выполняет сам CA. Репозиторий или каталог хранит выданные сертификаты и списки отзыва, чтобы их можно было найти.
Служба проверки статуса отвечает на вопрос, не отозван ли сертификат: для этого используют списки CRL и протокол OCSP. Наконец, есть документы, которые описывают правила: как проверяется личность, как хранятся ключи, что делать при компрометации. Без этих политик техническая часть теряет смысл, потому что доверие строится на процедурах не меньше, чем на алгоритмах.
Клиентская сторона тоже входит в инфраструктуру: хранилища доверенных корней и алгоритм построения цепочки, разобранный на странице про цепочку доверия.
Публичная и частная PKI
Публичная PKI обслуживает интернет: центры сертификации, которым доверяют браузеры, подписывают сертификаты сайтов. Правила задают отраслевые форумы, а контроль ведут аудиторы и сами разработчики браузеров.
Частная PKI разворачивается внутри организации. Компания поднимает собственный центр сертификации и выдаёт сертификаты серверам, ноутбукам, точкам доступа и сотрудникам. Такой корень нужно добавить на устройства, которые должны ему доверять. Плюс частной схемы в полном контроле над политиками и сроками, минус в том, что вся ответственность за безопасность корневого ключа лежит на самой организации.
Типичный внутренний пример — вход в корпоративную сеть по сертификату устройства вместо пароля, что связано с технологией WPA-Enterprise.
Где ещё применяется
Помимо HTTPS, инфраструктура ключей стоит за многими вещами. Подпись программ и драйверов позволяет системе отличить установщик издателя от подделки. Защищённая почта S/MIME использует сертификаты для подписи и шифрования писем. Электронные документы и квалифицированная подпись опираются на удостоверяющие центры. Смарт-карты и токены хранят закрытые ключи в аппаратной форме.
В VPN-соединениях и в сетевых стандартах вроде IPsec сертификаты тоже могут применяться вместо общего пароля: каждая сторона предъявляет сертификат, и обе проверяют его по общему корню. Для устройств интернета вещей выдают сертификаты при производстве, чтобы они могли подтверждать, что подлинны.
Слабые места и как посмотреть у себя
Слабое место PKI — доверие к центрам сертификации. Любой центр из доверенного списка технически способен выдать сертификат на любой домен, поэтому ошибка или взлом одного центра затрагивает всех. Меры защиты: журналы Certificate Transparency, ограничение выдачи с помощью DNS-записей CAA и постоянное сокращение срока жизни сертификатов.
Сложности возникают и в эксплуатации: забытые сертификаты с истёкшим сроком регулярно становятся причиной сбоев служб. Поэтому автоматизация выпуска и продления, как в Let's Encrypt, стала стандартом.
Посмотреть, что доверено вашему устройству, можно в Windows через certmgr.msc, в macOS через «Связку ключей», в Firefox в настройках сертификатов. Полезно просмотреть список и убедиться, что там нет незнакомых корней.
Жизненный цикл сертификата
У каждого сертификата есть цикл: генерация ключей, запрос, проверка заявителя, выдача, использование, продление и, наконец, отзыв или истечение. Ошибки на любом этапе создают риск. Ключ, созданный на ненадёжной машине, может быть скомпрометирован ещё до выдачи. Забытый сертификат без продления приводит к простою. Неотозванный после увольнения сотрудника сертификат оставляет доступ. Поэтому зрелые организации ведут инвентаризацию сертификатов, ставят напоминания и автоматизируют продление, а закрытые ключи важнейших центров держат отключёнными от сети и используют лишь на торжественных церемониях подписи.