ASN.1
(
Abstract Syntax Notation One
) est un standard international specifiant une notation destinee a decrire des structures de donnees dans le secteur des
telecommunications
et des
reseaux informatiques
. La description en ASN.1 d'une structure de donnees a pour but d'obtenir une specification de la structure qui est independante d'un encodage lie a un materiel particulier et sans ambiguite.
L'ASN.1 est un standard defini conjointement par l'
organisation internationale de normalisation
, la
commission electrotechnique internationale
et l'
union internationale des telecommunications
. La notation est decrite dans la serie X.680
[
1
]
et les encodages dans la serie X.690
[
2
]
.
ASN.1 est une notation pour declarer des
types de donnees
. Cette notation ne decrit pas comment manipuler une variable basee sur un type ASN.1. Certains langages supportent nativement ASN.1 comme le langage de modelisation executable
SDL
(Specification and Description Language) ou comme la notation de test de conformite
TTCN-3
(Testing and Test Control Notation). Dans ces deux langages il suffit d'importer un module ASN.1 et on peut alors declarer une variable basee sur un des types declares dans le module ASN.1. Si le langage que l'on souhaite utiliser ne supporte pas nativement l'ASN.1, on peut utiliser des outils qui transforment la declaration ASN.1 dans une declaration d'un langage de programmation comme un
header
C.
Il existe plusieurs regles d'encodage standards pour les donnees decrites par l'ASN.1. Le standard propose les regles suivantes :
L'Encoding Control Notation permet a l'utilisateur de definir son propre encodage de maniere standard.
Client ::= SEQUENCE {
nom PrintableString (SIZE (1..40)),
rue PrintableString (SIZE (1..50)) OPTIONAL,
codepostal NumericString (SIZE (10) ),
ville PrintableString (SIZE (1..30)),
pays PrintableString (SIZE (1..20)) DEFAULT pays-pardefaut
}
pays-pardefaut PrintableString ::= "France"
Ce standard est mis en œuvre dans un grand nombre d'applications (gestion de reseaux, messagerie, securite, telephonie,
Internet
, etc.).
L'ASN.1 est par ailleurs l'un des formats utilises par le
NCBI
.
GNU Libtasn1
[
14
]
est une
bibliotheque
C
permettant la manipulation d'objets ASN.1, y compris pour les encodages
BER
/
DER
. C'est un
logiciel libre
ecrit a l'origine par
Fabio Fiorina
et aujourd'hui maintenu pour le
projet GNU
par Simon Josefsson et Nikos Mavrogiannopoulos. Cette brique logicielle est utilisee par
GnuTLS
pour traiter la structure de certificats
X.509
et par
GNU Shishi
pour le traitement de structures
Kerberos
version 5.
A l'origine, ce standard est specifie en 1984 dans une partie de la recommandation
X.409
du
CCITT
. Toutefois, en 1988, faisant suite a son large usage, la specification de l'ASN.1 devient l'objet du document CCITT X.208. Finalement, ce document sera retire en 2002 et le standard ASN.1 est maintenant decrit par les documents X.680 a X.683 mis a jour en 2009 (les documents ISO/CEI ont pour references 8824-1 a 8824-4). Plusieurs encodages de l'ASN.1 font l'objet des recommandations X.690 a X.695 ; notamment, les encodages BER, CER et DER sont specifies par le X.690.