Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
PKCS #7 ist ein Kryptografienachrichtensyntaxstandard. Eine PKCS #7-Nachricht stellt selbst keine Zertifikatanforderung dar, kann aber eine PKCS #10- oder CMC-Anforderung in einer ContentInfo- ASN.1-Struktur mithilfe eines der folgenden Inhaltstypen kapseln. Mit der Kapselung können Sie zusätzliche Funktionen wie mehrere Signaturen hinzufügen, die andernfalls nicht verfügbar sind.
- Daten
- SignedData-
- EnvelopedData-
- SignedAndEnvelopedData-
- DigestedData-
- EncryptedData-
Attribute können den authenticatedAttributes und nicht authentifiziertenAttributes Feldern des inhaltstyps SignedData hinzugefügt werden.
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
}
Der Prozess, der erforderlich ist, um den privaten Schlüssel eines Clients auf einer Zertifizierungsstelle (CA) zu archivieren, bietet ein umfassendes Beispiel dafür, wie authentifizierte (signierte) Attribute und die nicht authentifizierten Attribute verwendet werden können:
Der Client erstellt ein IX509CertificateRequestPkcs10-Objekt und fügt entsprechende Daten für den angeforderten Zertifikattyp hinzu.
Der Client verwendet die PKCS #10-Anforderung, um ein IX509CertificateRequestCmc-Objekt zu initialisieren. Die PKCS #10-Anforderung wird in die TaggedRequest Struktur in der CMC-Anforderung eingefügt. Weitere Informationen finden Sie unter CMC Attributes.
Der Client verschlüsselt einen privaten Schlüssel und verwendet ihn zum Initialisieren eines IX509AttributeArchiveKey Objekts. Das neue ArchiveKey Attribut wird in einer EnvelopedData--Struktur gekapselt.
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 }Der Client erstellt einen SHA-1-Hash des verschlüsselten Schlüssels und verwendet ihn zum Initialisieren eines IX509AttributeArchiveKeyHash-Objekts.
Der Client ruft die CryptAttributes- -Auflistung aus der CMC-Anforderung ab und fügt die ArchiveKey und die ArchiveKeyHash Attribute hinzu. Die Attribute werden in die TaggedAttributes Struktur der CMC-Anforderung eingefügt.
Der Client verwendet die CMC-Anforderung, um ein IX509CertificateRequestPkcs7-Objekt zu initialisieren. Dadurch wird die CMC-Anforderung in das contentInfo- Feld der PKCS #7 SignedData-Struktur eingefügt.
Das attribut ArchiveKeyHash ist signiert und in der authenticatedAttributes Sequenz der SignerInfo Struktur platziert.
Das attribut ArchiveKey wird in der nicht authentifiziertenAttributes Sequenz der SignerInfo Struktur platziert, die dem primären Signierer der PKCS #7-Nachricht zugeordnet ist.
Verwandte Themen