• Nenhum resultado encontrado

F 2 corpo finito com dois elementos

5.3 Definição Adotada de Justiça

Como mencionamos anteriormente, a noção de justiça adotada no decorrer deste trabalho estabelece que participantes desonestos sejam monetariamente penalizados por abortarem. Claro que, para chegar a uma formulação mais precisa, temos antes que definir o conceito de moeda. Definição 5.94 (Moedas, adaptado de BENTOV e KUMARESAN (2014)). Definimos moedas como entidades atômicas, intercambiáveis, mas distinguíveis entre si e que não podem ser duplicadas. Assumimos que somente o dono de uma moeda pode transferí-la ou gastá-la e que uma moeda não pode ter mais de um dono simultaneamente. Também assumimos que a validade de uma moeda pode ser prontamente verificada. Cada moeda possui um valor unitário. Para todo natural n denotamos valor(n) como o conjunto contendo n moedas.

O objetivo da Definição 5.94 é capturar as características de uma moeda real e, principal- mente, permitir a utilização direta do Bitcoin em nossas construções.

Formalizamos nossa definição de justiça a seguir.

Definição 5.95 (Justiça monetária, adaptado de BENTOV e KUMARESAN (2014)). Seja Π um protocolo (que pode ser o trivial) para computar uma m-funcionalidade f . Seja cio investimento

monetário feito pelo participante Pidurante o protocolo e rio valor recebido por Piapós o término

5.3. DEFINIÇÃO ADOTADA DE JUSTIÇA 110

 Um participante Pihonesto nunca paga qualquer penalidade (ri≥ ci),

 Se um participante Piaborta após receber sua saída e priva os demais de suas saídas, ou

seja, se Piquebra a justiça tradicional, então Pié penalizado (ri< ci) e todo participante

honesto é compensado (rh> ch, para todo Phhonesto).

Nos protocolos que apresentaremos, justos de acordo com a Definição 5.95, cada par- ticipante é obrigado a fazer um investimento monetário inicial. No final da computação, cada participante recebe uma quantidade de moedas definida de acordo com seu comportamento. Se ele tiver agido honestamente, receberá de volta pelo menos as moedas que gastou. Além disso, caso a justiça tradicional tenha sido quebrada, ele receberá também uma compensação. De modo geral, o saldo de um participante honesto no fim do protocolo é≥ 0 e do desonesto ≤ 0.

Para tornar a Definição 5.95 o mais geral possível, não especificamos o valor do investi- mento inicial nem o recebido ao fim da computação. Veremos que esses valores dependem, em geral, de um parâmetro preestabelecido q, que representa a multa por aborto. No entanto, cada protocolo pode definir uma estratégia própria de pagamento, como veremos no capítulo a seguir.

Adotamos a definição de justiça monetária, discutida no Capítulo 5, com o objetivo de utilizar o Bitcoin para a condução de computações justas. Neste capítulo exploraremos como isso será feito.

Começaremos discutindo o modelo de computação no qual as funcionalidades deste capítulo serão definidas. Precisamos adotar um modelo diferente do utilizado no Capítulo 4 principalmente porque necessitamos de mais expressividade para especificar as funcionalidades. Além disso, também precisamos de modificações para lidar com as funcionalidades especiais, as que manipulam moedas.

O ponto central deste capítulo é mostrar como o problema de se conduzir uma computação segura e justa se reduz ao problema da reconstrução justa de um segredo dividido. Em linhas gerais, para computar uma funcionalidade qualquer de maneira justa, vamos antes dividir sua saída entre os participantes de modo que ela se mantenha secreta. Em seguida, vamos conduzir uma computação multilateral para reconstruir essa saída de maneira monetariamente justa. Discutiremos essa ideia na Seção 6.2.

Tendo ressaltado a importância do problema da reconstrução justa, apresentaremos, nos próximos capítulos, soluções para ele utilizando o Bitcoin.

6.1 Modelo de Computação

No Capítulo 4, o modelo ideal de computação nos permitiu especificar funcionalidades de forma concisa, além de facilitar a análise de segurança dos protocolos. No entanto, esse modelo impõe algumas limitações. Para o restante do nosso trabalho, a principal delas é a falta de expressividade para lidar com funcionalidades reativas. Isso se deve ao fato da TPC só interagir com os demais componentes da computação em apenas duas ocasiões: ao receber entradas e ao entregar saídas. Esse tipo de interação é suficiente quando queremos computar funções de maneira segura. Para expressar computações mais complexas, no entanto, é necessário considerar interações também mais complexas com a TPC.

Neste capítulo, utilizaremos o modelo de computação de BENTOV e KUMARESAN (2014) que, por sua vez, é baseado no framework para segurança universalmente componível de CANETTI (2001). Em linhas gerais, esse framework tem como objetivo estabelecer um conceito fortalecido e abrangente de segurança, considerando, em especial, o cenário em que vários protocolos são executados simultaneamente em um mesmo ambiente. De fato, CANETTI (2001) define a operação de composição universal que é um caso geral das composições mais comuns, como a paralela, a concorrente e a sequencial. Essa operação garante que os protocolos tenham sua segurança preservada mesmo quando compostos com protocolos arbitrários e em situações não previstas. Ela também possibilita a modularização tanto do projeto quanto da análise dos protocolos.

6.1. MODELO DE COMPUTAÇÃO 112

No modelo de computação adotado, assim como em CANETTI (2001), o ambiente de execução é representado por uma entidade algorítmicaE . Ela é a responsável por fornecer as entradas dos participantes e, ao longo da execução, pode interagir livremente com o adversário ideal S (ou real A).

Seguindo BENTOV e KUMARESAN (2014), assumimos a existência de canais ponto- a-ponto seguros e síncronos. Isso difere do modelo de comunicação extremamente simples utilizado em CANETTI (2001), o qual é chamado de “modelo despido” (bare model). No entanto, CANETTI (2001) discute como outros canais podem ser construídos sobre esse modelo mais simples.

De maneira semelhante ao que fizemos no Capítulo 4, CANETTI (2001) define a exe- cução ideal de uma funcionalidade f como sua execução por uma TPC. A diferença é que a TPC pode interagir livremente com os participantes e com o adversário durante a execução. Isso se dá através da troca de mensagens, do recebimento de entradas e do envio de saídas. O comportamento da TPC pode depender das interações anteriores e do estado corrente do protocolo. Por isso a TPC pode guardar informações a respeito do estado da execução. Na execução ideal não há interação entre os participantes.

Já na execução real, os participantes interagem entre si, cada qual com sua estratégia, para emular o funcionamento da TPC.

A segurança universalmente componível se baseia na capacidade do ambienteE distinguir entre as execuções ideal e real. Registramos essa definição a seguir.

Definição 6.96 (Segurança universalmente componível). Seja f uma funcionalidade e Π um protocolo que computa f . Dizemos que Π computa f com segurança universalmente compo- nível, ou simplesmente que Π uc-realiza f se, para todo adversário A não uniforme de tempo polinomial probabilístico (no parâmetro de segurança λ ) atacando Π, existe um adversário S não uniforme de tempo polinomial probabilístico atacando f tal que:

{IDEALf,S,E(λ , z)}λ∈N,z∈{0,1}∗ c

≡ {REALΠ,A,E(λ , z)}λ∈N,z∈{0,1}∗

em que IDEALf,S,E(λ , z) é a saída deE na execução ideal com parâmetro de segurança λ e

entrada z. O significado de REALΠ,A,E(λ , z) é semelhante.

Outro conceito importante definido em CANETTI (2001) é o de execução híbrida, análogo ao de execução com auxílio oracular que definimos no Capítulo 4. Dizemos que um protocolo Πf para computar f é g-híbrido se, em sua execução, são feitas chamadas à um oráculo

para a funcionalidade g. Se Πgé um protocolo para computar g, então a operação de composição

universal utiliza Πf e Πgpara construir um protocolo Π0f que computa f sem usar o oráculo

para g. Além disso, se Πf e Πgpossuem segurança universalmente componível, então o teorema

da composição universal garante que Π0f também possui segurança universalmente componível. Até agora nós citamos características do framework para segurança universalmente componível que são relevantes para o restante do nosso trabalho. No entanto, esse é um

frameworkmuito rico e poderoso, possuindo vários detalhes que serão omitidos. Ele permite, por exemplo, a modelagem de adversários adaptativos (que corrompem participantes durante a execução) e de protocolos com número variável de participantes. Além de conferir um alto grau de segurança a seus protocolos, como já mencionamos.

Além das definições básicas retiradas de CANETTI (2001), no nosso modelo de compu- tação, seguindo a apresentação de BENTOV e KUMARESAN (2014), cada participante possui duas estruturas auxiliares para armazenamento de moedas: a carteira e o cofre. Para iniciar um protocolo, cada participante deve transferir de sua carteira para seu cofre a quantidade necessária de moedas. O comportamento honesto de um participante que não tem moedas suficientes em sua carteira para fazer esse investimento inicial é simplesmente não tentar participar do protocolo.

Assumimos que apenas o ambienteE pode alterar o conteúdo das carteiras dos partici- pantes honestos. Os cofres desses participantes, no entanto, estão fora do alcance deE . Durante a execução de um protocolo, possíveis créditos e débitos de moedas são feitos nos cofres dos participantes. No final do protocolo, cada participante transfere suas moedas do cofre de volta para a carteira. Por fim, assumimos que o adversário tem total controle tanto sobre a carteira quanto sobre o cofre dos participantes desonestos.

Chamaremos uma funcionalidade de especial se ela lida com moedas. Caso contrário a chamaremos de tradicional. Quando não houver ambiguidade, chamaremos apenas de funciona- lidade. Usaremos a mesma definição de segurança universalmente componível (Definição 6.96) em ambos os casos.

Como observação final, ressaltamos que a principal motivação para utilizarmos um modelo de computação semelhante ao apresentado em CANETTI (2001) é a sua expressividade e modularidade. Nós esperamos usufruir de suas garantias de segurança, mas os resultados em CANETTI (2001) não cobrem, naturalmente, os conceitos e estruturas auxiliares com os quais aumentamos o modelo, como moedas, cofres e carteiras. Por isso, embora os protocolos que exibiremos sejam seguros de acordo com a Definição 6.96 e possuam características importantes como a interação on-line com o ambiente, não podemos, a princípio, utilizar diretamente os resultados de segurança e composição de CANETTI (2001).

6.2 Computação Justa Através da Reconstrução Justa