O que é uma prova de conhecimento-zero (zero-knowledge proof)?
Considere uma página de login. Para fazer login em sua conta, você normalmente fornece um nome de usuário para se identificar e uma senha, um segredo que confirma que você é quem diz. Supondo que você seja realmente a pessoa em questão (e não tenha esquecido sua senha), é trivial provar que você sabe sua senha. Basta digitar. Isso é necessário porque as plataformas não confiam que você é quem diz sem provas.
Mas e se você não confiar na plataforma? E se você não quiser que a plataforma saiba sua senha? O problema se torna muito mais complicado, e esse é o tipo de pergunta que as provas de conhecimento-zero (cz) são usadas para responder.
Em resumo, uma prova cz (conhecimento-zero) é uma abordagem usada para provar exatamente que algo é verdadeiro, sem fornecer nenhuma outra informação. Em aplicativos adjacentes de criptomoedas, "prova cz" geralmente se refere a um tipo específico de tais provas, provas de conhecimento de conhecimento zero.
Uma prova de conhecimento de conhecimento zero é um método para provar o conhecimento de alguma informação secreta, sem revelar a informação (mesmo para a parte que solicita a prova). A pessoa com as informações secretas é normalmente chamada de provador, e a parte que solicita a prova normalmente é chamada de verificador.
As limitações tornam os exemplos um pouco mais difíceis de construir, mas graças ao artigo Como Explicar Protocolos de Conhecimento-Zero para Seus Filhos, de Jean-Jacques Quisquater, Temos um exemplo canônico à mão:
Caverna de Ali Babá

Neste exemplo, há uma caverna contendo um loop que é interrompido por uma porta trancada. O provador (P) visa provar que eles têm a chave dessa porta. P entra na caverna, e o verificador (V) não pode ver dentro da caverna. P escolhe um dos dois caminhos a seguir e chega a uma porta trancada do outro lado da caverna. V não consegue ver que lado da caverna P escolheu. V então entra na caverna e grita para P que P deve sair da caverna por um dos dois caminhos.
Na primeira vez que P sai do lado correto, há apenas 50% de chance de que eles realmente tenham a chave... mas o desafio pode ser repetido para a satisfação de V, com cada iteração aumentando a confiança. Se, por exemplo, P sai do lado direito 100 vezes, há apenas cerca de 0,000000000000000000000000000079% de chance de que P não tenha a chave.
Falando sério, o que é uma prova de conhecimento zero?
As provas de conhecimento-zero devem ser completas, ou seja, o provador deve ser capaz de convencer o verificador, assumindo que o provador e o verificador sejam honestos. As provas de conhecimento-zero devem ser sólidas, ou seja, um provador tem no máximo alguma probabilidade insignificante de convencer o verificador se o provador NÃO estiver sendo honesto. Finalmente, as provas de conhecimento-zero devem ser conhecimento-zero, ou seja, o verificador não aprende nada além do fato de que a afirmação é verdadeira.
O último critério é a parte distintiva e por que as provas cz são tão complicadas. Também exige que as provas de conhecimento-zero sejam probabilísticas, ou seja, no exemplo da caverna, é tecnicamente possível que o provador possa apenas adivinhar qual lado o verificador vai pedir, (na prática o verificador perguntaria tantas vezes que essa possibilidade pode ser considerada desprezível) . Isso fornece uma informação adicional sobre o vazamento: se outra pessoa observar a interação, ela não pode ter certeza de que o provador conhece o segredo, porque o provador e o verificador poderiam ter concordado com uma sequência de antemão, precisamente para enganar tais observadores.
Em nosso próximo artigo, daremos uma olhada em mais alguns aplicativos cripto-específicos de provas de conhecimento-zero e discutiremos sua função no desenvolvimento Web3.
Notas de rodapé
Algoritmos probabilísticos podem parecer não intuitivos, mas são usados de forma prática em muitas outras aplicações. Aqui temos como exemplo dois testes de primalidade populares: Miller-Rabin e Baillie-PSW.