Criptografia com códigos corretores de erros
Thales Paiva
thalespaiva@gmail.com 25 de novembro de 2016
Escola Politécnica - USP
PCS5734 - Prof. Dr. Marcos Antonio Simplicio Junior
Sumário
1. Teoria de Códigos
2. Esquema de McEliece
3. QC-MDPC McEliece
1
Teoria de Códigos
Teoria de Códigos
Fonte
Codificador Canal Decodificador
Receptor
m∈ M
c←E(m) c′←c⊕e
mˆ ←D(c′)
Figura 1:Transmissão de uma palavramatravés de um canal ruidoso.
2
Exemplo de transmissão
Fonte
Codificador Canal Decodificador
Receptor
[1 0 1]
[111 000 111] [011 001 111]
[111 000 111]⇒[1 0 1]
Figura 2:Exemplo de transmissão de uma palavramatravés de um canal que produziu o erroe= [100 001 000], usando um Código de Repetição.
Códigos Lineares
Definição
Umcódigo binário[n,k]-linearé um subespaço vetorial de dimensão k do espaçoFn2.
4
Matrizes Geradoras e de Paridade
Então, seCé um código[n,k]-linear:
• Cpode ser descrito por suaimagemou por seunúcleo
• Chama-sematriz geradoratodaG∈Fk×n2 tal que C=
{mG:m∈Fk2}
• Chama-sematriz de paridadetodaH∈F(2n−k)×ntal que C={
c∈Fn2 :cHT=0}
Matrizes Geradoras e de Paridade
Então, seCé um código[n,k]-linear:
• Cpode ser descrito por suaimagemou por seunúcleo
• Chama-sematriz geradoratodaG∈Fk×n2 tal que C=
{mG:m∈Fk2}
• Chama-sematriz de paridadetodaH∈F(2n−k)×ntal que C={
c∈Fn2 :cHT=0}
5
Matrizes Geradoras e de Paridade
Então, seCé um código[n,k]-linear:
• Cpode ser descrito por suaimagemou por seunúcleo
• Chama-sematriz geradoratodaG∈Fk×n2 tal que C=
{mG:m∈Fk2}
• Chama-sematriz de paridadetodaH∈F(2n−k)×ntal que C={
c∈Fn2 :cHT=0}
Matrizes Geradoras e de Paridade
Então, seCé um código[n,k]-linear:
• Cpode ser descrito por suaimagemou por seunúcleo
• Chama-sematriz geradoratodaG∈Fk×n2 tal que C=
{mG:m∈Fk2}
• Chama-sematriz de paridadetodaH∈F(2n−k)×ntal que C={
c∈Fn2 :cHT=0}
5
Codificação de Mensagens
FixeG,Hmatrizes geradora e de paridade deC:
• Uma mensagemmé codificada como c=mG
• É sobredeterminado o sistema mG=c
• Asíndromede um vetor¯c∈Fn2é o vetor s=cHT =⇒ ¯c∈ C ⇔s=0
• Se¯c=c⊕e, então
s= ¯cHT= (c⊕e)HT=cHT⊕eHT=eHT
Codificação de Mensagens
FixeG,Hmatrizes geradora e de paridade deC:
• Uma mensagemmé codificada como c=mG
• É sobredeterminado o sistema mG=c
• Asíndromede um vetor¯c∈Fn2é o vetor s=cHT =⇒ ¯c∈ C ⇔s=0
• Se¯c=c⊕e, então
s= ¯cHT= (c⊕e)HT=cHT⊕eHT=eHT
6
Codificação de Mensagens
FixeG,Hmatrizes geradora e de paridade deC:
• Uma mensagemmé codificada como c=mG
• É sobredeterminado o sistema mG=c
• Asíndromede um vetor¯c∈Fn2é o vetor s=cHT =⇒ ¯c∈ C ⇔s=0
• Se¯c=c⊕e, então
s= ¯cHT= (c⊕e)HT=cHT⊕eHT=eHT
Codificação de Mensagens
FixeG,Hmatrizes geradora e de paridade deC:
• Uma mensagemmé codificada como c=mG
• É sobredeterminado o sistema mG=c
• Asíndromede um vetor¯c∈Fn2 é o vetor s=cHT =⇒ ¯c∈ C ⇔s=0
• Se¯c=c⊕e, então
s= ¯cHT= (c⊕e)HT=cHT⊕eHT=eHT
6
Codificação de Mensagens
FixeG,Hmatrizes geradora e de paridade deC:
• Uma mensagemmé codificada como c=mG
• É sobredeterminado o sistema mG=c
• Asíndromede um vetor¯c∈Fn2 é o vetor s=cHT =⇒ ¯c∈ C ⇔s=0
• Se¯c=c⊕e, então
s= ¯cHT= (c⊕e)HT=cHT⊕eHT=eHT
Exemplo com um Código de Hamming
Considere o código[7,4]-linearCque tem matriz geradoraGe matriz de paridadeHtais que:
G=
1 1 1 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 1 0 1 1 0 1 0 0 1
, H=
1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 0 1 1 1 1
.
• A codificação dem= [1 0 0 1]é
c=mG= [0 0 1 1 0 0 1].
• Somando o erroe= [0 1 0 0 0 0 0]acobtemos
¯c=c⊕e= [0 1 1 1 0 0 1].
• A síndrome de¯cé o vetor
s= ¯cHT= [0 1 0].
7
Exemplo com um Código de Hamming
Considere o código[7,4]-linearCque tem matriz geradoraGe matriz de paridadeHtais que:
G=
1 1 1 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 1 0 1 1 0 1 0 0 1
, H=
1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 0 1 1 1 1
.
• A codificação dem= [1 0 0 1]é
c=mG= [0 0 1 1 0 0 1].
• Somando o erroe= [0 1 0 0 0 0 0]acobtemos
¯c=c⊕e= [0 1 1 1 0 0 1].
• A síndrome de¯cé o vetor
s= ¯cHT= [0 1 0].
Exemplo com um Código de Hamming
Considere o código[7,4]-linearCque tem matriz geradoraGe matriz de paridadeHtais que:
G=
1 1 1 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 1 0 1 1 0 1 0 0 1
, H=
1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 0 1 1 1 1
.
• A codificação dem= [1 0 0 1]é
c=mG= [0 0 1 1 0 0 1].
• Somando o erroe= [0 1 0 0 0 0 0]acobtemos
¯c=c⊕e= [0 1 1 1 0 0 1].
• A síndrome de¯cé o vetor
s= ¯cHT= [0 1 0].
7
Exemplo com um Código de Hamming
Considere o código[7,4]-linearCque tem matriz geradoraGe matriz de paridadeHtais que:
G=
1 1 1 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 1 0 1 1 0 1 0 0 1
, H=
1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 0 1 1 1 1
.
• A codificação dem= [1 0 0 1]é
c=mG= [0 0 1 1 0 0 1].
• Somando o erroe= [0 1 0 0 0 0 0]acobtemos
¯c=c⊕e= [0 1 1 1 0 0 1].
• A síndrome de¯cé o vetor
s= ¯cHT= [0 1 0].
Exemplo com um Código de Hamming
Considere o código[7,4]-linearCque tem matriz geradoraGe matriz de paridadeHtais que:
G=
1 1 1 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 1 0 1 1 0 1 0 0 1
, H=
1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 0 1 1 1 1
.
• A codificação dem= [1 0 0 1]é
c=mG= [0 0 1 1 0 0 1].
• Somando o erroe= [0 1 0 0 0 0 0]acobtemos
¯c=c⊕e= [0 1 1 1 0 0 1].
• A síndrome de¯cé o vetor
s= ¯cHT= [0 1 0].
7
Exemplo com um Código de Hamming
Considere o código[7,4]-linearCque tem matriz geradoraGe matriz de paridadeHtais que:
G=
1 1 1 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 1 0 1 1 0 1 0 0 1
, H=
1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 0 1 1 1 1
.
• A codificação dem= [1 0 0 1]é
c=mG= [0 0 1 1 0 0 1].
• Somando o erroe= [0 1 0 0 0 0 0]acobtemos
¯c=c⊕e= [0 1 1 1 0 0 1].
• A síndrome de¯cé o vetor
s= ¯cHT= [0 1 0].
Exemplo com um Código de Hamming
Considere o código[7,4]-linearCque tem matriz geradoraGe matriz de paridadeHtais que:
G=
1 1 1 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 1 0 1 1 0 1 0 0 1
, H=
1 0 1 0 1 0 1 0 1 1 0 0 1 1 0 0 0 1 1 1 1
.
• A codificação dem= [1 0 0 1]é
c=mG= [0 0 1 1 0 0 1].
• Somando o erroe= [0 1 0 0 0 0 0]acobtemos
¯c=c⊕e= [0 1 1 1 0 0 1].
• A síndrome de¯cé o vetor
s= ¯cHT= [0 1 0]. 7
Algumas definições
Sejamu,vpalavras deFn2:
• Opesodeué o número de coordenadas não nulas deu: w([1 0 0 1]) =2
• Adistância de Hammingentreuevé o número de coordenadas em queuevdiferem:
d(u,v) =w(u⊕v) d([1 0 0 1],[1 1 0 1]) =1
Algumas definições
Sejamu,vpalavras deFn2:
• Opesodeué o número de coordenadas não nulas deu:
w([1 0 0 1]) =2
• Adistância de Hammingentreuevé o número de coordenadas em queuevdiferem:
d(u,v) =w(u⊕v) d([1 0 0 1],[1 1 0 1]) =1
8
Algumas definições
Sejamu,vpalavras deFn2:
• Opesodeué o número de coordenadas não nulas deu:
w([1 0 0 1]) =2
• Adistância de Hammingentreuevé o número de coordenadas em queuevdiferem:
d(u,v) =w(u⊕v) d([1 0 0 1],[1 1 0 1]) =1
Decodificação
Dada uma palavra¯c∈Fn2, queremos encontrar uma palavractal que d(¯c,c)≤d(¯c,u), para qualqueru∈Fn2.
• DecodificaçãoN P-difícil no pior caso [1]
• Conjecturada tipicamente difícil para códigos aleatórios
• É preciso desenhar bons códigos que admitam a construção de decodificadores
• Reed-Muller
• Goppa
• LDPC
9
Decodificação
Dada uma palavra¯c∈Fn2, queremos encontrar uma palavractal que d(¯c,c)≤d(¯c,u), para qualqueru∈Fn2.
• DecodificaçãoN P-difícil no pior caso [1]
• Conjecturada tipicamente difícil para códigos aleatórios
• É preciso desenhar bons códigos que admitam a construção de decodificadores
• Reed-Muller
• Goppa
• LDPC
Decodificação
Dada uma palavra¯c∈Fn2, queremos encontrar uma palavractal que d(¯c,c)≤d(¯c,u), para qualqueru∈Fn2.
• DecodificaçãoN P-difícil no pior caso [1]
• Conjecturada tipicamente difícil para códigos aleatórios
• É preciso desenhar bons códigos que admitam a construção de decodificadores
• Reed-Muller
• Goppa
• LDPC
9
Decodificação
Dada uma palavra¯c∈Fn2, queremos encontrar uma palavractal que d(¯c,c)≤d(¯c,u), para qualqueru∈Fn2.
• DecodificaçãoN P-difícil no pior caso [1]
• Conjecturada tipicamente difícil para códigos aleatórios
• É preciso desenhar bons códigos que admitam a construção de decodificadores
• Reed-Muller
• Goppa
• LDPC
Decodificação
Dada uma palavra¯c∈Fn2, queremos encontrar uma palavractal que d(¯c,c)≤d(¯c,u), para qualqueru∈Fn2.
• DecodificaçãoN P-difícil no pior caso [1]
• Conjecturada tipicamente difícil para códigos aleatórios
• É preciso desenhar bons códigos que admitam a construção de decodificadores
• Reed-Muller
• Goppa
• LDPC
9
Esquema de McEliece
Esquema de McEliece
Elaborado por McEliece em 1978 [8]
• Primeiro esquema baseado no problema da decodificação
• Primeiro que usa procedimento aleatório na encriptação
• Operações mais rápidas do que as respectivas do RSA e CE Porém ficou esquecido pois
• Chaves públicas muito grandes: λ=100⇒tamanho≥100 kB
• Esquema de assinatura parecia ser impossível, até CFS [3]
Até que Shor [10] mostra algoritmo quântico que resolve log discreto
10
Códigos de Goppa
Usa códigos de Goppa binários e irredutíveis:
• Cada código é gerado por um polinômio irredutívelgdeF2m[x]
• A capacidade de correção é igual ou superior ao grautdeg
• É fácil construirt-decodificadores eficientes conhecendog
• Não se conhece algoritmo eficiente para construir decodificadores sem conhecerg
• É difícil em geral distinguir matrizes geradoras de Goppa e geradoras de aleatórios
Embora seja possível parakpróximo den[4]
Parâmetros para cada nível de segurança
Tabela 1:Parâmetros de famílias de códigos de Goppa para cada nível de segurançaλ[2].
λ n k t m tamanho da chave pública
(Bytes)
81 2048 1751 27 11 65006
95 2048 1608 40 11 88440
105 2480 1940 45 12 130950
119 2690 2018 56 12 169512
146 3408 2604 67 12 261702
187 4624 3389 95 13 523177
263 6960 5413 119 13 1046739
12
Geração de Chaves
Algoritmo 1:KeyGen para a geração de chaves Entrada:λnível de segurança.
Saída:(KSec,KPub)o par de chaves secreta e pública.
1 início
2 Tomen,t,ekque permitam nível de segurançaλTabela 1
3 g←polinômio gerador de um código de Goppa aleatórioG
4 ¯G←matrizk×ngeradora deG
5 Φ←algoritmot-decodificador paraG
6 S←matrizk×knão singular aleatória
7 P←matriz de permutaçãon×naleatória
8 G←SGP¯
9 ˆG←SG¯
10 KSec←(ˆG,P,Φ)
11 KPub←(G,t)
12 devolva(KSec,KPub)
Encriptação
Algoritmo 2:Enc para a encriptação
Entrada:mmensagem que Beto quer enviar a Alice.
KPuba chave pública de Alice.
Saída:co texto cifrado da mensagemm.
1 início
2 (G,t)←KPub
3 e←vetor aleatório deFn2 de pesot
4 c←mG⊕e
5 devolvac
14
Decriptação
Algoritmo 3:Dec para a encriptação Entrada:ctexto cifrado recebido por Alice.
KSeca chave secreta de Alice.
Saída:ma decifração dec.
1 início
2 (ˆG,P,Φ)←KSec
3 c1 ←cP−1= (mG⊕e)P−1=mˆG⊕eP−1
4 c2←Φ(c1) =mˆG
5 m←solução do sistema sobredeterminadomGˆ =c2 6 devolvam
Segurança
Mas não resiste a ataques de:
• Mensagem parcialmente conhecida
• Mensagem relacionada (e.g. reenvio de mensagens)
• Reação
• Maleabilidade
O esquema de McEliece é apenas OWE
• Conversões de segurança obrigatórias
16
Conversão IND-CCA2 de Kobara e Imai
Algoritmo 4:Conversão IND-CCA2 de Enc [7]
Entrada:mmensagem que Beto quer enviar a Alice.
KPuba chave pública de Alice.
Saída:co texto cifrado da mensagemm.
1 início
2 (G,t)←KPub
3 r←número aleatório≈160 bits
4 z←Hash(r∥m)
5 y←PRNG(z)⊕(r∥m)
6 ez ←IntParaErro(z,t)
7 c←(yG⊕ez)
8 devolvac
Conversão IND-CCA2 de Kobara e Imai
Algoritmo 5:Conversão IND-CCA2 de Dec [7]
Entrada:ctexto cifrado recebido por Alice.
KSeca chave secreta de Alice.
Saída:ma decifração dec.
1 início
2 y←Dec(Esquerda(c,k),KSec)
3 ez ←Esquerda(c, k)⊕yG
4 z←ErroParaInt(ez)
5 r∥m←PRNG(z)⊕(y)
6 sez=Hash(r∥m)então
7 devolvam
8 senão
9 devolva⊥
18
Ataque Genérico por Conjunto de Informação
Decodificação por Conjunto de Informação - ISD
• Selecionarkcolunas dec′que não estão com erro
• Se askcolunas deGˆformarem matriz inversívelG′
• Pode-se recuperarmao resolver o sistemamG′=c′
Ocorre com baixa probabilidade de (n−t
k
) (n
k
)
E assim o trabalho esperado é limitado inferormente (n
k
) (n−t
k
)
Ataque Genérico por Conjunto de Informação
Decodificação por Conjunto de Informação - ISD
• Selecionarkcolunas dec′que não estão com erro
• Se askcolunas deGˆformarem matriz inversívelG′
• Pode-se recuperarmao resolver o sistemamG′=c′ Ocorre com baixa probabilidade de
(n−t
k
) (n
k
)
E assim o trabalho esperado é limitado inferormente (n
k
) (n−t
k
)
19
Ataque Genérico por Conjunto de Informação
Decodificação por Conjunto de Informação - ISD
• Selecionarkcolunas dec′que não estão com erro
• Se askcolunas deGˆformarem matriz inversívelG′
• Pode-se recuperarmao resolver o sistemamG′=c′ Ocorre com baixa probabilidade de
(n−t
k
) (n
k
)
E assim o trabalho esperado é limitado inferormente (n
k
) (n−t
k
)
Reduzir Tamanhos das Chaves
Ideias para Reduzir Tamanhos de Chaves:
• Usar códigos que corrigem mais erros
• Usar códigos que permitem representações compactas 1. Códigos de Goppa Quase-Cíclicos (QC-Goppa)
2. Códigos de Goppa Quase-Diádicos (QD-Goppa)
3. Códigos QC com Matriz de Paridade de Baixa Densidade (QC-LDPC) 4. Códigos QC-LDPC com Densidade Moderada (QC-MDPC)
• Apenas as propostas 2 e 4 chegaram até 2016, mas
• Faugere, Perret e Portzamparc quebraram QD-Goppa [5]
• Guo, Johansson e Stankovski mostraram ataque de reação a QC-MDPC [6]
20
Reduzir Tamanhos das Chaves
Ideias para Reduzir Tamanhos de Chaves:
• Usar códigos que corrigem mais erros
• Usar códigos que permitem representações compactas
1. Códigos de Goppa Quase-Cíclicos (QC-Goppa) 2. Códigos de Goppa Quase-Diádicos (QD-Goppa)
3. Códigos QC com Matriz de Paridade de Baixa Densidade (QC-LDPC) 4. Códigos QC-LDPC com Densidade Moderada (QC-MDPC)
• Apenas as propostas 2 e 4 chegaram até 2016, mas
• Faugere, Perret e Portzamparc quebraram QD-Goppa [5]
• Guo, Johansson e Stankovski mostraram ataque de reação a QC-MDPC [6]
Reduzir Tamanhos das Chaves
Ideias para Reduzir Tamanhos de Chaves:
• Usar códigos que corrigem mais erros
• Usar códigos que permitem representações compactas 1. Códigos de Goppa Quase-Cíclicos (QC-Goppa)
2. Códigos de Goppa Quase-Diádicos (QD-Goppa)
3. Códigos QC com Matriz de Paridade de Baixa Densidade (QC-LDPC) 4. Códigos QC-LDPC com Densidade Moderada (QC-MDPC)
• Apenas as propostas 2 e 4 chegaram até 2016, mas
• Faugere, Perret e Portzamparc quebraram QD-Goppa [5]
• Guo, Johansson e Stankovski mostraram ataque de reação a QC-MDPC [6]
20
Reduzir Tamanhos das Chaves
Ideias para Reduzir Tamanhos de Chaves:
• Usar códigos que corrigem mais erros
• Usar códigos que permitem representações compactas 1. Códigos de Goppa Quase-Cíclicos (QC-Goppa)
2. Códigos de Goppa Quase-Diádicos (QD-Goppa)
3. Códigos QC com Matriz de Paridade de Baixa Densidade (QC-LDPC) 4. Códigos QC-LDPC com Densidade Moderada (QC-MDPC)
• Apenas as propostas 2 e 4 chegaram até 2016, mas
• Faugere, Perret e Portzamparc quebraram QD-Goppa [5]
• Guo, Johansson e Stankovski mostraram ataque de reação a QC-MDPC [6]
QC-MDPC McEliece
Códigos LDPC
Definição
Um código binário e linear com matriz de paridade H é dito um código LDPC se o número de elementos não nulos de H éO(n).
Códigos LDPC
H=
1 1 1 1 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 0 1 0 1 1
c1 c2 c3 c4 c5
v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Figura 3: Grafo de Tanner da matrizH.
22
Algoritmo de Decodificação por bit-flipping
m←[0 1 1 0 0 0]
c←mG= [0 1 1 0 0 0 0 0 1 1]
e←[0 0 0 0 0 0 0 1 0 0]
c′←c⊕e= [0 1 1 0 0 0 0 1 1 1]
c1 c2 c3 c4 c5
v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Figura 4:Funcionamento do algoritmo debit-flipping.
Algoritmo de Decodificação por bit-flipping
m←[0 1 1 0 0 0]
c←mG= [0 1 1 0 0 0 0 0 1 1]
e←[0 0 0 0 0 0 0 1 0 0]
c′←c⊕e= [0 1 1 0 0 0 0 1 1 1]
c1 c2 c3 c4 c5
v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Figura 4:Funcionamento do algoritmo debit-flipping.
23
Algoritmo de Decodificação por bit-flipping
m←[0 1 1 0 0 0]
c←mG= [0 1 1 0 0 0 0 0 1 1]
e←[0 0 0 0 0 0 0 1 0 0]
c′←c⊕e= [0 1 1 0 0 0 0 1 1 1]
c1 c2 c3 c4 c5
v01
v12
v13
v04
v15
v16
v07
v28
v19
v110 Figura 4:Funcionamento do algoritmo debit-flipping.
Algoritmo de Decodificação por bit-flipping
m←[0 1 1 0 0 0]
c←mG= [0 1 1 0 0 0 0 0 1 1]
e←[0 0 0 0 0 0 0 1 0 0]
c′←c⊕e= [0 1 1 0 0 0 0 1 1 1]
c1 c2 c3 c4 c5
v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 Figura 4:Funcionamento do algoritmo debit-flipping.
23
Algoritmo de bit-flipping
Algoritmo 6:Algoritmo debit-flipping Entrada:H,y,max_it
Saída:Decodificação dey, ou⊥se exceder número de iterações
1 início
2 it←0
3 enquantoyHT̸=0eit<max_itfaça
4 paracada j=1,2, . . . ,nfaça
5 fj←Número de vizinhos devjinsatisfeitos
6 max_upc←max{ fj}
7 paracada j=1,2, . . . ,nfaça
8 sefj≥max_upc−δentão
9 yj←y¯j
10 seyHT=0então
11 devolvay
12 senão
13 devolva⊥ 24
Decodificação por Decisões Abruptas e Suaves
25
Códigos LDPC no esquema de McEliece
Uso no esquema de McEliece
• Códigos LDPC são ótimos códigos corretores de erros
• Porém são inseguros pois é possível recuperar a matriz esparsa Ideia de Misoczki [9]
• Usar códigos LDPC com matriz ligeiramente mais densa
• Código fica mais forte contra ataques
• Ainda é possível usar algoritmos de decodificação para LDPC
Códigos QC-MDPC
Definição
Umcódigo(n,r,w)-MDPCé um código linear de comprimento n, e codimensão r, que admite uma matriz de verificação de paridade H cujas linhas têm mesmos pesos iguais a w=O(√
nlogn) .
O problema é que a matriz geradora pode ser densa
• Usar códigosquase cíclicos!
• Matriz de paridade composta de blocos cíclicos
• Matriz geradora sistemática também de blocos cíclicos
• Matriz geradora pode ser sistemática com conversão IND-CCA2
• Matrizes são descritas pelaprimeira linha e número de blocos Definição
QuandoHé quase cíclica, um código MDPC é dito umcódigo (n,r,w)-QC-MDPC.
27
Códigos QC-MDPC
Definição
Umcódigo(n,r,w)-MDPCé um código linear de comprimento n, e codimensão r, que admite uma matriz de verificação de paridade H cujas linhas têm mesmos pesos iguais a w=O(√
nlogn) . O problema é que a matriz geradora pode ser densa
• Usar códigosquase cíclicos!
• Matriz de paridade composta de blocos cíclicos
• Matriz geradora sistemática também de blocos cíclicos
• Matriz geradora pode ser sistemática com conversão IND-CCA2
• Matrizes são descritas pelaprimeira linha e número de blocos Definição
QuandoHé quase cíclica, um código MDPC é dito umcódigo (n,r,w)-QC-MDPC.
Códigos QC-MDPC
Definição
Umcódigo(n,r,w)-MDPCé um código linear de comprimento n, e codimensão r, que admite uma matriz de verificação de paridade H cujas linhas têm mesmos pesos iguais a w=O(√
nlogn) . O problema é que a matriz geradora pode ser densa
• Usar códigosquase cíclicos!
• Matriz de paridade composta de blocos cíclicos
• Matriz geradora sistemática também de blocos cíclicos
• Matriz geradora pode ser sistemática com conversão IND-CCA2
• Matrizes são descritas pelaprimeira linha e número de blocos Definição
QuandoHé quase cíclica, um código MDPC é dito umcódigo (n,r,w)-QC-MDPC.
27
Códigos QC-MDPC
Definição
Umcódigo(n,r,w)-MDPCé um código linear de comprimento n, e codimensão r, que admite uma matriz de verificação de paridade H cujas linhas têm mesmos pesos iguais a w=O(√
nlogn) . O problema é que a matriz geradora pode ser densa
• Usar códigosquase cíclicos!
• Matriz de paridade composta de blocos cíclicos
• Matriz geradora sistemática também de blocos cíclicos
• Matriz geradora pode ser sistemática com conversão IND-CCA2
• Matrizes são descritas pelaprimeira linha e número de blocos Definição
QuandoHé quase cíclica, um código MDPC é dito umcódigo (n,r,w)-QC-MDPC.
Códigos QC-MDPC
Definição
Umcódigo(n,r,w)-MDPCé um código linear de comprimento n, e codimensão r, que admite uma matriz de verificação de paridade H cujas linhas têm mesmos pesos iguais a w=O(√
nlogn) . O problema é que a matriz geradora pode ser densa
• Usar códigosquase cíclicos!
• Matriz de paridade composta de blocos cíclicos
• Matriz geradora sistemática também de blocos cíclicos
• Matriz geradora pode ser sistemática com conversão IND-CCA2
• Matrizes são descritas pelaprimeira linha e número de blocos Definição
QuandoHé quase cíclica, um código MDPC é dito umcódigo (n,r,w)-QC-MDPC.
27
Códigos QC-MDPC
Definição
Umcódigo(n,r,w)-MDPCé um código linear de comprimento n, e codimensão r, que admite uma matriz de verificação de paridade H cujas linhas têm mesmos pesos iguais a w=O(√
nlogn) . O problema é que a matriz geradora pode ser densa
• Usar códigosquase cíclicos!
• Matriz de paridade composta de blocos cíclicos
• Matriz geradora sistemática também de blocos cíclicos
• Matriz geradora pode ser sistemática com conversão IND-CCA2
• Matrizes são descritas pelaprimeira linha e número de blocos Definição
QuandoHé quase cíclica, um código MDPC é dito umcódigo (n,r,w)-QC-MDPC.
Códigos QC-MDPC
Definição
Umcódigo(n,r,w)-MDPCé um código linear de comprimento n, e codimensão r, que admite uma matriz de verificação de paridade H cujas linhas têm mesmos pesos iguais a w=O(√
nlogn) . O problema é que a matriz geradora pode ser densa
• Usar códigosquase cíclicos!
• Matriz de paridade composta de blocos cíclicos
• Matriz geradora sistemática também de blocos cíclicos
• Matriz geradora pode ser sistemática com conversão IND-CCA2
• Matrizes são descritas pelaprimeira linha e número de blocos Definição
QuandoHé quase cíclica, um código MDPC é dito umcódigo (n,r,w)-QC-MDPC.
27
Códigos QC-MDPC
Definição
Umcódigo(n,r,w)-MDPCé um código linear de comprimento n, e codimensão r, que admite uma matriz de verificação de paridade H cujas linhas têm mesmos pesos iguais a w=O(√
nlogn) . O problema é que a matriz geradora pode ser densa
• Usar códigosquase cíclicos!
• Matriz de paridade composta de blocos cíclicos
• Matriz geradora sistemática também de blocos cíclicos
• Matriz geradora pode ser sistemática com conversão IND-CCA2
• Matrizes são descritas pelaprimeira linha e número de blocos
Definição
QuandoHé quase cíclica, um código MDPC é dito umcódigo (n,r,w)-QC-MDPC.
Códigos QC-MDPC
Definição
Umcódigo(n,r,w)-MDPCé um código linear de comprimento n, e codimensão r, que admite uma matriz de verificação de paridade H cujas linhas têm mesmos pesos iguais a w=O(√
nlogn) . O problema é que a matriz geradora pode ser densa
• Usar códigosquase cíclicos!
• Matriz de paridade composta de blocos cíclicos
• Matriz geradora sistemática também de blocos cíclicos
• Matriz geradora pode ser sistemática com conversão IND-CCA2
• Matrizes são descritas pelaprimeira linha e número de blocos Definição
QuandoHé quase cíclica, um código MDPC é dito umcódigo (n,r,w)-QC-MDPC.
27
Matriz de paridade de um código QC-MDPC
Figura 5:Matriz de paridade de código QC-MDPC com dois blocos ew=6.
Matriz geradora de um código QC-MDPC
Figura 6:Matriz geradora de código QC-MDPC com dois blocos.
29
QC-MDPC McEliece
Descrição do esquema com códigos QC-MDPC
• Chave pública é
• ga primeira linha do segundo bloco da matrizGe
• tnúmero de erros que o código corrige com alta probabilidade
• Chave privada é a primeira linha esparsa
• Segurança baseada na dificuldade de encontrar palavras de baixo peso
• Dispensa o uso das matrizes embaralhadorasSeP!
• Encriptação idêntica à do McEliece original
• Decriptação usa algoritmo debit-flipping
• Se o algoritmo falhar, peça reenvio de mensagem
QC-MDPC McEliece
Descrição do esquema com códigos QC-MDPC
• Chave pública é
• ga primeira linha do segundo bloco da matrizGe
• tnúmero de erros que o código corrige com alta probabilidade
• Chave privada é a primeira linha esparsa
• Segurança baseada na dificuldade de encontrar palavras de baixo peso
• Dispensa o uso das matrizes embaralhadorasSeP!
• Encriptação idêntica à do McEliece original
• Decriptação usa algoritmo debit-flipping
• Se o algoritmo falhar, peça reenvio de mensagem
30
QC-MDPC McEliece
Descrição do esquema com códigos QC-MDPC
• Chave pública é
• ga primeira linha do segundo bloco da matrizGe
• tnúmero de erros que o código corrige com alta probabilidade
• Chave privada é a primeira linha esparsa
• Segurança baseada na dificuldade de encontrar palavras de baixo peso
• Dispensa o uso das matrizes embaralhadorasSeP!
• Encriptação idêntica à do McEliece original
• Decriptação usa algoritmo debit-flipping
• Se o algoritmo falhar, peça reenvio de mensagem
QC-MDPC McEliece
Descrição do esquema com códigos QC-MDPC
• Chave pública é
• ga primeira linha do segundo bloco da matrizGe
• tnúmero de erros que o código corrige com alta probabilidade
• Chave privada é a primeira linha esparsa
• Segurança baseada na dificuldade de encontrar palavras de baixo peso
• Dispensa o uso das matrizes embaralhadorasSeP!
• Encriptação idêntica à do McEliece original
• Decriptação usa algoritmo debit-flipping
• Se o algoritmo falhar, peça reenvio de mensagem
30
QC-MDPC McEliece
Descrição do esquema com códigos QC-MDPC
• Chave pública é
• ga primeira linha do segundo bloco da matrizGe
• tnúmero de erros que o código corrige com alta probabilidade
• Chave privada é a primeira linha esparsa
• Segurança baseada na dificuldade de encontrar palavras de baixo peso
• Dispensa o uso das matrizes embaralhadorasSeP!
• Encriptação idêntica à do McEliece original
• Decriptação usa algoritmo debit-flipping
• Se o algoritmo falhar, peça reenvio de mensagem
QC-MDPC McEliece
Descrição do esquema com códigos QC-MDPC
• Chave pública é
• ga primeira linha do segundo bloco da matrizGe
• tnúmero de erros que o código corrige com alta probabilidade
• Chave privada é a primeira linha esparsa
• Segurança baseada na dificuldade de encontrar palavras de baixo peso
• Dispensa o uso das matrizes embaralhadorasSeP!
• Encriptação idêntica à do McEliece original
• Decriptação usa algoritmo debit-flipping
• Se o algoritmo falhar, peça reenvio de mensagem
30
QC-MDPC McEliece
Descrição do esquema com códigos QC-MDPC
• Chave pública é
• ga primeira linha do segundo bloco da matrizGe
• tnúmero de erros que o código corrige com alta probabilidade
• Chave privada é a primeira linha esparsa
• Segurança baseada na dificuldade de encontrar palavras de baixo peso
• Dispensa o uso das matrizes embaralhadorasSeP!
• Encriptação idêntica à do McEliece original
• Decriptação usa algoritmo debit-flipping
• Se o algoritmo falhar, peça reenvio de mensagem
Parâmetros sugeridos para QC-MDPC
Baseado nos melhores ataques de decodificação
Tabela 2:Parâmetros sugeridos para cada nível de segurança.
Segurança n0 n r w t Tamanho da Chave
80 2 9602 4801 90 84 4801
128 2 19714 9857 142 134 9857
256 2 65542 32771 274 264 32771
31
Perguntas?
Referências i
E. R. Berlekamp, R. J. McEliece, and H. C. Van Tilborg.
On the inherent intractability of certain coding problems.
IEEE Transactions on Information Theory, 24(3):384–386, 1978.
D. J. Bernstein, T. Chou, and P. Schwabe.
Mcbits: fast constant-time code-based cryptography.
InInternational Workshop on Cryptographic Hardware and Embedded Systems, pages 250–272. Springer, 2013.
N. T. Courtois, M. Finiasz, and N. Sendrier.
How to achieve a mceliece-based digital signature scheme.
InInternational Conference on the Theory and Application of Cryptology and Information Security, pages 157–174. Springer, 2001.
32
Referências ii
J.-C. Faugere, V. Gauthier-Umana, A. Otmani, L. Perret, and J.-P.
Tillich.
A distinguisher for high-rate mceliece cryptosystems.
IEEE Transactions on Information Theory, 59(10):6830–6844, 2013.
J.-C. Faugere, A. Otmani, L. Perret, F. De Portzamparc, and J.-P.
Tillich.
Structural cryptanalysis of mceliece schemes with compact keys.
Designs, Codes and Cryptography, 79(1):87–112, 2016.
Referências iii
Q. Guo, T. Johansson, and P. Stankovski.
A key recovery attack on mdpc with cca security using decoding errors.
In22nd Annual International Conference on the Theory and Applications of Cryptology and Information Security (ASIACRYPT), 2016, 2016.
K. Kobara and H. Imai.
Semantically secure mceliece public-key cryptosystems-conversions for mceliece pkc.
InInternational Workshop on Public Key Cryptography, pages 19–35. Springer, 2001.
R. J. McEliece.
A public-key cryptosystem based on algebraic coding theory.
Deep Space Network Progress Report, 44:114–116, 1978.
34
Referências iv
R. Misoczki, J.-P. Tillich, N. Sendrier, and P. S. Barreto.
Mdpc-mceliece: New mceliece variants from moderate density parity-check codes.
InInformation Theory Proceedings (ISIT), 2013 IEEE International Symposium on, pages 2069–2073. IEEE, 2013.
P. W. Shor.
Polynomial time algorithms for prime factorization and discrete logarithms on a quantum computer.
SIAM Journal on Computing, 26(5):1481–1509, 1997.