Durante a segunda edição do Clojure South, Eric Bispo e Isaac Borges subiram ao palco para apresentar um dos projetos mais fascinantes desenvolvidos dentro do NuFuturo, a parceria de pesquisa entre o Nubank e instituições como UFBA, IFBA e UFCG. O trabalho deles, o NuFilebox Reverse, surgiu de um desafio muito concreto enfrentado pela equipe jurídica do Nubank: receber, analisar e processar arquivos externos de forma segura em um fluxo de trabalho que envolve múltiplas linguagens, grandes volumes de dados e uma infraestrutura totalmente baseada em nuvem.

A sessão mostrou como a pesquisa acadêmica e a engenharia funcional podem se complementar para criar um pipeline de upload robusto, colocando Clojure no centro de uma arquitetura de segurança construída sobre o princípio do conhecimento zero (zero-knowledge).

O contexto do problema

Empresas que interagem com outras empresas dependem da troca constante de documentos. No Nubank, muitos desses arquivos são grandes, sensíveis e têm origem em diferentes fontes externas. Cada arquivo recebido representa um risco potencial. O alto volume cria desafios de desempenho e escalabilidade. A necessidade de segurança vai além da simples análise pós-upload: uma arquitetura de zero-knowledge impõe uma restrição rigorosa: o servidor não pode, em momento algum, ter acesso ao conteúdo descriptografado desses arquivos.

A questão central que norteou a pesquisa era simples na teoria, mas complexa na prática: como terceiros podem enviar arquivos ao Nubank sem expor o sistema a ameaças e sem criar exceções que comprometam a privacidade ou a integridade dos dados?

Conheça nossas oportunidades

Por que Clojure se tornou a base

A escolha do Clojure não foi meramente pragmática, embora o Nubank seja a maior empresa do mundo a usar a linguagem em escala. O Clojure se mostrou ideal para lidar com metadados sensíveis, tokens temporários e chaves criptográficas, graças à sua imutabilidade.

A capacidade do Clojure de lidar com concorrência facilitou o processamento de arquivos extremamente grandes divididos em partes menores (chunks). O paradigma funcional tornou a composição das etapas de segurança mais clara e confiável. E a interoperabilidade com o ecossistema Java abriu as portas para bibliotecas estáveis e comprovadas (battle-tested) amplamente utilizadas na indústria de segurança cibernética.

Com o tempo, mesmo com outras tecnologias cercando o sistema, o Clojure surgiu naturalmente como o núcleo do NuFilebox Reverse.

Uma abordagem de segurança que começa no cliente

No modelo de upload tradicional, o cliente envia o arquivo via HTTPS, o servidor recebe o conteúdo em texto simples e só então aplica a criptografia antes de armazená-lo. Esse padrão, embora comum, apresenta uma vulnerabilidade óbvia: se o servidor for comprometido, os arquivos são expostos antes de serem protegidos.

A equipe adotou a abordagem oposta. A criptografia ocorre antes que o arquivo sequer saia da máquina do cliente. O front-end solicita ao back-end apenas dados mínimos, como a chave e o Vetor de Inicialização (IV), que determinam onde a criptografia começa. O servidor registra essa informação e a armazena no DynamoDB sem jamais tocar no conteúdo do arquivo. A partir daí, o próprio front-end divide o arquivo em partes menores, criptografa cada pedaço localmente e os envia diretamente para o S3 por meio de URLs pré-assinadas. O servidor nunca vê o conteúdo. Ele gerencia apenas metadados. A lógica permanece de um lado, os dados do outro.

É uma arquitetura verdadeiramente de conhecimento zero, construída sobre o princípio de segurança por design. Todo o pipeline foi criado para que o arquivo seja protegido desde o primeiro momento de sua jornada.

Descriptografia, remontagem e o papel do Clojure

Uma vez que os fragmentos de arquivos criptografados chegam ao S3, a AWS aciona uma cadeia de eventos. Lambdas determinam qual fluxo de trabalho seguir e encaminham o arquivo para o serviço responsável pela junção e descriptografia dos fragmentos. Esta etapa, implementada em Clojure, consulta informações armazenadas no DynamoDB, como a chave (key), IV (vetor de inicialização), identificador e nome do arquivo, e inicia o processo de reconstrução.

Cada parte é baixada do S3, descriptografada individualmente e remontada na sua ordem original. Essa etapa é essencial para a identificação de padrões maliciosos, visto que uma assinatura de malware pode estar dividida entre duas partes do arquivo. A reconstrução completa garante a precisão na próxima fase.

Uma segunda camada de defesa com YARA Rules

Assim que o arquivo é restaurado ao seu formato original, o NuFilebox Reverse executa a análise de malware usando YARA, uma das ferramentas mais estabelecidas no setor para detecção de ameaças. O YARA permite a criação de regras que descrevem comportamentos suspeitos, fragmentos de código, padrões criptografados, chamadas de API impróprias, conexões externas questionáveis ou até mesmo seções inteiras de código características de famílias específicas de malware.

A equipe combinou regras criadas manualmente, regras de repositórios confiáveis e a geração de um arquivo indexado para agilizar a varredura.

Como o sistema respondeu a arquivos cada vez maiores

O grupo também compartilhou resultados práticos. Arquivos de até quinhentos megabytes completaram o processo em apenas alguns segundos. Arquivos de um gigabyte levaram cerca de quatro minutos. Arquivos de dez gigabytes terminaram em cerca de quarenta e cinco minutos. No cenário mais extremo, arquivos de trinta gigabytes foram concluídos em aproximadamente duas horas.

Mesmo nesses casos, o desempenho foi melhor do que o normalmente visto em serviços amplamente utilizados adotados por grandes empresas. E, ao contrário de muitas dessas plataformas, o NuFilebox Reverse integra a detecção de malware antes que qualquer dado entre no ecossistema interno do Nubank.

Pesquisa aplicada que cria impacto real

Um dos aspectos mais atraentes da apresentação foi ver como o NuFuturo opera na prática. O projeto reúne estudantes, professores, pesquisadores e engenheiros em ciclos contínuos de colaboração. A equipe de Eric e Isaac recebeu orientação direta de profissionais do Nubank a partir de abril de 2024. O resultado é um sistema que resolve um problema real, cria oportunidades para novos talentos e expande o uso de Clojure para áreas que vão além dos fluxos de trabalho típicos de produtos.

A sessão final trouxe perguntas sobre imutabilidade, possíveis usos do Datomic, decisões de implementação e desafios futuros. Os apresentadores enfatizaram que ainda há muito espaço para evoluir, desde explorar formas mais eficientes de executar as regras YARA até experimentar novas abordagens que possam reduzir o tempo de processamento para arquivos extremamente grandes.

O NuFilebox Reverse é um exemplo concreto de como as parcerias entre a indústria e a academia podem produzir soluções que combinam pesquisa aprofundada, engenharia funcional e impacto direto em um problema do mundo real. Demonstra como a visão de longo prazo, a curiosidade técnica e a colaboração institucional podem se transformar em tecnologia que protege milhões de pessoas todos os dias.

Conheça nossas oportunidades