SIMPLE-TLV vs BER-TLV

j'ai trouvé dans les docs, ils se réfèrent SIMPLE-TLV et BER-TLV . J'ai regardé dans la plupart des EMV et GP docs, mais ils n'ont pas mentionné la différence.

quelqu'un Pourrait-il m'aider à comprendre la différence entre les deux ?

16
demandé sur Chris Benard 2013-09-17 19:23:08

2 réponses

champs de données ISO / IEC 7816-4 pour Cartes À Puce

codage BER

ceci est la spécification du codage BER utilisé par ISO / IEC 7816-4:

chaque objet de données BER-TLV doit être composé de 2 ou 3 champs consécutifs. (voir ISO / CEI 8825 et annexe D).

le champ T est composé d'un ou plusieurs octets consécutifs. Il encode une classe, un type et un nombre. Le champ de longueur se compose d'un ou plusieurs octets consécutifs. IL code un entier L. Si L n'est pas nul, alors le le champ de valeur V se compose de L octets consécutifs. Si L est nul, alors le objet de données est vide: il n'y a pas de champ de valeur.

notez que la norme ISO / IEC 7816 ne permet l'utilisation que d'un maximum de 5 octets de longueur (spécifiant une taille allant jusqu'à 2^32 - 1 octets) dans la norme actuelle. Le codage de longueur indéfinie n'est pas supporté non plus. Ces limites sont propres aux cartes à puce.

la spécification BER TLV est beaucoup plus large, comme l'indique la partie "simple" de SIMPLE-TLV. Je n'entrerai pas dans les détails trop car il ya beaucoup d'informations disponibles sur internet.

normalement, BER ne doit être utilisé que comme encodage de ASN.1 structures, avec L'ASN.1 syntaxe définissant la structure. La norme ISO 7816-4 fait cependant tout foirer et ne spécifie que les octets de la balise BER directement.

notez que parfois DER est spécifié au lieu de BER. Dans ce cas, beaucoup n'utilisent que le minimum nombre d'octets pour la taille du champ length-e.g. 05 dans les exemples ci-dessous. Il convient également de noter que la spécification ISO/IEC du codage BER est essentiellement une copie de la norme X. 690 spécifique aux États-Unis.

encodage simple-TLV

chaque objet de données TLV SIMPLE doit être composé de 2 ou 3 données consécutives Fields.

le champ t se compose d'un seul octet codant seulement un nombre de 1 à 254 (p. ex. Identificateur de document). Code IT aucune classe et aucun la construction de type. Le champ de longueur se compose de 1 ou 3 consécutifs octet. Si le premier octet du champ de longueur est dans la plage de '00' à 'FE', alors le champ length se compose d'un seul octet codant un entier L évalués de 0 à 254. Si le premier octet est égal à 'FF', puis le champ length continue sur les deux octets suivants qui encodent un entier L avec une valeur de 0 à 65535. Si L pas null, alors le champ de valeur V se compose d'octets consécutifs. Si L est null, alors l'objet de données est vide: il n'y a pas de champ de valeur.

Echantillons

les échantillons suivants sont tous utilisés pour transmettre le même numéro d'étiquette (qui définit le champ) et la même valeur, sauf une qui définit la balise numéro 31 pour BER.

exemple SIMPLE-TLV

0F 05 48656C6C6F                 // tag number 15, length 5 then the value
0F FF0005 48656C6C6F             // tag number 15, length 5 (two bytes), then the value

exemple BER-TLV:

4F 05 48656C6C6F                 // *application specific*, primitive encoding of tag number 15, length 5 then the value
4F 8105 48656C6C6F               // the same, using two bytes to encode the length
4F 820005 48656C6C6F             // the same, using three bytes to encode the length
4F 83000005 48656C6C6F           // the same, using four bytes to encode the length
4F 8400000005 48656C6C6F         // the same , using five bytes to encode the length
5F0F 05 48656C6C6F               // **invalid** encoding of the same, with two bytes for the tag, specifiying a tag number 15 which is smaller than 31
5F1F 05 48656C6C6F               // application specific, primitive encoding of **tag number 31**

Différences

Les différences suivantes doivent être mentionnées:

  • SIMPLE-TLV est une autre méthode de codage pour la balise et de la longueur (bien que le codage peut ressembler, par exemple lors de l'utilisation d'un seul octet pour indiquer la longueur de la partie)
  • SIMPLE-TLV ne contient pas d'informations sur la classe de la champ, par exemple s'il est défini pour ASN.1 (parce qu'il n'est pas lié à L'ASN.1)
  • SIMPLE-TLV ne contient pas d'information si elle est primitive ou de la construction (primitive directement spécifie une valeur, moyen construit imbriquée TLV structures)
  • SIMPLE-TLV a des restrictions concernant le numéro d'étiquette (entre 1 et 254, inclusivement) et la longueur (jusqu'à 65535)
23
répondu Maarten Bodewes 2015-10-24 17:58:37

simple TLV se compose simplement D'étiquette (ou de Type), La longueur, et la valeur.

le TLV-BER est un TLV spécial qui a une ou plusieurs TLV à l'intérieur de sa valeur. Il a donc une structure composite.

Tag1 Len1 Tag2-Len2-Value2 Tag3-Len3-Value3 ... TagN-LenN-ValueN
          ------------------------Value1------------------------
1
répondu David 2013-09-19 08:02:54