Выбрать главу

Сертификат открытого ключа подписи или шифрования представляет собой структурированную двоичную запись в формате абстрактной синтаксической нотации 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