O que são provas de conhecimento zero?

Principiante1/4/2024, 6:21:16 PM
Este artigo fornece uma prova detalhada de Provas de Conhecimento Zero (ZKP).

Um protocolo de conhecimento zero é um método pelo qual uma parte (o provador) pode provar a outra parte (o verificador) que algo é verdadeiro, sem revelar qualquer informação além do fato de que esta declaração específica é verdadeira.

As provas de conhecimento zero melhoraram ao longo dos anos e agora estão a ser utilizadas em várias aplicações do mundo real.

Por que precisamos de provas de conhecimento zero?

Provas de conhecimento zero representaram uma grande evolução na criptografia aplicada, pois prometeram melhorar a segurança da informação para indivíduos. Considere como você poderia provar uma reivindicação (por exemplo, "Eu sou cidadão do país X") para outra parte (por exemplo, um provedor de serviços). Você precisaria fornecer "evidências" para apoiar sua reivindicação, como um passaporte nacional ou carteira de motorista.

Mas existem problemas com esta abordagem, principalmente a falta de privacidade. As Informações Pessoalmente Identificáveis (PII) partilhadas com serviços de terceiros são armazenadas em bases de dados centrais, que são vulneráveis a ataques. Com o roubo de identidade a tornar-se um problema crítico, há apelos para meios de partilha de informações sensíveis mais protegidos da privacidade.

As provas de conhecimento zero resolvem esse problema ao eliminar a necessidade de revelar informações para provar a validade das reivindicações. O protocolo de conhecimento zero usa a declaração (chamada de 'testemunha') como entrada para gerar uma prova sucinta de sua validade. Essa prova fornece garantias sólidas de que uma declaração é verdadeira sem expor as informações usadas em sua criação.

Voltando ao nosso exemplo anterior, a única evidência que você precisa para comprovar sua reivindicação de cidadania é uma prova de conhecimento zero. O verificador só precisa verificar se certas propriedades da prova são verdadeiras para se convencer de que a declaração subjacente também é verdadeira.

Como funcionam as provas de conhecimento zero?

Uma prova de conhecimento zero permite que prove a veracidade de uma declaração sem partilhar o conteúdo da declaração ou revelar como descobriu a verdade. Para tornar isso possível, os protocolos de conhecimento zero baseiam-se em algoritmos que recebem alguns dados como entrada e devolvem 'verdadeiro' ou 'falso' como saída.

Um protocolo de conhecimento zero deve satisfazer os seguinte critérios:

  1. Completude: Se a entrada for válida, o protocolo de conhecimento zero sempre retorna 'verdadeiro'. Portanto, se a declaração subjacente for verdadeira e o provador e o verificador agirem honestamente, a prova pode ser aceita.
  2. Coerência: Se a entrada for inválida, é teoricamente impossível enganar o protocolo de conhecimento zero para retornar ‘verdadeiro’. Portanto, um provador mentiroso não pode enganar um verificador honesto a acreditar que uma afirmação inválida é válida (exceto com uma pequena margem de probabilidade).
  3. Zero-conhecimento: O verificador não aprende nada sobre uma declaração além de sua validade ou falsidade (eles têm “zero conhecimento” da declaração). Este requisito também impede o verificador de derivar a entrada original (o conteúdo da declaração) da prova.

Em forma básica, uma prova de conhecimento zero é composta por três elementos: testemunha, desafio e resposta.

  • Testemunha: Com uma prova de conhecimento zero, o provador quer provar o conhecimento de alguma informação oculta. A informação secreta é a “testemunha” da prova, e o conhecimento presumido da testemunha pelo provador estabelece um conjunto de perguntas que só podem ser respondidas por uma parte com conhecimento da informação. Assim, o provador inicia o processo de prova escolhendo aleatoriamente uma pergunta, calculando a resposta e enviando-a ao verificador.
  • Desafio: O verificador escolhe aleatoriamente outra pergunta do conjunto e pede ao provador que a responda.
  • Resposta: O provador aceita a pergunta, calcula a resposta e devolve-a ao verificador. A resposta do provador permite ao verificador verificar se o primeiro realmente tem acesso à testemunha. Para garantir que o provador não está a adivinhar às cegas e a obter as respostas corretas por acaso, o verificador escolhe mais perguntas para fazer. Ao repetir esta interação muitas vezes, a possibilidade de o provador fingir conhecimento da testemunha diminui significativamente até que o verificador esteja satisfeito.

O acima descreve a estrutura de uma 'prova interativa de conhecimento zero'. Os protocolos de conhecimento zero iniciais usavam prova interativa, onde verificar a validade de uma declaração exigia comunicação de ida e volta entre provadores e verificadores.

Um bom exemplo que ilustra como funcionam as provas interativas é o famoso de Jean-Jacques Quisquater.História da caverna de Ali Baba

(abre numa nova aba)

Na história, Peggy (a provadora) quer provar a Victor (o verificador) que ela sabe a frase secreta para abrir uma porta mágica sem revelar a frase.

Provas de conhecimento zero não interativas

Embora revolucionária, a prova interativa tinha utilidade limitada, uma vez que exigia que as duas partes estivessem disponíveis e interagissem repetidamente. Mesmo que um verificador estivesse convencido da honestidade de um provador, a prova não estaria disponível para verificação independente (calcular uma nova prova exigia um novo conjunto de mensagens entre o provador e o verificador).

Para resolver este problema, Manuel Blum, Paul Feldman e Silvio Micali sugeriram o primeiroprovas de conhecimento zero não interativas

(abre numa nova aba)

onde o provador e o verificador têm uma chave compartilhada. Isso permite que o provador demonstre seu conhecimento de algumas informações (ou seja, testemunha) sem fornecer as informações em si.

Ao contrário das provas interativas, as provas não interativas requerem apenas uma rodada de comunicação entre os participantes (provador e verificador). O provador passa a informação secreta a um algoritmo especial para calcular uma prova de conhecimento zero. Esta prova é enviada ao verificador, que verifica se o provador conhece a informação secreta usando outro algoritmo.

A prova não interativa reduz a comunicação entre o provador e o verificador, tornando as provas de conhecimento zero mais eficientes. Além disso, uma vez que uma prova é gerada, está disponível para qualquer outra pessoa (com acesso à chave compartilhada e algoritmo de verificação) verificar.

As provas não interativas representaram um avanço para a tecnologia de conhecimento zero e impulsionaram o desenvolvimento dos sistemas de provas utilizados hoje. Discutimos esses tipos de provas abaixo:

Tipos de provas de conhecimento zero

ZK-SNARKs

ZK-SNARK é um acrônimo para Argumento Não Interativo Sucinto de Conhecimento de Zero-Conhecimento. O protocolo ZK-SNARK tem as seguintes qualidades:

  • Zero-knowledge: Um verificador pode validar a integridade de uma declaração sem saber mais nada sobre a declaração. A única informação que o verificador tem sobre a declaração é se é verdadeira ou falsa.
  • Succinct: A prova de conhecimento zero é menor do que a testemunha e pode ser verificada rapidamente.
  • Não interativo: A prova é 'não interativa' porque o provador e o verificador apenas interagem uma vez, ao contrário das provas interativas que requerem múltiplas rondas de comunicação.
  • Argumento: A prova satisfaz o requisito de 'correção', portanto, a trapaça é extremamente improvável.
  • (De) Conhecimento: A prova de conhecimento zero não pode ser construída sem acesso à informação secreta (testemunha). É difícil, se não impossível, para um provador que não tem a testemunha calcular uma prova de conhecimento zero válida.

A 'chave partilhada' mencionada anteriormente refere-se a parâmetros públicos que o provador e verificador concordam em usar na geração e verificação de provas. A geração dos parâmetros públicos (coletivamente conhecidos como a String de Referência Comum (CRS)) é uma operação sensível devido à sua importância na segurança do protocolo. Se a entropia (aleatoriedade) usada na geração do CRS cair nas mãos de um provador desonesto, eles podem calcular provas falsas.

Computação multipartidária (MPC)

(abre numa nova aba)

é uma forma de reduzir os riscos na geração de parâmetros públicos. Múltiplas partes participam numa cerimônia de configuração confiável

(abre-se numa nova aba)

, onde cada pessoa contribui com alguns valores aleatórios para gerar o CRS. Desde que uma parte honesta destrua sua porção da entropia, o protocolo ZK-SNARK mantém a solidez computacional.

Configurações confiáveis exigem que os usuários confiem nos participantes na geração de parâmetros. No entanto, o desenvolvimento de ZK-STARKs permitiu protocolos de comprovação que funcionam com uma configuração não confiável.

ZK-STARKs

ZK-STARK é um acrônimo para Zero-Knowledge Scalable Transparent Argument of Knowledge. ZK-STARKs são semelhantes aos ZK-SNARKs, exceto que eles são:

  • Escalável: ZK-STARK é mais rápido do que ZK-SNARK na geração e verificação de provas quando o tamanho da testemunha é maior. Com provas STARK, os tempos de prova e verificação aumentam apenas ligeiramente à medida que a testemunha cresce (os tempos de prova e verificação da SNARK aumentam linearmente com o tamanho da testemunha).
  • Transparente: ZK-STARK baseia-se em aleatoriedade publicamente verificável para gerar parâmetros públicos para prova e verificação em vez de uma configuração confiável. Assim, são mais transparentes em comparação com ZK-SNARKs.

Os ZK-STARKs produzem provas maiores do que os ZK-SNARKs, o que significa que geralmente têm custos de verificação mais elevados. No entanto, existem casos (como provar conjuntos de dados grandes) em que os ZK-STARKs podem ser mais rentáveis do que os ZK-SNARKs.

Casos de uso para provas de conhecimento zero

Pagamentos anónimos

Os pagamentos com cartão de crédito são frequentemente visíveis para várias partes, incluindo o fornecedor de pagamentos, bancos e outras partes interessadas (por exemplo, autoridades governamentais). Embora a vigilância financeira tenha benefícios para identificar atividades ilegais, também mina a privacidade dos cidadãos comuns.

As criptomoedas destinavam-se a fornecer um meio para os utilizadores realizarem transações privadas, ponto a ponto. No entanto, a maioria das transações de criptomoedas são abertamente visíveis em blockchains públicos. As identidades dos utilizadores são frequentemente pseudónimas e podem ser intencionalmente ligadas a identidades do mundo real (por exemplo, incluindo endereços ETH em perfis do Twitter ou GitHub) ou podem ser associadas a identidades do mundo real usando análise de dados básica on e off-chain.

Existem “moedas de privacidade” específicas projetadas para transações completamente anônimas. Blockchains focadas na privacidade, como Zcash e Monero, protegem os detalhes da transação, incluindo endereços do remetente/destinatário, tipo de ativo, quantidade e o cronograma da transação.

Ao incorporar a tecnologia de conhecimento zero no protocolo, as redes blockchain focadas na privacidade permitem que os nós validem transações sem precisar acessar os dados da transação.

As provas de conhecimento zero também estão a ser aplicadas para anonimizar transações em blockchains públicos. Um exemplo é a Tornado Cash, um serviço descentralizado e não custodial que permite aos utilizadores realizar transações privadas no Ethereum. A Tornado Cash utiliza provas de conhecimento zero para obscurecer os detalhes da transação e garantir a privacidade financeira. Infelizmente, porque estas são ferramentas de privacidade "opt-in", estão associadas a atividades ilícitas. Para superar isso, a privacidade terá eventualmente de tornar-se o padrão nos blockchains públicos.

Proteção de identidade

Os sistemas atuais de gestão de identidade expõem informações pessoais a riscos. As provas de conhecimento zero podem ajudar os indivíduos a validar a identidade, protegendo detalhes sensíveis.

Provas de conhecimento zero são particularmente úteis no contexto de identidade descentralizada. A identidade descentralizada (também descrita como 'identidade soberana') dá ao indivíduo a capacidade de controlar o acesso a identificadores pessoais. Provar a sua cidadania sem revelar o seu NIF ou detalhes do passaporte é um bom exemplo de como a tecnologia de conhecimento zero permite a identidade descentralizada.

Autenticação

Usar serviços online requer comprovar sua identidade e direito de acessar essas plataformas. Isso frequentemente requer fornecer informações pessoais, como nomes, endereços de email, datas de nascimento, e assim por diante. Você também pode precisar memorizar senhas longas ou arriscar perder o acesso.

As provas de conhecimento zero, no entanto, podem simplificar a autenticação tanto para plataformas quanto para usuários. Uma vez que uma prova de ZK tenha sido gerada usando entradas públicas (por exemplo, dados que atestam a filiação do usuário à plataforma) e entradas privadas (por exemplo, os detalhes do usuário), o usuário pode simplesmente apresentá-la para autenticar sua identidade quando precisar acessar o serviço. Isso melhora a experiência para os usuários e liberta as organizações da necessidade de armazenar grandes quantidades de informações do usuário.

Computação verificável

A computação verificável é outra aplicação da tecnologia de conhecimento zero para melhorar os designs de blockchain. A computação verificável nos permite terceirizar o cálculo para outra entidade, mantendo resultados verificáveis. A entidade submete o resultado juntamente com uma prova que verifica que o programa foi executado corretamente.

A computação verificável é fundamental para melhorar a velocidade de processamento nas blockchains sem reduzir a segurança. Compreender isso requer conhecer as diferenças nas soluções propostas para dimensionar o Ethereum.

Soluções de escalabilidade on-chain, como o sharding, requerem uma extensa modificação da camada base da blockchain. No entanto, esta abordagem é altamente complexa e erros na implementação podem minar o modelo de segurança da Ethereum.

Soluções de escalabilidade fora da cadeianão requerem o redesenho do protocolo central do Ethereum. Em vez disso, eles dependem de um modelo de cálculo terceirizado para melhorar o throughput na camada base do Ethereum.

Aqui está como isso funciona na prática:

  • Em vez de processar cada transação, o Ethereum transfere a execução para uma cadeia separada.
  • Após o processamento das transações, a outra cadeia retorna os resultados a serem aplicados ao estado do Ethereum.

O benefício aqui é que o Ethereum não precisa fazer nenhuma execução e apenas precisa aplicar os resultados da computação terceirizada ao seu estado. Isso reduz a congestão da rede e também melhora a velocidade das transações (protocolos off-chain otimizam a execução mais rápida).

A cadeia precisa de uma forma de validar transações fora da cadeia sem as re-executar, caso contrário, o valor da execução fora da cadeia é perdido.

É aqui que entra em jogo a computação verificável. Quando um nó executa uma transação fora do Ethereum, submete uma prova de conhecimento zero para provar a correção da execução off-chain. Esta prova (chamada de

prova de validade) garante que uma transação é válida, permitindo que o Ethereum aplique o resultado ao seu estado—sem esperar que alguém o conteste.

Rollups de conhecimento zeroevalidiumssão duas soluções de dimensionamento off-chain que utilizam provas de validade para proporcionar escalabilidade segura. Estes protocolos executam milhares de transações off-chain e submetem provas para verificação no Ethereum. Esses resultados podem ser aplicados imediatamente uma vez que a prova é verificada, permitindo que o Ethereum processe mais transações sem aumentar a computação na camada base.

Reduzir subornos e colusão nas votações on-chain

Os esquemas de votação em blockchain têm muitas características favoráveis: são totalmente auditáveis, seguros contra ataques, resistentes à censura e livres de restrições geográficas. Mas mesmo os esquemas de votação on-chain não estão imunes ao problema da colusão.

Definida como "coordenando para limitar a competição aberta enganando, fraudando e enganando outros", a colusão pode assumir a forma de um ator malicioso influenciando a votação oferecendo subornos. Por exemplo, Alice pode receber um suborno de Bob para votar na opção B em uma cédula, mesmo que prefira a opção A.

Suborno e conluio limitam a eficácia de qualquer processo que utilize a votação como mecanismo de sinalização (especialmente onde os utilizadores podem provar como votaram). Isto pode ter consequências significativas, especialmente quando os votos são responsáveis por alocar recursos escassos.

Por exemplo, mecanismos de financiamento quadrático

(abre numa nova aba)

confiar em doações para medir a preferência por certas opções entre diferentes projetos de bens públicos. Cada doação conta como um “voto” para um projeto específico, sendo que os projetos que recebem mais votos recebem mais fundos do pool de correspondência.

Usar votação on-chain torna o financiamento quadrático suscetível à colusão: as transações em blockchain são públicas, portanto, os subornadores podem inspecionar a atividade on-chain de um subornado para ver como eles “votaram”. Dessa forma, o financiamento quadrático deixa de ser um meio eficaz de alocação de fundos com base nas preferências agregadas da comunidade.

Felizmente, soluções mais recentes como MACI (Infraestrutura Mínima contra Colusão) estão a utilizar provas de conhecimento zero para tornar a votação on-chain (por exemplo, mecanismos de financiamento quadrático) resistente a subornos e colusão. MACI é um conjunto de contratos inteligentes e scripts que permitem a um administrador central (chamado de "coordenador") agregar votos e contabilizar resultados sem revelar detalhes sobre como cada indivíduo votou. Ainda assim, é possível verificar que os votos foram contados corretamente ou confirmar que um determinado indivíduo participou na rodada de votação.

Como funciona o MACI com provas de conhecimento zero?

No início, o coordenador implementa o contrato MACI no Ethereum, após o que os utilizadores podem inscrever-se para votar (registando a sua chave pública no contrato inteligente). Os utilizadores emitem votos enviando mensagens encriptadas com a sua chave pública para o contrato inteligente (um voto válido deve ser assinado com a chave pública mais recente associada à identidade do utilizador, entre outros critérios). Posteriormente, o coordenador processa todas as mensagens uma vez que o período de votação termina, contabiliza os votos e verifica os resultados na cadeia de blocos.

No MACI, as provas de conhecimento zero são usadas para garantir a correção da computação, tornando impossível para o coordenador processar incorretamente votos e somar resultados. Isso é alcançado ao exigir que o coordenador gere provas de ZK-SNARK verificando que a) todas as mensagens foram processadas corretamente b) o resultado final corresponde à soma de todos os votos válidos.

Assim, mesmo sem compartilhar uma divisão de votos por usuário (como geralmente acontece), o MACI garante a integridade dos resultados calculados durante o processo de contagem. Esta funcionalidade é útil para reduzir a eficácia de esquemas básicos de colusão. Podemos explorar essa possibilidade usando o exemplo anterior de Bob subornando Alice para votar em uma opção:

  • Alice regista-se para votar enviando a sua chave pública para um contrato inteligente.
  • Alice concorda em votar na opção B em troca de um suborno de Bob.
  • Alice vota na opção B.
  • Alice envia secretamente uma transação criptografada para alterar a chave pública associada à sua identidade.
  • Alice envia outra mensagem (criptografada) para o contrato inteligente votando na opção A usando a nova chave pública.
  • Alice mostra a Bob uma transação que mostra que ela votou na opção B (o que é inválido, uma vez que a chave pública já não está associada à identidade de Alice no sistema)
  • Ao processar mensagens, o coordenador ignora o voto de Alice para a opção B e conta apenas o voto para a opção A. Assim, a tentativa de Bob de conspirar com Alice e manipular o voto na cadeia falha.

Usar o MACI requer confiar no coordenador para não conluio com subornadores ou tentar subornar os eleitores. O coordenador pode descriptografar mensagens de usuário (necessário para criar a prova), para que possam verificar com precisão como cada pessoa votou.

Mas nos casos em que o coordenador permanece honesto, MACI representa uma ferramenta poderosa para garantir a santidade da votação on-chain. Isso explica sua popularidade entre as aplicações de financiamento quadrático (por exemplo, clr.fund

(abre numa nova aba)

) que dependem muito da integridade das escolhas de voto de cada indivíduo.

Saiba mais sobre MACI

(abre numa nova aba)

.

Desvantagens de usar provas de conhecimento zero

Custos de hardware

A geração de provas de conhecimento zero envolve cálculos muito complexos, melhores realizados em máquinas especializadas. Como essas máquinas são caras, muitas vezes estão fora do alcance de indivíduos regulares. Além disso, as aplicações que desejam usar a tecnologia de conhecimento zero devem considerar os custos de hardware, o que pode aumentar os custos para os usuários finais.

Custos de verificação de prova

A verificação das provas também requer uma computação complexa e aumenta os custos de implementação da tecnologia de conhecimento zero em aplicações. Este custo é especialmente relevante no contexto da computação de prova. Por exemplo, os ZK-rollups pagam ~ 500.000 gas para verificar uma única prova ZK-SNARK no Ethereum, sendo que os ZK-STARKs requerem taxas ainda mais elevadas.

Assunções de confiança

Em ZK-SNARK, a String de Referência Comum (parâmetros públicos) é gerada uma vez e está disponível para reutilização por partes que desejam participar no protocolo de conhecimento zero. Os parâmetros públicos são criados através de uma cerimónia de configuração confiável, onde se assume que os participantes são honestos.

Mas na realidade, os utilizadores não têm forma de avaliar a honestidade dos participantes e têm que acreditar nos programadores. ZK-STARKs estão livres de pressupostos de confiança, uma vez que a aleatoriedade utilizada na geração da string é publicamente verificável. Entretanto, os investigadores estão a trabalhar em configurações não confiáveis para ZK-SNARKs para aumentar a segurança dos mecanismos de prova.

Ameaças da computação quântica

ZK-SNARK usa criptografia de curva elíptica

ECDSA) para criptografia. Embora o algoritmo ECDSA seja seguro por enquanto, o desenvolvimento de computadores quânticos poderia quebrar seu modelo de segurança no futuro.

ZK-STARK é considerado imune à ameaça da computação quântica, pois utiliza hashes resistentes a colisões para criptografia. Ao contrário dos pares de chaves público-privadas usadas na criptografia de curva elíptica, o hashing resistente a colisões é mais difícil para os algoritmos de computação quântica quebrarem.

Aviso legal:

  1. Este artigo é reproduzido a partir de [Ethereum]. Todos os direitos autorais pertencem ao autor original [Ethereum]. Se houver objeções a esta reimpressão, por favor entre em contato com o Gate Learnequipa e eles vão resolver rapidamente.
  2. Aviso de responsabilidade: As opiniões expressas neste artigo são exclusivamente as do autor e não constituem qualquer conselho de investimento.
  3. As traduções do artigo para outras línguas são feitas pela equipa Gate Learn. Salvo indicação em contrário, é proibido copiar, distribuir ou plagiar os artigos traduzidos.

O que são provas de conhecimento zero?

Principiante1/4/2024, 6:21:16 PM
Este artigo fornece uma prova detalhada de Provas de Conhecimento Zero (ZKP).

Um protocolo de conhecimento zero é um método pelo qual uma parte (o provador) pode provar a outra parte (o verificador) que algo é verdadeiro, sem revelar qualquer informação além do fato de que esta declaração específica é verdadeira.

As provas de conhecimento zero melhoraram ao longo dos anos e agora estão a ser utilizadas em várias aplicações do mundo real.

Por que precisamos de provas de conhecimento zero?

Provas de conhecimento zero representaram uma grande evolução na criptografia aplicada, pois prometeram melhorar a segurança da informação para indivíduos. Considere como você poderia provar uma reivindicação (por exemplo, "Eu sou cidadão do país X") para outra parte (por exemplo, um provedor de serviços). Você precisaria fornecer "evidências" para apoiar sua reivindicação, como um passaporte nacional ou carteira de motorista.

Mas existem problemas com esta abordagem, principalmente a falta de privacidade. As Informações Pessoalmente Identificáveis (PII) partilhadas com serviços de terceiros são armazenadas em bases de dados centrais, que são vulneráveis a ataques. Com o roubo de identidade a tornar-se um problema crítico, há apelos para meios de partilha de informações sensíveis mais protegidos da privacidade.

As provas de conhecimento zero resolvem esse problema ao eliminar a necessidade de revelar informações para provar a validade das reivindicações. O protocolo de conhecimento zero usa a declaração (chamada de 'testemunha') como entrada para gerar uma prova sucinta de sua validade. Essa prova fornece garantias sólidas de que uma declaração é verdadeira sem expor as informações usadas em sua criação.

Voltando ao nosso exemplo anterior, a única evidência que você precisa para comprovar sua reivindicação de cidadania é uma prova de conhecimento zero. O verificador só precisa verificar se certas propriedades da prova são verdadeiras para se convencer de que a declaração subjacente também é verdadeira.

Como funcionam as provas de conhecimento zero?

Uma prova de conhecimento zero permite que prove a veracidade de uma declaração sem partilhar o conteúdo da declaração ou revelar como descobriu a verdade. Para tornar isso possível, os protocolos de conhecimento zero baseiam-se em algoritmos que recebem alguns dados como entrada e devolvem 'verdadeiro' ou 'falso' como saída.

Um protocolo de conhecimento zero deve satisfazer os seguinte critérios:

  1. Completude: Se a entrada for válida, o protocolo de conhecimento zero sempre retorna 'verdadeiro'. Portanto, se a declaração subjacente for verdadeira e o provador e o verificador agirem honestamente, a prova pode ser aceita.
  2. Coerência: Se a entrada for inválida, é teoricamente impossível enganar o protocolo de conhecimento zero para retornar ‘verdadeiro’. Portanto, um provador mentiroso não pode enganar um verificador honesto a acreditar que uma afirmação inválida é válida (exceto com uma pequena margem de probabilidade).
  3. Zero-conhecimento: O verificador não aprende nada sobre uma declaração além de sua validade ou falsidade (eles têm “zero conhecimento” da declaração). Este requisito também impede o verificador de derivar a entrada original (o conteúdo da declaração) da prova.

Em forma básica, uma prova de conhecimento zero é composta por três elementos: testemunha, desafio e resposta.

  • Testemunha: Com uma prova de conhecimento zero, o provador quer provar o conhecimento de alguma informação oculta. A informação secreta é a “testemunha” da prova, e o conhecimento presumido da testemunha pelo provador estabelece um conjunto de perguntas que só podem ser respondidas por uma parte com conhecimento da informação. Assim, o provador inicia o processo de prova escolhendo aleatoriamente uma pergunta, calculando a resposta e enviando-a ao verificador.
  • Desafio: O verificador escolhe aleatoriamente outra pergunta do conjunto e pede ao provador que a responda.
  • Resposta: O provador aceita a pergunta, calcula a resposta e devolve-a ao verificador. A resposta do provador permite ao verificador verificar se o primeiro realmente tem acesso à testemunha. Para garantir que o provador não está a adivinhar às cegas e a obter as respostas corretas por acaso, o verificador escolhe mais perguntas para fazer. Ao repetir esta interação muitas vezes, a possibilidade de o provador fingir conhecimento da testemunha diminui significativamente até que o verificador esteja satisfeito.

O acima descreve a estrutura de uma 'prova interativa de conhecimento zero'. Os protocolos de conhecimento zero iniciais usavam prova interativa, onde verificar a validade de uma declaração exigia comunicação de ida e volta entre provadores e verificadores.

Um bom exemplo que ilustra como funcionam as provas interativas é o famoso de Jean-Jacques Quisquater.História da caverna de Ali Baba

(abre numa nova aba)

Na história, Peggy (a provadora) quer provar a Victor (o verificador) que ela sabe a frase secreta para abrir uma porta mágica sem revelar a frase.

Provas de conhecimento zero não interativas

Embora revolucionária, a prova interativa tinha utilidade limitada, uma vez que exigia que as duas partes estivessem disponíveis e interagissem repetidamente. Mesmo que um verificador estivesse convencido da honestidade de um provador, a prova não estaria disponível para verificação independente (calcular uma nova prova exigia um novo conjunto de mensagens entre o provador e o verificador).

Para resolver este problema, Manuel Blum, Paul Feldman e Silvio Micali sugeriram o primeiroprovas de conhecimento zero não interativas

(abre numa nova aba)

onde o provador e o verificador têm uma chave compartilhada. Isso permite que o provador demonstre seu conhecimento de algumas informações (ou seja, testemunha) sem fornecer as informações em si.

Ao contrário das provas interativas, as provas não interativas requerem apenas uma rodada de comunicação entre os participantes (provador e verificador). O provador passa a informação secreta a um algoritmo especial para calcular uma prova de conhecimento zero. Esta prova é enviada ao verificador, que verifica se o provador conhece a informação secreta usando outro algoritmo.

A prova não interativa reduz a comunicação entre o provador e o verificador, tornando as provas de conhecimento zero mais eficientes. Além disso, uma vez que uma prova é gerada, está disponível para qualquer outra pessoa (com acesso à chave compartilhada e algoritmo de verificação) verificar.

As provas não interativas representaram um avanço para a tecnologia de conhecimento zero e impulsionaram o desenvolvimento dos sistemas de provas utilizados hoje. Discutimos esses tipos de provas abaixo:

Tipos de provas de conhecimento zero

ZK-SNARKs

ZK-SNARK é um acrônimo para Argumento Não Interativo Sucinto de Conhecimento de Zero-Conhecimento. O protocolo ZK-SNARK tem as seguintes qualidades:

  • Zero-knowledge: Um verificador pode validar a integridade de uma declaração sem saber mais nada sobre a declaração. A única informação que o verificador tem sobre a declaração é se é verdadeira ou falsa.
  • Succinct: A prova de conhecimento zero é menor do que a testemunha e pode ser verificada rapidamente.
  • Não interativo: A prova é 'não interativa' porque o provador e o verificador apenas interagem uma vez, ao contrário das provas interativas que requerem múltiplas rondas de comunicação.
  • Argumento: A prova satisfaz o requisito de 'correção', portanto, a trapaça é extremamente improvável.
  • (De) Conhecimento: A prova de conhecimento zero não pode ser construída sem acesso à informação secreta (testemunha). É difícil, se não impossível, para um provador que não tem a testemunha calcular uma prova de conhecimento zero válida.

A 'chave partilhada' mencionada anteriormente refere-se a parâmetros públicos que o provador e verificador concordam em usar na geração e verificação de provas. A geração dos parâmetros públicos (coletivamente conhecidos como a String de Referência Comum (CRS)) é uma operação sensível devido à sua importância na segurança do protocolo. Se a entropia (aleatoriedade) usada na geração do CRS cair nas mãos de um provador desonesto, eles podem calcular provas falsas.

Computação multipartidária (MPC)

(abre numa nova aba)

é uma forma de reduzir os riscos na geração de parâmetros públicos. Múltiplas partes participam numa cerimônia de configuração confiável

(abre-se numa nova aba)

, onde cada pessoa contribui com alguns valores aleatórios para gerar o CRS. Desde que uma parte honesta destrua sua porção da entropia, o protocolo ZK-SNARK mantém a solidez computacional.

Configurações confiáveis exigem que os usuários confiem nos participantes na geração de parâmetros. No entanto, o desenvolvimento de ZK-STARKs permitiu protocolos de comprovação que funcionam com uma configuração não confiável.

ZK-STARKs

ZK-STARK é um acrônimo para Zero-Knowledge Scalable Transparent Argument of Knowledge. ZK-STARKs são semelhantes aos ZK-SNARKs, exceto que eles são:

  • Escalável: ZK-STARK é mais rápido do que ZK-SNARK na geração e verificação de provas quando o tamanho da testemunha é maior. Com provas STARK, os tempos de prova e verificação aumentam apenas ligeiramente à medida que a testemunha cresce (os tempos de prova e verificação da SNARK aumentam linearmente com o tamanho da testemunha).
  • Transparente: ZK-STARK baseia-se em aleatoriedade publicamente verificável para gerar parâmetros públicos para prova e verificação em vez de uma configuração confiável. Assim, são mais transparentes em comparação com ZK-SNARKs.

Os ZK-STARKs produzem provas maiores do que os ZK-SNARKs, o que significa que geralmente têm custos de verificação mais elevados. No entanto, existem casos (como provar conjuntos de dados grandes) em que os ZK-STARKs podem ser mais rentáveis do que os ZK-SNARKs.

Casos de uso para provas de conhecimento zero

Pagamentos anónimos

Os pagamentos com cartão de crédito são frequentemente visíveis para várias partes, incluindo o fornecedor de pagamentos, bancos e outras partes interessadas (por exemplo, autoridades governamentais). Embora a vigilância financeira tenha benefícios para identificar atividades ilegais, também mina a privacidade dos cidadãos comuns.

As criptomoedas destinavam-se a fornecer um meio para os utilizadores realizarem transações privadas, ponto a ponto. No entanto, a maioria das transações de criptomoedas são abertamente visíveis em blockchains públicos. As identidades dos utilizadores são frequentemente pseudónimas e podem ser intencionalmente ligadas a identidades do mundo real (por exemplo, incluindo endereços ETH em perfis do Twitter ou GitHub) ou podem ser associadas a identidades do mundo real usando análise de dados básica on e off-chain.

Existem “moedas de privacidade” específicas projetadas para transações completamente anônimas. Blockchains focadas na privacidade, como Zcash e Monero, protegem os detalhes da transação, incluindo endereços do remetente/destinatário, tipo de ativo, quantidade e o cronograma da transação.

Ao incorporar a tecnologia de conhecimento zero no protocolo, as redes blockchain focadas na privacidade permitem que os nós validem transações sem precisar acessar os dados da transação.

As provas de conhecimento zero também estão a ser aplicadas para anonimizar transações em blockchains públicos. Um exemplo é a Tornado Cash, um serviço descentralizado e não custodial que permite aos utilizadores realizar transações privadas no Ethereum. A Tornado Cash utiliza provas de conhecimento zero para obscurecer os detalhes da transação e garantir a privacidade financeira. Infelizmente, porque estas são ferramentas de privacidade "opt-in", estão associadas a atividades ilícitas. Para superar isso, a privacidade terá eventualmente de tornar-se o padrão nos blockchains públicos.

Proteção de identidade

Os sistemas atuais de gestão de identidade expõem informações pessoais a riscos. As provas de conhecimento zero podem ajudar os indivíduos a validar a identidade, protegendo detalhes sensíveis.

Provas de conhecimento zero são particularmente úteis no contexto de identidade descentralizada. A identidade descentralizada (também descrita como 'identidade soberana') dá ao indivíduo a capacidade de controlar o acesso a identificadores pessoais. Provar a sua cidadania sem revelar o seu NIF ou detalhes do passaporte é um bom exemplo de como a tecnologia de conhecimento zero permite a identidade descentralizada.

Autenticação

Usar serviços online requer comprovar sua identidade e direito de acessar essas plataformas. Isso frequentemente requer fornecer informações pessoais, como nomes, endereços de email, datas de nascimento, e assim por diante. Você também pode precisar memorizar senhas longas ou arriscar perder o acesso.

As provas de conhecimento zero, no entanto, podem simplificar a autenticação tanto para plataformas quanto para usuários. Uma vez que uma prova de ZK tenha sido gerada usando entradas públicas (por exemplo, dados que atestam a filiação do usuário à plataforma) e entradas privadas (por exemplo, os detalhes do usuário), o usuário pode simplesmente apresentá-la para autenticar sua identidade quando precisar acessar o serviço. Isso melhora a experiência para os usuários e liberta as organizações da necessidade de armazenar grandes quantidades de informações do usuário.

Computação verificável

A computação verificável é outra aplicação da tecnologia de conhecimento zero para melhorar os designs de blockchain. A computação verificável nos permite terceirizar o cálculo para outra entidade, mantendo resultados verificáveis. A entidade submete o resultado juntamente com uma prova que verifica que o programa foi executado corretamente.

A computação verificável é fundamental para melhorar a velocidade de processamento nas blockchains sem reduzir a segurança. Compreender isso requer conhecer as diferenças nas soluções propostas para dimensionar o Ethereum.

Soluções de escalabilidade on-chain, como o sharding, requerem uma extensa modificação da camada base da blockchain. No entanto, esta abordagem é altamente complexa e erros na implementação podem minar o modelo de segurança da Ethereum.

Soluções de escalabilidade fora da cadeianão requerem o redesenho do protocolo central do Ethereum. Em vez disso, eles dependem de um modelo de cálculo terceirizado para melhorar o throughput na camada base do Ethereum.

Aqui está como isso funciona na prática:

  • Em vez de processar cada transação, o Ethereum transfere a execução para uma cadeia separada.
  • Após o processamento das transações, a outra cadeia retorna os resultados a serem aplicados ao estado do Ethereum.

O benefício aqui é que o Ethereum não precisa fazer nenhuma execução e apenas precisa aplicar os resultados da computação terceirizada ao seu estado. Isso reduz a congestão da rede e também melhora a velocidade das transações (protocolos off-chain otimizam a execução mais rápida).

A cadeia precisa de uma forma de validar transações fora da cadeia sem as re-executar, caso contrário, o valor da execução fora da cadeia é perdido.

É aqui que entra em jogo a computação verificável. Quando um nó executa uma transação fora do Ethereum, submete uma prova de conhecimento zero para provar a correção da execução off-chain. Esta prova (chamada de

prova de validade) garante que uma transação é válida, permitindo que o Ethereum aplique o resultado ao seu estado—sem esperar que alguém o conteste.

Rollups de conhecimento zeroevalidiumssão duas soluções de dimensionamento off-chain que utilizam provas de validade para proporcionar escalabilidade segura. Estes protocolos executam milhares de transações off-chain e submetem provas para verificação no Ethereum. Esses resultados podem ser aplicados imediatamente uma vez que a prova é verificada, permitindo que o Ethereum processe mais transações sem aumentar a computação na camada base.

Reduzir subornos e colusão nas votações on-chain

Os esquemas de votação em blockchain têm muitas características favoráveis: são totalmente auditáveis, seguros contra ataques, resistentes à censura e livres de restrições geográficas. Mas mesmo os esquemas de votação on-chain não estão imunes ao problema da colusão.

Definida como "coordenando para limitar a competição aberta enganando, fraudando e enganando outros", a colusão pode assumir a forma de um ator malicioso influenciando a votação oferecendo subornos. Por exemplo, Alice pode receber um suborno de Bob para votar na opção B em uma cédula, mesmo que prefira a opção A.

Suborno e conluio limitam a eficácia de qualquer processo que utilize a votação como mecanismo de sinalização (especialmente onde os utilizadores podem provar como votaram). Isto pode ter consequências significativas, especialmente quando os votos são responsáveis por alocar recursos escassos.

Por exemplo, mecanismos de financiamento quadrático

(abre numa nova aba)

confiar em doações para medir a preferência por certas opções entre diferentes projetos de bens públicos. Cada doação conta como um “voto” para um projeto específico, sendo que os projetos que recebem mais votos recebem mais fundos do pool de correspondência.

Usar votação on-chain torna o financiamento quadrático suscetível à colusão: as transações em blockchain são públicas, portanto, os subornadores podem inspecionar a atividade on-chain de um subornado para ver como eles “votaram”. Dessa forma, o financiamento quadrático deixa de ser um meio eficaz de alocação de fundos com base nas preferências agregadas da comunidade.

Felizmente, soluções mais recentes como MACI (Infraestrutura Mínima contra Colusão) estão a utilizar provas de conhecimento zero para tornar a votação on-chain (por exemplo, mecanismos de financiamento quadrático) resistente a subornos e colusão. MACI é um conjunto de contratos inteligentes e scripts que permitem a um administrador central (chamado de "coordenador") agregar votos e contabilizar resultados sem revelar detalhes sobre como cada indivíduo votou. Ainda assim, é possível verificar que os votos foram contados corretamente ou confirmar que um determinado indivíduo participou na rodada de votação.

Como funciona o MACI com provas de conhecimento zero?

No início, o coordenador implementa o contrato MACI no Ethereum, após o que os utilizadores podem inscrever-se para votar (registando a sua chave pública no contrato inteligente). Os utilizadores emitem votos enviando mensagens encriptadas com a sua chave pública para o contrato inteligente (um voto válido deve ser assinado com a chave pública mais recente associada à identidade do utilizador, entre outros critérios). Posteriormente, o coordenador processa todas as mensagens uma vez que o período de votação termina, contabiliza os votos e verifica os resultados na cadeia de blocos.

No MACI, as provas de conhecimento zero são usadas para garantir a correção da computação, tornando impossível para o coordenador processar incorretamente votos e somar resultados. Isso é alcançado ao exigir que o coordenador gere provas de ZK-SNARK verificando que a) todas as mensagens foram processadas corretamente b) o resultado final corresponde à soma de todos os votos válidos.

Assim, mesmo sem compartilhar uma divisão de votos por usuário (como geralmente acontece), o MACI garante a integridade dos resultados calculados durante o processo de contagem. Esta funcionalidade é útil para reduzir a eficácia de esquemas básicos de colusão. Podemos explorar essa possibilidade usando o exemplo anterior de Bob subornando Alice para votar em uma opção:

  • Alice regista-se para votar enviando a sua chave pública para um contrato inteligente.
  • Alice concorda em votar na opção B em troca de um suborno de Bob.
  • Alice vota na opção B.
  • Alice envia secretamente uma transação criptografada para alterar a chave pública associada à sua identidade.
  • Alice envia outra mensagem (criptografada) para o contrato inteligente votando na opção A usando a nova chave pública.
  • Alice mostra a Bob uma transação que mostra que ela votou na opção B (o que é inválido, uma vez que a chave pública já não está associada à identidade de Alice no sistema)
  • Ao processar mensagens, o coordenador ignora o voto de Alice para a opção B e conta apenas o voto para a opção A. Assim, a tentativa de Bob de conspirar com Alice e manipular o voto na cadeia falha.

Usar o MACI requer confiar no coordenador para não conluio com subornadores ou tentar subornar os eleitores. O coordenador pode descriptografar mensagens de usuário (necessário para criar a prova), para que possam verificar com precisão como cada pessoa votou.

Mas nos casos em que o coordenador permanece honesto, MACI representa uma ferramenta poderosa para garantir a santidade da votação on-chain. Isso explica sua popularidade entre as aplicações de financiamento quadrático (por exemplo, clr.fund

(abre numa nova aba)

) que dependem muito da integridade das escolhas de voto de cada indivíduo.

Saiba mais sobre MACI

(abre numa nova aba)

.

Desvantagens de usar provas de conhecimento zero

Custos de hardware

A geração de provas de conhecimento zero envolve cálculos muito complexos, melhores realizados em máquinas especializadas. Como essas máquinas são caras, muitas vezes estão fora do alcance de indivíduos regulares. Além disso, as aplicações que desejam usar a tecnologia de conhecimento zero devem considerar os custos de hardware, o que pode aumentar os custos para os usuários finais.

Custos de verificação de prova

A verificação das provas também requer uma computação complexa e aumenta os custos de implementação da tecnologia de conhecimento zero em aplicações. Este custo é especialmente relevante no contexto da computação de prova. Por exemplo, os ZK-rollups pagam ~ 500.000 gas para verificar uma única prova ZK-SNARK no Ethereum, sendo que os ZK-STARKs requerem taxas ainda mais elevadas.

Assunções de confiança

Em ZK-SNARK, a String de Referência Comum (parâmetros públicos) é gerada uma vez e está disponível para reutilização por partes que desejam participar no protocolo de conhecimento zero. Os parâmetros públicos são criados através de uma cerimónia de configuração confiável, onde se assume que os participantes são honestos.

Mas na realidade, os utilizadores não têm forma de avaliar a honestidade dos participantes e têm que acreditar nos programadores. ZK-STARKs estão livres de pressupostos de confiança, uma vez que a aleatoriedade utilizada na geração da string é publicamente verificável. Entretanto, os investigadores estão a trabalhar em configurações não confiáveis para ZK-SNARKs para aumentar a segurança dos mecanismos de prova.

Ameaças da computação quântica

ZK-SNARK usa criptografia de curva elíptica

ECDSA) para criptografia. Embora o algoritmo ECDSA seja seguro por enquanto, o desenvolvimento de computadores quânticos poderia quebrar seu modelo de segurança no futuro.

ZK-STARK é considerado imune à ameaça da computação quântica, pois utiliza hashes resistentes a colisões para criptografia. Ao contrário dos pares de chaves público-privadas usadas na criptografia de curva elíptica, o hashing resistente a colisões é mais difícil para os algoritmos de computação quântica quebrarem.

Aviso legal:

  1. Este artigo é reproduzido a partir de [Ethereum]. Todos os direitos autorais pertencem ao autor original [Ethereum]. Se houver objeções a esta reimpressão, por favor entre em contato com o Gate Learnequipa e eles vão resolver rapidamente.
  2. Aviso de responsabilidade: As opiniões expressas neste artigo são exclusivamente as do autor e não constituem qualquer conselho de investimento.
  3. As traduções do artigo para outras línguas são feitas pela equipa Gate Learn. Salvo indicação em contrário, é proibido copiar, distribuir ou plagiar os artigos traduzidos.
Lancez-vous
Inscrivez-vous et obtenez un bon de
100$
!