ASN.1
Qu'est-ce que ASN.1 ?
ASN.1Abstract Syntax Notation One : une norme ITU-T (serie X.680) qui decrit, de maniere independante du langage, des structures de donnees utilisees en cryptographie et en telecoms.
ASN.1 (Abstract Syntax Notation One) est une notation formelle, definie dans ITU-T X.680-X.681, pour decrire des donnees structurees (entiers, sequences, ensembles, choix et types etiquetes) independamment de tout langage de programmation ou processeur. La norme complementaire X.690 definit les codages binaires : BER (de base), CER, DER (distinguished), tandis que X.691 definit PER (compact). Chaque element est un triplet tag-length-value (TLV), ce qui explique pourquoi un certificat X.509 est litteralement une SEQUENCE de TBSCertificate, signatureAlgorithm et signatureValue.
ASN.1 est au coeur de X.509/PKI, CMS/PKCS#7, PKCS#12, LDAP, Kerberos, SNMP et de la signalisation telecom (3GPP S1AP/NGAP, GSM MAP). DER est essentiel pour la securite : il impose un unique codage canonique (longueur definie, entiers minimaux, SET OF trie), de sorte qu'une signature ou un hachage sur une structure ASN.1 est reproductible et ne peut etre recode silencieusement. La permissivite de BER (longueurs indefinies, etiquettes redondantes) est une source classique de differences entre parseurs (parser differentials) et de contournements de signature.
Comme l'analyse du certificat a lieu avant l'authentification, les decodeurs ASN.1 constituent une surface d'attaque de grande valeur. Des failles reelles incluent CVE-2016-2108 (corruption memoire par "zero negatif" dans un champ ANY d'OpenSSL), CVE-2021-3712 (lecture hors limites sur des ASN1_STRING non termines par NUL, fuite de memoire de cles) et CVE-2022-0778 (une boucle infinie atteignable en analysant un certificat forge). Defenses : utiliser des decodeurs surs en memoire ou durcis par fuzzing, imposer un DER strict, et plafonner la profondeur d'imbrication et la longueur.
flowchart LR
S[ASN.1 schema in X.680] --> M[In-memory structure]
M --> ENC{Encoding rules}
ENC -->|DER canonical| D[Bytes for signing / PKI]
ENC -->|BER permissive| B[Bytes - interop only]
ENC -->|PER compact| P[Bytes for telecom links]
D --> W[Wire / stored certificate]
B --> W
P --> W
W --> DEC[TLV decoder]
DEC --> V{Strict DER & bounds checks?}
V -->|Yes| OK[Validated object]
V -->|No| VULN[Parser differential / overflow / DoS]● Exemples
- 01
Un certificat X.509 est une SEQUENCE de TBSCertificate, signatureAlgorithm et signatureValue, codee en DER.
- 02
Les messages S1AP 3GPP entre un eNodeB et un MME sont decrits en ASN.1 et codes en PER.
● Questions fréquentes
Qu'est-ce que ASN.1 ?
Abstract Syntax Notation One : une norme ITU-T (serie X.680) qui decrit, de maniere independante du langage, des structures de donnees utilisees en cryptographie et en telecoms. Cette notion relève de la catégorie Cryptographie en cybersécurité.
Que signifie ASN.1 ?
Abstract Syntax Notation One : une norme ITU-T (serie X.680) qui decrit, de maniere independante du langage, des structures de donnees utilisees en cryptographie et en telecoms.
Comment se défendre contre ASN.1 ?
Les défenses contre ASN.1 combinent habituellement des contrôles techniques et des pratiques opérationnelles, comme détaillé dans la définition ci-dessus.
Quels sont les autres noms de ASN.1 ?
Noms alternatifs courants : Abstract Syntax Notation One, X.680.