Composants d'un message CMS/PKCS #7

La structure du message CMS/PKCS #7 facilite la mise en œuvre d'un ou plusieurs services de sécurité dans un message. Des attributs générant des informations supplémentaires sur le message peuvent également être associés au message CMS/PKCS #7.

Données à protéger

CMS/PKCS #7 permet d'appliquer plusieurs services de sécurité aux données en les stockant dans un objet ContentInfo. Cet objet est une propriété des deux classes principales qui protègent les données dans les espaces de noms System.Security.Cryptography.Pkcs, SignedCms et EnvelopedCms. L'objet ContentInfo peut stocker des données non protégées, mais également encapsuler des données précédemment protégées par un service de sécurité CMS/PKCS #7. Cette encapsulation permet d'appliquer des couches de sécurité imbriquées aux données. Par exemple, des données signées numériquement peuvent être mises sous enveloppe numériquement.

Les données dotées d'une nouvelle couche de protection dans un message CMS/PKCS #7, c'est-à-dire dans l'objet ContentInfo, sont appelées contenu interne du message CMS/PKCS #7. Les données résultant de l'application de cette protection sont appelées contenu externe du message CMS/PKCS #7. Le contenu externe s'obtient en invoquant la méthode Encode de l'objet de message CMS/PKCS #7 applicable. Dans la pratique, ceci revient à invoquer System.Security.Cryptography.Pkcs.SignedCms.Encode ou System.Security.Cryptography.Pkcs.EnvelopedCms.Encode.

Pour plus d'informations sur les données protégées par plusieurs services de sécurité, voir Message CMS/PKCS #7 mis sous enveloppe et signé. Pour obtenir un exemple de code de données protégées par plusieurs services de sécurité, voir Procédure de signature et de mise sous enveloppe d'un message.

Attributs

CMS/PKCS #7 permet de placer des attributs dans des messages protégés. Un attribut est constitué d'un identificateur d'objet (Oid) qui identifie le type d'attribut et des données renfermant la valeur de l'attribut. Le choix, l'emplacement et les caractéristiques de ces attributs dépendent du type de message CMS/PKCS #7.

Un message SignedCms peut comporter deux types d'attributs spécifiques à la signature : les attributs signés avec le contenu du message et ceux qui restent non signés. Pour plus d'informations, voir Message SignedCms. Un message EnvelopedCms peut porter des attributs qui restent non chiffrés. Pour plus d'informations, voir Message EnvelopedCms.

Les classes d'attributs suivantes sont incluses dans l'espace de noms System.Security.Cryptography.Pkcs. Certaines d'entre elles sont requises par les normes CMS/PKCS #7 et d'autres sont des attributs utiles dans de nombreux scénarios d'application :

Il est également possible de définir des attributs personnalisés pour répondre aux besoins d'une application. Dérivez une classe d'attributs personnalisés à partir de Pkcs9AttributeObject.

Objets

Un objet d'un message CMS/PKCS #7 est une entité impliquée dans la production ou la consommation du message. Selon le comportement d'une application, un objet peut jouer différents rôles, dont celui d'émetteur, d'auteur, de signataire, de contre-signataire, de destinataire ou de lecteur d'un message, ou encore toute combinaison de ces rôles. L'objet peut être une personne, une application logicielle ou toute autre entité disposant d'une identité unique. Les deux classes principales constituant des objets dans System.Security.Cryptography.Pkcs sont CmsSigner et CmsRecipient.

Les objets CMS/PKCS #7 utilisent des informations d'identification de chiffrement pour effectuer leurs opérations. Celles-ci se présentent généralement sous forme d'un certificat de clé publique avec une clé privée associée. Chaque objet est identifié et localisé par son certificat de clé publique. Ce certificat peut être identifié de manière unique selon deux méthodes.

  • Le nom unique de l'émetteur avec un numéro de série de certificat spécifique à l'émetteur

  • Un identificateur de clé d'objet

Ces mécanismes d'identification sont représentés dans l'énumération SubjectIdentifierType. Certains des constructeurs utilisés dans les classes CmsSigner et CmsRecipient prennent un membre SubjectIdentifierType comme entrée.

Footer image

Copyright ©2007 par Microsoft Corporation. Tous droits réservés.