Vai al contenuto

RFID e MIFARE

Pubblicato:

RFID

La Radio Frequency Identification (RFID) è un protocollo di comunicazione fisica che funziona attraverso la propagazione nell’aria di onde elettro-magnetiche per rilevare in maniera univoca e automatica di dispositivi compatibili.

I tag possono essere non solo letti, ma anche scritti, permettendo di modificare le informazioni contenute nella memoria del chip, aggiornandole all’occorrenza. Le letture e scritture possono essere effettuate automaticamente e senza visibilità ottica, poiché la comunicazione avviene attraverso le onde radio, bypassando scatole e altre confezioni sufficientemente sottili. Per lo stesso motivo, però, lo scambio di dati viene bloccato da materiali che assorbono o riflettono le onde elettromagnetiche, come i metalli. Grazie all’identificatore univoco di ogni transponder, tag multipli possono essere letti e scritti in contemporanea, velocizzando alcune operazioni di inventario o controllo.

Loading diagram...

Componenti

Un sistema RFID coinvolge due dispositivi.

Abbiamo un transponder, detto anche tag, che contiene al suo interno un piccolo chip con i dati di interesse ed una semplice antenna che rende il dispositivo un piccolo ed essenziale apparato radio ricetrasmittente. Quando viene eccitato da un apparato esterno (fisso o portatile) con il quale stabilisce un dialogo via radio, il tag restituisce poi il suo codice identificativo e/o le altre eventuali informazioni contenute. La semplicità dei componenti rende i tag RFID molto economici nonché facili da inserire in qualsiasi oggetto, come una carta di credito o un badge.

La comunicazione è gestita dal reader (o controller), che attraverso il segnale radio legge l’identificativo del tag e può leggerne o scriverne la memoria, trasmettendo poi il segnale all’host (PC) o in cloud. La potenza del controller, unitamente al tipo di antenna ad esso collegata, ne determina una delle performance più importanti, ossia la distanza di lettura (del tag), che può essere qualificata in 4 tipologie:

RFID passiva e attiva

La tecnologia RFID si può suddividere in due categorie principali: passiva e attiva.

Per quanto riguarda i tag passivi, il dispositivo è completamente dipendente dal lettore, che gli fornisce l’energia necessaria ad alimentare il microprocessore al proprio interno attraverso un campo elettromagnetico catturato dalla propria antenna. Per questo motivo la distanza di lettura è piuttosto limitata. In base alla frequenza a cui opera, vi sono ulteriori classificazioni:

Nel caso di tag attivi, invece, il transponder è alimentato da una piccola batteria interna a lunga durata, il che lo rende in grado di trasmettere un segnale radio autonomamente. Quando interrogati dal sistema di lettura gli apparati RFID attivi sono in grado di trasmettere e ricevere dati anche a distanze di 100-500 metri (a seconda della loro frequenza e dell’ambiente circostante).

Esistono anche i tag semi-passivi, che sono alimentati da una batteria interna, ma non trasmettono segnali radio autonomamente, limitandosi a rispondere alle interrogazioni del lettore.

Loading diagram...

MIFARE

MIFARE è un marchio registrato di NXP Semiconductors, che produce una vasta gamma di tag RFID e smart card. Operano a 13,56 MHz e sono conformi allo standard ISO 14443A.

Sono molto popolari per il loro utilizzo in sistemi di pagamento e controllo accessi, grazie alla loro capacità di comunicare in maniera veloce e sicura con i lettori contactless.

I tag MIFARE sono divisi in due categorie principali:

Funzionalità

I tag MIFARE Classic offrono le seguenti funzionalità:

Cip MF1S50yyX/V1

Il chip MF1S50yyX/V1 è il cuore dei tag MIFARE Classic. Presenta diverse unità specializzate. Fra le più importanti abbiamo:

Loading diagram...

Struttura dati

I tag MIFARE sono divisi in settori e blocchi. L’intero tag possiede 16 settori, ognuno dei quali è a sua volta diviso in 4 blocchi da 16 byte ciascuno, per un totale di 64 byte per settore e 1024 byte per tag.

Loading diagram...

Il primo blocco del primo settore è riservato al costruttore. Se siamo a che fare con i più comuni NUID, i primi 4 bytes contengono l’identificativo del tag. Il quinto byte non è altro che un checksum dei primi 4 ottenuto tramite XOR: b4=b0b1b2b3b_4 = b_0 \oplus b_1 \oplus b_2 \oplus b_3. Ad esempio, se i primi 4 bytes sono 0xB3 0x61 0x47 0xF0, il quinto byte sarà 0x65. Nel caso di UID a 7 byte, il checksum è calcolato sui primi 7 byte. I bytes rimanenti possono essere usati a piacimento dal costruttore.

Loading diagram...

A partire dal secondo settore, i primi 3 blocchi possono essere utilizzati per memorizzare dati arbitrari a disposizione del lettore (nel primo settore, solo i due blocchi successivi al blocco 0). I blocchi di dati possono essere configurati con permessi di accesso differenti e si suddividono in blocchi di lettura/scrittura e blocchi valore. I blocchi valore consentono di effettuare delle operazioni aritmetiche più complesse sui dati che contengono (lettura, scrittura, incremento, decremento, ripristino e trasferimento). I dati nei blocchi valore hanno la dimensione di 4 byte. Si possono anche memorizzare indirizzi lunghi un byte. Il blocco ha anche una struttura ben precisa per minimizzare il rischio di errori. I primi 12 bytes contengono il valore, replicato due volte, con una delle due copie invertita. Gli ultimi 4 byte contengono l’indirizzo da un byte memorizzato quattro volte, di cui due invertito.

Loading diagram...

Il quarto blocco, invece, contiene le due chiavi di accesso al settore. Per essere precisi, i primi 6 byte del quarto blocco di un settore contengono la chiave A, seguiti da 3 byte che descrivono i permessi di accesso al settore (sola lettura, scrittura, etc.), un byte libero e infine 6 byte per la chiave B. Se la chiave B non è necessaria, lo spazio potrebbe essere utilizzato per memorizzare ulteriori dati.

Loading diagram...

Autenticazione a tre passi

Dopo aver selezionato una carta attraverso il suo UID, il lettore indica la zona di memoria a cui accedere e utilizza la chiave corrispondente per l’autenticazione a tre passi. Se l’autenticazione va a buon fine, tutte le comunicazioni successive sono cifrate.

I passaggi sono i seguenti:

  1. Il lettore specifica a quale settore accedere e sceglie la chiave A o B.
  2. La carta legge la chiave segreta e i permessi di accesso per quel settore. Quindi invia una nonce come sfida al lettore.
  3. Il lettore decifra la nonce con la stessa chiave utilizzata dal tag e calcola il risultato atteso. La risposta, insieme a una sfida casuale del lettore, viene quindi inviata alla carta.
  4. La carta verifica la risposta del lettore confrontandola con la propria sfida e quindi calcola la risposta alla sfida e la trasmette.
  5. Il lettore verifica la risposta della carta confrontandola con la propria sfida e inizia a richiedere operazioni di lettura/scrittura.
Loading diagram...

Il reader autenticato può richiedere le seguenti operazioni:

Integrità dei dati

Al fine di garantire l’integrità dei dati, soprattuto durante la comunicazione wireless, vengono impiegati:

Operazioni

Prima di poter accedere alla memoria, è necessario che il lettore abbia completato correttamente la procedura di autenticazione. Le operazioni consentite dipendono dalla chiave utilizzata e dai permessi di accesso impostati per il settore.

OperazioneDescrizioneSi applica a
LetturaLegge il contenuto di un bloccoTutti i blocchi
ScritturaScrive il contenuto di un bloccoTutti i blocchi
IncrementoIncrementa il contenuto di un blocco e memorizza il risultato nel buffer di trasferimentoBlocchi valore
DecrementoDecrementa il contenuto di un blocco e memorizza il risultato nel buffer di trasferimentoBlocchi valore
RipristinoMemorizza il valore di un blocco nel buffer di trasferimentoBlocchi valore
TrasferimentoTrasferisce il contenuto del buffer di trasferimento in un bloccoTutti i blocchi

I comandi che un tag MIFARE supporta, con il proprio identificativo, sono elencati di seguito:

CommandISO/IEC 14443Command code
RequestREQA26h (7 bit)
Wake-upWUPA52h (7 bit)
Anticollision CL1Anticollision CL193h 20h
Select CL1Select CL193h 70h
Anticollision CL2Anticollision CL295h 20h
Select CL2Select CL295h 70h
HaltHalt50h 00h
Authentication with Key A60h
Authentication with Key B61h
Personalize UID Usage40h
SET_MOD_TYPE43h
MIFARE Read30h
MIFARE WriteA0h
MIFARE DecrementC0h
MIFARE IncrementC1h
MIFARE RestoreC2h
MIFARE TransferB0h

Permesso di accesso

I permessi di accesso sono definiti in 3 bit, memorizzati nel terzo blocco di ogni settore. Il loro valore può essere alterato da un lettore autorizzato. I bit sono così definiti:

Bit di accessoComandi validiBlocco
c1-3, c2-3, c3-3Lettura, scrittura3
c1-2, c2-2, c3-2Tutte2
c1-1, c2-1, c3-1Tutte1
c1-0, c2-0, c3-0Tutte0
Loading diagram...

Le 8 combinazioni possibili hanno un significato diverso a seconda che si riferiscano a uno dei primi 3 blocchi del settore o all’ultimo (il trailer che contiene le chiavi). Per i blocchi dallo 0 al 2, i permessi hanno il seguente significato:

c1c2c3LeggereScrivereIncrementareDecrementare
000A/BA/BA/BA/B
010A/B
100A/BB
110A/BBBA/B
001A/BA/B
011BB
101B
111

Per l’ultimo blocco, si applicano invece i seguenti codici:

c1c2c3Leggere AScrivere ALeggere PermessiScrivere PermessiLeggere BScrivere B
000AAAA
010AA
100BA/BB
110A/B
001AAAAA
011BA/BBB
101A/BB
111A/B