Uma loteria que você pode estar convencido de que é justo

27

(Desculpe, se isso é bem conhecido.) Gostaria de dar algum item a um dos agentes , para que o agente obtenha o item com probabilidade . Existe uma ferramenta criptográfica (ou outra) para que todo agente (e até todo observador) possa se convencer de que o desenho aleatório foi realmente justo?kp ijpi

Gil Kalai
fonte
1
Os agentes têm permissão para conhecer .. ? p kp0pk
Mike Samuel

Respostas:

19

Se estou entendendo o problema corretamente, parece que o público lança uma moeda do lado . Parece haver muitas maneiras de fazer isso se você assumir um pouco de compromisso. Um exemplo seria fazer com que cada parte gere um número inteiro aleatório entre 0 e , usando o comprometimento de bits para confirmar publicamente essa sequência de bits. Então, após a confirmação de cada agente, todos eles revelam publicamente seu número inteiro secreto. O agente vencedor é então o indexado pela soma dos números inteiros módulo . Se pelo menos um agente for honesto, o flip deve ser aleatório.k - 1 kkk1k

Obviamente, um problema disso é que exige pouco comprometimento. Esquemas teóricos da informação para comprometimento de bits são impossíveis para a computação clássica e quântica (embora Adrian Kent tenha proposto recentemente um esquema que explora a relatividade). No entanto, o comprometimento seguro de bits pode ser alcançado com suposições computacionais.

Joe Fitzsimons
fonte
2
Meu problema com essa abordagem é que, se você deseja convencer muitos observadores externos da justiça, cada um deles precisa se comprometer um pouco e deve ter certeza de que cada um deles revelará a prova de seu compromisso. Você não pode simplesmente ignorar a parte de um observador que não revela suas provas, porque o último observador a revelar poderia manipular o resultado da loteria ao decidir se deveria ou não revelar sua prova.
Zsbán Ambrus
1
@ user8067: Não acredito que seja possível sem interação ou confiança de que pelo menos uma parte seja honesta. A razão pela qual digo isso é que, se a aleatoriedade inicial é realmente predeterminada através de uma conspiração de todos os participantes naquele ponto, então todo o processo é determinístico e não aleatório. No entanto, o problema exige que o processo seja aleatório, portanto esse parece ser o melhor que você pode fazer.
Joe Fitzsimons
2
Não estou convencido de que isso seja possível.
Joe Fitzsimons
2
@ RickyDemer: Não há informações suficientes na pergunta para dizer qual modelo de adversário é aplicável aqui. Se Gil nos dissesse exatamente para que serve, seria mais fácil provar se um esquema específico atende ou não a seus requisitos. Mas, dito isso, não tenho dúvida de que Gil é capaz de verificar se nossas respostas atendem ou não às suas necessidades.
Joe Fitzsimons
2
@ RickyDemer: Não está claro para mim qual é o modelo óbvio para este caso. Depende fortemente da configuração e não é óbvio quais devem ser as suposições padrão. É um pouco demais para votar e começar a agir como se minha resposta e a de Lev estivessem erradas. Eles não incluem explicitamente a ressalva apontada na resposta de Adam. Observe que não estou editando minha resposta, porque sem mais informações de Gil, não acho que faça sentido adivinhar o modelo do adversário e, portanto, o deixo o mais genérico possível (não especificando se o pouco comprometimento não pode ser responsabilizado).
Joe Fitzsimons
15

Como outros usuários sugeriram, esse é um problema bem estudado em criptografia. É chamado de "lançamento de moeda" e é um caso especial de computação multipartidária.

Qual protocolo o trabalho realmente depende bastante do contexto.

  • Na configuração "autônoma", o protocolo será executado isoladamente, sem que os jogadores estejam envolvidos em outros protocolos (ou mesmo em qualquer interação com o mundo externo) ao mesmo tempo. Há um tratamento maravilhosamente completo disso no livro de Oded Goldreich, "Foundations of Cryptography" (volume 2, eu acho).

Só para se ter uma idéia de como é sutil, o protocolo "todo mundo se compromete com valores aleatórios" sugerido por outro respondedor é inseguro se o esquema de compromisso usado for maleável. Os esquemas de comprometimento não-pequenos fornecem um protocolo seguro, mas são um pouco complicados de projetar.

  • Nas configurações em que os participantes estão envolvidos em outros protocolos simultâneos, você deseja um protocolo que possa ser composto . Existem várias noções de composibilidade, mas a mais forte, chamada composibilidade universal , requer algumas suposições de configuração adicionais (por exemplo, uma PKI ou uma sequência aleatória comum visível a todas as partes, mas controlável por nenhuma delas). Infelizmente, não conheço um tratamento acessível sobre esse tópico. Mas analisar um artigo recente sobre composição universal ou compromisso não-pequeno seria um bom ponto de partida.
Adam Smith
fonte
1
“Uma sequência aleatória comum, visível para todas as partes, mas controlável por nenhuma delas” é exatamente o que queremos gerar.
Zsbán Ambrus
1
e depois de resolver de alguma forma esse problema uma vez, é possível universalmente resolva-o novamente (arbitrariamente várias vezes).
Acho que o compromisso da UC é conhecido pela configuração da chave pública registrada (que é uma suposição mais forte que a PKI) e pela configuração de várias strings (que é uma suposição mais fraca do que a seqüência aleatória comum).
2
Bem-vindo ao site, Adam!
Gil Kalai
11

Nota: leia os comentários abaixo. Este protocolo parece ter problemas.


pj

{0,1}bb

Qualquer agente pode ter certeza de que o número aleatório escolhido veio uniformemente aleatoriamente, escolhendo seu próprio vetor uniformemente aleatoriamente. Para qualquer observador se convencer, precisa confiar que pelo menos um agente seguiu o protocolo, mas, se nenhum, seguiu, acho que ninguém realmente queria uma loteria justa para começar.

Lev Reyzin
fonte
Desculpe Lev, acabei de perceber sua resposta. Quando comecei a escrever uma resposta, não havia nada aqui, mas ambos parecem ter encontrado respostas muito semelhantes.
Joe Fitzsimons
Não se preocupe! Parece que estamos no caminho certo, então.
Lev Reyzin
Sim, na verdade, acho que há muitos artigos sobre isso no contexto do lançamento de moedas, mas eu realmente não conheço essa literatura o suficiente para dar uma resposta adequada com base nela.
Joe Fitzsimons
7
A referência mais antiga que conheço é: M. Blum. Moeda que lança pelo telefone. CRYPTO 1981: 11-15. Pode ser baixado em dm.ing.unibs.it/giuzzi/corsi/Support/papers-cryptography/…
Ryan Williams
4
Existe um ataque padrão, se você usar esquemas de consolidação de bits padrão (por exemplo, hash). Vamos considerar o caso com duas partes, Alice e Bob, onde Alice vai primeiro. Depois que Alice transmite seu compromisso, Bob pode copiá-lo. Depois que Alice abre seu compromisso, Bob pode abrir o mesmo agora. Agora, seus vetores aleatórios são iguais, então eles xor a zero - Bob conseguiu forçar o valor final a zero, uma contradição do requisito de justiça.
DW
-3

Observadores passivos não podem verificar se o desenho não foi encenado. Entradas no processo pseudo-aleatório podem ser escolhidas para dar o resultado desejado.

No entanto, se o observador puder fornecer um número aleatório que ele sabe ser aleatório E garantir que outros agentes não alterem suas entradas posteriormente (porque eles poderiam compensar seu efeito com as entradas), então ele pode ter certeza de que o resultado foi realmente aleatório .

Isso requer um esquema de compromisso que não conhecemos matematicamente comprovadamente seguro, mas na prática pode ser realizado usando hash seguro (como o SHA3).

Considere este exemplo:

insira a descrição da imagem aqui

Eu fiz um exemplo de implementação. Você pode vê-lo ao vivo aqui: https://mrogalski.eu/cl/ ou verificar fontes no GitHub .

Marek Rogalski
fonte
1
Isso já foi observado na resposta de Joe.
22414 Kaveh
1
A ilustração gráfica é muito legal!
Gil Kalai
3
Os gráficos são muito bonitos, mas sua resposta não contém nada que não esteja nas respostas existentes.
David Richerby