¿Dónde se almacenan las claves FIDO U2F?

Aug 19 2020

Recibo información contradictoria sobre cómo se almacenan y utilizan las llaves de seguridad. ¿Dónde se almacenan las claves públicas y privadas? Si la clave privada se almacena en el propio Yubikey, ¿cuántas puede contener?

Si ambas claves están almacenadas en el servicio contra el que se está autenticando (Gmail), ¿envía al yubikey la clave privada para que descifre y use la clave privada para firmar?

Sitio web de Yubikey:

Durante el proceso de registro, los pares de claves se generan en el dispositivo (elemento seguro) pero los pares de claves no se almacenan en las YubiKeys . En cambio, el par de claves (clave pública y clave privada encriptada) es almacenado por cada parte / servicio de confianza que inició el registro. Por lo tanto, este enfoque permite asociar un número ilimitado de servicios con las YubiKeys con certificación U2F.

Sitio web de FIDO:

El dispositivo y el protocolo U2F deben garantizar la privacidad y seguridad del usuario. En el núcleo del protocolo, el dispositivo U2F tiene una capacidad (idealmente, incorporada en un elemento seguro) que acuña un par de claves pública / privada de origen específico. El dispositivo U2F proporciona la clave pública y un identificador de clave al sitio web o servicio en línea de origen durante el paso de registro del usuario. Más tarde, cuando el usuario realiza una autenticación, el sitio web o el servicio en línea de origen envía el identificador de clave al dispositivo U2F a través del navegador. El dispositivo U2F utiliza el identificador de clave para identificar la clave privada del usuario y crea una firma que se envía al origen para verificar la presencia del dispositivo U2F. Por lo tanto, Key Handle es simplemente un identificador de una clave particular en el dispositivo U2F.

https://fastmail.blog/2016/07/23/how-u2f-security-keys-work/

https://developers.yubico.com/U2F/

https://fidoalliance.org/specs/fido-u2f-v1.2-ps-20170411/fido-u2f-overview-v1.2-ps-20170411.html#site-specific-public-private-key-pairs

https://www.yubico.com/authentication-standards/fido-u2f/#toggle-id-4

Respuestas

2 Marc Aug 19 2020 at 12:14

Las claves se pueden almacenar en el dispositivo o cifrar y devolver en el identificador de claves . Ambos están permitidos (y mencionados) por la especificación.

De las consideraciones de implementación :

Los tokens U2F pueden no almacenar material de clave privada y, en su lugar, pueden exportar una clave privada envuelta como parte del identificador de clave.

También en la especificación de formato de mensaje sin procesar :

Un identificador de llave [longitud especificada en el campo anterior]. Este es un identificador que permite que el token U2F identifique el par de claves generado. Los tokens U2F pueden envolver la clave privada generada y la identificación de la aplicación para la que se generó, y generarla como identificador de clave.

Esto deja la decisión al fabricante del dispositivo U2F.

Yubico eligió devolver la clave privada cifrada como el identificador de la clave, lo que permite un número ilimitado de credenciales.

Si el fabricante de un dispositivo elige almacenar la clave privada en el propio dispositivo, la cantidad de claves posibles estará limitada por la cantidad de almacenamiento disponible. Tendría que mirar las especificaciones de un dispositivo específico.