WEB3DEV

Cover image for Introdução à Computação Multipartidária (MPC)
Paulo Gio
Paulo Gio

Posted on

Introdução à Computação Multipartidária (MPC)

Este é o novo acrônimo do momento, popularizado por gigantes como Coinbase e Fireblocks. É uma ferramenta que pode ser usada para criar aplicativos de preservação de privacidade em larga escala.

Em poucas palavras, a MPC (Multi-Party Computation) permite que um grupo calcule algo sem revelar as informações privadas de cada participante.

A MPC também permite carteiras “semi-custodiais”, que servem de alternativas para carteiras totalmente não custodiais com frases-semente.

Esta publicação tem como objetivo fornecer uma visão inicial sobre a MPC, mas é possível aprofundar bastante no assunto. Para quem estiver curioso, eu incluí alguns recursos adicionais no final.

Introdução à MPC

Este tem sido um grande tópico em criptografia desde os anos 80 (Andrew Yao foi pioneiro) e, mais recentemente, aplicado a ativos digitais. O protocolo permaneceu principalmente nos ambientes acadêmicos e teóricos até que a capacidade computacional e as melhorias algorítmicas nos anos 2000 tornaram possível sua implementação.

Como o nome indica, o objetivo da MPC é permitir que vários participantes compartilhem a capacidade de computar alguns dados. Vários participantes podem manter um pedaço de dados privados, como uma partição de uma chave privada. Cada pedaço pode ser usado para assinar uma transação sem revelar toda a chave privada ou mesmo as partes individuais.

Aqui está um caso de uso hipotético, conhecido como “Problema dos Milionários de Yao” (Yao's Millionaires' Problem, 1982): Imagine 2 amigos, Alice e Bob, que querem descobrir quem é mais rico sem revelar o patrimônio líquido exato de cada pessoa (experimente com seus amigos por sua conta e risco).

https://miro.medium.com/v2/resize:fit:1100/format:webp/1*a24sYly5JKeL9rWl4YOJ9w.png

https://www.researchgate.net/figure/Millionaires-problem_fig1_320290997

Neste cenário, a função a ser computada é:

F(x1,x2) = máx(x1,x2)

Usando a MPC, os 2 milionários podem descobrir quem ganha mais dinheiro sem precisar compartilhar exatamente quanto cada pessoa ganha. Cada pessoa traz os dados de seu salário, e a função pode indicar quem forneceu o maior valor.

O primeiro caso de uso comercial em larga escala da MPC foi em 2008, quando o protocolo foi usado na Dinamarca, durante um leilão de lance fechado para beterrabas. O lance mais alto vence o leilão, mas paga o preço proposto pelo segundo lance mais alto. A MPC foi usada para manter os preços dos lances em segredo enquanto determinava a classificação dos lances.

Relevância para o Gerenciamento de Chaves

Quando se trata de carteiras criptográficas, um dos maiores problemas hoje é a facilidade de perder ou ceder frases-semente. Isso se torna um único ponto de comprometimento.

Com a MPC, as chaves privadas não precisam mais ser armazenadas em um único local — porque a MPC quebra a chave em pedaços através da geração distribuída de chaves. Esses pedaços podem ser armazenados por vários participantes e em lugares diferentes.

Segredos individuais (partes da chave privada) são randomizados por um conjunto de pontos de extremidade (endpoints), sejam computadores ou dispositivos móveis. Os pontos de extremidade podem computar a chave pública (endereço da carteira) das partes privadas individuais — usando apenas sua porção da chave privada! A chave completa nunca é formada ou revelada em um só lugar.

Quando uma transação precisa ser assinada, o protocolo MPC convocará cada proprietário de parte independente para assinar a transação de maneira distribuída e privada.

A entrada de cada participante é alimentada em uma função. Esta entrada inclui sua parte secreta e uma mensagem privada. A saída é uma mensagem assinada. A assinatura digital pareceria exatamente como se fosse feita com uma única chave privada. Em seguida, é enviada para a rede blockchain para aprovar uma transação.

A MPC pode ser configurada para exigir que todas as chaves, ou um limiar de partes de chaves, estejam presentes ao mesmo tempo ou para que cada uma realize a computação em seu próprio tempo.

https://miro.medium.com/v2/resize:fit:1100/format:webp/1*2gGGlB6ODDf7nKt5W2k7_A.png

Axelar Network: Medidas de Segurança

Agora, se um hacker quiser acessar uma carteira, ele precisa encontrar uma maneira de acessar todas as partes da chave. Não basta apenas obter a chave de um indivíduo. No caso de organizações e equipes, várias pessoas agora podem acessar uma carteira sem que uma pessoa possa fugir com os fundos.

Relacionado: Limite de assinaturas digitais

TSS é quando é necessário um limiar de pelo menos m de n participantes para produzir uma assinatura, eliminando assim a necessidade de confiar em uma única entidade. Este protocolo pode ser combinado com a MPC para exigir um número mínimo de assinaturas para aprovar uma mensagem.

Multiassinaturas vs. MPC

A diferença entre multiassinaturas (multi-sig) e MPC é que, em vez de 1 chave ser dividida em várias partes mantidas por vários participantes (MPC), cada participante em um sistema de multiassinaturas possui sua própria chave privada. Para que a transação seja bem-sucedida, é necessário a aprovação de um limiar mínimo de signatários.

https://miro.medium.com/v2/0*Q5gV06u9vIylhTwr

https://docs.gnosis-safe.io/introduction/the-programmable-account/eoas-vs.-contract-accounts

Com a MPC, o processo de assinatura é distribuído em vários computadores, onde cada computador processa uma parte dos dados privados usando o pedaço de uma única chave. Juntas, as partes cooperam para assinar transações de forma distribuída.

Uma carteira de multiassinaturas criará assinaturas distintas usando chaves privadas distintas, enquanto a MPC é uma assinatura única de várias partes de uma chave privada.

Para que a multiassinatura funcione, a blockchain precisa suportá-la. Mas nem todas as cadeias suportam carteiras de multiassinaturas, que geralmente vêm na forma de um contrato inteligente. A MPC usa o algoritmo padrão de assinatura digital de curvas elípticas (ECDSA), que pode ser implementado pela grande maioria das blockchains.

Com multiassinaturas, também não é tão fácil oferecer suporte a dApps ou à maioria dos serviços DeFi, pois são necessárias múltiplas assinaturas para aprovar uma transação, o que é diferente do fluxo comum de um único clique na MetaMask.

Pete Kim, da Coinbase, colocou bem:

“Uma carteira movida a MPC (nós as chamamos de carteiras dApp) pode suportar tudo e qualquer coisa que uma carteira autocustodial normal possa. Não apenas enviando, recebendo e negociando, mas também usando dApps, DEXs, armazenando e negociando NFTs, votando em governança, cultivo de rendimento (yield farming), jogos web3, etc.”

Mesmo que a MPC produza apenas uma única assinatura, ela também possui uma estrutura de aprovação mais complexa. As carteiras MPC podem não ter a capacidade de determinar qual parte da chave foi usada para assinar a transação porque todas as partes de chave contribuem para a mesma assinatura. Com carteiras MPC, também há falta de suporte de módulos de segurança de hardware (HSM, também conhecidas como carteiras de hardware).

Exemplo de Multiassinaturas: Gnosis Safe

O Gnosis Safe permite que os usuários definam uma lista de contas proprietárias e um limiar mínimo de assinaturas necessárias para confirmar uma transação. Quando o limiar é atingido, uma transação segura pode ser executada.

Multiassinaturas requerem um número mínimo de pessoas para aprovar uma transação antes que ela possa ser processada. Se houver 3 partes interessadas em um negócio, você pode configurar o Gnosis Safe para que a aprovação venha de todas as 3 pessoas e para que a transação seja bem-sucedida. O Gnosis Safe também é autocustodial.

Para começar, você precisará de uma carteira de assinatura, como a MetaMask. O próprio Gnosis Safe não possui uma chave privada, portanto não pode assinar ou executar transações.

https://miro.medium.com/v2/resize:fit:1100/format:webp/0*1d67jPAt12yym-wv.png

https://gnosis-safe.io/static/df5a5bc44d16189df7e6b1cc9556a685/bc8e0/multisig.png

MPC em uso

Fireblocks

Atendendo a 1300 grandes players institucionais, a Fireblocks oferece uma plataforma para custódia de ativos digitais que envolve carteiras MPC, emissão/gerenciamento de tokens, bem como acesso ao DeFi. Seus clientes incluem bancos, exchanges, instituições de empréstimos, fundos de hedge, formadores de mercado e outras instituições.

Um dos clientes da Fireblocks, a Revolut (avaliada em 5,5 bilhões de dólares, sendo uma das maiores fintechs), está usando a MPC da Fireblocks para introduzir serviços criptográficos para 13 milhões de clientes globais de varejo. A infraestrutura é usada para fornecer trilhos de pagamento seguros para transferências de ativos digitais. Por meio da carteira MPC, a Revolut pode adicionar linhas de produtos e recursos voltados para o varejo que envolvem criptomoedas.

ZenGo

A ZenGo cria duas partes de chaves, uma armazenada em seu dispositivo móvel e outra no servidor da ZenGo. Isso significa que a ZenGo não pode acessar seus fundos, mas os usuários iniciam um processo no qual as partes do servidor e do dispositivo assinam a transação sem revelar o segredo de cada parte um ao outro.

https://miro.medium.com/v2/resize:fit:1100/format:webp/0*KCZABMJBQm-oiYWj.png

https://zengo.com/a-deep-dive-into-zengo-guaranteed-access-solution/

Coinbase

A Coinbase está lançando uma forma para os usuários explorarem dApps sem precisar gerenciar uma frase de recuperação, usando a MPC para dividir a chave entre os usuários e a Coinbase.

Conclusão

Ainda estamos nos primeiros estágios da MPC, que está se tornando uma escolha atraente para proteger ativos digitais de uma forma que preserva a experiência do usuário, evitando o armazenamento de uma chave privada inteira online, offline ou em um dispositivo físico (ponto único de comprometimento).

Ainda não vimos as carteiras MPC amplamente adotadas e utilizadas para interações sem interrupções na cadeia, semelhante à MetaMask. No entanto, é muito emocionante testemunhar esses esforços em torno de soluções que melhoram a segurança de usuários e organizações.

Fontes e Leitura Adicional

Mergulhos mais profundos

Artigo original publicado por Julia Wu. Traduzido por Paulinho Giovannini.

Oldest comments (0)