Атрибуты PKCS #7
PKCS 7 — это стандарт синтаксиса криптографических сообщений. Сообщение PKCS #7 само по себе не представляет собой запрос на сертификат, но оно может инкапсулировать запрос PKCS #10 или CMC в структуре ContentInfo ASN.1 с помощью одного из следующих типов контента. Инкапсуляция позволяет добавить дополнительные функции, такие как несколько подписей, которые недоступны иным образом.
- Данные
- SignedData
- EnvelopedData
- SignedAndEnvelopedData
- DigestedData
- EncryptedData
Атрибуты можно добавлять в поля authenticatedAttributes и unauthenticatedAttributes типа контента SignedData .
SignedData ::= SEQUENCE
{
version INTEGER,
digestAlgorithms DigestAlgorithmIdentifiers,
contentInfo ContentInfo,
certificates [0] IMPLICIT Certificates OPTIONAL,
crls [1] IMPLICIT CertificateRevocationLists OPTIONAL,
signerInfos SignerInfos
}
SignerInfos ::= SET OF SignerInfo
SignerInfo ::= SEQUENCE
{
version INTEGER,
sid CertIdentifier,
digestAlgorithm DigestAlgorithmIdentifier,
authenticatedAttributes [0] IMPLICIT Attributes OPTIONAL,
digestEncryptionAlgorithm DigestEncryptionAlgId,
encryptedDigest EncryptedDigest,
unauthenticatedAttributes [1] IMPLICIT Attributes
}
Attributes ::= SET OF Attribute
Attribute ::= SEQUENCE
{
type EncodedObjectID,
values AttributeSetValue
}
Процесс архивации закрытого ключа клиента в центре сертификации (ЦС) содержит полный пример использования атрибутов, прошедших проверку подлинности (подписанных), и атрибутов, не прошедших проверку подлинности:
Клиент создает объект IX509CertificateRequestPkcs10 и добавляет соответствующие данные для типа запрашиваемого сертификата.
Клиент использует запрос PKCS #10 для инициализации объекта IX509CertificateRequestCmc . Запрос PKCS #10 помещается в структуру TaggedRequest в запросе CMC. Дополнительные сведения см. в разделе Атрибуты CMC.
Клиент шифрует закрытый ключ и использует его для инициализации объекта IX509AttributeArchiveKey . Новый атрибут ArchiveKey инкапсулирован в структуру EnvelopedData .
EnvelopedData ::= SEQUENCE { version INTEGER, recipientInfos RecipientInfos, encryptedContentInfo EncryptedContentInfo } RecipientInfos ::= SET OF RecipientInfo EncryptedContentInfo ::= SEQUENCE { contentType ContentType, contentEncryptionAlgorithm ContentEncryptionAlgId, encryptedContent [0] IMPLICIT EncryptedContent OPTIONAL } EncryptedContent ::= OCTET STRING RecipientInfo ::= SEQUENCE { version INTEGER, issuerAndSerialNumber IssuerAndSerialNumber, keyEncryptionAlgorithm KeyEncryptionAlgId, encryptedKey EncryptedKey }
Клиент создает хэш SHA-1 зашифрованного ключа и использует его для инициализации объекта IX509AttributeArchiveKeyHash .
Клиент извлекает коллекцию CryptAttributes из запроса CMC и добавляет в нее атрибуты ArchiveKey и ArchiveKeyHash . Атрибуты помещаются в структуру TaggedAttributes запроса CMC.
Клиент использует запрос CMC для инициализации объекта IX509CertificateRequestPkcs7 . Запрос CMC помещется в поле contentInfo структуры PKCS #7 SignedData .
Атрибут ArchiveKeyHash подписывается и помещается в последовательность authenticatedAttributes структуры SignerInfo .
Атрибут ArchiveKey помещается в последовательность unauthenticatedAttributes структуры SignerInfo , связанной с основным подписывателем сообщения PKCS #7.
Связанные темы