Формат сертификатов открытых ключей X.509

Формат сертификатов открытых ключей X.509

Формат сертификата открытого ключа определен в рекомендациях Международного Союза по телекоммуникациям ITU (X.509) [78] и документе RFC 3280 Certificate & CRL Profile [167] организации инженерной поддержки Интернета Internet Engineering Task Force (IETF). IETF является открытым интернациональным сообществом исследователей, разработчиков сетевых протоколов, операторов и производителей, занимающихся проблемами развития сетей Интернет и обеспечением непрерывного функционирования существующей инфраструктуры. В настоящее время основным принятым форматом является формат версии 3, позволяющий задавать дополнения, с помощью которых реализуется определенная политика безопасности в системе. Несмотря на то, что документ RFC 3820 адресован Интернет-сообществу, формат сертификата открытого ключа предоставляет гибкий механизм передачи разнообразной информации и применяется в корпоративных PKI.

Сертификат открытого ключа подписи или шифрования представляет собой структурированную двоичную запись в формате абстрактной синтаксической нотации ASN.1. Сертификат содержит элементы данных, сопровождаемые цифровой подписью издателя сертификата (см. рис. 6.1 и табл. 6.1). В сертификате имеется десять основных полей: шесть обязательных и четыре опциональных. Большая часть информации, указываемой в сертификате, не является обязательной, а содержание обязательных полей сертификата может варьироваться. К обязательным полям относятся:

* серийный номер сертификата Certificate Serial Number ;

* идентификатор алгоритма подписи Signature Algorithm Identifier ;

* имя издателя Issuer Name ;

* период действия Validity (Not Before/After) ;

* открытый ключ субъекта Subject Public Key Information ;

* имя субъекта сертификата Subject Name.

Под субъектом сертификата понимается сторона, которая контролирует секретный ключ, соответствующий данному открытому ключу. Наличие необязательных полей характерно для сертификатов версий 2 и 3, к необязательным полям сертификата относятся номер версии, два уникальных идентификатора и дополнения. Структура сертификата представлена на рис. 6.1.

Поле Version (см. табл. 6.1) задает синтаксис сертификата, по умолчанию предполагается первая версия сертификата. Если в поле версии указывается 2, то сертификат содержит только уникальные идентификаторы, а если 3, то в сертификат включаются и уникальные идентификаторы, и дополнения, что характерно для всех современных сертификатов. Сертификаты первой версии не содержат уникальные идентификаторы или дополнения.

Структура сертификата

Рис. 6.1.  Структура сертификата

Издатель сертификатов присваивает каждому выпускаемому сертификату серийный номер Certificate Serial Number, который должен быть уникален. Комбинация имени издателя и серийного номера однозначно идентифицирует каждый сертификат.

В поле Signature Аlgorithm Identifier указывается идентификатор алгоритма ЭЦП, который использовался издателем сертификата для подписи сертификата, например ГОСТ Р 34.10-94 (см. рис. 6.2).

Пример сертификата формата X.509

Рис. 6.2.  Пример сертификата формата X.509

Поле Issuer Name содержит отличительное имя (формата X.500) третьей доверенной стороны, то есть издателя, который выпустил этот сертификат. В поле Validity (Not Before/After) указываются даты начала и окончания периода действия сертификата.

Поле Subject Name содержит отличительное имя субъекта, то есть владельца секретного ключа, соответствующего открытому ключу данного сертификата. Субъектом сертификата может выступать УЦ, РЦ или конечный субъект.

|Версия v1 | Элемент | Название | Описание |

|version | Версия | Версия (0 означает v1, 2 означает v3) |

|serialNumber | Серийный номер сертификата | Серийный номер сертификата |

|signature.algorithm

Identifier

algorithm

parameters

| Идентификатор алгоритма подписи | Тип алгоритма подписи

.

Алгоритм

Параметры

|

|issuer | Издатель | Уникальное название УЦ, выпустившего сертификат |

|Validity

NotBefore

notAfter

| Период действия | Период действия

Дата и время начала действия

Дата и время окончания действия

|

|subject | Субъект | Уникальное имя субъекта |

|SubjectPublicKeyInfo

Algorithm

subjectPublicKey

| Информация об открытом ключе субъекта | Информация об открытом ключе субъекта

Криптографический алгоритм

Ключ (строка битов)

|

|Версия v2 | issuerUniqueID | Уникальный идентификатор издателя | Уникальный идентификатор УЦ, выпустившего сертификат |

|subjectUniqueID | Уникальный идентификатор субъекта | Уникальный идентификатор субъекта сертификата |

|AuthorityKeyIdentifier

keyIdentifier

authorityCertIssuer

authorityCertSerialNumber

| Идентификатор ключа УЦ | Идентификатор ключа УЦ

Идентификатор ключа

Общее название УЦ

Серийный номер сертификата УЦ

|

|subjectKeyIdentifier | Идентификатор ключа субъекта | Идентификатор, используемый тогда, когда субъект имеет более одного ключа (например, во время возобновления сертификата) |

|Версия v3 | keyUsage

digitalSignature

.

nonRepudiation

keyEncipherment

dataEncipherment

.

.

.

keyAgreement

.

.

KeyCertSign

.

.

CRLSign

| Назначение ключа | Назначение ключа (строки битов)

1. Формирование и проверка

цифровой подписи

2. Неотказуемость

3. Шифрование других ключей

4. Шифрование и расшифрова-

ние данных и контроль цело-

стности с использованием

имитозащиты

5. Формирование других ключей

(например, по алгоритму

Диффи-Хелмана)

6. Формирование ЭЦП серти-

фикатов. Может использо-

ваться УЦ

7. Формирование ЭЦП САС.

Может использоваться УЦ

|

|keyUsage

EncipherOnly

DecipherOnly

| Назначение ключа | Назначение ключа (строки битов)

8. Только для шифрования

9. Только для расшифрования

|

|extendedKeyUsage | Расширенное назначение ключа | Задает одно или несколько назначений ключа помимо или вместо дополнения keyUsage |

|cRLDistributionPoint | Пункт распространения списков аннулированных сертификатов | Задает унифицированный идентификатор ресурса (URL) для указания местонахождения списков САС |

|privateKeyUsagePeriod | Период действия секретного ключа | Период действия секретного ключа, соответствующего открытому ключу в данном сертификате. При отсутствии этого дополнения периоды действия секретного и открытого ключей совпадают |

|certificatePolicies | Политики применения сертификат | Содержит уникальный идентификатор объекта OID, характеризующий политику применения сертификата и назначение сертификата |

|PolicyMappings

IssuerDomainPolicy

SubjectDomainPolicy

| Соответствие политик | Используется только в сертификатах УЦ. Задает один или несколько идентификаторов объекта в составе домена УЦ издателя, которые должны совпадать с политикой в составе домена УЦ субъекта |

|BasicConstraints | Основные ограничения | Указывает, действует ли субъект как УЦ, задает длину пути сертификации |

|PolicyConstraints | Ограничение политик | Используется только в сертификатах УЦ, задает проверку пути к политике, запрашивая идентификаторы политик и (или) запрещая задание соответствий политик |

|NameConstraints | Ограничения на имена | Используется только в сертификатах УЦ, задает пространство имен, которому должны принадлежать имена субъектов любого следующего сертификата в пути сертификации |

|SubjectAltName

.

OtherName

rfc822Name

dNSName

x400Address

directoryName

ediPartyName

uniformResource-

Identifier

iPAddress

registeredID

| Альтернативное имя субъекта | Альтернативное имя субъекта.

Свободный выбор имени.

Произвольное имя

Адрес электронной почты

Имя домена

Адрес отправителя/получателя

Имя каталога

EDI-имя

Унифицированный указатель

ресурсов WWW URL

IP-адрес

Зарегистрированный ID объекта

|

|issuerAltName | Альтернативное имя издателя | Альтернативное имя издателя |

|SubjectDirectory Attributes | Атрибуты каталога субъекта | Необязательные атрибуты субъекта, например, почтовый адрес, номер телефона и т.п. |

Таблица 6.1.Формат сертификата X.509

Поле Subject Public Key Information содержит информацию об открытом ключе субъекта: сам открытый ключ, необязательные параметры и идентификатор алгоритма генерации ключа. Это поле всегда должно содержать значение. Открытый ключ и необязательные параметры алгоритма используются для верификации цифровой подписи (если субъектом сертификата является УЦ) или управления ключами.

Необязательные поля Issuer Unique Identifier и Subject Unique Identifier информируют об уникальных идентификаторах субъекта и издателя сертификата и предназначены для управления многократным использованием имен субъектов и издателей. Вследствие неэффективности подобного механизма управления Интернет-стандарты профилей сертификата и списка аннулированных сертификатов не рекомендуют использовать в сертификатах эти поля.