El estado de la autenticación sin contraseña en la web

Rate this content
Bookmark

¿Podemos deshacernos de las contraseñas ya? Son una mala experiencia de usuario y los usuarios son notoriamente malos con ellas. El advenimiento de WebAuthn ha acercado al mundo sin contraseñas, pero ¿dónde nos encontramos realmente?


En esta charla exploraremos la experiencia actual del usuario de WebAuthn y los requisitos que un usuario debe cumplir para autenticarse sin contraseña. También exploraremos las alternativas y salvaguardias que podemos utilizar para mejorar la experiencia de las contraseñas y hacerla más segura. Al final de la sesión, tendrás una visión de cómo podría ser la autenticación en el futuro y un plan para construir la mejor experiencia de autenticación hoy en día.

30 min
05 Jun, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Las contraseñas son terribles y se pueden hackear fácilmente, y la mayoría de las personas no utilizan gestores de contraseñas. La API de gestión de credenciales y el atributo de autocompletar pueden mejorar la experiencia de usuario y la seguridad. La autenticación de dos factores mejora la seguridad pero empeora la experiencia de usuario. Las claves de acceso ofrecen una experiencia de inicio de sesión fluida y segura, pero el soporte del navegador puede ser limitado. Las recomendaciones incluyen detectar el soporte de claves de acceso y ofrecer alternativas con contraseñas y autenticación de dos factores.

Available in English

1. Introducción

Short description:

Despídete de las contraseñas. Como defensor del desarrollo en Sona, estoy aquí para responder tus preguntas y compartir ideas. Encuéntrame en línea como Phil Nash en Twitter, Mastodon y LinkedIn.

¡Ah, qué tal, todos? Estamos en pantalla. Sí. Hola. Um, despídete de las contraseñas. ¡Whoo! Como ya hemos visto, trabajo en Sona, soy un defensor del desarrollo allí. Tenemos un pequeño stand allí, así que ven a saludarnos. El resto del equipo está sentado justo allí. Es un poco lejos. Mi nombre es Phil Nash, soy un defensor del desarrollo allí. Puedes encontrarme en línea en todos los lugares con el nombre Phil Nash, Twitter, Mastodon, LinkedIn, solo ven a encontrarme, hazme preguntas. Me encantaría saber de todos ustedes.

2. El Problema con las Contraseñas

Short description:

Las contraseñas son realmente terribles. El 52% de las personas reutilizan contraseñas algunas veces, mientras que el 13% reutiliza contraseñas todo el tiempo. Estas contraseñas son fáciles de romper y hackear. Solo el 24% de las personas utiliza un administrador de contraseñas, dejando a tres cuartos de las personas vulnerables. Las 10 contraseñas más comunes de 2022 son demasiado comunes.

Entonces, vamos a ello. Porque la mayoría de las personas en el mundo tienen aplicaciones en las que necesitan iniciar sesión, ocultar algo detrás de una parte de autenticación, y en su mayor parte, hemos estado autenticando a las personas utilizando contraseñas, y las contraseñas son realmente terribles. Espero que estés de acuerdo, espero que por eso estés aquí sentado. Pero repasaré un par de cosas solo para asegurarnos de que todos estemos de acuerdo en esto. En 2018, Google realizó una encuesta en la que hicieron varias preguntas sobre la seguridad de las cuentas, donde dijeron cosas como, ¿con qué frecuencia reutilizas contraseñas? Y este gráfico circular muestra que el 52% de las personas respondieron que reutilizan contraseñas algunas veces. Ahora, eso no es un buen comienzo. Y, por supuesto, hay una bonita sección verde aquí donde el 35% de las personas dijo que nunca reutilizan contraseñas. Me gustan esas personas. Soy fan de esas personas. Ahora me cuento entre ellas. A lo que debemos preocuparnos, bueno, debemos preocuparnos por las personas que lo hacen algunas veces. Realmente debemos preocuparnos por el 13% de las personas que, cuando se les preguntó si reutilizan contraseñas, dijeron que lo hacen todo el tiempo. Estas son las personas con una contraseña, no la aplicación, sino la cadena en su mente. Y esto es aterrador, ¿verdad? Esta contraseña, por lo general, no son buenas contraseñas. Son fáciles de romper, fáciles de hackear, y eso no es algo bueno. Además, durante la encuesta, preguntaron si las personas utilizan un administrador de contraseñas. Y el 24% de las personas dijo que sí, que utilizan un administrador de contraseñas. Eso está bien. Probablemente estén dentro de esa porción del gráfico circular que dijo que nunca reutilizan contraseñas. Bueno, eso me preocupa porque el 35% de las personas dijo que nunca reutilizan contraseñas. Y el 24% utiliza un administrador de contraseñas. ¿Hay un 11% que está mintiendo? ¿Supongo? No tienes que decir la verdad en las encuestas. Pero de todos modos. Entonces, el 24% de las personas utiliza un administrador de contraseñas. Pero eso significa que tres cuartos de las personas no lo hacen. Tiempos difíciles. Y luego, por supuesto, las personas que están utilizando sus contraseñas, por supuesto, están utilizando todas nuestras contraseñas favoritas. Estas son las 10 contraseñas más comunes

3. Trade-offs in Password Security and User Experience

Short description:

Las contraseñas son terribles. Es difícil recordarlas y crearlas por tu cuenta. Un administrador de contraseñas es esencial para la seguridad. Las contraseñas pueden ser fácilmente vulneradas, especialmente las comunes como 1, 2, 3, 4, 5, 6. Las contraseñas filtradas pueden ser utilizadas para acceder a otras aplicaciones. El phishing es una vulnerabilidad significativa. La solución es utilizar un administrador de contraseñas.

de NordPass. Contraseñas ganadoras en 2022. Bien hecho, contraseña. Lo siento, 123456 y tu amigo muy cercano, 123456789. Siento que las personas que solo llegan hasta seis son un poco perezosas. No sé. Si has utilizado una buena contraseña, pero la estás repitiendo, entonces probablemente haya alguna aplicación en algún lugar que haya sido vulnerada y haya compartido esa contraseña con el resto del mundo. Si no lo sabes, deberías ir allí ahora y verificar cuántas de tus cuentas han sido vulneradas y cuántas de tus contraseñas están ahí afuera, y eso te hará pensar al respecto y cambiar tus contraseñas bastante rápido. Las contraseñas son terribles. En la seguridad de la cuenta como esta, estamos rodeados de una serie de compensaciones. En la seguridad, queremos asegurarnos de que las personas no estén ingresando a las cuentas de otras personas, pero también queremos asegurarnos de que las personas puedan iniciar sesión y hacer lo que pretendían hacer en su aplicación. Sea lo que sea que hayas construido para ellos y que están tratando de lograr a través de un formulario de inicio de sesión. Y por lo tanto, esas compensaciones van entre la experiencia del usuario y la seguridad. Y esa es la lente desde la que analizaré las soluciones que tenemos para el resto de la charla ahora. Entonces, las contraseñas en el lado de la experiencia del usuario son malas. Es difícil recordar buenas contraseñas. Es difícil crear buenas contraseñas por tu cuenta, al menos. Y realmente, necesitas un administrador de contraseñas para lograr cualquier tipo de seguridad utilizando contraseñas. Y luego, en el lado de la seguridad, ya sabemos que eso también es malo. No funciona de ninguna manera. Es fácil vulnerar contraseñas como 1, 2, 3, 4, 5, 6, porque simplemente puedes probar eso en la cuenta de alguien. Y si funciona, estás adentro. Pero luego, cuando las contraseñas se filtran, es fácil para los atacantes tomar esas filtraciones y aplicar en otras aplicaciones para ver si pueden iniciar sesión. Y no tienen que vulnerar todas las cuentas. Solo tienen que vulnerar algunas de ellas para ganar. Y finalmente, no he mencionado el phishing aún, pero las contraseñas son muy vulnerables al phishing. Siempre me gusta que los sitios web de phishing tiendan a verse terribles. Y estoy bastante seguro de que todos en esta sala podrían construir un sitio web de phishing muy bien diseñado. No lo hagan. Como, ese no es el mensaje de esta charla. No intenten robar las contraseñas de las personas. Pero podríamos hacerlo.

4. Improving User Experience and Security

Short description:

Podemos mejorar la experiencia del usuario eliminando la necesidad de recordar contraseñas. Esto se puede lograr mediante el uso de administradores de contraseñas y el atributo de autocompletar en HTML. Además, la API de gestión de credenciales permite almacenar y recuperar credenciales de contraseña en el navegador.

La primera solución es utilizar un administrador de contraseñas. Esto nos permite mejorar la experiencia. Ya no tenemos que pensar en nuestras contraseñas y no tenemos que repetirlas. Todo está almacenado para nosotros. Nunca más tendremos que saber nuestras contraseñas. Genial. Y esto también ayuda a la security. Ahora tenemos contraseñas largas y difíciles que son únicas para cada sitio, aunque aún un poco vulnerables al phishing si quieres copiar y pegarlas en otro formulario. Pero esto está muy centrado en el lado del usuario, ¿verdad? Esto no es algo que nosotros como desarrolladores podamos imponer a las personas. Y como ya descubrimos, no suficientes personas las utilizan. Así que tenemos que hacerlo mejor que eso. Tenemos que dar pasos adicionales.

Ahora, hay cosas que podemos mejorar y hacer con nuestras aplicaciones, un poco de HTML, un poco de JavaScript, para animar a las personas a hacer las cosas un poco mejor. Voy a empezar con el atributo de autocompletar, mi atributo favorito absoluto en el elemento. Si usas el atributo de autocompletar new password en un elemento de entrada con el tipo de contraseña, los navegadores normalmente sugerirán una contraseña generada fuerte para las personas. Es un gran estímulo. Es una excelente manera de animar a las personas a ser más seguras. No les impide escribir 1-2-3-4-5-6 en ese campo, pero los anima a hacerlo mejor. Si usas el atributo de autocompletar en los formularios de inicio de sesión, puedes usar cosas como el nombre de usuario, que es una pista para el navegador para rellenarlo correctamente, y luego el autocompletado de la contraseña actual significa que puedes usar las contraseñas existentes que se han guardado. New password y current password son especialmente útiles en esas páginas donde estás cambiando una contraseña y no quieres que se autocomplete la misma en las tres casillas. Quieres la antigua contraseña y luego dos nuevas contraseñas. Ayuda.

Y luego, en el lado de JavaScript, tenemos la API de gestión de credenciales. Esta es una API que ha existido durante bastante tiempo, y no creo que haya recibido el reconocimiento que merece. Y por eso estoy aquí para destacar la API de gestión de credenciales. Es la que suena más emocionante, ¿verdad? Credencial. Sí. Exactamente. La API de gestión de credenciales nos permite almacenar y recuperar credenciales en el navegador. En este caso particular, estamos hablando de contraseñas. Nos permite almacenar y recuperar credenciales de contraseña utilizando el administrador de contraseñas del navegador.

5. Using the Credential Management API

Short description:

Con acceso a la API de gestión de credenciales, podemos verificar la existencia de las credenciales de contraseña y crear una nueva. Esto se puede hacer durante el registro o inicio de sesión exitoso. Luego, el navegador puede almacenar las credenciales y solicitar permiso al usuario. Proporciona una experiencia reconocible similar a la función de guardar contraseñas del navegador.

Y si tienes acceso a la API de gestión de credenciales, podemos verificar la existencia de las credenciales de contraseña en el objeto ventana. Y si las tenemos, podemos crear una nueva credencial de contraseña utilizando un nombre de usuario, ID y contraseña correctos. Por lo tanto, haces esto durante el registro o inicio de sesión exitoso. Y una vez que hayas hecho eso, puedes pedirle al navegador que almacene esta credencial. Y luego, en ese momento, se le solicitará permiso al usuario. De hecho, es una solicitud muy reconocible para el usuario. Porque es el mismo tipo de cosa que el navegador ya ofrece. ¿Quieres que guardemos esta contraseña? Pero cuando hayas hecho eso, cuando hayas utilizado esta API para almacenar la contraseña, puedes llamar a navigator.credentials.get

6. Improving Login Experience and Security

Short description:

El navegador permite a los usuarios iniciar sesión de inmediato utilizando los datos almacenados. El inicio de sesión silencioso es posible si el usuario no ha cerrado la sesión. El navegador Chrome muestra a una persona que ha iniciado sesión sin pedir permiso. La experiencia en Android implica guardar contraseñas en la cuenta de Google del usuario. El cuadro de diálogo de permisos solicita a los usuarios que inicien sesión con las credenciales almacenadas. Esta función solo debe utilizarse en dispositivos personales. Mejora la experiencia de inicio de sesión pero no aborda la seguridad de las contraseñas. Se introduce la autenticación de dos factores para mejorar la seguridad.

para recuperar la contraseña. Aún va a causar permisos, pero nos permite obtener los data que hemos almacenado en el navegador y luego usarlo para iniciar sesión de inmediato. Y así, esto parece que tengo algunas capturas de pantalla de nope, nope. También puedes hacerlo en silencio. Entonces, si una persona no ha cerrado la sesión, pero quieres llevarla directamente al flujo de inicio de sesión, puedes hacerlo en silencio utilizando la opción unmediated true. No estoy completamente seguro de que me guste esto, pero está ahí por si acaso. Y el navegador Chrome mostrará a una persona que ha iniciado sesión, incluso si en realidad no le pide permiso. Pero cuando alguien cierra la sesión y no quieres que eso pueda suceder, debes llamar a sí, prevenir el acceso silencioso en el cierre de sesión para que no vuelva a iniciar sesión inmediatamente en la siguiente carga de página.

Entonces, la experiencia de esto se ve así en Android. En este caso, es el navegador Chrome que dice: `Oye, ¿quieres guardar esta contraseña?` Y especialmente para Google, la almacenarán en tu cuenta de Google en lugar de solo en tu dispositivo, en tu navegador. Entonces, esto se sincroniza en diferentes dispositivos. Entonces, si alguien hace esto en su dispositivo móvil y luego va a iniciar sesión en su dispositivo de escritorio más tarde, estará disponible para ellos, lo cual me parece genial. Cuando vuelvas a iniciar sesión, disculpa el nombre de dominio extraño aquí, pero cuando vuelvas a iniciar sesión, este es el cuadro de diálogo de permisos que dice: `Oye, tenemos algunas credenciales para ti. ¿Quieres iniciar sesión?` Así que esto es algo que solo debes almacenar en un dispositivo que estés utilizando. No lo hagas en una computadora de la biblioteca o en la computadora de un amigo, porque luego volverán a iniciar sesión como tú la próxima vez. Pero permite iniciar sesión con una contraseña con un solo clic. Eso es todo. Estoy tratando de mejorar la experiencia aquí. Hemos agregado muchas cosas con esto para fomentar una mejor experiencia de inicio de sesión. Cuando el navegador se encarga de esto, ya no es necesario recordar contraseñas. Estamos aumentando efectivamente el número de personas que utilizan un administrador de contraseñas. Lamentablemente, en el security lado de las cosas, no hace que las personas usen una contraseña segura. No hace que las personas usen una contraseña única. Y por lo tanto, tenemos todos los problemas que teníamos anteriormente en términos de security. Como dije, las contraseñas son terribles. Esto está tratando de mejorar la experiencia de ello. Así que sigamos adelante. Para ayudar al security lado de las cosas, introducimos la autenticación de dos factores. Probablemente hayas visto un mensaje de texto

7. Autenticación de Dos Factores

Short description:

La experiencia de utilizar la autenticación de dos factores ha empeorado en términos de experiencia de usuario, pero ha mejorado la seguridad. Requiere un dispositivo adicional y es vulnerable a ataques de phishing. La autenticación basada en SMS es susceptible a ataques dirigidos. Si estás interesado, pregúntame más tarde sobre las vulnerabilidades del sistema SMS.

que dice, hola, aquí está tu código. Úsalo para iniciar sesión en el sitio. Cuando has visto este mensaje de texto, es porque has tenido que buscar, encontrar tu teléfono donde lo dejaste porque intentaste iniciar sesión en algo y te dijo que ahora tienes que ir y luego recibo esos mensajes, recibo el mensaje diciendo autenticación de dos factores, luego navego por Twitter un rato en mi teléfono y luego olvido lo que estaba haciendo y el mensaje expira. Así que la experiencia, lamentablemente, en este caso, ha empeorado. Si observamos la experiencia, ahora tenemos dos pasos. Necesitamos otro dispositivo. Tal vez necesitamos señal telefónica. También podemos hacer esto con nuestras aplicaciones de autenticación, pero aún así, estamos usando un dispositivo diferente. Y por lo tanto, nuestra experiencia ha empeorado, pero la seguridad ha mejorado. Así que esto es mejor para cuentas más importantes. Esto supera el escenario de contraseñas débiles y filtradas porque utilizar un segundo dispositivo, algo que posees, para autenticarte significa que es mucho, mucho más difícil para un atacante simplemente reproducir un conjunto de credenciales filtradas. Aún es vulnerable a phishing. Si puedes crear un sitio que solicite el nombre de usuario y la contraseña de alguien, también puedes crear un sitio que solicite el nombre de usuario, la contraseña y luego un código de seis dígitos. Y si estás utilizando SMS para esto, hay ataques de SMS dirigidos. No tengo tiempo para entrar en eso ahora, pero ven y pregúntame más tarde qué tan vulnerable es el sistema SMS si estás interesado.

8. Mejorando la Seguridad y la Experiencia del Usuario

Short description:

¿Podemos mejorar la seguridad y la experiencia del usuario? El atributo de autocompletar de Safari ofrece un código de seis dígitos a partir de un mensaje de texto. La API OTP web recupera credenciales en otros navegadores. Agrega un símbolo de la aplicación y un dominio al mensaje para protección contra phishing. El diálogo de permisos permite al navegador utilizar el mensaje de texto. La autenticación de dos factores se convierte en un paso mínimo con los atributos de autocompletar.

interesante. Pero ¿podemos mejorarlo? ¿Podemos mejorar la seguridad? ¿Podemos hacer que la experiencia del usuario sea mejor en este tipo de cosas? Afortunadamente, la respuesta es sí, no estaría aquí si no estuviéramos haciendo eso. Primero, vamos a volver al atributo de autocompletar. El autocompletar con la propiedad de código de un solo uso ofrecerá en Safari un código de seis dígitos a partir de un mensaje de texto en el autocompletar del teclado del navegador. Esto se ve, tengo un video para esto, se ve bastante bien, creo. En el que inicias sesión, se envía el mensaje de texto y se envía el texto, aparece el teclado y ahí está el código en el medio, listo para ser ingresado, todo lo que tuviste que hacer fue agregar un atributo al elemento. Lo que es realmente bueno de esto es que si estás muy metido en el ecosistema de Apple y estás usando Safari en Mac y también recibes mensajes en tu Mac, entonces también funciona en Safari en Mac. Puedes ingresar tu contraseña allí y ofrecerá ese autocompletar en el navegador en el escritorio. Una especie de interacción mágica, y de repente no tienes que sacar tu teléfono, ya apareció en tu escritorio. Creo que eso es genial. Y solo se necesita un atributo para hacerlo. Sin embargo, eso solo es en Safari y solo en Apple. Así que tenemos que recurrir a la API OTP web para que nos ayude en otros navegadores. La API OTP web es la API de gestión de credenciales disfrazada. Te lo dije antes, esto es solo una carta de amor a la API de gestión de credenciales y ahora estás atrapado conmigo. La API de gestión de credenciales en este caso, no necesitamos almacenar credenciales, pero podemos recuperarlas. Y para hacerlo, debes hacer algunos cambios en el mensaje de texto que envías. En este caso, debes agregar una línea final que tenga un símbolo de la aplicación y el nombre de dominio en el que te encuentras, y luego un hash y luego el código. El dominio de la aplicación permite al navegador solo mirar los mensajes que tienen ese dominio si estás en el dominio. Eso es una protección contra phishing. No vamos a autocompletar esto en un sitio web en el que no hayas iniciado sesión. Una vez que hayas hecho eso, solicitamos a la API de credenciales que obtenga, en este caso, la credencial OTP utilizando el transporte SMS. Puedes pasar un array al transporte, pero el único elemento que se coloca en ese array en este momento es la cadena SMS. Es un array de un solo elemento. Pero me gusta eso porque da la idea de que estamos tratando de que esto pueda ser ampliable. Esto es algo que también podría hacer una aplicación de autenticación. Cuando hacemos eso, aparece un diálogo de permisos para preguntar al usuario si desea permitir que el navegador utilice este mensaje de texto. Y cuando lo recibes de vuelta, obtienes un objeto OTP con una propiedad de código que puedes usar en tu formulario. Esto se ve así cuando lo haces. Y se vuelve un poco loco porque ves en nuestro dispositivo Android, recibes tanto el mensaje de texto entrante como el diálogo de permisos al mismo tiempo. Pero esperemos que el diálogo de permisos en la parte inferior de la pantalla capte la atención y veas que dice, ¿quieres permitir que Chrome lea el mensaje y use este código? Si presionas permitir, el JavaScript obtiene ese código de vuelta, puedes completar el formulario y continuar.

Entonces, la autenticación de dos factores fue un retroceso en la experiencia del usuario, pero si podemos agregar estos atributos de autocompletar, se convierte en un paso mínimo, normalmente presionando un botón de aprobación o

9. Usando Claves de Seguridad y la API de Autenticación Web

Short description:

Agregar autocompletado ha hecho que el proceso de inicio de sesión sea más rápido y conveniente. En cuanto a la seguridad, el uso de claves de seguridad y la API de Autenticación Web proporciona un método de autenticación sólido. La API permite la creación y almacenamiento de un par de claves pública y privada, vinculadas a un dominio específico. Esto elimina la posibilidad de phishing de una clave de seguridad. Utilizando la clave pública, se pueden firmar y verificar desafíos, proporcionando una autenticación de dos factores segura. Sin embargo, la adopción de claves de seguridad por parte de los consumidores puede ser un desafío, y las claves deben ser físicamente trasladadas entre dispositivos.

al presionar una opción de autocompletado. Esto lo hace mucho más rápido. No tenemos que buscar nuestros dispositivos. Simplemente se hace. Aún requiere el otro dispositivo, aún requiere una aplicación de autenticación o mensaje de texto y tal vez una señal telefónica para ese tipo de cosas. Pero ahora es una mejor experiencia ahora que hemos agregado este autocompletado. En cuanto al security lado de las cosas, no hemos cambiado eso, supera el problema de las contraseñas, es menos vulnerable al phishing, especialmente si utilizamos la API Web OTP que está dirigida específicamente al dominio en el que deberías iniciar sesión. Sin embargo, no soluciona el sistema de SMS. Luego pasamos a las claves de security. Probablemente tengas una clave de security, especialmente si tienes una de trabajo, especialmente si estás lidiando con tus cosas de trabajo, las claves de security son maravillosas, y podemos usarlas en el navegador utilizando la API de Autenticación Web. Por supuesto, la Autenticación Web es realmente solo una API de gestión de credenciales, son las credenciales del navegador, es lo mismo, como dije, me encanta.

En este caso particular, la API de Autenticación Web nos permite utilizar el navegador para crear y almacenar un par de claves pública y privada, luego compartimos la clave pública con el sitio al que estás intentando iniciar sesión o registrarte, y ese sitio puede usar la clave pública para verificar cosas firmadas utilizando la clave privada. Así es como lo creamos, usamos la función create de las credenciales del navegador, y en este caso, el servidor envía un desafío, un conjunto de bytes aleatorios que creamos, que enviamos a la creación, también tenemos que decir en qué dominio estamos, esto vincula el par de claves pública y privada a ese dominio específicamente, por lo que no es posible pescar una clave de security utilizando una authentication real. Luego agregamos algunos detalles del usuario y algunos algoritmos que podemos usar, y esto va a configurar todo un conjunto de cosas de criptografía, va a firmar ese desafío y nos devolverá tanto un desafío firmado como la clave pública, que podemos compartir de vuelta al servidor, el servidor puede luego usar la clave pública para verificar el desafío y asignar esta clave a este usuario. Luego, cuando volvemos a iniciar sesión, como nuestro segundo factor en este caso, podemos usar navigator potentials, obtener con la clave pública, enviar otro desafío, y luego en este caso solo va a devolver el desafío firmado, no necesitamos devolver la clave nuevamente, solo devuelve un desafío que puedes enviar de vuelta al servidor, descifrar y verificar utilizando la clave pública, y listo. Esto es realmente genial, porque ahora tenemos esta clave de autenticador que actúa como nuestra autenticación de dos factores, está conectada a nuestra máquina y podemos, y normalmente solo es un toque para interactuar con ella, así que volvemos a dos pasos, pero no necesitamos una clave de autenticador. Esto no es genial para cosas de consumo, porque no podemos esperar que cada consumidor tenga una clave de security. Y está vinculada a la clave en sí, por lo que si inicias sesión en otro dispositivo, debes mover la clave a ese dispositivo o registrar múltiples claves. Así que hay un problema inicial allí, pero en cuanto al security lado de las cosas, ahora estamos en el mundo de la criptografía de clave pública y privada. Si esa clave pública se revela en algún tipo de violación del servicio, no hay problema, es una clave pública. Todo lo que se puede hacer es verificar algo con la clave privada, por lo que no podemos filtrar esto y tampoco se puede pescar. Como dijimos, hemos vinculado la clave al dominio. Esto no es genial. Esto es genial. Maravilloso. Tenemos esto. La única dificultad aquí es necesitar las claves en sí. Entonces, aquí es donde estamos llegando en este mundo donde estamos tratando de eliminar por completo las contraseñas. Y finalmente, hemos llegado a ese punto. Ha sido mucho trabajo.

10. Contraseñas sin contraseña

Short description:

Las claves de seguridad son credenciales multi-dispositivo que utilizan un autenticador de plataforma, como un lector de huellas dactilares o reconocimiento facial. La verificación biométrica se realiza localmente, garantizando la seguridad de las biometrías del usuario. El autenticador de plataforma verifica la identidad del usuario antes de enviar cualquier dato al servidor. Una vez verificado, se envía un desafío firmado al servidor para la autenticación. Las claves de seguridad pueden sincronizarse en varios dispositivos, pero puede haber dificultades con diferentes navegadores o plataformas. Una clave de seguridad se puede utilizar en varios dispositivos incluso si no se ha guardado en ese dispositivo específico. Esto proporciona una experiencia de inicio de sesión fluida y segura.

Creo que entre los navegadores y las organizaciones que trabajan en este security asunto. Y llegamos a sin contraseña que es la clave de seguridad. Esto es de lo que hablan Google y Apple cuando lo presentan a sus usuarios. Las claves de seguridad son credenciales multi-dispositivo. Sí, todavía la API de gestión de credenciales. No desaparece. Pero en realidad, las claves de seguridad son, de hecho, solo autenticación web bajo el capó con un par de ajustes que nos permiten eliminar la contraseña al comienzo de nuestro sistema. Las claves de seguridad son autenticación web, pero utilizan un autenticador de plataforma. Lo que quiero decir con eso es que en mi Mac aquí, es el lector de huellas dactilares. En mi teléfono, es el reconocimiento facial y probablemente tengas varios dispositivos que tienen diferentes formas de verificación biométrica como esa. Es una verificación biométrica, pero esas biometrías nunca se comparten con el servidor. Tus biometrías de usuario permanecen seguras. Esto es algo bueno. Algunas personas querían implementar las biometrías de usuario como una idea de autenticación de dos factores, lo cual es una mala idea porque si se filtran, es muy difícil cambiar tus huellas dactilares. Pero al usar nuestro autenticador de plataforma, la plataforma misma verifica que el usuario es quien dice ser en el dispositivo. Solucionamos el paso antes de enviar cualquier data al servidor, lo cual es genial. Y una vez verificado, devuelve un desafío firmado que enviamos al servidor y autenticamos. Esto es casi como una autenticación de dos factores porque tenemos biometrías más algo que sabemos, nuestro par de claves pública y privada. Y también se sincroniza en varios dispositivos. Esto es lo más importante, realmente, para la user experience lado de las cosas. Nuestra autenticación web utilizando una clave de autenticador significaba que tendríamos que mover las claves o registrar múltiples cosas. Pero las claves de seguridad pueden sincronizarse en varios dispositivos. Esto depende de la plataforma. Si estás en hardware de Apple, el llavero con iCloud sincronizará estas claves en tus dispositivos. Y si estás en hardware de Google, si estás en Chrome OS o Android, eso también funcionará. Pero hay algunas dificultades allí en el sentido de que si usas diferentes navegadores en diferentes lugares o si tienes un dispositivo Android y una computadora portátil Mac, eso no se sincronizará. Por lo tanto, han incorporado en este sistema una forma de usar una clave de seguridad en varios dispositivos para permitirte iniciar sesión incluso si no has guardado una clave de seguridad para ese dispositivo aún. Así que esta es una buena experiencia. Lo veremos en un segundo. Primero, quiero mostrar un poco de código. Como dije, es autenticación web con un par de ajustes adicionales.

11. Implementación de Passkeys

Short description:

Para implementar passkeys, debemos probar la existencia de ciertos ajustes. Podemos usar la función isUserVerifyingPlatformAuthenticatorAvailable para verificar la presencia de un autenticador en el dispositivo. Si la mediación condicional está disponible, podemos mostrar opciones de passkeys registrados en el dispositivo. Al utilizar la API de gestión de credenciales y especificar el adjunto del autenticador como plataforma, podemos crear un passkey vinculado al dispositivo. El passkey se puede guardar y recuperar más tarde con la opción require resident key. Esto permite que los usuarios regulares utilicen passkeys en lugar de claves de seguridad.

Y así tienes que probar la existencia de esos ajustes. Y esto es un poco preocupante. Siento que el comité de standards aquí probablemente fue un desarrollador de Java en algún momento, ya que tenemos que pedir cosas como ¿está disponible el autenticador de plataforma que verifica al usuario? Mira, es un nombre de función muy largo. Pero al menos sabes lo que hace. En realidad, digo eso, pero ¿está disponible la mediación condicional no es tan obvio. Pero ¿está disponible el autenticador de plataforma que verifica al usuario es una función que podemos llamar para averiguar si hay un dispositivo, un autenticador en el dispositivo para que podamos preguntar ¿está disponible la mediación condicional nos permite mostrar opciones de passkeys que has registrado en el dispositivo. Si esas dos cosas están disponibles, entonces podemos continuar y llamar a la autenticación web. Entonces, nuevamente, API de gestión de credenciales. Cuando creamos una credencial en este caso, tenemos que pedir un par de cosas adicionales. En este caso, es la parte de selección del autenticador en la parte inferior. Y tenemos que decir que queremos que el adjunto del autenticador sea plataforma. Esto lo vincula al dispositivo. No te permite usar una clave para ello. Ahora, he hecho algunas pruebas recientemente con algunas personas que dicen: todavía quiero usar mi clave, sin embargo. Y resulta que también puedes implementarlo con una clave, con una clave de security. Pero estamos tratando de hacer esto para usuarios regulares que no tienen claves de security pero saben cómo poner su dedo en su computadora portátil. Y luego, el otro lado de las cosas es requerir resident key que permite guardar la clave en el dispositivo y recuperarla más tarde. Entonces, si tenemos esas dos cosas, obtenemos un passkey de esto siempre y cuando el usuario diga que sí.

Y esto es cómo se ve. He ido a passkeys.io porque es una demostración realmente buena de esto, y estoy en Safari en la computadora de escritorio en el lado izquierdo de la pantalla en este momento. No tenemos una cuenta, así que vamos a crear una y hacer un passkey. Esto ha mostrado ese diálogo de permisos. Tienes que usar el lector de huellas dactilares y guardarlo, y eso nos ha guardado un passkey. Buen trabajo. Y así no es muy emocionante más allá del inicio de sesión en esta demostración en particular, pero eso es lo que hace. Luego puedes volver a iniciar sesión y decir, ahora quiero iniciar sesión con el passkey. Hice esta demostración varias veces y aún no puedes eliminar passkeys, pero es el que está en la parte inferior con mi correo electrónico de Sonosource que estamos buscando. Así que perdí suficiente tiempo para asegurarme de que se sincronizara en mi iPhone, que ahora está en el lado derecho de la pantalla. Y así, si vamos al teléfono, podemos ir y simplemente iniciar sesión de inmediato con un passkey. Y nuevamente, vamos a obtener esa larga lista de passkeys que he guardado, pero si miramos hacia abajo, encontramos nuevamente el correo electrónico de Sonosource.

12. Iniciar sesión con Face ID o Passkey

Short description:

Utilizamos nuestra identificación facial o un passkey para iniciar sesión de inmediato, eliminando la necesidad de contraseñas. La experiencia es excelente, sin necesidad de recordar o reutilizar contraseñas. Se sincroniza en todos los dispositivos y proporciona una experiencia de inicio de sesión mágica. En cuanto a la seguridad, es resistente al phishing y utiliza cifrado de clave pública-privada. Sin embargo, depende de plataformas como Apple y Google para la sincronización.

En este caso, utilizamos nuestra identificación facial y nos registramos de inmediato. En realidad, puedes verificar que el passkey es el mismo. Tiene el mismo ID en la pantalla. Así que eso es genial en todos los navegadores en la misma red, pero si vamos a Chrome ahora, podemos iniciar sesión con un passkey, y Chrome sabe que no tenemos ningún passkey para esto, por lo que inmediatamente nos ofrece este código QR.

Luego podemos usar el teléfono para escanear el código QR. No sé cómo usar mi teléfono. Usa el teléfono para escanear el código QR y úsalo para iniciar sesión con un passkey, y nos da las mismas opciones nuevamente. Una vez más, nos desplazamos hasta el final, encontramos el correo electrónico de Sonosource y decimos, sí, quiero usar la identificación facial. El passkey tiene éxito, lo envía de vuelta al navegador, que puede comunicarse con el servidor, y hemos iniciado sesión en Chrome. Ahora, lo único que esta demostración en particular no muestra es que luego deberíamos ofrecer dentro de ese navegador, como, registrar una nueva clave, para que no tengas que pasar por el proceso del segundo dispositivo nuevamente. Pero creo que eso es bastante genial. Creo que desde el punto de vista del registro y el inicio de sesión, hemos solucionado casi todo. Entonces, la experiencia es excelente. Ahora no necesitamos una contraseña. Nunca más tendremos que preguntar a las personas si reutilizan sus contraseñas, porque no puedes reutilizar esta información. No tenemos que pensar en contraseñas largas y difíciles o diferentes para cada dispositivo, cada aplicación, porque se hace completamente por nosotros. Requiere el autenticador de plataforma. Y aunque la mayoría de las personas, no todas, pueden tener un dispositivo capaz de eso. Y así, todavía tenemos que implementar las cosas antiguas, por eso antes de llegar a este tema sin contraseña, te hablo de cómo podemos mejorar esas cosas en el camino. Pero luego se sincroniza en todos los dispositivos. Y, nuevamente, eso es una experiencia bastante mágica, creo. Cuando inicias sesión en un lugar y descubres que puedes iniciar sesión en otro dispositivo sin ningún esfuerzo adicional. Maravilloso. Y luego, en cuanto a la security seguridad, son todas las cosas que mencioné anteriormente sobre la authentication autenticación web. Es resistente al phishing, es de clave pública-privada, no se puede filtrar. Es glorioso. No soy un consultor de seguridad profesional remunerado de ninguna manera, lo que significa que puedo decir, ¿es perfecto? Quizás. Pero tal vez una desventaja es que dependemos de plataformas como Apple y Google para permitirnos hacer esta sincronización. Ahora, estas claves están cifradas por esas contraseñas de cuenta antes de que se compartan en las diversas nubes y solo se descifren de nuevo en el dispositivo.

13. Conclusion and Recommendations

Short description:

Existen inconvenientes en la autenticación sin contraseña, como el soporte del navegador. Sin embargo, actualmente es compatible con Chromium y Safari, y Firefox está trabajando en ello. 1Password admite la autenticación sin contraseña y mantiene un directorio de lugares que la admiten. Las recomendaciones incluyen detectar el soporte de Passkey, ofrecer múltiples Passkeys e incluir alternativas con contraseñas y autenticación de dos factores. Una vez que los usuarios puedan usar Passkeys, pueden eliminar sus contraseñas inseguras.

Por lo tanto, es bastante seguro. Pero si eres el tipo de persona que nunca pondrá nada en iCloud o en la nube de Google, entonces no estarás contento con esto. Pero afortunadamente, esos son solo profesionales de seguridad paranoicos a los que no les gusta hacer ese tipo de cosas de todos modos. Y esto intenta solucionar la seguridad de la cuenta y la autenticación para los usuarios regulares.

¿Existen otras desventajas? Bueno, por supuesto que las hay. Siempre hay soporte de navegador. Pero afortunadamente, ahora estamos en una posición en la que es compatible con Chromium, por lo que en general, con los navegadores basados en Chromium. Es compatible con Safari, como hemos visto en las demostraciones. Y se supone que Firefox está trabajando en ello este año. No puedo prometer nada en cuanto a si el equipo de Firefox tiene previsto implementarlo este año. Pero esperemos que sí.

1Password es un defensor divertido de la autenticación sin contraseña. Siento que eventualmente tendrán que cambiar el nombre de su empresa. Pero están a favor de ello. También quieren ver el fin de las contraseñas. Y mientras intentan admitirlo como parte de su complemento, parte de su aplicación, también están apoyando a las personas que lo están implementando. Y si vas al directorio de Passkey, este es un sitio respaldado por 1Password. Enumera los lugares que ahora admiten la autenticación sin contraseña a través de Passkeys. Y puedes revisar esta lista, seleccionar las cuentas que tienes e iniciar sesión para ver si puedes registrarte un Passkey y deshacerte de esas contraseñas. Yo lo hice con mi cuenta de Microsoft, lo cual es genial. Ya no tengo una contraseña para acceder a mi cuenta de Microsoft. Lo agregué a GitHub, pero actualmente solo se usa como segundo factor. Pero espero que eso sea algo que podamos cambiar. Y hay otros lugares.

Entonces, algunas recomendaciones para esto, este es el momento de implementarlo. Este es el momento de mejorar nuestras cuentas, mejorar la autorización de nuestra cuenta, la autenticación, para que sea una mejor experiencia y una experiencia más segura para todos. Por lo tanto, detecta el soporte de Passkey y ofrécelo de inmediato. Admite múltiples Passkeys. Como dije, queremos poder ofrecer un registro de Passkey si has tenido que iniciar sesión mediante el método del código QR. Aún necesitamos incluir alternativas con contraseñas e incluir autenticación de dos factores porque las contraseñas simplemente no son suficientes. Pero si utilizamos todos los consejos que mencioné al principio de la charla, podemos mejorar esa experiencia y también hacerla un poco más segura. Y finalmente, una vez que un usuario pueda usar sus Passkeys, puedes ofrecerle que elimine esa contraseña, esa credencial insegura. Estaría encantado de eliminarla de mi cuenta de Microsoft y otras personas también pueden hacerlo. Tengo algunos enlaces en la diapositiva que compartiré en las redes sociales. Pero aparte de eso, deshagámonos de las contraseñas. Vamos por los Passkeys todo el camino. Nuevamente, mi nombre es Phil Nash, soy un defensor del desarrollo para Sona. Muchas gracias por venir.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Node Congress 2022Node Congress 2022
26 min
It's a Jungle Out There: What's Really Going on Inside Your Node_Modules Folder
Top Content
Do you know what’s really going on in your node_modules folder? Software supply chain attacks have exploded over the past 12 months and they’re only accelerating in 2022 and beyond. We’ll dive into examples of recent supply chain attacks and what concrete steps you can take to protect your team from this emerging threat.
You can check the slides for Feross' talk here.
Node Congress 2022Node Congress 2022
34 min
Server-side Auth with Remix, Prisma, and the Web Platform
Top Content
In this talk, we'll get a live coded demo of building custom hand-rolled authentication. When you have the right tools (and we do), authentication can be quite simple and secure. This is more (and better) than just: "Install this library and you're good to go." When we're done we'll have our own auth code that can evolve with our ever-changing requirements without a need to learn some library-specific APIs. We'll be leveraging the Web Platform the way it was meant to be done to give us simple and secure server-side authentication for the web.
You can check the slides for Kent's talk here as well as demo code.
React Advanced Conference 2021React Advanced Conference 2021
22 min
Let Me Show You How React Applications Get Hacked in the Real-World
Top Content
Modern frontend frameworks like React are well thought-of in their application security design and that’s great. However, there is still plenty of room for developers to make mistakes and use insecure APIs, vulnerable components, or generally do the wrong thing that turns user input into a Cross-site Scripting vulnerability (XSS). Let me show you how React applications get hacked in the real-world.
JSNation 2023JSNation 2023
22 min
5 Ways You Could Have Hacked Node.js
All languages are or were vulnerable to some kind of threat. I’m part of the Node.js Security team and during the year 2022, we've performed many Security Releases and some of them were really hard to think about.
Did you know you can make money by finding critical vulnerabilities in Node.js? In this talk, I’ll show you 5 ways you can have hacked Node.js and how the Node.js team deals with vulnerabilities.
JSNation Live 2021JSNation Live 2021
9 min
Securing Node.js APIs with Decentralised Identity Tokens
Authentication and Authorization are serious problems. We often dedicate a lot of time to craft powerful APIs but overlook proper security measures. Let's solve it with Magic using a key-based identity solution built on top of DID standard, where users’ identities are self-sovereign leveraging blockchain public-private key pairs. In this talk, we’ll look at proper ways to secure our Node.js APIs with Decentralised Identity Tokens. We’ll go from learning what Decentralised Identity standards are, how the users’ identities are self-sovereign leveraging blockchain public-private key pairs, why they’re the future of API security, and to put theory into practice we will build a real-world implementation using Node.js where I’ll show common best practices.

Workshops on related topic

React Summit 2023React Summit 2023
56 min
0 to Auth in an hour with ReactJS
WorkshopFree
Passwordless authentication may seem complex, but it is simple to add it to any app using the right tool. There are multiple alternatives that are much better than passwords to identify and authenticate your users - including SSO, SAML, OAuth, Magic Links, One-Time Passwords, and Authenticator Apps.
While addressing security aspects and avoiding common pitfalls, we will enhance a full-stack JS application (Node.js backend + React frontend) to authenticate users with OAuth (social login) and One Time Passwords (email), including:- User authentication - Managing user interactions, returning session / refresh JWTs- Session management and validation - Storing the session securely for subsequent client requests, validating / refreshing sessions- Basic Authorization - extracting and validating claims from the session token JWT and handling authorization in backend flows
At the end of the workshop, we will also touch other approaches of authentication implementation with Descope - using frontend or backend SDKs.
Node Congress 2023Node Congress 2023
63 min
0 to Auth in an Hour Using NodeJS SDK
WorkshopFree
Passwordless authentication may seem complex, but it is simple to add it to any app using the right tool.
We will enhance a full-stack JS application (Node.JS backend + React frontend) to authenticate users with OAuth (social login) and One Time Passwords (email), including:- User authentication - Managing user interactions, returning session / refresh JWTs- Session management and validation - Storing the session for subsequent client requests, validating / refreshing sessions
At the end of the workshop, we will also touch on another approach to code authentication using frontend Descope Flows (drag-and-drop workflows), while keeping only session validation in the backend. With this, we will also show how easy it is to enable biometrics and other passwordless authentication methods.
Table of contents- A quick intro to core authentication concepts- Coding- Why passwordless matters
Prerequisites- IDE for your choice- Node 18 or higher
React Day Berlin 2023React Day Berlin 2023
127 min
Authentication Beyond Passwords
WorkshopFree
Passwords have long been the keys to our kingdoms. However, they often become the weak points in our armor — forgotten, misused, or exploited. Our Next apps often make use of passwords to authenticate users, but what would a world with no passwords look like? And how we can start driving into that future today?
JSNation 2023JSNation 2023
57 min
0 To Auth In An Hour For Your JavaScript App
WorkshopFree
Passwordless authentication may seem complex, but it is simple to add it to any app using the right tool.
We will enhance a full-stack JS application (Node.js backend + Vanilla JS frontend) to authenticate users with One Time Passwords (email) and OAuth, including:
- User authentication – Managing user interactions, returning session / refresh JWTs- Session management and validation – Storing the session securely for subsequent client requests, validating / refreshing sessions
At the end of the workshop, we will also touch on another approach to code authentication using frontend Descope Flows (drag-and-drop workflows), while keeping only session validation in the backend. With this, we will also show how easy it is to enable biometrics and other passwordless authentication methods.
Node Congress 2022Node Congress 2022
155 min
Managing Authentication in Next.js
Workshop
Next.js is a compelling framework that makes many tasks effortless providing many out-of-the-box solutions. But when it comes to authentication and user security, it's our mission to make it reliable, secure, and efficient. In this workshop, we'll focus on different user authentication and session management approaches, starting from a custom authentication strategy (that we will build together), and ending learning how to identify and integrate the right auth provider (Auth0, Firebase, etc.) for any app.
Table of contents:- A brief introduction to Next.js- Building an authentication mechanism from scratch- Why we should avoid custom authentication- How to identify the proper authentication mechanism and provider- Integrating NextAuth.js, Auth0, Firebase, or any other provider
JSNation 2022JSNation 2022
99 min
Finding, Hacking and fixing your NodeJS Vulnerabilities with Snyk
WorkshopFree
npm and security, how much do you know about your dependencies?Hack-along, live hacking of a vulnerable Node app https://github.com/snyk-labs/nodejs-goof, Vulnerabilities from both Open source and written code. Encouraged to download the application and hack along with us.Fixing the issues and an introduction to Snyk with a demo.Open questions.