Aplicaciones construidas en Lisk : Proyecto Lisk Voice

noviembre 22, 2020 VICTOR HUGO LAZARTE 0 Comments

 




Introducción

Lisk Voice es una prueba de concepto (Poc) que permite una comunicación segura en tiempo real utilizando IPFS: cifra los mensajes con la clave pública del remitente y luego con la clave pública del destinatario, y el archivo se carga en IPFS. Solo el remitente y el receptor pueden ver sus mensajes.
Las mejoras futuras incluyen carga de archivos, aplicaciones Android e iOS, descentralización del proyecto y programas de replanteo.

Fue un desafío interesante reunir un montón de tecnologías con las que me he familiarizado. Esto ocurrió anteriormente en 2016, cuando estaba hablando en Defcamp Bucarest , sobre IPFS y ciberseguridad. Además, también amplié mis habilidades aprendiendo sobre redes y túneles SSH. Esto ocurrió simultáneamente mientras trabajaba como desarrollador de C #, camino a convertirme en senior.

Creo que la comunicación en línea en general, en particular los mensajeros de texto y archivos, tiene un futuro brillante. Por lo tanto, elegí construir un mensajero de texto POC con IPFS y Lisk SDK.

Interfaz Lisk Voice y sus características clave

  • Comunicación en tiempo real (retraso de 5 a 10 segundos). Este es un buen resultado para un servidor de recursos domésticos (CPU i7 de 2ª generación, 4 GB de memoria de acceso aleatorio).
  • Solo existe una página de inicio de sesión y una página principal, donde los contactos de los usuarios se encuentran en el lado izquierdo de la pantalla y los mensajes se encuentran en el lado derecho, que es similar a Whatsapp.
  • Seguridad incorporada, solo el remitente y el receptor pueden ver sus mensajes.
  • Todas las ventajas asociadas a blockchain. Los mensajes son públicos pero están encriptados.
  • Los primeros 100 mensajes son gratuitos. Después de esto, se aplicarán cargos.
  • Uno de los 2 contactos predeterminados es usted mismo para que pueda almacenar datos confidenciales de forma segura. El otro contacto predeterminado es el administrador.
  • Todas las cadenas se desinfectan antes del cifrado y también después del descifrado.
     


Configuración técnica


Se utilizaron 2 máquinas con un túnel SSH persistente inverso en el medio.

  • Windows 2012 R2.
  • Ubuntu 18.

La parte de la interfaz de usuario (Frontend y Backend) está construida con C # MVC y el servidor IIS.

La lógica empresarial está construida en NodeJS y está alojada en una IP diferente, exponiendo el puerto 3999.

Lisk Voice messenger funciona encriptando el mensaje del remitente dos veces. En primer lugar, con la clave pública del remitente y en segundo lugar con la clave pública del destinatario. Ambos cifrados se agregan uno al lado del otro y se almacenan en un archivo que se carga en IPFS. Una vez que se realiza la carga, esto dará como resultado un hash IPFS. Este hash respectivo se almacena en la cadena y es público. El resultado final es un mensajero en línea seguro, en el que la seguridad se integra desde el núcleo hacia arriba.

Los desafíos que debían superarse estaban relacionados con el multiproceso y la velocidad de aplicación. Tan pronto como se agregó el soporte de DB para C # en la máquina con Windows, fue posible optimizar y resolver los problemas de subprocesos.

El servidor de Windows es completamente independiente del servidor de Node.js, no hay bloqueos ni operaciones pendientes entre ellos. La interfaz de usuario registra los trabajos y vuelve en unos segundos para comprobar si el servidor ha recibido alguna respuesta.

La frase de contraseña cifrada se almacena en el navegador del usuario y la contraseña para descifrarla se almacena en el servidor. Además, aquí se implementan SSL y túneles SSH cifrados.

Después de optimizar el diseño de la interfaz de usuario, el resultado final fue un mensajero en línea privado de POC que funcionaba bien, con un retraso de entre 5 y 10 segundos. Como uso mi propia cadena, cada cuenta recibe algunos tokens como parte del proceso de inicialización. Cualquier usuario de Internet puede iniciar sesión y enviar mensajes a otra dirección Lisk oa su propia dirección Lisk.
 

IPFS

Comencé a educarme en IPFS en 2016 y todavía estoy en la fase de aprendizaje. Juan Bennett y el equipo tienen muy buen contenido sobre IPFS. Esta es una tecnología con muchos casos de uso. Un sistema de archivos distribuido fue la elección natural porque funciona con los mismos principios que blockchain. Me tomó años entender el concepto avanzado de IPFS, pero el uso básico, como agregar un archivo y recuperar el contenido del archivo, es fácil de usar con NodeJS.


A continuación se muestra un ejemplo de la vida real:

Usuario A: 8567373403155329896L

Usuario B: 6735363876831372961L

El usuario A envía el mensaje "demo" al usuario B. La siguiente cadena resultará:

9cefbc53ba2a3dcdbceadde2a8789b8892b64622f6197c72: 68aee
92039e113cacd532b61c294dafa4360b2d2f552a2ed: 4a417be8b5
54f34c7f2ff29690afc835922402b6eaf3519a: c4b8ea4ce2a5c969cd
45a0f95185726ff666a2126313541

La cadena anterior tiene el formato messageEncForRecipient: nonce: messageEncForSender: nonce y su longitud depende de la longitud del contenido. El cifrado es nativo de Lisk y se realiza con la clave pública del destinatario. Por ejemplo, en caso de que el usuario se envíe mensajes a sí mismo, el mensaje se va a cifrar en ambas ocasiones con la misma clave pública, debido a que él es el remitente y también el receptor.

Las funciones que realizan el cifrado / descifrado de mensajes y funcionan con Lisk SDK se muestran a continuación:


Así es como se prepara el mensaje para su forma final, justo antes de que se escriba en el archivo.

Al agregar un archivo a IPFS, se crea un hash para hacer referencia a él, en lugar de un nombre de archivo. La cadena anterior dará como resultado el siguiente hash: QmfRu5qMZum3jbH6Vg3Wfi1iyoJhms1QWeXd8aQapo3P4G. Puedes comprobarlo aquí . Además, la longitud del contenido no importa porque IPFS dará como resultado la misma longitud de hash independientemente del tamaño del contenido.

Finalmente, así es como agregar un archivo y recuperar el hash de IPFS:


Solo este hash IPFS se almacena en blockchain. Esto se debe a que Messenger utiliza Lisk SDK, ya que también tiene un campo designado de 64 bytes en la transacción.

Si la cadena de bloques personalizada llega a producción y se publica, cualquiera puede escribir un mensaje en formato messageEncForRecipient: nonce: messageEncForSender: nonce, agregarlo a IPFS y agregar el hash a una transacción en la cadena. Lisk Voice fue diseñado para ser como una interfaz para blockchain. Higienizamos la cuerda para evitar sorpresas no deseadas provenientes de la naturaleza salvaje de Internet.

Mejoras futuras

El soporte de archivos, que permitirá a los usuarios compartir archivos como fotos y videos, se realizará de la misma manera que los mensajes. El tamaño de los archivos estará limitado solo por los recursos de hardware, ya que el hash de IPFS tiene el mismo tamaño independientemente del contenido.

Ofrezca aplicaciones para Android e IOS, porque por el momento el Messenger no se puede usar en la vida real. Se requieren notificaciones ya que no es práctico pedir al usuario que vincule su dirección Lisk a una dirección de correo electrónico, ya que eso violaría el objetivo de anonimato. El móvil es una buena solución porque el usuario puede estar actualizado con su cuenta de Lisk Voice y sus notificaciones.

Publique la cadena Lisk Voice para que pueda incluir el token en varios intercambios.

Hacer distribuido Lisk Voice (la comunidad LiskVoice para ejecutar más copias de la cadena), para convertirlo en un mensajero que no se pueda detener.

Programa de replanteo (diseño y desarrollo), para animar a los usuarios a mantener tokens durante 2 a 4 años.


Mejoras futuras

  • El soporte de archivos, que permitirá a los usuarios compartir archivos como fotos y videos, se realizará de la misma manera que los mensajes. El tamaño de los archivos estará limitado solo por los recursos de hardware, ya que el hash de IPFS tiene el mismo tamaño independientemente del contenido.
  • Ofrezca aplicaciones para Android e IOS, porque por el momento el Messenger no se puede usar en la vida real. Se requieren notificaciones ya que no es práctico pedir al usuario que vincule su dirección Lisk a una dirección de correo electrónico, ya que eso violaría el objetivo de anonimato. El móvil es una buena solución porque el usuario puede estar actualizado con su cuenta de Lisk Voice y sus notificaciones.
  • Publique la cadena Lisk Voice para que pueda incluir el token en varios intercambios.
  • Hacer distribuido Lisk Voice (la comunidad LiskVoice para ejecutar más copias de la cadena), para convertirlo en un mensajero que no se pueda detener.
  • Programa de replanteo (diseño y desarrollo), para animar a los usuarios a mantener tokens durante 2 a 4 años.
  • Recursos

    Si se siente inspirado y desea crear su propia aplicación de cadena de bloques de prueba de concepto, consulte el programa Lisk Builders. Puede encontrar más información sobre el programa y el procedimiento de solicitud en la página web de Lisk para el  programa Lisk Builders .

  • Fuente: blog de Lisk



 




  I ntroducción Lisk Voice es una prueba de concepto (Poc) que p ermite una comunicación segura en tiempo real utilizando IPFS: cifra los me...