Atrybuty PKCS #7
PKCS #7 jest standardem składni komunikatów kryptograficznych. Komunikat PKCS #7 nie stanowi samego żądania certyfikatu, ale może hermetyzować żądanie PKCS #10 lub CMC w strukturze ContentInfo ASN.1 przy użyciu jednego z następujących typów zawartości. Hermetyzacja umożliwia dodawanie dodatkowych funkcji, takich jak wiele podpisów, które nie są dostępne w inny sposób.
- data
- SignedData
- KopertaData
- SignedAndEnvelopedData
- DigestedData
- EncryptedData
Atrybuty można dodać do authenticationdAttributes i nieuwierzytelnionych AtrybutyAttributes pól typu zawartości 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
}
Proces wymagany do zarchiwizowania klucza prywatnego klienta w urzędzie certyfikacji (CA) zawiera kompleksowy przykład sposobu uwierzytelniania (podpisanych) atrybutów i nieuwierzytelnionych atrybutów:
Klient tworzy obiekt IX509CertificateRequestPkcs10 i dodaje odpowiednie dane dla żądanego typu certyfikatu.
Klient używa żądania PKCS #10, aby zainicjować obiekt IX509CertificateRequestCm c. Żądanie PKCS #10 jest umieszczane w strukturze TaggedRequest w żądaniu CMC. Aby uzyskać więcej informacji, zobacz atrybuty CMC.
Klient szyfruje klucz prywatny i używa go do zainicjowania obiektu IX509AttributeArchiveKey. Nowy atrybut ArchiveKey jest hermetyzowany w strukturze 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 }
Klient tworzy skrót SHA-1 zaszyfrowanego klucza i używa go do zainicjowania obiektu IX509AttributeArchiveKeyHash.
Klient pobiera kolekcję CryptAttributes z żądania CMC i dodaje ArchiveKey oraz atrybuty ArchiveKeyHash. Atrybuty są umieszczane w TagAttributes struktury żądania CMC.
Klient używa żądania CMC do zainicjowania obiektu IX509CertificateRequestPkcs 7. Spowoduje to umieszczenie żądania CMC w polu contentInfo struktury PKCS #7 SignedData.
Atrybut ArchiveKeyHash jest podpisany i umieszczany w uwierzytelnionych atrybutówAttributes sekwencji SignerInfo.
Atrybut ArchiveKey jest umieszczany w nieuwierzytelnionych atrybutówAttributes sekwencji SignerInfo struktury skojarzonej z podstawowym znakiem komunikatu PKCS #7.
Tematy pokrewne