Guide technique sur le décodage des formats ASN.1, DER et PKCS
Dans l'univers de la sécurité et de la cryptographie, les données sont rarement stockées dans des formats lisibles par l'homme comme le JSON ou l'XML. Au lieu de cela, elles sont empaquetées dans des structures binaires denses suivant des normes établies il y a plusieurs décennies. Si vous avez déjà rencontré un fichier .der, .p12 ou .csr en vous demandant ce qu'il contenait, vous avez fait la connaissance de la famille ASN.1.
Ce guide explique le fonctionnement de ces formats binaires et la manière de les décoder.
1. Qu'est-ce que l'ASN.1 ?
L'ASN.1 (Abstract Syntax Notation One) est un langage standard de description d'interface permettant de définir des structures de données pouvant être sérialisées et désérialisées de manière multiplateforme. C'est en quelque sorte le « code source » des données de sécurité.
Encodage DER
Alors que l'ASN.1 définit la structure, le DER (Distinguished Encoding Rules) définit la manière dont cette structure est transformée en binaire. Le DER est un encodage de type étiquette-longueur-valeur (TLV), ce qui signifie que chaque donnée commence par un octet identifiant son type (étiquette), suivi de sa longueur, puis de la donnée elle-même.
2. Décodage des formats binaires courants
Décodeur de CSR (Certificate Signing Request)
Un CSR contient votre clé publique et vos informations d'identité. Il est généralement encodé en Base64 (format PEM), mais il s'agit en réalité d'une structure ASN.1 encodée en DER.
- Comment le décoder : Vous pouvez utiliser OpenSSL (
openssl req -in request.csr -noout -text) ou un décodeur de CSR en ligne pour afficher le Sujet, l'Organisation et la Clé Publique.
Décodeur PKCS#7 (P7B)
Le PKCS#7 est souvent utilisé pour distribuer une chaîne de certificats. Il contient généralement le certificat et tous les certificats intermédiaires nécessaires à sa vérification.
- Comment le décoder : Contrairement à un simple certificat, un fichier PKCS#7 peut contenir plusieurs objets. Son décodage révèle le « sac » de certificats qu'il contient.
Décodeur PKCS#12 (P12/PFX)
Le PKCS#12 est une archive protégée par mot de passe qui peut stocker une clé privée et son certificat correspondant.
- Comment le décoder : Comme il est chiffré, vous devez posséder le mot de passe. Son décodage vous permet d'extraire la clé privée et le certificat dans des fichiers PEM distincts.
3. ASN.1 et DER : La vue en « arbre »
Lorsque vous décodez un fichier DER brut (comme un certificat X.509), vous obtenez une structure en forme d'arbre :
- SEQUENCE : Une liste d'éléments.
- OBJECT IDENTIFIER (OID) : Une série de chiffres (comme
2.5.4.3) représentant un champ spécifique (ex: « Common Name »). - BIT STRING / OCTET STRING : Données binaires brutes, contenant souvent la clé publique ou la signature.
4. Visualisation des clés PGP et GPG
Bien que le PGP (Pretty Good Privacy) utilise son propre format basé sur des paquets (RFC 4880), il partage le même objectif que l'X.509 : lier une identité à une clé publique.
- Visionneuse de clés PGP : L'inspection d'une clé PGP révèle les identifiants d'utilisateur, les dates de création et les sous-clés utilisées pour la signature et le chiffrement.
Résumé des outils de décodage
| Format | Extension | Type de contenu | Comment « voir » l'intérieur |
|---|---|---|---|
| X.509 | .der, .crt |
Certificat public | openssl x509 -inform der -text |
| CSR | .csr |
Demande de signature | openssl req -text -noout |
| PKCS#12 | .p12, .pfx |
Certificat + Clé privée | openssl pkcs12 -info |
| PGP | .asc, .gpg |
Clé/Message PGP | gpg --list-packets |
Conclusion
Le décodage des formats de sécurité binaires ressemble à la résolution d'un puzzle. Une fois que vous avez compris que presque tout dans la PKI moderne repose sur les bases de l'ASN.1 et du DER, les octets « aléatoires » commencent à prendre tout leur sens. Que vous utilisiez des outils en ligne de commande comme OpenSSL ou des décodeurs web, être capable d'inspecter la structure brute d'un certificat ou d'une demande est une compétence essentielle pour tout développeur soucieux de la sécurité.
Vous cherchez un moyen de vérifier l'intégrité d'un fichier ? Utilisez notre Générateur de Hash pour calculer les sommes de contrôle de vos fichiers de sécurité.