Partager via


Concepts de syntaxe de message de chiffrement PKCS #7

Les fonctions de message CryptoAPI adhèrent à la norme de syntaxe de message de chiffrement (CMS) PKCS #7. Les développeurs doivent être familiarisés avec cette spécification pour utiliser efficacement les fonctions de message de bas niveau. Quelques-unes de ses définitions sont présentées ici.

La norme PKCS #7 décrit une syntaxe générale pour les données qui peuvent être appliquées au chiffrement, comme les signatures numériques et les enveloppes numériques. La syntaxe admet la récursivité, afin que, par exemple, une enveloppe puisse être imbriquée à l’intérieur d’une autre, ou qu’une partie puisse signer des données numériques qui ont déjà été placées dans une enveloppe. Il permet également l’authentification d'attributs arbitraires, tels que l’heure de signature, ainsi que le contenu d’un message. En outre, il fournit d’autres attributs à associer à une signature, tels que les contre-signatures.

Le type de données contenues dans un message PKCS #7 est appelé son type de contenu. Il existe deux classes de types de contenu : de base et amélioré.

  • Les types de contenu de base contiennent uniquement des données sans améliorations apportées au chiffrement. Actuellement, il n’existe qu’un seul type de contenu dans cette classe, le type de contenu de données.
  • Les types de contenu améliorés contiennent des données d’un type (éventuellement chiffrées) et d’autres améliorations de chiffrement (telles que les hachages ou les signatures).

Le contenu de la classe améliorée utilise l’encapsulation, ce qui donne lieu aux termes de contenu externe (celui contenant les améliorations) et de contenu interne (celui qui est amélioré). Par exemple, une classe améliorée peut contenir le type de contenu de données (classe de base) qui a une signature incluse. Dans ce cas, le type de contenu de données est le contenu interne et la combinaison du type contenu de données et de la signature forment le contenu externe.

Les types de contenu définis dans la norme PKCS #7 sont les suivants.

Type de contenu Description
Données Chaîne d’octet (BYTE).
Données signées Contenu de n’importe quel type et hachages de message chiffrés (synthèses) du contenu pour zéro ou plusieurs signataires.
Données enveloppées Contenu chiffré de n’importe quel type et clés de chiffrement de contenu chiffrées pour un ou plusieurs destinataires. La combinaison de contenu chiffré et de clé de chiffrement de contenu chiffrée pour un destinataire est une enveloppe numérique pour ce destinataire.
Données signées et enveloppées Contenu chiffré de n’importe quel type, clés de chiffrement de contenu chiffrées pour un ou plusieurs destinataires et synthèses de messages doublement chiffrées pour un ou plusieurs signataires. Le chiffrement double se compose d’un chiffrement avec la clé privée d’un signataire suivi d’un chiffrement avec la clé de chiffrement de contenu.
Données synthétisées Contenu de n’importe quel type et hachage de message (synthèse) du contenu.
Données chiffrées Contenu chiffré de n’importe quel type. Contrairement au type de contenu de données enveloppées, le type de contenu chiffré ne contient ni destinataires ni clés de chiffrement de contenu chiffrées. Les clés sont supposées être gérées par d’autres moyens.

 

Remarque

Tout au long de la spécification PKCS #7, les termes digest (synthèse) et digested (synthétisé) font référence à la valeur produite à partir de l’application d’un algorithme de hachage aux données. Cette documentation utilise les termes hachage et haché aux mêmes fins. Par exemple, le type de données utilisé avec les fonctions de message de bas niveau est appelé haché plutôt que synthétisé. Dans le cadre de cette documentation, les deux ensembles de termes peuvent être utilisés de façon interchangeable.