Online Store

Mifare Classic și MIFARE Plus IC memorie NDEF metode de cartografiere a datelor

Directorul de aplicații MIFARE #

Metodele NDEF de mapare a datelor de memorie ale MIFARE Classic și MIFARE Plus IC utilizează structura directorului aplicației MIFARE (MAD).

Directorul de aplicații MIFARE (MAD) identifică aplicația căreia îi aparțin informațiile stocate în fiecare sector de memorie.

Au fost specificate două directoare de aplicații MIFARE:

      1. Directorul de aplicații MIFARE 1 (MAD1): MAD1 POATE fi utilizat în orice produs compatibil MIFARE Classic. MAD1 este situat în sectorul MAD (sectorul 00h), În cazul în care MAD1 este utilizat pe produse cu o dimensiune de memorie mai mare de 1Kbytes, numai 1Kbytes memorie pot fi utilizate și abordate de mad1. Prin urmare, memoria rămasă nu este utilizată pentru stocarea NDEF și rămâne gratuită.
      2. Directorul de aplicații MIFARE 2 (MAD2): MAD1 POATE fi utilizat în orice produs compatibil MIFARE Classic cu o dimensiune de memorie mai mare de 1Kbytes. MAD2 nu se aplică pentru produsele cu o dimensiune de memorie mai mică sau egală cu 1Kbytes. MAD2 este situat în sectoarele MAD (sectorul 00h și 10h)

Pentru fiecare aplicație, MAD asociază un identificator unic al aplicației (AID). Identificatorii aplicației (AID) sunt stocați în sectorul (sectoarele) MAD 00h.

AJUTORUL are o lungime de doi octeți și este împărțit în 2 câmpuri de câte un octet fiecare:

  1. codul clusterului de funcții (1 octet) care identifică clusterul căruia îi aparține aplicația și
  2. codul aplicației (1 octet) care identifică aplicația în interiorul clusterului. Pentru mai multe informații despre MAD1 și MAD2.

Byte de scop general (GPB) din sectorul MAD trebuie să fie setat cu un pic DA egal cu 1b (DA bit este bit mad disponibile de GPB).

Toate sectoarele neutilizate în prezent AR TREBUI să fie protejate prin scriere cu chei secrete definite de emitentul etichetei pentru a preveni redefinirea neintenționată a condițiilor de acces și a cheilor. Este recomandat să utilizați chei diferite pentru toate sectoarele libere. Acest lucru permite eliberarea viitoare a unor sectoare către noi furnizori de servicii, fără a fi nevoie să se elibereze toate sectoarele libere.

Acces la sectorul MAD #

Sectoarele de memorie în care sunt stocate MAD1 și MAD2 (a se vedea [MAD]), sunt protejate utilizând tasta A și tasta B. În funcție de [MAD] sectoarele de memorie sunt:

        • MAD1: sectorul MAD este de 00h (sectorul 0) și
        • MAD2: sectoarele MAD sunt 00h și 10h (sectorul 0 și sectorul 16).

Oricine trebuie să aibă voie să citească sectoarele MAD. Acest lucru se realizează prin utilizarea unei chei publice A descrise în tabelul 1 (a se vedea, de asemenea [MAD]).

Tabelul 1. Cheia publică O valoare a sectorului (sectoarelor) MAD

Octet 0 Octet 1 Octet 2 Octet 3 Octet 4 Octet 5
A0h A1h A2h A3h A4h A5h

Biții de acces pentru sectorul (sectoarele) MAD sunt setați la:

        • astfel cum este descris în tabelul 2, în cazul în care sectorul MAD a acordat acces la citire și scriere sau
        • astfel cum este descris în tabelul 3, în cazul în care sectorul MAD are acces doar în citire acordat (a se vedea, de asemenea [MF1K, MF4K, MFPLUS]).

În acest context, termenul de acces la citire și scriere acordat înseamnă că, pentru sectoarele MAD care au fost autentificate anterior cu cheia secretă B, este posibil să se citească și să se scrie toate blocurile de sector în afară de blocul de remorci sector (a se vedea tabelul 2 pentru mai multe detalii).

În schimb, termenul de acces doar în citire acordat înseamnă că, pentru sectoarele MAD care au fost autentificate anterior cu cheia publică A din tabelul 1 sau cu cheia secretă B, este posibil să se citească numai toate blocurile sectoriale, în afară de blocul de remorci sector (a se vedea tabelul 5 pentru mai multe detalii).

Folosind tasta A, este întotdeauna posibil să citiți numai blocurile din sectorul MAD. Remorcile sectoriale au o configurație de acces specială atunci când se acordă acces la citire/scriere sau acces doar în citire (a se vedea tabelul 2 și tabelul 3).

Sectoarele MAD AR TREBUI să fie protejate prin scriere prin intermediul cheii secrete B (de exemplu, definită de emitentul etichetei) sau prin setarea etichetei MIFARE Classic și MIFARE Plus ca doar în citire folosind biții de acces.

Tabelul 2. Setarea biților de acces pentru sectorul MAD cu accesul la citire și scriere acordat

Setarea biților de acces pentru sectorul 0 din MAD1 sau MAD2 și pentru sectorul 16 din MAD2
Biți de acces Valorile Remarci
C10 C20 C30 100bi Blocul 0 se citește cu tasta A sau tasta B și se scrie cu tasta B
C11 C21 C31 100b Blocul 1 este citit cu tasta A sau tasta B și scris cu cheia B
C12 C22 C32 100b Blocul 2 se citește cu tasta A sau tasta B și se scrie cu cheia B
C13 C23 C33 011b Blocul de remorci sector:

  • Tasta A este scrisă cu tasta B și nu se citește niciodată,
  • Biții de acces sunt citiți cu tasta A sau tasta B și scriși cu tasta B,
  • Cheia B este scrisă cu tasta B și nu se citește niciodată.
i. Valoarea recomandată pentru biții de acces C10 C20 C30 din sectorul 0 (blocul producătorului).

Tabelul 3. Setarea biților de acces pentru sectorul MAD cu acces doar în citire acordat

Setarea biților de acces pentru sectorul 0 din MAD1 sau MAD2 și pentru sectorul 16 din MAD2
Biți de acces Valorile Remarci
C10 C20 C30 010b Blocul 0 se citește cu tasta A sau tasta B
C11 C21 C31 010b Blocul 1 se citește cu tasta A sau tasta B
C12 C22 C32 010b Blocul 2 se citește cu tasta A sau tasta B
C13 C23 C33 110b Blocul de remorci sector:

  • Cheia A nu este niciodată scrisă și citită,
  • Biții de acces sunt citiți cu tasta A sau tasta B și nu sunt niciodată scriși,
  • Cheia B nu este niciodată scrisă și citită.
i. Valoarea recomandată pentru biții de acces C10 C20 C30 din sectorul 0 (blocul producătorului).

Blocuri TLV #

Un bloc TLV este format din unul până la trei câmpuri:

T (câmpul tag-ului sau câmpul T) TREBUIE să identifice tipul blocului TLV (a se vedea tabelul 9) și TREBUIE să constea dintr-un singur octet care codifică un număr de la 00h la FFh. Valorile etichetei 01h, 02h, 04h la FCh și FFh sunt rezervate pentru utilizare ulterioară.

L (câmp de lungime sau câmp L) TREBUIE să furnizeze dimensiunea în octeți a câmpului de valoare. Are două formate diferite compuse din unul sau trei octeți. Dispozitivul Reader TREBUIE să înțeleagă toate formatele de câmp de două lungimi. Fig. 5 prezintă cele două structuri de câmp de lungime diferite. Cu toate acestea, în funcție de valoarea câmpului etichetă, câmpul lungime poate să nu fie prezent.

  • Un format de octet: Formatul pe un octet TREBUIE să codifice lungimea câmpului de valoare între 00h și octeții FEh. Acest octet trebuie să fie interpretat ca un cardinal în cazul în care valoarea este între 00h și FEh. Dacă conține FFh, valoarea TREBUIE interpretată ca un steag care specifică faptul că câmpul de lungime este compus din mai mult de un octet.
  • Format de trei octeți consecutivi: Acest format TREBUIE să codifice lungimea câmpului de valoare între 00FFh și octeții FFFEh. Primul octet se presupune a fi un steag egal cu FFh care indică faptul că doi octeți mai mult lungime TREBUIE să fie interpretată ca un cuvânt. Acest cuvânt trebuie interpretat ca un cardinal în cazul în care valoarea este între 00FFh și FFFEh. Valoarea FFFFh este rezervată pentru utilizare viitoare (RFU).

V (câmp de valoare sau câmp V) Dacă câmpul lungime este egal cu 00h sau nu există nici un câmp lungime, nu trebuie să existe câmpul de valoare, adică blocul TLV este gol. Dacă există câmpul de lungime și indică o lungime a câmpului valoric N mai mare decât zero (N>0), câmpul de valoare TREBUIE să fie format din N octeți consecutivi.

Tabelul 4 listează blocurile TLV specificate de acest document care sunt descrise în secțiunile următoare.

Tabelul 4. BlocuriTLV definite  

Numele blocului TLV Valoarea câmpului tag Scurtă descriere
NULL TLV 00h Acesta ar putea fi utilizat pentru umplutura de zone de memorie și dispozitivul Reader trebuie să ignore acest lucru
Mesajul NDEF TLV 03h Acesta conține mesajul NDEF
Proprietate TLV FDh Etichetarea informațiilor proprietare
Terminator TLV FEh Ultimul bloc TLV din zona de date

Dispozitivul Reader TREBUIE să scrie blocurile TLV într-o ordine specifică în interiorul zonei de date, urmând regulile de mai jos:

  • Blocurile TLV TREBUIE să fie scrise în ordine începând de la octeții 0 din blocul 0 al sectorului NFC (sector care conține date NDEF) cu cea mai mică adresă.
  • Un bloc TLB poate fi memorat în două sau mai multe sectoare NFC.
  • Dacă este prezent Terminator TLV este ultimul bloc TLV de pe mifare Classic și MIFARE Plus tag-ul.

NULL TLV și Terminator TLV sunt singurele blocuri TLV care au o lungime de 1 octet (de exemplu, compuse numai din câmpul Etichetă, vedeți mai jos).

Dispozitive reader trebuie să ignore și să sară peste acele blocuri TLV care fac uz de valori rezervate câmp tag-ul (a se vedea mai sus). Pentru a trece peste un bloc TLV cu valori rezervate câmp tag-ul, dispozitivul Reader trebuie să citească câmpul de lungime pentru a înțelege lungimea câmpului de valoare.

Definițiile viitoare ale blocurilor TLV compuse numai din câmpul etichetă nu sunt compatibile înapoi cu această notă de aplicație.

Mesajul NDEF TLV #

Cel puțin un mesaj NDEF TLV TREBUIE să fie întotdeauna prezent în interiorul etichetei MIFARE Classic și MIFARE Plus. Mesajul NDEF TLV stochează mesajul NDEF în câmpul Valoare. Dispozitivul Reader trebuie să fie capabil să citească și să proceseze mesajul NDEF TLV găsit de procedura de detectare a NDEF (de asemenea, numit obligatoriu NDEF Mesaj TLV sau primul mesaj NDEF TLV); oricum mai departe NDEF Mesaj TLV blocuri pot fi prezente. Mai jos este prezentată codificarea câmpurilor 3 TLV ale mesajului NDEF TLV:

T TREBUIE să fie egal cu 03h (a se vedea tabelul 4).

L TREBUIE să fie egală cu dimensiunea în octeți a mesajului NDEF stocat.

V TREBUIE să stocheze mesajul NDEF.

Un mesaj NDEF gol TLV trebuie să fie definit ca un mesaj NDEF TLV cu câmp L egal cu 00h, și nici un câmp V (adică nici un mesaj NDEF este prezent în câmpul V, a se vedea [NDEF]).

Un mesaj NDEF non-gol TLV poate conține mesaje NDEF goale sau non-goale.

Proprietate TLV #

TLV proprietate conține informații de proprietate. O etichetă MIFARE Classic și MIFARE Plus TREBUIE să conțină zero, unul sau mai multe TLV proprietare. Dispozitivul Reader poate ignora datele conținute în acest bloc TLV. Mai jos este prezentată codificarea câmpurilor 3 TLV ale TLV proprietare:

T TREBUIE să fie egal cu FDh (a se vedea tabelul 4).

L TREBUIE să fie egală cu dimensiunea în octeți a datelor brevetate în câmpul Vale.

V TREBUIE să conțină orice date de proprietate.

NULL TLV #

TLV NULL poate fi utilizat pentru padding a zonei de date. O etichetă MIFARE Classic și MIFARE Plus POATE conține zero, unul sau mai multe TLV NULL. Dispozitivul Reader trebuie să ignore acest bloc TLV. NULL TLV SE compune dintr-un câmp etichetă de 1 octet. Sub codificarea câmpului etichetă al TLV NULL este prezentată:

T TREBUIE să fie egal cu 00h (a se vedea tabelul 4).

L NU trebuie să fie prezent.

V NU TREBUIE să fie prezent.

Terminator TLV #

Terminatorul TLV POATE fi prezent în interiorul etichetei MIFARE Classic și MIFARE Plus, iar un dispozitiv Reader TREBUIE să-l poată citi/procesa. Terminator TLV este ultimul bloc TLV în zona de memorie de date. Terminator TLV TREBUIE să fie compus dintr-un câmp tag-ul de 1 octet. Mai jos este prezentată codificarea câmpului tag-ului terminatorului TLV:

T TREBUIE să fie egal cu FEh (a se vedea tabelul 4).

L NU trebuie să fie prezent.

V NU TREBUIE să fie prezent.