Basic Encoding Rules
Le codage Basic Encoding Rules (règles de codage basiques) ou son acronyme BER est un des formats de codage définie par le standard ASN.1.
Description
Le BER fait partie des premières règles édictées par le standard ASN.1 pour le codage d'informations abstraites dans un flux de données. Les règles, connues dans le jargon ASN.1 comme la syntaxe de transfert, donnent les séquences exactes d'octets qui sont utilisées pour coder une donnée. Cette syntaxe définit les éléments suivants : la représentation des types de données de base, la façon de construire des éléments complexes ou composés à partir d'éléments plus basiques. La syntaxe du codage BER, ainsi que ses sous-ensembles Canonical Encoding Rules (CER) et Distinguished Encoding Rules (DER) sont définis dans les standards X.690 de l'ITU-T, qui sont eux-mêmes une partie de la série de documents de l'ASN.1.
Le format BER donne un format pour coder les structures de données ASN.1, qui se décrit et se délimite lui-même. Chaque élément est codé avec un type, une longueur, les valeurs et si nécessaire un marqueur de fin. Ce type de codage est couramment surnommé type-length-value (type-longueur-valeur) ou simplement codage TLV. Ce format permet au récepteur du message de décoder des données au format ASN.1 même si le flux est incomplet et sans avoir de connaissances a priori de la taille, du contenu et de la sémantique des données[1].
Comparaison par rapport à des formats alternatifs
La différence clé du format BER (et également CER et DER) est la flexibilité apportée par sa syntaxe. Comme le dit le standard X.690 : "Des codages alternatifs sont permis par le BER comme une option de l'émetteur. Les récepteurs qui se disent conformes au BER devraient accepter toutes les alternatives"[1]. Par exemple, lorsqu'il code une valeur composée (c'est-à-dire une valeur composée de plusieurs valeurs plus petites et déjà encodées), l'émetteur peut utiliser une des trois formes pour indiquer la longueur des données[1]. Le récepteur doit être capable d'accepter tout les codages conformes pour se dire conforme au codage BER. D'un autre côté, les codages CER et DER font de la longueur une spécification optionnelle.
Une idée commune sur BER est qu'il est "inefficace" comparé à d'autres règles de codage. Les défenseurs de BER ont argumenté que cette impression était surtout due aux implémentations ratées plutôt qu'à des faiblesses dans les règles de codage[2]. Ces implémentations reposent sur la flexibilité de BER pour utiliser une logique de codage plus facile à coder, mais qui produit des données plus grosses que nécessaires. Que ces insuffisances soit réelles ou pas, cela a conduit à de nombreuses alternatives de codage dont le Packed Encoding Rules, qui a pour objectif d'améliorer les performances et la taille de BER.
D'autre alternatives fournissant la flexibilité de BER mais utilisant d'autres codages sont toujours développées. Les plus populaires sont basées sur XML, comme le XML Encoding Rules et l'ASN.1 SOAP[3]. De plus, il existe un standard pour convertir les schémas XML en schémas ASN.1 qui peut lui-même être codé en utilisant BER[4].
Utilisation
BER reste malgré tout un format populaire pour transmettre des données entre des systèmes dont le codage natif diffère.
- Le protocole SNMP demande le codage ASN.1 avec BER.
- Le standard de signature numérique PKCS#7 utilise également ASN.1 avec BER pour coder les messages chiffrés.
- De nombreux systèmes de télécommunication utilisent ASN.1 avec BER pour transmettre des messages à travers leur réseau[5], comme l'ISDN et les services des téléphones mobiles.
- Les messages LDAP sont codés en BER.
Notes et références
- ITU-T X.690, ISO 8825-1
- ↑ Lin, Huai-An. "Estimation of the Optimal Performance of ASN.1/BER Transfer Syntax". ACM Computer Communication Review. July 93, 45 - 58.
- ↑ ITU-T Rec. X.892, ISO/IEC 24824-2
- ↑ ITU-T X.694, ISO/IEC ISO/IEC 8825-5
- ↑ Site ASN.1 - Utilisations
(en) Cet article contient des extraits de la Free On-line Dictionary of Computing qui autorise l'utilisation de son contenu sous licence GFDL.