Suscríbete para recibir notificaciones de nuevas publicaciones:

Cloudflare se hace interplanetario: presentamos la puerta de enlace a IPFS (InterPlanetary File System o Sistema de Archivos Interplanetario en español) de Cloudflare

2018-09-17

7 min de lectura
Esta publicación también está disponible en English, Français, Deutsch y 简体中文.

Hoy estamos encantados de presentar la puerta de enlace a IPFS de Cloudflare, una manera fácil de acceder al contenido de IPFS, que no requiere instalar ni ejecutar ningún software especial en tu ordenador. Esperamos que nuestra puerta de enlace, alojada en cloudflare-ipfs.com, sirva como plataforma para muchas nuevas aplicaciones web de alta fiabilidad y seguridad mejorada. La puerta de enlace a IPFS es el primer producto que se lanzará como parte de nuestro proyecto de una Puerta de enlace a la web distribuida, que finalmente incluirá todo nuestro trabajo de apoyo a las nuevas tecnologías web distribuidas.

En esta publicación se hará una breve introducción a IPFS. Junto a esta, hemos escrito otra publicación del blog que describe lo que hemos construido además de la puerta de enlace, así como documentación sobre cómo servir tu propio contenido a través de nuestra puerta de enlace con tu propio nombre de host personalizado.

Introducción rápida a IPFS

Generalmente, cuando accedes a un sitio web desde tu navegador, este rastrea el servidor (o servidores) de origen que son el repositorio final y centralizado del contenido de la página web. Luego, envía una solicitud desde tu ordenador a ese servidor de origen, esté donde esté en el mundo, y el servidor remite el contenido a tu ordenador. Este sistema ha servido bien a Internet durante décadas, pero hay un inconveniente considerable: la centralización hace que sea imposible mantener contenido en línea más tiempo que los servidores de origen que lo hospedan. Si el servidor de origen sufre hackeo o un desastre natural, el contenido deja de estar disponible. Si el propietario del sitio decide quitarlo, el contenido desaparece. Resumiendo, la creación de reflejos no es el concepto más importante para la mayoría de las plataformas (Always Online de Cloudflare es una excepción notable).

Un objetivo de IPFS es cambiar eso. IPFS es un sistema de archivos punto a punto compuesto por miles de ordenadores alrededor del mundo, donde cada uno almacena archivos para la red. Estos archivos pueden ser imágenes de gatitos, modelos 3D o incluso sitios web completos. Se han subido unos 5.000.000.000 de archivos a IPFS ya.

IPFS vs. la web tradicional

Hay dos diferencias clave entre IPFS y la web como la entendemos hoy.

La primera es que, con IPFS, cualquiera puede almacenar y servir cualquier contenido gratis. Ahora mismo, con la web tradicional, la mayoría típicamente depende de grandes proveedores de alojamiento en lugares remotos para almacenar contenido y servirlo al resto de la web. Si quieres configurar un sitio web, tienes que pagar uno de estos grandes servicios para que lo haga. Con IPFS, cualquiera puede inscribir su ordenador para que sea un nodo del sistema y empezar a servir datos. No importa si trabajas en Raspberry Pi u operas el servidor más grande del mundo. Igualmente puedes ser un nodo productivo en el sistema.

La segunda diferencia clave es que los datos están direccionados por contenido y no por ubicación. Esta diferencia es algo sutil, pero las ramificaciones son sustanciales, por lo que merece la pena analizarlas.

En la actualidad, cuando abres tu navegador y vas a example.com, le dices al navegador "busca los datos almacenados en la dirección IP example.com" (que resulta ser 93.184.216.34). Esa dirección IP marca dónde se almacena en la red el contenido que quieres. Luego envías una solicitud al servidor de esa dirección IP para el contenido de "example.com" y el servidor te remite la información relevante. Así que, de manera muy básica, le indicas a la red dónde buscar y la red te envía lo que encuentra.

IPFS lo hace al revés.

Con IPFS, cada bloque de datos almacenado en el sistema está direccionado con un hash criptográfico de sus contenidos, esto es, una larga cadena de letras y números que son únicos para ese bloque. Cuando quieres datos en IPFS, los solicitas por su hash. Así que, en lugar de pedir a la red "Dame el contenido almacenado en 93.184.216.34", le pides "dame el contenido cuyo valor de hash es QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy." (QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy resulta ser el hash de un archivo .txt que contiene la cadena "Estoy probando IPFS").

¿Por qué hay tanta diferencia?

Recuerda que con IPFS, le dices la red qué buscar y la red averigua dónde mirar.

¿Qué importancia tiene eso?

Primero, hace la red más resiliente. El contenido con el hash QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy podría almacenarse en docenas de nodos, por lo que si se cae un nodo donde se almacenaba, la red simplemente buscará el contenido en otro nodo.

En segundo lugar, introduce un nivel automático de seguridad. Pongamos que conoces el valor del hash de un archivo que quieres. Así que pides a la red, "dame el archivo con el hash QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy" (el archivo example.txt de arriba). La red responde y envía los datos. Cuando recibes todos los datos, puedes volver a darles un hash. Si los datos han cambiado algo durante el tránsito, el valor del hash que obtendrás será diferente al del hash que pediste. Se puede pensar que el hash es como una huella dactilar única para el archivo. Si recibes un archivo diferente al que esperabas recibir, este tendrá una huella diferente. Esto significa que el sistema tiene una forma integrada de saber o no si se ha alterado el contenido.

Una nota sobre direcciones de IPFS y hashes criptográficos

Ya que hemos dedicado un rato a explicar por qué este sistema direccionado según contenidos es tan especial, vale la pena hablar un poco sobre cómo se construyen las direcciones de IPFS. Cada dirección en IPFS es un multihash, lo que significa que la dirección combina información sobre el algoritmo de hash utilizado y el resultado del hash en una cadena. Los multihashes de IPFS tienen tres partes distintas: el primer byte del mulithash indica qué algoritmo de hash se ha utilizado para producir el hash; el segundo byte indica la longitud del hash y los bytes restantes son el resultado del valor según la función del hash. De forma predeterminada, IPFS utiliza el algoritmo SHA-256, que produce un hash de 32 bytes. Este se representa con la cadena "Qm" en Base58 (la codificación predeterminada para las direcciones de IPFS), razón por la cual todas las direcciones de ejemplo de IPFS en este post tienen la forma "Qm...".

Mientras que SHA-256 es el algoritmo estándar utilizado hoy en día, este formato multihash permite que el protocolo IPFS sea compatible con direcciones producidas por otros algoritmos de hash. Así se permite que la red de IPFS opte por un algoritmo diferente si el mundo encuentra defectos en SHA-256 en el futuro. Si alguien pusiera un hash a un archivo con otro algoritmo, la dirección de ese archivo empezaría con caracteres distintos de "Qm".

La buena noticia es que, al menos por ahora, se piensa que SHA-256 tiene una serie de cualidades que lo hacen un algoritmo fuerte de hash criptográfico. Lo más importante es que SHA-256 es resistente a la colisión. Una colisión se produce cuando hay dos archivos diferentes que producen el mismo hash cuando se ejecutan mediante el algoritmo SHA-256. Para entender por qué es importante evitar colisiones, considera esta situación. Imagina que una usuaria de IPFS, Alice, carga un archivo con un hash, y otro usuario, Bob, carga un archivo diferente que produce exactamente el mismo hash. Si esto sucediera, habría dos archivos diferentes en la red con exactamente la misma dirección. Así que si una tercera persona, Carol, enviara una solicitud de IPFS para el contenido de esa dirección, no sabría necesariamente si recibiría el archivo de Bob o el de Alice.

SHA-256 hace que las colisiones sean extremadamente improbables. Como SHA-256 calcula un hash de 256 bits, existen 2^256 direcciones posibles de IPFS que el algoritmo podría producir. Por lo tanto, la probabilidad de que dos archivos en IPFS produzcan una colisión es baja. Muy baja. Si te interesa saber más detalles, en la página del ataque de cumpleaños de Wikipedia hay una tabla estupenda que muestra exactamente lo improbables que son las colisiones con un algoritmo de hash lo suficientemente fuerte.

¿Cómo se accede exactamente al contenido en IPFS?

Ahora que hemos revisado todos los detalles de lo que es IPFS, probablemente te preguntes cómo usarlo. Hay varias maneras de acceder a los contenidos que se han almacenado en la red de IPFS, pero aquí vamos a tratar dos bastante conocidas. La primera manera es descargar IPFS en tu ordenador. Eso convierte tu equipo en un nodo de la red de IPFS y es la mejor manera de interactuar con la red si quieres estar en el ajo. Si te interesa probar un poco IPFS, la implementación de Go se puede descargar aquí.

Pero, ¿qué pasa si quieres acceder al contenido almacenado en IPFS sin la molestia de que se opere un nodo local en tu equipo? Aquí es donde las puertas de enlace a IPFS entran en juego. Las puertas de enlace a IPFS son nodos de terceros que traen contenido desde la red de IPFS y te lo sirven mediante HTTPS. Para utilizar una puerta de enlace, no necesitas descargar ningún software ni teclear ningún código. Simplemente, abre un navegador, escribe el nombre de la puerta de enlace y el hash del contenido que buscas, y la puerta de enlace servirá el contenido en tu navegador.

Pongamos que sabes que quieres acceder al archivo example.txt de antes, que tiene el hash QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy, y hay una puerta de enlace pública accesible en https://example-gateway.com

Para acceder a ese contenido, todo lo que necesitas hacer es abrir un navegador y teclear

https://example-gateway.com/ipfs/QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy

https://example-gateway.com/ipfs/QmXnnyufdzAWL5CqZ2RnSNgPbvCc1ALT73s6epPrRnZ1Xy

y recibirás los datos almacenados en ese hash. La combinación del prefijo /ipfs/ y el hash se conocen como la ruta de acceso del archivo. Siempre hay que proporcionar una ruta de acceso del archivo completa para acceder al contenido almacenado en IPFS.

¿Qué puedes hacer con la puerta de enlace de Cloudflare?

En el nivel más básico, puedes acceder a cualquiera de los miles de millones de archivos almacenados en IPFS desde tu navegador. Pero no es la única cosa estupenda que puedes hacer. Usando la puerta de enlace de Cloudflare, también puedes crear un sitio web completamente alojado en IPFS, que aun así está disponible para los usuarios con un nombre de dominio personalizado. Además, emitiremos un certificado SSL gratis a los sitios web conectados a nuestra puerta de enlace, garantizando que los sitios web conectados a la puerta de enlace de Cloudflare sean seguros frente al espionaje y la manipulación. Para más información sobre ello, revisa los Documentos de desarrollador de puerta de enlace de web distribuida.

Hay un ejemplo gracioso que hemos creado con los archivos de Kiwix de los diferentes sitios web de StackExchange y además le hemos puesto un motor de búsqueda distribuida usando solo IPFS. Échale un vistazo aquí.

Reaccionar ante el abuso

IPFS es una red de punto a punto, así que existe la posibilidad de que haya usuarios que comparten contenido abusivo. No es algo que apoyemos o toleremos. Sin embargo, igual que Cloudflare trabaja con los clientes más tradicionales, la puerta de enlace IPFS de Cloudflare es simplemente un almacén de IPFS. Cloudflare no tiene la capacidad de modificar o eliminar contenido de la red de IPFS. Si encuentras contenido abusivo que se sirve por la puerta de enlace de Cloudflare IPFS, puedes utilizar el mecanismo estándar para informar de abusos descrito aquí.

Abrazar un futuro distribuido

IPFS es una más de una familia de tecnologías que están adoptando una visión nueva y descentralizada de la web. A Cloudflare le entusiasman las posibilidades introducidas por estas nuevas tecnologías y vemos nuestro portal de enlace como una herramienta para ayudar a cerrar la brecha entre la web tradicional y la nueva generación de tecnologías web distribuidas, encabezada por IPFS. Al facilitar que cualquier persona explore contenido IPFS desde su navegador, hacemos el ecosistema más fuerte y apoyamos su crecimiento. Igual que cuando Cloudflare se lanzó en 2010 y cambió el juego de las propiedades web ofreciendo seguridad, rendimiento y disponibilidad que anteriormente solo eran accesibles a los gigantes de Internet, creemos que la puerta de enlace de IPFS proporcionará el mismo impulso al contenido de la web distribuida.

Dieter Shirley, director de tecnología de laboratorios Dapper y cofundador de CryptoKitties afirmó lo siguiente:

Hemos querido guardar arte de CryptoKitty en IPFS desde que lo lanzamos, pero la tecnología aún no estaba lista. El anuncio de Cloudflare hace que IPFS pase de ser un experimento prometedor a convertirse en una herramienta robusta para el despliegue comercial. ¡Estupendo!

La puerta de enlace a IPFS está genial, pero la cosa no acaba ahí. Hay otras tecnologías de la web distribuida, igualmente interesantes, que podrían beneficiarse de la enorme red mundial de Cloudflare. Actualmente estamos explorando esas posibilidades. Si te atrae ayudar a construir un Internet mejor con Cloudflare, ¡trabaja con nosotros!

Suscríbete al blog para ver actualizaciones diarias de nuestros anuncios.

Protegemos redes corporativas completas, ayudamos a los clientes a desarrollar aplicaciones web de forma eficiente, aceleramos cualquier sitio o aplicación web, prevenimos contra los ataques DDoS, mantenemos a raya a los hackers, y podemos ayudarte en tu recorrido hacia la seguridad Zero Trust.

Visita 1.1.1.1 desde cualquier dispositivo para empezar a usar nuestra aplicación gratuita y beneficiarte de una navegación más rápida y segura.

Para saber más sobre nuestra misión para ayudar a mejorar Internet, empieza aquí. Si estás buscando un nuevo rumbo profesional, consulta nuestras ofertas de empleo.
Crypto Week (ES)SeguridadIPFSUniversal SSLSSLDNSSECHTTPSResearchCryptography

Síguenos en X

Cloudflare|@cloudflare

Publicaciones relacionadas