Sandrine Delouille * , Isabelle Boisseau **
2. De l'intervention de l'ORM : le rôle d'une expertise régionale
Com as definições de EVCSm,m e da versão estendida de uma funcionalidade, a redução
da computação segura e justa à reconstrução justa de um segredo dividido torna-se intuitiva. Como antecipamos de maneira introdutória, vamos dividir a computação segura e justa de uma funcionalidade f em duas etapas, de acordo com a definição a seguir.
Definição 6.99 (Computação segura e justa através da reconstrução justa). Seja f uma m- funcionalidade (tradicional) e z a saída de f para seus participantes quando computada sobre uma entrada qualquer. A computação segura e justa de f pode ser conduzida nas duas etapas a seguir:
E1. (Divisão de z em pedaços.) Os m participantes se engajam na computação segura (com tolerância ao aborto) de ˆf. Ao final desta etapa, de acordo com a Definição 6.98, para todo i∈ {1,··· ,m}, Pirecebe(Etiquetas, Pedaçosi).
E2. (Reconstrução de z.) Os m participantes se engajam em uma computação multilateral monetariamente justa para reconstrução de z. A entrada de cada participante nessa computação é seu pedaço de z recebido na etapa E1. Como a computação deve ser monetariamente justa, os participantes lidarão com moedas nesta etapa.
Como ˆf é uma funcionalidade tradicional, a etapa E1 da Definição 6.99 pode ser condu- zida de acordo com o resultado estabelecido pelo Teorema 4.89. Ressaltamos que, nessa etapa, todo aborto é considerado prematuro, isto é, não pode causar a quebra da justiça (tradicional) de f . De fato, um aborto na etapa E1 pode apenas quebrar a justiça de ˆf, fazendo com que alguns participantes recebam seus pedaços de z e outros não. No entanto, devido às propriedades do EVCSm,m utilizado em ˆf, esses pedaços não são suficientes para reconstruir a saída z. Por-
tanto, a justiça de f fica trivialmente protegida porque, ao final de E1, nenhum subconjunto de participantes pode reconstruir z.
Por outro lado, um aborto na etapa E2 pode, de fato, quebrar a justiça tradicional de f . Por isso ela precisa ser conduzida de maneira monetariamente justa.
A Definição 6.99 estabelece a redução que nos propomos a apresentar: uma funcionali- dade f pode ser computada de maneira segura e justa desde que a etapa E2 também o possa. Por isso, tudo o que precisamos fazer para computar f de maneira justa é resolver o problema da
reconstrução justa de um segredo. Apresentaremos, nos próximos capítulos, duas estratégias de resolução deste problema tendo o Bitcoin como plataforma.
118 7 RECONSTRUÇÃO JUSTA ATRAVÉS DA CONSTRUÇÃO ESCADA
Como discutimos no Capítulo 6, a computação justa de uma funcionalidade f qualquer se reduz a reconstrução justa de um segredo dividido. Neste capítulo apresentaremos uma estratégia para condução de reconstrução justa, a chamada construção escada. Discutiremos também sua correção e segurança e apresentaremos uma implementação baseada no Bitcoin.
7.1 Visão Geral
Como discutido no capítulo anterior, na etapa E2 de reconstrução da Definição 6.99, cada participante Pide uma m-funcionalidade f possui o elemento Pedaçosie a lista Etiquetas,
resultantes da aplicação do algoritmo Divide de um EVCSm,m à saída de f . O objetivo dessa
etapa é que cada participante consiga toda a lista Pedaços.
A construção escada é a proposta para reconstrução justa apresentada em BENTOV e KUMARESAN (2014). A unidade básica desse protocolo é a funcionalidade especial fcr para
crédito-ou-reembolso (claim-or-refund). Ela viabiliza o depósito, ou transferência, condicional de moedas entre dois participantes. Para reivindicar o depósito, o destinatário deve fornecer uma entrada que satisfaça um circuito lógico ϕ especificado pelo remetente. Nesse caso dizemos que o depósito foi creditado ou reivindicado. Se isso não acontecer antes de uma rodada τ, especificada pelo remetente, o depósito é reembolsado e o remetente recebe suas moedas de volta.
Representamos graficamente uma chamada à fcr para realizar uma transferência de c
moedas de Pipara Pj, com uma rodada limite τ e um circuito ϕ como:
Pi−→ϕ
c,τ Pj
.
A construção escada faz diversas chamadas à funcionalidade fcr, divididas em duas
etapas: a dos depósitos-escada (ladder deposits) e a dos depósitos-cobertura (roof deposits). Se mé a quantidade total de participantes, então m−1 depósitos-escada e m −1 depósitos-cobertura são realizados.
Nos depósitos-escada, para todo i∈ {1,··· ,m − 1}, o participante Pi+1utiliza fcrpara
transferir i· q moedas para Pisob a condição de Pisatisfazer o circuito ϕi+1,icom o conjunto
{Pedaços1,··· ,Pedaçosi} até a rodada τi. O valor q é uma multa por aborto preestabelecida. O
objetivo desses depósitos é possibilitar a revelação gradual dos elementos de Pedaços de modo que, no final da rodada τm−1, o participante Pmpossua todos esses elementos.
Os depósitos-cobertura, por sua vez, devem ser creditados na rodada τm. Neles, para
todo i∈ {1,··· ,m − 1}, o participante Pi utiliza fcr para transferir q moedas para Pm sob a
condição do circuito ϕmser satisfeito. Esse circuito, por sua vez, só é satisfeito pelo conjunto de
participantes recebem a lista Pedaços completa e conseguem, portanto, reconstruir a saída. Por outro lado, se Pmnão reivindicá-los, nenhum participante (honesto) consegue reconstruí-la.
De maneira semelhante ao que já havíamos definido, representamos graficamente uma chamada à fcrem que Pitransfere q moedas para Pjsob a condição de Pj apresentar o conjunto
{Pedaços1,··· ,Pedaçosj} até a rodada τ como
Pi Pedaços1,···,Pedaçosj −−−−−−−−−−−−→q,τ Pj ,
e usamos essa notação para esquematizar os depósitos escada e cobertura na Figura 7.1. Nela, os depósitos são enumerados de acordo com a ordem em que são feitos. A ordem dos depósitos- cobertura, no entanto, não é muito importante.
Como esquematizamos na Figura 7.1, cada depósito-escada tem a forma
Pi+1−−−−−−−−−−−−→Pedaços1,···,Pedaçosi
i·q,τi
Pi
. Para reivindicá-lo, o participante Pi precisa (i) do seu próprio pe-
daço (Pedaçosi) e (ii) do conjunto{Pedaços1,··· ,Pedaçosi−1}. A única maneira honesta de obter
(ii) é através do depósito-escada imediatamente “abaixo”, isto é, Pi−−−−−−−−−−−−−→Pedaços1,···,Pedaçosi−1 (i−1)·q,τi−1 Pi−1 . Por essa razão, um depósito-escada só pode ser creditado quando o logo abaixo dele também o for. Aplicando essa dependência repetidamente, concluímos que um depósito-escada só pode ser creditado quando todos os abaixo dele também o forem.
Quando Pi reivindica
Pi+1−−−−−−−−−−−−→Pedaços1,···,Pedaçosi
i·q,τi
Pi
, ele fica temporariamente com um saldo positivo de q moedas1. Se a reconstrução continuar de maneira honesta, esse saldo é perdido no depósito-cobertura Pi−−−−−−−−−−−−→Pedaços1,···,Pedaçosm q,τm Pm
e Pi termina a execução com saldo
zerado. No entanto, se algum depósito “acima” de
Pi+1−−−−−−−−−−−−→Pedaços1,···,Pedaçosi
i·q,τi
Pi
não for creditado, significando que houve um aborto, então Pitermina a execução com esse mesmo saldo positivo,
pois os depósitos-cobertura são reembolsados. Portanto, a noção de justiça da construção escada é compensar, no caso da ocorrência de um aborto, todos os participantes que publicaram seu pedaço do segredo através da reivindicação de um depósito-escada. Isso acontece mesmo que o adversário não tenha conseguido reconstruir a saída e, portanto, não tenha quebrado a justiça tradicional.
Outro ponto relevante da construção escada é que, se Pmfor honesto, ou todos recebem o
valor reconstruído ou ninguém recebe. Nesse caso, a decisão do adversário de abortar ou não é independenteda saída do protocolo.
1Justificativa: se i= 1, P
1 recebe q moedas no depósito
P2 Pedaços1 −−−−−→q,τ 1 P1
e não tem qualquer gasto. Se i6= 1, Pi gasta (i− 1) moedas no depósito
Pi Pedaços1,···,Pedaçosi−1 −−−−−−−−−−−−−→ (i−1)·q,τi−1 Pi−1
e recebe i· q moedas no depósito Pi+1 Pedaços1,···,Pedaçosi −−−−−−−−−−−−→ i·q,τi Pi