Public-Key Cryptography Standards #7

Format utilisé par Up ! Security Manager

Le format Public-Key Cryptography Standards #7 (PKCS#7) du laboratoire Rsa spécifie la réponse à la requête sur une clé publique d'un tiers.

La requête est effectuée par un demandeur auprès du Certificate Authority (CA) qui a besoin d'authentifier un tiers.

La norme utilisée utilisée est Abstract Syntax Notation One (ASN.1) de l'International Telecommunication Union (ITU) compilée en Basic Encoding Rules (BER).

-- Les types suivants sont supposes deja definis.
-- ==============================================
-- AlgorithmIdentifier - Identifiant d'un algorithme - X.509.
-- Attribute - Type definissant une propriete d'un certificat ou d'une entree de l'annuaire - X.501.
-- Certificate - Certificat de base i.e. association entre Distinguished Name (DN) de l'annuaire et une cle publique - X.509.
-- CertificateSerialNumber - Identification unique de l'association precedente - X.509.
-- CertificateRevocationList - Liste des certificats revoques - Rfc 1422.
-- desCBC - Type des parametres de DES en CBC.
-- ExtendedCertificate - Certificat de base complete par une liste de proprietes lisibles par un tiers - PKCS#6.
-- md2 - Identifiant de l'algorithme md2.
-- md5 - Identifiant de l'algorithme md5.
-- Name - Entree de l'annuaire - X.500.
-- rsaEncryption - Identifiant de l'algorithme Rsa.

CertificateRevocationLists ::= SET OF CertificateRevocationList
-- Liste des certificats a revoquer.

ContentEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
-- Algorithme d'encryptage et de decryptage. Par exemple DES.

DigestAlgorithmIdentifier ::= AlgorithmIdentifier
-- Algorithme de signature. Par exemple MD2 ou MD5.

DigestEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
-- Algorithme d'encryptage et de decryptage parametre par un algorithme de signature. Par exemple RSA.

ExtendedCertificateOrCertificate ::= CHOICE
-- Certificat de base ou etendu.


ExtendedCertificatesAndCertificates ::= SET OF ExtendedCertificateOrCertificate
-- Chaine des certificats menant recursivement du certificat cible a celui du Certificat Authority (CA).

IssuerAndSerialNumber ::= SEQUENCE
-- Identifiant du certificat.

KeyEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
-- Algorithme d'encryptage et de decryptage parametre par une cle. Par exemple RSA.

Version ::= INTEGER

ContentInfo ::= SEQUENCE
-- Definition du contenu d'un flux Pkcs#7.

ContentType ::= OBJECT IDENTIFIER
-- Type de contenu : data, signedData, envelopedData, signedAndEnvelopedData, digestedData ou encryptedData.

SignedData ::= SEQUENCE
-- Definition du contenu du type 'signedData' - donnees et signature pour authentification. Il est signe par zero, un ou plusieurs signataires.
-- Chaque signature est cryptee avec la cle privee du signataire. La cle publique pour decryptage avant verification de la signature peut etre transmise.
-- Ce contenu est aussi utilise pour diffuser les cles publiques revoquees.

DigestAlgorithmIdentifiers ::= SET OF DigestAlgorithmIdentifier
-- Identifiants des algorithmes de signature.

SignerInfos ::= SET OF SignerInfo
-- Informations sur un signataire.

SignerInfo ::= SEQUENCE
-- Information elementaire sur un signataire.

EncryptedDigest ::= OCTET STRING
DigestInfo ::= SEQUENCE
-- Contenu qui doit etre crypte avec la cle privee du signataire.

Digest ::= OCTET STRING
EnvelopedData ::= SEQUENCE
-- Definition du contenu du type 'envelopedData' - recipients i.e. parametres des algorithmes de securite.

RecipientInfos ::= SET OF RecipientInfo
-- Liste des informations sur les recipients.

EncryptedContentInfo ::= SEQUENCE
-- Information sur un contenu crypte.

EncryptedContent ::= OCTET STRING

RecipientInfo ::= SEQUENCE
-- Definition d'un recipient.

EncryptedKey ::= OCTET STRING

SignedAndEnvelopedData ::= SEQUENCE
-- Definition du contenu du type 'signedAndEnvelopedData' - recipients i.e. parametres des algorithmes de securite et signature pour authentification.

DigestedData ::= SEQUENCE
-- Definition du contenu du type 'digestedData' - donnees avec signature pour verification.

Digest ::= OCTET STRING

EncryptedData ::= SEQUENCE
-- Definition du contenu du type 'encryptedData' - donnees avec cryptage.

pkcs-7 OBJECT IDENTIFIER ::= { iso(1) member-body(2) US(840) rsadsi(113549) pkcs(1) 7 }
data OBJECT IDENTIFIER ::= { pkcs-7 1 }
signedData OBJECT IDENTIFIER ::= { pkcs-7 2 }
envelopedData OBJECT IDENTIFIER ::= { pkcs-7 3 }
signedAndEnvelopedData OBJECT IDENTIFIER ::= { pkcs-7 4 }
digestedData OBJECT IDENTIFIER ::= { pkcs-7 5 }
encryptedData OBJECT IDENTIFIER ::= { pkcs-7 6 }

Algorithmes utilisés par Up ! Security Manager

Signature

Voici l'algorithme de signature pour un contenu de type signedData :

Enveloppe

Voici l'algorithme de construction d'une enveloppe envelopedData :

Signature et enveloppe

Voici l'algorithme de construction d'une enveloppe signedAndEnvelopedData :