A computação multi-partes segura (também conhecida como computação segura, computação multi-partes (MPC) ou computação voltada à preservação da privacidade) é um subcampo da criptografia com o objetivo de criar métodos para que várias partes computem conjuntamente uma função sobre suas entradas, mantendo essas entradas privadas.[1] Ao contrário das tarefas criptográficas tradicionais, onde a criptografia garante a segurança e a integridade da comunicação ou do armazenamento e o adversário está fora do sistema de participantes (um interceptador entre o remetente e o receptor), a criptografia neste modelo protege a privacidade dos participantes uns dos outros.

As bases para a computação multi-partes segura começaram no final da década de 1970 com o trabalho sobre pôquer mental, um trabalho criptográfico que simula jogos ou tarefas computacionais a distância sem a necessidade de uma terceira parte confiável. Tradicionalmente, a criptografia tratava de ocultar conteúdo, enquanto este novo tipo de computação e protocolo trata de ocultar informações parciais sobre os dados enquanto se computa com dados de várias fontes, produzindo saídas corretas. No final da década de 1980, Michael Ben-Or, Shafi Goldwasser e Avi Wigderson, e independentemente David Chaum, Claude Crépeau e Ivan Damgård, publicaram artigos mostrando "como computar com segurança qualquer função no cenário de canais seguros".

História

editar

Protocolos de propósito específico para tarefas específicas começaram no final da década de 1970.[2] Mais tarde, a computação segura foi formalmente introduzida como computação de duas partes segura (2PC) em 1982 (para o chamado Problema dos Milionários, um problema específico que é um predicado booleano), e de forma generalizada (para qualquer computação viável) em 1986 por Andrew Yao.[3][4] A área também é referida como Avaliação de Função Segura (SFE). O caso de duas partes foi seguido por uma generalização para multi-partes por Oded Goldreich, Silvio Micali e Avi Wigderson. A computação baseia-se no compartilhamento de segredo de todas as entradas e em provas de conhecimento zero para um caso potencialmente malicioso, onde a maioria de jogadores honestos no cenário de adversário malicioso garante que o comportamento inadequado seja detectado e a computação continue com a pessoa desonesta eliminada ou sua entrada revelada. Este trabalho sugeriu o esquema geral básico a ser seguido por essencialmente todos os futuros protocolos multi-partes para computação segura.[5] Este trabalho introduziu uma abordagem, conhecida como paradigma GMW, para compilar um protocolo de computação multi-partes que é seguro contra adversários semi-honestos em um protocolo que é seguro contra adversários maliciosos. Este trabalho foi seguido pelo primeiro protocolo seguro robusto que tolera comportamentos falhos graciosamente sem revelar a saída de ninguém, através de um trabalho que inventou para este propósito a frequentemente utilizada "ideia de compartilhamento de compartilhamentos"[6] e um protocolo que permite que uma das partes oculte sua entrada incondicionalmente.[7] O paradigma GMW foi considerado ineficiente por anos devido às enormes sobrecargas que traz ao protocolo base. No entanto, foi demonstrado que é possível alcançar protocolos eficientes,[8] o que torna esta linha de pesquisa ainda mais interessante de uma perspectiva prática. Os resultados acima estão em um modelo onde o adversário é limitado a computações em tempo polinomial e observa todas as comunicações, sendo, portanto, chamado de "modelo computacional". Além disso, o protocolo de transferência inconsciente demonstrou ser completo para estas tarefas.[9] Os resultados acima estabeleceram que é possível, sob as variações mencionadas, alcançar a computação segura quando a maioria dos usuários é honesta.

A próxima questão a ser resolvida foi o caso de canais de comunicação segura onde a comunicação ponto-a-ponto não está disponível para o adversário; neste caso, foi mostrado que soluções podem ser alcançadas com até 1/3 das partes agindo de forma inadequada e maliciosa, e as soluções não aplicam ferramentas criptográficas (já que a comunicação segura está disponível).[10][11] A adição de um canal de difusão (broadcast) permite que o sistema tolere até 1/2 de minoria malcomportada,[12] enquanto as restrições de conectividade no grafo de comunicação foram investigadas no livro Perfectly Secure Message Transmission.[13]

Ao longo dos anos, a noção de protocolos multi-partes de propósito geral tornou-se uma área fértil para investigar propriedades básicas e gerais de protocolos, como a composição universal ou adversário móvel, como no compartilhamento de segredo proativo.[14]

Desde o final dos anos 2000, e certamente a partir de 2010, o domínio dos protocolos de propósito geral passou a lidar com melhorias de eficiência dos protocolos com aplicações práticas em mente. Protocolos cada vez mais eficientes para MPC foram propostos, e o MPC pode agora ser considerado uma solução prática para vários problemas da vida real (especialmente aqueles que requerem apenas o compartilhamento linear de segredos e principalmente operações locais sobre as fatias com pouca interação entre as partes), tais como votação distribuída, licitações e leilões privados, compartilhamento de funções de assinatura ou descriptografia e recuperação de informação privada.[15] A primeira aplicação prática e em larga escala de computação multi-partes foi a execução de um leilão duplo eletrônico no Leilão de Beterraba Açucareira da Dinamarca, ocorrido em janeiro de 2008.[16] Obviamente, são necessárias tanto noções teóricas e investigações quanto construções aplicadas (por exemplo, as condições para transformar o MPC em parte dos negócios cotidianos foram defendidas e apresentadas em[17]).

Em 2020, uma série de empresas que trabalham com computação multi-partes segura fundaram a MPC Alliance com o objetivo de "acelerar a conscientização, aceitação e adoção da tecnologia MPC".

Definição e visão geral

editar

Em um MPC, um dado número de participantes, p1, p2, ..., pN, cada um possui dados privados, respectivamente d1, d2, ..., dN. Os participantes desejam computar o valor de uma função pública sobre esses dados privados: F(d1, d2, ..., dN) enquanto mantêm suas próprias entradas em segredo.

Por exemplo, suponha que tenhamos três partes Alice, Bob e Charlie, com as respectivas entradas x, y e z denotando seus salários. Eles querem descobrir qual o maior dos três salários, sem revelar uns aos outros quanto cada um ganha. Matematicamente, isso se traduz na computação de:

F(x, y, z) = max(x, y, z)

Se houvesse alguma parte externa confiável (digamos, se eles tivessem um amigo mútuo, Tony, que soubessem que poderia guardar segredo), cada um poderia contar seu salário ao Tony, ele calcularia o máximo e diria esse número a todos eles. O objetivo do MPC é projetar um protocolo onde, trocando mensagens apenas entre si, Alice, Bob e Charlie ainda possam aprender F(x, y, z) sem revelar quem ganha o quê e sem ter que depender do Tony. Eles não devem aprender mais ao participar do protocolo do que aprenderiam interagindo com um Tony incorruptível e perfeitamente confiável.

Em particular, tudo o que as partes podem aprender é o que podem inferir da saída e da sua própria entrada. Portanto, no exemplo acima, se a saída for z, então Charlie aprende que seu z é o valor máximo, enquanto Alice e Bob aprendem (se x, y e z forem distintos) que sua entrada não é igual ao máximo, e que o máximo detido é igual a z. O cenário básico pode ser facilmente generalizado para casos onde as partes têm várias entradas e saídas, e a função produz valores diferentes para partes diferentes.

Informalmente falando, as propriedades mais básicas que um protocolo de computação multi-partes visa garantir são:

  • Privacidade de entrada: Nenhuma informação sobre os dados privados detidos pelas partes pode ser inferida a partir das mensagens enviadas durante a execução do protocolo. A única informação que pode ser inferida sobre os dados privados é o que puder ser inferido pela visualização da saída da função isoladamente.
  • Correção: Qualquer subconjunto adequado de partes adversárias em conluio, dispostas a compartilhar informações ou desviar-se das instruções durante a execução do protocolo, não deve ser capaz de forçar as partes honestas a produzir um resultado incorreto. Este objetivo de correção vem em dois sabores: ou as partes honestas têm a garantia de computar a saída correta (um protocolo "robusto"), ou elas abortam se encontrarem um erro (um protocolo MPC "com aborto").

Existe uma ampla gama de aplicações práticas, variando de tarefas simples, como o lançamento de moedas, a tarefas mais complexas, como leilões eletrônicos (por exemplo, calcular o preço de equilíbrio do mercado), votação eletrônica ou mineração de dados que preserva a privacidade. Um exemplo clássico é o Problema dos Milionários: dois milionários querem saber quem é mais rico, de tal forma que nenhum deles aprenda o patrimônio líquido do outro. Uma solução para esta situação é, essencialmente, avaliar de forma segura a função de comparação.

Definições de segurança

editar

Um protocolo de computação multi-partes deve ser seguro para ser eficaz. Na criptografia moderna, a segurança de um protocolo está relacionada a uma prova de segurança. A prova de segurança é uma prova matemática onde a segurança de um protocolo é reduzida à segurança de suas primitivas subjacentes. No entanto, nem sempre é possível formalizar a verificação de segurança do protocolo criptográfico baseando-se apenas no conhecimento da parte e na correção do protocolo. Para protocolos MPC, o ambiente no qual o protocolo opera é associado ao Paradigma Mundo Real/Mundo Ideal.[18] Não se pode dizer que as partes não aprendem nada, pois elas precisam aprender a saída da operação, e a saída depende das entradas. Além disso, a correção da saída não é garantida de forma absoluta, pois a correção da saída depende das entradas das partes, e as entradas devem ser assumidas como corretas.

O Paradigma Mundo Real/Mundo Ideal estabelece dois mundos: (i) No modelo de mundo ideal, existe uma parte confiável incorruptível para quem cada participante do protocolo envia sua entrada. Essa parte confiável computa a função por conta própria e envia de volta a saída apropriada para cada parte. (ii) Em contraste, no modelo de mundo real, não existe uma parte confiável e tudo o que as partes podem fazer é trocar mensagens entre si. Diz-se que um protocolo é seguro se for possível aprender não mais sobre as entradas privadas de cada parte no mundo real do que se poderia aprender no mundo ideal. No mundo ideal, nenhuma mensagem é trocada entre as partes, portanto, as mensagens trocadas no mundo real não podem revelar nenhuma informação secreta.

O Paradigma Mundo Real/Mundo Ideal fornece uma abstração simples das complexidades do MPC para permitir a construção de uma aplicação sob o pretexto de que o protocolo MPC em seu núcleo é, na verdade, uma execução ideal. Se a aplicação é segura no caso ideal, então ela também é segura quando um protocolo real é executado em seu lugar.

Os requisitos de segurança em um protocolo MPC são rigorosos. No entanto, em 1987 foi demonstrado que qualquer função pode ser computada com segurança, com segurança para adversários maliciosos[5] e os outros trabalhos iniciais mencionados anteriormente. Apesar dessas publicações, o MPC não foi projetado para ser eficiente o suficiente para ser usado na prática naquela época. O MPC incondicional ou teoricamente seguro em termos de informação está intimamente relacionado e baseia-se no problema do compartilhamento de segredo e, mais especificamente, no compartilhamento de segredo verificável (VSS), que muitos protocolos MPC seguros usam contra adversários ativos.

Ao contrário das aplicações criptográficas tradicionais, como criptografia ou assinatura, deve-se assumir que o adversário em um protocolo MPC é um dos jogadores envolvidos no sistema (ou que controla partes internas). Essa parte ou partes corrompidas podem conspirar para violar a segurança do protocolo. Seja o número de partes no protocolo e o número de partes que podem ser adversárias. Os protocolos e soluções para o caso de (ou seja, quando se assume uma maioria honesta) são diferentes daqueles onde tal suposição não é feita. Este último caso inclui o caso importante da computação de duas partes, onde um dos participantes pode ser corrompido, e o caso geral onde um número ilimitado de participantes é corrompido e conspira para atacar os participantes honestos.

Os adversários enfrentados pelos diferentes protocolos podem ser categorizados de acordo com sua disposição em se desviar do protocolo. Existem essencialmente dois tipos de adversários, cada um dando origem a diferentes formas de segurança (e cada um se encaixa em diferentes cenários do mundo real):

  • Segurança Semi-Honesta (Passiva): Neste caso, assume-se que as partes corrompidas apenas cooperam para coletar informações fora do protocolo, mas não se desviam da especificação do protocolo. Este é um modelo de adversário ingênuo, resultando em segurança fraca em situações reais. No entanto, protocolos que atingem este nível de segurança evitam o vazamento inadvertido de informações entre partes (que de outra forma seriam colaborativas) e são, portanto, úteis se esta for a única preocupação. Além disso, protocolos no modelo semi-honesto são bastante eficientes e são frequentemente um primeiro passo importante para alcançar níveis mais elevados de segurança.
  • Segurança Maliciosa (Ativa): Neste caso, o adversário pode desviar-se arbitrariamente da execução do protocolo em sua tentativa de trapacear. Protocolos que alcançam segurança neste modelo fornecem uma garantia de segurança muito alta. No caso de maioria de partes malcomportadas: a única coisa que um adversário pode fazer no caso de maioria desonesta é fazer com que as partes honestas "abortem" após detectarem a trapaça. Se as partes honestas obtiverem a saída, elas têm a garantia de que ela está correta. Sua privacidade é sempre preservada.

A segurança contra adversários ativos normalmente leva a uma redução na eficiência. A segurança encoberta (covert security)[19] é uma alternativa que visa permitir maior eficiência em troca do enfraquecimento da definição de segurança; ela é aplicável a situações onde adversários ativos estão dispostos a trapacear, mas apenas se não forem pegos. Por exemplo, sua reputação poderia ser danificada, impedindo a colaboração futura com outras partes honestas. Assim, protocolos que são encobertamente seguros fornecem mecanismos para garantir que, se algumas das partes não seguirem as instruções, isso será percebido com alta probabilidade, digamos 75% ou 90%. De certa forma, adversários encobertos são adversários ativos forçados a agir passivamente devido a preocupações externas não criptográficas (por exemplo, de negócios). Este mecanismo estabelece uma ponte entre ambos os modelos na esperança de encontrar protocolos que sejam eficientes e seguros o suficiente na prática.

Como muitos protocolos criptográficos, a segurança de um protocolo MPC pode basear-se em diferentes suposições:

  • Pode ser computacional (ou seja, baseada em algum problema matemático, como fatoração) ou incondicional, ou seja, baseando-se na indisponibilidade física de mensagens em canais (geralmente com alguma probabilidade de erro que pode ser tornada arbitrariamente pequena).
  • O modelo pode assumir que os participantes usam uma rede sincronizada, onde uma mensagem enviada em um "pulso" sempre chega no próximo "pulso", ou que existe um canal de difusão seguro e confiável, ou que existe um canal de comunicação seguro entre cada par de participantes onde um adversário não pode ler, modificar ou gerar mensagens no canal, etc.

O conjunto de partes honestas que podem executar uma tarefa computacional está relacionado ao conceito de estrutura de acesso. As estruturas de adversário podem ser estáticas, onde o adversário escolhe suas vítimas antes do início da computação multi-partes, ou dinâmicas, onde escolhe suas vítimas durante o curso da execução da computação multi-partes, tornando a defesa mais difícil. Uma estrutura de adversário pode ser definida como uma estrutura de limiar (threshold) ou como uma estrutura mais complexa. Em uma estrutura de limiar, o adversário pode corromper ou ler a memória de um número de participantes até um certo limite. Enquanto isso, em uma estrutura complexa, ele pode afetar certos subconjuntos predefinidos de participantes, modelando diferentes conluios possíveis.

Protocolos

editar

Existem grandes diferenças entre os protocolos propostos para computação de duas partes (2PC) e computação multi-partes (MPC). Além disso, frequentemente para protocolos de propósito especial de importância, um protocolo especializado que se desvia dos genéricos tem que ser projetado (votação, leilões, pagamentos, etc.)

Computação de duas partes

editar

O cenário de duas partes é particularmente interessante, não apenas de uma perspectiva de aplicações, mas também porque técnicas especiais podem ser aplicadas no cenário de duas partes que não se aplicam ao caso multi-partes. De fato, a computação multi-partes segura (na verdade, o caso restrito de avaliação de função segura, onde apenas uma única função é avaliada) foi apresentada pela primeira vez no cenário de duas partes. O trabalho original é frequentemente citado como sendo de um dos dois artigos de Yao;[20] embora os artigos não contenham realmente o que hoje é conhecido como protocolo de circuito embaralhado de Yao.

O protocolo básico de Yao é seguro contra adversários semi-honestos e é extremamente eficiente em termos de número de rodadas, que é constante e independente da função alvo sendo avaliada. A função é vista como um circuito booleano, com entradas em binário de comprimento fixo. Um circuito booleano é uma coleção de portas conectadas com três tipos diferentes de fios: fios de entrada do circuito, fios de saída do circuito e fios intermediários. Cada porta recebe dois fios de entrada e tem um único fio de saída que pode ter fan-out (ou seja, ser passado para múltiplas portas no nível seguinte). A avaliação simples do circuito é feita avaliando cada porta por vez, assumindo que as portas foram ordenadas topologicamente. A porta é representada como uma tabela de verdade tal que para cada par possível de bits (aqueles vindos dos fios de entrada da porta) a tabela atribui um único bit de saída; que é o valor do fio de saída da porta. Os resultados da avaliação são os bits obtidos nos fios de saída do circuito.

Yao explicou como embaralhar um circuito (esconder sua estrutura) para que duas partes, remetente e receptor, possam aprender a saída do circuito e nada mais. Em alto nível, o remetente prepara o circuito embaralhado e o envia ao receptor, que avalia o circuito de forma inconsciente, aprendendo as codificações correspondentes tanto à sua saída quanto à do remetente. Ele então apenas envia de volta as codificações do remetente, permitindo que este compute sua parte da saída. O remetente envia o mapeamento das codificações de saída do receptor para bits, permitindo que o receptor obtenha sua saída.

Em mais detalhes, o circuito embaralhado é computado da seguinte forma. O ingrediente principal é um esquema de criptografia simétrica de chave dupla. Dada uma porta do circuito, cada valor possível de seus fios de entrada (0 ou 1) é codificado com um número aleatório (rótulo). Os valores resultantes da avaliação da porta em cada um dos quatro pares possíveis de bits de entrada também são substituídos por rótulos aleatórios. A tabela de verdade embaralhada da porta consiste em criptografias de cada rótulo de saída usando seus rótulos de entrada como chaves. A posição dessas quatro criptografias na tabela de verdade é aleatorizada para que nenhuma informação sobre a porta seja vazada.

Para avaliar corretamente cada porta embaralhada, o esquema de criptografia possui as duas propriedades a seguir. Primeiro, os intervalos da função de criptografia sob quaisquer duas chaves distintas são disjuntos (com probabilidade esmagadora). A segunda propriedade diz que pode ser verificado eficientemente se um determinado texto cifrado foi criptografado sob uma determinada chave. Com essas duas propriedades, o receptor, após obter os rótulos para todos os fios de entrada do circuito, pode avaliar cada porta descobrindo primeiro qual dos quatro textos cifrados foi criptografado com seus rótulos de chave e, em seguida, descriptografando para obter o rótulo do fio de saída. Isso é feito de forma inconsciente, pois tudo o que o receptor aprende durante a avaliação são as codificações dos bits.

Os bits de entrada do remetente (ou seja, criador do circuito) podem ser apenas enviados como codificações para o avaliador; enquanto as codificações do receptor (ou seja, avaliador do circuito) correspondentes aos seus bits de entrada são obtidas através de um protocolo de transferência inconsciente (OT) 1-de-2. Um protocolo OT 1-de-2 permite que o remetente, possuindo dois valores C1 e C2, envie o solicitado pelo receptor (b um valor em {1,2}) de tal forma que o remetente não saiba qual valor foi transferido, e o receptor apenas aprenda o valor consultado.

Se estivermos considerando adversários maliciosos, mecanismos adicionais para garantir o comportamento correto de ambas as partes precisam ser fornecidos. Por construção, é fácil mostrar segurança para o remetente se o protocolo OT já for seguro contra adversário malicioso, pois tudo o que o receptor pode fazer é avaliar um circuito embaralhado que falharia em alcançar os fios de saída do circuito se ele se desviasse das instruções. A situação é muito diferente do lado do remetente. Por exemplo, ele pode enviar um circuito embaralhado incorreto que computa uma função que revela a entrada do receptor. Isso significaria que a privacidade não se mantém mais, mas como o circuito está embaralhado, o receptor não seria capaz de detectar isso. No entanto, é possível aplicar eficientemente provas de Conhecimento Zero para tornar este protocolo seguro contra adversários maliciosos com uma pequena sobrecarga em comparação com o protocolo semi-honesto.[8]

Protocolos multi-partes

editar

A maioria dos protocolos MPC, ao contrário dos protocolos 2PC e especialmente sob o cenário incondicional de canais privados, faz uso de compartilhamento de segredo. Nos métodos baseados em compartilhamento de segredo, as partes não desempenham papéis especiais (como em Yao, de criador e avaliador). Em vez disso, os dados associados a cada fio são compartilhados entre as partes, e um protocolo é então usado para avaliar cada porta. A função é agora definida como um "circuito" sobre um corpo finito, em oposição aos circuitos binários usados para Yao. Tal circuito é chamado de circuito aritmético na literatura, e consiste em "portas" de adição e multiplicação onde os valores operados são definidos sobre um corpo finito.

O compartilhamento de segredo permite distribuir um segredo entre um número de partes através da distribuição de fatias (shares) para cada parte. Dois tipos de esquemas de compartilhamento de segredo são comumente usados: o Compartilhamento de segredo de Shamir e o compartilhamento de segredo aditivo. Em ambos os casos, as fatias são elementos aleatórios de um corpo finito que somam o segredo no corpo; intuitivamente, a segurança é alcançada porque qualquer conjunto de fatias não qualificado parece distribuído aleatoriamente.

Esquemas de compartilhamento de segredo podem tolerar um adversário que controla até t partes de um total de n partes, onde t varia com base no esquema; o adversário pode ser passivo ou ativo, e diferentes suposições são feitas sobre o poder do adversário. O esquema de compartilhamento de segredo de Shamir é seguro contra um adversário passivo quando e contra um adversário ativo quando , alcançando segurança teórica de informação, o que significa que mesmo que o adversário tenha poder computacional ilimitado, ele não pode aprender nenhuma informação sobre o segredo subjacente a uma fatia. O protocolo BGW,[21] que define como computar adição e multiplicação em fatias de segredo, é frequentemente usado para computar funções com fatias de segredo de Shamir. Esquemas de compartilhamento de segredo aditivo podem tolerar que o adversário controle todas as partes menos uma, ou seja, , mantendo a segurança contra um adversário passivo e ativo com poder computacional ilimitado. Alguns protocolos requerem uma fase de configuração (setup), que pode ser segura apenas contra um adversário computacionalmente limitado.

Vários sistemas implementaram diversas formas de MPC com esquemas de compartilhamento de segredo. O mais popular é o SPDZ,[22] que implementa MPC com fatias de segredo aditivas e é seguro contra adversários ativos.

Outros protocolos

editar

Em 2014, um "modelo de justiça em computação segura no qual uma parte adversária que aborta ao receber a saída é forçada a pagar uma multa monetária previamente definida" foi descrito para a rede Bitcoin ou para loteria justa, e foi implementado com sucesso no Ethereum.[23][24]

Sistemas MPC práticos

editar

Muitos avanços foram feitos em sistemas 2PC e MPC nos últimos anos.

Em 2025, a empresa Partisia, co-fundada por Ivan Damgård, demonstrou várias aplicações práticas de MPC no campo da identidade digital e privacidade. Em colaboração com a Toppan e o Instituto de Ciência e Tecnologia de Okinawa, a Partisia executou uma prova de conceito no Japão usando reconhecimento facial e identificadores descentralizados para construir um sistema de identificação estudantil que preserva a privacidade e está em conformidade com os padrões eIDAS 2.0. O sistema comparou dados biométricos usando MPC sem descriptografá-los, permitindo a verificação e mantendo a privacidade total. A Partisia também fez parcerias com entidades na Dinamarca, Colômbia e Estados Unidos para aplicar o MPC em análises de saúde, identidade digital transfronteiriça e troca segura de dados bancários.[25]

Protocolos baseados em Yao

editar

Um dos principais problemas ao trabalhar com protocolos baseados em Yao é que a função a ser avaliada com segurança (que pode ser um programa arbitrário) deve ser representada como um circuito, geralmente consistindo de portas XOR e AND. Como a maioria dos programas do mundo real contém loops e estruturas de dados complexas, esta é uma tarefa altamente não trivial. O sistema Fairplay[26] foi a primeira ferramenta projetada para enfrentar esse problema. O Fairplay compreende dois componentes principais. O primeiro deles é um compilador que permite aos usuários escrever programas em uma linguagem simples de alto nível e gerar esses programas em uma representação de circuito booleano. O segundo componente pode então embaralhar (garble) o circuito e executar um protocolo para avaliar com segurança o circuito embaralhado. Além da computação de duas partes baseada no protocolo de Yao, o Fairplay também pode realizar protocolos de múltiplas partes. Isso é feito usando o protocolo BMR,[26] que estende o protocolo passivamente seguro de Yao para o caso ativo.

Nos anos seguintes à introdução do Fairplay, muitos aprimoramentos ao protocolo básico de Yao foram criados, tanto na forma de melhorias de eficiência quanto em técnicas para segurança ativa. Estas incluem técnicas como o método "free XOR", que permite uma avaliação muito mais simples de portas XOR, e a redução de linhas embaralhadas (garbled row reduction), reduzindo o tamanho das tabelas embaralhadas com duas entradas em 25%.[27]

A abordagem que até agora parece ser a mais frutífera na obtenção de segurança ativa vem de uma combinação da técnica de embaralhamento e do paradigma "cut-and-choose" (cortar e escolher). Esta combinação parece resultar em construções mais eficientes. Para evitar os problemas mencionados anteriormente em relação ao comportamento desonesto, muitos embaralhamentos do mesmo circuito são enviados do construtor para o avaliador. Então, cerca de metade deles (dependendo do protocolo específico) são abertos para verificar a consistência e, se estiverem corretos, uma vasta maioria dos não abertos estará correta com alta probabilidade. A saída é o voto majoritário de todas as avaliações. Aqui, a saída majoritária é necessária. Se houver divergência nas saídas, o receptor sabe que o remetente está trapaceando, mas não pode reclamar, pois, do contrário, isso vazaria informações sobre sua entrada.

Esta abordagem para segurança ativa foi iniciada por Lindell e Pinkas.[28] Esta técnica foi implementada por Pinkas et al. em 2009,[27] fornecendo a primeira avaliação de duas partes ativamente segura do circuito Advanced Encryption Standard (AES), considerado uma função não trivial e altamente complexa (consistindo de cerca de 30.000 portas AND e XOR), levando cerca de 20 minutos para computar e exigindo 160 circuitos para obter uma probabilidade de trapaça de .

Como muitos circuitos são avaliados, as partes (incluindo o receptor) precisam se comprometer com suas entradas para garantir que em todas as iterações os mesmos valores sejam usados. Os experimentos relatados por Pinkas et al.[27] mostram que o gargalo do protocolo reside nas verificações de consistência. Eles tiveram que enviar pela rede cerca de 6.553.600 compromissos (commitments) de vários valores para avaliar o circuito AES. Em resultados recentes,[29] a eficiência das implementações baseadas em Yao ativamente seguras foi melhorada ainda mais, exigindo apenas 40 circuitos e um número muito menor de compromissos para obter uma probabilidade de trapaça de . As melhorias vêm de novas metodologias para realizar o cut-and-choose nos circuitos transmitidos.

Mais recentemente, houve um foco em implementações altamente paralelas baseadas em circuitos embaralhados, projetadas para serem executadas em CPUs com muitos núcleos. Kreuter, et al.[30] descrevem uma implementação executada em 512 núcleos de um poderoso cluster de computadores. Usando esses recursos, eles puderam avaliar a função de distância de edição de 4095 bits, cujo circuito compreende quase 6 bilhões de portas. Para realizar isso, eles desenvolveram um compilador de circuitos personalizado e melhor otimizado que o Fairplay, além de várias novas otimizações, como pipelining, em que a transmissão do circuito embaralhado pela rede começa enquanto o resto do circuito ainda está sendo gerado. O tempo para computar o AES foi reduzido para 1,4 segundos por bloco no caso ativo, usando uma máquina de cluster de 512 nós, e 115 segundos usando um nó. Shelat e Shen[31] melhoraram isso, usando hardware comum, para 0,52 segundos por bloco. O mesmo artigo relata um rendimento (throughput) de 21 blocos por segundo, mas com uma latência de 48 segundos por bloco.

Enquanto isso, outro grupo de pesquisadores investigou o uso de GPUs de nível de consumidor para alcançar níveis semelhantes de paralelismo.[32] Eles utilizam extensões de transferência oblíqua e algumas outras técnicas inovadoras para projetar seu protocolo específico para GPU. Esta abordagem parece alcançar uma eficiência comparável à implementação de computação em cluster, usando um número semelhante de núcleos. No entanto, os autores relatam apenas uma implementação do circuito AES, que possui cerca de 50.000 portas. Por outro lado, o hardware necessário aqui é muito mais acessível, já que dispositivos semelhantes já podem ser encontrados em computadores desktop ou consoles de videogame de muitas pessoas. Os autores obtêm um tempo de 2,7 segundos por bloco AES em um desktop padrão, com uma GPU padrão. Se permitirem que a segurança diminua para algo semelhante à segurança encoberta (covert security), eles obtêm um tempo de execução de 0,30 segundos por bloco AES. No caso de segurança passiva, há relatos de processamento de circuitos com 250 milhões de portas, a uma taxa de 75 milhões de portas por segundo.[33]

Implementações de análises de dados por computação multipartidária segura

editar

Uma das principais aplicações da computação multipartidária segura é permitir a análise de dados mantidos por múltiplas partes, ou a análise cega de dados por terceiros sem permitir que o custodiante dos dados entenda o tipo de análise de dados que está sendo realizada.

Sistemas de Demonstração e Produção

editar
Análise Custodiantes dos Dados Provedor de Tecnologia Ano de Introdução Notas Ainda em uso?
Relatório do Boston Women's Workforce Council[34] Empregadores da área de Boston Universidade de Boston 2016
Conjuntos de dados do Condado de Allegheny[35][36][37][38] Múltiplos conjuntos de dados de diferentes escritórios do condado Galois e o Bipartisan Policy Center 2018

Bibliotecas de Software

editar
Nome Desenvolvedor Ano de Introdução Notas Ainda mantida?
SEPIA - Security through Private Information Aggregation
SCAPI - Secure Computation API[39]
PALISADE - Homomorphic Encryption Library[40]
MP-SPDZ - Um framework versátil para computação multipartidária [41] Data61 da CSIRO 2018 40 variantes de protocolo, foco em funcionalidade de aprendizado de máquina Desde 2023
Stoffel - Um framework para computação multipartidária robusta[42] Stoffel Labs Inc. 2025 Sim

Ver também

editar

Referências

editar
  1. Evans, David; Kolesnikov, Vladimir; Rosulek, Mike (2018). «A Pragmatic Introduction to Secure Multi-Party Computation» (PDF). securecomputation.org (em inglês). Consultado em 19 de outubro de 2024. Cópia arquivada (PDF) em 12 de agosto de 2024 
  2. A. Shamir, R. Rivest, and L. Adleman, "Mental Poker", Technical Report LCS/TR-125, Massachusetts Institute of Technology, April 1979.
  3. Andrew C. Yao, Protocols for secure computations (extended abstract)
  4. Andrew Chi-Chih Yao:How to Generate and Exchange Secrets (Extended Abstract). FOCS 1986: 162-167 [1]
  5. a b Oded Goldreich, Silvio Micali, Avi Wigderson:How to Play any Mental Game or A Completeness Theorem for Protocols with Honest Majority. STOC 1987: 218-229 [2]
  6. Zvi Galil, Stuart Haber, Moti Yung: Cryptographic Computation: Secure Fault-Tolerant Protocols and the Public-Key Model. CRYPTO 1987: 135-155 [3]
  7. David Chaum, Ivan Damgård, Jeroen van de Graaf: Multiparty Computations Ensuring Privacy of Each Party's Input and Correctness of the Result. 87-119 [4]
  8. a b Abascal, Jackson; Faghihi Sereshgi, Mohammad Hossein; Hazay, Carmit; Ishai, Yuval; Venkitasubramaniam, Muthuramakrishnan (30 de outubro de 2020). «Is the Classical GMW Paradigm Practical? The Case of Non-Interactive Actively Secure 2PC». Proceedings of the 2020 ACM SIGSAC Conference on Computer and Communications Security. Col: CCS '20. Virtual Event, USA: Association for Computing Machinery. pp. 1591–1605. ISBN 978-1-4503-7089-9. doi:10.1145/3372297.3423366 
  9. Joe Kilian: Founding Cryptography on Oblivious Transfer. STOC 1988: 20-31 [5]
  10. D. Chaum, C. Crepeau; I. Damgard. «Multiparty unconditionally secure protocols». Stoc 1988  Verifique o valor de |name-list-format=amp (ajuda)
  11. Michael Ben-Or, Shafi Goldwasser, Avi Wigderson: Completeness Theorems for Non-Cryptographic Fault-Tolerant Distributed Computation (Extended Abstract). STOC 1988: 1-10
  12. Tal Rabin, Michael Ben-Or: Verifiable Secret Sharing and Multiparty Protocols with Honest Majority (Extended Abstract). STOC 1989: 73-85 [6]
  13. Danny Dolev, Cynthia Dwork, Orli Waarts, Moti Yung: Perfectly Secure Message Transmission. J. ACM 40(1): 17-47 (1993)[7]
  14. Rafail Ostrovsky, Moti Yung: How to Withstand Mobile Virus Attacks. PODC 1991. pp. 51-59 [8]
  15. Claudio Orlandi: Is multiparty computation any good in practice?, ICASSP 2011
  16. Peter Bogetoft, Dan Lund Christensen, Ivan Damgård, Martin Geisler, Thomas Jakobsen, Mikkel Krøigaard, Janus Dam Nielsen, Jesper Buus Nielsen, Kurt Nielse, Jakob Pagter, Michael Schwartzbach and Tomas Toft (2008). «Multiparty Computation Goes Live». Cryptology ePrint Archive (Report 2008/068) 
  17. Moti Yung: From Mental Poker to Core Business: Why and How to Deploy Secure Computation Protocols? ACM Conference on Computer and Communications Security 2015: 1-2 https://dl.acm.org/citation.cfm?doid=2810103.2812701
  18. Michael Backes, Birgit Pfitzmann, and Michael Waidner. "A general composition theorem for secure reactive systems." In Theory of Cryptography Conference, pp. 336-354. Springer, Berlin, Heidelberg, 2004.
  19. Y. Aumann; Y. Lindell. «Security against covert adversaries». TCC 2007  Verifique o valor de |name-list-format=amp (ajuda)
  20. Andrew C. Yao, "How to generate and exchange secrets," SFCS '86 Proceedings of the 27th Annual Symposium on Foundations of Computer Science, pp. 162-167, 1986.
  21. Ben-Or, Michael; Goldwasser, Shafi; Wigderson, Avi (1 de janeiro de 1988). «Completeness theorems for non-cryptographic fault-tolerant distributed computation». Proceedings of the twentieth annual ACM symposium on Theory of computing - STOC '88. [S.l.]: ACM. pp. 1–10. ISBN 978-0897912648. doi:10.1145/62212.62213 
  22. I. Damgård, V. Pastro, N. Smart and S. Zakarias, "Multiparty computation from somewhat homomorphic encryption," Crypto 2012, vol. Springer LNCS 7417, pp. 643-662, 2012.
  23. Iddo Bentov, Ranjit Kumaresan (2014). «How to Use Bitcoin to Design Fair Protocols» (PDF). Cryptology e Print (129): 1–38. Consultado em 9 de outubro de 2014 
  24. Mikhail Kalinin, Danny Ryan, Vitalik Buterin (2021). «EIP-3675: Upgrade consensus to Proof-of-Stake». Ethereum Improvement Proposals. Consultado em 16 de outubro de 2023 
  25. Borak, Masha (21 de agosto de 2025). «Multi-party computation is trending for digital ID privacy: Partisia explains why». Biometric Update. Consultado em 11 de setembro de 2025 
  26. a b A. Ben-David, N. Nisan and B. Pinkas, "FairplayMP: a system for secure multi-party computation," ACM CCS 2008, pp. 257–266, 2008.
  27. a b c B. Pinkas, T. Schneider, N. Smart and S. Williams, "Secure two-party computation is practical," Asiacrypt 2009, vol. Springer LNCS 5912, pp. 250–267, 2009.
  28. Y. Lindell and B. Pinkas, "An efficient protocol for secure two-party computation in the presence of malicious adversaries," Eurocrypt 2007, vol. Springer LNCS 4515, pp. 52-78, 2007.
  29. Y. Lindell, "Fast cut-and-choose based protocols for malicious and covert adversaries," Crypto 2013, vol. Springer LNCS 8043, pp. 1-17, 2013.
  30. B. Kreuter, a. shalet and C.-H. Shen, "Billion gate secure computation with malicious adversaries," USENIX Security Symposium 2012, pp. 285–300, 2012.
  31. A. Shelat and C.-H. Shen, "Fast two-party secure computation with minimal assumptions," ACM CCS 2013, pp. 523–534, 2013.
  32. T. Frederiksen and J. Nielsen, "Fast and maliciously secure two-party computation using the GPU, "ACNS 2013, vol. Springer LNCS 7954, pp. 339–356, 2013.
  33. Y. Huang, J. Katz and D. Evans, "Efficient secure two-party computation using symmetric cut-and-choose.," CRYPTO, vol. Springer LNCS 8043, pp. 18-35, 2013.
  34. «Boston Women's Workforce Council Report» (PDF). Boston Women's Workforce Council. Janeiro de 2017. Consultado em 14 de fevereiro de 2024 
  35. «BPC Partners with Allegheny County on New Privacy-Preserving Data Project | Bipartisan Policy Center» 
  36. Hart, N.R.; Archer, D.W.; Dalton, E. (março de 2019). «Privacy-Preserved Data Sharing for Evidence-Based Policy Decisions» (PDF). Bipartisan Policy Center. Consultado em 14 de fevereiro de 2024 
  37. Relatório Técnico Galois 2018
  38. «Route Fifty». 25 de agosto de 2023 
  39. «SCAPI: The Secure Computation API Library | BIU Cyber Center». Consultado em 29 de setembro de 2022. Cópia arquivada em 4 de junho de 2023 
  40. «PALISADE / PALISADE Release · GitLab». palisade-crypto.org. Consultado em 7 de janeiro de 2025 
  41. «Welcome to MP-SPDZ's documentation! — MP-SPDZ documentation». mp-spdz.readthedocs.io. Consultado em 7 de janeiro de 2025 
  42. «Stoffel - MPC Made Simple | Privacy-First Application Development». stoffelmpc.com. Consultado em 26 de janeiro de 2026 

Leitura adicional

editar

📚 Artikel Terkait di Wikipedia

Prova de conhecimento

protocols Cramer, Ronald (1996). Modular Design of Secure yet Practical Cryptographic Protocols (Ph.D. thesis). CWI and University of Amsterdam  Proof Systems