Uma prova de conhecimento zero (ZK) é um protocolo criptográfico que permite a uma pessoa (o provador) convencer outra (o verificador) de que uma afirmação particular é verdadeira sem revelar quaisquer detalhes sobre a afirmação em si.
Os investigadores Shafi Goldwasser, Silvio Micali e Charles Rackoff apresentaram a ideia pela primeira vez no início dos anos 80. O principal objetivo de um ZK-Proof é persuadir o verificador de que uma afirmação é verdadeira sem revelar nenhuma informação que não seja a veracidade da alegação.
Uma boa prova de conhecimento zero deve cumprir os três critérios seguintes:
Existem diferentes tipos de ZK-Proofs:
As provas interativas de conhecimento zero requerem comunicação entre o provador e o verificador.
As provas de conhecimento zero não interativas fornecem uma prova compacta que pode ser verificada num único passo.
As provas estatísticas de conhecimento zero oferecem solidez computacional com uma pequena probabilidade de erro.
PoK é uma subclasse de ZK-Proofs que mostra que o provador possui conhecimentos específicos relacionados com a afirmação.
Estes ZK-Proofs são utilizados em votação eletrónica e transações de preservação da privacidade.
Os protocolos Sigma são uma classe de provas ZK que envolvem três etapas: compromisso, desafio e resposta.
Bulletproof são concebidos para fornecer provas de alcance eficientes para grandes conjuntos de valores.
As provas ZK permitem que um provador persuadir um verificador da veracidade de uma declaração sem divulgar qualquer informação sobre a afirmação em si. O provador e o verificador interagem em várias rondas do protocolo e, na conclusão, o verificador desenvolve confiança na veracidade da afirmação sem aprender nenhuma informação adicional sobre o segredo.
Vamos usar o “Problema das Três Cores”, também conhecido como “Problema de Coloração de Grafos”, como uma ilustração do funcionamento do ZK-Proofs.
Imagine que tem um mapa com várias áreas (vértices) ligadas por linhas (arestas), e este é o problema. O objetivo é usar uma das três cores para colorir cada região para que duas partes vizinhas não tenham a mesma cor. Consegue convencer alguém de que está ciente da coloração correta sem expor os matizes reais dados a cada região?
O provador e o verificador concordam com as regiões e links do gráfico (mapa).
O provador afirma ter três cores fiáveis para o gráfico fornecido.
O provador escolhe cores aleatoriamente para cada local em segredo sem as revelar. Em vez disso, o provador fornece ao verificador uma promessa encriptada para cada região. O verificador não consegue ver que cores estão dentro dos compromissos porque estão trancados como caixas.
O verificador escolhe uma região aleatória e solicita que o provador abra o compromisso para essa zona específica. O provador deve divulgar o matiz do compromisso dessa área.
Depois de se comprometer com as cores, o provador deve agora provar que a coloração revelada é precisa. Isto implica exibir as diferenças de cor entre as secções adjacentes. O verificador examina a resposta para garantir que o provador seguiu corretamente as regras.
As rondas 2 e 3 são repetidas inúmeras vezes usando várias regiões que são escolhidas aleatoriamente. Este procedimento é repetido quantas vezes forem necessárias para estabelecer um elevado grau de confiança na veracidade da afirmação do provador.
O verificador fica confiante de que o provador tem realmente três cores válidas sem saber as cores reais utilizadas se o provador produz regularmente respostas válidas para cada ronda.
O verificador aumenta gradualmente a capacidade do provador de reconhecer três cores válidas do gráfico, repetindo o procedimento para várias regiões. No entanto, a propriedade de conhecimento zero é mantida uma vez que o verificador nunca descobre as cores reais atribuídas a cada região durante o procedimento.
A ilustração acima mostra como o ZK-Proofs pode ser usado para persuadir alguém de que existe uma solução, mantendo a identidade da solução em segredo, oferecendo uma ferramenta potente para aumentar a privacidade e a segurança numa variedade de aplicações.
ZK-Proofs são ferramentas úteis que têm muitas utilizações numa variedade de campos e abordam questões importantes de privacidade e segurança.
As provas ZK são cruciais no mundo das criptomoedas para melhorar a privacidade e a escalabilidade das transações. Permitem transações anónimas sem revelar os pormenores da transação ou a identidade dos utilizadores, como é o caso das criptomoedas focadas na privacidade, como o Zcash (ZEC).
O ZK-Proofs pode ser utilizado nos campos de autenticação e controlo de acesso para demonstrar a compreensão de uma palavra-passe ou de uma chave criptográfica sem revelar a palavra-passe ou a própria chave. Isso resulta em melhores técnicas de autenticação fáceis de usar e seguras.
As provas ZK também são usadas em sistemas de votação eletrónica, onde permitem aos eleitores demonstrar a legitimidade do seu voto sem divulgar o voto real, protegendo tanto a privacidade dos eleitores como a integridade do processo eleitoral.
ZK-Proofs também têm implicações para a transferência e verificação seguras de dados, dando a um lado a capacidade de demonstrar a precisão dos cálculos em dados privados sem divulgar os dados em si.
As provas de conhecimento zero podem melhorar a privacidade das transações nas moedas digitais do banco central (CBDCs), facilitando transações privadas e mantendo o anonimato do utilizador. Ao equilibrar a privacidade e a transparência nas transações CBDC, o ZK-Proofs permite a auditabilidade sem divulgar detalhes específicos da transação.
Sim, os ZK-Proofs podem ser integrados em plataformas blockchain e, na verdade, foram implementados com sucesso em várias redes blockchain. ZK-Proofs fornecem uma técnica potente para aumentar a eficiência, segurança e privacidade em sistemas blockchain.
Quando integrado em plataformas blockchain, o ZK-Proofs pode servir vários propósitos:
ZK-Proofs permitem transações privadas, permitindo que os utilizadores realizem transações sem divulgar as informações subjacentes, como o valor da transação e os endereços do remetente e do destinatário. A melhoria da privacidade do utilizador em blockchains abertos depende disso.
Sem divulgar os dados ou informações reais, o ZK-Proofs pode ser usado para verificar a exatidão de cálculos ou declarações específicas. Isso garante a integridade dos dados e possibilita procedimentos de auditoria eficazes.
O ZK-Proofs pode aumentar a escalabilidade da plataforma oferecendo provas concisas para cálculos complexos, o que pode ajudar a minimizar a sobrecarga computacional e de armazenamento na cadeia de blocos.
Ao usar o ZK-Proofs para verificação e autenticação seguras de identidade, protegendo a privacidade do utilizador, as aplicações baseadas em blockchain ficarão mais seguras.
O ZK-Proofs pode ajudar na comunicação entre cadeias e transferências de ativos, protegendo a privacidade, facilitando a interoperabilidade entre várias redes blockchain.
Os ZK-Proofs fornecem benefícios de privacidade e segurança, mas podem ser computacionalmente intensivos e complexos de implementar.
Desenvolver e verificar provas ZK pode ser intensivo em recursos e computacionalmente, particularmente para provas mais complicadas. Isso pode resultar em tempos de processamento mais longos para transações e mais trabalho computacional, o que pode tornar os sistemas blockchain mais difíceis de escalar.
Além disso, o ZK-Proofs pode adicionar uma camada de complexidade que pode tornar o protocolo mais difícil de auditar e verificar, provocando preocupações sobre possíveis falhas de segurança ou bugs. Além disso, embora os ZK-Proofs melhorem a privacidade ocultando informações, também podem facilitar a atividade ilegal em algumas situações, criando dificuldades para a conformidade regulamentar.
ZK-Proofs também podem não ser apropriados para todos os casos de uso ou setores porque exigem treinamento e experiência específicos para implementar corretamente. Isso pode impedir que sejam amplamente utilizados e adotados em muitos campos.
Embora os ZK-Proofs forneçam funcionalidades úteis de privacidade e segurança, as suas desvantagens exigem um estudo cuidadoso e uma avaliação das compensações associadas antes da sua adopção em sistemas ou aplicações específicos.
Uma prova de conhecimento zero (ZK) é um protocolo criptográfico que permite a uma pessoa (o provador) convencer outra (o verificador) de que uma afirmação particular é verdadeira sem revelar quaisquer detalhes sobre a afirmação em si.
Os investigadores Shafi Goldwasser, Silvio Micali e Charles Rackoff apresentaram a ideia pela primeira vez no início dos anos 80. O principal objetivo de um ZK-Proof é persuadir o verificador de que uma afirmação é verdadeira sem revelar nenhuma informação que não seja a veracidade da alegação.
Uma boa prova de conhecimento zero deve cumprir os três critérios seguintes:
Existem diferentes tipos de ZK-Proofs:
As provas interativas de conhecimento zero requerem comunicação entre o provador e o verificador.
As provas de conhecimento zero não interativas fornecem uma prova compacta que pode ser verificada num único passo.
As provas estatísticas de conhecimento zero oferecem solidez computacional com uma pequena probabilidade de erro.
PoK é uma subclasse de ZK-Proofs que mostra que o provador possui conhecimentos específicos relacionados com a afirmação.
Estes ZK-Proofs são utilizados em votação eletrónica e transações de preservação da privacidade.
Os protocolos Sigma são uma classe de provas ZK que envolvem três etapas: compromisso, desafio e resposta.
Bulletproof são concebidos para fornecer provas de alcance eficientes para grandes conjuntos de valores.
As provas ZK permitem que um provador persuadir um verificador da veracidade de uma declaração sem divulgar qualquer informação sobre a afirmação em si. O provador e o verificador interagem em várias rondas do protocolo e, na conclusão, o verificador desenvolve confiança na veracidade da afirmação sem aprender nenhuma informação adicional sobre o segredo.
Vamos usar o “Problema das Três Cores”, também conhecido como “Problema de Coloração de Grafos”, como uma ilustração do funcionamento do ZK-Proofs.
Imagine que tem um mapa com várias áreas (vértices) ligadas por linhas (arestas), e este é o problema. O objetivo é usar uma das três cores para colorir cada região para que duas partes vizinhas não tenham a mesma cor. Consegue convencer alguém de que está ciente da coloração correta sem expor os matizes reais dados a cada região?
O provador e o verificador concordam com as regiões e links do gráfico (mapa).
O provador afirma ter três cores fiáveis para o gráfico fornecido.
O provador escolhe cores aleatoriamente para cada local em segredo sem as revelar. Em vez disso, o provador fornece ao verificador uma promessa encriptada para cada região. O verificador não consegue ver que cores estão dentro dos compromissos porque estão trancados como caixas.
O verificador escolhe uma região aleatória e solicita que o provador abra o compromisso para essa zona específica. O provador deve divulgar o matiz do compromisso dessa área.
Depois de se comprometer com as cores, o provador deve agora provar que a coloração revelada é precisa. Isto implica exibir as diferenças de cor entre as secções adjacentes. O verificador examina a resposta para garantir que o provador seguiu corretamente as regras.
As rondas 2 e 3 são repetidas inúmeras vezes usando várias regiões que são escolhidas aleatoriamente. Este procedimento é repetido quantas vezes forem necessárias para estabelecer um elevado grau de confiança na veracidade da afirmação do provador.
O verificador fica confiante de que o provador tem realmente três cores válidas sem saber as cores reais utilizadas se o provador produz regularmente respostas válidas para cada ronda.
O verificador aumenta gradualmente a capacidade do provador de reconhecer três cores válidas do gráfico, repetindo o procedimento para várias regiões. No entanto, a propriedade de conhecimento zero é mantida uma vez que o verificador nunca descobre as cores reais atribuídas a cada região durante o procedimento.
A ilustração acima mostra como o ZK-Proofs pode ser usado para persuadir alguém de que existe uma solução, mantendo a identidade da solução em segredo, oferecendo uma ferramenta potente para aumentar a privacidade e a segurança numa variedade de aplicações.
ZK-Proofs são ferramentas úteis que têm muitas utilizações numa variedade de campos e abordam questões importantes de privacidade e segurança.
As provas ZK são cruciais no mundo das criptomoedas para melhorar a privacidade e a escalabilidade das transações. Permitem transações anónimas sem revelar os pormenores da transação ou a identidade dos utilizadores, como é o caso das criptomoedas focadas na privacidade, como o Zcash (ZEC).
O ZK-Proofs pode ser utilizado nos campos de autenticação e controlo de acesso para demonstrar a compreensão de uma palavra-passe ou de uma chave criptográfica sem revelar a palavra-passe ou a própria chave. Isso resulta em melhores técnicas de autenticação fáceis de usar e seguras.
As provas ZK também são usadas em sistemas de votação eletrónica, onde permitem aos eleitores demonstrar a legitimidade do seu voto sem divulgar o voto real, protegendo tanto a privacidade dos eleitores como a integridade do processo eleitoral.
ZK-Proofs também têm implicações para a transferência e verificação seguras de dados, dando a um lado a capacidade de demonstrar a precisão dos cálculos em dados privados sem divulgar os dados em si.
As provas de conhecimento zero podem melhorar a privacidade das transações nas moedas digitais do banco central (CBDCs), facilitando transações privadas e mantendo o anonimato do utilizador. Ao equilibrar a privacidade e a transparência nas transações CBDC, o ZK-Proofs permite a auditabilidade sem divulgar detalhes específicos da transação.
Sim, os ZK-Proofs podem ser integrados em plataformas blockchain e, na verdade, foram implementados com sucesso em várias redes blockchain. ZK-Proofs fornecem uma técnica potente para aumentar a eficiência, segurança e privacidade em sistemas blockchain.
Quando integrado em plataformas blockchain, o ZK-Proofs pode servir vários propósitos:
ZK-Proofs permitem transações privadas, permitindo que os utilizadores realizem transações sem divulgar as informações subjacentes, como o valor da transação e os endereços do remetente e do destinatário. A melhoria da privacidade do utilizador em blockchains abertos depende disso.
Sem divulgar os dados ou informações reais, o ZK-Proofs pode ser usado para verificar a exatidão de cálculos ou declarações específicas. Isso garante a integridade dos dados e possibilita procedimentos de auditoria eficazes.
O ZK-Proofs pode aumentar a escalabilidade da plataforma oferecendo provas concisas para cálculos complexos, o que pode ajudar a minimizar a sobrecarga computacional e de armazenamento na cadeia de blocos.
Ao usar o ZK-Proofs para verificação e autenticação seguras de identidade, protegendo a privacidade do utilizador, as aplicações baseadas em blockchain ficarão mais seguras.
O ZK-Proofs pode ajudar na comunicação entre cadeias e transferências de ativos, protegendo a privacidade, facilitando a interoperabilidade entre várias redes blockchain.
Os ZK-Proofs fornecem benefícios de privacidade e segurança, mas podem ser computacionalmente intensivos e complexos de implementar.
Desenvolver e verificar provas ZK pode ser intensivo em recursos e computacionalmente, particularmente para provas mais complicadas. Isso pode resultar em tempos de processamento mais longos para transações e mais trabalho computacional, o que pode tornar os sistemas blockchain mais difíceis de escalar.
Além disso, o ZK-Proofs pode adicionar uma camada de complexidade que pode tornar o protocolo mais difícil de auditar e verificar, provocando preocupações sobre possíveis falhas de segurança ou bugs. Além disso, embora os ZK-Proofs melhorem a privacidade ocultando informações, também podem facilitar a atividade ilegal em algumas situações, criando dificuldades para a conformidade regulamentar.
ZK-Proofs também podem não ser apropriados para todos os casos de uso ou setores porque exigem treinamento e experiência específicos para implementar corretamente. Isso pode impedir que sejam amplamente utilizados e adotados em muitos campos.
Embora os ZK-Proofs forneçam funcionalidades úteis de privacidade e segurança, as suas desvantagens exigem um estudo cuidadoso e uma avaliação das compensações associadas antes da sua adopção em sistemas ou aplicações específicos.