Immagina di voler identificare gli utenti in modo più sicuro rispetto all'uso di nome utente / password, ad es. un token hardware. Tuttavia, non posso emettere loro smartcard. È una buona idea provare a utilizzare carte bancarie abilitate NFC a tale scopo, ad es. con il seguente flusso (nota: questo non esegue alcuna transazione, in quanto non va a nessun gateway emittente di carte):
- L'utente dovrebbe avere un'app per smartphone specifica installata
- L'utente richiede di accedere in un sito web
- L'utente è invitato a presentare la scheda contactless al telefono con l'app aperta (o l'applicazione viene automaticamente aperta al contatto NFC)
- L'utente presenta la carta ed è richiesta per il PIN, che digita nell'app
- L'app ha ottenuto una sfida una tantum dal server, che invia alla carta
- La carta firma la sfida
- La sfida firmata e un numero di carta di credito trasformato (ad esempio utilizzando bcrypt) vengono inviati al server
- Il server corrisponde al numero trasformato (che funge da identificatore) per l'utente che ha richiesto l'accesso da un browser, verifica la sfida firmata utilizzando la chiave pubblica della carta e lo lascia all'utente.
Se ciò non sembra troppo assurdo, alcune domande di follow-up:
- La dimensione della chiave delle carte bancarie è abbastanza grande?
- Il protocollo EMV consente di firmare una sfida in questo modo (so che fa come parte di un flusso di transazioni, ma potrebbero esserci alcuni avvertimenti)
- Può essere creata un'app per uso generico (Android / iOS), oppure le carte presentano variazioni significative nelle loro implementazioni EMV
- I keypair EMV hanno certificati X.509 corrispondenti emessi da qualche CA? E i certificati revocati possono essere controllati?