Лекция 6. Сертификаты открытых ключей
Лекция 6. Сертификаты открытых ключей
Описывается формат сертификата открытого ключа, дается краткая характеристика обязательных и опциональных полей сертификата, подробно рассматриваются ограничивающие и информационные дополнения сертификата, обсуждаются альтернативные форматы сертификатов, объясняются принципы функционирования простой инфраструктуры открытых ключей, систем PGP и SET, дается представление об атрибутных сертификатах.
Формат сертификатов открытых ключей 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).
Рис. 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 информируют об уникальных идентификаторах субъекта и издателя сертификата и предназначены для управления многократным использованием имен субъектов и издателей. Вследствие неэффективности подобного механизма управления Интернет-стандарты профилей сертификата и списка аннулированных сертификатов не рекомендуют использовать в сертификатах эти поля.