Basic Encoding Rules
# Basic Encoding Rules

Le codage Basic Encoding Rules (règles d'encodage basique), dont l'acronyme est BER, est un des formats d'encodage définis par le standard ASN.1.

## Description

Le BER fait partie des premières règles édictées par le standard ASN.1 pour l'encodage 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 encoder 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 (en) 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 encoder les structures de données ASN.1, qui se décrit et se délimite lui-même. Chaque élément est encodé avec un type, une longueur, les valeurs et si nécessaire un marqueur de fin. Ce type d'encodage est couramment surnommé type-length-value (en) (type-longueur-valeur) ou simplement encodage 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.

## 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 encodages 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 ». Par exemple, lorsqu'il encode 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. Le récepteur doit être capable d'accepter tous les encodages conformes pour se dire conforme au codage BER. D'un autre côté, les encodages CER et DER font de la longueur une spécification optionnelle.

Une idée commune sur BER est qu'il serait « inefficace » comparé à d'autres règles d'encodage. 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 d'encodage. Ces implémentations reposent sur la flexibilité de BER pour utiliser une logique d'encodage 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 d'encodage dont le Packed Encoding Rules (en), qui a pour objectif d'améliorer les performances et la taille de BER.

Des alternatives fournissant la flexibilité de BER mais utilisant d'autres encodages sont toujours développées. Les plus populaires sont basées sur XML, comme le XML Encoding Rules (en) et l'ASN.1 SOAP. De plus, il existe un standard pour convertir les schémas XML en schémas ASN.1 qui peut lui-même être encodé en utilisant BER.

## Utilisation

BER reste malgré tout un format populaire pour transmettre des données entre des systèmes dont l'encodage natif diffère :

* le protocole SNMP demande l'encodage ASN.1 avec BER ;
* le standard de signature numérique PKCS#7 utilise également ASN.1 avec BER pour encoder les messages chiffrés ;
* de nombreux systèmes de télécommunications utilisent ASN.1 avec BER pour transmettre des messages à travers leur réseau, comme l'ISDN et les services de téléphonie mobile ;
* les messages LDAP sont encodés en BER.
