INTRODUÇÃO AOS CÓDIGOS CORRETORES DE ERROSrdahab/cursos/mo421-mc889/2014-1s/Welcome_files... ·...
Transcript of INTRODUÇÃO AOS CÓDIGOS CORRETORES DE ERROSrdahab/cursos/mo421-mc889/2014-1s/Welcome_files... ·...
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
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)
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
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 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 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).
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 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 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 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)
.
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.