martes, junio 27, 2023

Latch Web3: Un pestillo de seguridad para SmartContracts (Parte 5)

Hoy toca ya ver el paso a paso para poder tener un Latch Web3 en tu SmartContract que los usuarios puedan utilizar para proteger las acciones que un SmartContrat hace cuando se firma una transacción desde su Wallet. Es decir, que aunque un atacante consigas las claves de la Wallet de un usuario necesarias para firmar un transacción con un SmartContract, exista un 2FA basado en Latch que permita controlar con un canal paralelo si se puede ejecutar o no esa acción.

Figura 33: Latch Web3. Un pestillo de seguridad para SmartContracts (Parte 5)

Para ello, hay que seguir los pasos en orden, que es necesario para hacer que el sistema funcione en una Dapp que tiene un Backend en un servidor Web2, y lógica de aplicación Web3 basada en un SmartContract.  Para ello, comenzamos.

Paso 1: Creamos el SmartContract de la DApp

Este es el primer paso del proceso. Para eso, el SmartContract de la DApp debe realizar tres cosas nada más al principio que ya hemos visto en la anterior parte del artículo.
  1. Importar latcheable.sol
  2. Heredar de latcheable "is latcheable"
  3. Configurar el Latch Proxy en la Blockchain correcta
Una vez hecho esto, ya en el código del SmartContract podrá elegir los puntos en los que comprobar el estado del Latch con una sencilla llamada al método de getStatus() del SDK de Latch usando dos parámetros, que serán la dirección pública del SmartContract de la DApp desplegado, y la dirección pública del usuario que está firmando la transacción.

4. Pon Latches en la funciones sensibles del SmartContract

function getStatus(address dAppSC, address clientAccount) returns (bool);

Las direcciones tienen formato Ethereum todas ellas, pero con esto, ya tendríamos el código de un SmartContract Latcheado. Y cuando acabes todo el proceso, deber ir a por el siguiente punto, que es:

5.- Despliega el SmartContract y quédate con la dirección pública

Paso 2: El Developer crea la Aplicación en Latch

Con este sencillo funcionamiento anterior, en un SmartContract de una DApp se puede comprobar el estado de los Latches de los usuarios a la hora de realizar las acciones, pero es necesario antes crear estos Latches. Para ello, primero el Developer tiene que abrirse una cuenta de Desarrollador en Latch.

Una vez en el panel del desarrollador, se debe crear una Latch Web3 Application en la parte de My applications, y se debe dar un Nombre, configurar la dirección pública del SmartContract de la DApp a proteger y la dirección pública de la Developer Web3 Wallet Web3.

Figura 35: Creación de Aplicación Latch Web3

Cuando haya configurado esa información, debe dar al botón de firmar transacción para garantizar que tanto el SmartContract de la DApp, como la Wallet del Developer (WEB3WALLET) son suyas. Para ello, la transacción que debe firmar es la cadena Latch-Web3 (WEB3SIGNATURE), y una vez hecho, quedará creada la aplicación.
Figura 36: Firma de la transacción con la Developer Web3 Wallet

Si el SmartContract de la DApp no pertenece a ese developer, entonces se recibirá un error como el  siguiente, ya que la plataforma comprueba quién el el dueño de ese SmartContract de la DApp.

Figura 37: Error en la creación de la Latch Web3 Aplication

Si está correcto, el Developer tendrá ya la Latch Web3 Application creada en la lista de sus aplicaciones y podrá acceder en todo momento al SECRET_KEY que necesitará para realizar las llamadas a la API.

Figura 38: Latch Web3 App creada correctamente

Una vez hecho esto, ya solo nos queda crear un sistema para que los Latch UserID puedan crear Latches Web3 en el SmartContract de la Dapp.

Paso 3: Creación de Latches Web3 desde la Latch App

Los usuarios de Latch deben poder crear los Latches en el SmartContract de la DApp desde su Latch App móvil que está conectada con el Backend de Latch. Para ello, solicitan un token de pareado que deben introducir en una zona de configuración de seguridad de cuenta habilitado para ello en el Backend de la DApp

Figura 39: Esquema de pareado de cuentas para generar un Latch

Como se puede ver en el esquema anterior, el usuario desde la Latch App solicita el Token de Pareado, que se entrega al Backend de la DApp. Éste lo envía, haciendo uso del SDK de Latch al Latch Backend junto con la Public Address de la Wallet del usuario. El Latch Backend almacena la Public Address de la Web3 Wallet, y llamará al Latch SmartContract para que cree el Latch de ese usuario, que estará identificado por dos parámetros: La dirección pública del SmartContract y la dirección pública de la Wallet Web3 del usuario. Para realizar este proceso se le exigirá al usuario que firme la transacción de creación del Latch.

Figura 40: El Backend de la DApp inicia Latch con el Application ID y el Secret Key de la Latch Application, y llama con el Pairing Token. La Public Address del SmartContract se coge de msg.sender y la Public Address del Web3 User Wallet de la firma de la transacción.

En el ejemplo que tenemos hecho con el Market de NFTs de Telefónica vemos cómo hemos habilitado una opción en las opciones de seguridad para que el usuario introduzca el Token de Pareado que ha solicitado con su Latch App y firme la transacción con su Wallet Web3, en este caso MetaMask.

Figura 41: Se solicita el Token de Pareado en la Latch App, se introduce en el
Backend de la Dapp. Se firma la transacción con la Wallet Web3 del usuario.
Y el Latch queda creado.

Con esto, ya quedaría realizado el pareado el Latch Web3 ya aparecería en la Latch App móvil del Latch UserID, y ya podremos proteger las transacciones con Latch. Pero esto lo vemos en la siguiente parte de este artículo, que esta ya ha quedado muy larga.

No hay comentarios:

Entrada destacada

Tu Latch "Hack Your Innovation Contest": Haz un PoC & Hack por 1.000 €

El pasado Telefónica Innovation Day 2024 lanzamos oficialmente el " Tu Latch Hack Your Innovation Contest " en el que repartimos ...

Entradas populares