INTRODUÇÃO AOS CÓDIGOS CORRETORES DE ERROSrdahab/cursos/mo421-mc889/2014-1s/Welcome_files... ·...

48
INTRODUÇÃO AOS CÓDIGOS CORRETORES DE ERROS

Transcript of INTRODUÇÃO AOS CÓDIGOS CORRETORES DE ERROSrdahab/cursos/mo421-mc889/2014-1s/Welcome_files... ·...

INTRODUÇÃO AOS CÓDIGOS CORRETORES DE ERROS

Objetivos

n Breve introdução à Teoria dos Códigos Corretores de Erro e à Criptografia baseada em códigos.

n Apenas o básico! n Aviso: matemática um pouco

carregada… J

TEORIA DOS CÓDIGOS

Códigos Lineares

n 

Peso e Distância

n 

Matriz Geradora e Verificação de Paridade n 

Matriz Geradora

n 

Decodificação Geral e de Síndrome (GDP/SDP)

n  n 

Ambos são NP-completos!

Qual código escolher? n  Decodificar é NP-completo ⇒ não é

qualquer código que se presta para cripto (ou outra aplicação).

n  Necessidade: código com um alçapão (decodificador eficiente) facilmente camuflável.

n  Tipicamente o alçapão será uma matriz de paridade (base do código dual) com propriedades exclusivas.

Qual código escolher?

n Pior: maioria das propostas foi quebrada.

n Propostas robustas: ¨ Goppa (escolha mais popular para

criptografia) ¨ códigos de grafos (estilo LDPC)

Códigos de Goppa

n 

Códigos de Goppa

n 

Distância de um código de Goppa n 

Polinômio Localizador de Erro

n 

A Equação Chave

n 

Correção de Erros

n 

Correção de Erros

n 

Euclides Estendido! Euclides Estendido!

Calculando s(x)–1 (mod g(x))

A ← s, a ← g, B ← 1, b ← 0 enquanto (deg(A) > 0) {

A ↔ a, B ↔ b enquanto (deg(A) ≥ deg(a)) { j ← deg(A) – deg(a) h ← Adeg(A) / adeg(a) A ← A – h xj a, B ← B – h xj b }

} se (A ≠ 0) devolva B / A0 senao “não inversível”

Decodificando uma Síndrome binária de Goppa s(x)

A ← v, a ← g, B ← 1, b ← 0, t ← deg(g) enquanto (deg(a) > ⎣t/2⎦) {

A ↔ a, B ↔ b enquanto (deg(A) ≥ deg(a)) { j ← deg(A) – deg(a) h ← Adeg(A) / adeg(a) A ← A – h xj a, B ← B – h xj b }

} σ(x) ← a(x)2 + xb(x)2

devolva σ // polinômio localizador de erros

CRIPTOSSISTEMAS BASEADOS EM CÓDIGOS

Cronologia

n 1978: McEliece (cifração) n 1986: Niederreiter (cifração) n 1993: Stern (identificação e

assinaturas estilo Fiat-Shamir) n 2001: CFS (assinaturas) n … (outros esquemas mais arcanos)

Criptossistema de Niederreiter n 

Criptossistema de Niederreiter n 

Criptossistema de Niederreiter n  Os níveis de segurança (computacionais)

de McEliece e Niederreiter são exatamente equivalentes.

n  Niederreiter leva naturalmente a um esquema de assinatura digital: Courtois-Finiasz-Sendrier (CFS).

Assinaturas CFS

n 

Assinaturas CFS n  Assinando uma mensagem M:

¨  Encontre i ∈ N tal que, para c ← H(M, i) e c*T ← S*cT, c* é uma síndrome-H* decodificável.

¨  Decodifique c*T para eT com o alçapão de decodificação. ¨  A assinatura é (e, i). Note que c*T = H*eT = S*HeT e logo

HeT = S*–1c*T = cT, i.e. c = H(M, i) é a síndrome-H de e.

n  Verificando uma assinatura (e, i): ¨  Calcule c ← HeT. ¨  Aceite sse c = H(M, i).

Assinaturas CFS

n 

Assinaturas CFS

n 

ESCOLHENDO PARÂMETROS

O Problema do Tamanho de Chaves n Usando códigos de Goppa

sistemáticos, o tamanho da chave é apenas k×(n – k) bits. E ainda…

nível m n k t tam. chave 280 11 1893 1431 42 661122 2128 12 3307 2515 66 1991880 2256 13 7150 5447 131 9276241

Escolhendo o Código

n Códigos de Goppa são populares mas não amigáveis o bastante para redução do tamanho de chaves.

n Tendência recente: códigos baseados

em grafos, especificamente códigos de Gallager (LDPC).

Códigos de Gallager (LDPC)

n 

Códigos de Gallager (LDPC)

n  Símbolos em vermelho afetam o bit de paridade em verde através dos verificadores de paridade em azul.

Códigos de Gallager (LDPC)

n  Se o bit de paridade verde for 1, pelo menos um dos bits vermelhos está errado.

Códigos de Gallager (LDPC)

n  Símbolo em vermelho afeta os bits de paridade em verde através dos verificadores de paridade em azul.

Códigos de Gallager (LDPC)

n  Se o bit vermelho estiver errado, os bits de paridade verdes são mais prováveis de revelar isso.

Códigos de Gallager (LDPC)

n 

Códigos de Gallager (LDPC)

n Propagação de crença (belief propagation): técnica alternativa a inversão de bits; corrige mais erros.

n Ambas são probabilísticas: pequena chance de falha de decriptação.

n Escolher o código de modo a tornar essa chance menor que a do sucesso de um ataque.

Escolhendo o Código

n  Códigos MDPC: escolha a densidade w e o número t de erros próximos do limite de decodificabilidade (para segurança), mas ainda dentro da faixa de inversão de bit ou de propagação de crença.

n  Apropriados para plataformas muito limitadas como as do estilo IoT (5.6 KiB ROM, 2.6 KiB RAM, codificação ~25 ms, decodificação ~2.8 s em um PIC de 32 MHz).

Chaves Curtas

n 

NB: esparsa!

Chaves Curtas

n 

NB: densas!

Chaves Curtas

n  Chaves públicas (e privadas) bem mais curtas que as propostas anteriores:

nível n k t w qc-mdpc

goppa redução RSA

280 9602 4801 84 90 4801 661122 138× 1024 2128 19714 9857 134 142 9857 1991880 202× 3072 2256 65542 32771 264 274 32771 9276241 283× 15360

.

NB: tamanho de chave não é a única métrica (e.g. uma implementação de RSA pode ser simplesmente fora de c o g i t a ç ã o e m v á r i a s plataformas IoT)

.

PERGUNTAS?

APÊNDICE

MCELIECE

McEliece Cryptosystem

n 

McEliece Cryptosystem

n  “Hey, wait, I know McEliece, and this does not look quite like it!”

n  Textbook version: ¨  computing some (private, highly structured) G* from H* ¨  hide it as a G = SG*P (with S invertible, P permutation).

n  Does not increase semantic security, is less efficient, and can actually leak side-channel information.

n  The description here is simpler, more efficient, and more secure.

McEliece Cryptosystem

n