Открыть сервис

Basic Constraints

Basic Constraints — это расширение сертификатов X.509, используемое для указания того, может ли сертификат выступать в качестве удостоверяющего центра (CA) и, если может, какова максимальная глубина цепочки сертификации, которую он может подписывать. Данное расширение является критическим для обеспечения безопасности инфраструктуры открытых ключей (PKI), так как оно предотвращает использование сертификатов конечных субъектов для подписи других сертификатов, что могло бы привести к компрометации всей системы доверия.

История и стандартизация

Расширение Basic Constraints было впервые определено в стандарте X.509 версии 3, опубликованном Международным союзом электросвязи (ITU-T) в 1996 году. Позднее оно было включено в спецификацию RFC 5280 (Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile), которая является основным документом, регламентирующим использование сертификатов в интернете. В RFC 5280 расширение описывается как обязательное для сертификатов удостоверяющих центров и необязательное для конечных сертификатов.

Структура и синтаксис

Расширение Basic Constraints имеет следующий синтаксис в нотации ASN.1 (Abstract Syntax Notation One):

``asn1 BasicConstraints ::= SEQUENCE { cA BOOLEAN DEFAULT FALSE, pathLenConstraint INTEGER (0..MAX) OPTIONAL } ``

Параметры расширения:

  • cA (Certificate Authority) — булево значение, указывающее, является ли субъект сертификата удостоверяющим центром. Если значение равно TRUE, сертификат может использоваться для подписи других сертификатов. Если FALSE или отсутствует, сертификат является конечным и не может подписывать другие сертификаты.
  • pathLenConstraint — целочисленное значение, определяющее максимальное количество сертификатов CA, которые могут следовать за данным сертификатом в цепочке сертификации. Если параметр отсутствует, ограничение на глубину цепочки не накладывается. Значение 0 означает, что данный CA может подписывать только конечные сертификаты, но не другие CA.

Критичность расширения

Согласно стандарту RFC 5280, расширение Basic Constraints должно быть помечено как критическое (critical) для всех сертификатов CA. Это означает, что любое программное обеспечение, проверяющее сертификат, обязано распознавать и обрабатывать это расширение. Если расширение не распознано, сертификат должен быть отклонён. Для конечных сертификатов (не CA) расширение может отсутствовать или быть не критическим, но при его наличии значение cA должно быть FALSE.

Применение и значение

Предотвращение атак с подменой CA

Основная функция Basic Constraints — предотвращение атак, при которых злоумышленник, получив контроль над сертификатом конечного пользователя, мог бы использовать его для подписи поддельных сертификатов. Без этого расширения любой сертификат теоретически мог бы быть использован как CA, что разрушило бы иерархию доверия.

Ограничение глубины цепочки

Параметр pathLenConstraint позволяет ограничить количество уровней в иерархии CA. Например, корневой CA может установить pathLenConstraint=2, что разрешает подписывать до двух промежуточных CA. Это ограничение предотвращает создание неограниченно длинных цепочек сертификации, которые могли бы усложнить проверку или быть использованы для атак.

Примеры использования

  • Корневой сертификат CA: cA=TRUE, pathLenConstraint не задан или задан большим числом (например, 10).
  • Промежуточный сертификат CA: cA=TRUE, pathLenConstraint=0 (может подписывать только конечные сертификаты) или pathLenConstraint=1 (может подписывать ещё один промежуточный CA).
  • Конечный сертификат (сервер, клиент, код): cA=FALSE или расширение отсутствует.

Ограничения и критика

Несмотря на свою важность, расширение Basic Constraints имеет ряд ограничений:

  • Отсутствие поддержки в старых системах: Некоторые устаревшие реализации PKI не обрабатывают это расширение корректно, что может привести к уязвимостям. Например, в ранних версиях OpenSSL (до 0.9.8) некритическое расширение могло быть проигнорировано.
  • Сложность управления цепочками: При большом количестве промежуточных CA неправильная настройка pathLenConstraint может привести к невозможности построения цепочки сертификации.
  • Зависимость от других расширений: Basic Constraints часто используется совместно с расширениями Key Usage и Extended Key Usage, которые уточняют допустимые операции для сертификата. Например, сертификат CA с keyCertSign в Key Usage может подписывать сертификаты, но без cA=TRUE это недопустимо.

Сравнение с другими расширениями

РасширениеНазначениеСвязь с Basic Constraints
Key UsageОпределяет допустимые криптографические операции (подпись, шифрование, проверка)Для CA обязательно наличие keyCertSign
Extended Key UsageУточняет цель использования сертификата (TLS-сервер, подпись кода, электронная почта)Не применяется к CA, только к конечным сертификатам
Subject Key IdentifierИдентифицирует открытый ключ субъектаИспользуется для построения цепочки
Authority Key IdentifierСсылается на ключ подписавшего CAНеобходим для проверки цепочки

Интересные факты

  • В ранних реализациях PKI (например, в Netscape) расширение Basic Constraints могло отсутствовать, что приводило к возможности создания «самодельных» CA.
  • В 2011 году исследователи из Университета Твенте обнаружили, что некоторые коммерческие CA (например, Comodo) выпускали сертификаты с cA=TRUE для клиентов, что могло быть использовано для атак.
  • В России использование расширения Basic Constraints регулируется ГОСТ Р 34.10-2012 и ГОСТ Р 34.11-2012, которые адаптируют стандарт X.509 для национальных криптографических алгоритмов.

Источники

  • RFC 5280 — Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile
  • ITU-T Recommendation X.509 (1996) — Information Technology — Open Systems Interconnection — The Directory: Public-Key and Attribute Certificate Frameworks
  • ГОСТ Р 34.10-2012 — Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи
  • ГОСТ Р 34.11-2012 — Информационная технология. Криптографическая защита информации. Функция хэширования
  • Стандарт PKCS#10 — Certification Request Syntax Specification
  • Документация OpenSSL по расширениям сертификатов

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →