Protezione delle tessere RFID [duplicate]

2

Supponiamo di emettere tessere associative RFID per eventi. Le persone possono avere le loro carte di credito, ID personale, ecc legati a questa tessera. Quando vengono ai miei eventi, possono usare questa carta per pagare le cose, verificare l'età, ecc.

Da quanto ho capito, le schede RFID sono abbastanza banali da duplicare e quindi rubare in remoto.

Quali sono le cose ragionevoli che potrei fare per proteggermi da questo?

Un'idea che ho avuto - registrare un cambiamento nonce sulla scheda RFID. Ogni volta che scansioniamo la carta, controlliamo se il nonce corrisponde a quello che abbiamo nel database. Se non corrisponde, quella carta è contrassegnata come compromessa. Se corrisponde, autorizziamo la transazione, sovrascriviamo una nuova nonce alla carta e la salviamo nel database. (oltre a cose come controllare che la carta non sembri contraffatta)

    
posta ieatpizza 11.07.2015 - 18:47
fonte

2 risposte

1

È possibile emettere contenitori schermati per le carte. Si tratta di maniche di plastica dotate di un sottile foglio di metallo su entrambi i lati della manica, rendendo impossibile la scansione della carta. Quando l'utente deve autenticarsi o verificare, può semplicemente estrarre la carta. Ci sono più lussuosi contenitori schermati che separano la piastra dalla carta quando vengono pizzicati insieme, rendendo il processo più facile e veloce.

Ovviamente, questo non offre alcuna protezione agli utenti che consentono di duplicare la loro carta.

Il problema con la soluzione suggerita è che quando una carta contraffatta viene utilizzata prima di quella legittima, la contraffazione manterrà la funzionalità mentre la carta legittima verrà contrassegnata come contraffatta. Nel migliore dei casi questo servirà da indicatore che la carta che viene offerta è copiata o copiata.

Temo che sia quanto puoi fare per proteggere un token statico.

    
risposta data 12.07.2015 - 12:21
fonte
1

Dovresti usare le smart card. Possono gestire crypto e divulgare i loro contenuti solo sulla presentazione di una chiave, oltre a crittografare la comunicazione lettore / scheda in modo che il sniffing non funzioni.

Per le carte contattate suppongo che una scheda PKI funzionerebbe, dove la carta dimostra che ha la chiave privata per un particolare certificato, e la usi per estrarre il record dell'utente da un database. Il problema è che non è possibile memorizzare dati significativi su di esso (oltre a una chiave privata), che richiede l'utilizzo di un database e quindi impedisce l'utilizzo offline della scheda. Non so se ci siano carte contattate che archiviano semplicemente dati arbitrari e li restituiscano alla presentazione di una chiave.

Per le carte contactless (NFC) ci sono le carte Mifare che possono memorizzare i dati e solo rivelarli sulla presentazione di una chiave. Non fanno crypto (non esiste un concetto di crittografia asimmetrica, sono solo cose semplici come "dammi la chiave per il blocco dati XX, se la chiave è OK ti restituisco il contenuto del blocco") ma d'altra parte puoi archiviare arbitrariamente dati e quindi consentire ai dispositivi offline di interagire ancora con la scheda con il sistema rimanente sicuro (se implementato correttamente).

Le chiavi stesse non sono bruteforceable (troppe possibilità) ma alcune carte avevano difetti (Mifare classico per esempio) che permettevano di ottenere la chiave di un settore e quindi usare un altro difetto per recuperare tutte le chiavi di altri settori dalla conoscenza di un singolo uno. Tuttavia questi difetti sono stati corretti nelle ultime revisioni delle carte.

Per la tua applicazione, le seguenti schede potrebbero essere adatte:

  • Mifare Ultralight EV1 - utilizza una chiave a 32 bit per proteggere i dati memorizzati su di esso, anche se la comunicazione con il lettore non è crittografata ed è quindi vulnerabile allo sniffing.
  • Mifare Ultralight C - utilizza la crittografia 3DES tra il lettore e la scheda, una sicurezza migliore di quella precedente.
  • Mifare Plus - versione aggiornata di Mifare Classic che mitiga le sue vulnerabilità, utilizza chiavi e crittografia proprietaria roll-your-own, non sicuro se sono stati scoperti difetti in questa nuova revisione poiché le vulnerabilità Classic sono state risolte.
  • Mifare DESFire EV2 - ultima revisione della serie DESFire, supporta la crittografia AES.

Indipendentemente dalla carta scelta da questo elenco, ti suggerisco di implementarla in questo modo:

  • un blocco di dati con qualche ID utente o riferimento al record dell'utente nel database, impostato su accesso pubblico, quindi non è necessaria alcuna chiave (o una chiave predefinita, a bassa sicurezza). Puoi anche utilizzare l'UID della scheda ma attenzione, potrebbero non essere univoci.

  • una volta letto quel blocco (o UID) viene letto il computer collegato al lettore cerca l'utente nel database e ottiene la sua chiave univoca per scheda per autenticare e recuperare altri blocchi di dati riservati per dimostrare effettivamente all'utente è chi sta fingendo di essere (tramite un nonce o un valore segreto memorizzato lì) e qualcuno non ha semplicemente clonato l'ID utente disponibile pubblicamente dal primo settore.

  • puoi crittografare i dati della carta ancora una volta (puoi utilizzare l'UID della carta come IV) con una chiave che solo la tua infrastruttura conosce (preferibilmente un singolo per utente), in questo modo se qualcuno riesce ancora a entrare dei dati riservati memorizzati sulla carta, non avranno molto senso.

  • non utilizzare UID per qualcosa di sensibile, si dovrebbe presumere che non siano univoci, possano essere facilmente letti e duplicati (nonostante ciò che NXP dice sull'unicità dell'UID, ci sono "magiche" contraffazioni Mifare disponibili che permette di cambiare l'UID usando un comando personalizzato).

risposta data 12.07.2015 - 16:00
fonte

Leggi altre domande sui tag