A lo largo de los años, el sector se ha liado la manta a la cabeza en sus intentos de mejorar (o actualizar) las contraseñas, utilizando todo tipo de terminología confusa como autenticación de dos factores (2FA), autenticación de dos pasos, autenticación multifactor (MFA) y la confusión más moderna de segundo factor universal (U2F), Fast IDentity Online 2 (FIDO2), WebAuthn y claves de acceso.
Hasta ahora, la mayoría de nosotros nos conformábamos con que alguien adoptara cualquiera de las anteriores. Cualquier cosa que supere a una contraseña es una mejora, pero ahora hemos llegado al punto en el que necesitamos elevar el listón mínimo de aceptabilidad. En esta entrada, analizaré el estado actual de los métodos de autenticación «más fuertes» y, creo, señalar el mejor camino a seguir.
No dos inteligentes
Muchas de las opciones más simples de «2FA» no son fieles a lo que realmente se supone que es la autenticación de dos factores. Lo ideal es que los dos factores sean dos de los tres tipos siguientes: algo que sabes (como una contraseña o un PIN), algo que tienes (como un token USB/Bluetooth, una tarjeta inteligente o un par de claves públicas/privadas) o algo que eres (como una huella dactilar o facial). Por desgracia, la mayoría de las primeras soluciones se reducen a algo que sabes y… algo más que sabes.
Tomemos como ejemplo los estilos de «2FA» de token RSA, mensaje de texto SMS o TOTP (contraseñas de un solo uso basadas en el tiempo; por ejemplo, Google Authenticator o Authy), en los que en la mayoría de los casos se te presenta un código de 6 dígitos que rota cada 30 segundos. Aunque se han criticado las implementaciones por SMS de esto debido a la posibilidad de intercambio de SIM, la realidad es que todas son débiles y susceptibles de ser interceptadas.
Este es el problema. Imagina que te envían un correo electrónico de phishing bien elaborado (¿quizás generado por IA?). Para que el estafador consiga comprometerte en esta etapa, debes creer que el correo electrónico es legítimo, tanto si utilizas la autenticación multifactor como si no. Aquí es donde preguntarle a alguien dos cosas diferentes que conoce (su contraseña y un código secreto que se genera dinámicamente) termina en lágrimas: si realmente crees que estás iniciando sesión en tu banco, correo electrónico o cuenta corporativa, revelarás felizmente no solo tu contraseña, sino también el código secreto. Este tipo de autenticación es solo en una dirección; el estafador está verificando tu identidad, pero tú no has verificado la identidad de la entidad que solicita la prueba.
De hecho, existen herramientas gratuitas para automatizar este engaño. Una de las más populares se llama evilginx2. Originalmente basada en el popular servidor web nginx, ahora es una aplicación Go independiente que sirve como una herramienta todo en uno para suplantar la autenticación multifactor basada en el conocimiento y robar cookies de sesión para eludir la autenticación. Esto ha reducido la barrera para la malversación a nuevas profundidades.
¿Cómo hemos llegado hasta aquí?
Si consideramos la historia del compromiso de credenciales, todo comenzó con el rastreo de Wi-Fi sin cifrar o la realización de otros ataques basados en la red antes de que todo estuviera cifrado. En 2010 existía una herramienta infame llamada FireSheep que fue diseñada para permitir a los atacantes visitar una cafetería y robar pasivamente los inicios de sesión de las personas debido a la falta de cifrado en la web.
En respuesta a estos ataques, y a las filtraciones de Edward Snowden en 2013, pasamos a cifrar casi todo en línea. Ese cambio nos protegió contra lo que se conoce como ataques de máquina en el medio (MitM). Ahora tenemos un uso casi omnipresente de HTTPS en toda la web e incluso en nuestras aplicaciones para teléfonos inteligentes, lo que impide que cualquier transeúnte al azar capture todo lo que puedas ver o hacer en línea.
Los delincuentes pasaron entonces al robo de credenciales, y en gran medida la mayoría de nosotros hemos pasado a alguna variante de la autenticación multifactor, pero de nuevo, normalmente solo la variante más barata y fácil: algo que sabemos, más algo efímero que también sabemos. Este es un obstáculo ineficaz y debemos continuar avanzando.
El consenso de la industria, tras muchas reuniones de comités y la creación de organismos de normalización, se ha fijado en una norma ampliamente aceptada conocida como API de autenticación web, o WebAuthn. Si quieres profundizar en la confusión sobre los diversos elementos, hay un hilo de Reddit para eso, pero no voy a profundizar demasiado en esos detalles aquí.
Un tour por WebAuthn
WebAuthn/passkeys hacen que la autenticación multifactor sea casi a prueba de phishing. Nada es perfecto, por supuesto, y investigaciones recientes han descubierto un vector de ataque MitM limitado pero interesante que involucra dispositivos de hardware especializados y un CVE parcheado desde entonces, pero de aquí en adelante nos referiremos a él como autenticación multifactor resistente al phishing.
Repasemos el proceso. Quiero crear una cuenta en una popular red social. Usando mi teléfono inteligente o computadora con soporte de contraseña, elijo crear una nueva cuenta con una contraseña. El sitio me pide el nombre de usuario deseado (normalmente mi dirección de correo electrónico). Mi dispositivo envía el nombre de usuario al sitio, y este responde con mi nombre de usuario, un desafío y el nombre de dominio del sitio. Mi dispositivo genera un par de claves criptográficas únicas, las almacena de forma segura junto con el nombre del sitio y el nombre de usuario, firma el desafío del sitio y adjunta la clave pública asociada para que el sitio la utilice ahora como mi identificador.
La próxima vez que vaya a este sitio, ya no necesitaré ni usaré una contraseña, que por esta definición es solo un secreto compartido y podría ser robada o reproducida. En su lugar, como se muestra en la Figura 1, envío el nombre de usuario que coincide con el nombre de dominio de ese sitio. El sitio responde con un desafío. Mi dispositivo busca la clave para ese nombre de dominio y la utiliza para firmar el desafío, demostrando mi identidad.

Para más información, vertx.io tiene una inmersión centrada en el desarrollador en la mecánica del proceso.
¿Qué podría salir mal?
Con esta combinación de puntos de datos, la clave no puede ser robada o reutilizada fácilmente, y no pueden engañarme para que intente iniciar sesión en un sitio falso con un nombre de dominio similar. Aquí también hay una pequeña superficie de ataque: si añades una contraseña para zuzax.com y yo puedo crear un subdominio bajo mi control como atacante, phish.zuzax.com, puedo conseguir que firmes un desafío repetido.
Más allá de mi dispositivo, el lugar donde se almacenan las claves determina su seguridad contra el robo y el abuso. El uso de tokens U2F de hardware, como una YubiKey o una SmartCard, garantiza que las claves estén bloqueadas en ese dispositivo y no puedan extraerse, y el robo físico es la única opción práctica. Algunos tokens de hardware también requieren un biométrico, un PIN o una frase de contraseña para desbloquearse. Con la llegada de las claves de acceso, las claves secretas se pueden sincronizar a través de la nube de tu proveedor de SO (iCloud, Google Drive, OneDrive) o a través de tu gestor de contraseñas (Bitwarden, 1password, etc.), lo que las hace más susceptibles de robo si tu cuenta se ve comprometida.
Y, por supuesto, tiene que implementarse. La carga de la implementación recae en los sitios (donde hemos progresado razonablemente rápido en el último año) y, como siempre, en las empresas que deben habilitarlo y usarlo en sus entornos específicos. Esto no es tan diferente de nuestro consejo constante a los profesionales de la seguridad de tratar la MFA como una higiene básica (junto con la aplicación de parches y la desactivación de RDP innecesarios), pero aún así hay que presupuestarlo y hacerlo.
La última debilidad que queda es la cookie de sesión que se establece al iniciar sesión, pero ese es un tema para otro artículo.
Funciona en ambos sentidos (y nos hace avanzar)
Como usuario, debería poder demostrar mi identidad a mi dispositivo mediante un PIN, una huella dactilar o una huella facial, y hacer que el dispositivo haga el trabajo de autenticar a ambas partes. Esa es la parte más importante de esta transacción: su bidireccionalidad.
Todos sabemos que el robo de contraseñas es un problema, y en realidad solo hemos prolongado su vida útil al tratar de aumentarlas con otros tipos de autenticación basada en el conocimiento. La información puede ser y será robada, interceptada y reproducida. Si realmente queremos tener una autenticación multifactorial, debemos ir más allá del conocimiento y exigir pruebas más sólidas.
Esta es una oportunidad para que la seguridad deje de ser una fuente de fricción para los usuarios; de hecho, mejora activamente la seguridad al tiempo que disminuye la fricción. Las implementaciones actuales de claves de acceso pueden ser delicadas e incómodas, pero estoy convencido de que quienes las adopten serán los que más se beneficien y de que en poco tiempo resolveremos los retos de la interfaz de usuario. No tenemos elección. Es la mejor solución de la que disponemos y los delincuentes no esperarán a que discutamos sus méritos.
Dejar un comentario