El problema con este enfoque es que todos los destinos utilizan la misma identidad, por lo que los sitios pueden intercambiar notas para ver dónde ha estado y dibujar correlaciones que tal vez no desee exponer.
Hay varias formas de resolver este problema, como la que se usa en FIDO U2F clave de seguridad . En este caso, el dispositivo contiene una clave simétrica (no un par de claves asimétricas) y el hardware criptográfico necesario para que la clave secreta nunca tenga que abandonar el dispositivo.
En la inscripción en el sitio, el dispositivo crea un nuevo par de claves pública / privada y envía la clave pública al servidor junto con una "ID de clave" para esa clave. En la autenticación, el sitio envía al navegador la "ID de clave" para ese usuario y espera que la respuesta se firme con la clave pública correspondiente.
Pero en lugar de almacenar la clave privada correspondiente a cada ID de clave, la ID es la clave privada cifrada con la clave simétrica secreta del dispositivo.
Hay funciones adicionales al protocolo para hacer imposible el phishing, pero están fuera del alcance de esta respuesta.
Tenga en cuenta que esto solo es seguro porque el secreto nunca deja el hardware. El mismo principio es válido para cualquier token de seguridad de hardware; es la diferencia fundamental entre una verdadera clave de seguridad y algo así como una unidad de disco USB; Se puede copiar un dispositivo de almacenamiento. Esto está reñido con las claves implantadas por humanos porque el hardware necesario para realizar cálculos criptográficos reales mientras funciona con NFC requiere demasiada área para que quepan cómodamente bajo la piel.
El uso de un protocolo como este le brinda la ventaja adicional de que ya es compatible con los sitios de otras personas, por lo que solo debe preocuparse por su implementación local. Pero no es tan bueno para las claves SSH y tal. Si lo va a utilizar como una clave SSH, debe hacerlo para comunicarse de alguna manera con su agente clave (lo que probablemente significa escribir un nuevo agente clave).