Sunteți pe pagina 1din 13

Dcima Oitava Aula

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]}

um cdigo cclico. Sua matriz geradora :

1 0 1 0 1 0
G=
0 1 0 1 0 1

Observe a simetria da matriz geradora que proporciona o


deslocamento.

Exemplo 2
O cdigo de bloco (5,2) definido pela matriz geradora

1 0 1 1 1
G=
0 1 1 0 1

um CCE simples, mas no um cdigo cclico. Seus vetores


cdigo so:

00000 para 00
10111 para 10
01101 para 01
11010 para 11

Repare como no podemos deslocar este cdigo ciclicamente para


obter outro. 10111, se deslocado um bit pra esquerda, teremos 01111 que no
um outro vetor cdigo vlido.
Todas as propriedades dos cdigos lineares aplicam-se aos cdigos
cclicos. A matriz geradora de um cdigo cclico (n, k) no-sistemtico pode ser
sempre expressa na forma:

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

As linhas desta matriz geradora so simplesmente deslocamentos


cclicos do vetor base g = [ g 0 g1 ... g nk 1 g nk ... 0] . A forma sistemtica pode
ser obtida a partir de operaes elementares de linhas e colunas. Os vetores-
cdigo sero

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

Representao Polinomial de Cdigos Cclicos


Podemos representar os vetores-cdigo do espao vetorial linear
atravs de polinmios (transformao polinomial):
n 1
v = [v0 v1 ... vn1 ] V ( x) = v0 x 0 + v1 x1 + ... + vn1 x n1 = v j x j
j =0

Os elementos de c so idnticos aos coeficientes em m(x)g(x), ou


seja, a abordagem de matriz para gerao de vetores-cdigo para um cdigo
cclico no-sistemtico idntica representao de transformao polinomial
c(x)=m(x)g(x). O polinmio g(x) chamado de polinmio gerador do cdigo
cclico. Repare a semelhana de c(x)=m(x)g(x) com c = m G .
O grau do polinmio designado por deg(m(x)), deg vem de degree e
representa o maior grau de x no polinmio. Se M o conjunto de k vetores-
fonte, o maior grau do polinmio no conjunto de polinmios m(x) que
descrevem os vetores-fonte k-1 e deg(g(x))=r.
O operador x0 age como o elemento identidade multiplicativa.
Aritmtica Mdulo Polinomial
O conjunto dos polinmios mdulo algum polinmio p(x) forma um
anel. Se os polinmios tem expoentes escalares de GF(2), a estrutura
referida como o anel GF (2)[ x] / p( x) . Este GF uma forma matemtica de
representar um espao, neste caso, Galois Field binrio mdulo 2. um corpo
binrio finito.
As operaes de adio polinomial e multiplicao polinomial
formam um anel comutativo com identidade.
Para n>1, xn-1=xn+1 pode ser sempre fatorado em produtos de
polinmios de menor grau.

Exemplo
x7+1=(x+1)(x3+x+1)(x3+x2+1)

Um polinmio que no pode ser fatorado dito ser irredutvel.


Nossos polinmios geradores de cdigo cclico sero construdos de fatores de
xn+1, ou seja, se g(x) o polinmio gerador de um cdigo cclico (n,k), ento
existe algum polinmio h(x) tal que g(x)h(x)=xn+1. n representa a cardinalidade,
o grau do polinmio.
Para dois polinmios f(x) e g(x) podemos escrever:

f ( x) = Q( x) g ( x) + N
( x), deg[ ( x)] < deg[ g ( x)]


Coeficiente Re sto

Identidades Algbricas Importantes

1. f1 ( x) + f 2 ( x) = [Q1 ( x) + Q2 ( x)]g ( x) + 1 ( x) + 2 ( x) deg[ 1 ( x) + 2 ( x)] < deg[ g ( x)]


f1 ( x) + f 2 ( x) / g ( x) = 1 ( x) + 2 ( x)

2. f1 ( x) f 2 ( x) = [Q1 ( x)Q2 ( x) g ( x) + Q1 ( x) 2 ( x) + Q2 ( x) 1 ( x)]g ( x) + 1 ( x) 2 ( x)


Como deg[ 1 ( x) 2 ( x)] = deg[ 1 ( x)] + deg[ 2 ( x)]
f1 ( x) f 2 ( x) / g ( x) = 1 ( x) 2 ( x) / g ( x)

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

Nossos polinmios cdigo so elementos do anel GF (2)[ x] / x n 1 e


o polinmio gerador deve atender:

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

Similar a c H T = m GH T = 0 . h(x) chamado polinmio verificador de


paridade.
Seja v( x) = c( x) + e( x) onde e(x) o polinmio erro, o polinmio
sndrome definido como:

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

O polinmio sndrome s depende do polinmio erro.

Cdigos Cclicos Sistemticos


A primeira parte tem a informao e a segunda tem a redundncia.
Uma palavra-cdigo sistemtica da forma:

c( x) = x r m( x) d ( x) = x r m( x) + d ( x) (2)

Onde r=n-k e o polinmio de bits de paridade d(x) tem


deg[d ( x)] r 1 e d ( x) x r m( x) / g ( x) (3)
O polinmio sndrome definido como:

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)

O polinmio gerador precisa ser de grau r = n k = 7-4 = 3.


Assim o polinmio gerador deve ser g ( x) = x 3 + x + 1 ou
g ( x) = x 3 + x 2 + 1 . Vamos escolher g ( x) = x 3 + x + 1 , assim temos:

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

Vamos utilizar o cdigo acima para testarmos um pouco a correo


de erros. Vamos supor que recebemos v(x)=x6 + x4 + x3 + x2 + x.

A primeira coluna na tabela a representao polinomial da mensagem (tambm representa todos os


restos possveis). A primeira linha 0x3+0x2+0x1+0x0, a segunda 0x3+0x2+0x1+1x0 e assim por diante...
s ( x) = v( x) / g ( x) = x 6 + x 4 + x 3 + x 2 + x / x 3 + x 2 + 1 = x
v( x) + s ( x) = c( x)
c( x) = x 6 + x 4 + x 3 + x 2

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).

Encontramos o valor da sndrome que queramos, assim sabemos


que a sndrome x + 1 se refere a erros no bit x5. Vamos continuar fazendo os
clculos para poder preencher nossa tabela de sndromes.

Se e(x)=x6 temos que s(x) = x2 + x (quociente x3 + x2 + x).

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.

S sabemos que o polinmio gerador deve atender (1). Assim, este


tem que ser um divisor de x7-1.

x 7 1 = x 7 + 1 = ( x + 1)( x 3 + x + 1)( x 3 + x 2 + 1) = g ( x)h( x)


como deg[ g ( x)] = r = 3 podemos escolher como g(x) qualquer termo
em que aparea x3. Assim, escolhemos:
g ( x) = x 3 + x 2 + 1
h( x) = ( x + 1)( x 3 + x + 1)

Para construirmos nossa tabela de mensagens e cdigos


lembraremos da frmula:
c( x) = [ x 3 m( x)] / g ( x) + x 3 m( x)



Bits de Redundncia Informao

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

Alguns Cdigos Cclicos Padres


Os cdigos aqui representados estaro utilizando o formato octal
para apresentar formas mais simplificadas conforme o exemplo abaixo:

x4 + x +1
0 x 5 + 1x 4 + 0 x 3 + 0 x 2 + 1x + 1x 0
010
N 011 N
2 3

Assim, no formato octal, x 4 + x + 1 = 23

Cdigos para correo de erros em salva


Em algumas aplicaes, erros do canal tendem a ocorrer em salvas
ao invs de individualmente, por exemplo, em sistemas de discos magnticos e
pticos, em canais telefnicos e at em sistemas de telefonia mvel.
O comprimento de salva de um polinmio erro e(x) definido como o
nmero de bits do termo do primeiro erro at o ltimo termo do erro, inclusive.
Por exemplo:

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

CRC (Cyclic Redundancy Check)


Existem polinmios padronizados para uso em aplicaes CRC:

n mximo grau g(x) nome


1023 24 140050401 CRC-24
1023 32 50020114342 CRC-32A
2047 12 14017 CRC-12
16383 16 320227 CRC-SDLC
32767 16 300005 CRC-ANSI

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.

Letra Nmero Nmero + k Nova Letra


A 0 16 Q
B 1 17 R
C 2 18 S
D 3 19 T
E 4 20 U
F 5 21 V
G 6 22 W
H 7 23 X
I 8 24 Y
J 9 25 Z
K 10 0 A
L 11 1 B
M 12 2 C
N 13 3 D
O 14 4 E
P 15 5 F
Q 16 6 G
R 17 7 H
S 18 8 I
T 19 9 J
U 20 10 K
V 21 11 L
W 22 12 M
X 23 13 N
Y 24 14 O
Z 25 15 P

Temos y = CUKSQSXEHHEJUCFKBNQI

Desvantagem: Espao de Chaves muito pequeno (fcil decifrao).

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.

Letra Nmero k Nmero + k Nova Letra


M 12 18 5 E
E 4 8 12 M
U 20 13 8 H
C 2 19 21 V
A 0 14 14 O
C 2 12 14 O
H 7 0 7 H
O 14 18 7 G
R 17 8 25 Z
R 17 13 5 E
O 14 19 8 H
T 15 14 4 D
E 4 12 16 Q
M 12 0 12 M
P 15 18 8 H
U 20 8 3 C
L 11 13 24 Y
G 6 19 25 Z
A 0 14 14 O
S 18 12 5 E

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

A matriz de permutao chamada de caixa-P.

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

No linear. Caixas-S. Curiosidade: a mensagem est em ordem


alfabtica e o cdigo est na ordem que as letras aparecem no teclado do
computador (lembra do ASDFG?). Curiosidade 2: As cifras de permutao e de
substituio so a base da criptografia moderna. Curiosidade 3: A cifra de
substituio a nica cifra no-linear apresentada at agora.

Material elaborado por Eduardo Wolsky e digitado por Rafael Oliveira em 03/07/2003

S-ar putea să vă placă și