SIMPLE-TLV vs BER-TLV

Odkryłem w dokumentach, że odnoszą się one do SIMPLE-TLV i BER-TLV . Byłem spojrzeć na większość EMV i GP docs, ale nie wspominali inaczej.

Czy ktoś mógłby mi pomóc zrozumieć różnicę dwóch ?

Author: Chris Benard, 2013-09-17

2 answers

Pola danych w ISO / IEC 7816-4 dla kart inteligentnych

Kodowanie BER

[[7]} jest to specyfikacja bardziej powszechnego kodowania BER używanego przez ISO/IEC 7816-4:

Każdy obiekt danych BER-TLV składa się z 2 lub 3 kolejnych pól (zob. ISO / IEC 8825 i załącznik D).

Pole znacznika T składa się z jednego lub więcej kolejnych bajtów. Koduje Klasa, typ i numer. Pole długości składa się z jednego lub więcej kolejne bajty. Koduje liczba całkowita L. Jeśli L nie jest null, to pole wartości V składa się z L kolejnych bajtów. Jeśli L jest null, to obiekt data jest pusty: nie ma pola value.

Należy zauważyć, że ISO / IEC 7816 zezwala tylko na użycie do 5 bajtów długości (określając rozmiar do 2^32-1 bajtów) w bieżącym standardzie. Kodowanie o nieokreślonej długości również nie jest obsługiwane. Ograniczenia te są specyficzne dla kart inteligentnych.

Specyfikacja BER TLV jest znacznie bardziej rozbudowana, jako "prosta" część SIMPLE-TLV wskazuje. Nie będę wdawać się zbytnio w szczegóły, ponieważ w Internecie jest mnóstwo informacji.

Normalnie BER powinien być używany tylko jako kodowanie ASN.1997: ASN1 składnia definiująca strukturę. ISO 7816-4 jednak psuje to i określa bezpośrednio tylko bajty znacznika BER.

Zauważ, że czasami zamiast BER podaje się DER. W takim przypadku wielu używa tylko minimalnej liczby bajtów dla rozmiaru pola length - np. 05 w próbkach poniżej. Należy również zauważyć, że specyfikacja ISO / IEC kodowania BER jest zasadniczo kopią standardu X. 690.

Kodowanie SIMPLE-TLV

Specyfikacja BER po niej następuje Specyfikacja SIMPLE-TLV, która jest specyficzna dla ISO 7816-4. Zauważ, że standard zapomina o bezpośrednim określeniu endianness. Można założyć kodowanie big endian w ISO / IEC 7816-4.

Każdy obiekt danych SIMPLE-TLV składa się z 2 lub 3 kolejnych pola.

Pole znacznika T składa się z pojedynczego bajtu kodującego tylko liczbę z Od 1 do 254 (np. identyfikator rekordu). Koduje bez klasy i nie Typ konstrukcyjny. Pole długości składa się z 1 lub 3 kolejnych bajtów. Jeśli bajt wiodący pola length znajduje się w zakresie od "00" do "FE" , wówczas pole length składa się z kodowania pojedynczego bajtu liczba całkowita l o wartości od 0 do 254. Jeśli bajt wiodący jest równy 'FF', następnie pole długości jest kontynuowane na dwóch kolejne bajty które kodują liczbę całkowitą L o wartości od 0 do 65535. If L in not null, wtedy pole wartości V składa się z kolejnych bajtów. Jeśli L jest null, wtedy obiekt danych jest pusty: nie ma pola value.

Próbki

Wszystkie poniższe próbki są używane do przekazania tego samego numeru znacznika (który definiuje pole) i wartości, z wyjątkiem jednego, który definiuje numer znacznika 31 DLA BER.

Sample 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

Próbka 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**

Różnice

Należy zauważyć następujące różnice:

    W przeciwieństwie do TLV, TLV może być używany do kodowania znaczników i długości (np. przy użyciu pojedynczego bajtu do wskazania części długości).]}
  • SIMPLE-TLV nie zawiera informacji o klasie pola, np. jeśli jest ono zdefiniowane dla ASN.1 (ponieważ nie jest powiązany z ASN.1)
  • SIMPLE-TLV nie zawiera informacji, jeśli jest w przeciwieństwie do poprzednich wersji, nie jest to możliwe.]} W przeciwieństwie do poprzednich wersji, TLV nie posiada znaczników, które mogą być używane tylko do celów reklamowych.]}
 23
Author: Maarten Bodewes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-24 17:58:37

Prosty TLV składa się po prostu ze znacznika( lub typu), długości i wartości.

BER-TLV jest specjalnym TLV, który ma jeden lub więcej TLV wewnątrz swojej wartości. Więc ma strukturę kompozytową.
Tag1 Len1 Tag2-Len2-Value2 Tag3-Len3-Value3 ... TagN-LenN-ValueN
          ------------------------Value1------------------------
 1
Author: David,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-19 08:02:54