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

Key Usage

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

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

Расширение Key Usage было впервые определено в стандарте X.509 версии 3, принятом Международным союзом электросвязи (ITU-T) в 1996 году. Позднее оно было включено в спецификации Инженерного совета Интернета (IETF) в серии RFC 5280 (2008 год), которая остаётся основным документом, регламентирующим профиль сертификатов и списков отзыва (CRL) в инфраструктуре открытых ключей (PKI) для Интернета. В России требования к использованию Key Usage регулируются ГОСТ Р 34.10-2012 и ГОСТ Р 34.11-2012, а также методическими рекомендациями Федеральной службы безопасности (ФСБ) и Министерства цифрового развития, связи и массовых коммуникаций.

Структура и значения

Расширение Key Usage представляет собой последовательность из девяти битов, каждый из которых может быть установлен в 1 (разрешено) или 0 (запрещено). В сертификате биты кодируются в виде битовой строки (BIT STRING) в формате ASN.1. Ниже приведены стандартные значения битов согласно RFC 5280:

Бит (номер)Название (ключевое слово)Описание
0digitalSignatureИспользование ключа для проверки цифровой подписи, не связанной с сертификацией (например, подпись документов, электронных писем).
1nonRepudiation (contentCommitment)Использование ключа для обеспечения неотказуемости (подпись с обязательством содержания). В RFC 5280 термин «contentCommitment» считается синонимом.
2keyEnciphermentШифрование симметричных ключей или других секретных данных с помощью открытого ключа (например, при установлении TLS-сессии).
3dataEnciphermentПрямое шифрование пользовательских данных (не ключей) с помощью открытого ключа.
4keyAgreementИспользование ключа для согласования ключей (например, в протоколах Диффи-Хеллмана).
5keyCertSignПодпись сертификатов (только для сертификатов удостоверяющих центров).
6cRLSignПодпись списков отзыва сертификатов (CRL).
7encipherOnlyИспользуется только совместно с keyAgreement: ключ может использоваться только для шифрования при согласовании.
8decipherOnlyИспользуется только совместно с keyAgreement: ключ может использоваться только для расшифрования при согласовании.

Примечание: биты 7 и 8 имеют смысл только при установленном бите 4 (keyAgreement). Если keyAgreement не установлен, эти биты игнорируются.

Применение в различных протоколах

TLS/SSL

В протоколах TLS и SSL расширение Key Usage проверяется при установлении защищённого соединения. Для серверных сертификатов обычно устанавливаются биты digitalSignature и keyEncipherment (для RSA) или digitalSignature и keyAgreement (для ECDHE). Клиентские сертификаты, как правило, содержат только digitalSignature.

S/MIME

Для защищённой электронной почты (S/MIME) сертификаты подписи должны иметь бит digitalSignature, а сертификаты шифрования — keyEncipherment или keyAgreement (в зависимости от алгоритма). В некоторых реализациях используется один сертификат с обоими битами.

Код и подпись документов

Сертификаты, используемые для подписи кода (code signing) или документов, должны содержать бит digitalSignature. Для подписи исполняемых файлов в Windows (Authenticode) требуется именно этот бит.

Удостоверяющие центры

Сертификаты корневых и промежуточных удостоверяющих центров (CA) должны иметь бит keyCertSign. Для подписи CRL требуется бит cRLSign. Без этих битов сертификат не может использоваться для создания других сертификатов или списков отзыва.

Взаимосвязь с другими расширениями

Key Usage часто дополняется расширением Extended Key Usage (EKU), которое уточняет допустимые сценарии использования (например, serverAuth, clientAuth, codeSigning). При этом EKU не отменяет Key Usage, а накладывает дополнительные ограничения. Например, сертификат с битом digitalSignature в Key Usage и EKU serverAuth может использоваться для подписи в TLS, но не для подписи кода. В случае конфликта между расширениями приоритет имеет более строгое ограничение.

Критика и ограничения

Основной недостаток Key Usage — недостаточная гибкость. Например, бит nonRepudiation (contentCommitment) редко используется на практике из-за юридических и технических сложностей, связанных с неотказуемостью. Кроме того, в некоторых реализациях (например, в старых версиях OpenSSL) проверка Key Usage была необязательной или выполнялась некорректно, что приводило к уязвимостям. В современных системах (OpenSSL 1.1.1 и выше, Windows CryptoAPI, NSS) проверка является обязательной для критических расширений.

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

  • Сертификат веб-сервера (RSA): digitalSignature + keyEncipherment.
  • Сертификат клиента (аутентификация): digitalSignature.
  • Сертификат корневого CA: keyCertSign + cRLSign (+ digitalSignature, если CA подписывает CRL).
  • Сертификат шифрования электронной почты: keyEncipherment (RSA) или keyAgreement (ECDH).

Источники

  1. RFC 5280 — Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile.
  2. ITU-T Recommendation X.509 (2019) — Information technology — Open systems interconnection — The Directory: Public-key and attribute certificate frameworks.
  3. ГОСТ Р 34.10-2012 — Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи.
  4. ГОСТ Р 34.11-2012 — Информационная технология. Криптографическая защита информации. Функция хэширования.
  5. Методические рекомендации по использованию сертификатов открытых ключей в государственных информационных системах (ФСБ России, 2020).

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

На главную BFOmetr →