DEV Community

rooyca
rooyca

Posted on • Updated on • Originally published at rooyca.github.io

Una guía para compartir archivos en la Blockchain con IPFS

Antes de nada, ¿qué es IPFS? La descripción oficial que encontramos en su sitio web es la siguiente:

Un protocolo hypermedia peer-to-peer diseñado para preservar y hacer crecer el conocimiento de la humanidad haciendo la web más abierta, más resiliente y mejor.

IPFS, o Interplanetary File System, creado por Protocol Labs, es un protocolo peer-to-peer donde cada nodo almacena una colección de archivos hasheados. Un usuario que desee alguno de esos archivos se conecta a una capa de este protocolo y por medio del Hash, IPFS se encarga "recolectar" el archivo que está distribuido a través de los nodos y finalmente envía el archivo al usuario que lo solicitó.

IPFS-IMG

Fuente: https://radiostud.io/

¿Recuerdan BitTorrent? Pues es parecido, solo que con IPFS tienes más control de tus archivos y se hace referencia a tus archivos por medio de hashes.

¿Y la seguridad?

Como habrán podido deducir, en IPFS "cualquiera" puede tener acceso a nuestros archivos, lo único que se necesita es un Hash del tipo: QmYqSCWuzG8Cyo4MFQzqKcC14ct4ybA... para descargar nuestro archivo. Lo que nos llevaría a concluir que IPFS no es el protocolo indicado para archivos "sensibles"... ¿o sí?

Con ustedes, Encriptación Asimétrica (EA)

Por suerte, contamos con herramientas que nos permiten asegurar nuestros archivos antes de subirlos a IPFS. La EA nos permite encriptar el archivo con la clave publica del destinatario, lo que garantiza que terceros no puedan hacer nada con el archivo. Para este tutorial usaremos GPG.

Manos a la obra

En este tutorial, haremos lo siguiente:

  • Configurar GPG.
  • Configurar IPFS.
  • Encriptar un archivo con la clave publica de alguien.
  • Subir un archivo encriptado a IPFS.
  • Descargar dicho archivo desde otra máquina y asegurarnos de que solo el destinatario pueda ver su contenido.

Instalación de lo que usaremos

GPG

Tendremos que descargar GPG en ambas maquinas, la que envía y la que recibe, para ello nos dirigimos a este link y seguimos las instrucciones dependiendo de nuestro sistema operativo. Una vez instalado vamos a generar una clave en ambos equipos, para ello usamos el siguiente comando:

gpg --gen-key
Enter fullscreen mode Exit fullscreen mode

Luego nos pedirá nuestro nombre, correo, un comentario y una contraseña, que entre más robusta mejor.

IMG-KEY

Ahora, en nuestro segundo equipo, después de generada la clave, la vamos a exportar con el siguiente comando:

gpg --export --armor > clavePublica.asc
Enter fullscreen mode Exit fullscreen mode

Pasamos nuestro archivo a nuestro segundo pc, e importamos la clave con el siguiente comando:

gpg --import clavePublica.asc
Enter fullscreen mode Exit fullscreen mode

Podemos revisar nuestras claves con el siguiente comando:

gpg --list-keys
Enter fullscreen mode Exit fullscreen mode

Listo, eso sería todo en cuanto a GPG, ahora vamos a configurar nuestro nodo.

IPFS

Existen varias alternativas a la hora de descargar IPFS, en el siguiente enlace podremos usar la que nos parezca mejor. En mi caso usaré la terminal, una vez instalado podremos iniciar nuestro nodo con el siguiente comando:

ipfs init
Enter fullscreen mode Exit fullscreen mode

Recuerda que esto debes hacerlo en ambos computadores. Después de esto deberemos iniciar nuestro programa (daemon: Disk And Execution MONitor)

ipfs daemon
Enter fullscreen mode Exit fullscreen mode

IPFS-DAEMON

Y listo, ya tendríamos nuestros nodos preparados para subir y bajar archivos.

Encriptando nuestro archivo con GPG

Ahora vamos a encripar nuestro archivo para que solo pueda ser desencriptado por el receptor, para ello vamos a correr el siguiente comando:

gpg --encrypt --recipient "Nombre del que recibe" archivo.pdf
Enter fullscreen mode Exit fullscreen mode

En el que podrán notar dos variables, el nombre de la persona que lo recibe (que debe ser el mismo que pusimos en la clave pública que generamos anteriormente), en mi caso seria "Rooyca" y después pondremos nuestro archivo, que en mi caso es un pdf. Nos quedará un archivo con extensión .gpg.

ENCRYP

Subiéndolo a IPFS

Una vez que tenemos todo preparado podemos abrir nuestra terminal y subir nuestro archivo encriptado a IPFS con el siguiente comando:

ipfs add archivo.pdf.gpg
Enter fullscreen mode Exit fullscreen mode

IPFS-ADD

Podemos comprobar que subimos correctamente nuestro archivo con el comando:

ipfs pin ls
Enter fullscreen mode Exit fullscreen mode

IPFS-LS

Aquí debemos buscar el Hash que coincida con el resultado de nuestro comando anterior, en mi caso seria:

QmazcLvRjPMLY5UAGEDVLrJCKX3ySqb8TZxLmvt7pfbxgf

Descargando de IPFS

Ahora, para descargar nuestro archivo es igual de sencillo, en nuestro segundo computador ingresamos ipfs get junto al hash del archivo.

ipfs get QmazcLvRjPMLY5UAGEDVLrJCKX3ySqb8TZxLmvt7pfbxgf
Enter fullscreen mode Exit fullscreen mode

Ya tendriamos nuestro PDF, pero si intentamos abrirlo nos daremos cuenta que no es posible ver su contenido, por lo que procedemos a desencriptarlo.

Desencriptando

Para ello vamos a ingresar el siguiente comando, en el que le pasamos el nombre del archivo y ">" para cambiarle el nombre a "archivodes.pdf".

gpg --decrypt QmazcLvRjPMLY5UAGEDVLrJCKX3ySqb8TZxLmvt7pfbxgf > archivodes.pdf
Enter fullscreen mode Exit fullscreen mode

Y listo, si ahora lo volvemos a abrir podremos acceder de manera normal a nuestro pdf. Así de sencillo es mandar archivos confidenciales o sensibles a través de una excelente plataforma como es IPFS.

Bueno, eso es todo por hoy, espero que esta pequeña guía los haya animado a mantener su propio nodo y ha hacer uso de este grandioso protocolo. Como siempre, si tienen alguna duda o simplemente desean decirme algo no duden en contactarme.

  • Discord: rooyca#6075
  • Telegram: @seiseiseis
Publicación original

Blockgeni.com

Top comments (0)