O que são provas de conhecimento zero?
Entenda como as provas de conhecimento zero permitem comprovar que uma afirmação é verdadeira sem revelar a informação secreta por trás dela, e por que são importantes em blockchains.
Provas de conhecimento zero são métodos criptográficos que permitem a uma parte provar que uma afirmação é verdadeira sem revelar a informação secreta por trás dessa afirmação. Em uma blockchain, isso pode significar provar que uma transação segue as regras, que um usuário pertence a um conjunto aprovado ou que um cálculo foi executado corretamente sem publicar todas as entradas privadas.
Uma prova pode revelar a resposta sem revelar os dados
O problema básico é simples. Imagine um serviço que só precisa saber se você tem mais de 18 anos. Um fluxo de verificação comum pode pedir seu documento de identidade completo, expondo seu nome, data de nascimento e número do documento. Um sistema de conhecimento zero pode ser projetado para que o serviço receba uma prova criptográfica da afirmação “esta pessoa tem mais de 18 anos” sem receber a data de nascimento subjacente.
Isso não significa que o verificador não aprende absolutamente nada. O verificador aprende que a afirmação que está sendo provada é válida. O que permanece oculto é a informação privada usada para estabelecê-la.
Um sistema de conhecimento zero sólido tem três propriedades centrais:
- Completude: uma afirmação válida pode ser provada por um provador honesto.
- Solidez: uma afirmação falsa não deve ser aceita, exceto com uma probabilidade desprezivelmente pequena.
- Conhecimento zero: o verificador não deve aprender nada além da validade da afirmação.
A matemática difere entre os sistemas de prova, mas essas três ideias são o modelo mental útil.
Provador, testemunha e verificador são as peças em movimento
Uma prova de conhecimento zero começa com um provador que conhece alguma informação privada. Criptógrafos costumam chamar essa informação de testemunha. O provador executa um algoritmo de prova que combina a testemunha com a afirmação pública e produz uma prova compacta.
Figura: As três partes de uma prova de conhecimento zero, usando o exemplo de maior de 18 anos do artigo. Os dados secretos nunca saem do provador.
O verificador verifica essa prova em relação à afirmação pública. Se a prova for válida, o verificador pode aceitar a afirmação sem receber a própria testemunha.
Considere um exemplo simplificado em blockchain. Um usuário quer provar que uma transferência é válida. A testemunha privada pode incluir os saldos exatos e o caminho da transação. A afirmação pública pode ser que a transação obedece a todas as regras do protocolo e não cria dinheiro do nada. Uma prova de conhecimento zero pode permitir que a rede verifique a afirmação pública sem expor cada detalhe privado usado para produzi-la.
Essa distinção é importante porque blockchains são naturalmente boas em verificação, mas fracas em privacidade. Redes públicas são projetadas para que participantes independentes possam conferir o mesmo estado. As técnicas de conhecimento zero acrescentam uma forma de preservar a verificabilidade divulgando menos dados.
Por que ZK-SNARKs e ZK-STARKs aparecem tanto
“Prova de conhecimento zero” descreve uma família ampla de técnicas. Dois nomes aparecem com frequência em sistemas blockchain:
| Sistema de prova | O que o nome enfatiza | Compromisso prático |
|---|---|---|
| ZK-SNARK | Argumento de conhecimento sucinto e não interativo | Provas muito pequenas e verificação rápida; algumas construções exigem uma configuração confiável |
| ZK-STARK | Argumento de conhecimento escalável e transparente | Sem configuração confiável em projetos comuns; as provas podem ser maiores |
Os acrônimos são úteis, mas não são criptomoedas concorrentes nem redes separadas. São maneiras diferentes de construir provas. Implementações específicas fazem escolhas diferentes em relação ao tamanho da prova, ao tempo de prova, ao custo de verificação, às premissas criptográficas e aos requisitos de configuração.
Para um usuário, a pergunta importante geralmente não é “SNARK ou STARK?”. É para que a prova está sendo usada para verificar e qual informação permanece pública.
Provas de conhecimento zero podem escalar uma blockchain além de proteger a privacidade
A privacidade é o caso de uso mais intuitivo, mas a escalabilidade é uma das razões mais importantes pelas quais provas de conhecimento zero são usadas em infraestrutura cripto.
Um rollup de conhecimento zero pode executar muitas transações fora da camada base e, em seguida, enviar uma prova de que a transição de estado resultante é válida. A blockchain base verifica a prova em vez de recalcular cada transação do zero. O resultado é uma divisão de trabalho diferente: o processamento pesado acontece em outro lugar, enquanto a cadeia base verifica uma afirmação criptográfica compacta.
É por isso que o termo “ZK” aparece em discussões sobre sistemas de camada 2 da Ethereum, mesmo quando as transações não são totalmente privadas. Uma prova de conhecimento zero pode comprovar a correção computacional sem necessariamente ocultar todos os dados das transações.
Privacidade e escalabilidade se sobrepõem, mas não são o mesmo recurso.
Um exemplo concreto: provar pertencimento sem revelar identidade
Suponha que 10.000 endereços estejam registrados para uma votação privada on-chain. O objetivo é permitir que cada participante elegível vote uma única vez, sem publicar qual endereço registrado emitiu qual voto.
Um participante pode gerar uma prova que afirma, em essência:
Eu conheço um segredo correspondente a um membro deste conjunto aprovado, e não usei esta credencial de votação antes.
O verificador checa a prova e a condição pública contra votação dupla. O eleitor não precisa revelar qual membro do conjunto ele é. A documentação de privacidade da Ethereum descreve esse tipo de padrão de pertencimento anônimo como um uso prático da tecnologia de conhecimento zero.
O mesmo padrão pode ser adaptado para credenciais, controle de acesso, verificações de conformidade e divulgação seletiva.
Conhecimento zero não torna um sistema automaticamente privado
Este é um ponto fácil de deixar passar. Um protocolo pode usar provas de conhecimento zero e ainda expor metadados úteis: endereços de carteira, carimbos de data e hora, tamanhos de transações, interações com contratos ou pontos de depósito e saque.
A privacidade depende do desenho completo do sistema, não da presença de uma sigla ZK. Um usuário que entra em um sistema privado a partir de um endereço publicamente identificado e sai imediatamente para outro endereço conhecido ainda pode criar um vínculo que ferramentas de análise podem inferir.
A prova protege aquilo para o que foi projetada para ocultar. Ela não apaga todas as outras informações em torno da transação.
Conhecimento zero também não prova que a aplicação é segura
Uma prova matematicamente válida pode mostrar que um programa seguiu as regras codificadas. Isso não garante que essas regras sejam economicamente sensatas, livres de erros ou seguras para os usuários.
O risco em contratos inteligentes continua existindo. Também existem riscos de gerenciamento de chaves, riscos em pontes, riscos de governança e falhas nos circuitos ou no software usados para gerar provas. Alguns sistemas também dependem de cerimônias de configuração, hardware especializado ou bibliotecas criptográficas complexas.
Em outras palavras, uma prova pode estabelecer “este cálculo foi executado de acordo com o circuito”. Ela não pode estabelecer “este produto é uma boa ideia”.
O custo de produzir uma prova
Verificar uma prova de conhecimento zero é rápido e barato, mas produzir uma pode exigir poder computacional substancial. Esse desequilíbrio molda como os sistemas ZK são construídos: operadores especializados, às vezes chamados de provers, executam hardware potente para gerar provas, enquanto nós comuns apenas as verificam.
Onde as provas de conhecimento zero são mais importantes
A tecnologia é mais útil quando um sistema precisa de verificação e divulgação limitada ao mesmo tempo. Exemplos comuns incluem credenciais privadas, pertencimento anônimo, votação que preserva a privacidade, provas de validade de transações e escalabilidade de blockchains.
Ela importa menos quando todas as entradas já são públicas e o cálculo é barato o suficiente para que qualquer pessoa verifique diretamente. Nesse caso, adicionar um sistema de provas pode criar complexidade sem resolver um problema real.
A pergunta útil, portanto, não é se as provas de conhecimento zero são criptografia avançada. Elas são. A pergunta melhor é se uma aplicação específica precisa provar algo sem revelar, ou recalcular, tudo o que está por trás.