• Nenhum resultado encontrado

Criptografia RSA e Códigos Corretores de Erros

N/A
N/A
Protected

Academic year: 2022

Share "Criptografia RSA e Códigos Corretores de Erros"

Copied!
22
0
0

Texto

(1)

Criptografia RSA e Códigos Corretores de Erros

Aluno: Vitor Borges da Silva Orientador: Alexandre Lymberopoulos

Resumo

Neste segundo relatório, referente ao período de Janeiro de 2016 a Julho de 2016 o aluno iniciou seus estudos em criptografia RSA e na teoria dos códigos corretores de erros, baseado nas referências [1], [4], [5] e [6]. Nesse período o aluno apresentou semi- nários sobre a teoria de grupos, números de Mersenne, testes de primalidade, algoritmo RSA, fundamentos da teoria de anéis e códigos corretores de erros lineares. Em alguns dos seminários foram discutidas implementações dos algoritmos pertinentes aos tópicos acima.

Nas seções a seguir detalhamos os avanços em cada um destes itens, apresentando algumas demonstrações elaboradas pelo aluno, de maneira independente da bibliografia adotada. Os códigos em linguagem C dos algoritmos estudados podem ser encontrados emhttps://www.ime.usp.br/~lymber/alunos/ic/cripto_ecc/.

1 Execução e Andamento do Projeto

Vitor Borges da Silva, aluno do Instituto de Matemática e Estatística da Universidade de São Paulo, regularmente matriculado no curso de Bacharelado em Matemática, tendo concluído o terceiro semestre do curso, sob orientação do Prof. Dr. Alexandre Lymberopoulos, professor doutor do Departamento de Matemática da USP, e com apoio da CNPq, realizou seminários semanais sobre Álgebra Abstrata Básica, Criptografia RSA e Teoria dos Códigos Corretores de Erros. Este relatório consiste em um resumo das atividades desenvolvidas pelo aluno em sua iniciação científica durante o primeiro semestre de 2016.

2 Grupos

Definição 2.1. Seja G um conjunto e · uma operação em G. Dizemos que o par (G,·) é umgrupo se, e somente se, são satisfeitos:

(1) Associatividade: a·(b·c) = (a·b)·c,∀a, b, c∈G (2) Neutro: ∃e∈G:a·e=e·a=a,∀a∈G

(3) Inverso: ∀a∈G,∃a0∈G:a·a0 =a0·a=e

Diremos que o grupo é abeliano se a operação também for comutativa e, quando não houver ambiguidade, denotaremos o grupo (G,·) somente por G e o produto a·b somente por ab.

(2)

Pode-se mostrar que tanto o elemento neutro e como o inverso dea, em um grupo G, são únicos. Denotaremos o último por a−1.

Podem ser citados como exemplos de grupos os inteiros com a operação de soma,(Z,+), assim como o conjunto (Zp− {0},·), onde p∈ P e · denota o produto usual de classes em Zp, ambos tratados no último relatório.

Mais geralmente, podemos definir conjunto

U(n) ={x∈Zn: mdc(x, n) = 1}

Proposição 2.1. Sejam num inteiro positivo e·a operação de multiplicação de classes em Zn. Então· é fechada emU(n).

Demonstração: Sejam x, y∈ U(n). Por definição, mdc(x, n) = mdc(y, n) = 1. Entãox e y são inversíveis em Zn. Mostraremos quex−1y−1 é o inverso de xy em Zn. Note que

(xy)(x−1y−1)≡(xx−1)(yy−1)≡1 (modn)

onde a primeira igualdade é garantida pela comutatividade e associatividade do produto de classes emZn, mostradas no último relatório.

Comoa∈Zn é inversível se, e somente se, mdc(a, n) = 1, segue a tese.

Note que a demonstração da proposição acima garante não só a associatividade do pro- duto como a existência de inverso para todo elemento de U(n). Como ¯1∈ U(n), para todo inteiro positivo n, temos finalmente que (U(n),·)é um grupo.

Definição 2.2. Diremos que a ordem de um grupo G é a cardinalidade de G, |G|, como conjunto.

Definição 2.3. Chamaremos de função de Euler, ou função totiente, a função φ:N→N, φ(n) =|{a∈N: mdc(a, n) = 1}|.

Uma noção útil para alguns resultados sobre os grupos da forma U(n) é sua relação com a função totiente. Note que pela definição desta, |U(n)|=φ(n), seguindo as seguintes proposições.

Proposição 2.2. Sejap um primo e k um natural. Então φ(pk) =pk−1(p−1).

Demonstração: Queremos contar quantos inteiros entre 1 epksão coprimos compk. Como p é primo, se mdc(n, pk) 6= 1, temos que p |n. Assim, como existem pk/p =pk−1 inteiros entre 1 e pk divisíveis por p, temosφ(pk) =pk−pk−1 =pk−1(p−1).

Para chegarmos a uma fórmula mais geral para φ(n), temos o teorema abaixo, cuja demonstração pode ser encontrada em [1, cap. 8, sec. 4].

Teorema 2.3. Sejam m, n naturais. Semdc(m, n) = 1 entãoφ(mn) =φ(m)φ(n).

Corolário 2.4 (Fórmula Geral para φ(n)). Seja n um natural. Se n = pα11· · ·pαkk, nas condições do Teorema Fundamental da Aritmética, então

φ(n) =

k

Y

i=1

pαii−1(pi−1)

(3)

Demonstração: φ(n) =φ(pα11· · ·pαkk) =φ(pα11)· · ·φ(pαkk) =Qk

i=1pαii−1(pi−1) Corolário 2.5. Sejan um inteiro positivo. |U(n)| ∈P se, e somente se, n= 3,4 ou 6.

Demonstração: Escrevamos n = pα11· · ·pαkk nas condições do Teorema Fundamental da Aritmética. Pelo Corolário 2.4,

φ(n) =

k

Y

i=1

φ(pαii) =

k

Y

i=1

pαii−1(pi−1)∈P

donde αi ≤ 2 e pi < 5, para i ∈ {1, . . . , k}, pois, caso contrário, teríamos n composto.

Assim,pi = 2ou 3,i=1 ou 2 e, portanto,n= 3, n= 2·2 = 4oun= 2·3 = 6são as únicas soluções possíveis, uma vez que φ(2) = 16∈P.

Reciprocamente, basta notar que U(3) ={1,2},U(4) ={1,3} e U(6) ={1,3}, seguindo a tese.

Introduziremos outra importante definição para os tópicos mais adiante.

Definição 2.4. Sejam(G,·)um grupo eH ⊂G. Dizemos que(H,·), H ⊂G, é um subgrupo de (G,·) se, e somente se, (H,·|H×H) é um grupo. Usaremos a notaçãoH ≤G para dizer que H é subgrupo de G.

Podemos exemplificar a definição considerando (R>0,·) como um subgrupo do grupo (R\{0},·). No âmbito dos grupos finitos, no entanto, o seguinte teorema estabelece uma condição necessária, mas não suficiente, para a existência de um subgrupo.

Teorema 2.6 (Lagrange). Em um grupo finito, a ordem de qualquer subgrupo divide a ordem do grupo.

A demonstração pode ser encontrada em [1, cap. 8, sec. 8] e não será realizada neste relatório. No entanto, destacamos o conceito declasses laterais, uma generalização da relação de congruência módulo m, utilizada na prova do teorema. Antes disso, estabelecemos uma relação de equivalência em Gem termos de um subgrupo H≤G.

Definição 2.5. SejamGum grupo eH≤G. Dadosx, y∈Gdiremos que x≡y (modH) se, e somente se, xy−1 ∈H.

Considerando o grupo (Z,+) e o subgrupo dos múltiplos de um inteiro positivo n,nZ, dadosx, yinteiros, então o inverso deyé −y, portantox≡y (modH)equivale a dizer que x−y∈nZ, ou seja,x≡y (mod n).

Mostraremos, por fim, que a relação acima definida é de equivalência, o ponto principal da demonstração de 2.6.

(i) Sex∈H, então xx−1 =e∈H, logo, x≡x (mod H)

(ii) Dados x, y ∈G, se x ≡y (modH) então xy−1 ∈ H. Assim, (xy−1)−1 =yx−1 ∈ H, logo, y≡x (modH)

(iii) Dadosx, y, z ∈G, se x ≡y (mod H) e y ≡ z (modH) então xy−1, yz−1 ∈H, logo, (xy−1)(yz−1) =xz−1∈H. Portanto,x≡z (modH)

(4)

É possível observar como cada uma das propriedades de H enquanto subgrupo de G implica naquelas da relação de equivalência, a existência do neutro, do inverso em H e a operação ·fechada em H implicando, respectivamente, em (i), (ii) e (iii). A partir disso, é motivada a definição abaixo, que será de imensa importância na seção 5 para a correção de erros na transmissão de mensagens.

Definição 2.6. Sejam Gum grupo,H ≤Ge x∈G. Definimos aclasse lateral (à direita) de H emG,Hx, por

Hx={hx:h∈H}={y∈G:y≡x (mod H)}

Proposição 2.7. Seja G um grupo e a ∈ G. Definamos o conjunto hai := {at : t ∈ Z}.

Então hai é um subgrupo de G.

Demonstração: Sejamn, m∈Z. Observe queanam =an+m ∈ hai, ou seja, o produto em G é fechado emhai.

Consideremos o elementoak, k∈Z. Assim,

a0 =ak+(−k)=ak(1+(−1)) = (a1+(−1))k= (aa−1)k=e∈ hai

mostrando que o elemento neutroedeGestá emhaie que todo elemento de haié inversível Definição 2.7. Seja (G,·) um grupo. Dizemos que este é cíclico, ou gerado por a, se G=hai para algum a∈G. Neste caso, aé um gerador de G. Dizemos que a ordem dea, que denotaremos por |a|, é a ordem deG.

Se G for um grupo de ordem prima, então escolha a ∈ G, a 6=e. Pelo Teorema 2.6, a ordem de hai divide a ordem de G. Logo, hai = {e} ou G. Como a 6= e, temos hai = G.

Deste modo, concluímos que G é cíclico e que todo elemento deG gera o grupo todo.

Outro importante resultado na Teoria de Grupos é o Teorema da Raiz Primitiva.

Definição 2.8. Seja (G,·) um grupo. Dizemos que a∈G é umaraiz primitiva de Gse, e somente se, aé um gerador deG.

Teorema 2.8 (Teorema da Raiz Primitiva). Se p∈P entãoU(p) é cíclico.

A demonstração do teorema acima pode ser vista em [1, cap. 10, sec. 5] e é construtiva, consistindo de um algoritmo para a determinação de um gerador para U(p).

3 Testes de Primalidade e Algoritmo RSA

Nesta seção usaremos alguns dos resultados obtidos a partir da Teoria de Grupos para a formulação de alguns testes de primalidade e discutiremos a construção, implementação e problemas da Criptografia RSA.

Definição 3.1. Dado um inteiro positivon, diremos que o número2n−1é on-ésimo número de Mersenne e o denotaremos por M(n).

(5)

Se né composto,n=ab, então

2n−1 = (2a)b−1 = (2a−1)(2a(b−1)+ 2a(b−2)+· · ·+ 2b+ 1)

e, portanto, M(n) é composto. Assim, concluímos que entre os números de Mersenne os únicos primos são da forma 2p−1, onde p∈P.

Na demonstração de alguns resultados, como é possível se ver nas referências, é utilizado o seguinte lema:

Lema 3.1. Sejam (G,·) um grupo finito e a∈G. Um inteiro positivo t satisfaz at=ese, e somente se, |a|

t.

Demonstração: Sejan=|a|. Suponhamos queat=e. Pelo Algoritmo da Divisão, existem inteiros q e r tais quet=qn+r, com0≤r < n. Assim, temos

at= (an)qar =ar=e

Por definição de ordem,n= min{x∈Z>0 :ax=e}. Logo, r= 0.

Reciprocamente, sen|tentão t=nk, para algum inteirok. Assim,at= (an)k=e.

O seguinte teste de primalidade determina unicamente primos de Mersenne, o que, apesar de ser pouco útil para o algoritmo RSA em geral, mostra-se de grande utilidade para a determinação de primos grandes. O Teste de Lucas-Lehmer, como é chamado, é utilizado pelo GIMPS (Great Internet Mersenne Prime Search), sendo responsável pela descoberta de parte dos maiores primos conhecidos. Até Junho de 2016 o maior primo conhecido, descoberto em 07 de Janeiro de 2016, era M(74,207,281), possuindo 22,338,618 algarismos, como é possível ver em [2]. Para enunciar o teste, precisaremos da seguinte sequência definida recursivamente

S0 = 4 Sn+1 =Sn2−2

Proposição 3.2 (Teste de Lucas-Lehmer). Seja p um primo positivo. O número de Mer- senne M(p) é primo se, e somente se,Sp−2 ≡0 (mod M(p)).

Demonstração: A demonstração de que a afirmação é necessária encontra-se em [1, cap. 9, sec. 4] e faz uso da extensão da relação de congruência para grupos, vista na seção anterior.

Mostrar que a afirmação também é suficiente foge do escopo deste relatório, a demonstração completa pode ser encontrada em [3].

O seguinte resultado elimina a dependência da relação de recorrência e introduz uma maneira mais eficiente para o cálculo computacional.

Proposição 3.3. Seja n um inteiro positivo. Então Sn2n2n, onde ω = 2 +√ 3 e ω = 2−√

3.

Demonstração: Faremos a demonstração por indução em n. Para o caso inicial, note que S0 = ω2020 = 4. Suponhamos, por hipótese de indução, que Sn = ω2n2n, n ≥ 0.

Assim,

Sn+1 =Sn2−2 =ω2n+1+ 2(ωω)2n2n+1−2ωω=1= ω2n+12n+1 completando a indução.

(6)

Resta ainda introduzir um novo teste de primalidade para que possamos abordar o algoritmo RSA propriamente dito, baseado nas considerações de Brilhart, Lehmer e Selfridge.

Proposição 3.4. Seja num inteiro positivo tal quen−1 =pα11· · ·pαkk, ondep1<· · ·< pk

são primos. Se, para cadai∈ {1, . . . , k} existirem inteiros positivosbi, não necessariamente distintos, tais que

bn−1i ≡1 (modn) b

n−1 pi

i 6≡1 (modn) Então né primo.

Demonstração: Vide [1, cap. 10, sec. 2].

O método RSA é um sistema criptográfico de chave assimétrica, ou seja, constituído de uma chave pública, usada para encriptação, e uma chave privada, para decriptação, e que baseia seu funcionamento em técnicas conhecidas da Teoria Elementar de Números.

Para a aplicação do método, convertamos as letras em números usando a seguinte tabela de conversão, baseada no código ASCII.

! " # $ % & ’ ( ) * + , - .

102 103 104 105 106 107 108 109 110 111 112 113 114 115

/ 0 1 2 3 4 5 6 7 8 9 : ; <

116 117 118 119 120 121 122 123 124 125 126 127 128 129

= > ? @ A B C D E F G H I J

130 131 132 133 134 135 136 137 138 139 140 141 142 143

K L M N O P Q R S T U V W X

144 145 146 147 148 149 150 151 152 153 154 155 156 157

Y Z [ \ ] ^ _ ‘ a b c d e f

158 159 160 161 162 163 164 165 166 167 168 169 170 171

g h i j k l m n o p q r s t

172 173 174 175 176 177 178 179 180 181 182 183 184 185

u v w x y z { | } ~

186 187 188 189 190 191 192 193 194 195

Nesse contexto, usaremos 101 para o espaço entre duas palavras. Observe que a corres- pondência de cada letra a um número de três algarismos evita ambiguidades na conversão.

Para a encriptação será necessário um par de inteiros positivos (n, e) tais que n = pq, onde p e q são dois primos distintos, ee inversível móduloφ(n), ou seja,mdc(e, φ(n)) = 1.

Note que conhecidosp e q podemos facilmente determinar um valor adequado para e, pois, pelo Corolário 2.4, temos φ(n) = (p−1)(q −1). Chamaremos o par (n, e) de chave de codificação ou chave pública.

(7)

Deste modo, dada uma mensagem, precisamos separá-la em blocos b de k dígitos tais que b < n e o primeiro dígito de b é diferente de 0. Chamemos de C(b) a codificação do blocob. Portanto, para cada b, temos

C(b) :=bemodn

Exemplo 3.1. Tomemos como exemplo a frase "Dinossauro, vaca e preguica", trocandoçpor c. De acordo com a convenção estabelecida, a mensagem pode ser escrita como

15516616816611310116917417918018418416618618318011310118118317017218617416 8166069139 Tomemos p= 101 e q = 199, entãon= 20.099. Separemos a mensagem em blocos fixos de tamanho 5, lembrando que assim garantimos que cada bloco é estritamente menor que n.

15516−61681−66113−10116−91741−79180−18418−41661−86183 18011−31011−81183−17017−21861−74168−16606−9139

Note que o comprimento dos blocos não corresponde a nenhuma unidade linguística, tor- nando a decriptação por alguns métodos indiretos, como contagem de frequência, pouco eficientes.

Escolhendo e = 13, note que mdc(13, φ(20.099)) = mdc(13,19.800) = 1. Codificando toda a mensagem, obtemos

4520−16717−2355−1321−4395−1667−216−15906 15888−216−15268−4363−15870−13477−2279

Para o processo de decriptação necessitaremos do par de inteiros(n, d), ondedé o inverso de e módulo φ(n), o qual podemos calcular usando o Algoritmo de Euclides Estendido.

Chamaremos (n, d) de chave privada. Assim, se a é um bloco da mensagem codificada, denotaremos por D(a) a decodificação dea. Assim,

D(a) :=admodn

Resta mostrar que D(C(b)) = b, ou seja, que decriptando o bloco criptografado temos novamente o bloco original. Mostraremos isso na proposição abaixo.

Proposição 3.5. Seja n produto de dois primos distintos e b um bloco de uma mensagem tal que b < n. Então D(C(b)) =b.

Demonstração: Sejameum inteiro,1≤e≤φ(n), tal quemdc(e, φ(n)) = 1edseu inverso módulo φ(n). Por definição de De C temosD(C(b))≡bed (modn).

Comoed≡1 (modφ(n)), podemos escrevered= 1 +kφ(n) = 1 +k(p−1)(q−1)para algum inteiro k. Então, pelo Pequeno Teorema de Fermat,

bed ≡b(bp−1)k(q−1) ≡b (modp) bed ≡b(bq−1)k(p−1) ≡b (modq)

Como mdc(p, q) = 1, pois p e q são primos distintos, temos n = pq | beq−b. Assim, D(C(b))≡b (modn), donde ambosD(C(b))ebsão menores quen. Logo,D(C(b)) =b.

(8)

Resta analisar porque o método RSA é seguro. O algoritmo RSA usa um sistema de crip- tografia de chave assimétrica, ou seja, as chaves de codificação e decodificação são distintas e, além disso, a chave de codificação é pública, sendo acessível a qualquer usuário.

Sejam p, q são os parâmetros do sistema que estamos usando, n = pq, e e um inteiro inversível móduloφ(n). Damos ao par(n, e)o nome de chave pública. O que torna o sistema RSA seguro é a dificuldade de encontrar-se d≡e−1 (mod φ(n))a partir somente de n e e pois, na prática, precisamos aplicar o algoritmo de Euclides estendido para encontrarmos d mas, por outro lado, necessitaríamos encontrar φ(n) para isso, o que, acredita-se, ser equivalente a decompor n, um processo extremamente custoso, em geral.

4 Anéis, Corpos e Polinômios

Definição 4.1. Dizemos que um conjunto A, com pelo menos dois elementos distintos, munido de duas operações + e ·, chamadas soma e produto, respectivamente, é um anel se (A,+) for um grupo abeliano e se o produto for associativo, possuir elemento neutro e for distributivo relativamente à soma.

Sendo únicos, denotaremos por 0 e 1 os elementos neutros da soma e do produto, res- pectivamente, e por −ao elemento oposto dea,(a∈A).

Definição 4.2. Um anel (D,+,·) é dito um domínio, ou domínio de integridade, se, para todosx, y∈D− {0} temosxy6= 0.

Proposição 4.1 (Lei do Cancelamento). Sejam D um domínio e x∈D− {0}. Então para quaisquer y, z ∈D, se xy=yz, temosy=z.

Demonstração:

xy=xz ⇒x(y−z) = 0x6=0⇒ y−z= 0.

Definição 4.3. Dizemos que um anel (K,+,·) é um corpo se (K − {0},·) for um grupo abeliano.

Exemplo 4.1. Todo domínioD, |D|=n, é um corpo. De fato, seja x∈D− {0}, considere o conjunto

{xn:n∈N} ⊂D

Como|D|=n, existem n1, n2∈N, n1> n2, tais que xn1 =xn2. Logo,x·xn1−n2−1= 1.

Entre os exemplos de corpos finitos e infinitos, respectivamente, se incluem ainda Zp, onde p é um número primo, eQ.

SejamA um anel e I ideal de A. Definimos sobre A a seguinte relação de equivalência, tratada no primeiro capítulo,

x≡y (modI)⇔a−b∈I

Assim, sea∈A, denotaremos pora, oua+I, a classe de equivalência de amóduloI e por A/I o conjunto das classes de equivalência módulo I. Definidas as operações⊕ e

a⊕b:=a+b ab:=a·b

temos que (A/I,⊕,) é um anel, chamado anel quociente de A módulo I, como é possível ver pela proposição abaixo.

(9)

Proposição 4.2. (A/I,⊕,) é um anel.

Demonstração: Basta mostrarmos que as operações estão bem definidas, uma vez que a estrutura de anel é induzida pelas operações emA.

Sejamx∈aey∈b. Então,a−x∈I ey−b∈I. Como I é ideal, (a+b)−(x+y)∈I, então a+b=x+y. Assim, a⊕b=a+b=x+y =x⊕y. Analogamente, b(a−x)∈I e x(b−y)∈I, seguindo queab−xy∈I. Deste modo,ab=ab=xy =xy.

Definição 4.4. Seja A um anel e M ⊂ A um ideal. Então M é dito ideal maximal se M A e não existe um ideal propriamente contido entreM eA, i. e., não existe um ideal J tal queM J .

Estamos interessados em determinar os ideais maximais de Z. Para isso, note que se n ∈Z é composto, então sejaa um divisor não-trivial de n. Note que n∈aZ e, portanto, nZ⊂aZ⊂Z, logo, o idealnZnão é maximal. Mostremos agora que todo ideal deZgerado por um primo pé maximal. De fato, seja qZ ideal deZ tal quepZ⊂qZ⊂Z. Suponhamos sem perda de generalidadeq ≥0, entãop=qm, para algum inteirom. Contudo,pé primo, seguindo quem= 1 oum=p, donde segue a conclusão. Logo, os ideais maximais de Zsão da forma pZ, onde pé um inteiro primo.

Note ainda que os quocientesZ/nZ=:Zn são corpos se, e somente se,pfor um número primo, como foi tratado no relatório anterior. Neste âmbito, mostra-se um resultado mais geral, como pode-se ver em [4, cap. 1, sec. 5], que diz que o quociente de um anel por um ideal é corpo se, e somente se, o ideal for maximal.

Definição 4.5. Seja A um anel e X uma variável. Um polinômio P(X) com coeficientes em Ana variável X é uma expressão do tipo

P(X) =

n

X

i=0

aiXi

onde n∈N0 e ai∈A,1≤i≤n.

O conjunto de todos os polinômios na variável X com coeficientes em A será denotado por A[X].

SejamP(X) =Pn

i=0aiXi, Q(X) =Pm

j=0bjXj ∈A[X]. Definimos as operações de soma e produto em A[X]como

P(X) +Q(X) :=

max{m,n}

X

i=0

(ai+bi)Xi

P(X)·Q(X) :=

m+n

X

i=0

ciXi

onde ci=Pi

j=0ajbi−j.

Mostra-se em [6, cap. 3, sec. 1] queA[X], munido das operações acima definidas, forma um anel.

Definição 4.6. Seja P(X) =Pn

i=0aiXi ∈A[X]. Definimos o grau de P(X), e o denotare- mos por ∂P(X), como sendo n, sean6= 0, e−∞seP(X) = 0 a partir das seguintes regras aritmétricas,max{−∞, n}=n,−∞+n=−∞ e−∞+ (−∞) =−∞, para todo n∈N.

(10)

Proposição 4.3. Sejam A um anel e f, g ∈ A[X]. Se A é um domínio, então ∂(f g) =

∂f+∂g.

Demonstração: Sef g= 0, podemos supor sem perda de generalidade f = 0, pois mostra- se que se A é um domínio então também o é A[X]. Então ∂(f g) = ∂(0) = −∞ = ∂f +

∂g,∀g∈A[X].

Se f, g 6= 0, escrevamos f(x) = Pn

i=0aixi e g(x) = Pm

j=0bjxj, tais que an, bm 6= 0.

Assim, (f g)(x) = cm+nxm+n+Pm+n−1

i=0 cixi. Como A é um domínio, cn+m = anbm 6= 0.

Logo, ∂(f g) =m+n.

Definição 4.7. Seja W um conjunto. Dizemos que uma relação ≤ emW é de ordem se é reflexiva, transitiva e antissimétrica, ou seja, para quaisquer x, y, z ∈ W, temos a ≤ a, se a≤be b≤centão a≤ce se a≤b e b≤aentão a=b.

Dizemos que o conjunto W é bem-ordenado se todo S ⊂W, S 6= ∅, limitado inferior- mente possui elemento mínimo. Em outras palavras, existe x ∈S tal que x≤y, para todo y ∈S.

Definição 4.8. Dado A um anel, um algoritmo euclidiano emA é uma função ψ definida de A em um conjunto bem-ordenado W tal que dadosa, b∈A, b6= 0, existem q, r∈A tais que a=bq+r, comψ(r)≤ψ(b).

Dizemos que A é um anel euclidiano se admite um algoritmo euclidianoψ. Nesse caso, dizemos que A é um anel euclidiano paraψ.

SejamAum anel euclidiano,W um conjunto bem-ordenado eψ:A→W um algoritmo euclidiano.

Proposição 4.4. Sejab∈A. Seb6= 0, então ψ(b)> ψ(0).

Demonstração: Pela definição de domínio euclidiano, podemos escrever0 =bq1+b1, com ψ(0)< ψ(b1). Definimos indutivamente a sequênciab1, . . . bn do seguinte modo:

Se bn = 0, pare. Se bn 6= 0 escreva 0 = tbn+bn+1, com ψ(bn+1) < ψ(bn). Como (ψ(bn))n∈N é uma sequência decrescente em um conjunto bem-ordenado, ela é finita. Logo, existe n∈Ntal que bn= 0. Logo, ψ(0) =ψ(bn)< ψ(b).

Pela proposição acima podemos concluir queψ(0) = minψ(A).

Definição 4.9. Dizemos que um idealI de um anelS é principal seI =cS :={ca:a∈S}.

Proposição 4.5. SejaA um anel euclidiano. Então todo ideal I deA é principal.

Demonstração: Se I ={0}, não há nada a se mostrar.

Se I 6= 0, escolho c∈I tal queψ(c) = min{ψ(a) :ψ(0)< ψ(a), a∈I}.Afirmamos que I =cA. Observe que cA⊂I trivialmente.

Dado a∈ I, existem q, r ∈ A tais que a= qc+r, ψ(r) < ψ(c). Note que a−r ∈ I e, portanto, r∈I. Mas ψ(r)< ψ(c). Portantoψ(r) = 0, concluindo que r= 0.

Usualmente para definirmos domínios euclidianos, pedimos axiomaticamente queψ(a)≤ ψ(ab) para quaisquer a, b ∈ A− {0}, o que nem sempre é garantido pela definição aqui apresentada. A seguinte proposição, demonstrada em [5], elimina a necessidade deste axioma mostrando que se existe uma função ψ nas condições da definição 4.8, então existe uma funçãoψ1 nas condições da definição usual.

(11)

Proposição 4.6. Seψ:A→W é um algoritmo euclidiano em um anelA entãoψ1:A→ W definida por ψ1(0) = 0 e ψ1(a) = infb∈aA−{0}ψ(b) para b6= 0é um algoritmo euclidiano tal que

(i) ψ1(a)≤ψ1(ac), ac6= 0 (ii) ψ1(ac) =ψ1(a)⇔acA=aA (iii) ψ1(a)< ψ(a),∀a∈A

Exemplo 4.2. SejamR um anel ef, g∈R[x]polinômios tais que o coeficiente líder deg seja invertível em R. Então podemos escrever f =q·g+r, comq, r∈R[x]e∂r < ∂g. De fato, escrevamos f(x) =Pn

i=0aixi e g(x) =Pm

i=0bixi. Sen < m, faça q(x) =g(x) e r(x) = 0.

Se n≥m, observe que, pela hipótese, b−1m ∈R e que

f(x)−b−1m anxn−mg(x) = (an−1−b−1m anbm−1)xn−1+· · ·+ (an−m−b−1m anb0)xn−m+· · ·

| {z }

chame isso def1(x)

Se ∂f1(x) < m, pare. Faça q(x) = b−1m anxn−m e r(x) = f1(x). Caso contrário, escreva f1(x) =Pp

i=0cixi, onde p:=∂f1, e faça

f2(x) :=f(x)−(b−1m anxn−m+b−1m cpxn−p)g(x)

Se ∂f2 < m, pare. Faça q(x) = (b−1m anxn−m+b−1m cpxn−p) e r(x) = f2(x). Caso contrário, repita o processo com f2, no lugar de f1, e g(x). Como ∂f > ∂f1 >· · ·, obtemos em um número finito de passos um polinômiofi tal que ∂fi < m. Façar(x) =fi(x).

Dado um corpoKe conjuntos{αi}ni=1,{βi}ni=1 ⊂K, estamos interessados em determinar um polinômio P ∈K[X], de grau menor ou igual an−1 que seja tal queP(αi) =βi, para todo 1 ≤ i ≤ n. Para tal, necessitaremos de alguns resultados bem conhecidos sobre polinômios.

Definição 4.10. SejaA um anel eP ∈A[X]. Dizemos que a∈A éraiz de P seP(a) = 0.

Proposição 4.7. Sejam K corpo, P ∈K[X] e α ∈K. Então α é raiz de P se, e somente se, (X−α)∈K[X]divide P.

Demonstração: Pelo Algoritmo da Divisão em K[X], garantido pelo exemplo 4.2, com g(X) =X−α, existemQ, R∈K[X]tais queP(X) = (X−α)Q(X)+R(X), com∂R(X)<1.

Assim, R(X) =R ∈K. Masα é raiz deP se, e somente se, 0 =P(α) = (α−α)Q(α) +R=R Logo, P(X) = (X−α)Q(X).

Teorema 4.8. Um polinômio de grauncom coeficientes em um corpoKpossui, no máximo, n raízes distintas em K.

Demonstração: Sejam α1, . . . , αm ∈ K as raízes distintas de P ∈ K[X], ∂P = n. Pela proposição anterior,

P(X) = (X−α1)· · ·(X−αm)Q(X) Ou seja,

∂P =n=m∂Q≥m

(12)

Note que uma consequência imediata do teorema acima é que dados dois polinômios P, Q ∈K[X], de grau menor ou igual a n−1, se P(αi) =Q(αi),{αi}ni=1 ⊂K um conjunto de elementos dois a dois distintos, entãoP =Q, pois o polinômio(P−Q)possui grau menor ou igual a n−1e se anula em n pontos distintos e, pelo teorema anterior, concluímos que P −Q= 0, ou seja,P =Q. Podemos expressar essa conclusão como o seguinte corolário.

Corolário 4.9. Sejam P, Q∈K[X], com ∂P, ∂Q ≤n−1, e {αi}ni=1 ⊂K um conjunto de elementos dois a dois distintos. Se P(αi) =Q(αi), i= 1, . . . , n, então P =Q.

A partir disso, concluímos que, encontrado o polinômio nas condições que buscamos, ele é único. Expressaremos a seguir o método devido a Lagrange que nos permite encontrar facilmente tal polinômio.

Teorema 4.10 (Teorema de Interpolação de Lagrange). Sejam dados conjuntos de elemen- tos dois a dois distintos{αi}ni=1,{βi}ni=1num corpo K. O polinômioP(X) =Pn

j=1βjpj(X), com

pj(X) = (X−α1)· · ·(X\−αj)· · ·(X−αn)

j−α1)· · ·(αj−αj−1)(αj−αj+1)· · ·(αj−αn)

onde (X\−αj) significa que (X −αj) deve ser omitido da expressão, é o único polinômio em K[X]de grau menor ou igual a n−1, tal queP(αi) =βi, parai= 1, . . . , n.

Demonstração: Note que pji) = δij. Pondo P(X) = Pn

j=1βjpj(X), claramente ∂P ≤ n−1 e satisfazP(αi) =βi, parai= 1, . . . , n, onde sua unicidade é garantida por 4.9.

5 Códigos

Definição 5.1. Seja A 6= ∅ um conjunto finito, que chamaremos de alfabeto. Um código corretor de erros é um subconjunto próprio qualquer deAn, para algum n∈N.

Em alguns momentos nos referiremos aos elementos de An por palavras. Para começar nosso estudo, necessitamos ainda de uma noção de distância entre os elementos de An. Definição 5.2. Dado um conjuntoM 6=∅, diremos que uma função d:M×M → R≥0 é dita uma métrica se for positiva definida, homogênea e obedecer a desigualdade triangular.

Ou seja, dadosx, y, z ∈M, temos

d(x, y) = 0⇔x=y d(x, y) =d(y, x)

d(x, y)≤d(x, z) +d(z, y)

Dizemos que o par (M, d) é um espaço métrico.

Assim, dado um alfabeto A, definimos a seguinte métrica em An, chamada de métrica de Hamming,

dH(x, y) :=|{i:xi 6=yi}|

Enquanto a positividade e simetria são facilmente mostradas, para a desigualdade tri- angular consideremos três elementos u, v, w ∈ An. Consideremos a contribuição de cada uma das i-ésimas coordenadas de u, v e w. Caso ui = vi, temos que a contribuição de wi

(13)

pode ser tanto 0 como 2, caso wi = ui ou wi 6= ui = vi, respectivamente. Se ui 6= vi, necessariamentewi 6=ui ouwi6=vi, ou seja, a contribuição deωi pode ser 1 ou 2, seguindo que d(u, v)≤d(u, w) +d(w, v).

Definição 5.3. Dados um real positivo r e x ∈ An, definimos a casca esférica e a bola fechada de raior como sendo, respectivamente,

Sr(x) :={y∈An:dH(x, y) =r}

Br[x] :={y∈An:dH(x, y)≤r}

Proposição 5.1. Para todox∈An e r >0 real temos

|Br[x]|=

r

X

i=0

n i

(|A| −1)i

Demonstração: Mostraremos primeiro que |Si(x)| = ni

(|A| −1)i. Ora, se escrevermos y = (y1, . . . , yn) ∈ An, dH(x, y) = i, para cada posição j onde xj 6= yj temos (|A| −1) possíveis valores parayj, ou seja,(|A|−1)i possíveis valores para todas as posições diferentes.

Observe ainda que temos ni

possibilidades de dispor as posições diferentes, permutando os índices, seguindo a igualdade desejada.

O resultado proposto segue da observação de que sei6=j entãoSi(x)∩Sj(x) =∅, logo

|Br[x]|=

r

[

i=0

Sr(r)

=

r

X

i=0

n i

(|A| −1)i

Definição 5.4. Seja C⊂Anum código. A distância mínima de C é o inteiro d:= min{d(u, v) :u, v∈C, u6=v}

Teorema 5.2. Seja C um código com distância mínima d. Então C pode corrigir até κ=bd−12 c erros e detectar até d−1 erros.

Demonstração: Vide [6, cap. 1, sec. 2].

Definição 5.5. Seja C ⊂An um código com distância mínima de sejaκ=bd−12 c. C será dito perfeito se

[

c∈C

Bκ[c] =An

Dado um códigoC ⊂An com distância mínimade sejaκ definido como acima, quando o receptor recebe uma palavra r, temos que ou r encontra-se em alguma bola de tamanho κ de alguma palavra em C, e portanto pode ser corrigida, ou não, sendo então possível corrigirr com boa margem de segurança. Nota-se a partir da situação acima a importância dos códigos perfeitos, já que nestes a segunda situação é impossível.

Outro importante conceito a ser tratado é o de equivalência de códigos, que surge da noção de isometria.

Definição 5.6. Dados dois espaços métricos (M, dM) e (N, dN), dizemos que f :M → N é uma isometria sedN(f(x), f(y)) =dM(x, y), para quaisquer x, y∈M.

(14)

Definição 5.7. Sejam C, C0 códigos sobre An. Diremos que C e C0 são equivalentes se existe uma isometria F :An→An tal queF(C) =C0.

Como toda isometria de An em An é uma bijeção, vide [6, cap. 1, sec. 3], existe F−1 :An→An, inversa deF, a qual mostra-se que também é uma isometria. Enunciaremos ainda um teorema que nos diz como são as isometrias de An. Para sua demonstração, vide [6, cap. 1, sec. 3].

Teorema 5.3. Seja F : An → An uma isometria. Então existem uma permutação π de {1, . . . , n} e bijeções fi de A,1≤i≤n, tais que

F =Tπ◦Tf11◦ · · · ◦Tfnn onde, para cada i,1≤i≤n,

Tπ, Tfii :An→An

(a1, . . . , an)7→Tπ(aπ(1), . . . , aπ(n)) (a1, . . . , ai, . . . , an)

Ti

7→fi (a1, . . . , fi(ai), . . . , an)

Definição 5.8. SejamKum corpo finito en∈N. Diremos que um códigoC ⊂Knélinear se C for um subespaço vetorial de Kn.

Definição 5.9. Dadox= (x1, . . . , xn)∈Kn, define-se opeso dex por ω(x) :=|{i:xi6= 0}|

ou seja, ω(x) =dH(x,0).

A partir da seguinte proposição, dado um código linear com M elementos, podemos calcular sua distância mínima comM−1operações, ao invés das M2

necessárias pela defi- nição. QuandoM é muito grande, porém, continua sendo impraticável computacionalmente a utilização desse método.

Proposição 5.4. SejaC ⊂Kn um código linear com distância mínima d. Então (i) dH(x, y) =ω(x−y)

(ii) d=ω(C)

Demonstração: (i) ω(x−y) =|{i: (x−y)i 6= 0}|=|{i:xi 6=yi}|=d(x, y).

(ii) ∀x, y∈C, x6=y, x−y∈C− {0} ed(x, y) =ω(x, y).

Afim de trabalhar com a correção de mensagens, olharemos para C como subespaço vetorial k-dimensional de Kn por meio da transformação linear

T :Kk→Kn

(x1, . . . , xk)7→x1v1+· · ·+xkvk onde {v1, . . . , vk}é uma base de C.

(15)

Assim, escrevendo cada vetorvi da base como vi = (vi1, . . . , vin), i = 1, . . . , k, conside- remos a matriz Gcujas linhas são os vetores vi,

G=

 v1

... vk

=

v11 v12 · · · v1n

... ... ... vk1 vk2 · · · vkn

podemos então descrever a transformaçãoT acima como

T :Kk→Kn x7→xTG

uma vez que é fácil ver que sex= (x1, . . . , xk)temos que T x=xTG=x1v1+· · ·+xkvk

logo Im (T) =C. Podemos então considerarKk como sendo o código da fonte, C o código de canal e a transformação T como uma codificação.

Note que a matrizG considerada não é única, uma vez que depende da escolha da base de Kk. Reciprocamente, dada uma matriz Gk×n com entradas em K e linhas linearmente independentes, a transformação T x=xTGdefine uma codificação de Kk emKn.

Como é possível ver em [6, cap. 5, sec. 2] temos que todo código linearC é equivalente a um código C0 gerado por uma matriz escalonada

G0 = (Idk|A)

onde Idk é a matriz identidade k×k e A uma matriz k×(n−k). Uma matriz G nessas condições será dita estar na forma padrão.

Definição 5.10. Sejamu= (u1, . . . , un), v= (v1, . . . , vn)∈Kn. Define-se oproduto interno de u e v, denotado por hu, vi, como sendo

hu, vi=u1v1+· · ·+unvn Note que

hv, ui=hu, vi

hu+λw, vi=hu, vi+λhw, vi para quaisquer u, v∈Kn eλ∈K.

Definição 5.11. Seja C ⊂ Kn um código linear. Definimos seu complemento ortogonal, denotado C, por

C={v∈Kn:hv, ui= 0,∀u∈C}

Lema 5.5. SejaC ⊂Kn um código linear com matriz geradora G. Então (i) C é um subespaço vetorial deKn.

(ii) x∈C se, e somente se, Gx= 0.

(16)

Demonstração: (i) Sejam v, w∈C eα∈K. Então, dadou∈C, hv+αw, ui=hv, ui+αhw, ui= 0 seguindo que v+αw∈C.

(ii)x∈Cse, e somente se,xé ortogonal a todos os elementos deC se, e somente se,x é ortogonal a todos os elementos de uma base deC, o que é equivalente a dizer queGx= 0, pois as linhas de G formam uma base deC.

Nas condições do lema acima, comG= (Idk |A) na forma padrão, mostra-se ainda que dimKC =n−k, ondek := dimKC, e que a matriz H = (−AT |Idn−k) gera C, para a demonstração vide [6, cap. 5, sec. 3].

Lema 5.6. Seja C ⊂ Kn um código linear de dimensão k com matriz geradora G. Uma matriz H∈M(n−k)×k(K) com linhas linearmente independentes gera C se, e somente se,

GHT = 0

Demonstração: As linhas de H geram um subespaço vetorial de Kn de dimensão n− k. Por outro lado, denotando por h1, . . . , hn−k e por g1, . . . , gk as linhas de H e de G, respectivamente, temos que

(GHT)ij =hgi, hji

Portanto, GHT = 0 é o mesmo que dizer que o subespaço V gerado pelas linhas de H estão em C. Como dimKV = dimKC=n−k, segue queGHT = 0se, e somente se, C é gerado pelas linhas de H.

Corolário 5.7. (C)=C.

Demonstração: Sejam G e H matrizes geradoras de C e C, respectivamente. Então GHT = 0. Tomando a transposta na igualdade, temos que HGT = 0 e, portanto, G gera (C), seguindo o resultado.

A princípio, dado um código linear C ⊂ Kn, com matriz geradora G e uma palavra c∈Kn, para determinarmos secpertence aC, é preciso verificar se o sistema denequações e k incógnitasx= (x1, . . . , xn) dado porxTG=cadmite solução, método que, em geral, é inviável computacionalmente.

A seguinte proposição sumariza os resultados acima em um método mais eficiente para determinar se cpertence, ou não, a C.

Proposição 5.8. Sejam C um código linear e H a matriz geradora de C. Então c ∈ C se, e somente se, Hc= 0.

Demonstração: Note que c∈(C) se, e somente se, Hc= 0 e que(C) =C.

Definição 5.12. Dado um código linearC⊂Kn, chamamos uma matrizH dematriz teste de paridade de C seH gera C. Dada uma palavra v ∈ C, chamamos de sídrome de v o vetor Hv.

Assim, dado c ∈ Kn, basta checar a síndrome de c para determinar se c está em C ou não. Mostraremos com as próximas proposições que a matriz teste de paridade de um código C carrega informações sobre o pesoddo código.

(17)

Teorema 5.9. Seja H a matriz teste de paridade de um códigoC. Temos queω(C)≥sse, e somente se, qualquer conjunto de s−1 colunas de H é linearmente independente.

Demonstração: Suponhamos, primeiramente, que quaisquer s−1 colunas de H sejam linearmente independentes. Assim, sejam c= (c1, . . . , cn)∈C− {0}eh1, . . . , hnas colunas de H. Como Hc= 0, temos

0 =Hc=

n

X

i=1

cihi

visto que ω(c) é o número de componentes não-nulas de c, temos que se ω(c) < s−1, teríamos uma combinação nula de menos des−1colunas, uma contradição. Logo,ω(c)≥s e, portanto, ω(C)≥s.

Reciprocamente, suponhamos que ω(C) ≥ s. Suponhamos, por absurdo, que exista um conjunto de s−1 colunas de H linearmente dependente, digamos hi1, . . . , his−1. Logo, existem ci1, . . . , cis−1 ∈K, não-todos nulos tais que

ci1hi1 +· · ·+cis−1his−1 = 0

Portanto,c= (0,· · · , ci1,0, . . . , cis−1,0, . . . ,0)∈C e ω(c)≤s−1< s, um absurdo.

Como consequência, segue a seguinte proposição, cuja demonstração pode ser encontrada em [6, cap. 5, sec. 3].

Corolário 5.10. ω(C) =sse, e somente se, quaisquers−1 colunas deH são linearmente independentes e existe um conjunto de scolunas linearmente dependente.

O corolário a seguir sumariza a relação entre a matriz teste de paridade de um códigoC e seus parâmetros, ou seja, a tripla (n, k, d), ondeC ⊂Kncódigo linear tal que dimKC=k e ω(C) =d.

Corolário 5.11(Cota de Singleton). Os parâmetros(n, k, d)de um código linear satisfazem à desigualdade d≤n−k+ 1.

Demonstração: SeHa matriz teste de paridade de tal código, o posto deHén−k. Como, pela proposição anterior, d−1 é menor ou igual ao posto deH, segue a desigualdade.

Daremos agora alguns exemplos de códigos lineares.

Exemplo 5.1 (Código de Hamming). Um código de Hamming de ordem m sobre Z2 é um código que possui matriz teste de paridadeHmde ordemm×ncujas colunas são os elementos de Zm2 − {0} numa ordem qualquer. Ou seja, o código de Hamming de ordem m é único a menos de equivalências.

Assim sendo, a dimensão do código ék=n−m= 2m−m−1. Note ainda que nenhum par de colunas é linearmente dependente, mas a soma de quaisquer duas colunas também é uma coluna da matriz. Logo, o código tem peso 3. Como exemplo numérico, considere a matriz

H4 =

1 0 0 0 1 1 1 0 0 0 1 1 1 0 1 0 1 0 0 1 0 0 1 1 0 1 1 0 1 1 0 0 1 0 0 1 0 1 0 1 1 0 1 1 1 0 0 0 1 0 0 1 0 1 1 0 1 1 1 1

Mostra-se ainda que os códigos de Hamming são perfeitos.

(18)

Exemplo 5.2 (Códigos de Reed-Solomon). Seja K um corpo finito e considere o K-espaço vetorial dos polinômios de grau menor que k com coeficientes emK, i. e., K[X]k−1. Sejam n um inteiro,n≥k, e {αi}ni=1⊂K. Então a imagem da transformação linear

T :K[X]k−1 →Kn

P 7→(P(α1), . . . , P(αn))

define um código de comprimento n e dimensão k. O código definido acima será chamado de Código de Reed-Solomon de comprimento ne dimensãok definido por {αi}ni=1.

Uma matriz geradora do código é dada por

G=

T(1) T(X)

... T(Xk−1)

=

1 1 · · · 1 α1 α2 · · · αn

α21 α22 · · · α2n ... ... ... αk−11 αk−12 · · · αk−1n

Para determinarmos o peso do código, sejac ∈C uma palavra não-nula. Então, existe P ∈K[X]k−1 tal que

c= (P(α1), . . . , P(αn)) Logo,

ω(c) =|{i∈ {1, . . . , n}:P(αi)6= 0}|=n− |{i∈ {1, . . . , n}:P(αi) = 0}|

≥n−∂P ≥n−k+ 1

Seguindo qued≥n−k+ 1. Mas pela Cota de Singleton, 5.11, temos qued≤n−k+ 1.

Portanto,

d=n−k+ 1

Como exemplo numérico, tomemos K = Z7, k = 4, n = 6 e αi = 3i−1, i = 1,2, . . . ,6.

Portando, o código de Reed-Solomon de comprimento 6, dimensão 4 e definido pelosαi tem matriz geradora

G=

1 1 1 1 1 1

30 31 32 33 34 35 30 32 34 36 38 310 30 33 36 39 312 315

=

1 1 1 1 1 1 1 3 2 6 4 5 1 2 4 1 2 4 1 6 1 6 1 6

e possui distância mínima d= 3.

Chamamos de decodificação o processo de detecção e correção de códigos. Começamos o processo de decodificação de códigos lineares definindo o vetor erroe∈Kn comoe:=r−c, onde c é a mensagem original enviada er a mensagem recebida. Em seguida, note que

He=H(r−c) =Hr−Hc=Hr onde H é a matriz teste de paridade deC.

Nessa situação, se o códigoC possui capacidade de correçãoκ edH(r, c)< κ, podemos determinar unicamente o vetor e e, portanto, recuperar a mensagem original fazendo c = r−e, como mostra o lema a seguir.

(19)

Lema 5.12. Dado C nas condições acima, existe um único e ∈ Kn, com ω(e) ≤ κ, cuja síndrome é igual à síndrome de r e tal que c=r−e.

Demonstração: De fato, e=r−c possui a propriedade acima, poisω(c) =dH(r, c) ≤κ.

Para mostrar unicidade, suponha que existam e, e0 ∈ Kn, com essas propriedades. Seja H a matriz teste de paridade do código, então segue a sindrome de ambos é igual, pois He=Hr=He0, nos dando uma relação de dependência linear entre2κ≤d−1colunas de H e, como quaisquer d−1 colunas de H são linearmente independentes, segue que e=e0. Para mais detalhes, vide [6, cap. 5, sec. 5].

Exemplo 5.3. Suponhamos, agora, que C tenha d ≥ 3 e que e seja tal que ω(e) ≤ 1. Se He = 0, então r ∈ C e, portanto, a mensagem não possui erros. Caso He 6= 0, então ω(e) = 1, ou seja,e= (0, . . . , α, . . . ,0), comα∈K\{0} na i-ésima posição. Assim,

He=Hr=αhi

Note que iestá bem determinado, uma vez que como d≥3, temos que quaisquer duas colunas de H são linearmente independentes, pelo Teorema 5.9, então se Hr =αhi =βhj teríamos duas colunas linearmente dependentes, um absurdo. Logo, podemos univocamente determinar e como sendo o vetor que vale α na i-ésima coordenada e zero nas demais, e portanto corrigir a mensagem para r−(0, . . . , α, . . . ,0).

Baseado no exemplo acima, podemos explicitar um algoritmo para corrigir mensagens com até um erro em códigos lineares com d≥3. Denotaremos por c a mensagem enviada, r a mensagem recebida eH a matriz teste de paridade do código.

Algoritmo 5.1 Entrada: r, H

Saída: c, caso no máximo um erro tenha sido cometido, e erro, caso contrário.

1: Calcule Hr

2: seHr =s6= 0 então

3: Compare scom as colunas deH

4: se existiremα ei tais ques=αhi então

5: Façae= (0, . . . , α, . . . ,0), comα nai-ésima posição

6: devolva r−e

7: senão

8: devolva erro

9: senão

10: devolva r

Para construirmos um algoritmo para corrigir atéκerros, precisaremos definir a seguinte relação de equivalência em Kn.

Definição 5.13. Diremos que u, v ∈ Kn, são iguais módulo C, ou u ≡ v (modC), se possuírem a mesma síndrome, i. e., Hu=Hv.

É fácil ver que a relação definida acima é de equivalência e, portanto, para cadav∈Kn podemos definir sua classe de equivalência, [v], móduloC como sendo

[v] :={v+c:c∈C}

(20)

Proposição 5.13. Sejam C ⊂ Kn tal que dimKC = k, com q = |K|. Dados u, v ∈ Kn, temos

(i) [u] = [v]⇔u−v∈C.

(ii) [u]∩[v]6=∅ ⇔[u] = [v].

(iii) S

v∈Kn[v] =Kn. (iv) |[v]|=|C|=qn.

(v) |{[v] :v∈Kn}|=qn−k Demonstração: Trivial.

Definição 5.14. Um vetor de peso mínimo numa classe de equivalência é dito elemento líder dessa classe.

Exemplo 5.4. Seja C o (4,2)-código gerado sobreZ2 pela matriz G=

1 0 1 1 0 1 0 1

Logo,C ={0000,1011,0101,1110}, e as classes de equivalência deZ2 móduloC são

[0000] ={0000,1011,0101,1110}

[1000] ={1000,0011,1101,0110}

[0100] ={0100,1111,0001,1010}

[0010] ={0010,1001,0111,1100}

com seus líderes de classe sendo respectivamente 0000, 1000, 0100 e 0010.

Proposição 5.14. Seja C um código linear em Kn com distância mínima d. Se u ∈Kn é tal que

ω(u)≤

d−1 2

=κ então u é o único elemento líder de sua classe.

Demonstração: Suponhav ∈Kn comω(v)≤κ. Se u−v∈C, então ω(u−v)≤ω(u) +ω(v)≤κ+κ≤d−1 logo, u−v= 0 e, portanto,u=v.

Para o algoritmo de decodificação é necessário determinar todos os elementosu∈Kntais queω(u)≤κ. Note que cada um deles será líder, único, de uma classe. Em seguida, calcule suas síndromes e as coloque em uma tabela, chamada A. Sejamr uma palavra recebida ec a palavra enviada.

Demonstração: Sejaeo vetor erro. ComoHe=Hr temos que a classe deeestá determi- nada pela síndrome der. Se ω(e)≤κtemos que eé o único elemento líder de sua classe e, portanto, é conhecido e pode ser encontrado na tabela. Consequentementec=r−e=r−` é conhecido.

(21)

Algoritmo 5.2 Algoritmo de Decodificação Entrada: r, H, A.

Saída: c, se foram cometidos no máximoκ erros, e erro, caso contrário.

1: Calcule a síndromes=Hr.

2: ses está emA então

3: Seja `o elemento líder da classe determinada por s

4: devolva r−`.

5: senão

6: devolva Erro

Exemplo 5.5. Consideremos o (6,3)-código linear definido sobre Z2 com matriz teste de paridade

H =

1 0 0 1 0 1 0 1 0 1 1 0 0 0 1 0 1 1

Nesse casod= 3e κ= 1. Os vetores de peso≤1 com suas respectivas síndromes estão relacionadas na tabela abaixo.

líder síndrome 000000 000 000001 101 000010 011 000100 110 001000 001 010000 010 100000 100 Suponhamos agora que a palavra recebida seja

(a) r = (100011). Logo, Hr = (010)T e, portanto, e = (010000). Então c = r −e = (110011).

(b) r = (111111). Logo,Hr= (111)T, que não está na tabela. Então, foi cometido mais do que um erro na transmissão da mensagem.

Referências

[1] Coutinho, S.Números Inteiros e Criptografia RSA,2a Ed., Coleção Matemática e Apli- cações, IMPA, 2014.

[2] Great Internet Mersenne Prime Search. List of Known Mersenne Prime Numbers.

Março, 2008.http://www.mersenne.org/primes/.

[3] Jaroma, John H.Note on the Lucas-Lehmer Test. Irish Mat. Soc. Bulletin 54 (2004), 63-72. http://www.maths.tcd.ie/pub/ims/bull54/M5402.pdf

[4] Garcia, A. & Lequain, Y.Elementos de Álgebra. Projeto Euclides, IMPA, 2002.

(22)

[5] Samuel, P.About Euclidean Rings. Journal of Algebra 19 (1971), 282-301.

[6] Hefez, A. & Villela, M. L. T.Códigos Corretores de Erros. Série Computação e Mate- mática, IMPA, 2002.

Referências

Documentos relacionados