¿Qué es WebAuthN? Posiblemente la respuesta a toda la autenticación web

0
81

Durante décadas, hemos intentado reemplazar las implementaciones de autenticación de nombres/contraseñas de un solo factor ubicuas y fácilmente hackeables. Al menos para los escenarios basados en web, la respuesta finalmente está aquí en la forma de la nueva API y estándar de autenticación web (WebAuthN, por sus siglas en inglés). WebAuthN permite a los propietarios de sitios web y proveedores de servicios presentar un desafío criptográfico único que está ligado a su origen. La autenticación local de cualquier tipo se almacena y nunca abandona el dispositivo del usuario.

Es probable que dentro de unos pocos años, los sitios web y servicios más serios estén basados en WebAuthN, particularmente aquellos que usan autenticación de múltiples factores (MFA, por sus siglas en inglés) y soluciones sin contraseña. Incluso los sitios web que utilizan soluciones de un solo factor y sin contraseña se beneficiarán al usar WebAuthN.

La pregunta es si WebAuthN es el estándar correcto y si puede ser pirateado. La respuesta es sí a ambos.

Presentamos WebAuthN
El World Wide Web Consortium (W3C), el grupo internacional detrás de muchos de los últimos estándares abiertos en desarrollo de Internet, creó el grupo de trabajo detrás de WebAuthN en febrero del 2016. La primera reunión fue el 4 de marzo del 2016, y utilizó el estándar FIDO 2.0 de FIDO Alliance, como punto de partida. El estándar WebAuthN define la API de WebAuthN y los detalles de la firma digital, que deben implementarse en todos los clientes y servidores que utilizan WebAuthN.

Soy un gran fan de todo lo que hace la Alianza FIDO. El estándar abierto FIDO 2.0 condujo al muy popular estándar FIDO Universal Second Factor (U2F). U2F depende de la criptografía de clave pública y cualquier solución habilitada para U2F debe almacenar de forma segura el par de claves públicas del usuario en el dispositivo. La clave privada (del par de claves) siempre debe permanecer protegida, almacenada y utilizada solo en el dispositivo U2F, pero la clave pública relacionada puede compartirse desde el dispositivo.

La autenticación de clave pública basada en hardware se ha realizado durante décadas, la mayoría usando tarjetas inteligentes y un puñado de otros dispositivos, pero el estándar FIDO U2F ayuda a generar muchas otras formas de hardware. La mayoría de los dispositivos de autenticación de hardware lanzados en los últimos años son dispositivos U2F. Por ejemplo, los dispositivos Yubicoy delgados, con interfase USB de Yubico se basan en FIDO 2.0 y U2F.

Incluso la clave de seguridad de Google se basa en el estándar U2F. Hace unas semanas Google anunció que cero de sus más de 85.000 empleados, al menos conocidos por ellos, se había visto comprometido por simples ataques de phishing. WebAuthN está extendiendo el éxito de FIDO 2.0 y U2F.

Para usar WebAuthN, el servidor/sitio/servicio involucrado debe tener un código que busque y admita la autenticación WebAuthN. No necesita muchas líneas de código de soporte después de que se hayan implementado las funciones de API. Estos son buenos ejemplos de cómo implementar WebAuthN en el lado del servidor, incluido un ejemplo de Microsoft, y uno de Google.

El soporte del cliente para WebAuthN está creciendo
Cada cliente debe usar un dispositivo y software que esté habilitado para WebAuthN. Aunque cualquier programa de software se puede escribir para interactuar con WebAuthN, hoy en día, WebAuthN se aloja principalmente en programas de navegador. Google Chrome ha estado apoyando a WebAuthN desde que se lanzó Chrome 65 en enero del 2018, pero no se habilitó de manera predeterminada hasta que se lanzó Chrome 67 en mayo de 2018.

Para verificar si su versión de Chrome tiene habilitado WebAuthN, abra Chrome y escriba about:flags en la URL, presione Enter, y luego busque la opción etiquetada como Enable Web Authentication API support (ver figura a continuación) cerca de la parte inferior de la declaración. Si tiene Chrome versión 67 o posterior y dice Predeterminado o Activado, WebAuthN está habilitado. Si no está habilitada y la quiere, presione la opción y reinicie el navegador.

 

Habilitación de WebAuthN en Google Chrome

Una de mis mayores preocupaciones con algo relacionado con FIDO ha sido que, aunque muchas personas experimentadas de Microsoft están involucradas en ello y promoviendo la autenticación basada en FIDO, Microsoft parecía implementarlo más lentamente que Google y otros proveedores. Con WebAuthN, la brecha se está cerrando.

El soporte WebAuthN ha estado disponible en Microsoft Edge desde Windows 10 Release Candidate 5 versión 17682 (es decir, versiones de desarrollador), y está disponible, pero no está habilitado de forma predeterminada, en versiones de producción posteriores. Si tiene una versión actualizada de Windows 10, es probable que su versión de Edge lo admita.

Habilitación de WebAuthN en Microsoft Windows Edge.

Para comprobar si su versión de Microsoft Edge tiene soporte WebAuthN o está habilitada, abra Microsoft Edge y escriba about:flagsen la URL, presione ENTER, y luego busque la opción de casilla de verificación etiquetada Enable Web Authentication APIs(ver figura a continuación) cerca de la parte inferior de la lista. Si no está habilitada y la quiere, presione la casilla de verificación y reinicie el navegador.

Firefox habilitó la compatibilidad con WebAuthN en mayo del 2018 con la versión 60 de Firefox. Opera y Safari también son parte del grupo de trabajo WebAuthN y están programados para soportarlo, pero no pudimos confirmar si sus navegadores actuales lo admiten. Opera admite U2F. No importa cuál sea su navegador, puede probar su soporte de navegador WebAuthN.

Una de las razones por las que no todos los navegadores actualmente son compatibles con WebAuthN, es que todavía no se ha lanzado completamente. En marzo del 2018, hizo el modo Candidate Release, que suele ser el paso final antes del lanzamiento del producto. Cuando se publique la versión final, que debería ser pronto, espere que haya un apuro para respaldarla, tanto de sitios web, navegadores y fabricantes de dispositivos.

Cómo funciona WebAuthN
Los clientes deben registrarse, al menos una vez, en cada sitio web/servicio, en el que desean usar WebAuthN. Al igual que todas las soluciones de autenticación, la solución WebAuthN está vinculada a una identidad de sujeto particular. Por lo tanto, si tiene varias direcciones de correo electrónico o cuentas de identidad o múltiples dispositivos WebAuthN, digamos uno para uso personal y uno para el trabajo, deberá registrar cada uno de ellos en el lugar donde planea usarlos, a menudo por dispositivo. El proceso de registro recopila diferentes tipos de información, siempre incluyendo la clave pública del registratario, pero puede incluir otra información, como la información de identificación del certificado del dispositivo.

El registro implica que el sitio web envíe un desafío de texto simple al cliente de WebAuthN. El cliente WebAuthN luego genera un par de claves públicas únicas para el sitio. El software y el dispositivo WebAuthN solicitan al usuario que confirme manualmente que el nuevo par de claves públicas se puede generar y vincular al sitio web específico. El usuario debe confirmar.

Este requisito evita que un sitio web malicioso genere pares WebAuthN deshonestos sin que el usuario lo sepa. El dispositivo y el software WebAuthN luego reenvía la clave pública y otra información de identificación solicitada al sitio solicitante para su uso futuro.

Cuando un usuario visita un sitio web habilitado para WebAuthN en el que ha registrado previamente su identidad y solución WebAuthN, e intenta iniciar sesión, el sitio WebAuthN primero busca todos los ID WebAuthN validados y previamente registrados por el usuario en ese sitio y envía un único “desafío” basado en texto claro para el software/dispositivo habilitado para WebAuthN.

Si aún no se ha hecho, el software/dispositivo autentica localmente al usuario a través de un método WebAuthN compatible, que podría incluir un factor biométrico (como el deslizamiento de huellas dactilares) o ser tan simple como presionar un pequeño botón en el dispositivo USB (como es popular en Yubikeys). De cualquier manera, el usuario se está autenticando directamente a su dispositivo y software local habilitado con WebNAuth, que luego desbloquea las claves privadas del usuario para su uso. La autenticación local puede almacenarse en caché para futuros usos de WebAuthN.

Una vez que el usuario se ha autenticado localmente, la clave privada relacionada con la clave pública anterior se utiliza para firmar el desafío y enviar la firma digital resultante (es decir, la respuesta) al sitio. Luego, el sitio verifica la impugnación firmada utilizando la clave pública relacionada registrada anteriormente y cualquier otra información relacionada validada (como la certificación del dispositivo). Si el sitio valida el desafío firmado, entonces el usuario se autentica correctamente en el sitio.

En comparación con las soluciones de autenticación de un solo factor (1FA, por sus siglas en inglés) basadas en contraseña, ¡WebAuthN es increíble! Al usar la criptografía de clave pública confiable, proporciona una credencial más difícil de phishing y requiere que el usuario (y opcionalmente el dispositivo) atestigüe el uso (es más difícil robar sin que el usuario esté consciente). A los usuarios les gustará porque no tienen que recordar contraseñas o PINes largos, complejos y que cambian con frecuencia. En el mundo de la autenticación, esto se conoce como una menor fricción del usuario.

Posibles problemas con WebAuthN
Por lo tanto, obtenemos mayor garantía de autenticación con menos problemas de usuario. ¿A quién no le encantaría ese resultado?

Al igual que con cualquier solución de autenticación, tiene ventajas y desventajas. WebAuthN nos brinda mucha seguridad con menos fricción de usuario, pero eso no significa que sea la mejor solución en todos los escenarios de autenticación.

No existe una única solución de autenticación que funcione perfectamente para todas las personas en todos los escenarios. Por ejemplo, al menos ahora, es un estándar solo para web. Eso significa que solo funciona con software y servicios basados en la web. Aunque nuestro mundo se está moviendo rápidamente en un mundo de software/servicios solo para la web, muchos programas de software heredados aún no están disponibles. De hecho, solo unos pocos sitios web compatibles con WebAuthN lo admiten (por ejemplo, Dropbox).

La pregunta es ¿podemos lograr un soporte universal, o casi universal, o WebAuthN terminará siendo solo otra opción con soporte dividido? Si lo hace para soporte universal, como sospecho que lo hará, ¿cuánto tiempo hasta que llegue allí? ¿Podemos hacerlo antes de que el estándar comience a fracturarse en una red de sub estándares incompatibles?

Es tan, tan difícil ir de “¡Oye, este es un método de autenticación impresionante que debería dominar el mundo!” A una solución de autenticación implementada universalmente. ¿Qué tan difícil es? No lo hemos hecho una vez en varias décadas de intentos y es la razón por la cual las contraseñas aún gobiernan la web. Aun así, los líderes de seguridad del mundo parecen estar uniéndose a WebAuthN. Parece tener un apoyo más amplio y más defensores que los intentos anteriores.

También tengo un gran problema con las soluciones WebAuthN que permiten 1FA. Si no se combina con otro control de autenticación, significa que la posesión simple del dispositivo le da al procesador control sobre la identidad. Aunque para ser justos, la posesión personal de un dispositivo es aún mejor que las soluciones de 1FA que usan combinaciones de nombre de usuario/contraseña.

Además, por muy buena que sea la promesa de WebAuthN, todavía tiene todos los desafíos habituales que se presentan junto con la implementación, las operaciones y la administración adicional que tiene cualquier dispositivo de autenticación físico. Pregunte a cualquier persona que haya implementado otras soluciones de autenticación física, como tarjetas inteligentes u otras soluciones USB heredadas. El hardware se rompe y se pierde. Los puertos USB dejan de funcionar. Una de las principales razones por las que las soluciones basadas en hardware no se han apoderado del mundo anteriormente es que son caras de comprar, mantener y de dar soporte.

Algunas de las soluciones WebAuthN no implican dispositivos de hardware separados físicamente, como los que usan chips internos de Trusted Platform Module (TPM) o el teléfono móvil del usuario. Eso solo disminuye el problema. No lo elimina.

Soy un gran fan de este libro blanco que examina la seguridad y los desafíos del uso de soluciones sin contraseña. Léalo para tener una buena idea de los desafíos que puede enfrentar al usar un tipo particular de solución sin contraseña.

¿Cómo se puede atacar WebAuthN?
Cualquier cosa puede ser pirateada. WebAuthN ni siquiera se considera desechable en teoría, y mucho menos en la práctica. Debido a que WebAuthN está estrechamente asociado con FIDO 2.0 y U2F, todavía tiene muchas de las preocupaciones de seguridad asociadas con esos estándares. La alianza FIDO es muy consciente de los posibles problemas de seguridad, y no todos los riesgos tienen controles de compensación. En algunos casos, tanto los clientes como los servidores tienen que implementar controles adicionales y opcionales, como el enlace de tokens/canales y otros métodos resistentes a la reproducción. Algunos ataques que podrían tener éxito contra FIDO 2.0/U2F/WebAuthN no tienen nada que ver con el estándar o la API, pero usan otras tecnologías confiables como Transport Layer Security (TLS), enlace de canales y métodos de reproducción repetida para prevenir los ataques conocidos actuales.

De los 11 métodos para piratear 2FA que cubrí en un artículo anterior, siete parecen aplicarse a WebAuthN. Algunos de los métodos de seguridad mejores, pero opcionales, como el enlace token/canal, romperían muchos escenarios de implementación (como las conexiones que involucran proxies intermedios o de inspección de seguridad), y por esas razones, no es probable que se desplieguen ampliamente.

Incluso si la implementación estándar o específica de WebAuthN no puede ser pirateada, un usuario que sea víctima de una falsificación para acceder a un sitio web completamente falso puede obtener una experiencia de autenticación WebAuthN completamente falsa. Es imposible evitar que un sitio falsifique por completo todo el proceso. Aunque el sitio web falso puede no tener ninguno de los datos personales del usuario desde el principio, no es difícil pedirle al usuario que proporcione información confidencial una vez que creen que están autenticados. ¿Cuántas veces un sitio web le solicitó los últimos cuatro dígitos de su número de seguro social o dirección de correo electrónico después de iniciar sesión?

También me pregunto qué pasará con WebAuthN cuando la informática cuántica rompa para siempre la criptografía de clave pública tradicional. ¿Qué hace cuando su solución de seguridad, que basa su confianza en la cripto clave pública, ya no es confiable? Me pregunto cuántas de las soluciones WebAuthN están practicando la cripto-agilidad. Porque con el cifrado de claves públicas, posiblemente a solo cinco años de distancia, vamos a necesitarlo.

Esto no quiere decir que no debamos abrazar con entusiasmo WebAuthN. Es increíble y espero que todos los sitios web y servicios del mundo lo adopten lo antes posible. Brinda una mejor seguridad que solamente las contraseñas. Simplemente no piense que es perfecto o que no será pirateado, porque no lo es y lo será.

Roger A. Grimes, CSOonline.com