Vous êtes sur la page 1sur 8

Criptograa

Pedro Quaresma Departamento de Matemtica, Universidade de Coimbra a 3001-454 COIMBRA, PORTUGAL pedro@mat.uc.pt Elsa Lopes Ncleo de Estgio Pedaggico u a o Lic. Matemtica, F.C.T.U.C. a Escola B. 2, 3 c/ Sec. Jos Falco, Miranda do Corvo e a elsalopes80@sapo.pt

Introduo ca

A necessidade de proteger os canais de comunicao entre pessoas de uma mesma comuca nidade vem desde os primrdios da civilizao, a ideia de no s proteger os meios de o ca a o comunicao mas tambm de proteger o prprio contedo da mensagem, atravs da cica e o u e frao da mensagem tambm muito antiga. O Imperador Romano Jlio Csar (100 ca e e u e 44 a.C.) desenvolveu uma cifra simples para poder comunicar com os seus Generais: na mensagem original cada letra deslocada trs posies para a direita, considerando-se e e co que o alfabeto se fecha sobre si prprio, isto , que aps a ultima letra vem a primeira; o o e o receptor da mensagem s tem que deslocar cada letra trs posies para a esquerda para o e co obter a mensagem original. A cifrao de mensagens foi-se tornando um processo cada vez mais sosticado, pasca sando pelas mquinas Enigma [3] usadas pelo exrcito alemo aquando da Segunda Guerra a e a Mundial, at aos nossos dias com as transaces electrnicas na Internet. Na actual Sociee co o dade da Informao, em que cada vez mais as pessoas comunicam atravs da Internet, um ca e meio de comunicao muito exposto, a importncia da criptograa enorme, s atravs da ca a e o e cifrao das comunicaes que podemos garantir a condencialidade da informao que ca co e ca queremos transmitir.

O Surgimento da Criptograa

O surgimento da criptograa (do Grego: krypts, oculto + graph, r. de graphein, escrever) o deve ter sido quase que simultneo com o da escrita [7]. Os Espartanos, em 400 a.C., a desenvolveram um sistema muito curioso, num basto enrolava-se uma tira de couro, aps a o isso escrevia-se a mensagem na tira de couro, o acto de desenrolar a tira do basto cifrava a a mensagem, a qual s podia ser decifrada tornando a enrolar a tira num basto de dimetro o a a semelhante.

Em contraponto com este mtodo puramente mecnico a cifra de Jlio Csar implicava e a u e um algoritmo de cifrao. Um sistema criptogrco ento um conjunto de tcnicas que ca a e a e nos permitem tornar incompreens uma dada mensagem, de modo que s o verdadeiro vel o destinatrio da mesma a consiga decifrar, obtendo dessa forma o texto original. a

2.1

Sistemas Criptogrcos Simtricos a e

Os primeiros sistemas criptogrcos inventados eram do tipo criptograa simtrica, ou de a e chave secreta. Sistemas em que existe uma s chave de cifrao, e em que os processos de o ca cifrao e de decifrao so simtricos1 . ca ca a e

No caso do algoritmo de Jlio Csar estamos perante um algoritmo mono-alfabtico u e e aditivo, isto , no processo de cifrao s utilizado um alfabeto, e basta somar ou subtrair e ca o e trs ao cdigo numrico de cada letra do alfabeto. e o e Qual ser o signicado da frase? a D FKDYH WHP GH VHU PDQWLGD VHFUHWD Embora se possam desenvolver sistemas mais sosticados, nomeadamente os mtodos e poli-alfabticos multiplicativos [6] este tipo de sistema tem sempre dois problemas de base e que limitam a sua capacidade de proteger a informao: ca a chave de cifrao tem de ser do conhecimento de toda a organizao amiga , e ca ca tem de ser mantida secreta de todas as organizaes inimigas. Quanto maior for a co complexidade da organizao amiga mais dif de vericar esta condio; ca cil e ca
1 Esta imagem e a seguinte (os quais foram por ns modicadas) foram retiradas do texto (dispon na o vel Internet), Francisco Gomes Milagres, Segurana da Informaao: Estratgias para Neutralizar o Inimigo , c c e Universidade do Estado de Minas Gerais, Faculdade de Informtica de Passos, 21 de Maio de 2003. a

a despeito de algoritmos mais sosticados, o estudo das l nguas naturais, a sua construo frsica, a frequncia relativa das diferentes letras do alfabeto, entre outras ca a e caracter sticas, permitem obter muita informao que pode depois ser usada para ca quebrar o cdigo de cifrao. o ca

2.2

Sistemas Criptogrcos Assimtricos a e

Surgem ento em cena os sistemas de criptograa assimtrica ou de chave pblica. Sistemas a e u em que o processo de cifrao usa uma chave pblica, mas em que o processo de decifrao ca u ca usa uma chave diferente, dita chave privada.

Este tipo de sistema resolve os dois problemas acima expostos: a chave privada do conhecimento de uma unica entidade, o receptor da mensagem, e mant-la secreta assim muito mais fcil. e e a os algoritmos desenvolvidos so bastante mais complicados de quebrar do que os a anteriores. No que se segue vamos descrever um dos algoritmos actualmente usados. Esperamos conseguir convencer o leitor da maior diculdade existente em quebrar um cdigo deste o tipo quando em contraponto com os anteriores mtodos. Queremos no entanto referir dois e pontos: primeiro que as implementaes apresentadas usam estruturas de dados simples, co comummente encontradas nas linguagens de programao, o que leva a que no seja poss ca a vel dicultar muito a tarefa do inimigo ; por outro lado no exemplo que iremos apresentar mais ` frente a cifrao feita carcter a carcter o que no o caso das implementaes a ca e a a a e co em uso na Internet as quais usam blocos de caracteres como forma de evitar o estudo lingu stico da mensagem cifrada.

O Algoritmo RSA

Um sistema assimtrico muito usado na actualidade o assim designado sistema de cripe e tograa RSA [2, 4], o qual obtm o seu nome das iniciais dos seus trs autores. Vamos de e e seguida descrev-lo, apresentando tambm uma sua implementao desenvolvida no sistema e e ca de programao numrica Octave2 . ca e
Octave, www.octave.org, um sistema de programaao numrica de distribuiao gratuita, compat e c e c vel com o MatLab.
2

Num sistema de criptograa assimtrica ento necessrio possuir programas para: e e a a gerar as chaves pblica e privada (secreta), Cp e Cs ; u cifrar as mensagens ACp : M ACp (M ); decifrar as mensagens ACs : M ACs (M ); Para que estejamos perante um sistema de criptograa e no perante um simples sistema a de baralhao de mensagens, os programas de cifrao e decifrao tm de ser funes ca ca ca e co inversas, isto , tem-se de vericar que: e ACs (ACp (M )) = M ACp (ACs (M )) = M

O sistema RSA vai usar resultados conhecidos da Teoria dos Nmeros para poder asu segurar uma grande segurana no processo de decifrao, no ser de estranhar portanto c ca a a que surja a necessidade de trabalhar com nmeros primos. u

3.1

Gerao das Chaves ca

As chaves pblica e privada vo ser constitu u a das, cada uma delas, por um par de nmeros u inteiros, os quais vo depois constituir o mago dos processos de cifrao e decifrao. a a ca ca Comea-se por escolher dois nmeros primos p e q, deles obtm-se n = pq. c u e De seguida determina-se a funo de Euler para n, (n) d-nos o nmero de naturais ca a u inferiores ou iguais a n e que so primos com n. A funo de Euler uma funo de inteiros a ca e ca em inteiros que, entre outras, tem as seguintes propriedades [2]. Teorema 1 Se m e n forem dois nmeros naturais, primos entre si, tem-se que (mn) = u (m)(n). Teorema 2 Um nmero natural p primo se e s se (p) = p 1. u e o Temos ento que (n) = (p)(q) = (p 1)(q 1), ou seja o clculo de (n) , dado a a a e escolha de p e q, muito fcil de efectuar. a O prximo passo o de escolher um natural e, tal que, 1 < e < (n) e que seja primo o e relativo com (n). O par (e, n) a chave pblica do cdigo RSA. e u o Finalmente determina-se um natural d que seja o inverso multiplicativo de e, mdulo o (n), ou seja deve-se vericar a seguinte igualdade d e = 1(mod (n)). O par (d, n) a e chave privada do cdigo RSA. o A obteno dos nmeros primos p e q pode ser feita recorrendo a um dos muitos algoca u ritmos para a obteno de nmeros primos, por exemplo o Crivo de Eratstenes [5, pag. ca u o 278]. O algoritmo para a criao das chaves o seguinte: ca e ##Determina~o das Chaves Pblica e Privada: ca u ## ## -> p,q dois nmeros primos. u 4

## <- (e,n) e (d,n), as chaves pblicas e privadas. u function chaves(p, q) n = p*q; fi = (p-1)*(q-1); e = 2; k = 0; do e = e+1; until (gcd(fi,e) == 1) achou = false; while (!achou) d = (1 + (k * fi))/e; if ( d == round(d)) achou = true; else k = k+1; endif endwhile printf("\n A chave pblica (%d, %d). \n", e, n); u e printf("\n A chave privada (%d, %d). \n \n", d, n); e endfunction Para os valores de p = 11 e q = 23 ter-se-ia: octave> chaves(11,23)

A chave pblica (3, 253). u e A chave privada (147, 253). e O Algoritmo de cifrao RSA : ca e C = ACp (M ) = M e (mod n) e o algoritmo de decifrao : ca e M = ACs (C) = C d (mod n) Em Octave temos: ##Cifrar a Mensagem Digital Original: ## ## -> (e,n), chave pblica u ## m, mensagem a cifrar (vector de inteiros) ## <- x, mensagem cifrada (vector de inteiros) function x=cifrar(e, n, m) 5

t=columns(m); for i=1:t x(i) = mod((m(i))^e, n); endfor endfunction ##Decifrar a Mensagem Cifrada: ## ## -> (d,n), chave pblica u ## c, mensagem a decifrar (vector de inteiros) ## <- modl, mensagem decifrada (vector de inteiros) function modl = decifrar(d, n, c) t=columns(c); for i=1:t modl(i) = 1; j=1; while (j <= d) modl(i) = mod((c(i))*modl(i), n); j = j+1; endwhile endfor endfunction Sendo que nesta nossa implementao simplicada do algoritmo RSA a mensagem ca e primeiro convertida de um vector de caracteres num vector de naturais, de seguida cifrada, depois decifrada e nalmente convertida de novo num vector de caracteres3 .

3.2

Validao do Sistema RSA ca

Como j dissemos antes necessrio vericar se estamos perante um sistema de criptograa a e a vlido, isto , temos que vericar que [2]: a e ACs (ACp (M )) = ACp (ACs (M )) = M ed (mod n) Para o desenvolvimento da demonstrao so necessrios alguns resultados auxiliares. ca a a Denio 1 (Congruncia mdulo n) Sejam n N e a, b Z, ento a e b dizem-se ca e o a congruentes mdulo n se tiverem o mesmo resto na diviso por n, denota-se tal facto por o a a b(mod n). Decorre da denio que se a b(mod n) ento a = b + kn, para um dado k Z. ca a Teorema 3 (Teorema de Euler) Sejam a Z e n N. Se mdc(a, n) = 1, ento a a(n) 1(mod n).
O programa Octave contendo todas as funoes referidas no texto pode ser obtido em c http://www.mat.uc.pt/~pedro/cientificos/Cripto/
3

Teorema 4 (Pequeno Teorema de Fermat) Se n um nmero primo, ento an1 e u a 1(mod n), para todo o a Z tal que mdc(a, n) = 1 Teorema 5 (Sistema de Criptograa RSA) Sendo (e, n) e (d, n) as chaves pblica e u privada respectivamente do Sistema de Criptograa RSA verica-se ento que: a (me )d (mod n) = m para qualquer inteiro m, com 0 m < n. Demonstrao ca Da denio de e e d tira-se que ed 1(mod (n)) existe ento um k Z tal que ca a ed = 1 + k(n), ou seja: ed = 1 + k(p 1)(q 1), k Z donde (me )d = med = m1+k(p1)(q1) = m(m(p1)(q1) )k segue-se que (me )d m(m(p1) )(q1)k m(mod p) Se p no um divisor de m esta congruncia uma consequncia do Pequeno Teorema a e e e e de Fermat. Caso contrrio a assero trivial dado que ambos os membros da equao so a ca e ca a congruentes com 0 mod p. De forma anloga ter-se-ia que: a (me )d m(mod q) Dado que p e q so nmeros primos distintos e dado que se assume que 0 m < n, a u obtm-se e (me )d m(mod n) 2

3.3

Como Quebrar o Cdigo RSA o

Por quebrar um cdigo entende-se o acto de conseguir decifrar a mensagem sem que se tenha o um prvio conhecimento da chave secreta. Para quebrar o cdigo RSA basta descobrir o e o d, o qual pode ser obtido de e, de p e de q. O e pertence ` chave pblica, o p, e o q so a u a factores primos de n, o qual o outro elemento da chave pblica. Ou seja para quebrar e u um sistema deste tipo basta factorizar n. O problema reside ento na factorizao em nmeros primos de um dado nmero natural a ca u u n. Para valores de n sucientemente grandes esta tarefa impraticvel, mas isso tema e a e para outro artigo, at l deixamos ao leitor da Gazeta de Matemtica algumas pistas [1, 2, 7] e a a e um pequeno desao.

359394 185904 0 231105 382481 474195 382481 10935 75745 382481 185904 0 201637 382481 302441 522545 270765 382481 185904 0 185904 382481 265174 79985 0 365807 292080 66056 261188 75745 382481 371293 60839 185904 185904 265174 185904 0 90175 75745 75745 382481 185904 270765 522545 10935 66056 474195

sabendo que se usaram os algoritmos descritos acima, com uma cifrao letra a letra (caca racteres ASCII entre e que correspondem a, =0, !=1,. . . ), e a nossa chave pblica u (5, 561971). e

Referncias e
[1] D. Atkins, M. Gra, A. Lenstra, e P. Leyland. The magic words are squeamish ossifrage. In ASIACRYPT 1994, pages 263277, 1994. [2] Johannes Buchmann. Introduction to Cryptography. Springer-Verlag, New York, 2000. [3] Antnio Machiavelo. O que vem ` rede . . . . Gazeta de Matemtica, (147):1415, Julho o a a 2004. [4] R. Rivest, A. Shamir, e L. Adleman. A method for obtaining digital signatures and public-key cryptosystems. Communications of the ACM, 21(2):120126, 1978. [5] Pimenta Rodrigues, Pedro Pereira, e Manuela Sousa. Programao em C++. FCA, ca Editora de Informtica LDA, 2 edition, 1998. a [6] Abraham Sinkov. Elementary Cryptanalysis, a mathematical approach. The Mathematical Association of America, 1966. [7] Richard Spillman. Classical and Contemporary Cryptology. Prentice Hall, 2005.

Vous aimerez peut-être aussi