Цифровые сертификаты X.509
X.509 — это стандарт инфраструктуры открытых ключей (PKI), определяющий формат цифровых сертификатов, списков отзыва сертификатов (CRL) и алгоритмы проверки подлинности владельца открытого ключа. Стандарт разработан Международным союзом электросвязи (ITU-T) и широко применяется в протоколах TLS/SSL (HTTPS), электронной подписи, аутентификации в сетях и шифровании электронной почты (S/MIME).
История и развитие
Стандарт X.509 был впервые опубликован в 1988 году как часть рекомендаций X.500 по службам каталогов. Изначально он предназначался для аутентификации пользователей в распределённых системах каталогов. В 1993 году вышла версия 2, которая добавила поля для уникальных идентификаторов субъекта и эмитента. Наиболее значимой стала версия 3 (1996 год), которая ввела расширения — гибкий механизм для добавления дополнительной информации (например, использования ключа, политик сертификата, альтернативных имён субъекта). Версия 3 является основой современных PKI.
Стандарт X.509 прошёл несколько редакций (2000, 2005, 2012, 2019 годы), в которых уточнялись криптографические алгоритмы, форматы расширений и процедуры проверки. Наиболее актуальной является версия ITU-T X.509 (10/2019), которая гармонизирована с международным стандартом ISO/IEC 9594-8.
Структура сертификата X.509
Цифровой сертификат X.509 представляет собой структурированный набор полей, закодированных в формате ASN.1 (Abstract Syntax Notation One) и обычно передаваемых в двоичном формате DER (Distinguished Encoding Rules) или текстовом формате PEM (Privacy-Enhanced Mail).
Основные поля сертификата версии 3:
- Версия (Version): номер версии (1, 2 или 3). Современные сертификаты используют версию 3.
- Серийный номер (Serial Number): уникальное целое число, присваиваемое удостоверяющим центром (УЦ) каждому выпущенному сертификату.
- Идентификатор алгоритма подписи (Signature Algorithm Identifier): алгоритм, которым УЦ подписал сертификат (например, sha256WithRSAEncryption, ecdsa-with-SHA256).
- Имя эмитента (Issuer Name): уникальное имя (Distinguished Name, DN) удостоверяющего центра, выпустившего сертификат.
- Период действия (Validity): дата и время начала и окончания действия сертификата.
- Имя субъекта (Subject Name): уникальное имя владельца сертификата (например, доменное имя для веб-сервера, или имя организации для пользователя). Для сертификатов веб-сайтов часто используется поле Subject Alternative Name (SAN).
- Открытый ключ субъекта (Subject Public Key Info): алгоритм (например, RSA, ECDSA) и само значение открытого ключа.
- Уникальные идентификаторы (Unique Identifiers): поля, введённые в версии 2, для различения субъектов и эмитентов в случае повторного использования имён (в версии 3 используются редко).
- Расширения (Extensions): набор дополнительных полей, определённых в версии 3. Ключевые расширения:
- Key Usage: определяет разрешённые операции для ключа (цифровая подпись, шифрование ключа, шифрование данных, заверение сертификатов и т.д.).
- Extended Key Usage: уточняет назначение ключа (например, TLS Web Server Authentication, TLS Web Client Authentication, Code Signing, Email Protection).
- Subject Alternative Name (SAN): позволяет указать альтернативные имена (домены, IP-адреса, email-адреса). Современные браузеры требуют указания доменов в SAN, а не в Subject.
- Basic Constraints: указывает, является ли субъект удостоверяющим центром (CA:TRUE) и глубину цепочки сертификации.
- CRL Distribution Points: указывает URL, по которому можно получить список отзыва сертификатов (CRL).
- Authority Information Access (AIA): содержит URL для получения сертификата эмитента (OCSP-ответчика) и сертификата УЦ.
- Подпись эмитента (Signature): цифровая подпись, созданная УЦ с использованием его закрытого ключа, которая подтверждает подлинность всего содержимого сертификата.
Цепочка сертификации (Chain of Trust)
Сертификаты X.509 образуют иерархическую структуру доверия. Существует три основных типа сертификатов в цепочке:
- Корневой сертификат (Root Certificate): самоподписанный сертификат, выпущенный корневым удостоверяющим центром. Он является вершиной доверия и обычно предустановлен в операционные системы, браузеры или доверенные хранилища.
- Промежуточные сертификаты (Intermediate Certificates): сертификаты, выпущенные корневым УЦ для подчинённых УЦ. Они используются для снижения риска компрометации корневого ключа и для управления иерархией.
- Конечный сертификат (End-entity Certificate / Leaf Certificate): сертификат, выданный конечному пользователю, веб-серверу или устройству. Он не может выпускать другие сертификаты.
Процесс проверки цепочки: проверяющая сторона (например, браузер) последовательно проверяет подпись каждого сертификата, начиная с конечного и заканчивая корневым. Если все подписи верны, цепочка считается доверенной.
Списки отзыва сертификатов (CRL)
Список отзыва сертификатов (Certificate Revocation List, CRL) — это подписанный список серийных номеров сертификатов, которые были отозваны до истечения срока действия. CRL публикуется УЦ и содержит:
- Дата и время последнего обновления (This Update).
- Дата и время следующего запланированного обновления (Next Update).
- Список отозванных сертификатов с указанием даты отзыва и причины (например, компрометация ключа, смена должности, прекращение деятельности).
CRL может быть полным (все отозванные сертификаты) или дельта-списком (только изменения с момента предыдущего полного списка). Недостаток CRL — размер (может быть очень большим) и задержка между отзывом и публикацией.
Протокол OCSP
Протокол статуса сертификата в реальном времени (Online Certificate Status Protocol, OCSP) — альтернатива CRL, позволяющая получить статус одного сертификата в реальном времени. Клиент отправляет запрос с серийным номером сертификата, а OCSP-ответчик возвращает один из трёх ответов: «хороший» (good), «отозван» (revoked) или «неизвестен» (unknown). OCSP быстрее и эффективнее CRL, но требует постоянной доступности OCSP-сервера.
Применение сертификатов X.509
Сертификаты X.509 используются в различных областях:
- TLS/SSL (HTTPS): аутентификация веб-серверов и обеспечение шифрования соединения. Браузеры проверяют сертификат сервера, чтобы убедиться, что пользователь подключился к подлинному сайту.
- Электронная подпись: создание и проверка электронных подписей документов (например, в форматах PKCS#7/CMS, XMLDSig). Сертификат удостоверяет личность подписывающего.
- Шифрование электронной почты (S/MIME): шифрование и подписание писем. Сертификаты содержат открытые ключи для шифрования и подписи.
- Аутентификация в сетях: протоколы EAP-TLS (в Wi-Fi), IPSec, SSH (с использованием сертификатов) и другие.
- Кодовая подпись (Code Signing): подписание исполняемых файлов, драйверов и скриптов для подтверждения их подлинности и целостности.
- Электронные паспорта и удостоверения личности: биометрические паспорта (ePassports) и национальные удостоверения часто содержат сертификат X.509 для проверки подлинности данных.
- Инфраструктура открытых ключей (PKI): сертификаты являются основным элементом PKI, обеспечивающим управление ключами, их выпуск, отзыв и проверку.
Критика и ограничения
Основные недостатки и критика X.509:
- Сложность управления: поддержка PKI требует значительных административных усилий (выпуск, обновление, отзыв сертификатов).
- Уязвимость УЦ: компрометация корневого или промежуточного УЦ позволяет злоумышленнику выпускать поддельные сертификаты для любых доменов (атака «человек посередине»). Известные инциденты: DigiNotar (2011), Comodo (2011), Symantec (2017).
- Зависимость от доверенных хранилищ: доверие к сертификатам основано на предустановленных корневых сертификатах в операционных системах и браузерах. Если корневой сертификат скомпрометирован или удалён, все выпущенные им сертификаты становятся недействительными.
- Проблемы с отзывом: CRL и OCSP не всегда работают надёжно. OCSP-серверы могут быть недоступны, а CRL — устаревшими. Браузеры часто используют «мягкий отказ» (soft-fail), при котором недоступность OCSP не блокирует соединение, что снижает безопасность.
- Сложность цепочек: длинные цепочки сертификатов (корневой → промежуточный → конечный) увеличивают время проверки и размер передаваемых данных.
Будущее и альтернативы
Развитие X.509 связано с внедрением квантово-устойчивых криптографических алгоритмов (Post-Quantum Cryptography, PQC) в стандарты PKI. В 2024 году Национальный институт стандартов и технологий США (NIST) опубликовал первые стандарты PQC, которые постепенно будут интегрированы в X.509.
Альтернативой X.509 является модель доверия на основе веб-доверия (Web of Trust) в PGP/GPG, где доверие устанавливается не через иерархию УЦ, а через взаимные подписи пользователей. Однако X.509 остаётся доминирующим стандартом для массовых PKI благодаря централизованному управлению и широкой поддержке в программном обеспечении.
Источники
- ITU-T Recommendation X.509 (10/2019) — Information technology — Open Systems Interconnection — The Directory: Public-key and attribute certificate frameworks.
- RFC 5280 — Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile.
- RFC 6960 — X.509 Internet Public Key Infrastructure Online Certificate Status Protocol — OCSP.
- Национальный институт стандартов и технологий (NIST) — Post-Quantum Cryptography: Final Standards (2024).
- Адам Лэнгли, «Инциденты с УЦ: DigiNotar, Comodo, Symantec» (блог Google Security).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →