• Nenhum resultado encontrado

Interação entre reticulados e códigos corretores de erros em criptografia

N/A
N/A
Protected

Academic year: 2021

Share "Interação entre reticulados e códigos corretores de erros em criptografia"

Copied!
107
0
0

Texto

(1)

COMPUTAÇÃO

Rosemberg André da Silva

Interação entre Reticulados e Códigos Corretores de

Erros em Criptograa

CAMPINAS

2011

(2)

Interação entre Reticulados e Códigos Corretores de Erros em

Criptograa

Tese apresentada ao Instituto de Computação da Universidade Estadual de Campinas como parte dos requisitos para a obtenção do título de Doutor em Ciência da Computação.

Orientador: Prof. Dr. Ricardo Dahab

Este exemplar corresponde à versão nal da Tese defendida por Rosemberg André da Silva e orientada pelo Prof. Dr. Ricardo Dahab.

CAMPINAS

2011

(3)

Informações para Biblioteca Digital

Título em inglês: Interaction between lattices and error-correcting codes

in cryptography

Palavras-chave em inglês:

Lattice theory

Error-correcting codes (Information theory) Public key cryptosystems

Área de concentração: Ciência da Computação

Titulação: Doutor em Ciência da Computação Banca examinadora:

Ricardo Dahab [Orientador]

Anderson Clayton Alves Nascimento Paulo Sérgio Licciardi Messeder Barreto Julio César López Hernández

Reginaldo Palazzo Junior

Data da defesa: 14/10/2011

Programa de Pós-Graduação: Ciência da Computação

ii

Silva, Rosemberg André da,

1969-Si38i Interação entre reticulados e códigos corretores de erros em criptografia / Rosemberg André da Silva. – Campinas, SP : [s.n.], 2011.

Orientador: Ricardo Dahab.

Tese (doutorado) - Universidade Estadual de Campinas, Instituto de Computação.

1. Teoria dos reticulados. 2. Códigos de controle de erros (Teoria da informação). 3. Criptografia de chaves públicas. I. Dahab, Ricardo, 1957-. II. Universidade Estadual de Campinas. Instituto de Computação. III. Título.

(4)

COMPUTAÇÃO

Rosemberg André da Silva

Interação entre Reticulados e Códigos Corretores de Erros em

Criptograa

Banca Examinadora:

• Prof. Dr. Ricardo Dahab (Presidente da Banca) IC / UNICAMP

• Prof. Dr. Anderson Clayton Alves Nascimento ENE / UnB

• Prof. Dr. Paulo Sérgio Licciardi Messeder Barreto POLI / USP

• Prof. Dr. Julio César López Hernández IC / UNICAMP

• Prof. Dr. Reginaldo Palazzo Junior FEEC / UNICAMP

A ata da defesa com as respectivas assinaturas dos membros da banca encontra-se no processo de vida acadêmica do aluno.

(5)

Meus sinceros agradecimentos a

• banca de defesa pelas importantes sugestões feitas; • Prof. Dr. Ricardo Dahab pela condução deste trabalho;

• Prof. Dr. Johannes Buchmann pela oferta de colaboração no laboratório CASED; • Prof. Dr. Pierre-Louis Cayrel, Dr. Richard Lindner e Dr. Markus Rueckert pelo

trabalho conjunto que resultou em várias das publicações listadas nesta tese; • Profa. Dra. Sueli Irene Rodrigues Costa pelo trabalho conjunto com o grupo de

estudos temáticos envolvendo IC, IMEEC e FEEC da Unicamp;

• FAPESP por nanciar este trabalho (processo 2008/07949-8, de 2008 a 2011); • Universidade Estadual de Campinas pelo suporte nanceiro em 2008;

• minha família e meus amigos pelo constante encorajamento;

(6)

Alguns resultados recentes têm apontado a possibilidade de reaproveitamento de proto-colos entre sistemas criptográcos baseados em reticulados e códigos corretores de erros, como visto nos trabalhos de Kawachi, Tanaka e Xagawa [57] e de Cayrel, Lindner, Ru-eckert e Silva [21] e [22]. Estes autores utilizaram a similaridade entre alguns problemas difíceis nestas duas áreas, substituíram um pelo outro e aplicaram instâncias particulares, a m de obter ganho em desempenho. Na presente dissertação, expandimos a variedade de esquemas para os quais esta abordagem se mostra produtiva, discutindo temas rela-cionados ao desempenho e segurança de tais adaptações. Objetivamos ainda estabelecer a validade de reduções de piores casos para casos médios nos esquemas construídos, à semelhança do que foi obtido por Ajtai [5].

(7)

Recent results have pointed out the feasibility of reusing cryptographic schemes across the domains of Lattice and Codes, as seen in the work of Kawachi, Tanaka and Xagawa [57] and Cayrel, Lindner, Rueckert and Silva [21] and [22]. These authors have used the sim-ilarity between hard problems from each domain, replaced one by the other and applied particular lattice instances in order to obtain good performance. In the present disser-tation, we expand the variety of schemes to which such approach is suitable, discussing issues related to performance and security of such adaptations. We also aim to establish worst-case hardness in our schemes, in resemblance to what Ajtai [5] obtained.

(8)

3.1 Diagrama de Mensagens - CLRS . . . 49

3.2 Algoritmo de geração de chaves, com parâmetros públicos n, m, q. . . 50

3.3 Protocolo de Identicação . . . 50

4.1 Algoritmo de geração de chaves, com parâmetros públicos n, m, q. . . 73

4.2 Esquema de Identicação CLRS . . . 74

(9)

3.1 Parâmetros do Esquema de Lyubashevsky . . . 42

3.2 Domínios do Esquema de Lyubashevsky . . . 42

3.3 Parâmetros para Esquema de Kawachi et al. . . 44

3.4 Parâmetros para o Esquema de Xagawa et al. . . 46

3.5 NTRU ees677ep1 . . . 46

3.6 Esquemas de ID - Comparação . . . 48

3.7 Parâmetros Concretos . . . 57

4.1 Esquemas TRSS, N=100, Segurança de 100 bits . . . 82

4.2 Parâmetros concretos . . . 82

5.1 Parâmetros para Fischer-Stern PRNG . . . 86

5.2 Parâmetros para SYND . . . 88

5.3 Parâmetros (n, q, m) = (64, 257, 1024). . . 93

(10)

1 Introdução 12 1.1 Motivação . . . 12 1.2 Descrição do Problema . . . 12 1.3 Contribuições da Tese . . . 13 1.3.1 Artigos . . . 13 1.4 Organização da Tese . . . 16 2 Revisão Bibliográca 17 2.1 Complexidade Computacional . . . 17 2.1.1 Classes P e NP . . . 17 2.1.2 Reduções . . . 18

2.1.3 Pior Caso x Caso Médio . . . 19

2.2 Noções de Criptograa . . . 19

2.2.1 Protocolos de Conhecimento Zero . . . 20

2.2.2 Identicação e Autenticação . . . 21

2.2.3 Assinatura . . . 22

2.2.4 Cifradores de Fluxo e Geradores de Sequência Pseudoaleatória . . . 22

2.3 Códigos Corretores de Erros . . . 23

2.3.1 Problemas Computacionalmente Difíceis . . . 23

2.3.2 Códigos Algébricos . . . 24

2.3.3 Aplicações em Criptograa . . . 27

2.4 Reticulados . . . 30

2.4.1 Problemas Computacionalmente Difíceis . . . 30

2.4.2 Reticulados Cíclicos e Ideais . . . 33

2.4.3 Problemas sobre Aprendizado . . . 33

2.4.4 Aplicações em Criptograa . . . 34

3 Esquemas de Identicação 38 3.1 Denições e Propriedades . . . 38

3.2 Resultado: Esquema CLRS . . . 49

3.2.1 Resultado: CLRS Modo Batelada . . . 58

3.3 Resultado: Esquema Baseado em LWE . . . 60

4 Esquemas de Assinatura 70 4.1 Denições e Propriedades . . . 70

4.2 Resultado: TRSS . . . 74

4.2.1 Segurança . . . 79

4.2.2 Desempenho . . . 81

(11)

5.1.2 Trabalhos Relacionados sobre Reticulados . . . 88 5.2 Resultado: Cifrador de Fluxo Baseado em SIS . . . 90

6 Conclusões 98

(12)

Introdução

1.1 Motivação

A vasta maioria das implementações práticas e padrões em Criptograa de Chaves Pú-blicas baseia-se na premissa de intratabilidade de problemas matemáticos tais como a fatoração de números inteiros e o cálculo de logaritmos discretos. O advento da compu-tação quântica, no entanto, tem colocado em cheque tal premissa, tornando necessária a pesquisa de problemas considerados intratáveis, mesmo por computadores quânticos [13]. A avaliação dos aspectos de segurança, usabilidade e complexidade de tais problemas tem sido alvo de intenso trabalho por parte da comunidade de Criptograa. Várias áreas da matemática têm sido estudadas em busca destes novos candidatos a pressupostos de se-gurança em esquemas criptográcos seguros segundo os modelos computacionais clássico e quântico. A presente dissertação de doutorado restringe seu foco às áreas de códigos corretores de erros e reticulados como fontes de tais problemas intratáveis. A decodi-cação de códigos lineares (tais como os de Goppa) e os problemas relativos a cálculo de vetores mais curtos ou de vetores mais próximos em reticulados, por exemplo, têm servido de base para vários esquemas. Estas duas áreas são bastante correlatas, como se pode observar no estudo de empacotamentos esféricos, construção de reticulados a partir de códigos, extensamente explorado em [26].

1.2 Descrição do Problema

As conexões entre a Teoria de Reticulados e a de Códigos têm sido extensamente estuda-das na Matemática, com numerosos resultados compilados por Conway e Sloane [26], por exemplo. Através de suas construções {A, B, C, D, E} eles mostraram como obter pares de instâncias de problemas em que a tarefa de encontrar um ponto do reticulado mais próximo a um dado alvo possa ser relacionada à de determinar uma palavra de código mais próxima a uma entrada especíca. Tal mapeamento entre instâncias toma tempo polinomial nas construções citadas, sugerindo uma forma bastante prática de se procurar reduções entre problemas destas duas áreas. Particularmente, poderíamos através disto buscar reduções de pior caso para caso médio para códigos, a exemplo do que já se conhece para reticulados. Assim, conseguiríamos estender um dos resultados mais interessantes

(13)

de reticulados no que concerne a Criptograa, estabelecendo que a quebra de instâncias construídas com parâmetros aleatoriamente escolhidos de um esquema criptográco im-plicaria na capacidade de resolver os piores casos de problemas difíceis na área de códigos corretores de erros.

Recentemente, tem havido uma série de adaptações de esquemas criptográcos da área de códigos para a área de reticulados. Em relação a esquemas de identicação, podemos citar os resultados de Kawachi, Tanaka e Xagawa [57] e Cayrel, Lindner, Rueckert e Silva [21]. Pelo uso da heurística de Fiat-Shamir, esquemas de assinatura também foram construídos utilizando abordagem semelhante [22]. Na área de Criptanálise, tais conexões também foram exploradas, como por exemplo através do trabalho de Velikova [96], em sua tentativa de queba do criptossistema de McEliece via redução ao problema do vetor mais próximo (CVP) em reticulados.

Com suas caracterizações de reticulados e códigos corretores de erros como espaços vetoriais, bem como da utilização de uma variedade de problemas computacionais difí-ceis associados à capacidade de obtenção de elementos com norma dentro de uma faixa especicada de valores, é possível criar um dicionário mapeando problemas entre códigos e reticulados. Como exemplos podemos citar os pares (SIS, SD) e (LWE, Decodicação Geral), os quais se encontram denidos na seção 2. Em tais pares, o primeiro elemento corresponde a um problema no âmbito de reticulados, ao passo que o segundo está de-nido no contexto de códigos. Como visto nos trabalhos listados no parágrafo anterior, tal dicionário auxilia na reutilização de esquemas criptográcos entre estas duas áreas, preservando boa parte da estrutura dos esquemas originais. Por outro lado, as diferen-ças entre códigos e reticulados dão ensejo à busca de construções que possam reforçar as propriedades de segurança (tais como reduções de pior caso para caso médio em cons-truções baseadas em reticulados) ou de desempenho (através do uso de classes especiais que permitam denições mais compactas e operações mais rápidas, como as dos códigos quase-diádicos ou dos reticulados ideais).

Ao longo deste texto mostraremos várias construções em Criptograa que exploram conexões entre códigos e reticulados, detalhando os ganhos obtidos quando da transposição de esquemas criptográcos de um domínio para o outro. Concentramos os resultados em três tipos de esquemas: identicação, assinatura e cifradores de uxo.

1.3 Contribuições da Tese

1.3.1 Artigos

Listamos aqui os artigos publicados e submetidos contendo os resultados obtidos durante este programa de doutorado.

Esquemas de Identicação

Título: Improved Zero-knowledge Identication with Lattices [21]

Apresentado na Conferência: The Fourth International Conference on Provable Security (ProvSec 2010)

(14)

autenticação de um parte à outra através de um canal inseguro, sem revelar qualquer in-formação adicional que possa ser usada por um impostor. Neste trabalho, propomos um sistema (CLRS) cuja segurança depende da diculdade de problemas difíceis em reticu-lados no pior caso. O artigo faz uma adaptação de um esquema de identicação baseado em códigos corretores de erros proposto por Cayrel e Véron [23], o qual constitui uma melhoria da construção de Stern [94]. Nossa solução é análoga às melhorias propostas por Kawachi et al. [57] apresentadas na ASIACRYPT 2008, mas apresenta menor proba-bilidade de sucesso para impostores: 1/2. Comparado com o esquema de Lyubashevsky [62] apresentado na ASIACRYPT 2009, a nossa proposta usa hipóteses de segurança mais brandas, a saber, a diculdade do SIS para vetores trinários. A mesma suposição foi utilizada para a função hash Swit [64], que é segura para os parâmetros muito menores do que os propostos por Lyubashevsky.

Título: Zero-knowledge Identifcation Based on Lattices with Low Communication Cost Submetido para a Conferência: XI Simpósio Brasileiro em Segurança da Informação e de Sistemas Computacionais

Resumo: Neste artigo é proposto um novo esquema de identicação com 5 passos e erro de consistência de 1/2. Ao invés de um simples par de chaves, tal construção utiliza vá-rios pares simultâneos. Ao longo da execução do protocolo, o vericador escolhe de forma uniformemente aleatória um índice correspondente ao par que deseja utilizar. O problema computacionalmente difícil utilizado como pressuposto de segurança é o Small Integer Solution problem (SIS). Este protocolo é inspirado uma construção sobre códigos corre-tores de erros proposta por Aguilar et al. O custo de comunicação obtido é o menor entre as soluções baseadas em reticulado até então conhecidas. Em sua implementação pode-se fazer uso de reticulados ideais, tendo como objetivo ganhos de desempenho normalmente observados em tais tipos de reticulado.

Título: A Lattice-Based Batch Identication Scheme Submetido para: 2011 IEEE Information Theory Workshop

Resumo: Este artigo apresenta uma versão em lote do esquema de identicação CLRS. Tal modicação permite que um usuário se autentique com diferentes níveis de autorização através da escolha adequada de um subconjunto de chaves em sua posse. À semelhança do esquema em lote proposto por Schnorr, os custos de comunicação são independentes do número de chaves envolvidas. Como pressuposto de segurança utilizamos a versão não-homogênea do problema SIS.

Título: LWE-Based Identication Schemes

Submetido para: 2011 IEEE Information Theory Workshop

Resumo: Alguns problemas denidos sobre reticulados, tais como o LWE (Learning with Errors), são particularmente adequados para aplicações em Criptograa devido à possibilidade de usarmos as reduções de pior caso para caso médio como evidências de forte segurança. Neste artigo mostramos duas construções to tipo conhecimento zero para esquemas de identicação baseados no problema LWE, discutindo aspectos de desempenho e segurança. Comparamos os resultados obtidos com os das construções até então mais

(15)

ecientes, destacando as decisões de projeto que tornam nossa solução interessante tanto do ponto de vista teórico quanto prático.

Esquemas de Assinatura

Título: A Lattice-Based Threshold Ring Signature Scheme [22]

Apresentado na Conferência: The First International Conference on Cryptology and In-formation Security (LatinCrypt 2010)

Resumo: Neste artigo, propomos um esquema de assinatura em anel com limiar, tendo por base de segurança um problema difícil de reticulados. Modicamos a solução baseada em código proposta por Aguilar [3], e utilizamos o problema curto solução inteira (SIS) como pressuposto de segurança, ao invés de decodicação de síndrome (SD). Ao aplicar o esquema de identicação CLRS, conseguimos ter um ganho de desempenho, como re-sultado da redução probabilidade de sucesso para impostores: 1/2. Esse ganho também é mantidos através da aplicação da heurística Fiat-Shamir [2] para gerar assinaturas. Do ponto de vista de segurança também temos melhorias, porque o nosso sistema exibe co-nexões com o pior caso de um problema difícil, típico de reticulados. Isso dá conança de que uma escolha aleatória de parâmetros resulta em um sistema que é difícil de quebrar, em média.

Esquemas Geradores de Sequência Pseudoaleatória

Título: A pseudo-random generator based on worst-case lattice problem Submetido para a Conferência: ProvSec 2011

Resumo: Neste artigo construímos um gerador de sequências pseudoaleatórias tomando por base o problema difícil (SIS) de reticulados. Além disso, a m de ganhar eciência tanto em termos de espaço e velocidade, nossa solução utiliza reticulados ideais, que acredita-se serem tão seguros quanto reticulados gerais. Código para implementações sobre máquina multi-core e em processador gráco Nvidia foram dadas, explorando o caráter paralelizável do projeto do esquema criptográco em questão.

Journals

Título: Post-Quantum Cryptography: Lattice Identication Schemes

Publicado em dezembro de 2011 pelo Journal: Publicationes Mathematicae Debrecen, vo-lume 79/3-4, páginas 729-748

Resumo: Esta pesquisa apresenta uma análise comparativa do estado da arte de esquemas de identicação pós-quânticos baseados em reticulados, ressaltando os aspectos de desem-penho, segurança, custos de comunicação, problema difícil subjacente e comprimentos de chave. Nela discute-se ainda a viabilidade de conversão para sistemas de assinatura digital.

(16)

Submetido em 15-11-2010 para o Journal: International Journal of Applied Cryptography Resumo: Este artigo compila os resultados obtidos pelos artigos apresentados nas con-ferências LatinCrypt 2010 e ProvSec 2010 referentes a assinaturas e esquemas de identi-cação baseados em reticulados, tomando a diculdade computacional do problema SIS como pressuposto de segurança.

1.4 Organização da Tese

O conteúdo desta dissertação está disposto como descrito a seguir. Na seção 2 mostramos os conceitos e denições necessários à compreensão do texto. Posteriormente, listamos os resultados obtidos com Esquemas de Identicação na seção 3, de Assinatura na seção 4 e de Cifradores de Fluxo na seção 5. Finalmente, fazemos uma apreciação do trabalho e apontamos linhas futuras de pesquisa na seção 6.

(17)

Revisão Bibliográca

2.1 Complexidade Computacional

Fortemente baseado no conceito de redução, o modelo padrão é um dos métodos mais utilizados em Criptograa para demonstração de segurança. Ele consiste em fazer mape-amento entre instâncias do esquema criptográco (cuja segurança se pretende estabelecer) e instâncias de um problema computacional conhecido. A noção de grau de segurança do primeiro, desta forma, está relacionada à diculdade computacional do segundo. Quanto mais intratável for este, tanto mais seguro considera-se aquele. Nesta seção discorreremos sobre alguns conceitos associados a intratabilidade computacional.

Ao longo do texto, utilizaremos letras maiúsculas em negrito para denotar matrizes, minúsculas em negrito para representar vetores, e minúsculas simples para indicar esca-lares.

2.1.1 Classes P e NP

Consideraremos para medida de esforço computacional que os diversos algoritmos vistos ao longo deste texto são executados numa máquina de Turing M, a qual é composta por uma máquina de estados nitos, uma ta sequencial ilimitada e uma mecanismo para leitura e escrita sobre tal ta em dois sentidos possíveis: direita e esquerda. A máquina de estados nitos determina seu próximo estado a partir do estado atual e do símbolo lido da ta.

Um dado algoritmo roda nesta máquina em tempo t(n) quando para todas as possíveis entradas de tamanho n, M parar após t(n) passos, no máximo. A entrada corresponde a palavras construídas sobre o alfabeto utilizado na denição de M.

As descrições de comportamento assintótico dos diferentes algoritmos analisados se-guirão a notação O, através da qual indica-se o comportamento do tempo de execução para tamanhos crescentes de entrada. Assim, dadas f(n), g(n) : N 7→ R+, temos que:

• f = O(g), se existem duas constantes a > 0 e b tais que f(n) ≤ a · g(n) para todo n ≥ b.

• f = o(g), se lim∞f (n)/g(n) = 0.

(18)

• f = Ω(g), se g = O(f). • f = ω(g), se g = o(f).

• f = Θ(g), se f = O(g) e f = Ω(g).

É comum o uso de ˜O(n)com signicado semelhante ao de O(n), mas ignorando fatores logarítmicos. Assim sendo, temos f = ˜O(g(n)) = O(g(n) log(g(n))). É uma prática frequente a omissão da base do logaritmo, pois o uso de diferentes bases signica apenas uma mudança no valor de escala. Isto não altera o comportamento assintótico.

Um problema de decisão consiste em determinar se uma palavra de entrada satisfaz uma dada propriedade. De forma equivalente, podemos deni-lo como, dada uma palavra we uma linguagem L denidas sobre um alfabeto Σ, determinar se w ∈ L. Desta forma, a classe P consiste dos problemas de decisão que podem ser resolvidos por uma máquina de Turing em tempo polinomial t(n) no tamanho da entrada, ou seja, t(n) = O(nk) para alguma constante k.

De forma análoga, a classe NP consiste dos problemas de decisão que podem ser resolvidos por uma máquina de Turing não-determinística em tempo polinomial. Alter-nativamente, podemos denir esta classe como sendo formada pelo conjunto de todas as linguagens L denidas sobre o alfabeto Σ para as quais existe uma relação R ⊆ Σ∗× Σ∗ tais que a pertinência (x, y) ∈ R possa ser vericada em tempo polinomial no tamanho de x. Assim, assegura-se que x ∈ L apenas quando existir y tal que (x, y) ∈ R. Sob tais circunstâncias, y é dito testemunha ou certicado de pertinência de x a L.

Para nalidades práticas em que se considera o uso de computadores digitais na solução destes problemas de decisão, consideramos que são empregadas codicações ecientes das linguagens sobre as quais tais problemas são denidos.

Há redução polinomial de uma linguagem L1 a uma linguagem L2, denotada L1 ≤P L2, quando existe uma função f : {0, 1}∗ 7→ {0, 1}computável em tempo polinomial tal que

x ∈ L1 ⇔ f (x) ∈ L2.

Assim, se há uma redução polinomial de um dado problema Q a um problema Q0, então podemos considerar que resolver Q não é mais difícil do que resolver Q0.

A classe de problemas NP-difíceis é denida como aquela composta por problemas para os quais qualquer problema pertencente à classe NP podem ser reduzidos.

Denominam-se NP-completos os problemas que pertencem tanto à classe NP quanto à classe NP-difícil.

2.1.2 Reduções

Uma redução consiste em mapear um problema A em outro B. Tal redução é dita polino-mial quando este mapeamento puder ser computado em tempo polinopolino-mial. Desta forma, conhecendo-se uma solução para B, consegue-se também resolver A.

Em Criptograa, tal conceito é utilizado nas provas de segurança via Modelo Padrão. Segundo tal abordagem, tenta-se relacionar uma dada primitiva criptográca a um

(19)

pro-blema computacionalmente difícil através de reduções, assumindo que o adversário seja limitado por capacidade computacional ou por quantidade de tempo disponível.

2.1.3 Pior Caso x Caso Médio

O caráter NP-difícil de um dado problema computacional não é suciente para estabelecê-lo como bom candidato a pressuposto de segurança de esquemas criptográcos. A NP-diculdade apenas indica que no pior caso o problema não tem uma solução polinomial, mas não informa nada em relação ao caso médio, ou seja, o tempo esperado quando uma instância de entrada é aleatoriamente escolhida.

Há exemplos de criptossistemas construídos sobre restrições de problemas NP-difíceis ou NP-completos, tais como o de Merkle-Hellman baseado no Problema da Mochila, que foram quebrados em decorrência do caso médio de tais restrições terem soluções com tempo polinomial.

Em sua formulação mais geral, o Problema da Mochila consiste em preencher uma dada mochila com objetos de diferentes pesos e valores, também dados como entrada, de tal forma a se atingir o maior valor possível para o conteúdo sem que, no entanto, seja excedida a capacidade da mochila.

É mais signicativo em termos de segurança, desta forma, dar evidências de que o caso médio do problema correspondente ao pressuposto de segurança é difícil de ser resolvido. Ajtai, por exemplo, propôs uma família de Funções de Mão-Única para as quais encontrar colisões implicava na capacidade de resolver qualquer instância do problema de obtenção de nc-aproximações de SVP [4].

Uma Função de Mão-Única é uma função que permite o cálculo eciente da imagem de qualquer elemento do conjunto-domínio, mas não permite o cálculo eciente da pré-imagem de um valor aleatoriamente escolhido do conjunto-pré-imagem.

Neste contexto, um problema bastante ilustrativo é o SIS, que pode ser visto como a tarefa de encontrar vetores curtos em reticulados ou códigos aleatórios [90]. Tal problema é utilizado por uma série de primitivas denominadas minicrypt, tais como funções de mão-única, resumo criptográco resistente a colisões, assinatura digital, e esquemas de identicação. É conhecido que, para escolhas adequadas de parâmetros, a capacidade de resolver o problema SIS implica na capacidade de resolver os piores casos de problemas considerados difíceis em reticulados, tais como SIVP e GAPSVP, denidos na seção 2.4.

2.2 Noções de Criptograa

Nesta seção daremos algumas denições acerca dos diferentes esquemas criptográcos sobre os quais trabalhamos no contexto de códigos corretores de erros e reticulados. Ao apresentarmos os resultados obtidos, entraremos em maior nível de detalhes.

A recomendação P1363 [99] do IEEE propõe uma visão hierárquica de sistemas crip-tográcos, desde protocolos complexos até as primitivas mais básicas que o compõem. A seguir, damos as denições de tais termos, os quais são comumente empregados ao longo deste texto na descrição de várias construções baseadas em códigos corretores de erros e reticulados.

(20)

• Primitivas: Operações matemáticas básicas, que servem como blocos construtores em esquemas. Isoladamente, não proveem segurança.

• Esquemas: Uma coleção de operações relacionadas, combinando primitivas e méto-dos adicionais. Podem prover segurança do ponto de vista de complexidade compu-tacional, que pode ser potencializada quando apropriadamente aplicada em proto-colos.

• Protocolos: sequências de operações através das quais várias entidades alcançam um dado objetivo de segurança, desde que corretamente implementados.

Vários esquemas utilizam funções de alçapão em suas construções. Tais funções são fáceis de calcular, mas suas inversas são tidas como difíceis, a menos que uma informação especial chamada de alçapão seja conhecida.

2.2.1 Protocolos de Conhecimento Zero

Em Criptograa, uma Prova de Conhecimento Zero é um método interativo através do qual uma entidade chamada Provador convence uma outra entidade chamada Vericador quanto à veracidade de uma sentença, sem, no entanto, revelar nenhum outro conheci-mento além deste.

Nas provas de segurança ao longo deste texto, utilizamos o conceito de provas de conhecimento zero. Isto signica que uma entidade chamada Provador tem como objetivo convencer uma outra entidade chamada Vericador, modelada como uma máquina de Turing probabilística de tempo polinomial, que uma dada palavra x pertence a uma linguagem L, sem revelar nenhuma outra informação.

Este tipo de prova possui as seguintes propriedades: • Completude: baixa probabilidade de falsos negativos.

Isto é, ∀x ∈ L Prob [(P, V ) [x] = YES] ≥ 1 − desprezível(k). Onde, (P, V ) denota o protocolo descrevendo a interação entre Provador e Vericador, e desprezível(k) é uma função assumindo valores insignicantes sobre algum parâmetro de segurança k.

• Consistência: baixa probabilidade de falsos positivos. Isto é, ∀x /∈ L ∀P0 Prob [(P0, V ) [x] =YES] ≤ 1/2

• Conhecimento zero: qualquer coisa que alguém poderia aprender interagindo com o Provador também poderia ter sido simulada sem nenhum acesso a este. Isto é, ∀V0

P P T ∃SP P T tais que ∀x ∈ L , temos VIEWP,V0(x)próximo de S(x). Neste

contexto VIEW representa os dados trocados entre P e V0 durante a prova, S(x) representa os dados trocados numa simulação da prova. O vericador V0

P P T e a simulação S(x) são modelados como um máquinas de Turing probabilísticas de tempo polinomial (PPT). Consideremos ainda a distribuição estatística VIEW como a real e a de S(x) como a simulada. Como denido em [44], podemos ter as seguintes classicações para a prova:

(21)

 Conhecimento zero perfeito: quando as distribuições real e simulada são exa-tamente as mesmas.

 Conhecimento zero estatístico: quando a distância entre as duas distribuições está limitada por uma função desprezível.

 Conhecimento zero computacional: quando as distribuições são indistinguíveis para qualquer algoritmo eciente.

2.2.2 Identicação e Autenticação

Um dos objetivos de segurança mais comuns em Criptograa consiste em assegurar a autenticidade de identidade. Este tipo de operação pode ser utilizado, por exemplo, para possibilitar controle de acesso. Uma das formas de se atingir tal objetivo consiste no uso de esquemas de identicação interativo de conhecimento zero. Há várias construções baseadas em Teoria dos Números, as quais utilizam a intratabilidade computacional de problemas como o do cálculo de logaritmos discretos [83] ou da fatoração de números inteiros [34]. O advento de computadores quânticos, no entanto, representa uma ameaça a tais soluções dado que se dispõe de um algoritmo quântico capaz de quebrar tais pres-supostos de segurança, a saber, o algoritmo de Shor [93], publicado em 1994. Soluções baseadas em códigos corretores de erros e reticulados, no entanto, ainda são imunes a tais computadores, dado que até o momento não foi proposto nenhum algoritmo quântico eciente para problemas como o de decodicação de síndrome, cálculo de vetor mais curto ou obtenção do vetor mais próximo. A importância de alternativas vai além do fato de se ter que lidar com eventuais computadores quânticos, no entanto. À medida que a ca-pacidade dos adversários clássicos aumenta, maiores são as necessidades de se aumentar o tamanho das chaves utilizadas, classicamente falando. Há a possibilidade de que al-ternativas envolvendo códigos e reticulados passem a oferecer vantagem em desempenho, considerando-se tal cenário.

Nos esquemas descritos ao longo deste texto, em geral teremos as gura do Provador e do Vericador. O primeiro, conhecedor de uma chave secreta, engaja-se num protocolo com o segundo, que conhece apenas a chave pública correspondente. Ao término da in-teração, o Vericador é convencido de que o Provador de fato conhece a chave privada. Assumimos que apenas o provador conheça tal chave. Nos diferentes modelos de segu-rança, assumimos que os adversários consigam realizar algumas ações com o intuito de realizar um ataque de personicação, como mostrado a seguir.

Utilizamos extensamente o conceito de funções hash nos esquemas criptográcos abor-dados nesta tese. Tais funções são utilizadas para fazer o resumo criptográco de mensa-gens. Elas recebem como entrada um texto de tamanho arbitrário e dão como resultado uma sequência de bits de tamanho xo. Idealmente, tais funções são de difícil inversão. Além disso, é difícil encontrar colisões: fazer propositalmente com que duas mensagens distintas que sejam mapeadas no mesmo valor.

(22)

Modelos de Segurança

• Passivo: é o modelo mais fraco, no que concerne à capacidade do adversário. Nele supomos que o adversário seja apenas capaz de monitorar o canal de comunicação. • Ativo: aqui o adversário é capaz de interagir com o provador, sem necessariamente seguir à risca o protocolo de identicação, com o intuito de aprender algo a respeito da chave privada. Depois de tal interação, ele tenta personicar o provador.

• Concorrente: este é o modelo mais forte de todos. Permite-se que o adversário in-teraja simultaneamente com várias instâncias do provador, cada uma mantendo seu próprio estado interno, mas naturalmente compartilhando a mesma chave secreta. Depois de tal interação, o adversário tenta personicar o provador.

2.2.3 Assinatura

As Assinaturas Digitais constituem-se num meio de assegurar a identidade do autor de um documento, bem como a integridade deste. Dentre as propriedades ideais que tais assinaturas possuem destacamos a impossibilidade de serem forjadas. Elas também go-zam da propriedade de irretratabilidade, uma vez que qualquer alteração no documento assinado faz com que a assinatura torne-se inválida.

Os esquemas canônicos de assinatura possuem tipicamente quatro algoritmos: gera-ção de parâmetros, geragera-ção de chaves, assinatura, vericagera-ção. A partir dos dois primeiros consegue-se denir parâmetros públicos e um par de chaves que servirão para assinar documentos de forma vericável. O algoritmo de assinatura faz uso da chave privada, ge-rando uma palavra que estabelece vínculo entre a identidade do assinante e o conteúdo do documento assinado. O algoritmo de vericação emprega a chave pública para vericação da correção de tal vínculo.

Fiat e Shamir propuseram uma heurística a partir de qual se consegue converter um esquema de identicação num esquema de assinatura [34], baseados no modelo do oráculo aleatório. Tal heurística substitui o papel do Vericador por uma função de resumo calculada sobre o documento a ser assinado e sobre as palavras de compromisso escolhidas pelo Provador (ou assinante, mais precisamente).

2.2.4 Cifradores de Fluxo e Geradores de Sequência

Pseudoalea-tória

Um Gerador de Números Pseudoaleatórios (PRNG, abreviação de pseudo-random num-ber generator) é um algoritmo cujo objetivo é produzir uma sequência de números com propriedades próximas daquelas de números aleatórios. Dentre as aplicações deste tipo de algoritmo em Criptograa, temos a construção de cifras de uxo. Estas podem ser obtidas, por exemplo, através da operação de ou-exclusivo entre um texto em claro e uma sequência pseudoaleatória de bits.

(23)

2.3 Códigos Corretores de Erros

Seja A um conjunto nito com q elementos. Dene-se como código corretor de erros C de comprimento n um subconjunto de An. Se A for um corpo nito e o código C for um subespaço vetorial de dimensão k sobre A, o código é dito linear e denotado por C (n, k) . Além disso, a sua taxa de informação, que está associada à sua eciência, é dada por: R(C) = kn. Para o caso especial em que a característica do corpo nito A é 2, tem-se um código binário.

Chamamos de código q-ário C ⊂ Fn

q o código denido sobre o corpo nito Fq, onde q é um número primo.

Um código linear C é dito cíclico se, ∀c = (c0, . . . , cn−1) ∈ C temos que necessariamente c0 = (cn−1, c0, . . . , cn−2) ∈ C. Várias das operações realizadas sobre tais códigos podem ser traduzidas em operações sobre polinômios em uma variável, tornando os algoritmos de codicação e decodicação bastante ecientes.

O código linear C pode ser visto como imagem de uma transformação linear injetora: Φ : Ak → An. Ela mapeia (a

1, a2, . . . , ak) em Gn×k.(a1, a2, . . . , ak)T, onde Gn×k é uma matriz de posto k cujos elementos pertencem ao corpo nito A chamada matriz geradora do código.

Denomina-se matriz de vericação de paridade de um código linear C a matriz H(n−k)×n tal que HwT = 0 ∈ An−k ⇐⇒ w ∈ C. O vetor dado por HwT é denido como síndrome de w. Os elementos de um código C são, desta forma, os vetores cuja síndrome é o vetor nulo.

Seja uma função d : An× An → R. Ela é considerada uma função distância se, e somente se, as seguintes propriedades forem satisfeitas:

a) d(x, y) ≥ 0 e d(x, y) = 0 ⇔ x = y; b) d(x, y) = d(y, x);

c) d(x, y) + d(y, z) ≥ d(x, z).

Seja o vetor u ∈ An. Dene-se como peso de Hamming de u o número de componentes não-nulos de u.

Sejam u, v ∈ An. Dene-se como distância de Hamming entre u e v o número de coordenadas distintas entre u e v.

Os conceitos de peso e de distância de Hamming aplicam-se tanto a códigos binários (quando as coordenadas do código pertencem a um corpo binário) quanto q-ários (quando as coordenadas do código pertencem a um corpo primo).

2.3.1 Problemas Computacionalmente Difíceis

O Problema de Decodicação de Síndrome (SDP) consiste em, dados um código linear C (n, k) sobre um corpo nito A com uma matriz de vericação de paridade H(n−k)×n, um vetor s ∈ An−k e um número inteiro positivo w, determinar se existe um vetor e ∈ An satisfazendo HeT = sT e com peso de Hamming menor ou igual a w. Este problema de decisão é NP-completo para códigos binários [12] e ternários [9]. A versão computacional

(24)

de SDP, que solicita que se obtenha um valor para e satisfazendo as restrições acima, é NP-difícil.

Seja d a distância mínima entre dois vetores quaisquer pertencentes ao código C (n, k). Para o problema SDP como denido acima, se peso(e) ≤ b(d − 1)/2c, a versão computa-cional de SDP tem solução única. A determinação da distância mínima d para códigos binários, por sua vez, está na classe NP-difícil [95]. O respectivo problema de decisão, em que se tenta determinar se há alguma palavra do código com peso de Hamming abaixo de um valor dado como entrada, é NP-completo [95].

Dene-se como Problema de Decodicação com Distância Limitada (BDDP) a tarefa de, dados um código binário C (n, k) com distância mínima d, e c ∈ (F2)n, encontrar v ∈ C tal que dist(v, c) = d. BDDP reduz-se, desta forma, a SDP com d conhecido.

Embora a determinação da distância mínima de um código esteja na classe NP-difícil, é possível construir famílias de códigos cujas distâncias mínimas possuam cotas inferiores determinadas a priori, tais como os Códigos BCH e os Códigos de Goppa [1].

Uma das cotas mais signicativas do ponto de vista de Criptograa sobre códigos é a chamada cota de Gilbert-Varshamov. Considerando Aq(n, d) o número máximo de palavras de um código q-ário com distância mínima d, temos que

Aq(n, d) ≥ qn Pd−1 j=0 n j(q − 1)j .

Em seu trabalho sobre geradores de números pseudoaleatórios a partir de códigos binários, Fischer e Stern [36] observaram que o número de palavras de código associados a um dado valor de síndrome cresce com o peso de Hamming até um ponto em que se tem, em média, uma palavra de código por valor de síndrome. Tal peso corresponde à cota de Gilbert-Varshamov.

2.3.2 Códigos Algébricos

A utilização de uma estrutura algébrica na denição de um código corretor de erros per-mite a formulação de algoritmos de decodicação ecientes. Em aplicações criptográcas o conhecimento de tal estrutura (que é associado à chave privada) é utilizado como alçapão em operações de decifração. Além, disso através de um conveniente mascaramento (para obtenção da chave pública) de tal estrutura, consegue-se garantir que a decifração destes códigos tenha um nível de diculdade semelhante à dos códigos lineares aleatoriamente gerados.

Códigos BCH

Os códigos BCH (as iniciais de seus criadores Bose, Chaudhuri e Hocquenghem) são códigos cíclicos convenientemente construídos a partir das raízes n-ésimas da unidade [1]. Para que sua denição seja melhor compreendida, faz-se necessário descrevermos anéis, corpos, ideais e polinômios geradores.

Um anel é um conjunto munido de duas operações:

(25)

• multiplicação: associativa, comutativa, munida de elemento neutro, distributiva em relação à adição.

Um corpo é um anel para o qual todo elemento não-nulo possui um inverso multipli-cativo.

Seja A um anel. Dene-se ideal como um subconjunto I não-vazio de A para o qual as seguintes condições são vericadas:

• ∀a, b ∈ I, a + b ∈ I; • ∀a ∈ I e ∀c ∈ A, ca ∈ I.

Sejam o corpo K e o número inteiro n > 0. Dene-se como Rn = K [X]Xn−1 o anel

das classes residuais em K [X] módulo Xn− 1. Os elementos de Rn são da forma

[f (X)] = {f (X) + h(X)(Xn− 1) : h(X) ∈ K [X]} ,

onde K [X] representa todos os polinômios com indeterminada X e coecientes em K. A transformação linear ν dene um isomorsmo entre Kne R

n, levando (a0, . . . , an−1) em a0+ a1X + · · · + an−1Xn−1. Temos que um subespaço C de Kn é um código cíclico se, e somente se, ν(C) é um ideal I = I [g(X)] de Rn, onde g(X) é um divisor de Xn− 1 e chamado polinômio gerador do código C.

Sejam K e Rn denidos no parágrafo anterior. Munindo-se Rn da multiplicação por escalares λ ∈ K, denida por λ [f(X)] = [λf(X)], tem-se Rn como espaço vetorial de dimensão n sobre K, possuindo por base {1, [X] , . . . , [Xn−1]}.

Sejam K = Fq e n > 1 um número inteiro co-primo a q. Seja F um corpo onde Xn− 1 se decompõe em fatores lineares, e seja γ ∈ F uma raiz n-ésima primitiva da unidade. Dene-se como BCH o código cíclico C com polinômio gerador

g(X) = M M C(mγa(X), . . . , mγa+δ−2(X))

com a ≥ 0 e δ ≤ n. Então, a distância mínima de C é pelo menos δ e a sua dimensão é pelo menos n − m(δ − 1), onde m = dimKF e

mγj(X) = (X − γj)(X − (γj)q) . . . (X − (γj)q dj −1

) onde dj é o menor inteiro positivo tal que jqdj−1 ≡ j mod n.

Para o caso particular em que a = 0 e d = q − 1 tem-se um código Reed-Solomon. Sejam as raízes de g(X) dadas por γa, γa+1, . . . , γa+δ−2 ∪ {β

(26)

dada por ˜ H =             γ0 γa γ2a . . . γ(n−1)a γ0 γa+1 γ2(a+1) . . . γ(n−1)(a+1)

... ... ... ...

γ0 γa+δ−2 γ2(a+δ−2) . . . γ(n−1)(a+δ−2) β0 1 β1 β12 . . . β n−1 1 ... ... ... ... βs0 βs βs2 . . . βsn−1             ,

tem a propriedade de ˜HaT = 0, onde a = (a0, . . . , an−1) é uma palavra do código BCH. Alternativamente, os códigos BCH podem ser escritos na forma:

(a0, . . . , an−1) ∈ C ⇐⇒ n−1 X j=0 ajγj(δ−1) Xδ−1− γ−j(δ−1) X − γ−j = 0 (2.1)

Os algoritmos de decodicação mais comumente utilizados para códigos BCH são Peterson-Gorenstein-Zierler, Berlekamp-Massey, Sugiyama, Sudan-Guruswami, cujas des-crições podem ser obtidas em [49].

Códigos de Goppa

A formulação alternativa dos códigos BCH vista na equação (2.1) fornece um método de generalizá-los, permitindo ampliação de sua família de forma incorporar códigos as-sintoticamente bons. Uma família de códigos é asas-sintoticamente boa se possuir um sub-conjunto innito de códigos [ni, ki, di] tais que limi→∞ni = ∞, limi→∞inf ki/ni > 0 e limi→∞inf di/ni > 0. Em particular, as famílias de códigos que satisfazem a cota assintó-tica de Gilbert-Varshamov também são assintoassintó-ticamente boas.

O Código de Goppa Clássico é denido a seguir. Seja F um corpo nito correspondente à extensão de um corpo K. Seja ϕ(X) ∈ F (X) e L = {α0, . . . , αn−1} ⊂ F, onde os αi são distintos dois a dois e ϕ(αi) 6= 0 para i = 0, . . . , n − 1. Dene-se como Código de Goppa Clássico sobre K o subespaço vetorial de Kn dado por

ΓK(L, ϕ) = ( (c0, . . . , cn−1) ∈ Kn; n−1 X i=0 ciϕ(αi)−1 ϕ(X) − ϕ(αi X − αi = 0 ) .

Uma forma alternativa de denir este código para facilitar a obtenção de matrizes gera-doras é dada a seguir:

Sejam K e F corpos nitos, sendo F uma extensão de K. Sejam ϕ(X) ∈ F [X], tal que o grau de ϕ seja δ e L = {α0, . . . , αn−1} ⊂ F, onde os αi são distintos dois a dois e ϕ(αi) 6= 0 para i = 0, . . . , n − 1. Dene-se como Código de Goppa Clássico:

ΓK(L, ϕ) = ( (c0, . . . , cn−1) ∈ Kn; n X i=0 ci X − αi ≡ 0 mod ϕ(X) )

(27)

que tem como matriz geradora      ϕ(α0) h0 0) . . . ϕ(αn−1) h0 n−1) ϕ(α0) h0 0)α0 . . . ϕ(αn−1) h0 n−1)αn−1 . . . . ϕ(α0) h0 0)α n−1−δ 0 . . . ϕ(αn−1) h0 n−1)α n−1−δ n−1      , onde h(X) = Qn−1 j=0(X − αj) e h 0(X) =Pn−1 i=0 Q k6=i(X − αk)

Utilizando-se conceitos de divisores sobre polinômios em duas indeterminadas, pode-se chegar a uma formulação algébrico-geométrica mais geral dos Códigos de Goppa Racionais. Sejam:

• K = Fq um corpo nito com q elementos. • s um número inteiro satisfazendo 1 ≤ s ≤ q. • s elementos distintos de K dados por a1, . . . , as.

• K(X, Y )o corpo das funções racionais em duas indeterminadas com coecientes no corpo K.

• PK o conjunto das formas irredutíveis mônicas de K[X, Y ]. • P1 = X − a1, . . . , Ps = X − as e Ps+1 = Y elementos de PK.

• De E dois divisores de PKcom suportes disjuntos, ou seja, têm a forma PP ∈PKnPP, com np ∈ Z assumindo valores não nulos apenas para um número nito de P ∈ PK, dos quais nenhum é comum a D e E. Além disso, D = P1+ · · · + Ps+ δPs+1, onde δ = grau(D) − s.

• O espaço vetorial associado a divisores L(D) = {ϕ ∈ K(PK) : div(ϕ) + D ≥ 0}∪{0} • C(D, E) = {(ϕ(P1), . . . , ϕ(Pn) : ϕ ∈ L(E)} ⊂ Kn.

O Código de Goppa C(D, E) é um código linear de parâmetros (n, k, d), respectivamente (dimensão, posto e distância mínima), onde k = dimKL(E) − dimKL(E − D) e

d ≥ n−grau(E). Se 0 < grau(E) < n, então k = dimKL(E) = grau(E)+1e d = n−k+1. A decodicação destes códigos envolve a construção de polinômios auxiliares para a localização e correção de erros a partir do polinômio de síndrome, bem como o cálculo de suas raízes [1].

2.3.3 Aplicações em Criptograa

São dados nesta seção dois exemplos de criptossistemas construídos sobre códigos corre-tores de erros: McEliece e Niederreiter. Os esquemas e primitivas empregados em ambos são descritos.

(28)

Criptossistema McEliece

Este é um dos vários criptossistemas que utilizam códigos corretores de erros em sua formulação. Foi proposto em 1978 por Robert McEliece e até o presente tem resistido a criptanálise. Introduziu também, no contexto de Criptograa de chave pública, o uso de aleatorização na cifração. Tal criptossistema disfarça um Código de Goppa (de fácil decodicação) como um código linear geral, de forma que a inversão de tal disfarce seja computacionalmente difícil. Na diculdade de tal inversão e da solução do problema de decodicação linear reside a segurança do sistema. Um dos fatores que desencorajaram seu uso é o tamanho relativamente grande de suas chaves. Entretanto, por se tratar de um problema para o qual algoritmos quânticos ecientes ainda não são conhecidos, estes criptossistemas têm despertado interesse no contexto de segurança da informação.

Os esquemas utilizados por este criptossistema encontram-se descritos abaixo, onde (n, t, k) representam os parâmetros do sistema para dimensão, número de erros que se podem corrigir e posto, respectivamente. Suponhamos um cenário em que B envie uma mensagem cifrada a A.

• Geração de chaves por A:

 Escolher um Código de Goppa Γ(L, g) e calcular uma matriz geradora Gk×n.  Escolher uma matriz Sk×k não-singular, uma matriz de permutação Pn×n e

calcular E = SGP .

 Calcular a matriz ˆG = SGP.

 As chaves pública e privada obtidas são dadas por ( ˆG, t) e (S, G, P). • Cifração de uma mensagem por B:

 Obter a chave pública ( ˆG, t).

 Representar a mensagem como um vetor binário m de comprimento k.

 Escolher um vetor de erro binário aleatório z, tendo comprimento n e peso, no máximo, t.

 Calcular o texto cifrado c = m ˆG + z.

 Enviar texto cifrado ao dono da chave pública. • Decifração do texto cifrado c de n bits por A:

 Computar ˆc = cP−1.

 Usando o algoritmo decodicador para Γ, decodicar ˆc para ˆm.  Computar o texto m = ˆmS−1.

A decifração funciona dado que ˆc = (mSGP + z)P−1 = mSG + zP−1

= ˆmG + ˆz, com ˆm = mS e ˆz = zP−1. Além disso, ˆz tem, no máximo, peso igual a t, estando dentro da capacidade de correção do código.

(29)

Criptossistema de Niederreiter

Este criptossistema é uma variação do de McEliece. Originalmente, utilizava códigos generalizados Reed-Solomon (GRS), contra os quais foram descobertas uma série de fra-gilidades [79]. A versão que usa Códigos de Goppa em sua formulação tem segurança equivalente à de um criptossistema de McEliece [101].

Os esquemas que compõem este criptossistema estão descritos a seguir:

• Geração de chaves: a derivação destas entidades, descrita em detalhes em [79], consiste nos passos descritos abaixo.

 Escolher um Código Goppa corretor de até t erros Γ(L, g) e computar a matriz de paridade correspondente H(n−k)×n.

 Escolher uma matriz binária aleatória S(n−k)×(n−k), uma matriz de permutação aleatória Pn×n e calcular E(n−k)×n = SHP.

 Denir as chaves privada e pública, respectivamente, como Kprivada = (S−1, Γ, P−1)

Kpublica = (E, t) .

• cifração do texto m:

 Representar m com vetor u de n bits de peso w(u) = t através de "unran-king" de permutações [76].

 Computar o texto cifrado c = EuT de n − k bits. • decifração de texto cifrado c:

 Calcular c0 = S−1c. Sabe-se que c0 = S−1(SHPuT) = H(PuT) = Hu0, com u0 = PuT.

 Decodicar a síndrome c0 para u0 usando o algoritmo de decodicação para Γ.  Computar u = P−1u0 e obter o texto m através de "ranking" de permutações [76]. As operações "Ranking" e "unranking" estão denidas no nal desta seção.

Ranking Seja P (n, t) = {u ∈ (F2)n| w(u) = t}, com cardinalidade r = nt ≈ n

t

t!. "Ran-king"consiste em mapear univocamente P (n, t) num inteiro no intervalo [1..r]. Unranking Nas condições do parágrafo anterior, "unranking" consiste em fazer o

(30)

Redução de Chaves

O excessivo tamanho das chaves públicas e privadas constitui-se num empecilho comu-mente citado contra a adoção de códigos corretores de erros em Criptograa. A vasta maioria das tentativas para reduzir tal tamanho consistiu em se acrescentar mais estru-tura ao código, ao mesmo tempo que se tenta ocultar tal estruestru-tura. A ideia subjacente é a de manter nestes códigos especializados o mesmo grau de diculdade dos problemas em cuja intratabilidade baseiam-se os diferentes esquemas criptográcos, quando comparados aos códigos genéricos a partir dos quais as especializações são feitas.

Desta forma, Gaborit trabalhou com códigos quase-cíclicos [38]; Monico et al., com códigos LPDC [75]; Baldi et al., com códigos LDPC quase-cíclicos [8]; Berger et al., com perfuração e subcódigos sobre subcorpos [73]; Misoczki e Barreto, com códigos quase-diádicos [73]. Esta linha de trabalho, com exceção dos códigos quase-quase-diádicos puramente binários, tem sucumbido a ataques estruturais, tais como o descrito por Faugere et al. em [32]. Desta forma, ainda é de interesse a busca por chaves de tamanhos práticos para Criptograa baseada em códigos corretores de erros.

2.4 Reticulados

Nesta seção denimos reticulados e enumeramos algumas de suas propriedades, com ênfase naquelas que têm demonstrado aplicabilidade em Criptograa.

Nesta subseção denimos termos necessários à explicação dos pressupostos de segu-rança utilizados pelos esquemas criptográcos descritos no texto.

A norma k.k que normalmente utilizaremos é a `p, com p ≥ 1. Portanto, para x ∈ Rn,

kxk =  n X i=1 xpi 1/p

Um reticulado L é um subgrupo aditivo discreto de Rn, onde n ∈ N. Caso L ⊆ Zn, denomina-se reticulado inteiro.

A base B de um reticulado inteiro L ⊆ Zn corresponde ao conjunto de vetores line-armente independentes B = [b1, b2, ..., bm], com m ∈ N, cujas combinações lineares geram todos os elementos de L.

A dimensão de L é dada pelo número de elementos que formam uma de suas bases. A base B de um reticulado L pode ser representada na forma de matriz ∈ Rn×m. Duas bases distintas B1 e B2 geram o mesmo reticulado se, e somente se, relacionarem-se da forma B1 = B2U, dado que U seja uma matriz unimodular.

Dado um reticulado L de dimensão n, dene-se como i-ésimo mínimo sucessivo λi(L), para i = 1, ..., n o menor número r tal que a bola com centro na origem e com raio r contenha i vetores linearmente independentes.

2.4.1 Problemas Computacionalmente Difíceis

Denição 2.4.1. (Problema do Vetor mais Curto - SVP) Dada uma base de reti-culado B ∈ Zm×n, este problema consiste em encontrar o vetor não-nulo mais curto Bx

(31)

tal que kBxk ≤ kByk para qualquer outro y ∈ Z \{0}.

Ainda não se conhecem algoritmos subexponenciais para solução do problema SVP. Há, entretanto, algoritmos capazes de obter soluções aproximadas em tempo polinomial, tais como o LLL [55]. Entretanto, o fator de aproximação obtido por tal algoritmo é da ordem de 2O(n), onde n é a dimensão do reticulado sobre o qual o problema é denido. Diferentes melhorias sobre o LLL foram propostas, tais como o algoritmo de Schnorr ou de Gama e Nguyen [13]. Entretanto o fator de aproximação obtido por eles ainda é exponencial.

Os métodos exatos agora conhecidos têm complexidade exponencial na dimensão dos reticulados dados como entrada. Como exemplo temos o algoritmo de Kannan [54].

Uma terceira forma de encontrar vetores curtos consiste em usar métodos combinató-rios, tais como o proposto por Wagner [98]. Ele é mais eciente para encontrar vetores curtos com a estrutura similar às chaves privadas utilizadas em nossos algoritmos, quando comparado aos dois tipos vistos acima. Entretanto, ainda possui custo exponencial na dimensão do reticulado. Ele consiste em dividir as colunas de A em grupos e construir para cada um deles listas com combinações lineares inteiras dos vetores-coluna tais que os coecientes estejam limitados ao intervalo [−b, b], para um dado número inteiro b. A seguir, as listas vão sendo combinadas de forma a seletiva e iterativamente zerar as coor-denadas dos vetores resultantes até encontrar o vetor nulo. Em outras palavras, dada a matriz A ∈ Zn×m

q como entrada, tal algoritmo retorna vetores no reticulado Λ⊥q(A) cor-respondente aos vetores ortogonais àqueles corcor-respondentes às linhas da matriz A. Este algoritmo foi utilizado como referência para estimar a segurança em bits dos esquemas propostos nesta tese, pois representa o melhor ataque conhecido contra as construções empregadas.

Denição 2.4.2. (Problema do Vetor mais Próximo - CVP) Dada uma base de reticulado B ∈ Zm×n e um vetor-alvo t ∈ Zm, este problema consiste em encontrar x ∈ Zn tal que kBx − tk seja mínimo.

Estes dois problemas também podem ser formulados na forma de aproximações. Denição 2.4.3. (SVPγ Aproximado) Dada uma base de reticulado B ∈ Zm×n, en-contrar um vetor não-nulo Bx tal que kBxk ≤ γ · kByk para qualquer outro y ∈ Zn\{0}. Denição 2.4.4. (CVPγ Aproximado) Dada uma base de reticulado B ∈ Zm×n e um vetor-alvo t ∈ Zm, encontrar x ∈ Zn tal que kBx − tk ≤ γ · kBy − tk para qualquer outro y ∈ Zn.

Alternativamente, uma terceira forma de expressar tais problemas consiste em deni-los na forma de promessas, que generalizam o conceito de aproximação.

Denição 2.4.5. (Problemas de Promessa) Um problema de promessa Π consiste num par de conjuntos com interseção vazia, denotados por (ΠSIM, ΠN AO), isto é, ΠSIM e ΠN AO estão contidos em {0, 1}

e ΠSIM ∩ ΠN AO = ∅. O conjunto ΠSIM ∪ ΠN AO é chamado promessa, ou valores permitidos. O conjunto de valores que não pertencem nem às instâncias do tipo SIM nem às do tipo NÃO é chamado de conjunto proibido.

(32)

Denição 2.4.6. (GapSVPγ) É um problema de promessa para o qual as instâncias SIM e NÃO correspondem a:

• SIM: pares (B, r) nos quais B ∈ Zm×n é uma base de reticulado e r ∈ Q é um número racional de forma que kBzk ≤ r para algum z ∈ Zn\{0}.

• NÃO: pares (B, r) nos quais B ∈ Zm×n é uma base de reticulado e r ∈ Q é um número racional de forma kBzk > γ · r para todo z ∈ Zn\{0}.

Denição 2.4.7. (GapCVPγ) É um problema de promessa para o qual as instâncias SIM e NÃO seguem as seguintes denições:

• SIM: triplas (B, t, r) nas quais B ∈ Zm×n é uma base de reticulado, t ∈ Zm é um vetor, e r ∈ Q é um número racional de forma a termos kBz − tk ≤ r para algum z ∈ Zn.

• NÃO: triplas (B, t, r) nas quais B ∈ Zm×n é uma base de reticulado, t ∈ Zm é um vetor, e r ∈ Q é um número racional de forma a termos kBz − tk > γ · r para todo z ∈ Zn.

Uma discussão aprofundada sobre o grau de diculdade destes problema pode ser encontrada em [70].

Denição 2.4.8. (Solução Inteira Curta - SIS) Dada A ∈ Zn×m

q , um número primo q e L ∈ R encontrar um vetor x ∈ Zm satisfazendo Ax = 0 mod q e com comprimento limitado por kxk ≤ L.

Denição 2.4.9. (Solução Inteira Curta não-Homogênea - ISIS) Dada A ∈ Zn×m q , um vetor y ∈ Zn

q, um número primo q e L ∈ R, encontrar um vetor x ∈ Zm satisfazendo Ax = y mod q com comprimento limitado por kxk ≤ L.

Denição 2.4.10. (SIVP) Dado um reticulado L, dene-se como problema de encontrar os menores vetores linearmente independentes (SIVP) a tarefa de encontrar em L os vetores v1, v2, ..., vn tais que kvik ≤ γλn(L), onde γ é um fator de aproximação (i = 1, 2, ..., n).

O problema CVP tem resultados similares aos de SVP e SIVP em relação ao caráter NP-difícil das soluções exata e aproximada [66].

Não são conhecidos algoritmos polinomiais que resolvam os problemas SVP e SIVP (mesmo que aproximadamente) para γ = nO(1) [31]. Os melhores algoritmos polinomiais ([55], [92]) apresentam aproximação γ = 2O(n log log n/ log n). Além disso, já foi demonstrado que aproximações por um fator constante são NP-difíceis [68]. Ainda não se sabe, no entanto, se a aproximação por fatores polinomiais também esteja em NP-difícil, perma-necendo como simples conjectura. Da diculdade de aproximar SVP e SIVP resultaram algumas aplicações em Criptograa [67], tais como cifração e funções de "hash".

No que se refere aos problemas SIS e GapSVP, há uma redução de pior caso para caso médio a partir da qual se estabelece que, para uma escolha adequada de parâmetros q, n e m, a existência de um algoritmo probabilístico de tempo polinomial para resolver SIS no caso médio, com fator de aproximação γ implica na existência de um algoritmo probabilístico também de tempo polinomial capaz de resolver GapSVP no pior caso, com fator de aproximação ˜O(γn1/2), como visto em [71].

(33)

2.4.2 Reticulados Cíclicos e Ideais

Denição 2.4.11 (Reticulados Cíclicos). Um reticulado L com base B = [b1, b2, ..., bm]é dito cíclico se uma rotação de B dada por B1 = [bm, b1, b2, ..., bm−1]também gerar L. Denição 2.4.12 (Reticulados Ideais). Seja f um polinômio mônico de grau n. Então, Lé um reticulado ideal se corresponder a um ideal I no anel Z[x] /hfi.

Ao passo que para reticulados gerais de posto completo n precisamos de espaço da ordem de ˜O(n2log q) para representar uma base, para reticulados ideais tal demanda cai par ˜O(n log q). Isto endereça uma das maiores críticas aos criptossistemas baseados em reticulados, a saber, chaves muito grandes. Uma outra boa característica deste tipo de re-ticulado reside no fato de que as operações envolvendo multiplicação de matrizes e vetores podem ser mais ecientemente executadas pela transformada rápida de Fourier(FFT).

2.4.3 Problemas sobre Aprendizado

Problemas computacionais envolvendo aprendizado podem ser denidos tanto no âmbito de códigos quanto de reticulados [56]. Sua diculdade computacional resulta do ruído adicionado à saída da operação de produto escalar de um vetor secreto e uma coleção de vetores aleatoriamente escolhidos. Assumimos que a distribuição estatística associada ao ruído seja conhecida.

Denição 2.4.13 (Aprendendo Paridade com Ruído (LPN)). Para um inteiro n ≥ 1 e um número real  ≥ 0, este problema é denido como: encontrar um vetor s ∈ Zn 2 dada uma lista de equações perturbadas por erros hs, aii ≈ bi mod 2 nas quais ai's são independentemente escolhidos a partir de uma distribuição uniforme sobre Zn

2, hs, aii = P

jsj(ai)j corresponde ao produto escalar módulo 2 de s e ai, e cada equação é correta com probabilidade 1 − .

O problema de aprendizado com erros (LWE, do inglês Learning with Errors) foi proposto por Regev em [89] como uma extensão do problema de aprendizado a partir de paridade com ruído (LPN, do inglês Learning from Parity with Noise). A versão computacional do LWE pode ser vista como a tarefa de recuperar o valor secreto s dada uma equação linear perturbada na forma As ≈ y mod q. Mais formalmente, LWE pode ser formulado como [89]:

Denição 2.4.14 (Learning with Errors). Seja q um número primo e χ uma distribuição de probabilidade sobre Zq. Dado um vetor secreto s ∈ Znq, denotamos por As,χ a distri-buição de probabilidade sobre Zn

q × Zq obtida escolhendo a ∈ Znq uniformemente, e ∈ Zq de acordo com a distribuição χ, dando como saída (a, ha, si + e mod q). Denimos a versão de busca LWEq,χcomo o problema de recuperar o valor secreto s dado um número arbitrário de amostras de As,χ. Denimos a versão de decisão de LWEq,χcomo o problema de distinguir as amostras As,χ de uma distribuição uniforme Znq × Zq. Para q = 2 temos as denições correspondem ao problema LPN.

(34)

Recentemente, o problema LWE tem sido usado em várias construções criptográcas devido a suas fortes propriedade de segurança, tais como a existência de reduções de-cisão/busca e caso médio / pior caso. Além disso, se χ for uma distribuição gaussiana discreta com desvio-padrão αq > 2/√n, a diculdade computacional de LWE é compro-vadamente relacionada aos piores casos de alguns conhecidos problemas sobre reticulados, tais como GAPSVP e SVIP, que acredita-se serem resistentes a ataques quânticos. Para aplicações práticas, é muito interessante adotar a versão de LWE sobre reticulados ide-ais, para a qual as coordenadas de a são coecientes de polinômios no anel Zq/ hxn+ 1i, conhecido como anel anti-cíclico. Esta abordagem possibilita multiplicações mais rápidas entre vetores e matrizes através do uso de Transformada Rápida de Fourier. Além disso, consegue-se reduzir as chaves para tamanhos da ordem de O(n) elementos em Zq, como visto em [65].

Dado um polinômio mônico irredutível q (X) de grau n, denomina-se reticulado ideal o conjunto formado pelos polinômios pertencentes a Z [X] que sejam equivalentes pela redução modular por q (X). Ainda permanece em aberto se tais instâncias de SVP, SIVP e CVP denidos sobre este tipo de reticulado estão em NP-difícil, quer seja na solução exata quer na aproximada.

2.4.4 Aplicações em Criptograa

Damos nesta seção exemplos de criptossistemas construídos sobre reticulados, explorando aspectos dos problemas NP-difíceis discutidos acima.

Um dos resultados mais interessantes envolvendo reticulados foi obtido ao se reduzir os casos mais difíceis de um problema computacionalmente difícil ao caso médio de uma instância correspondente a um criptossistema, [4] e [5]. Em tais trabalhos, Ajtai utilizou a intratabilidade de problemas de aproximação computacionalmente difíceis em reticulados para construir criptossistemas.

O sistema de criptográco NTRU (patenteado pela NTRU Cryptosystems, Inc.), atu-almente sendo avaliado pelo IEEE para normalização, baseia-se em reticulados quase-cíclicos. Suspeita-se que SVP, SIVP e CVP sejam mais fáceis de resolver sobre estes reticulados. Entretanto, ainda não há provas quanto a isto.

Criptossistema Ajtai-Dwork

Ajtai e Dwork propuseram dois criptossistemas baseados em reticulados [5]. No primeiro, pode ser aplicada a técnica HNF, cuja descrição encontra-se na página 37, para obterem-se melhorias em deobterem-sempenho. O obterem-segundo tem grande importância por obterem-se tratar de um exemplo de criptossistema em que há conexões demonstradas entre a diculdade do caso médio e o pior caso do problema matemático subjacente. Infelizmente, este criptossistema carece de um desempenho satisfatório: tanto o tamanho das chaves quanto o tempo de execução crescem da forma O(n4), onde n é o número de vetores da base do reticulado. As ideias utilizadas pelos dois criptossistemas são descritas a seguir.

• Geração de Chaves Privadas: Sejam M e d dois parâmetros, com d ≥ ncM para c sucientemente grande. Escolhamos n − 1 vetores linearmente independentes

(35)

{r1, . . . rn−1} os quais geram o hiperplano H. Escolhamos como último vetor da base do reticulado um vetor aleatório cuja distância de H seja aproximadamente igual a d. Desta forma, todos os pontos do reticulado pertencem à coleção de hiper-planos Hk = kr∗n+ H. Apenas o vetor ortogonalizado r∗n precisa ser armazenado como parte da chave privada, dado que os demais componentes não são necessários na decifração.

• Geração de Chaves Públicas: Qualquer base aleatória B de L pode ser utilizada. • Cifração: Os bits 0 da mensagem são codicados como pontos próximos ao

reti-culado, ao passo que os bits 1, como pontos distantes. Assim, a cada bit zero seleciona-se um ponto do reticulado e adiciona-se uma pequena perturbação, cor-respondente à soma de O(n) vetores independente e uniformemente distribuídos na esfera de raio n3M. A cada bit 1, seleciona-se aleatoriamente um ponto qualquer do espaço, que estará distante do reticulado com alta probabilidade.

• Decifração: Dado um vetor-alvo t, calcular a distância do hiper-plano mais próximo e decidir se tal vetor corresponde a um vetor próximo ou distante do reticulado. No primeiro caso, o bit é decodicado como 0; no segundo caso, como 1. Dada a forma como os bits 1 são cifrados (escolha aleatória de pontos no espaço), no entanto, erros de decifração podem ocorrer com probabilidade não desprezível. Quando o vetor aleatório está demasiado próximo do reticulado, o bit 1 será decodicado como 0. Goldreich propôs uma forma de se eliminar tais erros de decifração [80].

Supondo que se possam distinguir cifragens de 0 das de 1, pode-se utilizar tal capa-cidade para encontrar n − 1 vetores linearmente independentes bastante próximos a H. Começa-se da origem e move-se aleatoriamente usando um oráculo que informa a pro-ximidade do plano. Depois de se encontrarem n − 1 vetores linearmente independentes, calcula-se um múltiplo de r∗

n . O comprimento exato de r ∗

n pode ser obtido projetando-se o reticulado ortogonalmente à reta R•r∗

n e calculando o comprimento do vetor mais curto neste reticulado de dimensão 1.

De forma semelhante ao que foi visto para o caso de códigos corretores de erros, as chaves deste criptossistema ocupam espaço consideravelmente grande, da ordem de O(n4). Criptossistema GGH

Este criptossistema foi proposto por Goldreich, Goldwasser e Halevi [81]. Sua construção parte do fato de que, dada uma base qualquer para um reticulado, é fácil gerar um vetor próximo a um ponto do reticulado. Basta, por exemplo, computar um ponto qualquer através de uma combinação linear dos vetores da base e adicionar uma pequena per-turbação. O caminho inverso, de obter o ponto do reticulado a partir da perturbação, entretanto, é computacionalmente difícil (CVP). Desta forma, a operação de adicionar uma perturbação a um vetor do reticulado pode ser vista como uma computação de difí-cil inversão. O uso de bases convenientes, entretanto, permite aproximações muito boas para o problema CVP. Uma de tais bases pode ser usada como chave privada e, através de

(36)

transformações aleatórias unimodulares, pode-se obter uma base arbitrária a ser utilizada como chave pública.

• Geração de Chaves Privadas: Os criadores deste criptossistema sugerem dois méto-dos geração de chaves privadas:

 Construir uma matriz Rn×n formada por números inteiros aleatoriamente es-colhidos no intervalo [−l, l]. Tem como vantagem o fato de ser mais difícil de ser recuperada por adversários a partir da chave pública.

 Construir R = kI+R0, onde I é uma matriz ortogonal, k =

n le R0 é formada por números inteiros aleatoriamente escolhidos no intervalo [−l, l]. Tem como vantagem o fato de permitir recuperação para maiores vetores de perturbação. • Geração de Chaves Públicas: A chave pública pode ser obtida a partir da chave

privada de duas formas distintas:

 A chave pública B é obtida de R através de operações elementares sobre colu-nas. Os coecientes utilizados nas combinações lineares são escolhidos aleato-riamente no conjunto {−1, 0, 1}. A sequência de operações deve ser grande o suciente para dicultar busca exaustiva.

 A chave pública B é obtida a partir de R através de multiplicação por matrizes unimodulares da forma triangular com diagonal formada por elementos do conjunto {−1, 1} e demais elementos escolhidos aleatoriamente de {−1, 0, 1}. Um tamanho adequado para chave pública é estimado em O(n3log n), onde n é a dimensão do reticulado.

• Cifração: Consiste em adicionar uma perturbação r ao ponto do reticulado Bx representante da mensagem, de tal forma que este possa ser recuperado a partir do texto cifrado t = Bx + r. O comprimento máximo δ permitido para r é um dos parâmetros do criptossistema. O vetor x é escolhido de uma região do espaço grande o suciente para fazer com que Bx pareça um ponto aleatório do reticulado. Um tamanho adequado para texto cifrado é estimado em O(n2log n), onde n é a dimensão do reticulado.

• Decifração: Goldreich, Goldwasser e Halevi propuseram dois métodos para decifra-ção baseados em algoritmos de aproximadecifra-ção para CVP:

 Empregar o método de plano mais próximo com a base R, obtendo o único ponto do reticulado a uma distância de no máximo δ = (1/2)minikr∗ikdo texto cifrado t, recuperando (x, t − Bx).

 Calcular R−1t, arredondando cada coordenada para o inteiro mais próximo e multiplicar o resultado por R.

Mesmo limitados polinomialmente quanto aos parâmetros de segurança, os tamanhos de chave e texto cifrado crescem muito rapidamente neste criptossistema. Outro sério

Referências

Documentos relacionados

A teoria dos c´odigos ´e capaz de misturar conceitos e t´ecnicas importantes da ´ Algebra abstrata com aplica¸c˜oes imediatas da vida real, o que mostra como a

De acordo com Kohama (2009), a administração pública subdivide-se em Direta e Indireta, onde, a Administração Direta abrange os serviços públicos vinculados, de

Estas pessoas extraordinárias acabaram sendo um modelo a ser seguido e quando enfim habitei a sala de aula como professora não havia dúvidas de que eu queria amar aquelas

Os dados de temperatura da água na lavoura no período III solo irrigado com arroz foram utilizados para estimar o fluxo de energia na lâmina de água através da Lei de Fourier para

Ponderam o STF e o STM que não se pode conciliar a vulneração da hierarquia e da disciplina com o princípio da insignificância, pois qualquer desrespeito àquelas, por definição,

Desta maneira, o objetivo principal foi analisar o documento “Gênero e diversidade na escola: formação de professoras/es em Gênero, Orientação Sexual e

“Muito do que sou como pessoa e profissional, agradeço à minha vivência de 37 anos na PUC Minas, onde tive a oportunidade de conviver com pessoas como Escípio

Aqui, propomos o uso de casos clínicos em um curso tradicional de ciências básicas (fisiologia humana) com a intenção de promover uma discussão sobre os