Cryptographie
PKCS7 : Public-Key Cryptography Standards #7. « Norme n° 7 de cryptographie à clé publique », par analogie avec une pochette administrative normalisée où l'on range le document, les signatures et les pièces justificatives.
Contenu : PKCS#7 définit une structure encodée en ASN.1 pour des données signées, chiffrées pour un ou plusieurs destinataires, ou les deux. Son successeur, CMS (Cryptographic Message Syntax), en reprend l'essentiel.
Usages : On le croise dans S/MIME (Secure/Multipurpose Internet Mail Extensions), la signature de code, et surtout dans les fichiers .p7b ou .p7c qui transportent une chaîne de certificats sans aucune clé privée. Le protocole EST renvoie aussi des certificats dans ce format.
Encodage : Le même contenu s'échange en binaire DER ou en texte PEM ; un fichier qui refuse de s'ouvrir souffre souvent d'une banale erreur d'encodage, rarement d'un complot.
Homonyme : Le « remplissage PKCS#7 » désigne tout autre chose : la façon de compléter un message jusqu'à un multiple de la taille de bloc en mode CBC. Même nom, deux métiers, et une confusion qui ne s'éteindra qu'avec le dernier forum.
Ce qui arrive si on s'en passe
Ignorer ce que contient un fichier PKCS#7 expose à des confusions coûteuses. Un .p7b transporte une chaîne de certificats, jamais de clé privée : l'y chercher retarde un déploiement. Confondre la structure PKCS#7 avec le remplissage PKCS#7 du mode CBC mélange en outre deux sujets dont le second, mal vérifié, a donné les attaques par oracle de remplissage. Accepter enfin un message signé sans vérifier la chaîne de certificats qui l'accompagne revient à se contenter de la signature authentique d'un parfait inconnu. La pochette administrative est normalisée ; son contenu, lui, reste à lire.
Explication de la marmotte
Quand on envoie un document important, on le glisse souvent dans une pochette avec les signatures et les justificatifs, pour que le destinataire trouve tout au même endroit. Ce format joue ce rôle pour les ordinateurs : il range dans un même paquet un contenu, des signatures électroniques, et parfois une version brouillée que seuls certains destinataires pourront lire. On l'utilise souvent pour transmettre une série de cartes d'identité numériques de sites web, rangées dans l'ordre, afin que l'ordinateur puisse remonter jusqu'à un organisme de confiance.
Où ce terme est utilisé
- Exploiter un padding oracle CBC avec PKCS#7 (5 occurrences)
- EST : enrôler des certificats X.509 par transport sécurisé (3 occurrences)
- Transformer un bloc en chiffrement de message (2 occurrences)
