UMA APLICAC
¸ ˜
AO DE C ´
ODIGOS CORRETORES DE ERROS
EM CRIPTOGRAFIA
∗Valdemar C. da Rocha Jr. e David Lopes de Macˆ
edo
Grupo de Pesquisa em Comunica¸c˜
oes - CODEC
Departamento de Electrˆ
onica e Sistemas - UFPE
Caixa Postal 7800
CEP 50711-970 Recife PE
E-mail: 99VCR@NPD.UFPE.BR
Resumo
Um novo criptosistema de chave-secreta ´e apresentado cuja estrutura ma-tem´atica baseia-se essencialmente em propriedades de subespa¸cos lineares com-plementares. Este criptosistema ´e bem mais pr´atico e seguro contra ataques com texto-claro escolhido de que o criptosistema equivalente proposto por Rao e Nam, em 1987.
Abstract
A new secret-key cryptosystem is presented whose mathematical structure is essentially based on properties of linear complementary subspaces. This cryp-tosystem is more practical and more secure against chosen-plaintext attacks then the equivalent one proposed by Rao and Nam in 1987.
1
Introdu¸
c˜
ao
Em 1994 da Rocha [1] propˆos um criptosistema de chave-secreta baseado em c´odigos de bloco lineares complementares. Dois c´odigos lineares C1 e C2 de
mesmo comprimento de bloco n, sobre um corpo finito GF(q), s˜ao definidos como complementares [2] quando a ´unica palavra c´odigo que tˆem em comum ´e a palavra toda zero, i.e.,{C1} ∩ {C2} = {0}, e a soma direta de suas palavras
c´odigo gera todo o espa¸co vetorial sobre GF(q), i.e., {C1} ⊕ {C2} = GF(q)n,
em que ⊕ denota adi¸c˜ao de n-uplas sobre GF(q). No que segue iremos nos deter o suficiente para explicar os aspectos mais importantes daquele criptosis-tema [1], com a finalidade de facilitar a compreens˜ao das modifica¸c˜oes a serem introduzidas no mesmo e que ser˜ao o tema do presente trabalho.
Sabemos que um dado c´odigo de bloco linear bin´ario, com comprimento de bloco n, com k d´ıgitos de informa¸c˜ao e distˆancia m´ınima de Hamming d, ´e capaz de corrigir um n´umero m´aximo de 2n−k padr˜oes bin´arios de erros.
Por´em, devido a problemas pr´aticos de implementa¸c˜ao e `a natureza do ru´ıdo, os decodificadores comumente empregados s´o corrigem padr˜oes contendo at´e t erros, em que t≤ ⌊(d − 1)/2⌋.
O primeiro criptosistema de chave-secreta baseado em c´odigos de bloco foi proposto por Rao e Nam [3]. Os pr´oprios autores mostraram como quebr´a-lo com um ataque de texto-claro escolhido e propuseram duas vers˜oes modificadas, que evitavam o tipo de ataque por ˆeles proposto mas que tamb´em foram que-bradas, uma delas por Hin [4] e a outra por Struik e Tilburg [5], essencialmente porque ambas empregavam um n´umero de padr˜oes de erros corrig´ıveis limitado pela desigualdade t≤ ⌊(d − 1)/2⌋.
A distin¸c˜ao essencial entre o criptosistema proposto em [1] e criptosistemas convencionais empregando c´odigos corretores de erros ´e que estes ´ultimos fazem uso exclusivo de padr˜oes de erros corrig´ıveis com peso de Hamming n˜ao superior a t, em que t ´e a capacidade de corre¸c˜ao de erros aleat´orios do c´odigo empregado, enquanto que em [1] o conjunto de padr˜oes de erros corrig´ıveis ´e formado pelas 2n−kpalavras c´odigo de um c´odigo linear C2, (n, n−k), complementar ao c´odigo
C1, (n, k), empregado para codificar as mensagens a serem transmitidas ou
armazenadas, n˜ao sofrendo portanto C2 nenhuma restri¸c˜ao quanto ao peso de
Hamming de suas palavras. Dizendo de uma outra forma, os padr˜oes de erros em [1] s˜ao palavras c´odigo de um c´odigo de bloco linear, enquanto que nos criptosistemas convencionais os padr˜oes de erros corrig´ıveis podem ser vistos como pertencendo a um c´odigo n˜ao-linear sem nenhuma estrutura alg´ebrica ´util aparente. Enquanto o criptosistema em [1] tem a vantagem de poder lidar de forma eficaz com os 2n−kpadr˜oes de erros corrig´ıveis, devido `a estrutura linear,
esta mesma estrutura pesa contra pois ´e um ponto extremamente vulner´avel a ataques criptoanal´ıticos. A fim de combater tal vulnerabilidade, durante a opera¸c˜ao era imperiosa a mudan¸ca frequente do c´odigo linear complementar empregado, o que nem sempre ´e interessante do ponto de vista pr´atico. Neste trabalho mostramos como evitar esta dificuldade, mantendo as caracter´ısticas interessantes de imunidade a ataques do antigo sistema.
2
Cifras de Bloco e C´
odigos Corretores de Erros
m - CODIFICADOR c -GERADOR DE RU´IDO e 6 r - PERMUTAC¸ ˜AO y -Figura 1: Cifrador.
2.1
Criptosistemas Baseados em C´
odigos Corretores de
Erros
Denotaremos por G a matriz geradora do c´odigo C, (n, k, d). Quando G tem a forma sistem´atica G = [Ik : g], em que Ik e G s˜ao respectivamente a matriz
identidade k×k e uma matriz k×(n−k), ´e comum fazer-se um embaralhamento dos dados pr´emultiplicando-os por uma matriz S, k× k, densa e n˜ao-singular. Na descri¸c˜ao a seguir, dos processos de cifragem e de decifragem empregando c´odigos corretores de erros, admitiremos que G n˜ao se encontra na forma sis-tem´atica.
2.1.1 Cifragem
O processo de cifragem do texto-claro consiste dos seguintes passos:
1. Segmentar o texto-claro em blocos m, de k d´ıgitos cada, e us´a-los para gerar palavras c´odigo do c´odigo C, cuja matriz geradora ´e G, efetuando a opera¸c˜ao mG, dando origem `a n-upla c = mG.
2. Adicionar, atrav´es da opera¸c˜ao ou-exclusivo, a palavra c´odigo c ao vetor erro e, este ´ultimo produzido pelo gerador de ru´ıdo, obtendo assim r =
c + e.
3. Finalmente o criptograma y ´e obtido permutando-se as coordenadas da
n-upla r atrav´es da opera¸c˜ao rP, ou seja y = rP, em que P ´e uma matriz de permuta¸c˜ao n× n.
A Figura 1 ilustra a opera¸c˜ao de cifragem descrita anteriormente.
2.1.2 Decifragem
O processo de decifragem do criptograma y gerado a partir do cifrador da Figura 1 consiste dos seguintes passos, ilustrados na Figura 2.
1. Aplicar a permuta¸c˜ao inversa P−1 ao criptograma y a fim de obter r.
y - PERMUTAC¸ ˜AO INVERSA r - DECODIFICADOR m -Figura 2: Decifrador.
2. Decodificar r, obtido no passo 1, empregando um decodificador para o c´odigo C, o qual reproduz na sa´ıda o texto-claro m.
2.2
Fonte Aleat´
oria Privada
Nos sistemas criptogr´aficos convencionais, baseados em c´odigos corretores de erros, o segredo consiste do c´odigo C empregado, enquanto que o papel do gera-dor de ru´ıdo, ou geragera-dor de erros aleat´orios, ´e o de uma (mal projetada) fonte
aleat´oria privada [9, p´ag. 8]. Uma fonte aleat´oria privada ´e na verdade um codificador de fonte em que o alfabeto de sa´ıda tem em geral um n´umero de s´ımbolos maior que o alfabeto de entrada, e cuja finalidade ´e “esconder” a es-tat´ıstica de ocorrˆencia dos s´ımbolos de entrada apresentando, idealmente, uma distribui¸c˜ao uniforme de probabilidades para seus s´ımbolos de sa´ıda. Isto ´e al-can¸cado associando um dado s´ımbolo de entrada a um subconjunto dos s´ımbolos de sa´ıda, cuja cardinalidade ´e proporcional `a probabilidade de ocorrˆencia deste s´ımbolo de entrada. Obviamente, a fim de permitir unicidade na decodifica¸c˜ao, tais subconjuntos precisam ser necessariamente disjuntos.
Na aplica¸c˜ao em quest˜ao (vide a Figura 1), a fonte aleat´oria privada, cuja sa´ıda ´e denotada por r, ignora a estat´ıstica dos s´ımbolos do texto-claro pelo fato de associar a cada palavra c´odigo c sempre o mesmo n´umero fixo de n-uplas (padr˜oes de erros corrig´ıveis) produzidas pelo gerador de ru´ıdo. Observa-mos que o mapeamento do conjunto{C} de palavras c´odigo c (associadas aos textos-claros) para o conjunto{R} de vetores r, juntamente com o conjunto {C} (alfabeto de entrada) e o conjunto{R} (alfabeto de sa´ıda), definem um canal
sem ru´ıdo [10, p´ags.111-113], isto ´e, um canal em que a sa´ıda especifica de modo ´
unico a entrada. A cardinalidade do conjunto dos vetores r ´e geralmente bem maior que a do correspondente conjunto de textos-claros. Desta forma ´e prati-camente eliminado o risco de sucesso de um ataque com texto-claro escolhido, com a finalidade de identificar o mapeamento {C} → {R} empregado. Discu-tiremos a seguir alguns aspectos te´oricos de como ´e poss´ıvel implementarmos o gerador de ru´ıdo da Figura 1.
2.3
O Arranjo Padr˜
ao
e os l´ıderes das classes laterais s˜ao escolhidos dentre os padr˜oes de erros cor-rig´ıveis mais prov´aveis de ocorrer em um dado canal discreto. Quando estamos interessados em aplica¸c˜oes desta ferramenta em criptografia n˜ao estamos neces-sariamente sujeitos `as restri¸c˜oes acima e podemos vislumbrar modos mais gerais de decomposi¸c˜ao de espa¸cos vetoriais, que incluam o arranjo-padr˜ao como um caso especial. Um destes modos, que denominamos de constru¸c˜ao n˜ao-linear,
consiste em empregar um c´odigo C n˜ao-linear e um conjunto de l´ıderes das “classes laterais” que formam um c´odigo tamb´em n˜ao-linear. A segunda, que denominamos de constru¸c˜ao linear e que foi utilizada em [1], consiste em usar
um c´odigo C linear e um conjunto de l´ıderes das classes laterais que formam um c´odigo linear. Denominamos a constru¸c˜ao empregada no estudo de c´odigos corretores de erros de constru¸c˜ao semi-linear, por raz˜oes ´obvias. Os trˆes ti-pos distintos de constru¸c˜ao aqui descritos podem ser usados, com as devidas adapta¸c˜oes, na implementa¸c˜ao do gerador de ru´ıdo da Figura 1, por´em neste trabalho utilizaremos a constru¸c˜ao semi-linear estruturada, descrita na pr´oxima se¸c˜ao.
3
Sistema Proposto
A fim de nos livrarmos das dificuldades associadas `a implementa¸c˜ao pr´atica do criptosistema proposto em [1] e mencionadas acima, introduzimos a seguir a
constru¸c˜ao semi-linear estruturada. A partir de uma palavra x, x ∈ C2, e de
um operador f (.) que leva palavras c´odigo de C2 em palavras c´odigo de C1,
geramos um vetor e (vide Figura 1) da seguinte forma:
e = x + f (x). (1)
Observamos que por meio de (1) podemos gerar 2n−k vetores e, a partir de
palavras c´odigo de C2, os quais em geral n˜ao ser˜ao palavras c´odigo nem de C1
nem de C2. O vetor r passa a ser expresso da seguinte forma:
r = c + e = c + x + f (x) = c′+ x, (2) em que c′ ∈ C1. Denotemos por Gi e por Hi, respectivamente, as matrizes
geradora e de verifica¸c˜ao de paridade do c´odigo Ci, i = 1, 2. Como veremos a
seguir, ´e conveniente utilizarmos para a cifragem a k-upla m1 = m(G1HT2)−1
em vez de m, chamando `a aten¸c˜ao de que a matriz, (G1HT2)−1, k× k, ´e
n˜ao-singular [1]. Consideraremos S = (G1HT2)−1a nossa matriz de embaralhamento
dos dados1e G = SG1a nossa matriz geradora para C1. Assim, a partir de (2)
obtemos,
r = c + e = mG + e = m(G1HT2)−1G1+ e = m1G1+ e = c′+ x. (3) 1Os 2k(n−k)c´odigos lineares distintos C
2, complementares a um dado c´odigo linear C1[1], nos garante grande liberdade na escolha de C2 e, consequentemente, da matriz de embara-lhamento S.
De maneira an´aloga ao que fizemos para a codifica¸c˜ao das palavras de C1,
consi-deraremos a palavra c´odigo x, x∈ C2, constru´ıda da forma x = m2(G2HT1)−1G2.
Assim sendo, a recupera¸c˜ao do texto claro m ´e realizada a partir do texto-cifrado
y do seguinte modo: 1. Recupera¸c˜ao de r a partir de y: r = yP−1. 2. Recupera¸c˜ao de e a partir de r: m2= rHT1 = (c′+ x)H T 1 = xH T 1 = m2(G2HT1)−1G2HT1, portanto, x = m2(G2HT1)−1G2e finalmente, e = x + f (x).
3. Recupera¸c˜ao do texto-claro m a partir de c:
c = r− (x + f(x)),
m = cHT2 = m(G1H2T)−1G1HT2.
4
Coment´
arios
A chave-secreta do sistema acima proposto ´e formada pelas matrizes geradora e de verifica¸c˜ao de paridade, respectivamente, dos c´odigos C1 e C2, e pela fun¸c˜ao
f (.). Por´em, revelando C1 e C2, e mantendo secreta apenas a fun¸c˜ao f (.), este
sistema manter-se-´a computacionalmente seguro desde que a cardinalidade do conjunto de palavras c´odigo de C2 seja elevada, por exemplo, n˜ao inferior a
2100 ≃ 1030, visando evitar uma busca exaustiva das n-uplas x + f (x), num
ataque com texto-claro escolhido.
Referˆ
encias
[1] V. C. da Rocha, Jr.,“A secret-key cipher based on linear complementary co-des”, IEEE International Symposium on Information Theory, Trondheim, Norway, 27 de junho a 01 de julho de 1994. Publicado no livro de resumos, p´agina 346.
[2] V. C. da Rocha, Jr.,“Complementary cyclic codes”, Communiations and
Signal Processing Series: 3, Communication Theory and Applications II.
Editors: B. Honary, M. Darnell and P.G. Farrell. HW Communications Ltd., p´aginas 37-40, 1994.
[3] T. R. N. Rao and K. H. Nam,“Private-key algebraic-code encryptions”,
IEEE Trans. Inform. Theory, vol.35, no.4, pp.829-833, July 1989.
[5] R. Struik and J. van Tilburg,“The Rao-Nam scheme is insecure against a chosen-plaintext attack”, Lecture Notes in Computer Science 293;
Ad-vances in Cryptology: Proceedings of Crypto’87, C. Pomerance, Ed., Santa
Barbara, CA, Aug. 16-20, pp.445-457. Berlin: Springer-Verlag, 1988.
[6] R. J. McEliece,“A public-key cryptosystem based on algebraic coding the-ory”, DSN Progress Report, Jet Propulsion Laboratory, Pasadena, CA, pp. 114-116, Jan./Feb. 1978.
[7] E. M. Gabidulin, A. V. Paramonov and O. V. Tretjakov, “Ideals over a non-commutative ring and their application in cryptology”, Advances in
Cryptology, EUROCRYPT’91 (Ed. D.W. Davies), Lecture Notes in
Com-puter Science No.547. Berlin and Heidelberg:Springer, 1991, pp.482-489.
[8] V. C. da Rocha, Jr.,“Secret-key cryptosystems based on algebraic codes”, IEEE Information Theory Workshop. Salvador, Bahia, 21 a 26 de junho de 1992. Publicado no livro de resumos, p´aginas 92-93.
[9] G. J. Simmons, Contemporary Cryptology, IEEE Press, New York, 1992.
[10] N. Abramson, Principles of Information and Coding, New York: McGraw Hill, 1963.
[11] W. W. Peterson and E. J. Weldon Jr., Error-Correcting Codes, Massachus-sets: MIT Press, 1972.