Blockchain, criptomoedas, zkSTARKs e o futuro da privacidade em um mundo descentralizado

Gonzalo Álvarez Marañón    17 septiembre, 2020
Blockchain, criptomoedas, zkSTARKs e o futuro da privacidade em um mundo descentralizado

Na Itália renascentista, duelos entre matemáticos eram comuns , mas não cruzando aços, mas problemas de difícil resolução. Um dos ossos mais difíceis de quebrar na época eram as equações cúbicas . Saber o método para sua resolução conferia uma enorme vantagem nesses duelos, nos quais os dois duelistas matemáticos apostavam não apenas seu prestígio, mas também recompensas suculentas e às vezes até a cadeira .

Um dos confrontos mais famosos foi realizado pelos matemáticos Niccolo Fontana, apelidado de Tartaglia por sua gagueira, e Girolamo Cardano. Em 1535, em um duelo contra outro matemático, Antonio Maria del Fiore, Tartaglia esmagou seu rival após resolver 30 questões relacionadas às equações cúbicas, enquanto del Fiore não resolveu um único de seus 30 problemas. Estava provado, sem qualquer dúvida razoável, que Tartaglia conhecia um método para resolver cúbicas, sem que ele o tivesse revelado. Impressionado com sua vitória, Cardano ofereceu a Tartaglia para encontrá-lo patrono se ele revelasse o cobiçado método de resolver equações cúbicas. Tartaglia acedeu em 1539, prometendo nunca mais publicá-lo. Seis anos depois, Cardano publicou em sua obra Ars Magna, alegando que ele havia aprendido com outro matemático, Scipione del Ferro, e desencadeando a ira de Tartaglia. Ele desafiou Cardano para um duelo matemático, com a presença de seu discípulo, Lodovico Ferrari, que derrotou Tartaglia. Como resultado, Tartaglia acabou sem prestígio e sem dinheiro.

No mundo da segurança da informação, muitos cenários semelhantes surgem em que uma entidade conhece um segredo e precisa provar a outra entidade que o conhece, mas não é conveniente para ela revelar o segredo ou qualquer informação parcial sobre o segredo:

  • Quem ganha mais dinheiro, seu cunhado ou você? Como você pode provar isso para a satisfação de toda a família, mas sem nenhum de vocês revelar a figura?
  • Como demonstrar a legitimidade de uma transação em uma Blockchain pública, mas sem revelar nem o emissor, nem o receptor, nem o valor transferido?
  • Como você pode provar para um aplicativo instalado em seu smartphone que sabe a senha para se autenticar em um site, mas sem fornecer a senha para aquele aplicativo, ou para seu smartphone, ou mesmo para o site?
  • Como você pode provar que é maior de idade para acessar um serviço para adultos, mas sem revelar sua idade?
  • Como pode provar que é cidadão da União Europeia para ter acesso a um serviço de saúde comunitário, mas sem saber de que nacionalidade?
  • Como você pode convencer um aplicativo de pagamento de que tem fundos suficientes em sua conta para uma transação, mas sem revelar seu saldo?
  • Como um estado pode convencer outros de que destruiu seu arsenal militar nuclear sem permitir que inspetores neutros entrem em suas instalações?
  • Como votar eletronicamente para que seu voto seja contado, mas sem saber em quem votou?
  • Como provar que um teorema está correto sem fornecer sua prova matemática?
  • Como mostrar que sabe a solução para o quebra-cabeça de Sudoku mais complicado do mundo, sem revelá-lo?

Felizmente, a criptografia fornece uma resposta para esses e muitos outros dilemas semelhantes: as provas de conhecimento nulo ( Zero Knowledge Proof , ZKP). Vamos ver com dois exemplos mundanos como esses testes funcionam.

Provas de conhecimento nulo interativas e não interativas

Seu cunhado afirma ser capaz de distinguir a olho nu a água benta de Lourdes da água da torneira, mas a verdade é que você não confia muito em seus poderes místicos. Imagine que você tem dois copos cheios de água, um de Lourdes e outro da torneira. Como seu cunhado pode provar a você que ele sabe qual é qual sem mesmo revelar qual é qual? Muito fácil! Apenas siga os passos abaixo:

  1. Você o vende e joga uma moeda. Se der cara, você troca a posição dos óculos; se as caudas saírem, você as deixa como estão.
  2. Você retira a venda e pergunta se os óculos foram trocados ou se ainda estão no mesmo lugar.

Obviamente, desafiar seu cunhado apenas uma vez não é suficiente, pois ele pode ser atingido por acaso em 50% das vezes. Por outro lado, se você realmente tiver clarividência, estará correto 100% das vezes. Portanto, se você repetir as duas etapas dos ntempos de teste , a probabilidade de seu cunhado sempre acertar por puro acaso é reduzida a . Por exemplo, se for réveillon e não passar nada na TV, pode-se repetir o teste 100 vezes, com o que, ou seja, praticamente nulo.p = (1/2)np = 7,38×10‒31

Este protocolo para identificação de embarcações é um exemplo de sistema de prova interativa: um testador (seu cunhado) e um verificador (você) trocam várias mensagens (desafios e respostas), normalmente dependentes de números aleatórios (de preferência, os resultados do lançamento de moedas incontáveis), até que o testador convença (comprove o verificador) a verdade de uma afirmação, com probabilidade esmagadora.

Um problema (ou vantagem, dependendo de como você olha para isso) com esses testes interativos é que apenas o verificador é convencido pelo teste. Sua irmã pode pensar que você e seu cunhado entraram em conflito para animar o jantar de Réveillon e você combinou com antecedência a troca de taças. A única maneira de o testador testar outra pessoa que conhece o segredo é essa outra pessoa agir como verificador, propondo trocas de copos aleatórias. E o mesmo acontece com cada uma das pessoas que seu cunhado quer convencer de que conhece o segredo. Que exaustivo! Como convencer a todos de uma só vez?

Existem outros protocolos mais eficientes que permitem que você teste seu conhecimento do segredo em uma única etapa e para a satisfação de um número arbitrário de observadores. Eles são conhecidos como provas de conhecimento nulo não interativas.

Por exemplo, imagine que um prêmio milionário seja oferecido para resolver um quebra-cabeça de sudoku e você o resolveu! Mas seu cunhado, que busca a glória mais do que dinheiro, está disposto a pagar o dobro por sua solução. Como você pode provar a ele e a todos os seus parentes de uma vez que conhece a solução, mas sem que eles vejam antes de pagar por ela? Tem alguns baralhos de cartas em mãos? Então será fácil!

Em um jogo de sudoku, existem nove linhas, nove colunas e nove caixas. Em cada um desses grupos devem aparecer os nove valores de 1 a 9. No total, cada número aparece 9 vezes. Se você tiver sete baralhos idênticos, poderá selecionar 27 cartas para cada número, independentemente do naipe: 27 ases, 27 duques, …, 27 noves, um total de 243 cartas.

  1. Você desenha com um marcador indelével na toalha de mesa do enxoval da avó o jogo do sudoku do concurso, de forma que em cada número dado (são as pistas ou números conhecidos) você coloca três cartas viradas para cima com o valor correspondente.
  2. Você pede a todos que saiam da sala e secretamente coloque três cartas com o valor apropriado voltado para baixo em cada quadrado a ser resolvido. Assim que todas as pilhas de três cartas forem colocadas, você pede a todas elas para entrarem novamente e a mágica começa!
  3. Primeiro, você remove uma carta de cada linha e faz nove pilhas com as nove cartas de cada linha.
  4. Você então remove uma carta de cada coluna e faz nove pilhas com as nove cartas de cada coluna.
  5. Finalmente, você faz nove pilhas com as nove cartas em cada caixa.
  6. Você embaralha bem cada uma das 27 pilhas separadamente e espalha as cartas de cada pilha com a face para cima na mesa. Se você conhecesse a solução para o Sudoku, cada uma das 27 pilhas conterá nove cartas de 1 a 9!

Encantado de alegria, seu cunhado faz de você um bizum e sua avó esquece o desprazer da toalha de mesa.

Este exemplo demonstra como uma prova de conhecimento nulo não interativa funciona na prática. Eles são cruciais ao procurar um grande número de verificadores para verificar um teste com eficiência.

Tudo isso é bom para entreter a família na véspera de ano novo, mas para que eles servem no mundo real?

A ideia do ZKP foi proposta há mais de 30 anos pelos criptógrafos do MIT Goldwasser, Micali e Rackoff. Foi considerado tão revolucionário que mereceu o primeiro Prêmio Gödel em 1993 e o Prêmio Turing em 2012. No entanto, não viu nenhuma aplicação prática na indústria … até hoje! O ZKP foi durante décadas um poderoso martelo em busca de pregos e finalmente os pregos estão surgindo com a progressiva descentralização dos serviços graças aos blocos de blocos.

Blockchain e provas de conhecimento nulo no mundo real

Não, Bitcoin, Litecoin, Ethereum e até Monero não são anônimos como dinheiro vivo, mas pseudo anônimos , ou seja, as transações deixam um rastro no blockchain público. No entanto, nem todas as criptomoedas são pseudo-anônimas : o uso mais proeminente de ZKPs até agora é o ZCash , uma das criptomoedas mais populares, que permite transações anônimas. Especificamente, ZCash usa testes de conhecimento não interativos zero Concise ( Zero-Knowledge Succinct Argumento não interativo do Conhecimento, zkSNARK), que permite que você teste o conhecimento de um segredo em milissegundos usando uma única mensagem enviada pelo testador ao verificador. Graças ao zkSNARK, no ZCash a única informação registrada após um pagamento é que uma transação válida foi feita : não há informações sobre o remetente, o destinatário ou o valor.

Ethereum também começou a integrar zkSNARKs, especificamente na forma de contratos pré-compilados. Um contrato inteligente é basicamente um depósito de fundos que é ativado assim que uma determinada tarefa é executada. Por exemplo, seu cunhado coloca 100 ETH em um contrato inteligente com você, de modo que, quando você concluir a tarefa acordada, receberá 100 ETH do contrato inteligente. E se o dever de casa que você precisa fazer for confidencial e você não quiser revelar seus detalhes ao seu cunhado? Graças a zkSNARK, Ethereum prova que a tarefa do contrato inteligente foi concluída sem revelar quais são seus detalhes.

Em princípio, os zkSNARKs podem ser aplicados a qualquer tipo de blockchain, em uma camada de segurança de conhecimento zero ( ZSL), útil em muitos casos de uso em qualquer empresa. Um dos mais interessantes é a identidade descentralizada.

Blockchain, identidade descentralizada e provas de conhecimento zero

Nossos dados pessoais se tornaram a mercadoria que os gigantes da tecnologia comercializam para manipular nosso comportamento por meio de publicidade e mídia social. O zkSNARK e o Blockchain podem funcionar muito bem juntos , proporcionando privacidade, segurança e transparência na troca e verificação de informações, em áreas como saúde, comunicações e finanças.

O truque está nas soluções de identidade baseadas em blockchain. Tradicionalmente, uma miríade de servidores pertencentes a organizações públicas ou privadas armazenam e compartilham dados sobre você, como identidade, data de nascimento, saldo na conta bancária, senha (ou seu hash ), grau de deficiência, nacionalidade, contatos, número de telefone, etc.

Por outro lado, em uma solução descentralizada, credenciais verificáveis ​​são armazenadas : elas permitem que você execute operações simples sobre elas, mas sem ver seu valor. Por exemplo: você é maior de idade? Você pode estacionar no estacionamento para deficientes? Você tem fundos para este pagamento? Você pode voar para este país? Você sabe a senha para fazer login? Etc. Desta forma, o serviço não obtém nenhum conhecimento sobre você , pois seus dados pessoais não são enviados em momento algum!

Conseqüentemente, não pode ser roubado, não pode ser compartilhado ilicitamente, não pode ser comercializado . Você é o proprietário e senhor de seus dados. O Corda da R3 é um bom exemplo do trabalho que está sendo feito nesta linha.

Garantindo o futuro dos ZKPs

Não pense que tudo que reluz é ouro. Os zkSNARK também têm seus pontos fracos , entre eles, os três maiores são:

  1. Eles dependem de uma configuração inicial de confiança entre testador e verificador : um conjunto de parâmetros públicos é necessário para construir os testes de conhecimento nulo e, portanto, as transações privadas. Esses parâmetros são tão críticos que geralmente são gerados por um grupo muito pequeno no qual a confiança absoluta é colocada, criando um possível problema de centralização. Por exemplo, no Zcash, essa fase inicial de configuração é conhecida como Cerimônia de Geração de Parâmetros.
  2. A escalabilidade dos zkSNARKs pode ser melhorada : conforme aumenta o tempo de execução, aumenta o tempo necessário para gerar e principalmente verificar os testes.
  3. A criptografia subjacente é baseada em curvas elípticas , o que as torna vulneráveis ​​à computação quântica .

A superação dessas fragilidades veio em 2018 das mãos do criptógrafo Eli Ben-Sasson, inventor de testes de conhecimento interacticas transparentes e escaláveis ​​não zero ( Zero-Knowledge Arguments of Knowledge Scalable Transparent, zkSTARK). Esses testes são transparentes no sentido de não exigirem uma configuração de confiança inicial, pois são baseados em criptografia mais simples por meio de funções de hash resistentes a colisões. Essa abordagem também é computacionalmente menos cara e, portanto, mais escalonável. E também é resistente a ataques de futuros computadores quânticos por contar com a criptografia pós-quântica.Uma de suas desvantagens é que o tamanho do teste é maior, o que pode ser limitante dependendo de quais aplicativos. Sasson fundou uma empresa em torno do zkSTARK, STARKWARE, para melhorar a escalabilidade e a privacidade das tecnologias de blockchain.

Claro, blockchains não são o único escopo de provas de conhecimento nulo. Recentemente, foi estabelecido o ZKProof, uma iniciativa aberta que reúne a academia e a indústria para promover o uso seguro, eficiente e interoperável de tecnologias à prova de conhecimento nulo. Sua principal missão é padronizar protocolos para facilitar sua adoção pela indústria.

Os dados finalmente estão sob controle do usuário

As provas de conhecimento nulo têm um potencial imenso para devolver às pessoas o controle de seus dados, permitindo que outros verifiquem certos atributos desses dados sem revelar os próprios dados. Os ZKPs atuais e futuros, sem dúvida, terão um grande impacto nas finanças, saúde e outras indústrias, permitindo todos os tipos de transações enquanto protegem a privacidade dos dados.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.