Online Store

MIFARE Classic en MIFARE Plus IC geheugen NDEF data mapping methoden

MIFARE Applicatie Directory #

De NDEF-methoden voor het toewijzen van geheugengegevens van de MIFARE Classic en MIFARE Plus IC maken gebruik van de MIFARE application directory structure (MAD).

De MIFARE-toepassingsmap (MAD) identificeert tot welke toepassing de informatie die in elke geheugensector is opgeslagen, behoort.

Er zijn twee MIFARE-toepassingsmappen opgegeven:

      1. MIFARE-toepassingsmap 1 (MAD1): MAD1 KAN worden gebruikt in elk MIFARE Classic-compatibel product. De MAD1 bevindt zich in de MAD-sector (sector 00h), In het geval dat de MAD1 wordt gebruikt op producten met een geheugengrootte groter dan 1Kbytes, kan alleen 1Kbytes geheugen worden gebruikt en geadresseerd door de MAD1. Het resterende geheugen wordt daarom niet gebruikt voor NDEF-opslag en blijft vrij.
      2. MIFARE-toepassingsmap 2 (MAD2): MAD1 KAN worden gebruikt in elk MIFARE Classic-compatibel product met een geheugengrootte groter dan 1 Kbytes. MAD2 is niet van toepassing op producten met een geheugengrootte kleiner of gelijk aan 1Kbytes. De MAD2 bevindt zich in de MAD-sectoren (sector 00h en 10h)

Aan elke toepassing koppelt de MAD een unieke toepassings-ID (AID). De applicatie-ID's (AID's) worden 00h opgeslagen in de MAD-sector(en).

De AID is twee byte lang en is verdeeld in 2 velden van elk één byte:

  1. de functieclustercode (1 byte) die het cluster identificeert waartoe de toepassing behoort, en
  2. de toepassingscode (1 byte) die de toepassing in het cluster identificeert. Voor meer informatie over MAD1 en MAD2.

De General Purpose Byte (GPB) van de MAD-sector MOET worden ingesteld met een DA-bit gelijk aan 1b (DA-bit is het MAD-beschikbare bit van de GPB).

Alle momenteel ongebruikte sectoren MOETEN worden beveiligd met geheime sleutels die door de uitgever van de tag zijn gedefinieerd om te voorkomen dat de toegangsvoorwaarden en sleutels onbedoeld opnieuw worden gedefinieerd. Het wordt AANBEVOLEN om verschillende sleutels te gebruiken voor alle vrije sectoren. Dit maakt het mogelijk om sommige sectoren in de toekomst vrij te geven aan nieuwe dienstverleners zonder dat alle vrije sectoren hoeven te worden vrijgegeven.

MAD Sector Toegang #

De geheugensectoren waar de MAD1 en MAD2 zijn opgeslagen (zie [MAD]), worden beveiligd met de sleutel A en sleutel B. Volgens [MAD] de geheugensectoren zijn:

        • MAD1: de MAD-sector is 00h (sector 0), en
        • MAD2: de MAD-sectoren zijn 00h en 10h (sector 0 en sector 16).

Iedereen MAG de MAD-sectoren lezen. Dit wordt bereikt door gebruik te maken van een publieke sleutel A beschreven in tabel 1 (zie ook [MAD]).

Tabel 1. Publieke sleutel Een waarde van MAD-sector(en)

Byte 0 Byte 1 Byte 2 Zoekertjes Byte 3 Byte 4 Byte 5
A0u A1 uur A2h A3u A4 uur A5u

De toegangsbits voor de MAD-sector(en) zijn ingesteld op:

        • zoals beschreven in tabel 2 indien de MAD-sector lees- en schrijftoegang heeft verleend, of
        • zoals beschreven in tabel 3 indien de MAD-sector alleen-lezentoegang heeft verleend (zie ook [MF1K, MF4K, MFPLUS]).

In deze context betekent de term lees- en schrijftoegang die is verleend, dat het voor MAD-sectoren die eerder zijn geverifieerd met de geheime sleutel B, mogelijk is om alle sectorblokken te lezen en te schrijven, behalve het sectortrailerblok (zie tabel 2 voor meer informatie).

In plaats daarvan betekent de term alleen-lezentoegang die is verleend, dat voor MAD-sectoren die eerder zijn geauthenticeerd met de openbare sleutel A van tabel 1 of geheime sleutel B, het mogelijk is om alleen alle sectorblokken te lezen, behalve het sectortrailerblok (zie tabel 5 voor meer informatie).

Met behulp van toets A is het altijd alleen mogelijk om de blokken van de MAD-sector te lezen. Sectortrailers hebben een bepaalde toegangsconfiguratie wanneer lees-/schrijftoegang of alleen-lezentoegang wordt verleend (zie tabel 2 en tabel 3).

De MAD-sectoren MOETEN worden beveiligd tegen schrijven door middel van de geheime sleutel B (bijvoorbeeld gedefinieerd door de uitgever van de tag) of door de MIFARE Classic- en MIFARE Plus-tag in te stellen als alleen-lezen met behulp van de toegangsbits.

Tabel 2. Instelling toegangsbits voor de MAD-sector met de lees- en schrijftoegang die is verleend

Toegangsbitinstellingen voor sector 0 van MAD1 of MAD2 en voor sector 16 van MAD2
Toegang tot bits Waarden Opmerkingen
C10 C20 C30 100bi Blok 0 wordt gelezen met toets A of toets B en geschreven met toets B
C11 C21 C31 100b Blok 1 wordt gelezen met toets A of toets B en geschreven met toets B
C12 C22 C32 100b Blok 2 wordt gelezen met toets A of toets B en geschreven met toets B
C13 C23 C33 011b Het sectortrailerblok:

  • Sleutel A is geschreven met toets B en nooit gelezen,
  • Toegangsbits worden gelezen met sleutel A of sleutel B en geschreven met sleutel B,
  • Toets B is geschreven met toets B en nooit gelezen.
i. Aanbevolen waarde voor de toegangsbits C10 C20 C30 van sector 0 (fabrikantblok).

Tabel 3. Instelling voor toegangsbits voor de MAD-sector met alleen-lezen toegang

Toegangsbitinstellingen voor sector 0 van MAD1 of MAD2 en voor sector 16 van MAD2
Toegang tot bits Waarden Opmerkingen
C10 C20 C30 010b Blok 0 wordt gelezen met toets A of toets B
C11 C21 C31 010b Blok 1 wordt gelezen met toets A of toets B
C12 C22 C32 010b Blok 2 wordt gelezen met toets A of toets B
C13 C23 C33 110 ter Het sectortrailerblok:

  • Toets A wordt nooit geschreven en gelezen,
  • Toegangsbits worden gelezen met sleutel A of sleutel B en nooit geschreven,
  • Toets B wordt nooit geschreven en gelezen.
i. Aanbevolen waarde voor de toegangsbits C10 C20 C30 van sector 0 (fabrikantblok).

TLV blokken #

Een TLV-blok bestaat uit één tot drie velden:

T (tagveld of T-veld) MOET het type TLV-blok identificeren (zie tabel 9) en MOET bestaan uit een enkele byte die een getal van 00 uur tot FFh codeert. De tagwaarden 01h, 02h, 04h tot FCh en FFh zijn gereserveerd voor toekomstig gebruik.

L (lengteveld of L-veld) MOET de grootte in bytes van het waardeveld opgeven. Het heeft twee verschillende formaten die zijn samengesteld uit één of drie bytes. Het lezerapparaat MOET alle veldformaten met twee lengtes begrijpen. Figuur 5 toont de twee verschillende lengte veldstructuren. Afhankelijk van de waarde van het tagveld is het lengteveld echter mogelijk niet aanwezig.

  • Eén byte-indeling: Het formaat van één byte MOET de lengte van het waardeveld tussen 00h en FEh bytes coderen. Deze byte MOET worden geïnterpreteerd als een kardinaal als de waarde tussen 00h en FEh ligt. Indien de waarde FFh bevat, moet deze worden geïnterpreteerd als een markering die aangeeft dat het lengteveld uit meer dan één byte bestaat.
  • Drie opeenvolgende bytes-indeling: Dit formaat MOET de lengte van het waardeveld tussen 00FFh en FFFEh bytes coderen. De eerste byte wordt verondersteld een vlag te zijn die gelijk is aan FFh en aangeeft dat nog eens twee bytes lengte als een woord moet worden geïnterpreteerd. Dit woord MOET worden geïnterpreteerd als kardinaal als de waarde tussen 00FFh en FFFEh ligt. De waarde FFFFh is gereserveerd voor toekomstig gebruik (RFU).

V (waardeveld of V-veld) Als het lengteveld gelijk is aan 00 uur of als er geen lengteveld is, MAG het waardeveld NIET zijn, d.w.z. het TLV-blok is leeg. Als er een lengteveld is en een lengte van het waardeveld N groter dan nul (N>0) aangeeft, moet het waardeveld bestaan uit N opeenvolgende bytes.

Tabel 4 bevat de TLV-blokken die in dit document zijn opgegeven en die in de volgende secties worden beschreven.

Tabel 4. GedefinieerdeTLV-blokken  

TLV-bloknaam Tag veldwaarde Korte beschrijving
NULL TLV 00u Het kan worden gebruikt voor het opvullen van geheugengebieden en het lezerapparaat MOET dit negeren
NDEF-bericht TLV 03u Het bevat de NDEF-boodschap
Eigen TLV FDh Bedrijfseigen informatie taggen
Terminator TLV Feh Laatste TLV-blok in het gegevensgebied

Het lezerapparaat MOET de TLV-blokken in een specifieke volgorde binnen het gegevensgebied schrijven volgens de onderstaande regels:

  • De TLV-blokken MOETEN worden geschreven in volgorde vanaf byte 0 van blok 0 van de NFC-sector (sector die NDEF-gegevens bevat) met het kleinste adres.
  • Een TLB-blok KAN worden onthouden in twee of meer NFC-sectoren.
  • Indien aanwezig is de Terminator TLV het laatste TLV-blok op de MIFARE Classic- en MIFARE Plus-tag.

NULL TLV en Terminator TLV zijn de enige TLV-blokken die 1 byte lang zijn (bijvoorbeeld alleen samengesteld uit het tagveld, zie hieronder).

Leesapparaten MOETEN die TLV-blokken negeren en eroverheen springen die gebruik maken van gereserveerde tagveldwaarden (zie hierboven). Om over een TLV-blok met gereserveerde tagveldwaarden te springen, MOET het lezerapparaat het lengteveld lezen om de lengte van het waardeveld te begrijpen.

Toekomstige definities van TLV-blokken die alleen uit het tagveld bestaan, zijn niet achterwaarts compatibel met deze toepassingsnotitie.

NDEF-bericht TLV #

Ten minste één NDEF-bericht TLV MOET altijd aanwezig zijn in de MIFARE Classic- en MIFARE Plus-tag. Het NDEF-bericht TLV slaat het NDEF-bericht op in het veld Waarde. Het lezerapparaat MOET in staat zijn om het NDEF-bericht TLV te lezen en te verwerken dat is gevonden door de NDEF-detectieprocedure (ook wel verplicht NDEF-bericht TLV of eerste NDEF-bericht TLV genoemd); hoe dan ook, verdere NDEF Message TLV-blokken KUNNEN aanwezig zijn. Hieronder wordt de codering van de 3 TLV-velden van NDEF Message TLV weergegeven:

T IS gelijk aan 03h (zie tabel 4).

L MOET gelijk zijn aan de grootte in bytes van het opgeslagen NDEF-bericht.

V ZAL het NDEF-bericht opslaan.

Een leeg NDEF-bericht TLV MOET worden gedefinieerd als een NDEF-bericht TLV met L-veld gelijk aan 00h en geen V-veld (d.w.z. er is geen NDEF-bericht aanwezig in het V-veld, zie [NDEF]).

Een niet-leeg NDEF-bericht TLV KAN lege of niet-lege NDEF-berichten bevatten.

Eigen TLV #

De proprietary TLV bevat bedrijfseigen informatie. Een MIFARE Classic- en MIFARE Plus-tag MOET nul, één of meer eigen TLV bevatten. Het Reader-apparaat negeert mogelijk de gegevens in dit TLV-blok. Hieronder wordt de codering van de 3 TLV-velden van Proprietary TLV weergegeven:

T IS gelijk aan FDh (zie tabel 4).

L IS gelijk aan de grootte in bytes van de bedrijfseigen gegevens in het Vale-veld.

V MOET alle door eigendomsrechten beschermde gegevens bevatten.

NULL TLV #

De NULL TLV MAG worden gebruikt voor het opvullen van het gegevensgebied. Een MIFARE Classic- en MIFARE Plus-tag MAG nul, één of meer NULL TLV bevatten. Het readerapparaat MOET dit TLV-blok negeren. NULL TLV bestaat uit een tagveld van 1 bytes. Hieronder wordt de codering van het tagveld van de NULL TLV weergegeven:

T IS gelijk aan 00 uur (zie tabel 4).

L MAG NIET aanwezig zijn.

V MAG NIET aanwezig zijn.

Terminator TLV #

De Terminator TLV KAN aanwezig zijn in de MIFARE Classic- en MIFARE Plus-tag en een Reader-apparaat MOET deze kunnen lezen/verwerken. De Terminator TLV is het laatste TLV-blok in het gegevensgeheugengebied. Terminator TLV MOET bestaan uit een tagveld van 1 byte. Hieronder wordt de codering van het tagveld van de Terminator TLV weergegeven:

T MOET gelijk zijn aan FEh (zie tabel 4).

L MAG NIET aanwezig zijn.

V MAG NIET aanwezig zijn.