Computação Multipartidária Segura

Luís Pedro Pinto
Chainlink Community
5 min readApr 14, 2023

A computação multipartidária segura (do inglês Secure Multiparty Computation — sMPC), às vezes chamada de computação segura, computação multipartidária (MPC) ou computação de preservação de privacidade, é um método criptográfico transformador. Este permite que várias partes calculem uma função usando entradas privadas e visualizem uma saída pública — sem nunca revelar suas entradas para as outras partes. Da pesquisa médica à IA e à Web3, a sMPC está fortalecendo a privacidade dos dados e promovendo a colaboração.

O Que é Computação Multipartidária Segura?

Explicação Básica

A sMPC permite a funcionalidade de “caixa negra”, onde diversos utilizadores podem trabalhar num cálculo juntas usando informações privadas. Mesmo que todos possam ver o resultado, os dados pessoais são mantidos em segredo.

Explicação Intermediária

A sMPC permite a computação em conjunto de diversos usuários, mantendo a confidencialidade dos inputs individuais e produzindo um output correto. É usada criptografia e o compartilhamento secreto (do inglês Secret Sharing) para garantir a privacidade e a segurança durante o processo de computação.

Explicação Avançada

A sMPC usa primitivas criptográficas como compartilhamento secreto (por exemplo, Shamir), criptografia homomórfica (por exemplo, Paillier, ElGamal) e provas de conhecimento zero (por exemplo, zk-SNARKs, zk-STARKs) para permitir um determinado número (n) de participantes, cada um com data (d1, d2, …, dn) para calcular uma função pública nesses dados F(d1, d2, …, dn), sem que nenhum participante saiba informações sobre a entrada de outro.

Os protocolos sMPC devem garantir:

  • Privacidade: Nenhuma parte pode ver ou deduzir entradas privadas de qualquer outra parte.
  • Precisão: As partes que se desviam das instruções do protocolo não podem forçar participantes honestos a produzir um resultado incorreto.

Por que é importante a sMPC?

A sMPC é importante para transações financeiras, pesquisa médica, votação distribuída, licitações e leilões privados e processos de aprendizagem de IA/ML em que informações confidenciais precisam de ser processadas ou analisadas. É permitido aos usuários que protejam as informações privadas enquanto participam em sistemas compartilhados.

História da Computação Multipartidária (MPC)

O desenvolvimento da MPC remonta ao final da década de 1970, com a introdução de protocolos de finalidade especiais para tarefas específicas. Em 1982, Andrew Yao introduziu formalmente a computação bipartidária segura, estendendo-a posteriormente para a computação multipartidária. Desde o final dos anos 2000, o foco mudou para aumentar a eficiência e a praticidade desses protocolos para votação, assinaturas, leilões e muito mais. No final da década de 2010, os custodiantes de ativos digitais começaram a usar o MPC para proteger ativos digitais. Para promover ainda mais a tecnologia MPC, empresas especializadas em computação multipartidária segura estabeleceram a MPC Alliance em 2020.

Como Funciona a Computação Multipartidária Segura?

Num protocolo sMPC típico, cada parte mantém um pedaço de dados privados e deseja calcular uma função que requer entradas de todas as partes. Por meio do protocolo, as partes usam técnicas de preservação da privacidade para trocar dados de entrada, como criptografia ou compartilhamentos mascarados, e então calculam coletivamente a função.

Exemplo de MPC

Exemplo de MPC para calcular o salário médio por hora (Fonte)

Imagine que três colegas de trabalho, Alice, Bob e Cynthia, desejam saber o salário médio por hora, mas não querem partilhar o valor dos salários entre eles. Primeiro, dividem cada salário em quatro valores que somam seus ganhos por hora. Em seguida, eles mantêm um desses números e compartilham um com os outros colegas de trabalho junto com um terceiro confiável (na imagem, Trusted Third-Party). Agora, cada parte calcula a média dos números que recebeu. Finalmente, essas médias são compartilhadas e somadas para fornecer o salário médio por hora. Embora todos conheçam a média, eles não conhecem os ganhos individuais uns dos outros.

Embora este exemplo use uma técnica de compartilhamento de segredo aditiva relativamente simples, é possível explorar um exemplo matemático mais avançado neste artigo.

Computação Bipartidária vs Computação Multipartidária

A computação de duas partes é um subconjunto da computação de várias partes, limitada a dois participantes. Andrew Yao introduziu a computação de duas partes para resolver o famoso “Problema do Milionário” de dois milionários que querem saber quem é mais rico sem revelar a sua riqueza real. A computação de duas partes foi posteriormente expandida para um formato multipartidário graças ao protocolo Goldreich-Micali-Wigderson.

Benefícios da Computação Multipartidária Segura

A sMPC fornece uma série de benefícios para indivíduos, desenvolvedores, organizações e grupos de pesquisa:

  • Segurança aprimorada: Melhor proteção contra violações de dados, mantendo a confidencialidade dos dados durante todo o processo de computação.
  • Privacidade de dados: os usuários podem manter os dados confidenciais enquanto permitem que terceiros os usem em aplicativos, pesquisas, mecanismos de votação e muito mais.
  • Conformidade regulamentar: as organizações podem atender aos regulamentos de proteção de dados (por exemplo, GDPR, HIPAA) processando dados confidenciais sem expô-los, reduzindo o risco de não conformidade.
  • Colaboração: pesquisadores e instituições podem agregar e analisar com segurança dados de várias fontes sem comprometer a privacidade, promovendo a colaboração interinstitucional e o compartilhamento de conhecimento.
  • Altamente preciso: os resultados atendem aos níveis de precisão necessários para casos de uso de alto valor.
  • Segurança Quântica: dividir os dados e distribuí-los entre os participantes os torna seguros contra ataques quânticos.
  • Funcionalidade avançada: os aplicativos podem fornecer aos usuários funcionalidade avançada sem comprometer a segurança.

sMPC para Web3

Carteiras Web3 baseadas em MPC

O MPC permite que vários custodiantes usem parte de uma chave privada para assinar uma transação (Fonte)

Em um ambiente blockchain compatível com MPC, as chaves privadas de uma carteira Web3 podem ser divididas (fragmentadas) em várias partes. Para executar qualquer função, um número mínimo de participantes com fragmentos de chave deve participar. Isto aumenta a segurança e o controlo das operações da carteira.

Por exemplo, os custodiantes usam carteiras Web3 baseadas em MPC para proteger ativos digitais e assinar transações. Essas carteiras dividem uma chave privada em várias partes e, em seguida, usam o MPC quando desejam assinar uma transação.

MPC vs Carteiras Multisig

As carteiras multisig requerem várias chaves privadas para assinar uma transação (Fonte)

Semelhante ao processo de assinatura de várias assinaturas, o MPC pode desempenhar um papel fundamental ao permitir que várias entidades protejam ativos tokenizados em conjunto. Enquanto uma carteira multisig depende de várias chaves privadas para assinar uma transação, uma carteira MPC divide uma única chave em várias partes menores e procede à distribuição para cada custodiante.

Computação de preservação de privacidade

O design aberto de blockchains públicos como o Ethereum significa que os contratos inteligentes são públicos para qualquer um ler, e a natureza inerentemente isolada destes pode limitar a funcionalidade. Embora os dados possam ser computados off-chain em servidores centralizados, isso prejudicaria as garantias de segurança fornecidas pelas blockchains. Ao computar dados off-chain de maneira altamente segura e determinística, os protocolos Web3 podem acessar a computação que fornece funcionalidade avançada e confidencialidade.

Adaptado para o português de: https://blog.chain.link/secure-multi-party-computation-mcp/

By: Luís Pedro Pinto
Drop me a GM on Telegram | Follow me on LinkedIn or Twitter.

Please take a minute to join all the official Chainlink channels.
Discord | Telegram | Twitter

--

--