Bem vindo! Novo em Zcash?
The Zcash network is young, but evolving quickly! Sign up and we'll be in touch with monthly highlights on ecosystem growth, network development and how to get started with Zcash!

Idioma

Pay-to-sudoku Revisitado

Sean Bowe | Jun 08, 2017

No ano passado, criei um projeto chamado pay-to-sudoku que foi a primeira implementação do mundo de um pagamento contingente de conhecimento nulo (ZKCP). Os ZKCPs foram inventados em 2011 por Gregory Maxwell e são um truque criptográfico inteligente que permite às pessoas trocarem informações e valores atomicamente por meio da blockchain. Gregory também foi gentil o suficiente para me ajudar a demonstrar isso para a Financial Cryptography 2016!

Em pay-to-sudoku, uma pessoa (o "comprador") pode pagar outra pessoa (o "vendedor") para resolver um quebra-cabeça de Sudoku. O vendedor resolve o quebra-cabeça e criptografa a solução com uma chave que é então transformada em hash. Usando uma prova de conhecimento nulo - neste caso, um zk-SNARK usando o libsnark - o vendedor constrói uma prova de que eles têm uma solução criptografada para o quebra-cabeça, e esse conhecimento de um hash SHA256 particular permitirá a decriptografia.

O comprador procede a enviar um pagamento ao bloco que permite ao vendedor redimir alguns fundos em troca de revelar a pré-imagem SHA256 (a chave). Quando o vendedor faz isso, o comprador pode decodificar.

Para conseguir isso com um zk-SNARK, o comprador é responsável pela construção de uma cadeia de referência comum (CRS) que permite ao vendedor avaliar uma prova. Campanelli, Gennaro, Goldfeder e Nizzardo acabaram de publicar um novo artigo que identifica uma falha na forma como o pay-to-sudoku usa a construção PGHR implementada em libsnark . Em particular, assume que o CRS tem estrutura algébrica correta e, como resultado, o comprador tem a oportunidade de violar o conhecimento-nulo para obter informações sobre a solução sem pagar por isso.

Observe que os parâmetros públicos da Zcash não são vulneráveis ​​a esse tipo de configuração maliciosa porque a transcrição de computação multipartidária garante a correção do CRS, mesmo que todos os participantes do MPC sejam desonestos. Isto é apontado pelo artigo também.

Existem várias medidas atenuantes que podem ser tomadas ao usar um CRS de terceiros. Assim como fizemos com os parâmetros públicos da Zcash, basta garantir que os parâmetros sejam construídos corretamente usando um protocolo de computação multiparty. Não permitir a estrutura incorreta no CRS é suficiente para se defender contra os ataques particulares descritos no documento. Como uma precaução adicional, verifique a prova depois de construí-la!

O documento também propõe algumas outras ideias interessantes, como uma extensão do conceito de um ZKCP à compra de serviços digitais em vez de bens digitais (como soluções sudoku).

ZKCP, cryptography, zkSNARKs | Veja todas as tags