zk-SNARK: Prova Inovadora de Conhecimento Zero e suas aplicações

intermediárioNov 28, 2023
A tecnologia zk-SNARK representa um avanço significativo nas áreas de proteção de privacidade e verificação criptografada. Não é apenas promissor no fornecimento de fortes garantias de privacidade, mas também prático no aumento da escalabilidade do blockchain e de várias outras aplicações.
zk-SNARK: Prova Inovadora de Conhecimento Zero e suas aplicações

Plano de fundo

A prova de conhecimento zero (ZKP) é uma tecnologia criptográfica proposta pela primeira vez por S. Goldwasser, S. Micali e C. Rackoff no início dos anos 1980 em um artigo intitulado The Knowledge Complexity Of Interactive Proof Systems. Neste artigo, foi conceituado como um modelo teórico para resolver o problema de verificação de afirmações matemáticas sem revelar as evidências. Este conceito ganhou atenção significativa na comunidade acadêmica, pois desafiou os limites das técnicas tradicionais de criptografia e forneceu uma nova abordagem para lidar com informações confidenciais.

Com o tempo, o ZKP evoluiu de um conceito teórico abstrato para protocolos concretos que podem ser integrados em diversas aplicações. Em 2010, Groth publicou um artigo intitulado Short Pairing-based Non-interactive Zero-Knowledge Arguments, que se tornou um trabalho seminal no desenvolvimento do zk-SNARK, uma solução importante no ZKP. A aplicação prática mais significativa do ZKP é o sistema de prova de conhecimento zero usado pela Z-cash em 2015, que alcançou proteção de privacidade para transações e valores. Posteriormente, o zk-SNARK combinou-se com contratos inteligentes, levando a uma gama mais ampla de aplicações.

Princípios Técnicos do zk-SNARK

Os princípios que o ZKP tradicional precisa seguir são os seguintes:

  • Completude: Se uma afirmação for verdadeira, um provador honesto pode convencer o verificador de sua veracidade.
  • Solidez: Se uma afirmação for falsa, qualquer provador fraudulento terá apenas uma pequena probabilidade de induzir o verificador a acreditar que a afirmação é verdadeira.
  • Conhecimento zero: se uma afirmação for verdadeira, o verificador não aprenderá nenhuma informação adicional além do fato de que a afirmação é verdadeira. Em outras palavras, o processo de verificação não revela nenhuma informação que possa ser usada para construir uma prova.

O princípio do ZKP pode ser entendido através de um exemplo simples: se eu precisar provar a A que tenho o número de telefone de B, não preciso informar diretamente o número de telefone de A B. Em vez disso, posso discar diretamente o número de telefone de B e, assim que a chamada for completada, posso provar que realmente tenho o número de telefone de B. Este processo não divulga as informações do número de B.

E o zk-SNARK atualiza ainda mais nesta base, com as seguintes características:

  • Conhecimento Zero: O verificador não pode obter nenhuma informação útil da prova.
  • Conciso: A prova é de tamanho pequeno (geralmente apenas algumas dezenas de bytes) e o tempo de verificação é curto (geralmente apenas alguns milissegundos).
  • Não interativo: O provador só precisa enviar a prova ao verificador uma vez, sem comunicação adicional.
  • Parâmetros confiáveis: tanto o provador quanto o verificador precisam usar uma string de referência comum (CRS) gerada por um terceiro confiável. O CRS pode conter algumas informações confidenciais e, se vazadas ou adulteradas, podem ameaçar a segurança do sistema.

No artigo de Groth, ele propôs um método não interativo de prova de conhecimento zero baseado em pares que transforma um problema computacional em um Programa Aritmético Quadrático (QAP) e, em seguida, constrói uma prova eficiente usando criptografia de curva elíptica e funções hash. Projetos posteriores do zk-SNARK geralmente envolvem quatro etapas:

  • Configuração: Realizada por um terceiro confiável, gera um CRS que inclui uma chave de prova (pk) para gerar provas e uma chave de verificação (vk) para verificar as provas. Este processo só precisa ser executado uma vez e o CRS pode ser reutilizado várias vezes.
  • Codificação do problema: O problema de computação f(x) = y é transformado em uma forma QAP A(x)·B(x) = C(x)·Z(x), onde A(x), B(x), C (x) são polinômios determinados pela estrutura do circuito de f, Z(x) é um polinômio fixo, x é um ponto escolhido aleatoriamente e y é a saída de f. Esta etapa pode ser realizada pelo provador ou verificador, ou pode ser realizada antecipadamente por terceiros.
  • Geração de Prova: Realizada pelo provador, utiliza pk, x, e a entrada w de f para gerar uma prova π para provar que eles conhecem aw que satisfaz f(w) = y, sem revelar o valor específico de w. Este processo envolve cálculos polinomiais, operações de curva elíptica e operações de função hash, gerando em última análise um π composto por vários pontos de curva elíptica e um valor hash.
  • Verificação da Prova: Realizada pelo verificador, usa vk, x, y e π para verificar se o provador realmente conhece aw que satisfaz f(w) = y. Este processo também envolve cálculos polinomiais, operações de curva elíptica e operações de função hash, resultando em um valor booleano que indica a validade da prova.

Para ajudar a entender, vamos considerar um exemplo simples: suponha que você tenha um mapa do tesouro que possa guiá-lo até a localização exata do tesouro enterrado. Você quer provar a alguém que conhece a localização do tesouro sem revelar o conteúdo do mapa ou a localização real do tesouro. Se você usar a tecnologia zk-SNARK, precisará criar um quebra-cabeça complexo do mapa do tesouro. Você seleciona uma pequena peça do quebra-cabeça (uma prova) e mostra para a pessoa, o que a convence de que você sabe como o quebra-cabeça completo se encaixa, ou seja, a localização do tesouro, sem ver o quebra-cabeça inteiro. No entanto, para conseguir isso, você precisará obter marcações especiais de uma gráfica confiável, que sirvam como prova de que a peça do quebra-cabeça é genuína.

Por que precisamos do zk-SNARK?

A abordagem tradicional para provas de conhecimento zero envolve métodos de prova interativos, onde um provador pergunta repetidamente a um verificador “sim ou não?” perguntas até que uma resposta correta seja alcançada. Este processo é ineficiente. No entanto, o zk-SNARK elimina a necessidade de interações repetidas ao obter um CRS de um terceiro confiável. Todos os provadores podem comparar diretamente o CRS para determinar a veracidade. Isso melhora muito a eficiência das provas de conhecimento zero.

Além disso, zk-SNARK oferece as seguintes vantagens:

  • Proteção de privacidade: zk-SNARK permite que um provador demonstre conhecimento ou cumprimento de certas condições a um verificador sem revelar qualquer informação privada. Isto é particularmente útil em cenários que envolvem dados confidenciais ou privados, como autenticação de identidade, votação anônima e transações privadas.
  • Escalabilidade: zk-SNARK compacta problemas computacionais complexos em provas pequenas e rápidas, reduzindo a carga computacional e os requisitos de armazenamento para verificadores. Isso é benéfico em cenários que exigem verificação e armazenamento eficientes de grandes quantidades de dados, como computação em nuvem, escalabilidade de blockchain e computação verificável.
  • Segurança: zk-SNARK é baseado em problemas matematicamente difíceis, como o problema do logaritmo discreto e o problema do mapeamento bilinear, que fornecem alta segurança. Sob a suposição de computação não quântica, a menos que um terceiro confiável vaze ou adultere o CRS, é impossível para um provador falsificar uma prova ou para um verificador falsificar um resultado de verificação.

Aplicações do mundo real do zk-SNARK

A primeira aplicação do zk-SNARK é o Zcash, que permite aos usuários realizar transações totalmente anônimas, ocultando informações como remetentes, destinatários e valores usando o zk-SNARK. No espaço Web3 atual, a tecnologia zk-SNARK desempenha um papel significativo na escalabilidade do blockchain e no gerenciamento de reservas cambiais.

Escalabilidade Blockchain

Devido ao mecanismo de consenso e aos requisitos de segurança do blockchain, seu rendimento e eficiência são bastante limitados. Para resolver esse problema, uma solução comum é usar a tecnologia Layer2, que constrói uma camada adicional no topo do blockchain para migrar um grande número de transações ou cálculos da cadeia principal (Layer1) para a Layer2, melhorando assim o desempenho e a usabilidade do sistema. .

zk-SNARK desempenha um papel importante nesta solução, pois pode comprimir as transações ou cálculos na Camada2 em uma prova pequena e rápida, que é então submetida para verificação na cadeia principal, garantindo a correção e consistência da Camada2. Atualmente, existem duas soluções principais de Layer2 baseadas em zk-SNARK: ZK-rollup e Validium.

  • ZK-rollup: Esta solução armazena todos os dados de estado na cadeia principal, mas usa provas para verificar a validade das transições de estado. Isto garante a disponibilidade e segurança dos dados da Camada 2, mas aumenta a carga de armazenamento na cadeia principal. Por exemplo, zkSync armazena dados de estado na cadeia principal Ethereum e garante a validade das transições de estado através de provas de conhecimento zero. Projetos semelhantes incluem Polygon zkEVM e Scroll.
  • Validium: Esta solução armazena todos os dados de estado na Layer2 ou outros terceiros confiáveis, e utiliza apenas provas para verificar a validade das transições de estado, enviando as provas para a cadeia principal. Isto reduz a carga de armazenamento na cadeia principal, mas pode diminuir a disponibilidade e a segurança dos dados da Camada2. A DeversiFi utiliza a tecnologia Validium para manter a velocidade e a eficiência das transações da camada 2, garantindo a privacidade dos dados. Loopring fornece um modo Validium para aliviar a pressão de armazenamento na cadeia principal.

Fundos de reserva em bolsas

Devido à volatilidade e incerteza do mercado de criptomoedas, muitas bolsas precisam deter uma certa quantidade de fundos de reserva para fazer face a potenciais riscos ou exigências. No entanto, estes fundos de reserva muitas vezes carecem de transparência e fiabilidade, deixando os utilizadores incertos sobre se a bolsa tem realmente fundos de reserva suficientes para salvaguardar os seus activos.

O zk-SNARK pode fornecer uma solução nesse sentido, permitindo que as bolsas provem aos usuários ou órgãos reguladores que possuem uma quantidade e valor adequados de fundos de reserva, sem revelar detalhes ou localizações específicas de ativos.

Um exemplo típico é Gate.io, que utiliza uma combinação de árvores zk-SNARK e Merkle. Eles criptografam os dados do usuário e geram provas de fundos de reserva de 100 tokens diferentes usando circuitos restritos para demonstrar sua capacidade de solvência de 100%.

Fonte: https://www.gate.io/proof-of-reserves

Leitura adicional: Como zk-SNARK melhora a prova de reservas Gate.io

Além dos aplicativos Web3, o zk-SNARK também pode ser usado em domínios não-blockchain, como:

  • Autenticação de identidade: zk-SNARK permite aos usuários provar a posse de certos atributos ou qualificações de identidade a terceiros sem revelar qualquer informação pessoal, como idade, nacionalidade, escolaridade, etc. Isto é útil em cenários que exigem autenticação ou autorização de identidade, como compras online, educação online, assinaturas digitais, etc.
  • Votação Eletrônica: zk-SNARK permite que os usuários comprovem sua participação em determinadas atividades de votação e conformidade com protocolos ou regras específicas a terceiros, sem revelar qualquer conteúdo ou metadados de votação. Isto é benéfico em cenários que exigem protecção da privacidade e segurança do voto, tais como eleições democráticas, governação comunitária, tomada de decisões públicas, etc.

Limitações e desafios técnicos

Na seção anterior, apresentamos os princípios técnicos do zk-SNARK, que mencionam que o zk-SNARK melhora a eficiência da prova ao encontrar um terceiro confiável para gerar CRS. No entanto, isso também leva a algumas limitações e desafios inerentes ao zk-SNARK.

  • Parâmetros confiáveis: zk-SNARK requer um CRS gerado por terceiros confiáveis, que pode conter informações confidenciais. Se vazado ou adulterado, pode comprometer a segurança do sistema. Para resolver esta questão, alguns projetos adotaram a abordagem de Computação Multipartidária (MPC) para gerar o CRS, onde múltiplos participantes contribuem conjuntamente para o processo de geração e destroem as suas informações secretas. No entanto, esta abordagem ainda enfrenta desafios como a integridade dos participantes, custos de comunicação e dificuldades de coordenação.
  • Universalidade: Atualmente, zk-SNARK só pode ser aplicado a problemas computacionais específicos, como QAP ou R1CS, e não pode ser aplicado a problemas computacionais arbitrários. Para resolver esta limitação, alguns projetos exploraram o uso de Circuitos Gerais (GC) ou Prova Recursiva Geral (GRS) para estender a aplicabilidade do zk-SNARK. No entanto, esta abordagem traz vantagens como aumento do tamanho da prova, diminuição da eficiência e aumento da complexidade.
  • Verificabilidade: Embora zk-SNARK garanta que o provador não vaze nenhuma informação privada, ele não garante que o provador não trapaceará ou enganará o verificador. Para resolver esse problema, alguns projetos introduziram Funções Aleatórias Verificáveis (VRF) ou Funções de Atraso Verificáveis (VDF) para melhorar a integridade do provador. No entanto, esta abordagem também aumenta a complexidade e a sobrecarga do sistema.

Em resumo, existem várias abordagens para resolver as limitações inerentes do zk-SNARK.

Cenários de aplicações futuras

zk-SNARK, como tecnologia criptográfica inovadora, possui amplos cenários de aplicação futura, especialmente na área de privacidade:

  • Contratos inteligentes de privacidade: zk-SNARK permite que os usuários provem a terceiros que executaram determinados contratos inteligentes e obtiveram o resultado correto sem revelar qualquer lógica ou estado do contrato. Isto é particularmente útil em cenários que envolvem segredos comerciais ou regras sensíveis, tais como gestão da cadeia de abastecimento, reclamações de seguros, proteção de direitos de autor, etc.1
  • Computação que preserva a privacidade: zk-SNARK permite que os usuários provem a terceiros que realizaram determinadas tarefas computacionais e obtiveram os resultados corretos sem revelar quaisquer dados de entrada ou saída. Isto é aplicável em cenários que envolvem dados confidenciais ou privados, como diagnóstico médico, análise de dados, aprendizado de máquina, etc.
  • Comunicação que preserva a privacidade: zk-SNARK permite que os usuários provem a terceiros que se envolveram em determinadas atividades de comunicação e cumpriram determinados protocolos ou regras sem revelar qualquer conteúdo ou metadados de comunicação. Isto é benéfico em cenários onde a privacidade ou segurança da comunicação precisa ser protegida, como mensagens instantâneas, redes sociais, e-mail, etc.

Conclusão

A tecnologia zk-SNARK representa um avanço significativo nas áreas de proteção de privacidade e verificação criptografada. Não é apenas promissor no fornecimento de fortes garantias de privacidade, mas também prático no aumento da escalabilidade do blockchain e de várias outras aplicações. Apesar da existência de desafios e limitações técnicas, por meio de pesquisa e inovação contínuas, esperamos que o zk-SNARK continue evoluindo, otimizando os sistemas existentes e inspirando novos modelos de aplicativos para impulsionar o avanço da proteção de privacidade e da tecnologia de criptografia. Com a maturidade da tecnologia e a crescente ênfase na privacidade dos dados na sociedade, o zk-SNARK tem potencial para se tornar uma ferramenta indispensável na era digital, capacitando os utilizadores com maior controlo sobre as suas informações e promovendo interações digitais seguras e transparentes.

Autor: Wayne
Übersetzer: Sonia
Rezensent(en): KOWEI、Piccolo、Elisa、Ashley He、Joyce
* Die Informationen sind nicht als Finanzberatung gedacht und stellen auch keine Empfehlung irgendeiner Art dar, die von Gate.io angeboten oder unterstützt wird.
* Dieser Artikel darf ohne Bezugnahme auf Gate.io nicht reproduziert, übertragen oder kopiert werden. Zuwiderhandlung ist eine Verletzung des Urheberrechtsgesetzes und kann gerichtlich verfolgt werden.
Jetzt anfangen
Registrieren Sie sich und erhalten Sie einen
100
-Euro-Gutschein!
Benutzerkonto erstellen