Bem vindo! Novo em Zcash?
A rede Zcash é jovem, mas está evoluindo rapidamente! Cadastre-se e estaremos em contato com mais informações sobre como você pode começar a usar Zcash!

Idioma

Melhoria no protocolo de computação multipartite zk-SNARK

Sean Bowe, Ariel Gabizon and Ian Miers | Oct 31, 2017

zk-SNARKs - as provas de conhecimento-nulo no coração da Zcash - exigem a realização de uma cerimônia de geração de parâmetros para cada declaração sobre a qual você deseja criar provas. Embora a privacidade seja protegida por zk-SNARKs incondicionalmente, se essa cerimônia for comprometida, torna-se possível falsificar a Zcash. Portanto, é importante para nós garantir que esses parâmetros sejam criados de forma segura.

No ano passado, a Zcash realizou tal cerimônia usando um protocolo de computação multipartite (MPC). Esses protocolos possuem a propriedade de que apenas um participante precisa não pode estar comprometido em termos de segurança para que os parâmetros resultantes sejam seguros. Em outras palavras, para comprometer a cerimônia, cada participante precisava estar comprometido em termos de segurança.

No entanto, o protocolo que usamos para a cerimônia não poderia escalar além de um punhado de participantes. À medida que continuamos a atualizar o Zcash, precisaremos executar mais dessas configurações, por isso melhorar a escalabilidade e o desempenho deste protocolo é importante para nós. Além disso, projetos fora da Zcash que desejam usar zk-SNARKs podem precisar executar suas próprias configurações, então gostaríamos de torná-lo mais barato e mais fácil para eles também.

Ariel Gabizon, Ian Miers e eu acabamos de publicar um artigo detalhando um novo protocolo MPC que pode escalar para um número praticamente ilimitado de participantes. O documento também inclui a construção da curva elíptica fortalecida, BLS12-381, que nós divulgamos no blog antes.

MPC de participantes intercambiáveis

No protocolo original MPC, todos os participantes precisavam estar comprometidos com antecedência com a sua parte do "lixo tóxico" para que houvesse proteção contra ataques adaptativos. Isso significava que todos os participantes precisavam estar disponíveis durante toda a duração do protocolo, e ninguém poderia abortar sem que o protocolo inteiro abortasse. Os participantes precisavam manter a custódia de seu hardware durante todo o processo, então isso significava que a cerimônia não poderia escalar além de um punhado de pessoas.

Nosso novo protocolo é o que gostamos de chamar de um MPC de participantes intercambiáveis. Como antes, apenas um participante precisa ser honesto para que a cerimônia seja segura. Mas, ao contrário de antes, os participantes se juntam ao protocolo, fazem a parte deles e podem sair imediatamente. Isso permite que a cerimônia se ajuste a um grande número de participantes e ocorra durante um longo período de tempo. Também diminui a área de superfície de ataque para os participantes e evita a necessidade de sincronização dispendiosa.

Duas fases

O protocolo MPC original envolveu três fases de computação. Os participantes precisavam agir e depois aguardavam sua vez na próxima fase. Entre a primeira e a segunda fase, precisávamos realizar transformações rápidas e muito caras. Como resultado de tudo isso, o desempenho do MPC original era fraco.

No novo protocolo, conseguimos reduzir o MPC para duas fases. Além disso, a primeira fase é agnóstica para o circuito preciso zk-SNARK e, portanto, uma grande cerimônia comunal pode ser realizada que avalia esta fase para todos os projetos que desejam usar zk-SNARKs. A segunda fase não envolve transformações rápidas, o que significa que os MPCs para Zcash e outros projetos podem escalar para um número ilimitado de participantes sem cálculos excessivamente caros.

Começamos a implementar esta primeira fase da cerimônia de computação multipartite, escrita em Rust, que usa a nova curva elíptica BLS12-381.

Sumário

Este novo protocolo permite cerimônias de geração de parâmetros zk-SNARK muito mais seguras:

  • Permite que a cerimônia envolva um número maior de participantes, com a mesma propriedade que apenas um deles precisa ser honesto para garantir que os parâmetros sejam seguros.
  • Permite-nos dar aos participantes flexibilidade significativa no hardware e sistema operacional que eles usam para participar. Como resultado, isso nos permite reduzir o número de dependências e o código que devemos auditar.
  • Reduz muito o tempo que os participantes devem gastar na cerimônia, reduzindo a área de superfície dos ataques e permitindo que um conjunto mais amplo de participantes contribua.
  • Ele usa uma construção da curva elíptica mais forte que melhora a segurança.

Estamos ansiosos para compartilhar mais detalhes sobre cerimônias de geração de parâmetros zk-SNARK no futuro próximo.

zkSNARKs, cryptography, Parameter Generation | Veja todas as tags