Online Store

Rilevamento e accesso NDEF – Tag MIFARE Classic & MIFARE Plus

Rilevamento e accesso NDEF #

Questo capitolo descrive come i dati NDEF (ad es. Messaggio NDEF) DEVONO essere memorizzati e accessibili nel tag MIFARE Classic e MIFARE Plus.

Il messaggio NDEF che questa nota applicativa gestisce all'interno di un MIFARE Classic e MIFARE Plus, viene memorizzato all'interno di un messaggio NDEF TLV che viene chiamato TLV del messaggio NDEF obbligatorio o primo TLV del messaggio NDEF. Il TLV obbligatorio del messaggio NDEF è anche il TLV del messaggio NDEF trovato dalla procedura di rilevamento NDEF (vedere la sezione 1. 4.1).

Gestione NDEF #

Per rilevare e accedere ai dati NDEF (ad es. Messaggio NDEF) all'interno del tag MIFARE Classic e MIFARE Plus, il MAD DEVE essere utilizzato (vedere la sezione 2.4) insieme al GPB dei Settori NFC.

Un identificatore di applicazione (AID) del MAD, chiamato NFC AID, è stato riservato per identificare i settori con dati NDEF. Un settore con dati NDEF è chiamato NFC Sector. I due campi dell'NFC AID sono impostati come segue:

il codice del cluster di funzioni è uguale a E1h per identificare il cluster di settori con dati NDEF, e

il codice dell'applicazione è pari a 03h per identificare il settore NFC a cui è correlata questa nota applicativa.

Uno o più Settori NFC POSSONO essere presenti all'interno di un tag MIFARE Classic 1k/4k.

Se è presente più di un settore NFC, i settori NFC DEVONO essere contigui. Nel caso di MIFARE Classic 4k o MIFARE Plus con 4 Kbyte, SARÀ considerata contigua una sequenza di Settori NFC che include il settore MAD 16.

Esempi di settori NFC contigui sono:

  • Settori NFC dal settore 2 al settore 3, e
  • Settori NFC dal settore 1 al settore 39. In questo caso, il settore MAD 16 è contenuto ma ancora come definito sopra i settori NFC sono considerati contigui.

Un esempio di settori NFC non contigui è:

  • il settore 3 e il settore 5 senza il settore 4 sono settori NFC. In questo caso il settore, 4 non è un settore NFC, quindi i due settori NFC rimanenti non sono contigui.

I dati NDEF DEVONO essere scritti a partire dal settore NFC con il numero di settore più piccolo fino a quello più grande.

Il General Purpose Byte (GPB, vedere la sezione 2.1 e la sezione 2.3) di ciascun settore NFC fornisce informazioni sul numero di versione del modello di mappatura utilizzato per memorizzare i dati NDEF in MIFARE Classic e MIFARE Plus (vedere la sezione 1. 1.1) e l'accesso in scrittura dei Settori NFC. GPB DEVE essere codificato come descritto nella Tabella 1.

Tabella 1. Struttura dei byte per uso generale

MSB Bit 7  Bit 6  Bit 5  Bit 4  Bit 3  Bit 2  Bit 1 lsb Bit 0
Mappatura del numero di versione Condizioni di accesso
Numero di versione principale Numero di versione secondaria Condizioni di accesso in lettura Condizione di accesso in scrittura

I 4 bit meno significativi (lsb) del GPB indicano le condizioni di accesso del Settore NFC:

  • Il bit 2-3 indica la condizione di accesso in lettura:
    • Il valore 00b indica l'accesso in lettura concesso senza alcuna protezione.
    • Il valore 11b indica che non è stato concesso alcun accesso in lettura.
    • Qualsiasi altro valore indica che le operazioni di sicurezza del fornitore sono necessarie per concedere l'accesso in lettura, ovvero proprietario.
  • Il bit 0-1 indica la condizione di accesso in scrittura:
    • Il valore 00b indica l'accesso in scrittura concesso senza alcuna protezione.
    • Il valore 11b indica che non è stato concesso alcun accesso in scrittura.
    • Qualsiasi altro valore indica che le operazioni di sicurezza del fornitore sono necessarie per concedere l'accesso in scrittura, ovvero proprietario.

I 4 bit più significativi (msb) indicano il numero di versione del mapping (vedere la sezione 1. 1.1):

  • Il bit 7-6 (i 2 msb del campo del numero di versione del mapping) indica il numero di versione principale.
  • Il bit 5-4 (il campo 2 lsb del numero di versione di mappatura) indica il numero di versione minore.

All'interno di un tag MIFARE Classic e MIFARE Plus, i settori NFC contenenti il messaggio NDEF obbligatorio TLV DEVONO essere impostati con condizioni di accesso in lettura pari a 00h e condizioni di accesso in scrittura uguali a 00b o 11b (vedere sezione 1. 3).

Il dispositivo Reader che implementa questa nota applicativa GESTIRÀ i tag MIFARE Classic e MIFARE Plus con numero di versione principale pari a 01b e numero di versione secondaria uguale a 00b, ovvero mappatura versione 1.0.

Trattamento delle versioni #

Il GPB dei settori NFC contiene il numero di versione di mappatura del modello di mappatura applicato del tag MIFARE Classic 1k/4k o MIFARE Plus. Il numero di versione del mapping è indicato con due numeri: numero di versione principale e numero di versione secondaria.

La gestione dei diversi numeri di versione maggiore e minore del tag MIFARE Classic o MIFARE Plus (chiamato MSVNo) e di quello implementato nel dispositivo Reader (chiamato NFCDevVNo) è spiegata nei 4 casi della Tabella 12.

Tabella 12. Gestione dei numeri di versione del documento di mappatura

No Caso del numero di versione Gestione
1 NFCDevVNo principale è uguale a MSVNo principale e

NFCDevVNo minore è maggiore o uguale a MSVNo minore

Il dispositivo Reader DEVE accedere al tag MIFARE Classic o MIFARE Plus e utilizzare tutte le funzionalità del documento di mappatura applicato a questo tag MIFARE Classic o MIFARE Plus.
2 Se NFCDevVNo maggiore è uguale a MSVNo principale e

NFCDevVNo minore è inferiore a MSVNo minore

Forse non è possibile accedere a tutte le funzionalità del tag MIFARE Classic o MIFARE Plus. Il dispositivo reader utilizzerà tutte le sue funzioni e accederà a questo tag MIFARE Classic o MIFARE Plus.
 

No Caso del numero di versione Gestione
3 Se NFCDevVNo principale è più piccolo di MSVNo principale Formato di dati incompatibile. Il dispositivo Reader non è in grado di comprendere i dati dei tag MIFARE Classic o MIFARE Plus. Il dispositivo reader RIFIUTA questo tag MIFARE Classic o MIFARE Plus.
4 Se NFCDevVNo principale è più grande di MSVNo principale Il dispositivo Reader potrebbe implementare il supporto per le versioni precedenti di questa specifica oltre alla versione principale. Nel caso in cui il dispositivo Reader abbia il supporto della versione precedente, DOVRÀ accedere al tag MIFARE Classic o MIFARE Plus. Al contrario, nel caso in cui il dispositivo Reader non abbia il supporto della versione precedente, rifiuterà il tag MIFARE Classic o MIFARE Plus.

Archiviazione NDEF #

Il formato dei dati del messaggio NDEF è definito in [NDEF]. Il messaggio NDEF DEVE essere memorizzato all'interno del campo dei valori del TLV del messaggio NDEF (vedere sezione 2.6.1) utilizzando uno o più settori NFC. I settori NFC sono identificati dall'NFC AID nel settore MAD.

Ciclo vitale #

I settori NFC di un tag MIFARE Classic o MIFARE Plus POSSONO trovarsi nei seguenti stati INIZIALIZZATO, LETTURA/SCRITTURA o SOLA LETTURA. I settori NFC DEVONO essere in un solo stato in un momento specifico. Lo stato DEVE essere riflesso dal contenuto dei settori NFC. Lo stato non è correlato a un singolo settore NFC ma a tutti i settori NFC insieme. Gli stati sono descritti nelle sezioni seguenti.

Se il tag MIFARE Classic o MIFARE Plus contiene solo settori NFC, lo stato dei settori NFC viene chiamato stato del tag MIFARE Classic o MIFARE Plus. Nella descrizione sottostante lo stato del tag MIFARE Classic o MIFARE Plus viene confuso con (cioè uguale a) lo stato dei settori NFC.

Ogni stato ha le sue operazioni valide chiamate transizioni o modifiche di stato. Le transizioni di stato sono rilevanti solo per i dispositivi di lettura, che sono in grado di scrivere tag MIFARE Classic o MIFARE Plus.

I diversi stati sono identificati confrontando il GPB del settore NFC in cui inizia il TLV obbligatorio del messaggio NDEF e i campi del TLV del messaggio NDEF obbligatorio. Si noti che i bit di accesso del trailer di settore descritti nella sezione 2.5 non vengono utilizzati in questa nota applicativa per identificare lo stato specifico.

Se il tag MIFARE Classic o MIFARE Plus non è in uno stato valido secondo questa nota applicativa, i dati NDEF del tag MIFARE Classic o MIFARE Plus in tutti i settori NFC DEVONO essere ignorati. I motivi POSSONO essere:

  • Settori NFC non contigui.
  • Nessun settore NFC è presente all'interno del tag, ovvero nessun settore è indicato dal MAD utilizzando l'NFC AID.
  • Mancata corrispondenza tra la lunghezza complessiva dei blocchi TLV e la lunghezza effettiva dell'area dati.
  • Blocco TLV non valido.

Stato INIZIALIZZATO #

Un tag MIFARE Classic o MIFARE Plus DEVE essere rilevato nello stato INIZIALIZZATO quando:

        • il GPB è impostato come descritto nella sezione 1. 1, in particolare con bit 0-1 uguale a 00b e bit 2-3 uguale a 00b (accesso in lettura e scrittura concesso),
        • il settore(i) NFC contiene un messaggio NDEF TLV (quello obbligatorio), e
        • il campo lunghezza del messaggio NDEF obbligatorio TLV è uguale a 00h.

Nello stato INIZIALIZZATO il dispositivo NFC PUÒ modificare il contenuto del messaggio NDEF obbligatorio TLV scrivendo un messaggio NDEF in esso. L'allegato D nel capitolo 10, l'allegato E nel capitolo 0 e l'allegato F nel capitolo 12 mostrano due esempi rispettivamente di MIFARE Classic 1k, MIFARE Plus con 2 Kbyte e MIFARE Classic 4k o MIFARE Plus con 4 Kbyte tutti nello stato INIZIALIZZATO.

Stato di LETTURA/SCRITTURA #

Un tag MIFARE Classic o MIFARE Plus DEVE essere rilevato nello stato READ/WRITE quando:

        • il GPB è impostato come descritto nella sezione 1. 1, in particolare con bit 0-1 uguale a 00b e bit 2-3 uguale a 00b (accesso in lettura e scrittura concesso),
        • il messaggio NDEF obbligatorio TLV è presente nei settori NFC, e
        • il campo lunghezza del TLV obbligatorio del messaggio NDEF è diverso da zero.

Lo stato DI LETTURA/SCRITTURA DEVE essere raggiunto tramite lo stato INIZIALIZZATO. In questo stato, il dispositivo NFC PUÒ modificare il contenuto del messaggio NDEF TLV obbligatorio scrivendo un messaggio NDEF in esso.

Stato DI SOLA LETTURA #

Un tag MIFARE Classic o MIFARE Plus DEVE essere rilevato nello stato DI SOLA LETTURA quando:

        • il GPB è impostato come descritto nella sezione 1. 1, in particolare con bit 0-1 uguale a 11b e bit 2-3 uguale a 00b (non è concesso l'accesso in scrittura, è concesso solo l'accesso in lettura),
        • il messaggio NDEF obbligatorio TLV è presente nei settori NFC, e
        • il campo lunghezza del messaggio NDEF obbligatorio TLV DEVE essere diverso da zero.

Nello stato DI SOLA LETTURA a tutti i settori NFC è concesso l'accesso in sola lettura. Il tag MIFARE Classic o MIFARE Plus rimane in uno stato di SOLA LETTURA per il ciclo di vita rimanente.

Descrizione della sequenza di comandi #

In questa sezione vengono descritte diverse procedure per gestire i dati NDEF, ad esempio il TLV obbligatorio del messaggio NDEF all'interno dei settori NFC. Anche i diversi cambiamenti di stato o transizioni tra gli stati del tag MIFARE Classic o MIFARE Plus sono mostrati in dettaglio.

Ogni settore coinvolto nelle procedure DEVE essere autenticato utilizzando l'operazione di autenticazione prima di leggerla o scriverla. La chiave pubblica A DEVE essere selezionata in base al tipo di settore, vale a dire settore MAD o settore NFC.

Procedura di rilevamento NDEF #

La procedura di rilevamento NDEF DEVE essere utilizzata per rilevare il messaggio NDEF obbligatorio (vedi [NDEF]) all'interno di un tag MIFARE Classic o MIFARE Plus.

La procedura di rilevamento NDEF si basa sul controllo di:

        • il settore o i settori MAD,
        • il/i settore/i NFC, e
        • il TLV obbligatorio del messaggio NDEF che contiene il messaggio NDEF.

Come già accennato, il TLV del messaggio NDEF trovato dalla procedura di rilevamento NDEF è chiamato TLV del messaggio NDEF obbligatorio o primo TLV del messaggio NDEF. Quando MIFARE Classic o MIFARE Plus è nello stato READ/WRITE o READ-ONLY, questo TLV del messaggio NDEF contiene un messaggio NDEF. Nello stato INIZIALIZZATO il messaggio NDEF TLV è vuoto.

NDEF graph(1) Dopo che un'operazione di autenticazione o di lettura non riesce, MIFARE Classic o MIFARE Plus non risponde più ad alcun comando e deve essere riattivato e selezionato per continuare la procedura di rilevamento NDEF.

Per eseguire la procedura di rilevamento NDEF il dispositivo reader (o dispositivo NFC) DEVE eseguire le seguenti operazioni (vedi anche Fig 6) su MIFARE Classic o MIFARE Plus:

  1. Verificare l'esistenza del settore o dei settori MAD.
  2. Autenticare e leggere i settori MAD: settore 0 per MAD1 o settori 0 e 16 per MAD2 utilizzando l'operazione di lettura.
  1. Se all'interno del MAD si trovano uno o più AID pari all'AID NFC relativi a uno o più settori contigui, andare al punto 4. In caso contrario, non è stato rilevato alcun NFC AID nel tag MIFARE Classic o MIFARE Plus e il tag MIFARE Classic o MIFARE Plus non è in uno stato valido.
  2. Per ogni settore NFC, eseguire le seguenti operazioni a partire dal numero di settore più piccolo a quello più alto:
    1. Autenticare e leggere il trailer del settore NFC utilizzando la chiave pubblica A per i settori NFC (vedere tabella 6).
    2. Se l'autenticazione e le operazioni di lettura hanno esito positivo, controllare il trailer di settore del settore NFC. In caso contrario, se l'autenticazione o l'operazione di lettura non riesce, viene trovato un settore NFC proprietario (vedere la descrizione del settore NFC di seguito), quindi andare al punto f.
    3. Se i bit 4-7 del GPB descrivono il numero di versione corretto secondo le regole sopra definite, vai al punto d. In caso contrario, interrompere la procedura perché il tag MIFARE Classic o MIFARE Plus non è in uno stato valido.
    4. Se il valore del campo della condizione di accesso in lettura (bit 2-3) del GPB è uguale a 00b e il valore della condizione di accesso in scrittura archiviato (bit 0-1) del GPB è uguale a 00b o 11b, leggere i blocchi di dati del relativo settore NFC utilizzando l'operazione di lettura specificata nella sezione 5.1.3, cercare ITLV del messaggio NDEF, e vai al punto e. In caso contrario, se il valore del campo di accesso in lettura del GPB è diverso da 00h o il valore della condizione di accesso in scrittura archiviato (bit 0-1) del GPB è diverso da 00b e 11b, si trova un settore NFC proprietario (vedere la descrizione del settore NFC di seguito), quindi andare al punto f.
    5. Se viene trovato un TLV del messaggio NDEF, questo è il TLV del messaggio NDEF obbligatorio (cioè il primo), quindi vai al punto 5. In caso contrario, se non viene trovato alcun messaggio NDEF TLV, andare all'elemento f.
    6. Se disponibile, controlla il prossimo settore NFC e vai alla voce a. In caso contrario, se non sono più disponibili settori NFC, interrompere la procedura perché non viene trovato alcun TLV del messaggio NDEF. Il tag MIFARE Classic o MIFARE Plus non è in uno stato valido.
  3. Se il campo lunghezza del messaggio NDEF obbligatorio TLV è diverso da zero, il messaggio NDEF (vedere [NDEF]) viene rilevato nel tag MIFARE Classic o MIFARE Plus e il dispositivo Reader PUÒ utilizzare la procedura di lettura NDEF o la procedura di scrittura NDEF. Se il campo di lunghezza è uguale a zero, non viene rilevato alcun messaggio NDEF nel tag MIFARE Classic o MIFARE Plus e il dispositivo Reader PUÒ utilizzare la procedura di scrittura NDEF (il tag potrebbe essere in stato INIZIALIZZATO).

La procedura di rilevamento NDEF non si riferisce a un messaggio NDEF valido. Legge la lunghezza del messaggio NDEF dal campo della lunghezza del TLV del messaggio NDEF ma non analizza il messaggio NDEF.

Il dispositivo Reader DEVE ignorare e saltare i settori NFC proprietari. Il settore NFC proprietario è definito come un settore NFC che è: o non autenticabile con la chiave pubblica A per i settori NFC o il valore del campo di accesso in lettura del GPB è diverso da 00b o la condizione di accesso in scrittura archiviata (bit 0-1) valore del GPB è diverso da 00b e 11b.

Ogni volta che un'operazione di autenticazione, un'operazione di lettura o un'operazione di scrittura non riesce, MIFARE Classic o MIFARE Plus rimane silenzioso e non risponde più a qualsiasi

Comandi. In questa situazione per continuare la procedura di rilevamento NDEF, MIFARE Classic o MIFARE Plus devono essere riattivati e selezionati.

Procedura di lettura NDEF #

La procedura di lettura NDEF viene utilizzata dal dispositivo Reader per leggere il messaggio NDEF dal TLV obbligatorio del messaggio NDEF. Prima di leggere il messaggio NDEF, la procedura di rilevamento NDEF DEVE essere eseguita e il tag MIFARE Classic o MIFARE Plus DEVE essere in uno stato valido.

Utilizzando la procedura di lettura NDEF, il dispositivo reader DEVE leggere l'intero messaggio NDEF dal TLV obbligatorio del messaggio NDEF utilizzando una o più operazioni di lettura. La lunghezza del messaggio NDEF da leggere è fornita dal campo lunghezza del TLV obbligatorio del messaggio NDEF obbligatorio.

Se il messaggio NDEF obbligatorio TLV è memorizzato in uno o più settori NFC, il dispositivo reader DEVE essere in grado di autenticare tutti questi settori con la chiave pubblica A per i settori NFC (vedere tabella 6). Nel caso in cui la procedura di autenticazione fallisca, il tag MIFARE Classic o MIFARE Plus non è in uno stato valido.

Procedura di scrittura NDEF #

La procedura di scrittura NDEF DEVE essere utilizzata dal dispositivo Reader per scrivere il TLV obbligatorio del messaggio NDEF contenente un messaggio NDEF all'interno di un tag MIFARE Classic o MIFARE Plus.

La procedura di scrittura NDEF utilizza le operazioni di lettura e scrittura (vedere la sezione 5.1.3 e la sezione 5.1.4).

Per scrivere il Messaggio NDEF il tag MIFARE Classic o MIFARE Plus DEVE essere in stato INIZIALIZZATO o READ/WRITE, ovvero il messaggio NDEF obbligatorio TLV DEVE essere già presente all'interno del tag MIFARE Classic o MIFARE Plus.

NDEF write procedure

Per eseguire la procedura di scrittura NDEF, il dispositivo Reader DEVE eseguire le seguenti operazioni sul tag MIFARE Classic o MIFARE Plus:

  1. Utilizzare la procedura di rilevamento NDEF (vedere sezione 1.4.1) per trovare il TLV obbligatorio del messaggio NDEF. Se viene trovato il messaggio NDEF obbligatorio TLV, vai al punto 2. In caso contrario, se non viene trovato alcun TLV del messaggio NDEF, terminare la procedura.
  2. Se la dimensione della memoria disponibile per il TLV del messaggio NDEF è uguale o superiore alla dimensione del messaggio NDEF, le operazioni seguenti DEVONO essere eseguite nel seguente ordine utilizzando una o più operazioni di scrittura:
    1. il campo lunghezza del messaggio NDEF obbligatorio TLV DEVE essere lungo un byte e il suo valore DEVE essere impostato su 00h,
    2. il nuovo messaggio NDEF DEVE essere scritto nel campo del valore del TLV obbligatorio del messaggio NDEF, e
    1. il campo lunghezza del messaggio NDEF obbligatorio TLV DEVE essere aggiornato con la lunghezza del messaggio NDEF.

In caso contrario, se non è disponibile spazio di memoria sufficiente nel tag MIFARE Classic o MIFARE Plus, il messaggio NDEF NON deve essere scritto nel tag MIFARE Classic o MIFARE Plus.

  1. Se il punto 2 viene eseguito correttamente, il dispositivo Reader DEVE scrivere il Terminator TLV nel byte successivo dopo il TLV del messaggio NDEF utilizzando l'operazione write.Il Terminator TLV NON deve essere scritto quando il messaggio NDEF obbligatorio TLV termina all'ultimo byte dell'ultimo settore NFC disponibile, ovvero il settore NFC con il numero di settore più grande.

Per quanto riguarda il punto 2 dell'operazione. b, la scrittura del campo valore del messaggio NDEF trovato TLV DEVE lasciare 1 o 3 byte per il campo di lunghezza che sono necessari per il successivo punto di operazione 2. c per memorizzare la lunghezza del messaggio NDEF.

La procedura di scrittura NDEF non modifica la posizione iniziale del TLV obbligatorio del messaggio NDEF.

La procedura di scrittura NDEF PUÒ scrivere il messaggio NDEF TLV su settori NFC contigui ad eccezione del settore MAD 16 nel caso in cui vengano utilizzati MIFARE Classic 4k e MIFARE Plus con 4 Kbyte.

La dimensione della memoria disponibile per il TLV del messaggio NDEF obbligatorio viene calcolata dalla posizione del TLV del messaggio NDEF obbligatorio come somma di:

  • lo spazio di memoria libero del settore NFC contenente il TLV del messaggio NDEF obbligatorio. Lo spazio di memoria libero inizia dall'inizio del TLV obbligatorio del messaggio NFC e termina alla fine del settore NFC, e
  • l'intero spazio di memoria dei Settori NFC successivi al settore contenente il messaggio NDEF TLV obbligatorio. I seguenti settori NFC POSSONO avere una dimensione di 48 byte (3 blocchi) o 240 byte (15 blocchi). Le informazioni sui seguenti settori NFC disponibili DEVONO essere recuperate dai settori MAD.

Per l'operazione di scrittura, la lettura di blocchi non completamente aggiornati è necessaria prima quando, ad esempio, il TLV del messaggio NDEF inizia nel mezzo di un blocco.

Cambiamenti di stato #

Questa sezione descrive le possibili modifiche di stato del tag MIFARE Classic o MIFARE Plus. La Fig 8 mostra gli stati e il cambiamento di stato (chiamato anche transizione) tra di loro. In questa nota applicativa, l'unica transizione specificata è da INITIALISED a READ/WRITE.

Il dispositivo Reader PUÒ emettere un tag MIFARE Classic o MIFARE Plus nello stato INIZIALIZZATO, NELLO STATO DI LETTURA/SCRITTURA o anche in uno stato DI SOLA LETTURA.life cycle transaction

Il passaggio da INIZIALIZZATO a LETTURA/SCRITTURA #

Per eseguire la transizione da INIZIALIZZATO a LETTURA/SCRITTURA il dispositivo Reader DEVE eseguire la seguente operazione: un messaggio NDEF TLV non vuoto (campo lunghezza diverso da zero) DEVE sostituire il precedente TLV messaggio NDEF vuoto utilizzando la procedura di scrittura NDEF. Il messaggio NDEF TLV è quello obbligatorio rilevato utilizzando la procedura di rilevamento NDEF.

Il messaggio NDEF vuoto PUÒ essere utilizzato per sostituire un messaggio NDEF non vuoto.