Greetings! New to Zcash?
The Zcash network is young, but evolving quickly! Sign up and we'll be in touch with more information about how you can get started with Zcash!

Idioma

O Design da Cerimônia

Zooko Wilcox | Oct 26, 2016

Update: Read our full summary of what took place in the Zcash Parameter Generation Ceremony.

O Lixo Tóxico, e Outras Formas de Falsificar Zcash

Como já mencionado no post anterior, as operações privadas na Zcash "Sprout " 1.0 contam com parâmetros públicos SNARK para a construção e verificação de provas de conhecimento-nulo. (Quando atualizar o protocolo Zcash e alterar as provas de conhecimento-nulo - que pretendemos fazer dentro de cerca de um ano -, então teremos de gerar novos parâmetros públicos SNARK a partir do zero.) Gerando parâmetros públicos SNARK é basicamente o equivalente à geração de uma par de chaves pública/privada, mantendo a chave pública, e destruindo a chave privada.

O problema é que, se um invasor obtem uma cópia dessa chave privada, eles poderiam usá-la para criar moedas Zcash falsas. Essa é a único dano que poderia fazer com ela - não poderiam violar a privacidade de ninguém nem roubar Zcash de outras pessoas.

Chamamos a chave privada de "o lixo tóxico", e nosso protocolo é projetado para assegurar que os resíduos tóxicos nunca entrem em existência. Imagine ter um monte de diferentes subprodutos químicos em sua fábrica, cada um dos quais é individualmente inofensivo, mas se você deixar todos eles misturarem juntos eles vão formar uma substância perigosa, difícil de gerir com segurança. A nossa abordagem é manter os produtos químicos individualmente inofensivos separados até que sejam destruídos, de modo que o lixo tóxico nunca entre em existência.

Nota importante: destruir a chave privada não garante que é impossível de falsificar Zcash! Toda tecnologia de moeda já feito tem sido vulnerável a falsificação. Bitcoin já teve um bug que permitia a primeira pessoa que descobriu como falsificar 184 bilhões de BTC. Zcash poderá vir a ter uma falha semelhante, totalmente alheios à chave privada de lixo tóxico.

Bitcoin foi capaz de detectar esse problema porque ele tem uma exposição pública generalizada de todas as transações. Zcash não terá essa capacidade. Qualquer sistema, que tenha uma forte privacidade não seria capaz de detectar tal falsificação.

Zcash não é única, desta forma, nem o risco de que possa ser falsificada, nem a dificuldade de detecção de falsificação. Nós vamos voltar neste fato, no final deste post.

O Design de uma Cerimônia de Segurança

Com o intuito de reduzir o risco de um atacante conseguir o lixo tóxico, foi desenvolvido um protocolo Multi-Party Computation (MPC), que é um conjunto de múltiplos participantes em locais geograficamente distantes cooperativamente construindo a chave pública. Cada participante gera um fragmento da chave pública, que os obriga a utilizar temporariamente um fragmento chave privada correspondente separadamente. Todos eles combinam seus fragmentos de chaves públicas para gerar os parâmetros públicos finais, e então cada exclui seu fragmento da chave privada.

Com o protocolo MPC, enquanto pelo menos um dos participantes elimina com sucesso seu fragmento de chave privada, em seguida, o lixo tóxico é impossível para qualquer um de reconstruir. A única maneira que o lixo tóxico pode ser reconstruído é se todos participantes no protocolo foram desonestos ou estiverem comprometidos por algo.

Eu mesmo, além de cinco pessoas que eu confio - tanto por ser ético e ter boas práticas de segurança da informação - serviu como os operadores e observadores no protocolo. Chamamos essas pessoas de "Testemunhas", e chamamos a execução do protocolo de uma "Cerimônia".

A identidade das três das Testemunhas foram revelados a todos os participantes e observadores no início da Cerimônia: Andrew Miller (cientista da computação and orientador técnico da Zcash), Peter Van Valkenburgh.

Eu disse a eles que os seus companheiros da testemunha foram nomeados "Moses Spears", "Fabrice Renault", e "John Dobbertin", mas na verdade, eu inventei esses nomes, com o intuito de ocultar temporariamente as identidades dessas outras testemunhas. Eu fiz isso para esconder suas identidades a partir de qualquer invasor em potencial que foi capaz de escutar as nossas comunicações (principalmente criptografadas) ou para subverter uma de nossas outras testemunhas.

No final da cerimônia, no dia 23 de outubro: “Moses Spears” foi revelado como Derek Hinch do NCC Group. Nós tinhamos secretamente contratado o NCC Group para ser um dos operadores do Compute Node. Ninguém que não seja Nathan Wilcox (ZcashCo CTO), eu e NCC Group sabia sobre isso. A tarefa do NCC Group foi tanto para proteger seu Compute Node durante a cerimônia (ele está hospedado em sua instalação segura em Austin) e fazer análise forense durante e depois da cerimônia, com o intuito de tentar detectar se houve qualquer ataque cibernético contra ela. Além disso, eles montaram um modelo de Compute Node redundante que não foi utilizado na cerimônia real, e tentaram invadi-lo para ver o quão difícil seria para uma Testemunha de roubar o fragmento de chave privada a partir de um Compute Node. NCC Group vai escrever um relatório técnico sobre o que eles fizeram e observaram.

No dia 27 de outubro, "Fabrice Renault" revelou-se ele próprio ser desenvolvedor do Bitcoin Core Peter Todd. Peter tinha expressado ceticismo sobre a Cerimônia de Geração de Parâmetros da Zcash, e eu disse a ele para servir como uma testemunha lhe daria o melhor ponto de observação da qual permita examinar e criticar. Mais importante ainda, espero que Peter nunca conspire para tentar roubar os fragmentos de chave privada. Finalmente, eu imaginei que ele iria implantar defesas de segurança da informação criativas e fortes. Eu ainda não sei os detalhes dessas defesas, já que ele ainda não postou seu relatório. Nós pagamos o Peter para fazer isso, mas fez concorda em ter reembolso de suas despesas, tais como a compra de um novo computador de uma loja aleatória e, em seguida, alguns dias depois destruí-lo completamente.

A identidade do "John Dobbertin" ainda não foi revelada, e eu ainda não sei quando John e eu vamos estar pronto para fazer isso.

Várias das Testemunhas fizeram foto, vídeo e/ou gravações de áudio do processo, e nós convidamos um jornalista para observar uma das estações - Denver Station. Vamos publicar esses registros assim que tivermos organizado, etiquetado, e hospedado eles e digitalizados para qualquer informação privada e pessoal que pode ter capturado acidentalmente.

O Design da Cerimônia nós escolhemos tem três defesas centrais que trabalham em conjunto: Multi-Party Computation, air gaps, e trilhas em evidências.

Multi-Party Computation

O Multi-Party Computation tem o efeito que ele só tem uma dessas pessoas para apagar com sucesso o seu fragmento de chave privada para ganharmos. Assim que qualquer uma das Testemunhas apagarem seu fragmento de chave privada, em seguida, o lixo tóxico nunca poderia ser criado. Este é o ponto de partida de nosso projeto, e ele se encaixa bem com as outras defesas.

Air Gaps

Cada participante com o fragmento de chave privada, foi usado somente em uma máquina air-gapped. Air-gapping significa que o computador está fisicamente desconectado de todas as redes.

Cada máquina foi comprada novo, exclusivamente para esse fim, e nunca foi conectada a qualquer rede durante toda a sua vida, desde o momento em que foi comprada na loja com a Testemunha. A Testemunha retirou fisicamente suas placas sem-fio (WiFi e Bluetooth) do computador antes da primeira inicialização.

Estas máquinas air-gapped foram chamados de "Compute Nodes".

O air gap elimina a maior parte dos ataques de superfície que poderiam permitir que um invasor Compute Nodes, uma vez que os Compute Nodes eram fisicamente incapazes de fazer ou receber ligações de rede.

um node de computador air-gapped em criação

Trilhas em Evidências

Nós precisávamos de comunicar com mensagens entre os Compute Nodes, com o intuito de executar o protocolo Multi-Party Computation.

Cada testemunha tinha, além do Compute Node, uma máquina separada que foi conectada à Internet, que chamamos de “Network Node”. O Network Node recebeu mensagens recebidas e as queimou no disco, e em seguida, a Testemunha moveu o disco através do air gap para o Compute Node.

Este removeu os ataques de superfície de ataque que tínhamos - rede - com um ataque de superfície diferente - leitura DVD. Esperamos que o ataque de superfície novo era mais difícil de explorar, mas é difícil ter certeza sobre essas coisas. Por exemplo, você poderia ter colocado dados maliciosos nos discos (ou seja, se você já tinha comprometido o Network Node), então ele pode ter sido possível explorar firmware do leitor de DVD do Compute Node, ou ele pode ter sido possível explorar a código de espaço do usuário no Compute Node que lê as mensagens.

A maior vantagem do uso de somente discos ópticos é que eles fornecem uma indelével trilhas em evidências de exatamente quais as mensagens foram passadas durante uma cerimônia particular. Por exemplo, suponhamos que, no futuro alguém descobrir que houve um erro explorável no firmware do dispositivo DVD que foi usado em um dos Compute Nodes. Podemos então perguntar: bem, quem fez as mensagens que foram alimentados nos Compute Node explorar esse bug? Nós podemos inspecionar os discos ópticos para ver se todos os dados foram passados para o Compute Node que poderia ter explorado essa vulnerabilidade.

É importante que os discos ópticos não são sobregraváveis - eles são DVD-R, não DVD-RW - porque dessa forma mesmo que um invasor conseguiu assumir o Compute Node, ele não teria a capacidade de apagar as provas dele.

design da cerimônia

Defesas Adicionais

Além da tríade de defesas centrais descritas acima, também usamos várias técnicas de defesas adicionais para tornar o nosso trabalho como defensores mais fácil e fazer tarefa de qualquer invasor potencialmente mais difícil. Mantivemos os detalhes da cerimônia - quando ainda estava para ser executado, quem seriam os participantes, qual código fonte rodaríamos, etc. - em segredo até depois que a Cerimônia havia sido concluída - até agora! Nós usamos uma versão com segurança reforçada do Linux nos Compute Nodes. Nós escrevemos todo o código que é necessário para a computação e as redes em Rust - uma linguagem de programação que torna mais fácil a escrita evitando escrever os erros de segurança mais comuns. Fizemos uma cadeia de hash segura de todas as mensagens que foram passadas, e nós postamos essa cadeia de hash no Twitter na the Internet Archive, e com timestamp no blockchain do Bitcoin. Além disso, cada uma das Testemunhas escolheu suas próprias defesas locais adicionais, que iremos descrever mais detalhadamente nos documentos futuros.

Trabalho Futuro

A nossa tarefa ainda não está terminada. Aqui estão dois passos importantes que iremos continuar:

Evidência e Arquivamento de Inspeção Independente

Vamos escrever mais documentos explicando os detalhes do protocolo e da cerimônia, incluindo quem eram as Testemunhas, quando e onde (seis locais diferentes!) a cerimônia foi realizada, e maiores detalhes sobre todo o processo. Nós vamos publicar o vídeo, áudio, e evidência textual fotográfica que nós gravamos. Também estamos pedindo cada uma das Testemunhas escrever uma declaração sobre o que eles fizeram e o que eles observaram. Estamos trabalhando duro na escrita, publicação e arquivamento de todo esse material para que qualquer pessoa pode consultá-lo.

Eu acho que este material vai ser extremamente interessante para os nossos colegas especialistas paranoicos de segurança da informação . Estou ansioso para ouvir as suas avaliações das nossas precauções de segurança e as observações durante a execução da Cerimônia. Tanto quanto eu sei, a Cerimônia de Geração de Parâmetros da Zcash é a cerimônia de criptografia mais notável e mais sofisticada que já foi executada!

Nós já começamos este processo através da publicação do código fonte do processo de rede e o processo de computação. Por favor, leia-o e deixe-nos saber imediatamente se você encontrar quaisquer falhas exploráveis nele.

Um Recurso Proposto para Detecção de Falsificação para Zcash

Embora atualmente estamos satisfeitos que a chave privada de lixo tóxico correspondente a estes parâmetros públicos da versão 1.0 da Zcash nunca chegou a existir, e pode nunca vir a existir, estou não certo de que a falsificação da Zcash é impossível. Isto porque, como eu escrevi acima, pode haver outras maneiras de criar falsas moedas Zcash além de reconstruir a chave privada de lixo tóxico.

Além disso, as pessoas que não tiveram a oportunidade de testemunhar a Cerimônia em primeira mão ainda pode ter dúvidas de que foi executado de forma honesta e com segurança. Não há nenhuma maneira que nós podemos realmente provar que realmente fizemos o que dissemos. Poderiam ter todos os seis conspirado para executar todo o processo - fazer imagens de vídeo e todos - como um truque de mágica, e poderíamos ter realmente secretamente copiado os fragmentos de chave privada e as combinar para formar o lixo tóxico. Eu escolhi as outras cinco testemunhas por ser pessoas que eu, pessoalmente, acredito ser confiáveis para nunca fazer tal coisa, mas se você não conhece essas pessoas como eu, então você pode exigir garantias adicionais.

Portanto, tenho a intenção de defender um upgrade no protocolo Zcash no futuro - após o lançamento do Zcash 1.0 "Sprout" - que adiciona um recurso de detecção de falsificação. Isto irá fornecer uma maneira para qualquer um (ou seja, o público em geral) para medir a base monetária total de moedas Zcash em circulação. Isso vai nos permitir determinar se a falsificação - seja através da exploração da chave privada de lixo tóxicos ou por qualquer outro mecanismo - ocorreu.

Vou escrever mais sobre isso em um futuro post.

Moral da História

Nós fizemos um feito notável de engenharia criptográfica e segurança da informação com o intuito de gerar parâmetros públicos de Snark para versão 1.0 da Zcash "Sprout". A concepção geral desta cerimônia foi baseada emMulti-Party Computation, air-gaps, e trilhas com provas indeléveis. Seis pessoas diferentes, cada uma teve uma parte na cerimônia. O Multi-Party Computation garante que que mesmo se todos os cinco outros forem comprometidos ou foram secretamente conivente, para tentar reconstruir o lixo tóxico, uma única testemunha se comportando de forma honesta e excluindo o seu fragmento de lixo tóxico iria impedi-lo de nunca ser reconstruído. Apesar da força notável desta Cerimônia, pretendo defender uma grande atualização para o protocolo Zcash próximo ano, que irá adicionar uma camada de detecção além da prevenção da camada atual.