Durante la segunda edición de Clojure South, Eric Bispo e Isaac Borges subieron al escenario para presentar uno de los proyectos más fascinantes desarrollados dentro de NuFuturo, la alianza de investigación entre Nubank e instituciones como UFBA, IFBA y UFCG. Su trabajo, el NuFilebox Reverse, surgió de un desafío muy concreto que enfrentaba el equipo legal de Nubank: recibir, analizar y procesar archivos externos de forma segura en un flujo de trabajo que involucra múltiples idiomas, grandes volúmenes de datos y una infraestructura totalmente basada en la nube.

La sesión mostró cómo la investigación académica y la ingeniería funcional pueden complementarse para crear un pipeline de carga robusto, situando a Clojure en el centro de una arquitectura de seguridad construida sobre el principio de cero conocimiento (zero-knowledge).

El contexto del problema

Las empresas que interactúan con otras compañías dependen del intercambio constante de documentos. En Nubank, muchos de estos archivos son grandes, sensibles y provienen de diferentes fuentes externas. Cada archivo recibido representa un riesgo potencial. El alto volumen crea desafíos de rendimiento y escalabilidad. La necesidad de seguridad va más allá del simple análisis posterior a la carga (post-upload); una arquitectura de cero conocimiento impone una restricción estricta: el servidor no puede, en ningún momento, tener acceso al contenido descifrado de estos archivos.

La pregunta clave que guió la investigación fue simple en teoría, pero compleja en la práctica: ¿cómo pueden terceros enviar archivos a Nubank sin exponer el sistema a amenazas y sin crear excepciones que comprometan la privacidad o la integridad de los datos?

Check our job opportunies

Por qué Clojure se convirtió en la base

Elegir Clojure no fue meramente pragmático, a pesar de que Nubank es la compañía más grande del mundo que utiliza el lenguaje a escala. Clojure resultó ideal para manejar metadatos sensibles, tokens temporales y claves criptográficas gracias a su inmutabilidad.

La capacidad de Clojure para manejar la concurrencia facilitó el procesamiento de archivos extremadamente grandes divididos en fragmentos más pequeños (chunks). El paradigma funcional hizo que la composición de los pasos de seguridad fuera más clara y confiable. Y la interoperabilidad con el ecosistema Java abrió la puerta a librerías estables y probadas en batalla, ampliamente utilizadas en la industria de la ciberseguridad.

Con el tiempo, incluso con otras tecnologías rodeando el sistema, Clojure surgió naturalmente como el núcleo del NuFilebox Reverse.

Un enfoque de seguridad que comienza en el cliente

En el modelo de carga tradicional (upload), el cliente envía el archivo a través de HTTPS, el servidor recibe el contenido en texto plano y solo entonces aplica el cifrado antes de almacenarlo. Este patrón, aunque común, presenta una vulnerabilidad obvia: si el servidor se ve comprometido, los archivos quedan expuestos antes de ser protegidos.

El equipo adoptó el enfoque opuesto. El cifrado ocurre antes de que el archivo abandone la máquina del cliente. El front-end solicita al back-end solo datos mínimos, como la clave y el Vector de Inicialización (IV), que determinan dónde comienza el cifrado. El servidor registra esta información y la almacena en DynamoDB sin tocar nunca el contenido del archivo. A partir de ahí, el propio front-end divide el archivo en partes más pequeñas, cifra cada pieza localmente y las sube directamente a S3 a través de URLs prefirmadas. El servidor nunca ve el contenido. Solo gestiona los metadatos. La lógica permanece en un lado y los datos en el otro.

Es una arquitectura verdaderamente de cero conocimiento (zero-knowledge), construida sobre el principio de seguridad por diseño. Todo el pipeline fue creado para que el archivo esté protegido desde el primer momento de su recorrido.

Desencriptación, reconstrucción y el papel de Clojure

Una vez que los fragmentos de archivos cifrados llegan a S3, AWS dispara una cadena de eventos. Lambdas determinan qué flujo de trabajo (workflow) seguir y enrutan el archivo al servicio responsable de fusionar y descifrar los fragmentos. Este paso, implementado en Clojure, consulta la información almacenada en DynamoDB, como la clave (key), el IV (Vector de Inicialización), el identificador y el nombre del archivo, y comienza el proceso de reconstrucción.

Cada parte se descarga de S3, se descifra individualmente y se reensambla en su orden original. Este paso es esencial para identificar patrones maliciosos, ya que una firma de malware puede estar dividida entre dos partes del archivo. La reconstrucción completa garantiza la precisión en la siguiente fase.

Una segunda capa de defensa con reglas YARA

Una vez que el archivo es restaurado a su formato original, NuFilebox Reverse realiza un análisis de malware utilizando YARA, una de las herramientas más consolidadas en la industria para la detección de amenazas. YARA permite la creación de reglas que describen comportamientos sospechosos, fragmentos de código, patrones cifrados, llamadas a API inapropiadas, conexiones externas cuestionables o incluso secciones de código enteras características de familias de malware específicas.

El equipo combinó reglas creadas manualmente, reglas de repositorios de confianza y la generación de un archivo indexado para agilizar la exploración (scanning).

Cómo respondió el sistema a archivos cada vez más grandes

El grupo también compartió resultados prácticos. Los archivos de hasta quinientos megabytes completaron el proceso en tan solo unos pocos segundos. Los archivos de un gigabyte tardaron alrededor de cuatro minutos. Los archivos de diez gigabytes finalizaron en aproximadamente cuarenta y cinco minutos. En el escenario más extremo, los archivos de treinta gigabytes concluyeron en aproximadamente dos horas.

Incluso en estos casos, el rendimiento fue mejor que el que se observa habitualmente en servicios ampliamente utilizados adoptados por grandes empresas. Y a diferencia de muchas de estas plataformas, NuFilebox Reverse integra la detección de malware antes de que cualquier dato ingrese al ecosistema interno de Nubank.

Investigación aplicada con impacto real

Uno de los aspectos más convincentes de la presentación fue ver cómo opera NuFuturo en la práctica. El proyecto reúne a estudiantes, profesores, investigadores e ingenieros en ciclos continuos de colaboración. El equipo de Eric e Isaac recibió orientación directa de profesionales de Nubank a partir de abril de 2024. El resultado es un sistema que resuelve un problema real, crea oportunidades para nuevo talento y expande el uso de Clojure a áreas que van más allá de los flujos de trabajo típicos de productos.

La sesión final suscitó preguntas sobre la inmutabilidad, posibles usos de Datomic, decisiones de implementación y desafíos futuros. Los presentadores enfatizaron que aún hay mucho margen para evolucionar, desde explorar formas más eficientes para ejecutar las reglas YARA hasta experimentar con nuevos enfoques que podrían reducir el tiempo de procesamiento para archivos extremadamente grandes.

NuFilebox Reverse es un ejemplo concreto de cómo las alianzas entre la industria y la academia pueden generar soluciones que combinan investigación profunda, ingeniería funcional e impacto directo en un problema del mundo real. Demuestra cómo la visión a largo plazo, la curiosidad técnica y la colaboración institucional pueden transformarse en tecnología que protege a millones de personas todos los días.

Check our job opportunies