Você está na página 1de 9

Mantendo Segredos com a ajuda da Matemtica a

Hemar Godinho Departamento de Matemtica - UnB a 21 de outubro de 2002


Vamos imaginar que dois colegas de uma turma estejam planejando uma festa surpresa. O sucesso desta festa estar baseado na capacidade deles de a manter tudo em segredo, ou seja, eles precisam estar seguros de que ningum e mais da turma ter acesso as mensagens por eles trocadas. Esta situao to a ca a simples na verdade pode ser vista em ambientes dos mais diversos, com por exemplo quando utilizamos o carto de crdito, enviamos correio eletrnico, a e o utilizamos computadores para operaoes bancrias. Em todos estes casos c a queremos estar seguros de que ningum, alm do endereado, tenha acesso ao e e c contedo da mensagem. Esta a rea de estudos da Criptograa, que busca u e a criar sistemas que garantam que as mensagens enviadas estejam protegidas contra fontes no autorizadas. a Os elementos bsicos em um sistema criptogrco so: a a a
T

C f f 1

: : : :

Mensagem original (texto) Mensagem codicada Funao de codicao c ca Funao de decodicao c ca

e este sistema pode ser representado pelo seguinte esquema: T C T.


Palestra apresentada na I Bienal da SBM, ocorrida em Belo Horizonte-MG, entre 14 e 18 de outubro de 2002.

f 1

Um sistema ser considerado bom se a funo f for fcilde ser aplicada, a ca a 1 mas f for muito dicil de ser determinada. A seguir ilustraremos estas idias com alguns exemplos de sistemas criptogrcos. e a

O Criptograma de Julio Csar e


Conta a histria que este era o sistema criptogrco utilizado pelos roo a manos, para o envio de mensagens secretas. Este sistema consiste basicamente na substituio de letras utilizando uma tabela como esta abaixo: ca

A D

B E

C F P S

D E G H Q T R U

F I

G J

H K U X

I L

J M

K N X A

L M O P Y B Z C

N O Q R

S T V W

V W Y Z

Assim se queremos codicar a mensagem BIENAL, utilizando a tabela acima chegaremos na mensagem codicada ELHQDO. Exemplo 1 Decifre a mensagem abaixo, sabendo que para codicar esta mensagem foi utilizado o Criptograma de Csar dado pela tabela acima e

HXDPRPDWHPDWLFD
Uma caracter stica importante deste criptosistema que aps a 26a. letra, e o ou seja Z, retornamos ` primeira letra A. Assim determinamos um ciclo. a Todo este processo de codicaao pode ser completamente descrito matemc aticamente, utilizando um novo conceito de operao nos nmeros inteiros, ca u chamada de operao mdulo m, que passamos a descrever a seguir. ca o Dados nmeros inteiros a, b Z e um nmero natural m N, diremos u u que a congruente a b mdulo m, e escreveremos e o a b (mod m), se m dividir (a b), ou seja, se existir um q Z tal que (a b) = mq (diviso a exata). Vejamos alguns exemplos. Exemplo 2 (a) 23 3 (mod 5)

(b) 8 12 (mod 20) (c) a 0 (mod 2) se a par e 1 (mod 2) se a impar e

Quando dividimos dois nmeros inteiros a, m, o fazemos seguindo um u algoritmo, at obter algo do tipo e a
resto

| m
quociente

ou seja, a = m.q + r onde q o quociente e r o resto da diviso. Um e e a fato muito importante que sempre podemos escolher r, com 0 r < m. e Portanto sempre temos que a r (mod m). Assim vericamos que todo inteiro a congruente mdulo m a um dos nmeros do conjunto e o u
Zm := {0, 1, 2, . . . , m 1}.

Agora observe que se denotamos por a = {b Z | a b (mod m)}, logo temos que Z = 0 1 (m-2) (m-1). Alm disso temos que b a se, e somente se, m divide (b-a). Ou seja, se e b a = mq, o que nos d que b = mq + a. Portanto temos que a 0 1 2 = = = . . . {b Z | b = mq + 0, para qualquer q Z} {b Z | b = mq + 1, para qualquer q Z} {b Z | b = mq + 2, para qualquer q Z} {b Z | b = mq + (m-1), para qualquer q Z}

m-1 =

Voltando ao exemplo do Criptosistema de Csar, vamos identicar letras e com nmeros conforme abaixo u 0 A 13 N 1 2 B C 14 15 O P 3 4 5 D E F 16 17 18 Q R S 6 7 G H 19 20 T U 8 9 I J 21 22 V W 10 11 K L 23 24 X Y 12 M 25 Z

Observe que nosso alfabetoagora o conjunto {0, 1, 2, . . . , 24, 25}, que so e a os poss veis restos da diviso por m=26. E agora podemos facilmente descra ever o criptograma de Cesar como C = f (T ) T + 3 (mod 26) () T = f 1 (C) C 3 (mod 26)

O Criptograma de Blaise de Vigen`re e


Em 1586, o diplomata francs da corte de Henrique III de Frana, Blaise e c de Vigen`re (1523-1596), publicou um livro chamado de Um tratado sobre e a Escrita Secreta, onde apresentou seu sistema criptogrco. Este sistema a utiliza uma palavra-chave para a codicao e decodicao, o que torna o ca ca sistema bem mais dicil de ser quebrado. Vamos codicar a frase ENCONTRAR DOMINGO, utilizando a palavra chave SBM, fazendo uso da tabela de correspondncia entre letras e nmeros e u apresentadas anteriormente. 4 E S 18 22 W 13 2 N C B M 1 12 14 14 O O 14 13 O N S B 18 1 6 14 G O 19 17 T R M S 12 18 5 9 F J 0 17 A R B M 1 12 1 3 B D 3 14 D O S B 18 1 21 15 V P 12 8 M I M S 12 18 24 0 Y A 13 6 14 N G O B M S 1 12 18 14 18 6 O S G

Assim a mensagem cdigo enviada ser: WOOGOFJBDVPYAOSG o a

O Criptograma de Chave Pblica RSA u


Um criptosistema de Chave pblica tem por princ u pio fundamental que o conhecimento da funao codicadora ( que pode ser um processo, um alc goritmo, etc) no permite, computacionalmente falando, a determinaao da a c funao decodicadora. O nome Chave Pblica se deve ao fato de que a chave c u codicadora necessria para o envio da mensagem pode ser de conhecimento a geral, e mesmo assim continua imposs para qualquer agente no autorvel a izado ter acesso ` mensagem original. Cada usurio do sistema torna pblica a a u sua chave codicadora, permitindo assim que qualquer outro usurio possa a

lhe enviar uma mensagem. Mas como somente ele tem a chave decodicadora, a privacidade da comunicao estar mantida. ca a Uma das questes mais importantes em criptograa a autenticaao de o e c uma mensagem. Como ter certeza que a mensagem recebida realmente vem da pessoa que a assinou? Se um banco recebe uma mensagem de um cliente pedindo para transferir todos os seus recursos para uma outra conta, como ter certeza de que realmente a ordem veio deste cliente e no de um impostor? a No sistema de chave pblica existe uma maneira fcil de fazer a autenticaao u a c de uma mensagem. Vamos dizer que A e B sejam usurios de um sistema. a Vamos denotar por fA e fB as funoes de codicao de A e B respectivac ca mente. Vamos supor que a assinatura eletrnica de A seja P . Observe que o no suciente que A envie para B sua assinatura na forma fB (P ), tendo a e em vista que todos conhecem a chave pblica fB de B, assim qualquer um u poderia enviar para B a mensagem fB (P ). Assim a soluao seria para A c 1 enviar a mensagem fB fA (P ). Assim quando B aplicar a funo fB (que ca 1 somente ele conhece) ao texto recebido, tudo ser decodicado, exceto o pea 1 queno texto fA (P ). Como B sabe que a mensagem supostamente de A, ele e poder aplicar a chave pblica de A, ou seja fA a este texto, reconhecendo a a u 1 assinatura P de A. Como somente A possui fA , isto deixa B com a certeza que somente A poderia ter enviado esta mensagem. O criptosistema de chave pblica mais famoso foi proposto por Rivest, u Shamir e Adleman (RSA) em 1978. E baseado na diculdade de se fatorar e um nmero natural. u

Descrio do mtodo RSA: ca e


gitos) e calcule 1. Escolha dois primos p e q grandes (com mais de 100 d n = pq . O nmero a seguir um primo com 300 d u e gitos p = 2039568783564019774057658669290345772801939933143482630 9477264645328306272270127763293661606314408817331237288 2677123879538709400158306567338328279154499698366071906 7664400370742171178056908727928481491120222863321448761 8337632651208357482164793399296124991731983621930427428 0243803104015000563790123 2. Determine = (p 1)(q 1) = n + 1 p q. 3. Escolha r N tal que r e mdc(r, ) = 1.

4. Determine w N tal que rw 1

(mod )

Ento chave pblica ser o par : (n, r) e a chave secreta ser o par (n, w). a u a a Agora se queremos codicar uma mensagem faremos C = F (T ) T r (mod n) e para decodicar T = f 1 (C) C w (mod n) Exemplo 3 Vamos tomar os primos p = 11 e q = 7. Logo n = pq = 77 e = (p 1)(q 1) = 60. Como 60 = 22 3 5, vamos escolher r = 17, que podemos facilmente vericar ser co-primo com 60. De fato, vamos explicitamente calcular o mdc(17,60), utilizando o algoritmo de divises sucessivas: o

60 9

3 17 8

1 9 1

1 8 8 1 0

Reescrevendo estes clculos teremos: a 60= 3 17 + 9 17= 9+8 9= 8+1 Substituindo (1) em (2), teremos 8 = 17 (60 (3 17)) = 4 17 60. Substituindo agora (1) e (4) em (3), poderemos escrever 1 = 2 60 + (7) 17. Portanto temos que 1 (7) 17 = 2 60, ou seja, 60 divide 1 (7) 17, logo 17 (7) 1 (mod 60). Assim determinamos que w = 7 uma e soluo para ca 17w 1 (mod 60). Mas como o w que devemos escolher deve pertencer a N, somente precisamos observar que se 7 soluo, ento 53 = 60 7 tambm soluo, pois e ca a e e ca 1 (60 7) 17 = 1 (7) 17 60 17 = 2 60 17 60 = (15) 60. (4) = = = 9= 60-(3 17) (1) 8= 17-9 (2) 1= 9-8 (3)

Assim 60 tambm divide 1 (60 7) 17, ou seja, 60 divide 1 53 17, o e que nos d a 17 53 1 (mod 60), Portanto podemos tomar w = 53. Ento se desejamos codicar uma mensagem devemos utilizar a funo a ca C = f (T ) T 17 (mod 77),

e para decodicar essa mensagem utilizamos T = f 1 (C) C 53 (mod 77).

Quebra de Cdigo o
Ns utilizamos a critpograa pois queremos evitar que outros leiam noso sas mensagens. Mas existem casos quando a quebra de um cdigo pode o ter um bom objetivo. Imagine que a pol cia esta seguindo um grupo de sequestradores, e estes se comuniquem utilizando um sistema criptogrco, a ento seria do maior interesse que o servio de inteligncia da pol cona c e cia seguisse quebrar este cdigo. Se desejamos quebrar um cdigo precisamos o o ter uma idia de qual sistema criptogrco foi utilizado e paralelamente a e a isto fazer uma anlise de frequncia das letras que ocorrem na mensagem a e codicada que foi interceptada. vamos supor que a mensagem apresentada no exemplo acima tenha sido interceptada, ou seja, captamos a mensagem HXDPRPDWHPDWLFD. Esta mensagem apresenta quatro ocorrncias da e letra D. Supondo que esta mensagem esteja em portugus, sabemos que as e letras que mais aparecem em qualquer palavra em portugus so as vogais, e a e dentre as vogais a letra A aparece em geral com maior frequncia. Assim e uma boa tentativa seria imaginar que a letra D na mensagem codicada corresponderia a um A na mensagem original. Como D corresponde ao nmero u 3 e A corresponde ao 0, nossa tentativa nos levaria a funao decodicadora c T C 3 (mod 26), que corresponde exatamente a funao decodicadora c do Criptograma de Jlio Csar (ver (*)). Poder u e amos com um pouco mais de esforo repetir esta anlise para quebrar um criptosistema do tipo de Vic a gen`re. Mas para isto ter e amos que estudar a mensagem recebida para tentar conseguir alguma indicao do comprimento da palavra chave utilizada ca (nmero de letras). Vamos supor que nosso palpiteseja que a palavra chave u tenha 5 letras. Ento dividir a amos a mensagem em grupos de 5 letras e ento a

repetir amos a anlise de frequncia em todas as primeiras letras, depois em a e todas as segundas letras e assim por diante. A diculdade em se quebrar um sistema do tipo RSA consiste na impossibilidade computacional que temos hoje de fatorar grandes nmeros naturais. u Mesmo conhecendo o nmero n, se este for grande o suciente, poderia levar u anospara os computadores atuais fatorarem n, ou seja, escrever n = pq. Pois precisamos determinar p e q para poder encontrar e s ento encontrar o a a chave decodicadora (n, w). A seguir apresentamos ums lista dos primeiros nmeros primos para que u os leitores possam fazer suas experincias com o mtodo RSA. Bom divertie e mento! Lista dos primeiros n meros primos u 2 37 83 139 197 263 331 397 461 541 607 673 751 827 907 983 1051 1123 3 41 89 149 199 269 337 401 463 547 613 677 757 829 911 991 1061 1129 5 7 43 47 97 101 151 157 211 223 271 277 347 349 409 419 467 479 557 563 617 619 683 691 761 769 839 853 919 929 997 1009 1063 1069 1151 1153 11 53 103 163 227 281 353 421 487 569 631 701 773 857 937 1013 1087 1163 13 59 107 167 229 283 359 431 491 571 641 709 787 859 941 1019 1091 1171 17 19 61 67 109 113 173 179 233 239 293 307 367 373 433 439 499 503 577 587 643 647 719 727 797 809 863 877 947 953 1021 1031 1093 1097 1181 1187 23 71 127 181 241 311 379 443 509 593 653 733 811 881 967 1033 1103 1193 29 31 73 79 131 137 191 193 251 257 313 317 383 389 449 457 521 523 599 601 659 661 739 743 821 823 883 887 971 977 1039 1049 1109 1117 1201 1213

ALGUMAS REFERENCIAS 1. Kahn, David. The Codebreakers. The Macmillan Company. New York, 1967

2. Koblitz, N. A Course in Number Theory and Criptography. SpringerVerlag, 1987. u 3. Shokranian, S., Soares, M., Godinho, H. Teoria dos Nmeros. Editora UnB, (1994). 4. PET/UnB(1/98). Corpos Finitos: Teoria e Aplicaes. Trabalhos co de Graduaao em Matemtica no.1/98. c a

Você também pode gostar