Blog

Nasuni. Un sistema "Blockchain" para almacenar información

Cómo usar Nasuni UniFS® como un sistema blockchain para resolver los problemas de regulación, escalabilidad y falta de almacenamiento de la cadena de bloques.

Intro

Hoy en día todo el mundo quiere tener un blockchain, sus virtudes son aclamadas mientras que sus limitaciones son poco conocidas. Resolver estas limitaciones para conseguir que el blockchain se aplique a un problema real ha llevado a una amplia variedad de implementaciones de blockchains y tipos de blockchains que de alguna manera se alejan de su enfoque inicial pero mantienen algunas de sus virtudes.

Ahora tenemos; blockchains públicas, blockchains federadas, blockchains de consorcio, blockchains privadas, blockchains de almacenamiento, blockchains con capacidad de computación limitada, blockchains con más capacidad de computación, blockchains inteligentes basadas en contratos, blockchains de permiso, blockchains sin permiso, blockchains de protocolo 2, blockchains con fragmentos, blockchains basadas en pruebas de trabajo, blockchains basadas en pruebas de apuestas, blockchains basadas en pruebas de espacio y así sucesivamente... Pero, ¿alguien puede decirme qué demonios es un blockchain?

El objetivo de este artículo es demostrar que Nasuni implementa un sistema de almacenamiento basado en los principios fundamentales de la tecnología blockchain mientras mejora o incluso elimina completamente sus problemas más importantes para el caso de uso de un consorcio o cadena de bloques privada.

Blockchain

Las estructuras de datos blockchain se popularizaron en 2009 con el documento de Satoshi Nakamoto titulado "Bitcoin: A Peer-to-Peer Electronic Cash System". En este paper Satoshi utiliza una estructura de datos de cadena de bloques como un libro mayor para almacenar de forma segura el historial de transacciones de bitcoin. Pero, las ideas detrás de la cadena de bloques son bastante viejas, y se remontan a un papel de Haber y Stornetta en 1991.

Su propuesta era un método para el sellado de tiempo seguro de los documentos digitales, en lugar de un esquema de dinero digital. El objetivo del sellado de tiempo es dar una idea aproximada de cuándo se creó un documento. Lo más importante es que la estampación de tiempo refleja con precisión el orden de creación de estos documentos: si uno llegó a existir antes que el otro, las estampaciones de tiempo lo reflejarán. Para que esto sea seguro, se requiere que la marca de tiempo de un documento no pueda ser cambiada después del hecho.

En resumen, los sistemas blockchain utilizan la criptografía de clave pública para crear una cadena de contenido sólo de apéndice, inmutable y con sello de tiempo. Se distribuyen copias de la cadena de bloques en cada nodo participante de la red.

Los sistemas de cadenas de bloques son teóricamente ideales para almacenar información altamente sensible por tres razones.

  • La primera es porque mantienen un nivel muy alto de réplicación de la información, lo que la hace extremadamente resistente y duradera.
  • La segunda es porque la información permanece inmutable una vez escrita, a partir de este momento (con fecha y hora), la información sólo evoluciona en función de los cambios, que se almacenan por separado y se recomponen una vez que la información es solicitada en un momento dado.
  • El tercero es porque cada cambio es firmado criptográficamente por el autor añadiendo una capa de no repudio y propiedad.

Dicho esto, hay una serie de cuestiones que hacen prácticamente imposible utilizar un sistema de cadena de bloques para almacenar información a escala de producción.

Consenso y prueba de trabajo: Las cadenas de bloques orientadas a las transacciones en efectivo fueron posibles gracias a la distribución, nadie tiene el control en sí mismo, y esta distribución se hizo realidad a través de algoritmos de consenso, y un mecanismo de reducción de ruido llamado prueba de trabajo.

En la propuesta de Satoshi, para ganar el derecho de proponer a otros nodos una nueva pieza de información que se guardará en la cadena, hay que resolver un puzzle (un puzzle hash) que es computacionalmente complejo y costoso, y poner en la propuesta la prueba de que se ha resuelto. Esta información es luego validada por cada nodo de la red en base a las reglas de un protocolo de consenso y todos los nodos que siguen el mismo protocolo eventualmente almacenarán la pieza de información y construirán la misma cadena.

Sin embargo, este mecanismo, que encaja perfectamente y que hizo posible los sistemas de dinero electrónico, es extremadamente lento y costoso para casi todo lo demás.

Costo de almacenamiento: Las redes de cadenas de bloques tratan de reunir los muchos nodos mejor para mejorar su fiabilidad. Además, tratan de mantener los almacenamientos de estos nodos tan pequeños como sea posible (la última tendencia es hacer funcionar los nodos en dispositivos de frambuesa pi). Todo lo que se escribe en una cadena de bloques se replica en cada uno de los nodos de la red, por esta razón, escribir más de 1 MB es extremadamente caro o simplemente no está permitido.

Escalabilidad de la operación: Este es probablemente el mayor problema y fuente de disputa e investigación con los sistemas de cadenas de bloques en este momento. Actualmente, en todos los protocolos de cadenas de bloques cada nodo almacena todos los estados y procesa todas las transacciones. Esto proporciona grandes niveles de disponibilidad y resiliencia, pero también limita enormemente la escalabilidad: una cadena en bloque no puede procesar más transacciones de las que puede procesar un solo nodo. En parte debido a esto, Bitcoin está limitado a ~3-7 transacciones por segundo, Ethereum a 7-15, etc. Esta proporción resulta insuficiente incluso para una sola empresa, donde puede haber fácilmente cientos de registros por segundo.

Cumplimiento de normativas: Si el sistema de cadenas de bloques va a almacenar datos sensibles o personales, la forma de instrumentar y gestionar este almacenamiento, acceso y recuperación de información tiene que estar alineada con regulaciones como GDPR, HIPPA, etc.

Difícil de integrar: Casi todas las aplicaciones utilizadas por las empresas hoy en día son compatibles con los protocolos de intercambio de archivos CIFS/SMB y NFS. Como resultado, las aplicaciones pueden leer y escribir en cualquier servidor de archivos o dispositivo NAS que admita estos estándares. Este no es el caso de la cadena de bloques.

Almacenamiento de objetos en la nube

El almacenamiento de objetos es una arquitectura de almacenamiento de datos informáticos que gestiona los datos como objetos, a diferencia de otras arquitecturas de almacenamiento como los sistemas de archivos que gestionan los datos como una jerarquía de archivos, y el almacenamiento en bloque que gestiona los datos como bloques dentro de sectores y pistas. Este almacenamiento de objetos trata cada pieza de información (el objeto) como una cadena de unos y ceros que puede tener un tamaño de hasta 5 TB y una serie de etiquetas o metadatos, incluido un identificador global y único, asociado a esa cadena. Estos objetos suelen ser archivos, aunque no se traten como tales, y una vez almacenados, la masa se denomina "datos de archivo no estructurados".

Simple, bello y altamente robusto.

Dada esa simplicidad, estos objetos son fácilmente replicables entre cabinas de discos, centros de datos o localizaciones, y como estos objetos no tienen relación entre sí, la infraestructura que los soporta es sencilla y altamente escalable.

Los proveedores de nubes públicas, típicamente ofrecen una gama de servicios de almacenamiento de objetos diseñados para una durabilidad de alrededor del 99.999999999% y una disponibilidad del 99.99% de los objetos durante un año determinado. Eso es enorme. Por lo general, los clientes deciden qué niveles de replicación y disponibilidad desean a través de diferentes clases o niveles de almacenamiento.

Adicionalmente ofrecen encriptar la información en reposo con claves proporcionadas por ellos, proporcionadas por el cliente o incluso el cliente puede encriptar la información antes de subirla y luego volver a encriptarla una vez allí.

Para nuestros propósitos, esto nos da un robusto backend para el almacenamiento de datos en bruto con altos niveles de replicación y confidencialidad, pero aún tenemos problemas por resolver; ¿cómo tratamos toda esta información de manera eficiente? ¿Cómo obtenemos las funcionalidades básicas de un sistema de archivos convencional? ¿Cómo hacemos que la información sea fácilmente integrable con las aplicaciones existentes u otros sistemas de archivos?

Añadamos un poco de azúcar en por lo alto.

Nasuni

Nasuni® Cloud File Services™ está fundamentado en UniFS®, un software descargable que es el primer sistema de archivos global diseñado para el almacenamiento moderno de objetos en nube, y que permite a los usuarios acceder a sus proveedores externos de almacenamiento de archivos desde cualquier lugar de forma rápida, segura y protegida. Mediante Nasuni Cloud File Services, las organizaciones pueden almacenar, proteger, sincronizar y colaborar en datos de archivos no estructurados, desde los que se utilizan activamente hasta los que están inactivos, en todas las ubicaciones.

UniFS está diseñado en torno a principios WORM y nunca sobreescribe un objeto una vez que está escrito. Esto significa que los archivos en el sistema de archivos se mantienen inmutables por UniFS. Esto también se aplica a las versiones de los archivos: cada cambio de archivo se marca con la hora así como su propio objeto para proporcionar una protección completa de los datos, eliminando la necesidad de herramientas o procesos de copia de seguridad y replicación de archivos por separado.

Cada nodo/dispositivo incluye Nasuni Continuous (e infinito) File Versioning, un software que es un caché de alto rendimiento que toma instantáneas periódicas del sistema de archivos. Esta instantánea continua captura los cambios de los archivos a medida que se producen y transmite sólo esos cambios al sistema de almacenamiento en nube de terceros, de modo que el sistema de almacenamiento en nube de terceros siempre contiene la última versión de cada archivo del cliente. También proporciona una protección de datos a nivel de archivo altamente granular que ofrece mejores puntos y tiempos de recuperación en comparación con la copia de seguridad de archivos tradicional, eliminando la necesidad de hardware, software y mantenimiento de copia de seguridad.

Cada cambio en cada archivo se transmite de forma segura al sistema de archivos nativo de la nube, UniFS, que mantiene el registro inmutable de cada versión de archivo en los almacenes públicos de objetos en la nube como Azure o Amazon Web Services.

Dicho esto, comparando a Nasuni con un blockchain tenemos:

  • Información inmutable (máquina de estados). Con Nasuni, una vez que se escribe un dato, nunca se modifica. Los sistemas de cadenas de bloques pasan de un estado N a otro estado N + 1 cada vez que se extrae un bloque. Con el versioning continuo de Nasuni podemos decir que el sistema de archivos va de un estado N a otro N + 1 cada vez que se hace una instantánea, o se modifica un archivo. Todos los cambios se registran y dejan un rastro.
  • Un alto nivel de replicación de la información: Con Nasuni, hay un alto nivel de replicación de información "por diseño" tanto en el backend de la nube como en los diferentes nodos de borde / caché de los dispositivos locales que mejora al máximo tanto la durabilidad como la disponibilidad. Estos niveles de replicación son "controlables" tanto en el backend (mencionado almacenamiento de objetos de replicación nativa) poniendo más o menos nodos de borde de caché. Los sistemas Blockchain tienen una arquitectura más simple y almacenan la información en cada nodo. Se requieren muchos nodos para mantener el consenso, por lo que la información se replica de una forma ridículamente alta.
  • Autenticación y autorización de grano fino: Los volúmenes y acciones de Nasuni pueden integrarse con servicios de directorio como Microsoft AD o Open ldap que permite una amplia gama de métodos de autenticación y autorización para acceder a la información. Los sistemas de cadenas de bloques utilizan las claves públicas como identidades, por lo que las identidades reales están en principio ocultas y no tienen el concepto de espacio compartido o "compartir" o una forma de gestionar la autorización más allá de tener o no acceso de escritura. Cada usuario tiene su propio espacio y las cosas se pasan de uno a otro.
  • La integración aplicaciones es fácil: Nasuni comparte información a través de protocolos comunes como CIFS o NFS, por lo que puede integrarse fácilmente con todas las aplicaciones existentes. Los sistemas de cadenas de bloques requieren un desarrollo a medida para integrarse con una aplicación (alias Dapps).

Conclusión

Las cadenas de bloques blockchain, en su naturaleza más básica, son máquinas de estados de información de aplicación exclusiva que ultraproducen esta información almacenada para mejorar su disponibilidad y resistencia. Debido a este alto nivel de replicación, el almacenamiento de información tiende a ser muy caro o incluso imposible.

Con Nasuni en combinación con el almacenamiento de objetos en la nube, podemos aprovechar las ventajas fundamentales que hacen que las cadenas de bloques sean alabadas, al tiempo que nos libramos de los inconvenientes.

Al menos, no para los sistemas de dinero electrónico, sino para los sistemas de almacenamiento de información. Pero recuerden, la información hoy en día es incluso más valiosa que el dinero.

Así que tiene sentido almacenarla en una caja fuerte.

Muchas industrias con procesos de información altamente críticos y regulados, como la sanitaria, la farmacéutica, la bancaria, la automovilística, las infraestructuras o el transporte, pueden beneficiarse de un sistema de almacenamiento de información distribuido, seguro y altamente disponible, similar a una cadena de bloques, que les permita cumplir los requisitos normativos y evolucionar de forma sostenible y saludable.

Autor: Javier Jiménez (Linkedin) | También puedes leer este artículo en inglés en Medium

Ciberseguridad sin complicaciones
More info