zkFuzz: Foundation and Framework for Effective Fuzzing of Zero-Knowledge Circuits
Este artigo apresenta o zkFuzz, um novo framework de fuzzing baseado em mutação fundamentado no Teste de Consistência de Restrições de Rastreamento (TCCT), que detecta efetivamente vulnerabilidades sub e super-restritas em circuitos de conhecimento zero ao superar as limitações das ferramentas existentes de análise estática e formal.
Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo
Imagine que você está construindo um cofre mágico que prova que você conhece uma senha secreta sem nunca realmente mostrar a senha. É isso que os "circuitos de Conhecimento Zero (ZK)" fazem no mundo digital. Eles são os guardas de segurança para tecnologias que preservam a privacidade, como criptomoedas anônimas e sistemas de votação seguros.
No entanto, construir esses cofres é incrivelmente complicado. Se você cometer um erro minúsculo nos projetos, o cofre pode:
- Deixar qualquer um entrar (mesmo que não conheçam a senha).
- Trancar o verdadeiro dono (mesmo que ele tenha a senha correta).
O artigo apresenta uma nova ferramenta chamada ZKFUZZ para encontrar esses erros antes que agentes mal-intencionados o façam. Veja como funciona, explicado de forma simples:
O Problema: O "Projeto" vs. A "Realidade"
Nesses sistemas, os desenvolvedores escrevem um programa que faz duas coisas ao mesmo tempo:
- O Cálculo: A matemática real para descobrir o segredo (como calcular uma rota em um mapa).
- As Restrições: As regras que provam que a matemática foi feita corretamente (como uma lista de verificação para confirmar que a rota existe).
O problema é que essas duas partes frequentemente ficam dessincronizadas.
- Sub-restrito: As regras são muito frouxas. Um hacker pode enganar o sistema para aceitar uma rota falsa.
- Sobre-restrito: As regras são muito rígidas. O sistema rejeita uma rota perfeitamente válida por causa de uma regra minúscula e desnecessária.
As ferramentas existentes para encontrar esses erros são como verificadores de ortografia ruins. Eles chutam com base em padrões e gritam "ERRO!" para coisas que estão realmente bem (falsos positivos), ou ignoram completamente erros profundos e complexos.
A Solução: ZKFUZZ (O "Mutador Fuzzer")
Os autores criaram um novo framework chamado ZKFUZZ. Em vez de apenas ler o código, o ZKFUZZ age como um engenheiro de testes travesso que tenta quebrar o sistema de propósito.
Veja a analogia:
Imagine que você tem uma receita (o cálculo) e um teste de degustação (as restrições).
- Ferramentas Antigas: Olham para a receita e dizem: "Isso parece suspeito porque usa sal." (Elas chutam com base em regras).
- ZKFUZZ: Na verdade, cozinha o prato, mas depois muta a receita. Troca "açúcar" por "sal" ou altera o tempo de cozimento. Em seguida, serve esse prato mutado ao teste de degustação.
- Se o teste de degustação disser: "Delícia!" para um prato que deveria ter gosto horrível (porque a receita foi alterada), o ZKFUZZ sabe que as regras estão muito frouxas (Sub-restrito).
- Se o teste de degustação disser: "Nojo!" para um prato que deveria ser delicioso (porque a receita original estava correta), o ZKFUZZ sabe que as regras estão muito rígidas (Sobre-restrito).
O Segredo: "Aptidão" e "Focalização"
Encontrar um erro em um circuito ZK é como encontrar uma agulha em um palheiro do tamanho de um planeta. Os números envolvidos são tão enormes que um computador não pode simplesmente tentar todas as possibilidades.
O ZKFUZZ usa um Algoritmo Genético (como a evolução):
- Mutação: Cria milhares de versões levemente quebradas do programa.
- Pontuação de Aptidão: Avalia essas versões quebradas. Se uma versão quebrada chega perto de passar no teste (mesmo que falhe), ela recebe uma "boa pontuação". Isso diz ao sistema: "Você está ficando mais quente!"
- Focalização: Não chuta aleatoriamente. Sabe que erros frequentemente ocorrem em "casos extremos" (como quando os números são zero ou extremamente grandes). Especificamente, tenta alimentar o sistema com esses números complicados para ver se ele quebra.
Os Resultados: Pegando o Invisível
A equipe testou o ZKFUZZ em 452 circuitos do mundo real usados em projetos atuais.
- A Pontuação: Encontrou 85 erros.
- Os Zero-Days: 59 deles eram erros totalmente novos e desconhecidos (Zero-Days) que ninguém sabia que existiam.
- O Impacto: 39 deles foram confirmados pelos desenvolvedores, e 14 já foram corrigidos. Isso inclui erros em grandes projetos como zkSync (uma plataforma de criptomoedas) e passport-zk-circuits (sistemas de identidade digital).
- Sem Falsos Alarmes: Diferente de outras ferramentas, o ZKFUZZ não sinalizou nada como erro que não fosse realmente um erro.
Por Que Isso Importa
O artigo argumenta que as ferramentas anteriores estavam perdendo uma grande parte do problema. Elas apenas procuravam por "aleatoriedade" nas regras. O ZKFUZZ introduziu uma nova teoria chamada TCCT (Teste de Consistência Rastreio-Restrição), que verifica se o caminho real que o computador percorre corresponde às regras que ele deveria seguir.
Essa nova teoria pegou erros que ocorriam quando o computador "travava" ou parava inesperadamente, algo que as ferramentas anteriores ignoravam completamente.
Em Poucas Palavras
O ZKFUZZ é um "caçador de erros" inteligente e automatizado que quebra circuitos de Conhecimento Zero mutando seu código e alimentando-os com entradas complicadas. Ele encontrou dezenas de falhas de segurança críticas que outras ferramentas perderam, provando que, mesmo no mundo complexo da matemática da privacidade, um pouco de caos controlado é a melhor maneira de encontrar a verdade.
Afogado em artigos na sua área?
Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.