{
  "$type": "site.standard.document",
  "bskyPostRef": {
    "cid": "bafyreibwm3jmwrinvpjoyrwtublnckbjhfdhogxjjaqid7wbsn2xcxsfjq",
    "uri": "at://did:plc:3pjw65epwlo3rzajhx6xg4br/app.bsky.feed.post/3mik7q5r65gm2"
  },
  "coverImage": {
    "$type": "blob",
    "ref": {
      "$link": "bafkreidk2bf7vy4plqnx4gbwkp53me4klogfkenunnvexpwwktnoe6bb2u"
    },
    "mimeType": "image/png",
    "size": 220311
  },
  "path": "/2026/04/02/zupt-backup-open-source-com-criptografia-pos-quantica-hibrida/",
  "publishedAt": "2026-04-02T17:18:56.000Z",
  "site": "https://assuntonerd.com.br",
  "tags": [
    "Cristian Cezar Moises.",
    "UNISO Quantum Day dia 7 de Abril.",
    "Fonte NIST",
    "Fonte Signal"
  ],
  "textContent": "O **Zupt** é uma ferramenta open source de backup que combina compressao de dados com criptografia autenticada e, no modo `--pq`, proteção pós-quântica baseada em **ML-KEM-768 + X25519**. No repositório oficial, o projeto é descrito como uma solução em **C11 puro** , sem dependências externas, voltada para criar arquivos de backup comprimidos e, quando necessário, protegidos com criptografia clássica por senha ou com encapsulamento híbrido resistente ao cenário de computação quântica.\n\nO projeto teve início com a implementação em C desenvolvida por _**Cristian Cezar Moises.**_\n\n> Como Membro e Embaixador openSUSE e Chapter Lider OWASP SP, entrei na iniciativa para viabilizar sua compilação em conformidade com os requisitos de compliance das distribuições Linux.\n\nAlém de atuar no port para as arquiteturas x86, ppc64le, armv7l, aarch64 e s390x. Esta primeira etapa está sendo realizada no openSUSE, permitindo que o DiraQ (um Linux de bolso para Computação Quântica que desenvolvi com **Wilson Fonseca** ) já incorpore esse recurso, cuja demonstração acontecerá no**UNISO Quantum Day dia 7 de Abril. **\n\nA ideia central do Zupt é simples: transformar backup em um único fluxo operacional. Em vez de usar uma ferramenta para compactar, outra para cifrar e outra para validar integridade,**o Zupt concentra tudo em um só utilitário. O projeto destaca compressão, autenticação por bloco, execução multithread, ocultação de nomes/estrutura dos arquivos dentro do archive e um modo pós-quântico para arquivos que precisam continuar confidenciais por muitos anos.**\n\n## OK, mas o que significa “pós-quântico” no Zupt\n\nPara entender o diferencial do Zupt, é importante entender o papel do **ML-KEM**. O NIST define ML-KEM em seu padrão **FIPS 203** como um **KEM** (Key-Encapsulation Mechanism), isto é, um mecanismo de encapsulamento de chave que permite a duas partes estabelecerem um segredo compartilhado por um canal público, para depois usar esse segredo em algoritmos simétricos de criptografia e autenticação. O padrão prevê três conjuntos de parâmetros: **ML-KEM-512, ML-KEM-768 e ML-KEM-1024**. (Fonte NIST)\n\nNo Zupt, o modo `--pq` usa especificamente o **ML-KEM-768** , que o próprio `SECURITY.md` classifica como um esquema de nível de segurança NIST 3, combinado com **X25519** em um desenho híbrido. Em outras palavras, o archive não depende só de um algoritmo “novo” pós-quântico, nem só de um algoritmo clássico consagrado: ele deriva a chave de proteção a partir da combinação dos dois. Isso torna o modelo particularmente interessante para migração gradual, porque ele mantém a robustez clássica e adiciona uma camada pensada para a ameaça quântica.\n\nO repositório resume esse benefício com a expressão **“harvest now, decrypt later”**. Esse risco descreve o cenário em que um adversário intercepta dados cifrados hoje, armazena tudo e espera o futuro, quando a computação quântica ou novos ataques possam quebrar mecanismos clássicos.\n\nO README do Zupt diz explicitamente que o modo `--pq` existe para enfrentar esse problema; o `SECURITY.md` reforça que o modo com senha (`-p`) **não é quântico-seguro** e recomenda `--pq` para proteção de longo prazo.\n\nQuando o projeto afirma que essa ideia segue a mesma linha de produtos como **Signal** e **iMessage** , a comparação faz sentido no nível conceitual: o Signal documenta seu protocolo **PQXDH** como uma combinação de **X25519** com **Kyber/ML-KEM** , e a Apple também descreve sua transição para criptografia híbrida pós-quântica no iMessage/PQ3 como resposta ao risco de ataques futuros contra material coletado hoje. O ponto principal não é que Zupt replique literalmente esses protocolos de mensageria, mas que ele adota a mesma filosofia de **hibridização** entre o mundo clássico e o pós-quântico. (Fonte Signal)\n\n## Como o modo `--pq` funciona na prática\n\nO fluxo híbrido do Zupt funciona assim: a chave pública do destinatário é usada em uma encapsulação **ML-KEM-768** ; ao mesmo tempo, o programa faz uma troca baseada em **X25519** ; depois, os segredos resultantes são combinados e passam por **SHA3-512** para derivar duas chaves: uma de cifragem e outra de autenticação. Essas chaves então alimentam o mecanismo simétrico já usado pelo programa, baseado em **AES-256-CTR** para confidencialidade e **HMAC-SHA256** para integridade.\n\nA consequência prática desse desenho é importante: o projeto afirma que o archive continua protegido se **pelo menos um** dos dois componentes permanecer seguro. Ou seja, mesmo que no futuro surja uma quebra relevante contra X25519, o componente ML-KEM-768 ainda sustentaria a segurança; e, no cenário inverso, o componente clássico ainda adicionaria proteção enquanto permanecesse confiável. Esse é exatamente o valor de um desenho híbrido em uma fase de transição criptográfica.\n\n## O que mais o Zupt oferece além do modo pós-quântico\n\nEmbora o modo `--pq` seja o grande diferencial, o Zupt não é “só” um experimento de criptografia. O README destaca compressão, autenticação por bloco, paralelismo e um codec chamado **VaptVupt** , descrito como o codec padrão da linha 2.0, combinando **LZ77 + tANS** com aceleração **AVX2** para descompressão **(Uau).**\n\nO projeto também apresenta comparação funcional com gzip, zstd e 7-Zip, ressaltando que o ganho do Zupt não é apenas taxa de compressão, mas a soma de compressão, integridade, criptografia e independência de bibliotecas externas. Também vale uma observação editorial importante para o seu artigo: no momento da consulta, a página do repositório mostrava **v1.5.5** como release mais recente publicada, mas o **README do branch`master`** já descrevia a linha **2.0-RC** e seus recursos, incluindo o VaptVupt como padrão. Para um texto técnico honesto, vale explicitar que parte da documentação do projeto reflete uma transição de versões.\n\n## Instalação do Zupt a partir dos fontes no openSUSE\n\nNo fluxo de compilação a partir do GitHub, o README oficial documenta um processo direto: clonar o repositório, entrar no diretório, executar `make` e depois `sudo make install`. O Makefile confirma que o compilador padrão é `gcc`, que o binário gerado chama-se `zupt` e que a instalação, por padrão, vai para **`/usr/local/bin`**. Como o procedimento usa `git clone`, `make` e `gcc`, no openSUSE o caminho mais lógico é preparar o ambiente com esses pacotes antes da compilação.\n\nOs pré-requisitos mínimos no openSUSE podem ser instalados assim:\n\n\n\n\n    sudo zypper install git gcc make\n\nEm seguida, faça a compilação:\n\n\n\n\n    git clone https://github.com/cristiancmoises/zupt.git\n\n\n\n\n    cd zupt\n\n\n\n\n    make\n\n\n\n\n    sudo make install\n\nDepois da instalação, você pode confirmar que o binário entrou corretamente no sistema com:\n\n\n\n\n    which zupt\n\n\n\n\n    zupt version\n\n\n\n\n    zupt help\n\nEsse fluxo está alinhado ao README e ao Makefile do projeto, que mostram build sem dependências externas além do toolchain C padrão.\n\n## Instalação do Zupt via zypper no openSUSE\n\nO README também documenta instalação por pacote no ecossistema openSUSE. No trecho consultado, a instrução publicada era adicionar o repositório da iniciativa e instalar o pacote com `zypper`. Como o texto do repositório explicitava o exemplo para **openSUSE 16.0** , o mais correto é reproduzir exatamente esse procedimento no artigo, sem extrapolar para versões que não estejam listadas no README consultado.\n\n\n\n\n    sudo zypper addrepo https://download.opensuse.org/repositories/home:cabelo:innovators/16.0/home:cabelo:innovators.repo\n\n\n\n\n    sudo zypper refresh\n\n\n\n\n    sudo zypper install zupt\n\nApós isso, os mesmos comandos de verificação continuam válidos:\n\n\n\n\n    zupt version\n\n\n\n\n    zupt help\n\nEsse método é o mais prático para quem quer começar rapidamente, enquanto a instalação via fonte é mais interessante para auditoria de código, testes com mudanças locais ou validação de uma branch específica.\n\n## Uso básico do Zupt\n\nA interface principal do programa gira em torno de alguns subcomandos: `compress`, `extract`, `list`, `test`, `bench`, `keygen`, `version` e `help`. O README mostra o formato geral como `zupt compress [OPTIONS] <output.zupt> <files/dirs...>` e `zupt extract [OPTIONS] <archive.zupt>`, além de opções como nível de compressão, número de threads, senha, modo pós-quântico, saída de extração e modos de codec.\n\n### 1. Criando um backup simples sem criptografia\n\nPara apenas compactar arquivos, o uso básico documentado é:\n\n\n\n\n    zupt compress backup.zupt ~/Documents/\n\nEsse comando cria um archive `.zupt` usando o codec padrão documentado no branch atual do projeto. É o modo indicado para dados não sensíveis ou para testes rápidos de desempenho e formato.\n\n### 2. Criando um backup com senha\n\nSe a intenção é proteger o conteúdo com senha, o README mostra:\n\n\n\n\n    zupt compress -p \"changeme\" backup.zupt ~/Documents/\n\nNesse caso, o `SECURITY.md` diz que a derivação passa por **PBKDF2-SHA256** e gera chaves para **AES-256-CTR + HMAC-SHA256**. É uma proteção útil para uso comum, mas a própria documentação alerta que esse modo **não** é o indicado para proteção de longo prazo contra ameaça quântica.\n\n### 3. Extraindo um backup\n\nPara restaurar o conteúdo em um diretório específico, o fluxo documentado é:\n\n\n\n\n    zupt extract -o ~/restored/ backup.zupt\n\nSe o archive tiver sido protegido com senha, a senha deve ser informada no comando; se tiver sido criado com `--pq`, será preciso usar a chave privada correspondente. A opção `-o` define o diretório de destino da restauração.\n\n### 4. Criando um backup pós-quântico\n\nO modo pós-quântico documentado no README envolve primeiro gerar um par de chaves, depois exportar a chave pública e usá-la na compressão:\n\n\n\n\n    zupt keygen -o mykey.key\n\n\n\n\n    zupt keygen --pub -o pub.key -k mykey.key\n\n\n\n\n    zupt compress --pq pub.key backup.zupt ~/Documents/\n\nPara extrair depois:\n\n\n\n\n    zupt extract --pq mykey.key -o ~/restored/ backup.zupt\n\nA lógica é semelhante a fluxos de criptografia de chave pública: quem cria o backup usa a **chave pública** para proteger o archive, e só quem possui a **chave privada** consegue abrir o conteúdo. Para arquivos arquivísticos, backups frios, documentos estratégicos e material com exigência de sigilo prolongado, este é o modo mais interessante do Zupt.\n\n### 5. Listando, testando e ajustando o comportamento\n\nAlém de comprimir e extrair, o README informa que o Zupt também oferece:\n\n\n\n\n    zupt list backup.zupt\n\n\n\n\n    zupt test backup.zupt\n\n`list` serve para inspecionar o archive, e `test` para validar integridade. O projeto também documenta `-l <1-9>` para nível de compressão, `-t <N>` para número de threads, `-s` para armazenar sem compressão, `-f` para codec rápido legado e `--solid` para modo sólido. Isso permite adaptar o comportamento entre velocidade, taxa de compressão e custo de CPU.\n\n## Cuidados e limitações que merecem atenção\n\nUm artigo técnico sobre o Zupt fica mais forte quando menciona não apenas os recursos, mas também os limites atuais. O `COMPAT.md` informa, por exemplo, que **links simbólicos são ignorados** , arquivos especiais também podem ser ignorados, e as **permissões dos arquivos ainda não são restauradas na extração** ; o documento também cita limites para tamanho de bloco, quantidade de arquivos e algumas restrições de modo sólido.\n\nAlém disso, o README do branch atual é explícito ao dizer que a linha **2.0-RC** já está adequada para uso pessoal e testes, mas ainda **não** é indicada para ambientes críticos ou grandes volumes de dados. Portanto, um texto responsável deve apresentar o Zupt como uma ferramenta muito promissora, tecnicamente interessante e especialmente relevante por trazer criptografia híbrida pós-quântica ao universo de backup, mas ainda em evolução.\n\n## Conclusão\n\nO Zupt se destaca por atacar um problema real com uma abordagem moderna: backup não é só compactar arquivos, é preservar confidencialidade, integridade e recuperabilidade por muitos anos. Ao combinar compressão, autenticação por bloco, execução paralela e um modo híbrido **ML-KEM-768 + X25519** , a ferramenta entra em um espaço ainda pouco explorado por utilitários de backup open source. O grande valor do projeto está justamente em aproximar a discussão de **criptografia pós-quântica** da operação cotidiana de backup.\n",
  "title": "Zupt: Backup open source com criptografia pós-quântica híbrida."
}