MIT 18.966 Aula 5 6 de Março Segundo Trimestre 2002

Documentos relacionados
SUMÁRIO 1. AULA 6 ENDEREÇAMENTO IP:... 2

Algoritmos. Objetivo principal: explicar que a mesma ação pode ser realizada de várias maneiras, e que às vezes umas são melhores que outras.

Batalha Naval Algoritmos de Busca. Correlações curriculares Matemática: Números: maior que, menor que, iguais a.

Jogos. Redes Sociais e Econômicas. Prof. André Vignatti

4.1. Introdução Layout do DNS

A máscara de sub-rede pode ser usada para dividir uma rede existente em "sub-redes". Isso pode ser feito para:

O ESPAÇO NULO DE A: RESOLVENDO AX = 0 3.2

Entendendo como funciona o NAT

Contagem I. Figura 1: Abrindo uma Porta.

Exercícios Teóricos Resolvidos

x0 = 1 x n = 3x n 1 x k x k 1 Quantas são as sequências com n letras, cada uma igual a a, b ou c, de modo que não há duas letras a seguidas?

2. Representação Numérica

Bases Matemáticas. Aula 2 Métodos de Demonstração. Rodrigo Hausen. v /15

Por que o quadrado de terminados em 5 e ta o fa cil? Ex.: 15²=225, 75²=5625,...

Aritmética Binária e. Bernardo Nunes Gonçalves

Curso: Redes II (Heterogênea e Convergente) Tema da Aula: Características Roteamento

Microsoft Access: Criar relações para um novo banco de dados. Vitor Valerio de Souza Campos

Arquitetura de Rede de Computadores

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

Programação em papel quadriculado

Algoritmos e Estrutura de Dados III. Árvores

O Problema do Troco Principio da Casa dos Pombos. > Princípios de Contagem e Enumeração Computacional 0/48

Organização e Arquitetura de Computadores I

ESTRUTURAS DE DADOS II

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

APOSTILA DE REDES DE COMPUTADORES PARTE - I I

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES SISTEMAS DE NUMERAÇÃO: REPRESENTAÇÃO EM PONTO FLUTUANTE. Prof. Dr. Daniel Caetano

5 Equacionando os problemas

1. Quem somos nós? A AGI Soluções nasceu em Belo Horizonte (BH), com a simples missão de entregar serviços de TI de forma rápida e com alta qualidade.

3. No painel da direita, dê um clique com o botão direito do mouse em qualquer espaço livre (área em branco).

Mercados de Publicidade

Resíduos Quadráticos e Fatoração: uma aplicação à criptoanálise do RSA

3 Dicas MATADORAS Para Escrever s Que VENDEM Imóveis

Protocolo TCP/IP. Neste caso cada computador da rede precisa de, pelo menos, dois parâmetros configurados:

IP significa Internet Protocol. A Internet é uma rede, e assim como ocorre em qualquer tipo de rede, os seus nós (computadores, impressoras, etc.

Projeto e Análise de Algoritmos Projeto de Algoritmos Tentativa e Erro. Prof. Humberto Brandão humberto@bcc.unifal-mg.edu.br

Memórias Prof. Galvez Gonçalves

Dadas a base e a altura de um triangulo, determinar sua área.

Unidade 7: Panes no Excel

Endereçamento IP 09/05/2014. Endereçamento IP CLASSE B CLASSE A CLASSE A CLASSE C

Disciplina: Unidade III: Prof.: Período:

Trecho retirando do Manual do esocial Versão 1.1

4/5/2009 CONTROLSOFT CONTROLGAS CONTROLE DE VALE GÁS. Manual de Operação

Material Teórico - Módulo de Divisibilidade. MDC e MMC - Parte 1. Sexto Ano. Prof. Angelo Papa Neto

Exercícios Resolvidos sobre probabilidade total e Teorema de Bayes

Microsoft Access: Criar consultas para um novo banco de dados. Vitor Valerio de Souza Campos

Como escrever melhor em 5 passos simples

Capítulo 7 Medidas de dispersão

IBM1018 Física Básica II FFCLRP USP Prof. Antônio Roque Aula 6. O trabalho feito pela força para deslocar o corpo de a para b é dado por: = =

Representação de Dados

ISO/IEC 12207: Gerência de Configuração

Autor: Marcelo Maia

Construção de tabelas verdades

Moodle - Tutorial para Alunos

Na Figura a seguir apresento um exemplo de uma "mini-tabela" de roteamento:

Soluções de Questões de Matemática do Centro Federal de Educação Tecnológica Celso Suckow da Fonseca CEFET/RJ

Morfologia Matemática Binária

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade

Unidade 5: Sistemas de Representação

TUTORIAL PRÁTICO SOBRE Git. Versão 1.1

BCC202 - Estrutura de Dados I

O papel do CRM no sucesso comercial

UNIVERSIDADE CATÓLICA DE PETRÓPOLIS CENTRO DE ENGENHARIA E COMPUTAÇÃO

O que é RAID? Tipos de RAID:

Introdução. O que é o Registro do Windows

Conceitos de relação de confiança

GARANTIA DA QUALIDADE DE SOFTWARE

Aplicações de Combinatória e Geometria na Teoria dos Números

Sumário. Prefácio... xi. Prólogo A Física tira você do sério? Lei da Ação e Reação... 13

Notas de aula número 1: Otimização *

¹CPTL/UFMS, Três Lagoas, MS,Brasil, ²CPTL/UFMS, Três Lagoas, MS, Brasil.

APLICAÇÃO REDE APLICAÇÃO APRESENTAÇÃO SESSÃO TRANSPORTE REDE LINK DE DADOS FÍSICA 1/5 PROTOCOLOS DE REDE

MDaemon GroupWare. Versão 1 Manual do Usuário. plugin para o Microsoft Outlook. Trabalhe em Equipe Usando o Outlook e o MDaemon

28/9/2010. Paralelismo no nível de instruções Processadores superescalares

GUIA DE REDAÇÃO PARA TRABALHO DE EM974

Orientação a Objetos

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

SISTEMAS DE NUMERAÇÃO

Notas da Aula 17 - Fundamentos de Sistemas Operacionais

Prof. Rafael Gross.

Resolução de sistemas lineares

AVALIAÇÃO À DISTÂNCIA 1 GABARITO

Este material traz a teoria necessária à resolução das questões propostas.

Objetivos. Apresentar as superfícies regradas e superfícies de revolução. Analisar as propriedades que caracterizam as superfícies regradas e

PARANÁ GOVERNO DO ESTADO

Poliminós e o Tabuleiro de Xadrez Prof. Onofre Campos (onofrecampos@secrel.com.br) Prof. Carlos Shine (cyshine@yahoo.com)

QUALIDATA Soluções em Informática. Módulo CIEE com convênio empresas

Sistemas de Numerações.

Figure 2 - Nós folhas de uma árvore binária representando caracteres ASCII

Veja abaixo um exemplo de um endereço IP de 32 bits:

O Princípio da Complementaridade e o papel do observador na Mecânica Quântica

TUTORIAL DO ACCESS PASSO A PASSO. I. Criar um Novo Banco de Dados. Passos: 1. Abrir o Access 2. Clicar em Criar um novo arquivo

Aula 4 Estatística Conceitos básicos

Admistração de Redes de Computadores (ARC)

Correlação e Regressão Linear

Estrutura de Dados Básica

Aula 2 Modelo Simplificado de Computador

Transcrição:

MIT 18.996: Tópicos da Teoria da Ciência da Computação: Problemas de Pesquisa na Internet Segundo Trimestre 2002 Aula 5 6 de março Palestrante: Madhu Sudan Redatores: Nicole Immorlica e Vahab S. Mirrokni Adivinhação de Segredos Listen, Do you want to know a secret, Do you promise not to tell, whoa oh, oh. Closer, Let me whisper in your ear, Say the words you long to hear... -- Beatles, Abbey Road Studios, Londres 11 de fevereiro de 1963 5.1 Motivação Hoje trataremos de problemas que ocorrem no DNS. Primeiro revisaremos o mecanismo desse sistema. Figura 5.1. O mecanismo do DNS A Akamai possui milhares de servidores Web que disponibilizam a página da Web foo.com, e a meta do servidor de nomes oficial da Akamai é distribuir a carga de foo.com de uma maneira relativamente uniforme entre esses servidores Web. Quando os servidores de nomes armazenarem em cache os endereços IP, cada servidor de nomes direcionará todos os seus clientes para o mesmo endereço IP. Assim, cada servidor de nomes arrastará uma carga proporcional ao número de seus clientes. No entanto, não sabemos o número de clientes de um dado servidor de nomes. Além disso, não é tão simples contar o número de clientes, pois alguns deles têm mais carga do que outros. O que realmente gostaríamos de fazer é encontrar um mapeamento de servidores de nomes para clientes. Para complicar mais ainda, devemos lembrar que um cliente pode usar mais de um servidor de nomes. Vamos relembrar as informações fornecidas. O servidor de nomes oficial da Akamai conhece os endereços IP de todos os servidores de nomes que submetem consultas a foo.com. Os servidores Web da Akamai conhecem os endereços IP de todos os clientes que solicitam a página da Web foo.com. Agora como podemos descobrir quais clientes foram direcionados para cada servidor Web por qual servidor de nomes? 5-1

1. Endereços IP no mesmo bloco Talvez possamos partir do pressuposto que os clientes usem servidores de nomes cujos endereços IP estejam no mesmo bloco que os deles. Como os endereços IP no mesmo bloco tendem a ser geograficamente próximos, essa suposição parece razoável. No entanto, infelizmente ela não é verdadeira. 2. Direcione cada servidor de nomes a um servidor Web exclusivo e veja quais clientes aparecem Evidentemente, esta abordagem funciona, mas há uma variedade de problemas de implementação. O primeiro grande problema é que há muito mais servidores de nomes que servidores Web. É claro que podemos tentar nos esquivar desse obstáculo repetindo o procedimento várias vezes, rastreando o conjunto de cliente em cada servidor Web, fazendo uso de interseções etc. Outro grande problema é que os clientes não solicitam o conteúdo de foo.com continuamente, então, em cada iteração desse procedimento, a Akamai deve aguardar um tempo para ver todos os clientes que estão se apresentando. 3. Crie dinamicamente um link falso que codifique o IP do cliente na página da Web foo.com Nesta solução, o servidor Web da Akamai adiciona dinamicamente um gif de um pixel à página da Web foo.com com o endereço Web!client ip?.foo.com. Assim que o cliente transmitir a página da Web, ele solicitará ao seu servidor de nomes o endereço IP de!client ip?.foo.com. Quando o seu servidor de nomes pedir ao servidor de nomes oficial da Akamai que resolva esse endereço, este último poderá associar tal cliente a esse servidor de nomes. Esta solução resolve o nosso problema e parece funcionar, apesar de criar um certo tráfego adicional. No entanto, cada servidor de nomes agora precisa fazer uma consulta única a cada um dos seus clientes. Mesmo que o tempo de vida da resposta seja zero, algumas implementações errôneas de servidor de nomes tentarão armazenar em cache todas essas consultas únicas. Isso inunda o cache do servidor de nomes e, em alguns casos, realmente trava o servidor de nomes. Apesar de parecer que esse seja um problema do servidor de nomes, a Akamai precisa comercializar suas soluções e é difícil vender uma solução que rompa com a infra-estrutura existente, ainda que falha. 4. Force estaticamente um cliente a revelar cada bit do endereço IP de seu servidor de nomes Nesta solução, a Akamai adiciona 32 gifs de um pixel à página da Web foo.com com os endereços i.foo.com para 0 = i = 32. A Akamai também designa 64 servidores Web, i j para 0 = i = 32, j? {0,1}, para hospedar os gifs de um pixel. O servidor de nomes oficial da Akamai responde a uma consulta de i.foo.com com o servidor Web i j, onde j é o i-ésimo bit do endereço IP do servidor de nomes que fez a pergunta. Observando qual dos 64 servidores Web um cliente visitou, podemos agora reconstruir o IP do servidor de nomes do cliente. Esta solução resolve o problema da última solução, pois agora cada servidor de nomes armazenará em cache somente um número constante (isto é, 32) dos endereços IP, quer dizer, i.foo.com para 0 = i = 32. No entanto, esta solução não resolve mais o nosso problema quando um cliente usa mais de um servidor de nomes. 5-2

5.2 Declaração do Problema Observe que, na última solução, o que realmente fazemos ao cliente são 32 perguntas sim/não em relação aos endereços IP dos seus servidores de nomes. Ou seja, fazemos 32 perguntas do tipo: Qual o i ésimo bit do endereço IP do seu servidor de nomes? O cliente então seleciona um de seus servidores de nomes e responde à nossa pergunta sinceramente. Essa estratégia é um pouco ingênua e também muito fraca. Por exemplo, se o cliente tivesse um servidor de nomes com um endereço IP somente com zeros e um servidor de nomes com um endereço IP somente com uns, ele poderia responder às nossas 32 perguntas de 2 32 maneiras. Dessa forma, essa estratégia não nos deixa chegar a nenhuma conclusão em relação aos endereços IP de seus servidores de nomes. Nesta seção, estenderemos essa estratégia fazendo mais perguntas. Assim, cremos que poderemos obter mais informações sobre os servidores de nomes possíveis do cliente. Primeiro, damos uma definição formal do nosso problema: Definição 1. O Problema de Adivinhação de Segredos: Alice (a adversária) possui um conjunto S = {X 1,...,X k } de k segredos, tirados de um universo O de tamanho N. Bob faz a Alice uma série de perguntas. Para cada F i, Alice seleciona alguns X i e O e retorna {F i (X i )}. Bob responde então com a saída de um conjunto G de conjuntos de segredos, que é sua aposta em relação às possibilidades do conjunto S. Há dois tipos de estratégias para Bob, que são: adaptativa e não-adaptativa (oblivious). Definição 2. Em uma estratégia adaptativa, Bob pode fazer perguntas com base nas respostas anteriores. Neste caso, Bob primeiro faz a pergunta q 1 e Alice responde a 1. Depois, Bob faz a pergunta q 2 e Alice responde a 2, e assim sucessivamente. Definição 3. Em uma estratégia não-adaptativa, todas as perguntas de Bob devem ser feitas antes das respostas de Alice. Agora, Bob pergunta q 1, q 2,..., q m e Alice responde a todas elas a1, a2,...,am. Nesta definição, Alice corresponde ao cliente, seus servidores de nomes e o servidor de nomes oficial da Akamai. Os segredos de Alice correspondem aos endereços IP dos servidores de nomes dela. Bob corresponde aos servidores da Akamai. As perguntas de um Bob não-adaptativo são incorporadas como links na página da Web foo.com original e as respostas são computadas pelo servidor de nomes oficial da Akamai em consultas dos servidores de nomes do cliente. Um Bob adaptativo também pode ser implementado nessa configuração pela incorporação do link para a pergunta q i na página da pergunta q i-1. Digamos que Bob tenha resolvido o problema da adivinhação de segredos ao aprender o máximo possível em termos teóricos sobre S. Observe que Bob com certeza nunca teve esperança de tomar conhecimento de mais de um segredo de Alice, já que ela sempre pode responder a cada pergunta usando o mesmo X i. Na verdade, podemos caracterizar completamente a quantidade de informações que Bob possa ter esperança de obter sobre S, mas primeiro desenvolveremos um modelo desse problema. Definição 4. O Modelo do Grafo: Digamos que K N denote o hipergrafo completo com conjuntos de pontas de tamanho k no conjunto de N vértices de O. Um conjunto de segredos S = {X 1,...,X k } corresponde a uma ponta (X 1,...,X k ) de K N. 5-3

Observe que, neste modelo, uma resposta para a pergunta Fi implica que pelo menos um dos esteja em. Dessa forma, todas as pontas em podem ser eliminadas como possibilidades para o conjunto de segredos. Portanto, não importa como a adversária Alice aja, Bob poderá sempre fazer perguntas que reduzirão o grafo resultante a um conjunto de pontas de interseção (isto é, estrela ou triângulo para k = 2), para que, se houver pontas desassociadas, Bob possa incluir uma pergunta que separe as pontas e elimine uma delas. Além disso, Bob não pode ter esperança de ficar sabendo mais do que isso. Agora podemos dizer formalmente que Bob resolve o problema de adivinhação de segredos quando retorna um conjunto de interseção de pontas G que contenham S. Chamamos a estratégia de Bob que retorna um conjunto de interseção para qualquer adversário de estratégia de separação, e o conjunto de pontas retornado de conjunto sobrevivente. 5.3 Soluções É claro que existem estratégias de separação não-adaptativas e adaptativas. Por exemplo, Bob pode simplesmente fazer as perguntas O(N k ) correspondentes a todos os cortes que separam uma ponta do restante do grafo. No entanto, essa estratégia é um tanto desencorajadora, pois as informações que estamos tentando obter é de tamanho O(k log N). Para que nossa estratégia seja considerada eficiente, precisaríamos fazer somente perguntas poly(k, log N), todas de tamanho O(k log N). Além disso, para recuperar o conjunto sobrevivente das perguntas de Alice, Bob deveria despender um tempo de computação O(N k ) (listar todos os conjuntos k e eliminar os inconsistentes). Para que nossa estratégia seja considerada invertível, deveremos poder recuperar o conjunto sobrevivente somente no tempo poly(k, logn). Mas com que grau de eficiência podemos projetar uma estratégia? Em [2], Chung et al. comprovou os seguintes teoremas para o caso com k = 2 segredos: Teorema 1. Digamos que ƒ(n) seja o menor número de perguntas que Bob deva fazer em uma estratégia de separação adaptativa para um conjunto O inicial de tamanho N. Então, Teorema 2. Digamos que ƒ(n) seja o menor número de perguntas que Bob deva fazer em uma estratégia de separação não-adaptativa para um conjunto O inicial de tamanho N. Então, onde As provas dos limites superiores nesses teoremas são estratégias não construtivas ou construtivas que têm questões de tamanho grande e não são invertíveis. Chung et al. constrói explicitamente várias estratégias, mas elas não estão perto de ótimas em sentido algum. Recentemente, Micciancio et al. [4] apresentaram uma estratégia adaptativa com as perguntas O (log N) ótimas e um algoritmo de tempo O(log 2 N) para recuperar k = 2 segredos. 5-4

Hoje, vemos um resultado publicado por Alon et al. [1] que fornece uma estratégia nãoadaptativa invertível com as perguntas O(log N) para k = 2 segredos. Essa estratégia depende muito dos códigos de correção de erros. Para motivar o uso de códigos de correção de erros em problemas como adivinhação de segredos, primeiro apresentamos 20 perguntas de problemas semelhantes e os resolvemos com códigos de correção de erros. 5.3.1 20 perguntas com um mentiroso No jogo de 20 perguntas, um jogador, Bob, tenta descobrir a identidade de um segredo desconhecido de um segundo jogador, Alice, em um grande espaço de N segredos. Bob pode fazer a Alice perguntas binárias (Sim/Não) sobre o segredo. Alice responde a cada pergunta sinceramente de acordo com o segredo dela. A meta de Bob é descobrir o segredo fazendo o mínimo de perguntas possível. Se os N possíveis segredos estiverem associados a strings de bit [log N] evidentemente as perguntas de [log N] serão necessárias e suficientes para descobrir o segredo. O problema da adivinhação de segredos é uma generalização desse jogo que consiste em Alice selecionar não um, mas k segredos e responder às perguntas sinceramente, de acordo com um segredo que tenha escolhido. Há uma outra maneira de generalizar o jogo de 20 perguntas. Nessa generalização, novamente Alice tem apenas um segredo x, mas ela pode mentir, por exemplo, em 10% das vezes. Alternativamente, Alice sempre responde a verdade, mas transmite suas respostas através de um canal ruidoso que corrompe 10% dos bits. Os códigos de correção de erros são uma solução óbvia para esse problema. Bob pode solucionar um código C apropriado com função de codificação E e função de decodificação D. Ele pergunta a Alice sobre cada bit de E(x). A string resultante E(x) será uma palavra-código com no máximo 10% de erro. Assim, se Bob usar um código de correção de erros com recuperação de erros melhor que 10%, ele poderá recuperar o segredo D(E(x)). Sorte de Bob que conhecemos códigos que podem corrigir strings com menos de 50% de erro. Gostaríamos de aplicar a mesma abordagem ao problema de adivinhação de segredos. Consideramos um segredo X 1 como o verdadeiro segredo e todos os demais segredos como mentiras. Tentamos, então, aplicar a estratégia de código de correção de erros de Bob. No entanto, há um problema: mesmo com apenas dois segredos, Alice pode mentir 50% das vezes se não selecionarmos nosso código com atenção. É claro que não há códigos de correção de erros com 50% de recuperação de erro, mas temos uma suposição mais forte que no jogo do mentiroso. As mentiras de Alice devem ser sistemáticas! Ou seja, as mentiras dela são apenas pequenos bits de k 1 outras palavras-código. Usaremos esse fato para definir uma classe de códigos e estratégias de codificação e decodificação para esses códigos. 5.3.2 Códigos de separação Vamos nos preocupar com o problema de adivinhação de 2 segredos (isto é, k = 2). Para cada segredo, denotamos a seqüência de respostas às perguntas Fi em x por C(x) = < F 1 (x), F 2 (x),...,f n (x) >. Chamamos de mapeamento o mapeamento, definido como o código usado pela estratégia. Há, evidentemente, uma correspondê ncia de um para um entre as estratégias não-adaptativas {F i } e esses códigos C (definidos por F i (x) = C(x) i, onde C(x) i é o i-ésimo bit de C(x)). Agora podemos nos referir a uma estratégia usando seu código C associado. Digamos que um código C seja de separação de (2, 2) se para todos os segredos distintos a, b, c, d? O de 4 tuplas (conjuntos de variáveis) existir pelo menos um valor de i, 1 = i = n, chamado de índice discriminante, para o qual C(a) i = C(b) i? C(c) i = C(d) i. Observe que, se Bob fizer perguntas de acordo com um código de separação C, para cada 5-5

dois pares de pontas de desassociação (a, b) e (c, d), Bob poderá excluir um deles com base na resposta que Alice der na i-ésima pergunta, onde i é um índice discriminatório para o (a, b, c, d) de 4 tuplas. Na verdade, é fácil observar que a propriedade de separação de (2, 2) de C também é necessária à estratégia correspondente para resolver o jogo de adivinhação de 2 segredos. Assim, existirá um código de separação de (2, 2) C : O? {0, 1} n se e somente se houver uma estratégia não-adaptativa para Bob resolver o problema de adivinhação de 2 segredos. Agora, tudo o que resta é encontrar bons códigos de separação de (2, 2). Usamos os seguintes teoremas e definições para projetar tais códigos de forma eficiente: Teorema 3. Digamos que C seja um código linear binário [n, m]2 com distância mínima d e distância máxima m1. Suponha também que d, m1 satisfaça à condição um código de separação de (2, 2).. Então, C é Definição 5. Um código linear binário de comprimento de bloco n é um código polarizado em? se toda palavra-código diferente de zero em C for um peso Hamming entre e. De acordo com o teorema e a definição acima, pode-se facilmente concluir que, se um código linear binário C for polarizado em? para alguns, então C é separação de (2, 2). Um construção explícita simples de códigos polarizados em? pode ser obtida concatenando-se um código de Reed-Solomon externo com distância relativa (1-2?) com um código de Hadamard binário interno. No entanto, essa e outras construções semelhantes codificam nossas strings de comprimento log N em palavras-código de comprimento, mais que o comprimento O (log N) desejado. No entanto, em [?], Alon et al. comprovaram: Lema 1. Para todo? >0, existe uma família especificada explicitamente de códigos polarizados em? lineares binários de taxa constante. De acordo com esse lema e a análise anterior, vemos que há uma estratégia não-adaptativa explícita para o jogo de adivinhação de 2 segredos que usa perguntas O(log N). O problema do método acima é que ele não é invertível. Depois projetaremos uma estratégia invertível que recupera segredos de tempo poly(log N). 5.3.3 Decodificação de Lista Novamente, consideramos o jogo de adivinhação de 2 segredos (isto é, k = 2). Teorema 4. Suponha que C seja um código linear binário [cm, m] 2 polarizado em? para alguma constante. Suponha também que haja um algoritmo de decodificação de lista para C que corrija até uma fração de erros no tempo O(T(m)). Depois, C é um código de separação de (2, 2) que fornece uma estratégia para resolver o jogo de adivinhação de 2 segredos para um universo de tamanho N 2 m no tempo O(T(log N) + log3 N) usando perguntas c log N. Prova (esboço): Suponha que Bob use o código mencionado acima para sua estratégia. Se os segredos de Alice forem {X 1,X 2 } e suas respostas a Bob forem a = (a 1, a 2,...n a ), para cada i, devemos ter C(X 1 )i = a i ou C(X 2 ) i. Como C é polarizado em?, C(X 1 ) e 5-6

C(X 2 ) devem concordar em pelo menos coordenadas. Além disso, como Alice não mente, pelo menos metade das coordenadas restantes deve concordar com uma das palavras-código, por exemplo, C(X 1 ). Isso significa que a é uma distância de Hamming de no máximo de C(X1). Este é o algoritmo para Bob recuperar os segredos: 1. Faça a decodificação de lista do código C usando o algoritmo presumido para encontrar o conjunto onde?(x, y) denota a distância de Hamming entre x e y. 2. Para cada x? S, digamos que A seja o conjunto de coordenadas onde C(x) e a estejam de acordo. Encontre o conjunto Sx dos segredos correspondentes possíveis apagando as coordenadas A de a e usando um algoritmo de decodificação de lista de apagamento. Como nosso código é linear, acabamos encontrando todas as soluções para um sistema linear de equações. Se S x estiver vazio (isto é, não houver x tal que Alice possa ter respondido a com segredos (x, x )), remova x de S. Caso contrário, represente Sx com um conjunto de vetores de base. 3. Retorne o conjunto G = {{x, x } : x? S, x? S x } como a aposta. Observe que um conjunto de segredos {x, x } estará em G se e somente se estiver consistente com a resposta; então, especialmente nos verdadeiros segredos de Alice, {X1, X 2 }? G. Além disso, como, teorema 3 implica que C seja separação de (2, 2) e, portanto, G seja uma família de interseção. Isso mostra a exatidão da estratégia de Bob. A eficiência da inversão segue à medida que a decodificação da lista retorna um número constante de soluções, então devemos resolver somente um número constante de sistemas lineares. Além disso, devido à nossa brilhante representação de S x, nossa saída é polinomial em log N mesmo quando o número de vértices em nossa família de interseção é O(N) (por exemplo, a estrela com (N 1) não-hubs obtidos quando a = C(x) para alguns x). Para obter uma prova detalhada da exatidão e da análise desse algoritmo, veja [1]. Além disso, perceba que, se você não acredita no teorema 4, você pode usar a abordagem ingênua do corte do grafo no conjunto S de vértices de tamanho constante retornado pela decodificação de lista. Se ambos os segredos estivessem em S, o resultado seria uma estrela ou um triângulo. Se somente um dos segredos estivesse em S, o resultado seria uma estrela. Se o resultado for uma estrela, estender a estrela para todo o conjunto O dará uma solução G correta. O único problema que resta é provar a existência dos códigos polarizados em? usados no Lema 1. A existência desses códigos é um resultado padrão da teoria da codificação. 5-7

Teorema 5.1 Para todo a < ½ constante positivo, aplica-se o seguinte. Para todo? > 0 suficientemente pequeno, existe uma boa família assintoticamente explícita de códigos polarizados em? lineares binários que pode ser decodificada em lista até uma fração a de erros em tempo. Um esboço desse resultado pode ser encontrado em [1] 5.4 Questões em Aberto Há várias questões sobre o problema da adivinhação de segredos que permanecem em aberto, a maioria das quais envolvendo alguma generalização ou restrição do problema. Concluímos com uma lista de algumas das questões em aberto. 1. Problema de Adivinhação do Segredo k Nas últimas duas seções, analisamos estratégias para k = 2 segredos. Uma questão natural é analisar o caso para k > 2. Observe que a solução da decodificação de lista não funciona mais, pois a resposta de Alice pode estar muito distante das palavras-código de seus segredos. O modelo do hipergrafo e o algoritmo ingênuo que o acompanha mostram que há estratégias para k > 2. Mas, como visto, a estratégia ingênua é impraticável, Temos alguns resultados negativos para esse problema. Especificamente, Alon et al. demonstraram [1] que estratégias não-adaptativas requerem pelo menos perguntas e estratégias adaptativas requerem pelo menos a k log N a k log a k perguntas, onde Além disso, apresentam uma estratégia não-adaptativa eficiente (mas não invertível) para esse problema com base em famílias universais de 2k de strings binárias que utiliza no máximo ck2 6k log N perguntas para alguma constante c independente de k. 2. Condição de Solução de Relaxamento Podemos considerar uma forma restrita do problema em que somente exigimos que Bob retorne um suposto conjunto G tal que todo conjunto k de segredos S que seja consistente com as respostas de Alice faça a interseção de G em pelo menos um elemento [2]. Nesse caso, há uma estratégia não-adaptativa invertível eficiente para Bob baseada em códigos concatenados e nas mesmas idéias de decodificação de lista apresentadas aqui. Talvez seja possível melhorar esse resultado, e os algoritmos para estratégias adaptativas devam ser estudados. 3. Questões Não-Binárias Uma outra maneira de generalizar nosso problema é permitir que Bob faça perguntas com mais de duas respostas. É claro que isso facilita muito o problema para Bob. Por exemplo, no problema de 2 segredos, Bob poderá sempre determinar pelo menos um dos segredos de Alice (ele pode eliminar triângulos fazendo uma terceira pergunta). No entanto, não se sabe como perguntas não-binárias afetam o problema para k > 2. 5-8

4. Número Fixo de Rounds Também podemos restringir o problema permitindo a Bob somente um número fixo de rounds no caso adaptativo. Se permitirmos que Bob faça mais de uma pergunta por round, esse problema se tornará um tipo de híbrido entre as estratégias não-adaptativa e adaptativa. Como podemos combinar as soluções para estratégias não-adaptativas e adaptativas para obter uma estratégia ótima nesse caso? 5. Mentira Por fim, podemos permitir que Alice minta em uma parte do tempo. Ou seja, digamos que em 10% das respostas, Alice possa dar qualquer resposta que queira, independentemente de seus segredos. Podemos encontrar códigos tais que essa nova capacidade não ajude muito a Alice? E quanto ao caso adaptativo? 5-9

Bibliografia [1] N. Alon, J. Bruck, J. Naor, M. Naor e R. Roth. Construction of asymptotically good lowrate error-correcting codes through pseudo-random graphs., IEEE Trans. Info. Thy., 38(2):509-512, Março 1992. [2] Fan R. K. Chung, Ronald Graham e Frank Thomson Leighton, Guessing Secrets, Simpósio sobre Algoritmos Distintos, págs. 723-726, 2001. [3] Noga Alon, Venkatesan Guruswami, Tali Kaufman, Madhu Sudan, Guessing Secrets Efficiently via List Decoding, SODA 2002. [4] Daniele Micciancio e Nathan Segerlind. Using prefixes to efficiently guess two secrets, Manuscrito, Julho 2001. 5-10