Шифрование X.509
X.509 — это стандарт инфраструктуры открытых ключей (PKI), определяющий формат сертификатов открытых ключей, а также алгоритмы проверки подлинности и управления сертификатами. Стандарт разработан Международным союзом электросвязи (ITU-T) и опубликован в 1988 году как часть серии рекомендаций X.500, касающихся служб каталогов. X.509 является основой для обеспечения безопасности в протоколах TLS/SSL, S/MIME, IPsec и многих других системах, требующих аутентификации и шифрования.
История и развитие
Первая версия стандарта X.509 была выпущена в 1988 году в рамках рекомендации ITU-T X.500, описывающей службы каталогов. Изначально сертификаты содержали базовый набор полей: версия, серийный номер, алгоритм подписи, издатель, срок действия, субъект, открытый ключ и подпись. Однако практическое применение выявило необходимость в расширяемости.
В 1993 году вышла версия 2 (X.509v2), которая добавила поля для идентификаторов уникальности субъекта и издателя. Эти поля позволяли различать записи в каталоге при повторном использовании имён, но на практике применялись редко.
Наиболее значительным обновлением стала версия 3 (X.509v3), опубликованная в 1996 году. Она ввела механизм расширений — гибкую систему дополнительных полей, позволяющих хранить в сертификате информацию о назначении ключа, политиках сертификации, альтернативных именах субъекта и ограничениях. Расширения X.509v3 сделали стандарт универсальным и пригодным для Интернета.
Современные версии стандарта (например, X.509:2019) включают поддержку новых криптографических алгоритмов, таких как эллиптические кривые (ECDSA), и уточняют процедуры проверки цепочек сертификатов.
Структура сертификата X.509
Сертификат X.509 представляет собой структурированный набор полей, закодированных в формате ASN.1 (Abstract Syntax Notation One) и подписанных удостоверяющим центром (CA). Основные поля:
- Версия (1, 2 или 3).
- Серийный номер — уникальный в рамках издателя идентификатор.
- Алгоритм подписи — идентификатор алгоритма (например, sha256WithRSAEncryption).
- Издатель — отличительное имя (DN) удостоверяющего центра.
- Срок действия — дата начала и окончания.
- Субъект — DN владельца сертификата.
- Открытый ключ — алгоритм и само значение ключа.
- Подпись — закодированная подпись издателя.
- Расширения (только для v3).
Расширения X.509v3
Расширения делятся на несколько категорий:
- Ограничения на использование ключа (Key Usage) — указывает, для каких операций предназначен ключ (цифровая подпись, шифрование, проверка подписи сертификатов).
- Расширенное использование ключа (Extended Key Usage) — конкретные протоколы или приложения (например, TLS-сервер, кодовая подпись).
- Альтернативное имя субъекта (Subject Alternative Name) — позволяет привязывать сертификат к доменным именам, IP-адресам или email-адресам.
- Ограничения базовых ограничений (Basic Constraints) — указывает, является ли субъект CA, и задаёт глубину цепочки.
- Политики сертификации (Certificate Policies) — ссылки на документы, описывающие процедуры выпуска и управления.
- Распределение точек списка отзыва (CRL Distribution Points) — URL для получения списка отозванных сертификатов.
Процесс проверки сертификата
Для подтверждения подлинности сертификата выполняется проверка цепочки доверия:
- Проверка подписи — подпись каждого сертификата проверяется открытым ключом издателя.
- Проверка срока действия — текущая дата должна находиться в пределах срока действия.
- Проверка статуса отзыва — сертификат не должен числиться в списке отзыва (CRL) или не должен быть помечен как отозванный через протокол OCSP.
- Проверка расширений — соответствие ключа целям использования (например, для TLS-сервера должно быть установлено расширение Server Authentication).
- Построение цепочки — сертификат субъекта должен быть подписан промежуточным или корневым CA, чей сертификат находится в доверенном хранилище.
Корневые сертификаты (самоподписанные) обычно встроены в операционные системы и браузеры. Доверенный корневой CA не проверяется по цепочке, но его подпись должна быть валидна.
Применение
TLS/SSL
Наиболее массовое применение X.509 — в протоколах HTTPS, FTPS, SMTP over TLS и других. Сервер предоставляет клиенту сертификат при установке соединения. Клиент проверяет его цепочку и, в случае успеха, использует открытый ключ для шифрования сеансового ключа.
Электронная подпись
В России и других странах сертификаты X.509 используются для создания квалифицированных электронных подписей (КЭП) в соответствии с законами об электронной подписи. Сертификаты выпускаются аккредитованными удостоверяющими центрами.
S/MIME
Протокол S/MIME для защищённой электронной почты использует сертификаты X.509 для шифрования и подписи сообщений.
IPsec
В некоторых реализациях IPsec сертификаты X.509 применяются для аутентификации узлов при установке защищённого канала.
Удостоверяющие центры и иерархия
Удостоверяющие центры (CA) делятся на:
- Корневые CA — выпускают сертификаты для промежуточных CA и самих себя. Их сертификаты распространяются через доверенные хранилища.
- Промежуточные CA — выпускают сертификаты для конечных субъектов (пользователей, серверов). Позволяют разгрузить корневые CA и обеспечить гибкость.
- Конечные сертификаты (end-entity) — выдаются конкретным субъектам.
В России существуют национальные удостоверяющие центры, например, Минцифры России, которые выпускают сертификаты для государственных информационных систем.
Отзыв сертификатов
Сертификат может быть отозван до истечения срока действия по причинам: компрометация закрытого ключа, смена данных субъекта, прекращение деятельности. Механизмы отзыва:
- Список отзыва сертификатов (CRL) — периодически публикуемый список серийных номеров отозванных сертификатов. Недостаток — задержка между отзывом и публикацией.
- Протокол OCSP (Online Certificate Status Protocol) — позволяет в реальном времени запросить статус конкретного сертификата. OCSP-ответы могут быть подписаны.
- OCSP Stapling — сервер сам предоставляет клиенту подписанный OCSP-ответ о своём сертификате, снижая нагрузку на CA.
Критика и ограничения
- Сложность управления — поддержка цепочек, обновление корневых сертификатов, работа с CRL требуют административных усилий.
- Уязвимости реализации — ошибки в проверке цепочек (например, недостаточная проверка имени субъекта) приводили к инцидентам (Heartbleed, атаки на PKI).
- Централизация — доверие основано на небольшом числе корневых CA, что создаёт точку отказа и риск компрометации.
- Стоимость — получение сертификата от коммерческого CA может быть платным, особенно для расширенных проверок (Extended Validation).
- Проблемы с отзывом — CRL могут быть большими, а OCSP-серверы — недоступными, что замедляет проверку.
Альтернативы
Существуют альтернативные подходы к управлению открытыми ключами, такие как:
- DNSSEC — использует цепочки доверия на основе DNS.
- Web of Trust (например, PGP) — децентрализованная модель, где каждый пользователь подписывает ключи других.
- TOFU (Trust On First Use) — модель, применяемая в SSH, где ключ запоминается при первом соединении.
Тем не менее, X.509 остаётся доминирующим стандартом для коммерческих и корпоративных систем благодаря зрелости, стандартизации и широкой поддержке.
Источники
- ITU-T Recommendation X.509 (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.
- Национальный стандарт РФ ГОСТ Р 34.10-2012 — Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи.
- Федеральный закон от 06.04.2011 № 63-ФЗ «Об электронной подписи».
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →