Documente Academic
Documente Profesional
Documente Cultură
30/10/03
Cdigos Cclicos ou Polinomiais
Cdigos cclicos so uma classe de cdigos de correo de erros
lineares de bloco. So caracterizados pela propriedade de deslocamento
cclico. Seja v = [v0 , v1 ...v n 1 ] um vetor binrio de n-elementos, um vetor v ' um
deslocamento cclico de v se v ' = [v n 1 , v0 ...v n 2 ] . Um cdigo cclico um cdigo
linear de bloco C com vetores-cdigo c = [c0 , c1 ... cn 1 ] tal que para todo c C , o
vetor dado pelo deslocamento cclico de c tambm um vetor-cdigo.
Exemplo 1
Cdigo de Repetio (6,2)
C = {[000000],[010101],[101010],[111111]}
1 0 1 0 1 0
G=
0 1 0 1 0 1
Exemplo 2
O cdigo de bloco (5,2) definido pela matriz geradora
1 0 1 1 1
G=
0 1 1 0 1
00000 para 00
10111 para 10
01101 para 01
11010 para 11
g0 g1 g2 g 3 " g n k 1 g nk 0 0 0 " 0
0 g0 g1 g 2 " g nk 2 g n k 1 g nk 0 0 " 0
G=0 0 g0 g 1 " g n k 3 g nk 2 g n k 1 g nk 0 " 0
# # # # % # # # # # % #
0 0 0 0 " 0 0 g0 g1 g2 " g n k
c 0 = m0 g 0
c1 = m0 g1 + m1 g 0
c 2 = m0 g 2 + m1 g1 + m2 g 0
#
c n k = m0 g n k + m1 g n k 1 + ... + mn k g 0
#
c n 1 = mk 1 g n k
k 1
cl = m j g l j Soma convolucional
j =0
Exemplo
x7+1=(x+1)(x3+x+1)(x3+x2+1)
f ( x) = Q( x) g ( x) + N
( x), deg[ ( x)] < deg[ g ( x)]
Coeficiente Re sto
Exemplo 1
Divida f ( x) = x 6 por g ( x) = x 3 + x + 1
x 6 = ( x 3 + x + 1)( x 3 + x + 1) + x 2 + 1
Exemplo 2
Construa o anel GF (2)[ x] / x 3 + x + 1
000 0
001 1
010 x
011 x +1
100 x3
101 x3 + 1
110 x3 + x
111 x 3 + x + 1
Dcima Nona Aula
04/11/03
Gerao e Decodificao de Cdigos Cclicos
c ( x ) = m( x ) g ( x )
deg[m( x)] k 1
deg[ g ( x)] = r = n k
deg[c( x)] = n 1
x n 1 = x n + 1 = h( x) g ( x) (1)
assim,
c ( x ) h( x ) / x n 1 = m( x ) g ( x ) h( x ) / x n 1 = 0
s ( x ) = v ( x ) h ( x ) / x n 1 = c ( x ) h ( x ) / x n 1 + e( x ) h ( x ) / x n 1 = e( x ) h ( x ) / x n 1
c( x) = x r m( x) d ( x) = x r m( x) + d ( x) (2)
Este anel representa polinmios onde a varivel x e os elementos fazem parte de GF(2), isto ,
nmeros binrios 0 ou 1. A barra significa mdulo (resto).
s ( x ) = c ( x ) / g ( x ) = x r m( x ) / g ( x ) + d ( x ) / g ( x ) = d ( x ) + d ( x ) = 0
Teorema
Um cdigo de blocos (n,k) onde n o tamanho do cdigo e k a
quantidade de bits, definido por um polinmio gerador g(x) um cdigo cclico
se e somente se g(x) satisfaz (1).
Exemplo
Construa um cdigo cclico sistemtico (7,4)
x 7 + 1 = ( x + 1)( x 3 + x + 1)( x 3 + x 2 + 1)
m ( x)
c( x) = x (m0 + m1 x + m2 x 2 + m3 x 3 ) / g ( x) + x 3 m( x) = d ( x) + x 3 m( x)
3
m( x ) c( x)
0 0
1 1 + x2 + x3
x 1+ x + x2 + x4
1+ x 1 + x2 + x3 + x4
x2 1 + x + x5
1+ x2 x + x2 + x3 + x5
x + x2 x2 + x4 + x5
1+ x + x2 x + x3 + x4 + x5
x3 x + x2
1 + x3 1 + x + x3 + x6
x + x3 1+ x4 + x6
1 + x + x3 x2 + x3 + x4 + x6
x2 + x3 1 + x2 + x5 + x6
1 + x2 + x3 x3 + x5 + x6
x + x2 + x3 x + x4 + x5 + x6
1 + x + x2 + x3 1 + x + x2 + x3 + x4 + x5 + x6
Foi fcil fazer esta soma pois se tratava de um nico termo. Agora
imagine se recebermos v(x)= x6 + x5 + x4 + x3 + x2. Se calcularmos s(x)
veremos que este tem o valor x + 1. Teremos que levantar todos os erros
possveis de 1 bit, construir uma tabela de sndromes para saber onde o erro
ocorreu.
Se e(x)=1, temos que s(x)=e(x)/g(x)=1 (quociente 0, resto 1).
Se e(x)=x, temos que s(x) = x (quociente 0, resto x).
Se e(x)=x2, temos que s(x) = x2 (quociente 0, resto x2).
Se e(x)=x3 temos que s(x) = x2 +1 (quociente 1)
Se e(x)=x4 temos que s(x) = x2 + x + 1 (quociente x + 1).
Se e(x)=x5 temos que s(x) = x + 1 (quociente x2 + x + 1).
e(x) s(x)
1 1
x x
x2 x2
x3 x2 + 1
x4 x2 + x + 1
x5 x+1
x6 x3 + x2 + x
Mais Exemplos
Definir o anel GF(2)[x]/x7-1.
m( x ) c( x)
0 0
1 1 + x2 + x3
x 1+ x + x2 + x4
1+ x 1 + x2 + x3 + x4
x2 1 + x + x5
1+ x2 x + x2 + x3 + x5
x + x2 x2 + x4 + x5
1+ x + x2 x + x3 + x4 + x5
x3 x + x2
1 + x3 1 + x + x3 + x6
x + x3 1 + x4 + x6
1 + x + x3 x2 + x3 + x4 + x6
x2 + x3 1 + x2 + x5 + x6
1 + x2 + x3 x3 + x5 + x6
x + x2 + x3 x + x4 + x5 + x6
1 + x + x2 + x3 1 + x + x2 + x3 + x4 + x5 + x6
x4 + x +1
0 x 5 + 1x 4 + 0 x 3 + 0 x 2 + 1x + 1x 0
010
N 011 N
2 3
e( x ) = x 3 + x 7 b = 7 3 + 1 = 5
e( x) = x 3 + x 7 + x 19 + x 20 b = 20 3 + 1 = 18
O nmero mnimo possvel de bits de verificao de paridade
necessrio para corrigir uma salva de comprimento b ou menos dado pelo
limite de Rieger r 2b .
Alguns cdigos de correo de salva so dados pela tabela abaixo:
n k b g(x)
7 3 2 35
15 10 2 65
15 9 3 171
31 25 2 161
63 56 2 355
63 55 3 711
511 499 4 10451
1023 1010 4 22365
Exemplo
g ( x) = x 4 + x 3 + 1
M = 110101
m( x ) = x 5 + x 4 + x 2 + 1
c ( x ) = m( x ) x 4 + m( x ) x 4 / g ( x )
Vigsima Aula
06/11/03
Modelo Estatstico
A criptografia visa modificar uma mensagem que se deseja transmitir
ou armazenar de forma a torn-la ininteligvel a qualquer um, exceto o
destinatrio da mesma.
Seja uma mensagem x um n-grama de um alfabeto A. O processo
de cifrao de x gera y tal que y = E (x ) . y chamado de criptograma.
Claramente deve haver D( y ) = D[ E ( x )] = x . O processo de cifrao pode ser
{ }
visto como um conjunto de transformaes E = E n ,1 n , E n : / nm / nm .
Onde n define os n-gramas e m a cardinalidade.
Por convenincia, assumiremos que xi ;1 i n so letras do
alfabeto portugus.
Um sistema de cifrao uma famlia de transformaes
criptogrficas E = {E k , k K } , onde cada transformao indexada pelo
parmetro k, denominado chave.
Podemos escrever y = E k (x ) e x = Dk ( y ) , compostos da tripla (x, k,
y), onde x o espao das mensagens, k o espao das chaves e y o espao
dos criptogramas.
Cifra de Deslocamento
Regra de Cifrao: Substituio de cada caractere de texto em claro
por um caractere dado por y i = ( xi + k ) mod 26 = E k ( xi ) .
Regra de Decifrao: xi = ( y i k ) mod 26 = Dk ( y i )
Exemplo
Para k=16 e x = MEUCACHORROTEMPULGAS Associas-se para
cada letra um nmero de 0 a 25. A cada nmero somada a chave, no caso,
26, aplicamos o mod26 em cada soma e vemos que nova letra este nmero
define, conforme a tabela abaixo.
Temos y = CUKSQSXEHHEJUCFKBNQI
Cifra de Vigenre
Regra de Cifrao: utilizao de uma palavra chave de l letras,
k1 k 2 ...k l tal que E k ( x ) = ( x1 + k1 , x 2 + k 2 ,..., xl + k l ) mod 26 , repetindo-se as somas
a partir de k1 para xi, i>l.
Regra de Decifrao: E k ( y ) = ( y1 k1 , y 2 k 2 ,..., y l k l ) mod 26
Exemplo
Para k = SINTOMA e x = MEUCACHORROTEMPULGAS
precisamos fazer uma cifrao relativa palavra sintoma. No mais podemos
fazer uma tabela como fizemos no exemplo anterior pois a cifrao tambm
depene da ordem das palavras em x .
Temos que a representao numrica da chave SINTOMA 18 8
13 19 14 12 0, estes nmeros sero somados aos nmeros da nossa
mensagem. O nmero resultante ser tirado mod26 e assim teremos a nova
representao de cada letra.
Temos y =EMHVOOHGZEHDQMHCYZOE
Cifra de Permutao
Regra de Cifrao: Data a matriz de cifrao k temos
y = E k ( x ) = x k .
Regra de Decifrao: x = Dk ( y ) = yk 1 .
Exemplo
0 0 1 0 0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 0 0 0 1 0
1 0 0 0 0 0 1 0 0 0 0 0
k = k 1 =
0 0 0 0 1 0 0 0 0 0 0 1
0 1 0 0 0 0 0 0 0 1 0 0
0 0 0 1 0 0 0 1 0 0 0 0
x = MEUCACHORROTEMPULGAS
0 0 1 0 0 0
0 0 0 0 0 1
1 0 0 0 0 0
[12 4 20 2 0 2] = [20 0 12 2 2 4]
0 0 0 0 1 0
0 1 0 0 0 0
0 0 0 1 0 0
y =UAMCCEROHTROPLEGUM_ _A_ _S
Cifra de Substituio
Regra de Cifrao:
A=q B=w C=e D=r E=t F=y G=u H=i I=o J=p
K=a L=s M=d N=f O=g P=h Q=j R=k S=l
T=z U=x V=c W=v X=b Y=n Z=m
x = MEUCACHORROTEMPULGAS
y = DTXEQEIGKKGZTDHXSUQL
Material elaborado por Eduardo Wolsky e digitado por Rafael Oliveira em 03/07/2003