• Nenhum resultado encontrado

0M 20M 40M 60M 80M 100M

N ´umeroMde testes de decodificac¸˜ao 0

250 500 750 1000 1250 1500

d-exclus˜aoobtida

σ(h0) σ(h1)

Figura 5.3.1: Relação entre as d-exclusões obtidas e número de testes de decodificação, para um dos 200 códigos testados de testes de decodificação

[0M, 10M

) [10M,

20M ) [20M,

30M ) [30M,

40M ) [40M,

50M ) [50M,

60M ) [60M,

70M ) [70M,

80M ) [80M,

90M )

[90M, 100M

) 100M N ´umeroMde testes de decodificac¸˜ao

0 250 500 750 1000 1250 1500

d-exclus˜aoobtida

Figura 5.3.2:Relação entre as d-exclusões obtidas e o número de testes de decodificação, considerando os resultados para 200 códigos diferentes com parâmetros de segurança de 80 bits

5.4 Obtendo distâncias dentro e fora do espectro

Para que os algoritmos de reconstrução sejam eficazes, é importante que lhes sejam dados como entrada um conjunto, em geral grande (e.g.∼r/6 entradas), de distâncias fora do espectro, e um outro conjunto, em geral pequeno (e.g. 1 entrada), de distâncias dentro do espectro.

Obter uma distância dentro do espectro é relativamente fácil. Pegue a saídap0do algoritmo de estimação de espectro, e tome a distânciadque tenha a menor taxa de falha emp0, isto é,p0[d]é mínimo. Tipicamente, após um pequeno número de testes de decodificação a entrada com menor taxa de falha de fato está dentro do espectro. Pelo resto do texto, supomos que é fácil obter ao menos uma distância dentro do espectro deh0, e outra dentro do espectro deh1, denotadas por s0es1, respectivamente.

Obter conjuntos grandes de distâncias fora do espectro é mais difícil. Idealmente, se fosse conhecido que qdistâncias podem ser d-excluídas a partir dep0, bastaria tomar as qdistâncias com maiores taxas de falha emp0. O problema é que em geral não se sabe qual foi ad-exclusão obtida pela saída do algoritmo de estimação de espectro. Um modo conservador de lidar com isso é descobrir qual a mínimad-exclusão necessária para que o algoritmo de reconstrução escolhido trabalhe eficientemente. Uma vez determinado que esta mínimad-exclusão éq, faça o seguinte.

1. Façai←1.

2. Faça Mi testes de decodificação e atualize os vetoresp0ep1.

3. Construa os conjuntosD0eD1 com asqentradas cujas taxas de falha são máximas emp0e p1, respectivamente.

4. Execute o algoritmo de reconstrução de chave usando os conjuntoD0eD1como o conjunto das distânciasd-excluídas. Se o algoritmo termina sem encontrar a chave,D0ouD1 devem conter alguma distância dentro do espectro, então façai←i+1 e volte para o passo2.

O passo 4 pode variar de acordo com o algoritmo de reconstrução usado. Por exemplo, o algoritmo de reconstrução de Guo et al. pode ser executado tanto com D0 quanto com D1. Se ambas as execuções falharem em encontrar a chave, então isso implica que ambos os conjuntos D0eD1contêm entradas dentro dos espectros correspondentes deh0eh1. Em contraste com esse algoritmo, o algoritmo proposto na Seção7deve ser executado com ambos os conjuntosD0eD1. Se o algoritmo falhar, então ao menos um dos conjuntos contém entradas dentro de seu espectro correspondente.

O número de decodificações a cada fase Mi deve ser modulado de acordo com os tempos de execução dos algoritmos. Em geral, é interessante que no começo sejam feitos muitos testes de decodificação, pois há baixa probabilidade de se obter uma boa d-exclusão com poucos testes, e depois sejam feitos cada vez menos testes de decodificação a cada execução do algoritmo de reconstrução. Por exemplo, para o algoritmo de reconstrução de Guo et al., considerando-se o nível de segurança de 80 bits, uma parametrização razoável seria M0 = 200 milhões, e Mi = 20 milhões para todoi≥1.

Capítulo 6

Variante probabilística do algoritmo de reconstrução

O algoritmo de reconstrução de chave apresentado por Guo et al. [GJS16] a partir do espectro pode ser muito ineficiente para níveis de segurança mais altos que 80. Isso ocorre pois o número de estados possíveis é bem maior, podendo o algoritmo ficar preso por muito tempo num ramo próximo à raiz que não é parte da chave. A proposta apresentada neste capítulo é uma variante do algoritmo original de reconstrução em que, para cada nível da árvore de busca, um nó filho é escolhido aleatoriamente. Usando o fato de que bastam poucos níveis da árvore de busca correta-mente percorridos para que a chave seja determinada, é possível mostrar que o número esperado de operações usando este algoritmo probabilístico é significativamente menos do que o original.

Como exemplo, para os parâmetros de segurança de 80 bits, e considerando que o algoritmo tem o espectro completo de h0, o algoritmo termina em média após apenas 100 caminhos testados.

Nos testes usando um chip Intel i7 870, usando apenas 1thread, a chave é tipicamente encontrada em menos de 1 segundo, em contraste com a média de 144 segundos do trabalho de Guo et al..

Para níveis de segurança mais altos, as diferenças entre os tempos são ainda maiores. Além disso, é trivialmente paralelizável, e é capaz de encontrar eficientemente a chave com uma d-exclusão parap0menor do que o algoritmo original.

6.1 Descrição do algoritmo

O algoritmo é uma extensão probabilística muito simples do algoritmo de reconstrução de Guo et al. [GJS16]. Ao invés de escolher deterministicamente o passo seguinte numa busca em largura, a proposta é percorrer a árvore de busca escolhendo aleatoriamente o próximo nó filho a ser percorrido. A descrição formal é dada no Algoritmo9. Note que a descrição é dada em função de h0por simplicidade, mas ele pode ser usado diretamente usando os parâmetros correspondentes parah1, isto é,s1eD1.

A seguir é dada uma breve descrição do algoritmo. Os parâmetros s0, que é uma distância dentro do espectro, eD0, que é um conjunto de distâncias fora do espectro, são calculados como descrito na Seção5.4. A cada iteração, o algoritmo começa com o conjuntoV={1,s0+1}e tenta completá-lo com mais ˆw−2 posições, sem que ocorra nenhuma distância fora do espectro, isto é, distâncias emD0são proibidas. Para completar o vetorV, o algoritmo escolhe aleatoriamente uma distância do conjunto auxiliar Fl, que contém, para cada nível l, as posições possíveis para completar suporte. Ou seja,Fl contém os elementos de[r]que não pertencem aV, e cuja distância até qualquer posição emVnão está emD0.

Nas próximas seções, é explicado por que essa variante probabilística tem um desempenho melhor do que a busca em profundidade sugerida por Guo et al.. Para isso é feita uma análise probabilística do algoritmo, e depois é mostrado o seu desempenho na prática.

41

Algoritmo 9:RECONSTRUÇÃOPROBABILÍSTICA: variante probabilística do algoritmo de re-construção de chave

Entrada:n,r,w,tparâmetros do código QC-MDPC a ser atacado wˆ o peso do vetorh0

s0uma distância pertencente aσ(h0)

D0um conjunto de distâncias que não pertencem aσ(h0) Saída:Vo suporte de uma rotação do vetorh0

1 início

2 faça

3 V ← {1, 1+s0}

4 F2← {i∈[br/2c]−V : distr(i,v)∈/D0vV}

5 l←2

6 enquanto|V|<w eˆ |Fl|>0faça

7 p←uma entrada escolhida aleatoriamente deFl

8 V ←V∪ {p}

9 FlFl− {p}

10 Fl+1← {iFl : distr(i,v)∈/ D0vV}

11 l←l+1

12 enquantoV não for o suporte de uma rotação deh0;

13 devolvaV

Documentos relacionados