Il problema con questo approccio è che la stessa identità viene utilizzata da ogni destinazione, quindi i siti possono scambiarsi le note per vedere dove sei stato e tracciare correlazioni che potresti non voler esporre.
Ci sono diversi modi per risolvere questo problema, come quello utilizzato nella Chiave di sicurezza FIDO U2F . In questo caso, il dispositivo contiene una chiave simmetrica (non una coppia di chiavi asimmetriche) e l'hardware crittografico necessario in modo che la chiave segreta non debba mai lasciare il dispositivo.
Durante la registrazione del sito, il dispositivo crea una nuova coppia di chiavi pubblica / privata e invia la chiave pubblica al server insieme a un "ID chiave" per quella chiave. In caso di autenticazione, il sito invia al browser "l'ID della chiave" per quell'utente e si aspetta che la risposta sia firmata con la chiave pubblica corrispondente.
Ma invece di memorizzare la chiave privata corrispondente a ciascun ID di chiave, l'ID è esso stesso la chiave privata crittografata con la chiave simmetrica segreta del dispositivo.
Ci sono funzioni aggiuntive al protocollo per rendere impossibile il phishing, ma queste esulano dallo scopo di questa risposta.
Si noti che questo è sicuro solo perché il segreto non lascia mai l'hardware. Lo stesso principio vale per qualsiasi token di sicurezza hardware; è la differenza fondamentale tra una vera chiave di sicurezza e qualcosa come una pen drive; un dispositivo di archiviazione può essere copiato. Ciò è in disaccordo con le chiavi impiantate dall'uomo perché l'hardware necessario per eseguire calcoli crittografici effettivi mentre è alimentato da NFC richiede troppa area per adattarsi comodamente sotto la pelle.
L'utilizzo di un protocollo come questo offre il vantaggio aggiuntivo che è già supportato dai siti di altre persone, quindi tutto ciò di cui ti devi preoccupare è la tua implementazione locale. Ma non è così buono per le chiavi SSH e così via. Se lo utilizzerai come chiave SSH, dovrai farlo in qualche modo comunicare con l'agente chiave (che probabilmente significa scrivere un nuovo agente chiave).