texto:   A-   A+
eliax

#eliax explica: El final de las claves en páginas web y apps con WebAuthn y PassKeys
eliax id: 11587 josé elías en ago 17, 2022 a las 12:45 PM ( 12:45 horas)
eliax¿Imaginan un futuro en donde por fin no tengan que entrar una clave más en una página web o app para poder acceder? Pues ese futuro ya está aquí, y hoy les explico cómo funciona.

Lo que permite esto es una técnica que en sí existe desde hace años y se llama "criptografía de llaves públicas y privadas", sin embargo hasta recientemente esa técnica se ha utilizado para temas muy específicos de bajo nivel de los cuales la mayoría de usuarios desconoce (por ejemplo, es lo que permite que salga "el candado" que protege tu navegador de Internet cuando estás entrando tus credenciales y compras, y es lo que también permite que distintas entidades bancarias transmitan entre sí información de forma segura por el internet público).

Pero desde el 2016, una de las entidades que vela por la estandarización del internet (la W3C) emitió un estándar llamado WebAuthn que por fin está siendo adoptado por las grandes empresas que tienen plataformas con miras al usuario común (como Apple, Google y Microsoft), y que permitirá que por fin nunca tengas más ni que crear, memorizar o escribir claves.

Y la razón que escribo este artículo hoy es porque estamos a semanas de que Apple lance su tecnología PassKeys en iOS 16 y en macOS Ventura, que permitirá que cientos de millones de personas inicien a utilizar esta tecnología, lo que la popularizará y masificará y hará que otras plataformas como Android y Windows (que también ya ha sacado tecnologías similares) también expandan su base de usuarios con sus respectivas tecnologías libres de claves que también interoperarán por medio del estándar WebAuthn.

Ok, ¿cómo funciona esto?

Para entender utilicemos una analogía de cómo funcionan los sistemas tradicionales de "login" de hoy día: Hoy día cuando entras a una página web o app que solicita tu usuario y clave, en esencia lo que está ocurriendo es que la página web o app te está pidiendo que le pases la llave de un candado digital que ellos tienen almacenados en su servidor o app. Y si tu llave abre ese candado entonces eso significa que tus credenciales son válidos y te permiten entrar.

Pero en el caso de WebAuthn y PassKeys, lo que sucede es que la página web o app te envía a ti tu candado, y si tu logras abrirlo para ellos entonces esa es la señal de que tus credenciales son válidos ya que tú debiste haber tenido la llave que abre el candado. Eso de paso significa que los administradores de la página web o app nunca tienen acceso a tan siquiera ver tu llave que abre el candado de seguridad, ya que la llave la mantienes tú en todo momento.

Pero, ¿cómo es esto posible? Pues lo que sucede tras bastidores es realmente bastante simple: Se utiliza un par de llaves, una privada y una pública, que están relacionadas matemáticamente entre sí, en donde lo que tú cifres con la llave privada solo puede ser descifrado por la llave pública, y viceversa.

La llave privada siempre permanece almacenada localmente en tu dispositivo local (digamos, tu celular como ejemplo), y la llave pública (que en este caso podemos ver más como un candado) se la das a todo el mundo que desee poder darte acceso a su página web o app.

Y de la manera que funciona el mecanismo es que en el momento que visitas una página web o app por primera vez tu dispositivo le provee automáticamente tu llave pública (el "candado") junto con cualquier otra información requerida (nombre, email, etc). Esto crea tu cuenta y nota que nunca tuviste que escribir una clave.

Después de ahí cuando desees entrar a tu cuenta lo que sucede es que la página web o app le pregunta a tu celular quien eres, y este le da tu usuario (digamos, tu email) en cuyo momento la página web o app responde enviándole a tu dispositivo un mensaje cifrado con tu llave pública (el candado), y lo que tu dispositivo tiene que hacer ahora es utilizar tu llave privada (que solo tienes tu) para descifrar el mensaje y que la página web o app sepa que tú eres realmente quien dices ser.

Esto es posible ya que solo tu llave privada puede descifrar un mensaje cifrado con tu llave pública. Y es bueno notar que en el paso en donde la página web o app envía tu llave pública que en ese momento tu dispositivo utiliza los datos biométricos asociados a tu dispositivo (como por ejemplo tu huella digital o cara, con tecnologías como Touch ID o Face ID de Apple) para enviar el mensaje cifrado al chip de seguridad de tu celular para que este descifre el mensaje con tu llave privada.

O en otras palabras, tus datos biométricos ahora se convierten en tu forma de acceder a una página web o app.

Así que en la práctica para entrar por ejemplo a una página web o app el procedimiento sería el siguiente:

1. Visitas la página web o abres el app.

2. Escaneas tu huella digital o cara en el celular.

3. Y esto es todo. Entras inmediatamente al app.

Pero ojo, que no es tan solo que ahora con tu huella o cara puedes entrar a una página web o app sin tu hacer nada, la otra gran ventaja de esto es que no existen claves en ningún paso que tengas que crear, almacenar o recordar. Esto es sin duda alguna la forma más transparente que existe a la fecha para que accedas a tus datos sin necesidad alguna de utilizar claves.

Pero aparte de que ya no existirían claves que tengas que manejar, la otra gran ventaja de este mecanismo es que eliminarían gran parte de los riesgos de seguridad que existen en el momento que hackers malignos traten de adivinar o robarte tu clave, ya que no hay clave para robar por ningún lado.

Incluso si un hacker tuviese grabando todo lo que haces en la pantalla de tu celular, o instalara uno de esos programas troyanos que monitorean tu teclado, aun así no podrán acceder a tus páginas web o app ya que el mecanismo realmente depende de que tu celular utilice tu llave digital privada para descifrar mensajes cifrados con tu llave pública, y esa operación ocurre en un área protegida de tu celular (en iPhones ocurre en el Digital Enclave, un chip que solo puede ser desbloqueado por ti y cuya firma digital almacenada no puede sacarse de ese chip incluso por medio de programación de software; y en Windows y Android existen mecanismos similares: en Windows con la tecnología TPM y en Android hay ejemplos como la tecnología Knox de Samsung).


Habiendo dicho todo eso, he aquí ahora algunas respuestas a preguntas que quizás tengan sobre esta tecnología:

1. ¿Cuál es la diferencia entre esto y el usar un Password Manager (Gestionador de Claves) que utiliza mis datos biométricos?
Un Gestionador de Claves con lo único que te ayuda es en almacenar tus claves en un lugar centralizado en una zona relativamente segura, y en escribir las claves por ti en páginas web y apps, pero sufren del tema de que todavía estás teniendo que depender de una clave que hay que escribir en algún formulario, y por tanto no te protege en lo absoluto de las más populares formas de ataque (como leer tu teclado, infectar una página web con malware, o simplemente adivinar tu clave de forma bruta probando millones de combinaciones una a la vez).

2. ¿Qué sucede si quiero que alguien más entre a mi cuenta con mis credenciales, no podrán hacerlo si no tienen mis datos biométricos?
Para esto esos usuarios tendrían o que (1) entrar de forma tradicional con un usuario y clave, lo que no es muy seguro, o (2) imagino que en un futuro cercano será posible que desde tu celular des permiso en tiempo real a esa otra persona de forma remota para que entre (similar a como con el sistema de ScreenTime de Apple los padres podemos autorizar que nuestros hijos compren cosas por Internet desde sus propios celulares).

3. Si soy usuario de Apple o Google y quiero acceder a un servicio de otro proveedor como Microsoft, Amazon, eBay u otro ¿tengo que tener un dispositivo en esa plataforma para acceder o recrear mis datos biométricos con ellos de alguna forma?
La tecnología WebAuthn es totalmente interoperable, por lo que funcionará de forma transparente entre distintas plataformas, proveedores y dispositivos. Eso significa por ejemplo que un usuario de Android que haya instalado el app iTunes de Apple en su celular podrá seguir utilizando sus credenciales de su celular Android para acceder a los servicios de subscripción de Apple sin necesidad de entrar claves.

4. ¿Qué sucede si mi dispositivo no tiene capacidades biométricas para por ejemplos leer mi huella digital o escanear mi cara en 3D?
Es posible (a opción del proveedor de tu celular o laptop por ejemplo) de utilizar WebAuthn sin datos biométricos, utilizando un PIN de unos cuantos dígitos, sin embargo esta opción no es tan segura ni conveniente como la opción biométrica, aunque ciertamente es más segura y conveniente que la forma tradicional de hacer login. Mi recomendación es que opten por celulares que al menos puedan leer la huella digital, y noten que ya la nueva generación de laptops y teclados están soportando leer tus huellas digitales (como por ejemplo todas las nuevas laptops de Apple, así como sus teclados externos con Touch ID), por lo que en cuestión de 2 a 5 años esta será la norma.

5. He leído que hackers han podido sacar copias 3D de huellas digitales, ¿no comprometerá eso la seguridad de esta tecnología?
Una ventaja de esta tecnología es que tu llave privada está almacenada en tu celular o laptop a mano, por lo que incluso si alguien clonara tu huella digital no les serviría de nada al menos que también tengan acceso físico a tu celular para poner la huella en el lector.

6. ¿Y qué tal de hackers que ponen fotos o estatuas de réplica de una persona para engañar el sistema biométrico de tu cara?
El mismo comentario anterior de huellas digitales aplica aquí, si los hackers no tienen acceso a tu celular físicamente no pueden tener acceso a tus credenciales.

Noten además que hay dos tipos de reconocimiento facial. Hay una que es utilizada por muchos celulares Android que lo que hacen simplemente es sacarle una foto a tu cara y compararla con una foto previamente tomada. Esta forma no es segura para acceder a tu celular (y recomiendo no utilizarla) ya que es fácilmente penetrable con solo mostrarle una foto de tu cara al celular (lo he hecho personalmente con amigos).

La otra forma es lo que hace Apple con Face ID que es totalmente diferente: El iPhone dispara más de 30,000 puntos invisibles a tu cara con los cuales crea una máscara virtual en 3D, cuyos datos combina también con una imagen previamente tomada de tu cara en 2D y 3D, y de paso el iPhone observa tus pupilas para asegurarse de que estés vivo y atento a la pantalla (por eso es que el iPhone te solicita que veas el celular directo). Esto es muchísimo más seguro y es la forma recomendada de implementar reconocimiento facial, y razón por la cual para temas biométricos el iPhone es permitido por varias instituciones financieras para asegurar tus transacciones con tu cara, mientras que no lo permite con varios otros tipos de celulares.

En el mundo Android, cuando estés en duda, opta por el momento de escribir este artículo en autenticación biométrica con tu huella digital, al menos que al leer las especificaciones técnicas de tu celular sepas y entiendas qué tipo de autenticación biométrica facial realiza.


---


Actualización Febrero 2023: Apple recientemente con iOS 16.3 y macOS 13.2 permite el uso de llaves en hardware para sus dispositivos iPhones, iPad y Macs, lo que se une a la misma funcionalidad que también se puede obtener en Windows y en algunas versiones de Android.

Con este tipo de llaves o "Hardware Keys" es posible asegurar aun más tu cuenta, ya que para iniciar sesión en cualquier nuevo dispositivo con tu cuenta debes conectar físicamente (en un puerto USB-A o USB-C o Lightning) o de forma inalámbrica cercana (con NFC, como en todos los iPhones recientes) una llave en forma de memoria USB que contiene tus credenciales para poder entrar.

En la implementación de Apple es requerido que tengas que activar dos llaves como mínimo (y un máximo de 6) con la finalidad de que si se te pierde, avería o te roban una, tengas una segunda de repuesto para emergencias.

Nota que si por alguna razón pierdes accedo a tus llaves, que Apple te permite devolver a entrar de forma manual con tu clave y PIN siempre y cuando tengas habilitada la función de Autenticación de Dos Factores (2FA, o Two-Factor Authentication), pues es la única forma que pueden asegurarse (en la medida de lo posible) que nadie te pueda hackear remotamente.

autor: josé elías

Comentarios

  • Espero se implemente algo igual con las tarjetas de crédito ya que en pleno 2022 existiendo la tecnología hoy día es estúpida la cantidad de fraudes que hay de todo tipo con los bancos.

  • Me gusta no tener que depender de mi memoria o gestor de contraseñas, me gusta entrar a mis cuentas de google y solo tener que seleccionar un numero y mi huella, espero que no tarde mucho en pasar a esta forma google y todos los demás.

  • Pero si el mecanismo de autenticación está atado al hardware (el chip en el caso del iPhone) y yo pierdo mi dispositivo; como recupero acceso a mi cuenta de Google (por mencionar uno) si ese dispositivo contenía la llave privada?

    • Aunque tú no tengas acceso a tu llave privada directamente, el proveedor de seguridad (en este caso, Apple) puede permitirte compartir de forma segura (por medio de cifrado con tu propia clave de iCloud) tu llave privada entre distintos dispositivos, de forma que siempre tengas acceso a tu data. Así es como funciona iCloud hoy día y la razón por la cual puedes utilizar iCloud como un login universal entre dispositivos de Apple.

  • Excelente artículo. A mi me gustaría saber que pasaría si extravíanos nuestros dispositivos en donde se está almacenando nuestra llave privada, que pasaría entonces?

  • Muy interesante! Tengo otra pregunta: qué pasa si pierdo el móvil? Tendré que volver a crear las claves pública/privada, no? Y para hacer eso supongo que habrá que utilizar el Password. Si fuera así, tendremos que seguir recordando passwords o utilizar un password Manager

  • Entonces estaría muy crítico perder tu celular, no eres tu celular

  • Muy bien explicado y ojalá pronto los grandes de la industria vayan adoptando este mecanismo. Tengo la duda en el caso qué hayamos perdido el celular y necesitemos entrar a nuestra cuenta desde otro dispositivo, por ejemplo alguien nos presta un laptop para entrar a nuestra cuenta y hacer borrado remoto o localizar nuestro celular... Se puede como alternativa de emergencia seguir teniendo una contraseña?

  • Entonces que pasa si quieres acceder a una página web como Facebook desde tus dos celulares o iPad o computadora de trabajo y laptop personal? Si Cada uno entonces tiene su propia llave privada, Facebook permitirá que acceda a mi cuenta con mas de una llave privada?

    • Ahí hay dos soluciones possibles:

      1. Que el proveedor del servicio (digamos, Facebook) te permita asociar varias llaves privadas a la misma cuenta.

      2. Que el proveedor de seguridad (digamos, Apple) te permite compartir de forma segura tu llave privada entre tus varios dispositivos con tu misma cuenta. Esto se puede hoy día en el ecosistema Apple por medio de iCloud.

  • Jose Elias, deberias renovar el certificado del sitio, que me aparece inseguro

    • Ciertamente, acabo de fijarme que un script de Google está siendo llamado sin https. Lo corregiré más adelante cuando esté en mi entorno de desarrollo del blog (aunque te lo mencionen algunos navegadores, en este caso no es un riego de seguridad).

      ¡Y gracias por avisar!

  • Básicamente lo que hace Authenticator de Microsoft.

  • Que pasaria si mi llave privada es comprometida (robada), con el login tradicional, solo cambio mi clave en el sitio comprometido, pero con este mecanismo tendría que cambiar mi clave privada, lo que me sacaría de todos los sitios donde accedo, y como esto usa mis datos biométricos para crear la llave privada, acaso es posible hacer eso, cambiar mi clave privada?

    • Tu llave privada es inaccessible ya que está almacenada en el chip de seguridad, y si algún es sacada de ahí sería cifrada previamente con otra llave (como la de tu proveedor).

      El chip esencialmente funciona como una caja negra: Tu le das lo que hay que cifrar o descifrar y el chip internamente utiliza tu llave privada (que fue generada dentro del chip) para cifrar o descifrar sin exponer la llave nunca.

      • Sin embargo dices más arriba que tú clave privada se comparte entre todos los dispositivos Apple, así que no queda siempre oculta en el chip: pasa por el iCloud. Claro que ellos dirán que es seguro pero bueno, ya sabemos que siempre dicen que es lo más seguro del mundo y mientras tanto hay empresas vendiendo a los gobiernos dispositivos que rompen esa seguridad en minutos.

        • Para transportar tu clave de un lugar a otro se cifra con tu clave principal primero (que debes escribir manualmente en cada dispositivo), por lo que incluso si se pusiera en el internet público en su formato cifrado no sería de utilidad para nadie (eso es precisamente lo que pasa con el cifrado de datos en navegadores web por ejemplo, en donde se utilizan llaves públicas y privada para cifrar información que viaja por el internet público)

  • Si logran llegar a tu llave privada, estás frito pies es como usar un solo password para todas las Webs

  • .....

Añadir Comentario

tu nombre
tu email
(opcional)
web personal
(opcional)
en respuesta a...
comentario de caracteres máximo
2 + 7 = requerido (control anti-SPAM)
¿De qué color es el cielo?: requerido (control anti-SPAM)
 

"[...] pienso lo mismo que tu pero no tenía las palabras que tu utilizaste para exprezar tantas cosas tan interesantes que mucha gente no es capaz de percibirlas como lo dices por lógica o sentido común.
La verdad me encantó el artículo. muchas gracias.
"

por "Eduardo Martínez" en nov 17, 2012


en camino a la singularidad...

©2005-2024 josé c. elías
todos los derechos reservados
como compartir los artículos de eliax