X.509
X.509 — это стандарт Международного союза электросвязи (ITU-T) для инфраструктуры управления открытыми ключами (PKI), определяющий форматы сертификатов открытых ключей, списков отзыва сертификатов (CRL) и алгоритмы проверки подлинности. Он широко используется в криптографических протоколах для аутентификации субъектов (пользователей, серверов, устройств) и обеспечения конфиденциальности, целостности и неотказуемости передаваемых данных. Стандарт является основой для SSL/TLS (HTTPS), S/MIME (защищённая электронная почта), IPsec и электронной подписи в различных юрисдикциях, включая российские ГОСТ-криптосистемы.
История
Разработка стандарта началась в 1980-х годах в рамках работы ITU-T над справочной моделью OSI (Взаимодействие открытых систем). Первая версия (X.509v1) была опубликована в 1988 году. Она определяла базовую структуру сертификата: серийный номер, идентификаторы издателя и владельца, срок действия, открытый ключ и подпись удостоверяющего центра (УЦ). Версия 2 (1993 год) добавила поля для уникальных идентификаторов субъекта и издателя, что позволило решить проблему повторного использования имён. Наибольшее распространение получила версия 3 (1996 год), которая ввела механизм расширений (extensions), сделавший стандарт гибким и адаптируемым к различным сценариям использования (например, ограничения на использование ключа, политики сертификатов, альтернативные имена субъекта). Параллельно с ITU-T стандарт развивался рабочей группой IETF PKIX (Public Key Infrastructure — X.509), которая адаптировала его для Интернета, выпустив серию RFC (2527, 3280, 5280 и другие). В России стандарт адаптирован в национальных стандартах ГОСТ Р 34.10-2012 и ГОСТ Р 34.11-2012, а также в профилях защиты информации.
Структура сертификата X.509v3
Сертификат X.509 представляет собой цифровой документ, связывающий открытый ключ с идентификационной информацией владельца. Подписывается он закрытым ключом удостоверяющего центра (УЦ). Основные поля сертификата:
- Версия (Version): указывает номер версии (1, 2 или 3).
- Серийный номер (Serial Number): уникальное целое число, присваиваемое УЦ.
- Идентификатор алгоритма подписи (Signature Algorithm): алгоритм, используемый для подписи сертификата (например, sha256WithRSAEncryption, ecdsa-with-SHA256).
- Издатель (Issuer): отличительное имя (DN) УЦ, выпустившего сертификат.
- Срок действия (Validity): дата и время начала и окончания действия сертификата (notBefore, notAfter).
- Владелец (Subject): отличительное имя (DN) субъекта сертификата (пользователя, устройства, домена).
- Открытый ключ (Subject Public Key Info): алгоритм открытого ключа (RSA, ECC, ГОСТ Р 34.10-2012) и его значение.
- Уникальные идентификаторы (Issuer Unique ID, Subject Unique ID): опциональные поля, введённые в версии 2.
- Расширения (Extensions): набор полей, определённых в версии 3. Каждое расширение имеет критический флаг (critical), указывающий, должно ли приложение отвергнуть сертификат, если не понимает данное расширение.
Основные расширения X.509v3
- Key Usage: определяет допустимые операции с ключом (цифровая подпись, шифрование, проверка подписи сертификата).
- Extended Key Usage (EKU): уточняет назначение ключа (TLS-сервер, TLS-клиент, защита электронной почты, подпись кода).
- Subject Alternative Name (SAN): позволяет указать альтернативные имена (DNS-имена, IP-адреса, email-адреса). Критически важно для современных SSL/TLS-сертификатов.
- Basic Constraints: указывает, является ли сертификат сертификатом УЦ, и задаёт глубину цепочки сертификации.
- Certificate Policies: ссылка на политику сертификации (CPS) или идентификатор политики.
- Authority Key Identifier: идентификатор ключа УЦ, подписавшего сертификат.
- Subject Key Identifier: идентификатор открытого ключа субъекта (обычно хеш от ключа).
- CRL Distribution Points: точки распространения списков отзыва сертификатов.
- Authority Information Access (AIA): ссылки на сертификат УЦ и серверы OCSP (Online Certificate Status Protocol).
Списки отзыва сертификатов (CRL)
CRL — это подписанный список серийных номеров сертификатов, которые были отозваны до истечения срока действия. CRL публикуется УЦ и содержит дату выпуска, дату следующего обновления, а также список отозванных сертификатов с указанием даты отзыва и причины (например, компрометация ключа, смена должности, прекращение деятельности). Формат CRL также определён в X.509. Для проверки актуальности сертификата клиент может загрузить CRL с указанного в сертификате URL (CRL Distribution Point) или использовать протокол OCSP, который позволяет проверить статус одного сертификата в реальном времени без загрузки всего списка.
Иерархия доверия и цепочки сертификации
X.509 предполагает строгую иерархическую модель доверия, основанную на удостоверяющих центрах (УЦ). Корневой УЦ (Root CA) выпускает самоподписанный сертификат (свой собственный). Он может выпускать сертификаты для промежуточных УЦ (Intermediate CA), которые, в свою очередь, выпускают сертификаты для конечных субъектов (end-entity). Такая цепочка сертификации (chain of trust) позволяет уменьшить риск компрометации корневого ключа и упрощает управление. Для проверки подлинности сертификата клиент (например, браузер) строит цепочку от сертификата субъекта до доверенного корневого сертификата, хранящегося в локальном хранилище (trust store). Каждый сертификат в цепочке проверяется по подписи, сроку действия, статусу отзыва и соответствию политик.
Применение
SSL/TLS
Наиболее массовое применение X.509 — сертификаты для протоколов SSL/TLS, используемые для защиты веб-трафика (HTTPS). Сервер предъявляет клиенту сертификат, подписанный доверенным УЦ. Клиент (браузер) проверяет его по цепочке, сверяет доменное имя с полем Subject Alternative Name и устанавливает защищённое соединение.
Электронная подпись и шифрование (S/MIME)
В защищённой электронной почте (S/MIME) сертификаты X.509 используются для подписи и шифрования сообщений. Отправитель подписывает письмо своим закрытым ключом, а получатель проверяет подпись с помощью сертификата отправителя. Для шифрования используется открытый ключ получателя.
Кодовая подпись (Code Signing)
Разработчики подписывают исполняемые файлы, драйверы и скрипты сертификатами X.509, чтобы подтвердить авторство и гарантировать, что код не был изменён после подписания. Операционные системы проверяют подпись перед установкой.
IPsec и VPN
В протоколах IPsec и VPN (например, IKEv2) сертификаты X.509 используются для взаимной аутентификации сторон (клиента и сервера) и установления защищённого туннеля.
Государственные и корпоративные PKI
В России и других странах X.509 является основой для инфраструктуры электронной подписи (ЭП). Сертификаты, выпускаемые аккредитованными УЦ, используются для подписания юридически значимых документов, в системах электронного документооборота (ЭДО), для авторизации в государственных порталах (например, «Госуслуги») и в банковских системах. При этом применяются криптографические алгоритмы, установленные национальными стандартами (ГОСТ Р 34.10-2012, ГОСТ Р 34.11-2012).
Критика и ограничения
- Сложность управления: иерархия УЦ и цепочки сертификации требуют значительных административных усилий (выпуск, обновление, отзыв, публикация CRL/OCSP). Ошибки в конфигурации могут привести к уязвимостям.
- Зависимость от УЦ: безопасность всей системы зависит от доверия к ограниченному числу корневых УЦ. Компрометация одного УЦ (например, DigiNotar в 2011 году) позволяет злоумышленникам выпускать поддельные сертификаты для любых сайтов.
- Проблемы с отзывом: механизмы отзыва (CRL, OCSP) могут быть медленными, ненадёжными или легко блокируемыми. Клиенты часто не проверяют статус отзыва из-за производительности или сетевых ограничений.
- Срок действия и ротация: сертификаты имеют ограниченный срок действия (обычно 1–3 года), что требует регулярного обновления. Долгосрочные сертификаты (более 5 лет) считаются менее безопасными.
- Альтернативные модели: в ответ на недостатки X.509 появились альтернативные подходы, такие как модель веб-доверия (TOFU) в SSH, блокчейн-основанные системы (например, Namecoin) и модель DANE (DNS-based Authentication of Named Entities), использующая DNSSEC.
Интересные факты
- Стандарт X.509 изначально разрабатывался для каталогов X.500, но со временем стал использоваться независимо.
- Поле «Отличительное имя» (DN) в сертификате может содержать такие атрибуты, как страна (C), организация (O), подразделение (OU), город (L), штат (ST) и общее имя (CN). В современных сертификатах CN часто используется для доменного имени, но основным полем для верификации доменов является SAN.
- Максимальный размер сертификата X.509 обычно ограничен несколькими килобайтами, но может достигать десятков килобайт при включении большого числа расширений или длинных цепочек.
- В России действует национальный стандарт ГОСТ Р 34.10-2012, определяющий алгоритмы электронной подписи на эллиптических кривых, которые используются в сертификатах X.509, выпускаемых для государственных нужд.
Источники
- 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 6818 — Updates to the Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile.
- ГОСТ Р 34.10-2012 — Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи.
- ГОСТ Р 34.11-2012 — Информационная технология. Криптографическая защита информации. Функция хэширования.
- Национальный стандарт РФ ГОСТ Р 57580.1-2017 — Защита информации финансовых организаций. Базовый состав организационных и технических мер.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →