O que é Prova de Conhecimento Zero ou ZKP e seus usos?

Segurança, privacidade e anonimato, são aspectos associados ao ambiente digital que ganham cada vez mais relevância e, portanto, a busca por soluções que garantam esses três fatores, tem sido uma preocupação de todos os envolvidos.

Nesse sentido, um conceito vem ganhando atenção e aplicabilidade crescente, as chamadas Provas de Conhecimento Zero ou ZKPs.

Embora bastante técnico e complexo até mesmo para especialistas na área, já que se apoia em vários conceitos de matemática avançada, pretendemos esclarecer alguns dos princípios envolvidos e os consequentes benefícios em termos de segurança, privacidade e anonimato.

Qual a diferença entre privacidade e anonimato?

Para aqueles que não são especialistas no assunto, pode até parecer que privacidade e anonimato são a mesma coisa, logo não há diferença.

Mas há e é importante!

Simplificadamente, podemos definir privacidade como sendo a condição na qual, as suas informações devem ser protegidas de acesso por parte de terceiros, quaisquer que sejam tais informações. Já o anonimato, é assegurar que terceiros não tenham as informações que o identifiquem.

Conhecer a movimentação bancária, os compromissos da agenda profissional / pessoal, os hábitos de compra e várias outras informações da rotina de alguém, é uma de violação da privacidade dessa pessoa, ainda que não se saiba seu nome.

Na situação hipotética acima, não há privacidade, mas há anonimato, porque apesar de haver conhecimento amplo de alguém, não se sabe exatamente quem ele é.

Por outro lado, quando se tem o nome da pessoa, sua filiação e dados de identificação, como um documento ou até um endereço eletrônico, mesmo que não se saibam outras informações, como que arquivos estão contidos em um serviço de armazenamento em nuvem, ou os hábitos de navegação na Internet, ou fotos pessoais, não há anonimato, mas há relativa privacidade.

No entanto, para além da preocupação com a privacidade na Internet e nas mais diferentes esferas, vem ganhando importância também a questão do anonimato. Isso porque há um crescente número de motivos que explicam a inquietação:

  • Aplicações que usam inteligência artificial, são capazes de reconhecimento facial e sendo assim, mesmo que tudo esteja bloqueado nas suas redes sociais, ou você nem tenha conta em nenhuma, apenas uma foto pode ser suficiente para extrair informações de identificação e, sendo assim, acabando com o anonimato;

  • O investimento em Big Data e particularmente com o avanço da inteligência artificial, tornaram cada vez mais fácil e possível o cruzamento de dados e obtenção de informações a seu respeito e que vai além daquelas que você consciente e deliberadamente autorizou coletar. Logo, a privacidade parece utopia;

  • Casos de vazamento de dados ocorridos em empresas dos mais variados segmentos de atuação e de todos os portes e as evidentes consequências em termos de privacidade e anonimato para os usuários, dão-nos a certeza de que a segurança da informação é um fator que ainda precisa evoluir muito.

A lista acima pode facilmente ser ampliada, mas é suficiente para demonstrar que não há sentido em falar em privacidade, em anonimato e em segurança, isoladamente. A relação entre os três aspectos, é estreita e interdependente.

Nesse contexto, que apesar de parecer alarmista, é bastante factível, a adoção das Provas de Conhecimento Zero (ZKP), contribui para minimizar as possíveis ameaças.

O que é Prova de Conhecimento Zero (ZKP)?

Prova de Conhecimento Zero, é a tradução de Zero Knowledge Proof, normalmente referido somente por ZKP ou apenas ZK (Zero Knowledge) e que consiste do conceito segundo o qual é possível provar que se conhece alguma informação, sem que se tenha que revelar qual é essa informação.

As provas de conhecimento zero são baseadas em conceitos matemáticos avançados e têm a capacidade única de provar que uma afirmação é verdadeira sem ter que revelar qualquer informação sobre essa afirmação. Apesar desta propriedade única, no entanto, as provas de conhecimento zero durante muito tempo pareciam destinadas a permanecer apenas uma novidade matemática.

Porém, não é algo exatamente novo. Foi na década de 80, quando o paper “The Knowledge Complexity of Interactive Proof Systems”, de autoria dos pesquisadores do MIT, Shafi Goldwasser, Silvio Micali e Charles Rackoff, tornou-se conhecido na comunidade científica e mesmo diante de alguns pares, enfrentou algum ceticismo quanto à sua praticidade.

As provas de conhecimento zero, permitem que uma parte, chamada de provador, prove a outra parte, classificada de verificador, que algo é verdadeiro sem revelar o que é essa coisa. Se pensarmos em situações comuns e quotidianas, seria o equivalente a garantir para um mecanismo de autenticação que se tem a respectiva senha, sem no entanto, fornecê-la.

Mas como isso seria possível?

Há uma variedade de analogias que demonstram a aplicabilidade do conceito, como a “Caverna de Alibaba”, o desafio “Onde está o Wally?”, ou até demonstrar que se sabe a resolução do conhecido jogo de lógica “Sudoku”.

Todas são válidas e interessantes, ao mesmo tempo que têm demasiadas etapas, componentes e alguma complexidade. Somos forçados a lidar com a configuração complicada desses exemplos, o que nos deixa incapazes de nos concentrarmos na explicação que eles pretendem fornecer.

Em vez disso, vamos a algo mais simples e replicável por quaisquer duas pessoas, que cumprem os papéis de verificador e provador.

Imagine que temos um pote cheio de bolas coloridas exatamente iguais em tamanho, peso, material, exceto que diferem pela cor. Algumas são vermelhas e algumas são amarelas. É o que basta saber por enquanto.

Agora, para garantir a veracidade das informações acima, o provador pode mostrar o pote de vidro ao verificador para que ele constate essa que há bolas de cores diferentes, porém iguais em relação aos demais aspectos. Mas o provador não quer mostrar as bolas ao verificador e sendo assim, eles precisam encontrar uma forma diferente de provar ao verificador que há bolas de diferentes cores:

  • O desafio consiste em o provador colocar duas bolas de cores diferentes sob dois potes opacos de modo que o verificador não possa enxergar as cores das bolas. No entanto, o provador conhece as cores das bolas sob cada pote e suas posições;

  • O verificador é então apresentado a duas ações possíveis: ele pode trocar a posição dos potes, invertendo-os junto com suas respectivas bolas, ou deixá-los como estão, sem que o provador veja qual ação foi realizada. Em qualquer dos casos, ele não tem permissão de levantar e visualizar o que há debaixo dos potes;

  • Quando o verificador termina, o provador olha embaixo dos potes e informa se o verificador trocou os potes, se as cores aparecerem em posições invertidas, ou não, se continuarem na posição em que ele colocou;

  • Observe que, como as bolas são iguais em quase tudo, exceto pelas cores, o provador não teria como saber se o verificador trocou os copos ou não. Então, se o provador acertou a ação (troca ou não dos potes) do verificador, deve ser porque as bolas são de cores diferentes, certo?

Bem, não exatamente. O provador pode ter tido sorte e adivinhado. Há 50% de chance, afinal ele poderia ter dito que trocou ou não, que são as duas únicas possibilidades.

No entanto, podemos reduzir drasticamente a probabilidade de um palpite de sorte acontecer, simplesmente repetindo o processo várias vezes. Na segunda repetição, a chance de sucesso cai de 50% para 25%. Na terceira, são 12,5% e assim sucessivamente.

Na oitava tentativa, o verificador pode ter mais de 99,99609375% de certeza de que as bolas são de cores diferentes. Na centésima, a probabilidade do provador ter acertado todas por puro acaso, é de 1 em 7,89X1031!!!

Comparativamente, a chance de ganhar na Mega-Sena com um jogo de 6 dezenas, é de 1 em 50.063.860 ou ou 0,000002%. Muito mais fácil, portanto e equivale aproximadamente a ter acertado todas as 12 primeiras tentativas.

Como funcionam as provas de conhecimento zero?

O exemplo pelo qual demonstramos o conceito do ZKP, é conhecido como prova interativa, pois depende de uma sucessão de interações entre o provador e o verificador.

Além disso, é preciso assegurar outras características, mais especificamente três requisitos:

  • Integridade e completude – pressupõe que as duas partes envolvidas – o provador e o verificador – são honestas e que seguirão o protocolo previamente estabelecido. Em outras palavras, se um provador fornecer uma declaração verdadeira, o verificador será efetivamente convencido por ela;

  • Solidez e robustez – o protocolo deve assumir que a honestidade por parte do provador, é pequena ou nula. Portanto, para provar que o testador realmente tem um segredo, o verificador deve ser convencido. Se o provador for desonesto, ele será incapaz de persuadir o verificador de que a prova é sólida;

  • Zero conhecimento – implica que se a afirmação for verdadeira, nenhum verificador desonesto poderá saber mais que esse fato, ou seja, ele terá nenhum conhecimento sobre a informação que se pretende manter oculta e que no caso do nosso experimento com as bolas, que elas têm cores diferentes, mas não sabe que cores são.

Seguindo esses requisitos, algumas pesquisas e desenvolvimentos têm sido feitos e já há ao menos duas tecnologias que têm se mostrado utilizáveis e com aceitáveis níveis de segurança em termos criptográficos: as provas zk-SNARK e zk-STARK.

Não vamos aqui detalhar nenhuma delas, pois o embasamento matemático necessário para sua compreensão, é demasiado profundo, complexo e restrito a uns poucos pesquisadores da área.

As provas zk-SNARK significam “zero-knowledge succinct non-interactive argument of knowledge” (argumento de conhecimento sucinto não interativo de conhecimento-zero) e zk-STARK, quer dizer “zero-knowledge succinct transparent argument of knowledge” (argumento de conhecimento sucinto transparente de conhecimento-zero).

Bem resumidamente, o zk-SNARK significa que não é necessário realizar uma sucessão de interações como na analogia do pote de bolas coloridas, o que tornaria o protocolo de verificação demorado e lento. Em termos práticos, demasiado processamento e elevado poder computacional, seria necessário.

Em vez disso, no zk-SNARK são utilizadas propriedades de curvas elípticas e logaritmo para incrementar a segurança do protocolo. Todavia, apesar de prestar-se bem ao cenário atual, estima-se que a partir do momento que a computação quântica não for uma realidade restrita a poucos, essa tecnologia não será segura.

Nesse contexto, o zk-STARK que é posterior ao zk-SNARK e por essa razão ter uma base de utilização bem menor, tem se mostrado mais escalável, tem desempenho semelhante, consome mais armazenamento, porém é resistente a eventuais ataques quânticos.

Quais as aplicações práticas de prova de conhecimento zero?

Como antecipamos, aplicações que já fazem uso de tecnologias baseadas em ZKP, especialmente zk-SNARK, já são várias.

Assim, suponhamos um grupo de pessoas e/ou empresas que precise assinar digitalmente um smart contract, por exemplo, tem-se a garantia de que quem precisava assinar o fez, sem no entanto, saber exatamente quais são essas pessoas / empresas, assegurando seu anonimato e até a privacidade dos termos do contrato, se for o caso.

Aliás, esse tipo de característica, tem servido de fundamento em muitas aplicações de blockchain, quando é preciso conferir algum grau de anonimato e privacidade às operações e consequentemente, segurança.

Também tem crescido o número de serviços baseados em cloud computing que combinaram ZKP com autenticação multi-fator (MFA) para tornar a segurança dos seus ambientes melhor.

Na medida em que se consegue também garantir anonimato quando possível, o conceito funciona como uma camada de proteção aos golpes de roubo de identidade e fraudes virtuais, uma vez que um usuário não precisaria mais se identificar, mas apenas provar que tem algum tipo de acesso ao serviço.

Em termos práticos, eis alguns exemplos da adoção de provas de conhecimento zero:

  • ZCash – a criptomoeda Z.cash já usa zk-SNARK para operações diversas, visando segurança das mesmas, bem como privacidade de algumas;

  • Ethereum – a rede Ethereum já utiliza o conceito de conhecimento zero para aplicativos baseados em blockchain para empresas, quando há necessidade de desempenho e privacidade;

  • E-mail – serviço de e-mail como o ProtonMail, já alia criptografia de ponta a ponta e baseada em provas de conhecimento zero, para melhorar a segurança do serviço e garantir a privacidade dos usuários;

  • ING – clientes da empresa ING, podem entre outras coisas, provar que seus rendimentos estão dentro de uma faixa, sem no entanto, revelarem seus ganhos.

É razoavelmente consensual que toda e qualquer situação na qual até então era necessário fornecer uma informação sensível, que pudesse ser ameaçada por um ataque cibernético, uma falha de sistema ou ainda humana, agora não precisa mais ser revelada, se for utilizado um protocolo baseado em prova de conhecimento zero.

Logo, ainda que uma invasão ou um vazamento de dados aconteçam, a privacidade e anonimato dos usuários cujos dados estão relacionados, estarão preservadas e por consequência, maior a sua segurança no ambiente digital.

Conclusão

O conceito de Provas de Conhecimento Zero (ZKP), tem sido usado para fortalecer o vital trinômio privacidade, anonimato e segurança no mundo digital.

Comentários ({{totalComentarios}})