IPFS, un punto clave en dispositivos IoT y el nuevo internet.
El uso de internet y la cantidad de dispositivos IoT conectados está en un rápido crecimiento. Sin embargo, la infraestructura actual de internet, las apps utilizadas y la conexión machine-machine, almacenan y procesan datos de forma centralizada mediante el uso del protocolos HTTP y bajo un modelo cliente – servidor con ciertos inconvenientes. La llegada de la Web 3.0 y los sistemas descentralizados, ha atraído tecnologías como IPFS (Sistema de Archivos Interplanetarios), para un almacenamiento y distribución de datos de una forma más segura. Actualmente en AirTrace se utiliza IPFS en ADOS y se tienen pensadas futuras implementaciones.
HTTP vs IPFS
El modelo cliente-servidor con HTTP (Protocolo de Transferencia de Hipertexto) como base para la comunicación, almacena los datos en servidores centralizados para que cualquier cliente que desee acceder a ellos, pueda hacerlo mediante un direccionamiento basado en la ubicación, es decir, mediante una URL. El tener un control centralizado de los datos, implica que se pueden alterar, eliminar o visualizar por cualquiera que tenga acceso a dichos servidores, ya sea una autoridad legal o un hacker malicioso. Además, HTTP no es eficiente para transferencias de grandes cantidades de datos, tiene altos costes de ancho de banda, existe la duplicación de archivos y la inestabilidad de si se cae un servidor, no se puede acceder a los datos del mismo.
IPFS (Sistema de Archivos Interplanetario), es una red peer-to-peer (P2P) que nace gracias a Protocol Labs, y permite el almacenamiento y distribución de archivos de una forma descentralizada en todo el mundo. El sistema se basa un almacenamiento de datos de par valor-clave y como ya veremos más adelante, contiene tres conceptos clave. Al transmitir video en IPFS, se estima que se ahorraría el 60% del costo del ancho de banda. IPFS proporciona versiones históricas de los archivos almacenados mediante hashes criptográficos, elimina los archivos duplicados de la red y hace un seguimiento del historial de versiones, teniendo así en todo momento el contenido disponible.
IoT systems with MQTT
MQTT es uno de los protocolos más usados para la transmisión de datos Machine-machine. Este sistema funciona bajo la distribución de mensajes mediante un sistema cliente / servidor central (llamado bróker o router) y la metodología Pub/Sub. Esta metodología consiste en que un ‘Suscriptor’, informa al router o bróker de que quiere recibir un tipo de mensaje y otro agente (publicador), puede publicar dichos mensajes al router/bróker, para que después esté mismo lo distribuya a los suscriptores.
La arquitectura tiene un bróker central donde se reciben todos los datos. Una vez el bróker recoge los datos, envían estos mismos al número de suscriptores que estén esperando mediante una infraestructura de ‘message service’, donde se filtran los mensajes según algún criterio y se distribuyen inmediatamente a los suscriptores conectados. MQTT es una gran solución, sin embargo escalar una gran cantidad de miles de millones de dispositivos IoT requeriría una enorme infraestructura y computación en la nube que conllevaría importantes gastos.
IPFS para IoT
IPFS dispone de eventos pub/sub similares a MQTT. La diferencia principal con MQTT es que no se exige un bróker (servidor) centralizado ya que IPFS proporciona un equivalente a dicho bróker, pero de una forma descentralizada y distribuida. Por lo que, cada suscriptor interesado en un evento también actuará colectivamente para la sindicación de eventos del bróker a otros suscriptores interesados y además todo irá criptográficamente seguro. Con IPFS se pueden conectar una serie de dispositivos IoT en red y hacer que actúen como un sistema de archivos compartido y con una serie de eventos en una plataforma distribuida.
IPFS puede ser un poco distinto a una cadena de bloques, pero mantiene la descentralización en la que los hashes criptográficos de los archivos se almacenan en varios nodos de la red. Por lo que cuando un nodo decide almacenar un hash, se convierte en un nodo anfitrión de estos datos. Sin embargo, los nodos almacenan el contenido que les interesa y además el índice de quien está almacenando que. Si se desconectase algún nodo que almacena datos de un determinado archivo, dichos datos seguirían estando disponibles a través de otros nodos como si nada hubiera pasado.
Conceptos clave de IPFS
Para entender IPFS más en detalle, existen tres conceptos fundamentales que hacen posible el funcionamiento del sistema.
⦁ Direccionamiento de contenidos
Este concepto es bastante sencillo, y consiste en la forma a la que se acceden a los datos. Es decir, en lugar de referirse a los datos (fotos, videos, artículos) por la ubicación (por ejemplo, mediante una URL), o por el servidor en el que están almacenados, IPFS accede a ellos mediante la representación del contenido que se encuentra cifrada bajo un identificador de contenido (CID), que es su hash bajo el algoritmo sha-256, y que no puede ser duplicado. Por lo que, IPFS simplemente tendría que lanzar una petición preguntando a todos los nodos de la red quien tiene ese determinado Hash y el nodo que lo contenga, devolverá los datos correspondientes.
⦁ Grafos acíclicos dirigidos (DAG)
DAG es un tipo de grafo donde se pueden representar datos relacionados entre si mediante un conjunto de nodos (vértices) que representan un conjunto de datos y bordes, que son las líneas (borde) que representa el flujo de datos de un punto a otro dentro del grafo. IPFS utiliza el Merkle de DAG, donde cada nodo tiene un identificador único que es un hash del contenido del nodo. Supongamos que tienes un archivo y su CID lo identifica, pero ese archivo está en una carpeta con otros archivos, y esos archivos también tienen CID. Por lo que el CID de esa carpeta sería un Hash de los CID de los archivos que están debajo. A su vez, esos archivos están formados por bloques, y cada uno de esos bloques tiene un CID.
⦁ Tablas Hash Distribuidas (DHTs)
Esta parte es la pieza necesaria para saber como encontrar y mover el contenido. Es decir, para saber que nodos son los que almacenan el contenido que se está buscando, IPFS utiliza una tabla hash distribuida (DHT). El concepto de tabla hash no es nuevo, ya que se trata de una base de datos con pares clave – valor. Sin embargo, una tabla hash distribuida es un tipo de tablas hash donde se puede consultar un valor asociado a una clave en una red donde los datos están almacenados de forma distribuida mediante una serie de nodos, aportando un servicio eficiente de búsqueda del nodo que contiene la información mediante un sistema de enrutamiento
IPFS en AirTrace
Desde AirTrace somos conscientes de la importancia del uso de IPFS para dispositivos IoT y es por ello que a pesar de que actualmente se utiliza solamente para el sistema ADOS (AirTrace Decentralized Oracle System), tenemos una visión a futuro en la que se tendrá una forma de almacenamiento de datos no estructurados, como por ejemplo, imagen, video, etc… a través del uso de IPFS. Un caso de uso podría ser los datos procedentes de cámaras y posterior almacenamiento de una forma distribuida. Actualmente AirTrace utiliza los servicios S3 para ADOS donde almacena tanto el dato como el hash del mismo. Sin embargo, los datos del modelo para la detección de anomalías (los pesos y los metadatos), se hashean para que cada modelo disponga de un hash único el cual es introducido posteriormente en IPFS y así poder diferenciar entre los distintos modelos, con el objetivo de saber a cual se está refiere cada vez que ADOS se ejecuta.
Aunque todavía es pronto, se prevé que IPFS sea el reemplazo a HTTP, permitiendo así la descentralización de Internet, dando la bienvenida al uso masivo de la Web 3.0 y logrando la distribución del poder de la gestión de la información, que actualmente se encuentra centralizado en unos pocos actores. Gracias a sistemas como IPFS, nadie o nada podría bloquear el acceso a la información, la seguridad de la compartición de datos se vería incrementada, los ataques DDoS se verían casi obsoletos ya que estos ocurren sobre todo en sistemas centralizados y se podría tener una mejora en la velocidad de conexión. IPFS y Blockchain son una combinación que darán de que hablar en los años venideros.
Por último os dejamos unos enlaces interesantes donde se aplica Blockchain e IPFS tanto para el sector de la medicina e IoT, es decir IoMT (Internet of Medical Things) y en el ámbito de la automovilístico.