Este artigo inclui o seguinte: 1. O que é uma prova de conhecimento zero? 2. Por que precisamos de provas de conhecimento zero? 3. Cenários de aplicação da prova de conhecimento zero. 4. Como funcionam as provas de conhecimento zero. 5. Classificação e casos de aplicação de provas de conhecimento zero. 6. Falhas de provas de conhecimento zero.
PARTE.01
O que é a Prova de Conhecimento Zero
**A prova de conhecimento zero (Zero-Knowledge Proof) foi proposta por S.Goldwasser, S.Micali e C.Rackoff no início dos anos 80. Refere-se à capacidade do provador de convencer o verificador de que uma determinada afirmação está correta sem fornecer nenhuma informação útil ao verificador. **
Para dar um exemplo simples, Puff disse que é chef e pode cozinhar pratos chineses, coreanos e italianos. Minha mãe expressou descrença porque eu não havia preparado uma única refeição em casa. Então, como posso provar que posso cozinhar neste momento?
Posso fazer com que minha mãe me observe terminar uma refeição na cozinha e provar que realmente sei cozinhar. Mas não quero que minha mãe me veja fazendo bagunça na cozinha enquanto cozinho, ou serei importunado de novo, então o que devo fazer? Fui para a cozinha sozinha, e meus pais estavam esperando do lado de fora. Depois que terminei de cozinhar e fiz as malas, trouxe a louça. Isso ainda prova que sei cozinhar. Quanto aos ingredientes que usei, que temperos coloquei e como a cozinha ficou bagunçada durante o processo, não preciso disso. Contanto que minha mãe saiba que posso cozinhar uma refeição, isso provará que não sou mentindo.
Simplificando: as provas de conhecimento zero estão tentando estabelecer confiança entre duas partes com o mínimo de informações trocadas. Sem revelar mais informações, uma parte (o provador, o provador) pode provar à outra parte (o verificador, o verificador) que uma coisa é verdadeira.
PARTE.02
Por que você precisa de prova de conhecimento zero
Proteger dados privados
Os fornecedores desonestos desejam coletar o máximo possível de dados do usuário, e alguns dos recibos que não têm nada a ver com seus negócios também pedem permissões aos usuários (realmente os odeio). Eles colocam as informações de identidade pessoal (PII) coletadas do usuário em um banco de dados centralizado. Esses bancos de dados são muito vulneráveis a ataques. Uma vez atacados, as informações de identidade pessoal vazarão, o que levará a vários problemas de fraude.
Autenticação
Ao usar o site, o usuário pode provar ao site que possui uma chave privada, ou sabe uma resposta que só ele sabe.O site não precisa saber a chave, mas pode confirmar a identidade do usuário por meio de prova de conhecimento zero. Por meio do armazenamento descentralizado, o servidor pode provar aos usuários que os dados são preservados adequadamente e não vazam.
Compressão de computação e expansão de blockchain
Na arquitetura de bloco tradicional, o mesmo cálculo é repetido várias vezes, como verificação de assinatura, verificação de validade de transação, execução de contrato inteligente e outros locais, porque com a prova de cálculo, o mesmo cálculo não precisa Repetido muitas vezes, o processo de cálculo pode ser provado comprimido pela tecnologia de conhecimento zero.
**A prova de conhecimento zero realmente resolve a confiança dos dados, realiza a proteção de dados privados e faz com que o blockchain realmente realize o conceito de máquinas confiáveis. **
PARTE.03
Cenário de aplicação de prova de conhecimento zero
**Os principais cenários de aplicação da prova de conhecimento zero são: pagamento anônimo, prova de identidade, cálculo verificável e votação anônima. **
Pagamento anônimo
As transações de criptomoeda são publicamente visíveis na cadeia pública. Os usuários realizam transações anonimamente, mas também estão vinculados a identidades do mundo real (por exemplo, incluindo endereços ETH em seus perfis do Twitter ou GitHub), ou suas identidades do mundo real podem ser obtidas por meio de análise de dados on-chain e off-chain.
Existem "moedas de privacidade" específicas projetadas para transações completamente anônimas. Os exemplos incluem Zcash e Monero, que mascaram detalhes da transação, incluindo endereços do remetente/destinatário, tipo de ativo, valor e cronograma da transação. Ao incorporar técnicas de conhecimento zero em protocolos, as redes blockchain com foco na privacidade permitem que os nós verifiquem as transações sem ter acesso aos dados da transação.
Provas de conhecimento zero também foram aplicadas a transações anônimas em blockchains públicos. Como o Tornado Cash, um serviço descentralizado sem custódia que permite aos usuários realizar transações privadas no Ethereum. O Tornado Cash usa provas de conhecimento zero para ofuscar os detalhes da transação e garantir a privacidade financeira.
ID pessoal
Com a premissa de não revelar informações de identidade específicas, um certificado de identidade específico é emitido. Por exemplo, o uso de serviços online exige a comprovação da identidade do usuário e o direito de acesso a essas plataformas. Isso geralmente requer o fornecimento de informações pessoais, como nome, endereço de e-mail, data de nascimento, etc.
As provas de conhecimento zero podem simplificar a autenticação de plataformas e usuários. As provas ZK são geradas usando entradas públicas (por exemplo, dados que comprovam que o usuário é um membro da plataforma) e entradas privadas (por exemplo, detalhes do usuário), que os usuários podem simplesmente apresentar para verificar sua identidade quando precisam acessar os serviços. Por exemplo, para comprovar se o usuário é maior de idade ou não, não há a necessidade de emissão dos dados da carteira de identidade, nem do ano de nascimento específico, mas apenas a constatação se o usuário tem ou não dezoito anos.
Cálculo verificável
Quando o dispositivo do usuário não puder suportar a computação necessária ou o custo da computação local for muito alto, serviços de terceiros serão considerados. Esses serviços de terceiros podem retornar resultados de saída de maneira rápida e barata aos usuários (como o serviço oracle da Chainlink). As provas de conhecimento zero neste cenário permitem que provedores de energia de computação de terceiros produzam provas de integridade computacional para garantir que os resultados de saída recebidos pelos usuários estejam corretos.
Votação Anônima
Sob a premissa de não revelar a identidade específica, a identidade do usuário é comprovada e a autoridade de voto é obtida para concluir a votação.
PARTE.04
Como funcionam as provas de conhecimento zero
Provas de conhecimento zero foram propostas pela primeira vez por Shafi Goldwasser e Silvio Micali, do MIT, em um artigo de 1985 intitulado "Conhecimento Complexidade de Sistemas de Provas Interativas". O autor mencionou no artigo que é possível para um provador convencer um verificador da autenticidade dos dados sem revelar os dados específicos. A prova de conhecimento zero pode ser interativa, ou seja, o provador tem que provar a autenticidade dos dados uma vez para cada verificador; também pode ser não interativa, ou seja, o provador cria uma prova, e quem usar essa prova pode ser verificado. Atualmente, existem muitas implementações de provas de conhecimento zero, como zk-SNARKS, zk-STARKS, PLONK e Bulletproofs. Cada método tem suas próprias vantagens e desvantagens em termos de tamanho da prova, tempo do provador e tempo de verificação.
A prova de conhecimento zero tem três características básicas, a saber:
Integridade: Se a afirmação for verdadeira, o verificador honesto pode confiar que o provador honesto tem as informações corretas.
Confiabilidade: Se a afirmação for falsa, nenhum provador desonesto pode convencer um verificador honesto de que ele possui a informação correta.
Conhecimento zero: Se a afirmação for verdadeira, o verificador não sabe nada, exceto que a afirmação é verdadeira do provador.
Em resumo, para criar uma prova de conhecimento zero, o verificador precisa fazer o provador executar uma sequência de operações que o provador só pode executar corretamente se conhecer as informações subjacentes. Se o provador enganar um resultado, é muito provável que o verificador encontre e prove seu erro na verificação.
PARTE.05
Classificação de provas de conhecimento zero
A prova de conhecimento zero pode ser dividida em "prova interativa de conhecimento zero" e "prova não interativa de conhecimento zero" de acordo com o método de interação.
Prova interativa de conhecimento zero
O provador e o verificador precisam interagir várias vezes, o verificador continuará a fazer perguntas para desafiar o provador e o provador continuará a responder a esses desafios até que o verificador esteja convencido.
Prova interativa de conhecimento zero - Jogo daltônico
Alice é daltônica, mas Bob não é daltônico. Bob tem duas bolas do mesmo tamanho e forma, mas as cores dessas duas bolas são diferentes. Uma bola é azul e a outra bola é vermelha. Como Alice é daltônica, então Alice não consegue dizer se as duas bolas são iguais, Bob precisa provar para Alice que as duas bolas são diferentes. Aqui, Alice é chamada de verificadora. Ela precisa verificar se a afirmação de Bob está correta ou não. Bob é chamada de provadora. Ele precisa provar sua afirmação (são duas bolas com cores diferentes). No caso das cores de duas bolas, prove a Alice que as cores das duas bolas são diferentes, o que é consistente com a definição de prova de conhecimento zero.
Alice pega duas bolas na frente de Bob, a bola azul na mão esquerda e a bola vermelha na mão direita, e então coloca as duas mãos atrás das costas para que Bob não possa ver a bola na mão de Alice, e Alice troca aleatoriamente as bolas nas mãos esquerda e direita atrás das costas , após a troca ser concluída, Alice estende a mão e pergunta a Bob se as duas bolas trocaram de posição. Se Bob pode ver a cor da bola, toda vez que Alice muda de posição da bola, Bob pode responder corretamente à pergunta de Alice.
Pela primeira vez, Alice trocou secretamente a posição da bola em sua mão, e então Alice perguntou a Bob se ela trocou a posição da bola. Se Bob respondeu Sim, então Alice tem 50% de probabilidade de que Bob possa distinguir a cor de as duas bolas, porque Bob Há 1/2 de chance de acertar, então Alice pode tentar novamente. Se Bob responder Não, Alice pode ter certeza de que Bob não consegue distinguir as cores das duas bolas.
Na segunda vez, Alice não troca as posições das bolas em suas mãos, e então Alice pergunta a Bob se ele trocou as posições das bolas. Se Bob responder Não, então Alice tem 75% de probabilidade de acreditar que Bob pode distinguir as cores das duas bolas.
Após a primeira iteração, Alice pode dizer que a afirmação feita por Bob tem 50% de probabilidade de ser verdadeira. Se Bob responder corretamente na segunda vez, Alice pode dizer que a afirmação de Bob é verdadeira com uma probabilidade de 75%. Após a terceira iteração, será de 87,5%. Se Bob passou no teste n vezes consecutivas, Alice tem uma probabilidade de 1-(1/2)^n e pode pensar que o que Bob disse é verdade, e que as duas bolas são de fato vermelhas e azuis.
A prova interativa de conhecimento zero é um método de verificação baseado em probabilidade. O verificador faz perguntas ao provador com base em certa aleatoriedade. Se o provador puder dar a resposta correta, isso significa que o provador tem uma alta probabilidade de ter todo o seu "conhecimento reivindicado ". A prova de conhecimento zero não é uma prova no sentido matemático, porque tem uma pequena probabilidade de erro, e o provador enganoso pode enganar o verificador por meio de declarações falsas. Em outras palavras, as provas de conhecimento zero são provas probabilísticas em vez de provas determinísticas, mas existem técnicas que podem reduzir os erros a valores insignificantes.
Essa abordagem interativa tem algumas limitações:
Cada verificação requer todo um processo demorado.
Tanto o provador quanto o verificador precisam estar presentes ao mesmo tempo, seja online ou presencial.
Apenas um verificador pode ser confiável. Se vários verificadores forem confiáveis, cada verificador precisa passar por um processo de comprovação.
PROVA NÃO INTERATIVA DE CONHECIMENTO ZERO
As provas interativas de conhecimento zero exigem que duas partes estejam prontamente disponíveis e interajam repetidamente. Mesmo que o verificador esteja confiante de que o provador é honesto, a prova não pode ser usada para verificação independente (computar uma nova prova requer um novo conjunto de mensagens entre o provador e o verificador).
Para resolver os problemas enfrentados pelas provas interativas de conhecimento zero, surgiram as provas não interativas de conhecimento zero. Manuel Blum, Paul Feldman e Silvio Micali propuseram as primeiras provas interativas de conhecimento zero - onde o provador e o verificador compartilham um segredo. Isso permite que um provador prove seu conhecimento de algumas informações sem fornecer as informações em si.
Prova de conhecimento zero não interativa --- jogo de Sudoku
Sudoku é um jogo matemático originado na Suíça no século 18. É um jogo de lógica que utiliza papel e caneta para realizar cálculos. Os jogadores precisam deduzir os números de todos os espaços restantes com base nos números conhecidos no tabuleiro 9 × 9 e verificar se os números em cada linha, cada coluna e cada palácio de linha grossa (3*3) contêm 1- 9. repita.
Para provar a Bob que ela resolveu um quebra-cabeça de Sudoku, Alice cria uma máquina inviolável para isso. Alice coloca a resposta do Sudoku gerada na máquina, e a máquina pode enviar uma prova para Bob. A máquina de Alice segue o seguinte protocolo publicamente verificável: primeiro, Alice coloca o quebra-cabeça original não resolvido do Sudoku na máquina e as três cartas do quebra-cabeça do Sudoku viradas para cima. Em seguida, Alice coloca sua resposta voltada para baixo na célula correspondente da máquina, colocando também três cartas em cada célula. Finalmente, Bob obtém a prova da máquina e a máquina devolve 27 sacolas para Bob:
A máquina tira 9 cartas de cada fila de Sudoku, mistura-as separadamente e coloca-as num saco, são 9 filas no total, e usa 9 sacos; a máquina tira 9 cartas de cada fila de Sudoku, mistura-as e coloca-os em um saco, são 9 colunas no total, e 9 sacos são usados; a máquina tira os cartões em cada palácio de linha grossa (3*3) no Sudoku, mistura-os e coloca-os em um saco, um total de 9, use até 9 sacos;
Bob verifica cada uma das 27 sacolas individualmente e, se as cartas em cada sacola contiverem os números de 1 a 9 e nenhum dos números estiver faltando ou repetido, Bob pode confirmar que Alice realmente resolveu o Sudoku e que Bob não o fez. quaisquer números da máquina.Qualquer conhecimento sobre a solução do Sudoku pode ser obtido a partir da prova devolvida, porque os dados devolvidos pela máquina à bolsa de Bob são embaralhados aleatoriamente.
Provas não interativas de conhecimento zero superam algumas das deficiências das provas interativas de conhecimento zero, não requerem longas interações online, podem ser confiáveis para muitas pessoas (ou mesmo para todos), e a prova é sempre válida, mas máquinas e programas adicionais podem ser necessários para determinar a ordem experimental. Por exemplo, no caso do Sudoku, cabe ao programa decidir qual coluna ou linha verificar. A sequência de verificação deve ser mantida em segredo, caso contrário o verificador pode passar na verificação sem saber o real "conhecimento".
Prova interativa de conhecimento zero VS prova não interativa de conhecimento zero
Cada verificação de uma prova interativa requer uma nova rodada de comunicação, e uma prova não interativa requer apenas uma rodada de comunicação entre os participantes (provador e verificador). O provador passa as informações secretas para um algoritmo especial para calcular a prova de conhecimento zero. Essa prova é enviada ao verificador, que usa outro algoritmo para verificar se o provador conhece o segredo.
As provas não interativas reduzem a comunicação entre o provador e o verificador, tornando as provas ZK mais eficientes. Além disso, uma vez que uma prova é gerada, ela pode ser verificada por qualquer outra pessoa (com acesso ao segredo compartilhado e ao algoritmo de verificação).
**PARTE.**06
Soluções técnicas e aplicações de prova de conhecimento zero
A tecnologia de conhecimento zero permite que os desenvolvedores não apenas aproveitem a segurança de blockchains subjacentes, como Ethereum, mas também melhorem o rendimento e a velocidade das transações para dApps e, ao mesmo tempo, coloquem as informações pessoais dos usuários fora da cadeia para proteger a privacidade do usuário. As transações serão empacotadas e carregadas na cadeia para reduzir o custo de uso para os usuários finais. Por fim, os projetos podem aproveitar esses recursos para criar dApps avançados que não apenas rivalizam com os sistemas Web2 em desempenho, mas também mantêm os benefícios de descentralização do Web3.
(Fonte da imagem: Chainlink)
Na camada 2, o zk-rollup agrupará várias transações e as publicará na blockchain da camada 1, além de publicar uma prova de conhecimento zero para verificar a validade do cálculo. As provas postadas na cadeia também são chamadas de "provas de validade". **A tecnologia de prova de validade é dividida em dois tipos: SNARKs e STARKs. **
zk-SNARs
O nome completo do SNARK é "argumento sucinto não interativo de conhecimento zero sobre o conhecimento" (prova sucinta não interativa de conhecimento zero). Esta é uma prova criptográfica de que o arquivo é pequeno e facilmente verificável. Ele gera uma prova criptográfica usando uma curva elíptica que assume que o logaritmo discreto de um elemento de curva elíptica aleatória não pode ser encontrado a partir de um ponto base público. O custo de cálculo da curva elíptica é menor do que a função hash do STARK, portanto o custo do gás do protocolo SNARK é menor.
O nome completo do STARK é "zero-conhecimento escalável transparente argumento de conhecimento" (zero-conhecimento escalável, prova de conhecimento transparente). Essa prova criptográfica quase não requer interação entre o provador e o verificador. A maior vantagem dos STARKs sobre os SNARKs é que o tempo de prova é menor e é mais fácil de expandir. Além disso, como os STARKs usam uma função hash, eles também são resistentes a ataques quânticos.
Vale ressaltar que o inventor dos STARKs é Eli Ben-Sasson, co-fundador da StarkWare, equipe que também desenvolveu StarkEx e StarkNet.
Dependendo do sistema de prova, o processo de geração de prova de conhecimento zero é diferente. Mas, no final, você enfrentará problemas difíceis: multiplicação de vetores de grandes números (campos ou grupos), especialmente multiplicação multiescalar (MSM) com bases variáveis e fixas, ou transformada rápida de Fourier (FFT) e FFT inversa.
Ambos MSM e FFT são operações lentas. Em um sistema em que existem FFT e MSM, cerca de 70% do tempo de geração de prova é gasto em MSM e 30% em FFT. A aceleração de hardware é necessária para implementar cálculos complexos. É geralmente considerado que a tecnologia mais importante para a aceleração de hardware ZK é FPGA em vez de GPU (devido ao custo e eficiência energética) ou ASIC (devido à sua inflexibilidade e longo ciclo de iteração). Os FPGAs top de linha são cerca de 3x mais baratos que os GPUs top de linha. Além disso, os FPGAs são mais de 10 vezes mais eficientes em termos de energia do que as GPUs, principalmente porque as GPUs precisam ser conectadas a um dispositivo host, que consome muita energia.
Custo de verificação
A verificação da prova requer muitos cálculos complexos, o que também aumenta o custo computacional. Por exemplo, os ZK-rolluos precisam pagar cerca de 500.000 gas para verificar uma única prova AK-SNARK no Ethereum, e os ZK-STARKs exigem taxas ainda mais altas.
Suposição de confiança
A premissa da prova de conhecimento zero é que ambas as partes são honestas e querem saber a resposta real e não falsificarão os dados. No ZK-SNARK, a geração de parâmetros públicos uma vez pode ser reutilizada pelas partes participantes do protocolo de conhecimento zero, o que significa que os dados fornecidos pelos participantes estão corretos por padrão.
Mas, na verdade, os usuários não têm como avaliar a honestidade dos participantes, mesmo que os participantes insiram dados falsos, os usuários devem acreditar. Não há suposição de confiança no ZK-STARK e, agora, os pesquisadores estão trabalhando em configurações não confiáveis para ZK-SNARKs para melhorar a segurança do mecanismo de prova.
Ameaça da Computação Quântica
ZK-SNARK usa o Algoritmo de Assinatura Digital de Curva Elíptica (ECDSA) para criptografia.Parece que o algoritmo ECDSA é seguro no momento, mas o desenvolvimento de computadores quânticos no futuro provavelmente quebrará esse algoritmo.
Geralmente acredita-se que o ZK-STARK não será ameaçado pela computação quântica porque é criptografado usando hash anti-colisão. Ao contrário do par de chaves público-privadas da ECDSA, o hash anti-colisão é mais difícil de ser quebrado pela computação quântica.
Ver original
O conteúdo é apenas para referência, não uma solicitação ou oferta. Nenhum aconselhamento fiscal, de investimento ou jurídico é fornecido. Consulte a isenção de responsabilidade para obter mais informações sobre riscos.
Interpretando Provas de Conhecimento Zero
Este artigo inclui o seguinte: 1. O que é uma prova de conhecimento zero? 2. Por que precisamos de provas de conhecimento zero? 3. Cenários de aplicação da prova de conhecimento zero. 4. Como funcionam as provas de conhecimento zero. 5. Classificação e casos de aplicação de provas de conhecimento zero. 6. Falhas de provas de conhecimento zero.
PARTE.01
O que é a Prova de Conhecimento Zero
**A prova de conhecimento zero (Zero-Knowledge Proof) foi proposta por S.Goldwasser, S.Micali e C.Rackoff no início dos anos 80. Refere-se à capacidade do provador de convencer o verificador de que uma determinada afirmação está correta sem fornecer nenhuma informação útil ao verificador. **
Para dar um exemplo simples, Puff disse que é chef e pode cozinhar pratos chineses, coreanos e italianos. Minha mãe expressou descrença porque eu não havia preparado uma única refeição em casa. Então, como posso provar que posso cozinhar neste momento?
Posso fazer com que minha mãe me observe terminar uma refeição na cozinha e provar que realmente sei cozinhar. Mas não quero que minha mãe me veja fazendo bagunça na cozinha enquanto cozinho, ou serei importunado de novo, então o que devo fazer? Fui para a cozinha sozinha, e meus pais estavam esperando do lado de fora. Depois que terminei de cozinhar e fiz as malas, trouxe a louça. Isso ainda prova que sei cozinhar. Quanto aos ingredientes que usei, que temperos coloquei e como a cozinha ficou bagunçada durante o processo, não preciso disso. Contanto que minha mãe saiba que posso cozinhar uma refeição, isso provará que não sou mentindo.
Simplificando: as provas de conhecimento zero estão tentando estabelecer confiança entre duas partes com o mínimo de informações trocadas. Sem revelar mais informações, uma parte (o provador, o provador) pode provar à outra parte (o verificador, o verificador) que uma coisa é verdadeira.
PARTE.02
Por que você precisa de prova de conhecimento zero
Proteger dados privados
Os fornecedores desonestos desejam coletar o máximo possível de dados do usuário, e alguns dos recibos que não têm nada a ver com seus negócios também pedem permissões aos usuários (realmente os odeio). Eles colocam as informações de identidade pessoal (PII) coletadas do usuário em um banco de dados centralizado. Esses bancos de dados são muito vulneráveis a ataques. Uma vez atacados, as informações de identidade pessoal vazarão, o que levará a vários problemas de fraude.
Autenticação
Ao usar o site, o usuário pode provar ao site que possui uma chave privada, ou sabe uma resposta que só ele sabe.O site não precisa saber a chave, mas pode confirmar a identidade do usuário por meio de prova de conhecimento zero. Por meio do armazenamento descentralizado, o servidor pode provar aos usuários que os dados são preservados adequadamente e não vazam.
Compressão de computação e expansão de blockchain
Na arquitetura de bloco tradicional, o mesmo cálculo é repetido várias vezes, como verificação de assinatura, verificação de validade de transação, execução de contrato inteligente e outros locais, porque com a prova de cálculo, o mesmo cálculo não precisa Repetido muitas vezes, o processo de cálculo pode ser provado comprimido pela tecnologia de conhecimento zero.
**A prova de conhecimento zero realmente resolve a confiança dos dados, realiza a proteção de dados privados e faz com que o blockchain realmente realize o conceito de máquinas confiáveis. **
PARTE.03
Cenário de aplicação de prova de conhecimento zero
**Os principais cenários de aplicação da prova de conhecimento zero são: pagamento anônimo, prova de identidade, cálculo verificável e votação anônima. **
Pagamento anônimo
As transações de criptomoeda são publicamente visíveis na cadeia pública. Os usuários realizam transações anonimamente, mas também estão vinculados a identidades do mundo real (por exemplo, incluindo endereços ETH em seus perfis do Twitter ou GitHub), ou suas identidades do mundo real podem ser obtidas por meio de análise de dados on-chain e off-chain.
Existem "moedas de privacidade" específicas projetadas para transações completamente anônimas. Os exemplos incluem Zcash e Monero, que mascaram detalhes da transação, incluindo endereços do remetente/destinatário, tipo de ativo, valor e cronograma da transação. Ao incorporar técnicas de conhecimento zero em protocolos, as redes blockchain com foco na privacidade permitem que os nós verifiquem as transações sem ter acesso aos dados da transação.
Provas de conhecimento zero também foram aplicadas a transações anônimas em blockchains públicos. Como o Tornado Cash, um serviço descentralizado sem custódia que permite aos usuários realizar transações privadas no Ethereum. O Tornado Cash usa provas de conhecimento zero para ofuscar os detalhes da transação e garantir a privacidade financeira.
ID pessoal
Com a premissa de não revelar informações de identidade específicas, um certificado de identidade específico é emitido. Por exemplo, o uso de serviços online exige a comprovação da identidade do usuário e o direito de acesso a essas plataformas. Isso geralmente requer o fornecimento de informações pessoais, como nome, endereço de e-mail, data de nascimento, etc.
As provas de conhecimento zero podem simplificar a autenticação de plataformas e usuários. As provas ZK são geradas usando entradas públicas (por exemplo, dados que comprovam que o usuário é um membro da plataforma) e entradas privadas (por exemplo, detalhes do usuário), que os usuários podem simplesmente apresentar para verificar sua identidade quando precisam acessar os serviços. Por exemplo, para comprovar se o usuário é maior de idade ou não, não há a necessidade de emissão dos dados da carteira de identidade, nem do ano de nascimento específico, mas apenas a constatação se o usuário tem ou não dezoito anos.
Cálculo verificável
Quando o dispositivo do usuário não puder suportar a computação necessária ou o custo da computação local for muito alto, serviços de terceiros serão considerados. Esses serviços de terceiros podem retornar resultados de saída de maneira rápida e barata aos usuários (como o serviço oracle da Chainlink). As provas de conhecimento zero neste cenário permitem que provedores de energia de computação de terceiros produzam provas de integridade computacional para garantir que os resultados de saída recebidos pelos usuários estejam corretos.
Votação Anônima
Sob a premissa de não revelar a identidade específica, a identidade do usuário é comprovada e a autoridade de voto é obtida para concluir a votação.
PARTE.04
Como funcionam as provas de conhecimento zero
Provas de conhecimento zero foram propostas pela primeira vez por Shafi Goldwasser e Silvio Micali, do MIT, em um artigo de 1985 intitulado "Conhecimento Complexidade de Sistemas de Provas Interativas". O autor mencionou no artigo que é possível para um provador convencer um verificador da autenticidade dos dados sem revelar os dados específicos. A prova de conhecimento zero pode ser interativa, ou seja, o provador tem que provar a autenticidade dos dados uma vez para cada verificador; também pode ser não interativa, ou seja, o provador cria uma prova, e quem usar essa prova pode ser verificado. Atualmente, existem muitas implementações de provas de conhecimento zero, como zk-SNARKS, zk-STARKS, PLONK e Bulletproofs. Cada método tem suas próprias vantagens e desvantagens em termos de tamanho da prova, tempo do provador e tempo de verificação.
A prova de conhecimento zero tem três características básicas, a saber:
Em resumo, para criar uma prova de conhecimento zero, o verificador precisa fazer o provador executar uma sequência de operações que o provador só pode executar corretamente se conhecer as informações subjacentes. Se o provador enganar um resultado, é muito provável que o verificador encontre e prove seu erro na verificação.
PARTE.05
Classificação de provas de conhecimento zero
A prova de conhecimento zero pode ser dividida em "prova interativa de conhecimento zero" e "prova não interativa de conhecimento zero" de acordo com o método de interação.
Prova interativa de conhecimento zero
O provador e o verificador precisam interagir várias vezes, o verificador continuará a fazer perguntas para desafiar o provador e o provador continuará a responder a esses desafios até que o verificador esteja convencido.
Prova interativa de conhecimento zero - Jogo daltônico
Alice é daltônica, mas Bob não é daltônico. Bob tem duas bolas do mesmo tamanho e forma, mas as cores dessas duas bolas são diferentes. Uma bola é azul e a outra bola é vermelha. Como Alice é daltônica, então Alice não consegue dizer se as duas bolas são iguais, Bob precisa provar para Alice que as duas bolas são diferentes. Aqui, Alice é chamada de verificadora. Ela precisa verificar se a afirmação de Bob está correta ou não. Bob é chamada de provadora. Ele precisa provar sua afirmação (são duas bolas com cores diferentes). No caso das cores de duas bolas, prove a Alice que as cores das duas bolas são diferentes, o que é consistente com a definição de prova de conhecimento zero.
Alice pega duas bolas na frente de Bob, a bola azul na mão esquerda e a bola vermelha na mão direita, e então coloca as duas mãos atrás das costas para que Bob não possa ver a bola na mão de Alice, e Alice troca aleatoriamente as bolas nas mãos esquerda e direita atrás das costas , após a troca ser concluída, Alice estende a mão e pergunta a Bob se as duas bolas trocaram de posição. Se Bob pode ver a cor da bola, toda vez que Alice muda de posição da bola, Bob pode responder corretamente à pergunta de Alice.
Pela primeira vez, Alice trocou secretamente a posição da bola em sua mão, e então Alice perguntou a Bob se ela trocou a posição da bola. Se Bob respondeu Sim, então Alice tem 50% de probabilidade de que Bob possa distinguir a cor de as duas bolas, porque Bob Há 1/2 de chance de acertar, então Alice pode tentar novamente. Se Bob responder Não, Alice pode ter certeza de que Bob não consegue distinguir as cores das duas bolas.
Na segunda vez, Alice não troca as posições das bolas em suas mãos, e então Alice pergunta a Bob se ele trocou as posições das bolas. Se Bob responder Não, então Alice tem 75% de probabilidade de acreditar que Bob pode distinguir as cores das duas bolas.
Após a primeira iteração, Alice pode dizer que a afirmação feita por Bob tem 50% de probabilidade de ser verdadeira. Se Bob responder corretamente na segunda vez, Alice pode dizer que a afirmação de Bob é verdadeira com uma probabilidade de 75%. Após a terceira iteração, será de 87,5%. Se Bob passou no teste n vezes consecutivas, Alice tem uma probabilidade de 1-(1/2)^n e pode pensar que o que Bob disse é verdade, e que as duas bolas são de fato vermelhas e azuis.
A prova interativa de conhecimento zero é um método de verificação baseado em probabilidade. O verificador faz perguntas ao provador com base em certa aleatoriedade. Se o provador puder dar a resposta correta, isso significa que o provador tem uma alta probabilidade de ter todo o seu "conhecimento reivindicado ". A prova de conhecimento zero não é uma prova no sentido matemático, porque tem uma pequena probabilidade de erro, e o provador enganoso pode enganar o verificador por meio de declarações falsas. Em outras palavras, as provas de conhecimento zero são provas probabilísticas em vez de provas determinísticas, mas existem técnicas que podem reduzir os erros a valores insignificantes.
Essa abordagem interativa tem algumas limitações:
PROVA NÃO INTERATIVA DE CONHECIMENTO ZERO
As provas interativas de conhecimento zero exigem que duas partes estejam prontamente disponíveis e interajam repetidamente. Mesmo que o verificador esteja confiante de que o provador é honesto, a prova não pode ser usada para verificação independente (computar uma nova prova requer um novo conjunto de mensagens entre o provador e o verificador).
Para resolver os problemas enfrentados pelas provas interativas de conhecimento zero, surgiram as provas não interativas de conhecimento zero. Manuel Blum, Paul Feldman e Silvio Micali propuseram as primeiras provas interativas de conhecimento zero - onde o provador e o verificador compartilham um segredo. Isso permite que um provador prove seu conhecimento de algumas informações sem fornecer as informações em si.
Prova de conhecimento zero não interativa --- jogo de Sudoku
Sudoku é um jogo matemático originado na Suíça no século 18. É um jogo de lógica que utiliza papel e caneta para realizar cálculos. Os jogadores precisam deduzir os números de todos os espaços restantes com base nos números conhecidos no tabuleiro 9 × 9 e verificar se os números em cada linha, cada coluna e cada palácio de linha grossa (3*3) contêm 1- 9. repita.
Para provar a Bob que ela resolveu um quebra-cabeça de Sudoku, Alice cria uma máquina inviolável para isso. Alice coloca a resposta do Sudoku gerada na máquina, e a máquina pode enviar uma prova para Bob. A máquina de Alice segue o seguinte protocolo publicamente verificável: primeiro, Alice coloca o quebra-cabeça original não resolvido do Sudoku na máquina e as três cartas do quebra-cabeça do Sudoku viradas para cima. Em seguida, Alice coloca sua resposta voltada para baixo na célula correspondente da máquina, colocando também três cartas em cada célula. Finalmente, Bob obtém a prova da máquina e a máquina devolve 27 sacolas para Bob:
A máquina tira 9 cartas de cada fila de Sudoku, mistura-as separadamente e coloca-as num saco, são 9 filas no total, e usa 9 sacos; a máquina tira 9 cartas de cada fila de Sudoku, mistura-as e coloca-os em um saco, são 9 colunas no total, e 9 sacos são usados; a máquina tira os cartões em cada palácio de linha grossa (3*3) no Sudoku, mistura-os e coloca-os em um saco, um total de 9, use até 9 sacos;
Bob verifica cada uma das 27 sacolas individualmente e, se as cartas em cada sacola contiverem os números de 1 a 9 e nenhum dos números estiver faltando ou repetido, Bob pode confirmar que Alice realmente resolveu o Sudoku e que Bob não o fez. quaisquer números da máquina.Qualquer conhecimento sobre a solução do Sudoku pode ser obtido a partir da prova devolvida, porque os dados devolvidos pela máquina à bolsa de Bob são embaralhados aleatoriamente.
Provas não interativas de conhecimento zero superam algumas das deficiências das provas interativas de conhecimento zero, não requerem longas interações online, podem ser confiáveis para muitas pessoas (ou mesmo para todos), e a prova é sempre válida, mas máquinas e programas adicionais podem ser necessários para determinar a ordem experimental. Por exemplo, no caso do Sudoku, cabe ao programa decidir qual coluna ou linha verificar. A sequência de verificação deve ser mantida em segredo, caso contrário o verificador pode passar na verificação sem saber o real "conhecimento".
Prova interativa de conhecimento zero VS prova não interativa de conhecimento zero
Cada verificação de uma prova interativa requer uma nova rodada de comunicação, e uma prova não interativa requer apenas uma rodada de comunicação entre os participantes (provador e verificador). O provador passa as informações secretas para um algoritmo especial para calcular a prova de conhecimento zero. Essa prova é enviada ao verificador, que usa outro algoritmo para verificar se o provador conhece o segredo.
As provas não interativas reduzem a comunicação entre o provador e o verificador, tornando as provas ZK mais eficientes. Além disso, uma vez que uma prova é gerada, ela pode ser verificada por qualquer outra pessoa (com acesso ao segredo compartilhado e ao algoritmo de verificação).
**PARTE.**06
Soluções técnicas e aplicações de prova de conhecimento zero
A tecnologia de conhecimento zero permite que os desenvolvedores não apenas aproveitem a segurança de blockchains subjacentes, como Ethereum, mas também melhorem o rendimento e a velocidade das transações para dApps e, ao mesmo tempo, coloquem as informações pessoais dos usuários fora da cadeia para proteger a privacidade do usuário. As transações serão empacotadas e carregadas na cadeia para reduzir o custo de uso para os usuários finais. Por fim, os projetos podem aproveitar esses recursos para criar dApps avançados que não apenas rivalizam com os sistemas Web2 em desempenho, mas também mantêm os benefícios de descentralização do Web3.
(Fonte da imagem: Chainlink)
Na camada 2, o zk-rollup agrupará várias transações e as publicará na blockchain da camada 1, além de publicar uma prova de conhecimento zero para verificar a validade do cálculo. As provas postadas na cadeia também são chamadas de "provas de validade". **A tecnologia de prova de validade é dividida em dois tipos: SNARKs e STARKs. **
zk-SNARs
O nome completo do SNARK é "argumento sucinto não interativo de conhecimento zero sobre o conhecimento" (prova sucinta não interativa de conhecimento zero). Esta é uma prova criptográfica de que o arquivo é pequeno e facilmente verificável. Ele gera uma prova criptográfica usando uma curva elíptica que assume que o logaritmo discreto de um elemento de curva elíptica aleatória não pode ser encontrado a partir de um ponto base público. O custo de cálculo da curva elíptica é menor do que a função hash do STARK, portanto o custo do gás do protocolo SNARK é menor.
Caso: Zcash, Loopring, zkSync1.0, zkSync 2.0, Zigzag, Mine
zk-STARK
O nome completo do STARK é "zero-conhecimento escalável transparente argumento de conhecimento" (zero-conhecimento escalável, prova de conhecimento transparente). Essa prova criptográfica quase não requer interação entre o provador e o verificador. A maior vantagem dos STARKs sobre os SNARKs é que o tempo de prova é menor e é mais fácil de expandir. Além disso, como os STARKs usam uma função hash, eles também são resistentes a ataques quânticos.
Vale ressaltar que o inventor dos STARKs é Eli Ben-Sasson, co-fundador da StarkWare, equipe que também desenvolveu StarkEx e StarkNet.
Exemplos: StarkEx, StarkNet, Immutable X, Starkware
PARTE.07
Desvantagens da prova de conhecimento zero
Alto custo de hardware
Dependendo do sistema de prova, o processo de geração de prova de conhecimento zero é diferente. Mas, no final, você enfrentará problemas difíceis: multiplicação de vetores de grandes números (campos ou grupos), especialmente multiplicação multiescalar (MSM) com bases variáveis e fixas, ou transformada rápida de Fourier (FFT) e FFT inversa.
Ambos MSM e FFT são operações lentas. Em um sistema em que existem FFT e MSM, cerca de 70% do tempo de geração de prova é gasto em MSM e 30% em FFT. A aceleração de hardware é necessária para implementar cálculos complexos. É geralmente considerado que a tecnologia mais importante para a aceleração de hardware ZK é FPGA em vez de GPU (devido ao custo e eficiência energética) ou ASIC (devido à sua inflexibilidade e longo ciclo de iteração). Os FPGAs top de linha são cerca de 3x mais baratos que os GPUs top de linha. Além disso, os FPGAs são mais de 10 vezes mais eficientes em termos de energia do que as GPUs, principalmente porque as GPUs precisam ser conectadas a um dispositivo host, que consome muita energia.
Custo de verificação
A verificação da prova requer muitos cálculos complexos, o que também aumenta o custo computacional. Por exemplo, os ZK-rolluos precisam pagar cerca de 500.000 gas para verificar uma única prova AK-SNARK no Ethereum, e os ZK-STARKs exigem taxas ainda mais altas.
Suposição de confiança
A premissa da prova de conhecimento zero é que ambas as partes são honestas e querem saber a resposta real e não falsificarão os dados. No ZK-SNARK, a geração de parâmetros públicos uma vez pode ser reutilizada pelas partes participantes do protocolo de conhecimento zero, o que significa que os dados fornecidos pelos participantes estão corretos por padrão.
Mas, na verdade, os usuários não têm como avaliar a honestidade dos participantes, mesmo que os participantes insiram dados falsos, os usuários devem acreditar. Não há suposição de confiança no ZK-STARK e, agora, os pesquisadores estão trabalhando em configurações não confiáveis para ZK-SNARKs para melhorar a segurança do mecanismo de prova.
Ameaça da Computação Quântica
ZK-SNARK usa o Algoritmo de Assinatura Digital de Curva Elíptica (ECDSA) para criptografia.Parece que o algoritmo ECDSA é seguro no momento, mas o desenvolvimento de computadores quânticos no futuro provavelmente quebrará esse algoritmo.
Geralmente acredita-se que o ZK-STARK não será ameaçado pela computação quântica porque é criptografado usando hash anti-colisão. Ao contrário do par de chaves público-privadas da ECDSA, o hash anti-colisão é mais difícil de ser quebrado pela computação quântica.