Autenticación FIDO con claves de acceso

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Introducción

El estándar de autenticación FIDO (Fast IDentity Online) define un mecanismo de autenticación rápido y seguro para que los usuarios accedan a sitios web y aplicaciones.

La FIDO Alliance, con representantes de una rango de organizaciones, desarrolla especificaciones técnicas abiertas y escalables que permiten a las personas acceder a sitios web y apps a través de un protocolo común. Esto significa que cualquier empresa puede usar estándares FIDO a fin de implementar tecnologías, como claves, para la autenticación segura.

Una clave de acceso es una credencial de acceso FIDO vinculada a un origen (sitio web o aplicación) y un dispositivo físico. Las claves de acceso permiten que los usuarios se autentiquen sin tener que ingresar un nombre de usuario ni una contraseña, ni proporcionar ningún factor de autenticación adicional. Esta tecnología tiene como objetivo reemplazar las contraseñas como el mecanismo de autenticación principal.

¿Por qué es importante la autenticación segura?

Durante décadas, las contraseñas se utilizan para la autenticación en la computación. Sin embargo, la autenticación basada en contraseñas no es la opción más segura, ya que se pueden vulnerar las bases de datos y se pueden robar las contraseñas.

Muchos usuarios acceden a diferentes sitios web con las mismas contraseñas. Esto significa que, cuando se vulnera un sitio web, todas las demás cuentas que usan la misma contraseña están en riesgo. Por lo tanto, aunque hayas creado un sistema de contraseñas seguro, las personas seguirán en riesgo cuando la contraseña sea su única protección.

Algunos sitios y aplicaciones solicitan una segunda verificación mediante una segunda credencial que se envía por SMS, correo electrónico, aplicación, etc. Si bien esto es más seguro que usar una contraseña, este método de verificación en dos pasos aún es vulnerable a la suplantación de identidad (phishing), ya que el usuario puede convencerse de ingresar sus detalles de verificación en dos pasos en un sitio web malicioso.

¿Cómo aumenta la seguridad FIDO?

La autenticación basada en FIDO quita muchos de los problemas que surgen de la autenticación basada en contraseñas y de la autenticación que usa segundos pasos tradicionales. En particular, considera lo siguiente:

  • La autenticación FIDO usa criptografía de clave pública.
  • El FIDO ayuda a garantizar que las credenciales no se compartan con partes maliciosas ni otras partes que no sean propietarias de la credencial.

La criptografía de clave pública reduce la amenaza de violaciones potenciales de la base de datos. El usuario se registra con un solo origen (un sitio o una aplicación), lo que genera un par de claves públicas/privadas en el autenticador (un dispositivo físico). El servidor de origen almacena la clave pública del usuario, pero esta acción es inútil para un atacante. Un atacante no puede obtener la clave privada del usuario de los datos almacenados en el servidor, lo cual es necesario para completar la autenticación.

Con FIDO, el usuario no es responsable de confirmar que un sitio web o aplicación sea quien dice ser. Además, el usuario no es responsable de garantizar que las credenciales no se usen en los lugares incorrectos. FIDO vincula cada credencial a un origen específico, lo que significa que el dispositivo (no el humano) es responsable de identificar correctamente el sitio web o la aplicación.

Por ejemplo, supongamos que el usuario intenta acceder a example.com. Si el usuario solicita la credencial de propiedad de example.com en phishing-example.com, el autenticador rechazará la solicitud y protegerá al usuario. El proceso de autenticación dificulta que los sitios web o las apps de suplantación de identidad (phishing) obtengan una verificación destinada a otros orígenes.

En general, el FIDO y las claves de acceso te permiten implementar una autenticación más sólida que aún se puede usar y es fácil para la mayoría de los usuarios.

Demostración

¿Qué son las claves de acceso?

Una clave de acceso es una credencial digital que cumple con los estándares de FIDO y la autenticación web W3C (WebAuthn). De manera similar a una contraseña, los sitios web y las aplicaciones pueden solicitar que un usuario cree una clave de acceso para acceder a su cuenta.

Las claves de acceso dependen del desbloqueo de un dispositivo para verificar la identidad de un usuario. Esto se puede realizar con un sensor biométrico (como una huella dactilar o un reconocimiento facial), un PIN o un patrón. Primero, un usuario debe registrarse con el origen para generar su clave de acceso (un par de claves pública/privada).

Cuando regrese al sitio web o la app para acceder, el usuario podrá realizar los siguientes pasos:

  1. Ve a la aplicación.
  2. Haga clic en Sign in.
  3. Selecciona la clave de acceso.
  4. Desbloquea el dispositivo para completar el acceso.

El autenticador genera una firma con la clave privada. Esta firma se usa para verificar la credencial de acceso entre el origen y el autenticador, con la clave pública y sin revelar la clave privada.

Un usuario puede acceder a servicios en cualquier dispositivo con la ayuda de una clave de acceso, sin importar dónde se almacene la clave de acceso. Por ejemplo, se puede usar una clave de acceso almacenada en un teléfono celular para acceder a un sitio web en una laptop independiente.

¿Cómo funcionan las claves de acceso?

Las claves de acceso se crean y sincronizan a través del sistema operativo. Algunos sistemas operativos pueden permitir la sincronización automática de claves de acceso entre los dispositivos del usuario, como un teléfono Android y un dispositivo con Chrome OS que accedieron a la misma Cuenta de Google.

Mientras que las claves de acceso están vinculadas a los sistemas operativos, un usuario puede usarlas en su teléfono cuando accede a una laptop. Debido a que las claves de acceso se compilan con estándares FIDO y W3C, todos los navegadores pueden adoptarlos. Por ejemplo, un usuario visita site.example en su Chromebook. Este usuario accedió anteriormente a site.example en su dispositivo iOS. Se le pedirá al usuario que confirme su identidad en el dispositivo iOS. Por lo general, site.example creará una clave de acceso nueva para la Chromebook del usuario, de modo que, en el futuro, el teléfono ya no sea necesario.

Las claves de encriptación están encriptadas de extremo a extremo, lo que significa que, aunque Google es responsable de sincronizarlas con diferentes dispositivos Android, no puede leer la clave ni conocer esos datos.

Proceso de autenticación

Representación de una ventana de autenticación.

Para implementar claves de acceso en un sitio web o app, es importante que te familiarices con lo siguiente:

  • Los Autenticadores son dispositivos físicos del usuario que contienen las claves de acceso del usuario y pueden identificarlo.
  • La parte de confianza es tu sitio web o app, que consta de una aplicación y un servidor de backend.
    • La aplicación de frontend llama a las API para interactuar con el autenticador y, luego, iniciar el proceso de autenticación.
    • El servidor de backend recupera los objetos criptográficos que produce el autenticador y los verifica.

Por ejemplo, supongamos que un usuario desea comprar un par de zapatos de una tienda en shoes.example (el usuario de confianza). El usuario ya se registró para obtener una cuenta en shoes.example mediante su teléfono Android con un sensor biométrico. El usuario accede a shoes.example en su dispositivo Android con el desbloqueo de su dispositivo. Luego, shoes.example verifica la credencial de acceso con firma criptográfica del usuario con la clave pública conocida para que este confirme que la identidad del usuario es precisa.

Autenticadores

Los autenticadores son dispositivos que cumplen con el FIDO y que se utilizan para confirmar la identidad de un usuario. Esto incluye dispositivos de propósito especial (llaves de seguridad FIDO), además de teléfonos celulares y otras computadoras que cumplan con los requisitos del autenticador. Los autenticadores realizan las operaciones criptográficas descritas en los estándares FIDO y WebAuthn.

El dispositivo tiene dos funciones para el registro y la autenticación:

  • Cuando el usuario se registra con un usuario de confianza, el dispositivo genera un único par de claves pública/privada. Esto incluye los teléfonos y las computadoras del usuario.
  • Cuando el usuario acceda a la parte de confianza en el futuro, el dispositivo generará una firma con la clave privada.

Ambas operaciones se llevan a cabo cuando el usuario prueba la posesión del autenticador. Este par de claves está registrado con un origen específico y solo puede usarlo el origen exacto. Si un usuario llega a un sitio de suplantación de identidad, la credencial no estará disponible.

Dispositivos que cumplen con el estándar FIDO

Los autenticadores más comunes son los siguientes:

  • Autenticadores de plataforma: Están integrados en smartphones y computadoras. Los autenticadores de plataformas usan un sensor biométrico (como un sensor de huellas dactilares o una cámara con reconocimiento facial), un PIN o un patrón. Como la interacción de autenticación se completa mediante el desbloqueo del dispositivo, esto demuestra, en un solo paso, que el usuario posee el dispositivo y puede confirmar su identidad con sus datos biométricos únicos.
  • Llaves de seguridad: Por lo general, son dispositivos USB con un botón para presionar a fin de indicar la autenticación. Cuando se usan con una contraseña, las llaves de seguridad pueden proporcionar un factor de posesión para la autenticación de dos factores. El ejemplo más común es una llave de seguridad Titan o una llave YubiKey.

Frontend

Las aplicaciones usan las API del cliente, como WebAuthn y FIDO2 para Android, a fin de crear y verificar las credenciales de usuario con el autenticador.

La aplicación le pasa un desafío criptográfico, generado por el servidor de backend, al autenticador. La aplicación envía la respuesta del autenticador al servidor para su validación, que toma medidas en función de esa validación.

Backend

El servidor almacena la credencial de la clave pública y la información de la cuenta del usuario.

Durante el registro y la autenticación, el servidor genera un desafío criptográfico. Este desafío verifica que la firma emitida por el autenticador confirme si el usuario es quien declara ser.

Preguntas frecuentes

¿Quién admite las claves de acceso?

Debido a que las claves de acceso se basan en los estándares FIDO, funcionan en Android y Chrome, junto con muchas otras plataformas y navegadores populares como Microsoft Windows, Microsoft Edge, MacOS, iOS y Safari.

Consulta la documentación proporcionada por estas plataformas para confirmar el estado actual de disponibilidad.

En Android, nuestro objetivo es que la compatibilidad con las claves esté disponible para los desarrolladores hacia fines de 2022.

¿Qué sucede si un usuario pierde su dispositivo?

Las claves de acceso que se crean en Android se crean con copia de seguridad y se sincronizan con los dispositivos Android en los que se accedió a la misma Cuenta de Google, de la misma manera que se crean copias de seguridad de las contraseñas en el administrador de contraseñas.

Eso significa que los usuarios tienen acceso a las llaves cuando reemplazan sus dispositivos. Para acceder a las apps en un teléfono nuevo, lo único que deben hacer los usuarios es desbloquearlo.

¿Puede un usuario usar una llave maestra en su teléfono para acceder en el dispositivo de un amigo?

Sí. Los usuarios pueden configurar un vínculo único entre su teléfono y el dispositivo de otra persona para acceder.

Próximos pasos

Haz un codelab:

Obtén más información:

Recibir actualizaciones: