Desarrolladores

Llaves de paso, una Introducción Ligera para Mejorar la UX de Blockchain

Autor

Bri Wylde

Fecha de publicación

La tecnología Blockchain es frecuentemente reconocida y celebrada por sus características inherentes de transparencia, seguridad, eficiencia y descentralización, así como por sus casos de uso beneficiosos, incluyendo el potencial de brindar oportunidades financieras a poblaciones desatendidas y subbancarizadas — y todo esto es cierto. Hay numerosos ejemplos en el mundo real de cómo blockchain tiene un impacto positivo en el mundo. Un caso convincente se detalla en este estudio de caso, destacando cómo la billetera cripto Decaf brinda oportunidades financieras a pequeñas empresas en América Latina.

Sin embargo, una gran tecnología y casos de uso sólidos no siempre equivalen a adopción. Una famosa cita de la película Field of Dreams dice: “Si lo construyes, vendrán”, implicando que construir algo valioso atraerá naturalmente a los usuarios. ¡Bueno, blockchain está aquí! Pero la gente no necesariamente lo está usando. Solo alrededor de 300 millones de personas usan realmente blockchain, lo que es menos del 4% de la población global. Compáralo con Web2, que tiene más de 5 mil millones de usuarios.

Entonces, sabemos que blockchain es valioso y tiene un montón de potencial, sin embargo, todavía está luchando para ganar adopción generalizada. ¿Por qué, podrías preguntar? Bueno, una razón principal es que la experiencia de usuario final es desconocida, torpe e intimidante, especialmente para los nuevos usuarios y aquellos que vienen de Web2.

El Problema de la Experiencia de Usuario en Blockchain

Las personas típicamente interactúan por primera vez con Web3 y blockchain a través de un servicio centralizado y custodio como Coinbase o Binance, que son esencialmente plataformas Web2 que dan acceso a los usuarios a activos Web3. Aunque estos servicios son bastante amigables con el usuario, los usuarios no tienen control total sobre sus activos o claves privadas (definidas abajo).

Usar billeteras no custodias en cambio da a los usuarios control total sobre sus activos, claves privadas y transacciones pero introduce una experiencia de usuario más compleja. Vamos a pasar por un viaje de usuario típico con un servicio no custodio para mostrar algunos de estos problemas.

Un individuo abre una “billetera” cripto para crear cuentas, obtener activos, acceder a sus activos y realizar varias funciones. Hay muchas billeteras cripto diferentes por ahí — en Stellar solo, hay LOBSTR, xBull, Vibrant, Freighter, Albedo, Beans, la lista sigue. Y cada uno de estos servicios no custodios requiere que cada individuo cree una cuenta consistente en una clave pública y una clave privada (también llamada clave secreta), que juntas componen un par de claves y, dependiendo de la billetera, una frase de paso de 24 palabras. Cuando un usuario recibe su par de claves, típicamente viene acompañado de una advertencia ominosa que dice algo como, “NO PIERDAS TU CLAVE SECRETA O FRASE DE PASO. Si lo haces, perderás tus activos PARA SIEMPRE!”

Con esa experiencia de inicio de sesión desconocida y advertencia desalentadora, muchos usuarios nuevos probablemente ya se han asustado. Usar claves secretas para firmar transacciones y largas frases de paso para acceder a cuentas crea una experiencia de usuario compleja con serias preocupaciones de seguridad. No solo debes almacenar tu clave secreta en algún lugar seguro y privado, sino que también necesitas que sea accesible, ya que una clave secreta se requiere para autorizar cada transacción en la red. Y si tienes cuentas con múltiples billeteras, estás almacenando múltiples pares de claves. Es confuso y engorroso, incluso si eres un usuario frecuente de blockchain.

Afortunadamente, la mayoría de los desarrolladores de blockchain se dan cuenta de estos problemas de usabilidad y están explorando varios avances para mejorar la experiencia de usuario y hacer que la tecnología sea más accesible para aumentar la adopción. Una de estas características son las llaves de paso, un método de autenticación más seguro y amigable con el usuario que permite a los usuarios acceder a cuentas y firmar transacciones.

Entremos un poco en la historia de las llaves de paso antes de saltar a cómo funcionan las llaves de paso específicamente en blockchain.

Llaves de Paso en Web2

Las llaves de paso no son una tecnología nueva, ya han sido ampliamente adoptadas en Web2 y están implementadas en varios servicios como Amazon, WhatsApp, LinkedIn, PayPal y más. Una llave de paso es un método de cifrado robusto, seguro y centrado en el usuario que autentica a los usuarios, permitiéndoles acceder a servicios, sistemas y aplicaciones sin introducir una contraseña (o clave secreta o frase de paso en blockchain).

Durante muchas décadas, las contraseñas han sido el método principal de autenticación de usuarios. Sin embargo, vienen con su buena parte de problemas de seguridad y usabilidad. Los individuos tienen que gestionar y recordar múltiples contraseñas, y a menudo, reutilizan contraseñas en varias plataformas con solo ligeras variaciones. Cuando un usuario introduce su contraseña para autenticación, se transfiere desde el dispositivo del usuario a un servidor, lo que la expone a posibles interceptaciones por atacantes. Si un actor malo obtiene la contraseña, puede ser capaz de usarla para acceder a las otras cuentas del usuario.

Las llaves de paso abordan estos problemas permitiendo a los usuarios registrarse y autenticarse sin depender de contraseñas. Las llaves de paso se crean usando la API de WebAuthn, que es ampliamente soportada por navegadores modernos y sistemas operativos. Las llaves de paso son pares de claves cifradas almacenadas de forma segura en el dispositivo del usuario y pueden ser accedidas usando biometría o un PIN del dispositivo. Además, son específicas del dominio, lo que significa que una llave de paso solo funciona con su sitio web intencionado. Este mecanismo verifica el dominio del sitio web contra el dominio intencionado de la llave de paso, ayudando a proteger a los usuarios de sitios de phishing y maliciosos.

Las llaves de paso mejoran significativamente la autenticación y combinan seguridad mejorada con usabilidad sin problemas. ¡Así que, por supuesto, también están siendo adoptadas en Web3!

Llaves de paso en Blockchain

Las llaves de paso en Web3 funcionan de manera similar a Web2 y ofrecen una experiencia de usuario más familiar, segura y simple al abstraer la gestión de pares de claves y frases de paso.

Antes de entrar en cómo funcionan las llaves de paso, definamos algunos componentes clave:

  • Usuario: el individuo interactuando con la aplicación descentralizada (dapp).
  • Dapp: la interfaz frontal para el servicio de blockchain con el que el usuario está interactuando.
  • Dispositivo: lo que el usuario está usando para interactuar con la dapp (por ejemplo, un smartphone o computadora).
  • Billetera inteligente: un contrato inteligente que actúa como la cuenta del usuario; esto reemplaza las típicas claves públicas y privadas con las que estamos familiarizados en blockchain. Las billeteras inteligentes pueden depender de llaves de paso para la autenticación y habilitar comportamientos de cuenta más programables.
  • Llave de paso: un par de claves pública y privada criptográfica generada usando la curva elíptica secp256r1 que es generada y almacenada de forma segura en un dispositivo usado para autenticar usuarios. Las llaves de paso se generan a través de la API de WebAuthn y se acceden usando sistemas biométricos existentes o un PIN del dispositivo.

Combinemos estos componentes en un ejemplo para mostrar cómo funcionan las llaves de paso bajo el capó. El proceso se divide en dos acciones principales: generación de la llave de paso y uso de una llave de paso para autorización de transacciones.

En nuestro escenario, JimBob quiere interactuar con la dapp habilitada para llaves de paso, Ye Olde Guestbook (una dapp real construida por el Defensor del Desarrollador de SDF Elliot Voris), con su smartphone.

Generación de la llave de paso:

  1. JimBob va a la dapp Ye Olde Guestbook en su teléfono y hace clic en el botón “Registrarse”;
  2. Su teléfono le pregunta si le gustaría crear una llave de paso en su dispositivo para iniciar sesión e interactuar con la dapp;
  3. JimBob acepta y se autentica localmente usando la biometría de huellas dactilares existente en su teléfono;
  4. Su teléfono genera una clave pública y una clave privada usando la curva elíptica secp256r1, que están seguramente vinculadas tanto a su dispositivo (el teléfono) como al dominio del servicio (ye-olde-guestbook.vercel.app) — este par de claves es la llave de paso;
  5. El teléfono de JimBob se comunica con la blockchain para configurar una billetera inteligente, registrando la clave pública de la llave de paso como un método de autenticación para la billetera.

Usando una llave de paso para autorización de transacciones:

  1. JimBob quiere firmar la dapp Ye Olde Guestbook en su teléfono usando su billetera inteligente;
  2. La dapp envía un desafío al teléfono de JimBob, que debe ser firmado para autorizar la acción;
  3. JimBob verifica su identidad localmente usando la biometría de huellas dactilares; el teléfono luego accede a la clave privada asociada con la llave de paso registrada para esa dapp y dispositivo;
  4. El teléfono de JimBob firma criptográficamente el desafío usando la clave privada de la llave de paso y envía el desafío firmado de vuelta a la dapp (nota que la clave privada nunca sale del dispositivo de JimBob);
  5. La dapp añade el desafío firmado a la transacción para que pueda ser usada para autenticación una vez que la transacción se someta a la red;
  6. La red de blockchain valida la firma usando la clave pública correspondiente registrada durante la configuración para confirmar la autenticidad de la transacción;
  7. Una vez verificada, la transacción se procesa, se añade a la blockchain y JimBob puede realizar la acción.

Aunque estos pasos parecen complejos, la experiencia de usuario es en realidad bastante simple. Todo lo que JimBob hace es registrarse en la aplicación con su huella dactilar y luego verificar su identidad con su huella dactilar nuevamente para realizar la acción deseada. La experiencia de usuario es rápida y sin problemas sin sacrificar la seguridad. JimBob podría ni siquiera saber que está interactuando con una blockchain.

Llaves de paso en Stellar

El soporte de llaves de paso llegó bastante tarde al juego para algunos blockchains ya establecidos en sus formas. Esto le da a Stellar una ventaja porque, aunque el blockchain de Stellar es maduro (se lanzó en 2014), solo obtuvo capacidades de contrato inteligente el 20 de febrero de 2024, cuando la plataforma de contrato inteligente Soroban se lanzó en la red como parte de Protocolo 20. El hecho de que Soroban se construyó desde cero y más recientemente significa que Stellar puede abordar problemas conocidos de blockchain desde el principio (otro ejemplo es la implementación de archivo de estado para abordar la inflación de estado; saber más viendo la presentación de Garand Tyson de SDF en Meridian 2024).

Al implementar nuevas características y actualizaciones en un blockchain, la compatibilidad hacia atrás es una consideración clave, y los desarrolladores deben asegurarse de que las nuevas versiones de la tecnología puedan interactuar con aplicaciones, contratos inteligentes y datos creados bajo versiones anteriores. Esto puede ser difícil de abordar, especialmente cuando el blockchain ha existido durante un tiempo. A menudo, en lugar de ello, se utilizan herramientas de terceros o soluciones de capa 2, lo que introduce capas extra de cálculo que pueden aumentar la latencia y el costo.

Por el contrario, en Stellar, el soporte de llaves de paso está integrado directamente en el protocolo. El 18 de junio de 2024, los validadores de la red Stellar votaron para actualizar la red al Protocolo 21, que introdujo soporte nativo para la verificación secp256r1 (la curva de firma que soporta las llaves de paso) en contratos inteligentes. Las características integradas directamente en el nivel del protocolo están optimizadas para velocidad y uso de recursos. Las características nativas también son inherentemente compatibles con el resto del ecosistema blockchain, lo que facilita a los desarrolladores la construcción de herramientas y servicios interoperables.

El uso de llaves de paso en blockchain es un gran paso adelante en la adopción de usuarios. Sin embargo, ¡es solo un paso! Las billeteras inteligentes tienen muchas más oportunidades para mejorar la experiencia del usuario, la seguridad y la funcionalidad más allá de las billeteras de criptomonedas tradicionales.

El Futuro de las Llaves de Paso y Billeteras Inteligentes en Stellar

Los ingenieros de Stellar Development Foundation (SDF), junto con el ecosistema, están trabajando arduamente en una interfaz de billetera inteligente para Stellar que incluirá características emocionantes, como llaves de paso como firmantes (como hemos hablado), multi-firma, firmantes Ed25519, límites de firmantes, firmantes de políticas y más. ¡Hay mucho de qué hablar con las billeteras inteligentes, así que mantén los ojos abiertos para más información a medida que entramos en 2025!

Mientras tanto, echa un vistazo a algunos de los proyectos realmente geniales impulsados por llaves de paso y relacionados con llaves de paso que ya se están construyendo para la red Stellar.

Kit de Llave de Paso: una herramienta SDK del lado del cliente y del servidor para crear y gestionar billeteras inteligentes Stellar, destinada a ser usada con…

Launchtube: un servicio que abstrae muchas complejidades asociadas con la presentación de transacciones de contrato inteligente, incluida la necesidad de gestionar la simulación de transacciones, tarifas y números de secuencia.

KALE: un activo Stellar de prueba de trabajo en equipo que se puede crear plantando, trabajando y cosechando a través de un contrato inteligente. Ver el repositorio de GitHub aquí.

Las llaves de paso y las billeteras inteligentes traen un montón de capacidades emocionantes a la red Stellar. Juega con ellas y comparte tus hallazgos en el canal #llavesdepaso en el Stellar Dev Discord!