Você está na página 1de 19

UM ESTUDO DO SISTEMA CRIPTOGRFICO RSA

Trabalho de Concluso do Curso


Universidade Catlica de Brasilia
Departamento de Matemtica

Autor: Eduardo Augusto Moraes Silva


Orientador: Sinval Braga de Freitas
RESUMO
Este artigo foi desenvolvido aps um estudo histrico de como a criptografia evoluiu, passando por vrias
sociedades em distintas pocas. Citando estudiosos e inventores, viajamos nesta arte de esconder mensagens.
Aps esta pesquisa histrica, escolhemos um tema para ser estudado mais detalhadamente. Este tema foi o
algoritmo RSA de criptografia. Estudamos todos os passos da codificao e decodificao para podermos
desenvolver e implementar um algoritmo, com base no RSA, para criptografar dados.

1. INTRODUO
A maioria dos formandos em Licenciatura Matemtica no sabe como e onde podem ser
aplicados os estudos que so desenvolvidos na universidade. Isso foi algo que me fez
questionar os contedos trabalhados durante todo meu curso de graduao. Ento resolvi fazer
um estudo de como ela importante nos diversos ramos do conhecimento humano.
Pesquisei sobre vrias aplicaes da Matemtica em diversas reas da cincia como Biologia,
Qumica, Fsica, Computao e outras. Esta ltima, Computao, foi a que mais me chamou a
ateno, pois o tpico que escolhi para estudar, envolve uma das ramificaes da Matemtica
com a qual mais me identifiquei, a Teoria dos Nmeros.
Assim pude perceber que os anos passados na universidade podem ser empregados em
alguma parte da cincia humana muito importante para o homem. Mais precisamente no meu
objeto de estudo o qual o Sistema Criptogrfico RSA.
A criptografia, que tem seus termos em grego cripto que significa secreto, e graphos que
quer dizer escrita, estuda e desenvolve processos que cifram dados de maneira que somente os
legtimos receptores das informaes possuem os mtodos necessrios para desvendar a
mensagem escondida.
A diversidade dos meios de comunicao, a rapidez e a quantidade de informaes
(transferncias bancarias, cartas de instrues para compra e venda de aes nas bolsas de
valores informaes diplomticas, relatrios industriais...) que correm o mundo mudando
opinies e aes de acordo com as notcias que trazem, exigiram que se desenvolvessem
mtodos confiveis de codificao de mensagens. E o sistema RSA um deles.
2. HISTORIA DA CRIPTOGRAFIA
A necessidade de ocultar informaes no se deve somente as tecnologias desenvolvidas pelo
homem. O homem sempre precisou esconder seus dados, suas estratgias de exrcitos rivais,
ladres, entre outros inimigos. Ento se v que a criptografia uma cincia, quase uma arte,
que nasceu quase junto com a escrita e a milhares de anos auxilia o homem em suas
conquistas.

Conhecer a historia da criptografia viajar no vasto campo da criatividade humana,


descobrindo os mtodos criados e desenvolvidos por diversas sociedades para esconder suas
informaes. Do Oriente ao Ocidente, sabendo quais foram os grandes nomes dessa arte.
Sua primeira apario data de 1900 a.C. numa vila prxima ao rio Nilo (Egito), chamada
Manet Khufu. Khnumhotep II era um dos arquitetos do fara desta vila. Depois de conceber
algumas construes, as quais precisavam ser documentadas, e seus contedos no podiam
cair em mos erradas, ele trocou algumas palavras e at trechos destes documentos para que
suas informaes no fossem encontradas por ladres ou inimigos do Fara.
Uma contribuio muito significativa foi o Livro de Jeremias, escrito pelos Hebreus.
Usando uma substituio simples pelo alfabeto reverso (o alfabeto invertido de modo que no
lugar do a esteja o z, b esteja o y, e assim sucessivamente). As cifras hebraicas mais
conhecidas so o Atabesh, o Albam e o Atbah, as quais eram usadas principalmente em textos
religiosos, e datam de 600 a 500 a.C..
Em 487 a.C. o escritor grego Tucdides descreve o dispositivo de codificao de transposio
mais antigo e talvez o primeiro mecanismo criptogrfico militar. Este mecanismo chamado
Bastes Licurgo consistia em dois bastes do mesmo tamanho e dimetro. Um basto era
entregue ao remetente da mensagem e outro ao destinatrio. O primeiro enrola uma tira de
couro em seu basto, e escreve suas informaes ao longo do basto, depois ele desenrola a
tira de couro do basto, assim as letras escritas nesta tira se transformam em um monte de
letras, umas escritas embaixo das outras, sem sentidos. O destinatrio enrola a tira em seu
basto e visualiza a mensagem.
Durante a Idade Mdia, a Europa viveu um processo de involuo cientifica e na criptografia
no foi diferente. Com a Europa passando pelo perodo das trevas, a contribuio rabe
Islmica foi a mais significativa. Destaque para Al-Kindi, que escreveu um livro sobre
decodificao de mensagens cifradas, fazendo anlise de freqncia, este sendo o mais antigo
sobre criptologia, (cincia que estuda as maneiras de ocultar e desvendar mensagens). Outro
nome importante foi Ibn Dunainir, que escreveu o livro Explicaes Claras para a Soluo de
Mensagens Secretas que contm cifras algbricas. Uma grande inovao, substituindo letras
por nmeros.
Depois da Idade Mdia, o perodo da Renascena foi uma poca de surgimento de novas
idias e invenes e a criptologia pegou carona nesta nova fase da sociedade Europia onde
Leon Battista Alberti, Franois Viete e outros colocaram seus nomes em destaque nesta nova
cincia.
Alberti foi o inventor de um disco de cifragem implantando a primeira cifra poli alfabtica,
que dizem no foi quebrada at os anos 1800. Ele prope dois ou mais alfabetos desordenados
e alternados durante uma cifragem a fim de escapar de uma analise de freqncia dos
criptanalistas potencias.
Girolano Cardano foi o inventor de um sistema Criptogrfico com autochave, a Grelha de
Cardano. Esse sistema baseava-se da seguinte forma: o remetente pega um grelha e coloca
encima da folha onde iria ser escrita a mensagem. Essa grelha contm alguns espaos em
aberto da altura de das linhas, onde so escritas as letras da mensagem, depois ele retira a

grelha e completa as lacunas com quaisquer letras. O destinatrio pega a sua grelha e coloca
sobre a mensagem assim pode ler as informaes.
Franois Viente Foi um dos maiores criptlogos de seu tempo. Trabalhando para o rei da
Frana, ele foi o primeiro especialista a utilizar notaes algbricas sistematizadas, e mais
conhecido como matemtico que contribuiu para a teoria das equaes.
Os anos passaram e novas tcnicas foram sendo desenvolvidas pelos criptgrafos de todo o
mundo. (Nos EUA por volta de 1795) Thomas Jefferson inventa um aparelho que utilizava
discos para uma substituio poli-alfabtica. Este aparelho foi reinventado varias vezes,
sendo utilizado pelos militares at a Segunda Guerra Mundial.
Os computares marcaram uma nova era na historia dessa cincia. Com seus clculos
extremamente velozes e a comunicao rpida atravs dos fios telefnicos. Com isso,
mtodos mais elaborados e complexos tornaram-se necessrios, e a criptologia indispensvel
nos dias de hoje.
E o maior responsvel por esse avano na cincia foi Claude Elwood Shannon. Ele foi o
criador das bases de uma teoria matemtica da comunicao (com seu trabalho intitulado
Uma Teoria Matemtica da Comunicao, de 1948), uma nova rea na matemtica com as
definies e conceitos bsicos formulados, com os teoremas e resultados fundamentais j
estabelecidos. Shannon escreveu um ensaio o qual nunca foi publicado resumindo conceitos e
definies sobre criptologia em sua teoria. O trabalho intitulado Teoria Matemtica de
Sistemas Secretos.
Na dcada de 60, o Doutor Horst Feistel trabalhando em um projeto para um laboratrio cria a
cifra lcifer, que serviria de base para vrios mtodos de criptografia inclusive o DES (Data
Encryption Standard) que seria adotado pelo NBS (National Bureau of Standard) e pela NSA
(National Security Agency) como padro de Encriptao de dados para os EUA. O cdigo
DES e quebrado em 1997 por uma rede de 14.000 computadores, em 1998 quebrado em 56
horas por pesquisadores e em 1999 em 22 horas e 15 minutos.
Em 1976 Whitfield Diffie e Martin Hellmann j haviam lanado duvidas quanto segurana
do DES, com isso em seus livros New Directions in Cryptography lanaram a idia de
chave pblica. Este livro servia de inspirao para trs principiantes em encriptao de dados,
Ronald L. Rivest, Adi Shamir e Leonard M. Adleman.
Eles tiveram uma idia baseada em chave pblica e assinatura digital, com o apoio na
dificuldade na fatorao de nmeros grandes. Os amigos s publicaram o algoritmo em 1978
na Comunication da ACM( Association for Computing Machinery). O algoritmo leva o
nome de RSA de acordo com as iniciais dos sobrenomes de seus criadores, Rivest, Shamir e
Adleman.
A criptografia vem evoluindo constantemente, como a criptografia de curva Elptica sugerida
por Miller, Criptografia Quntica e a criptografia diferencial desenvolvida por Biham e
Shamir, pois cada vez mais necessrio o uso dessa cincia.

3. O QUE O ALGORITMO RSA


O algoritmo RSA foi criado por pesquisadores iniciantes na cincia da criptografia, Ronald
Rivest, Adi Shamir e Leonard Adleman. Estes pesquisadores serviram-se de conceitos de
Teoria dos Nmeros como alicerce para a construo do que, hoje, um dos mais conhecidos
mtodos criptogrficos no mundo, utilizado no NETSCAPE NAVIGATOR, navegador de
Internet, alem de ser usado em determinadas movimentaes financeiras.
O mtodo no muito complexo, chegando at certo ponto ser simples para aqueles que
conhecem e tiveram uma slida introduo Teoria dos Nmeros. O sistema utiliza-se de
vrios conceitos matemticos como, aritmtica modular, algoritmos de Euclides e Fermat,
fatorao, alm do tpico mais importante, nmeros primos, onde est a dificuldade de se
quebrar a sua segurana.
A segurana deste sistema de criptografia est nos nmeros primos, pois ele baseado na
dificuldade de se fatorar um nmero muito grande. Como as chaves de segurana, os nmeros
que so multiplicados entre si, contm pelo menos 150 algarismos, fatorar um nmero deste
tamanho praticamente impossvel.
3.1. Como funciona o Mtodo RSA
Antes de iniciar o estudo precisaremos ter alguns pr-requisitos para entendermos o
funcionamento do mtodo. Devemos saber o que Algoritmo Euclidiano Estendido, os
teoremas de Fermat e Euler e a funo de Euler.
O Algoritmo de Euclides tem como objetivo calcular o mximo divisor comum entre dois
inteiros a e b. J o Algoritmo Euclidiano Estendido alm de calcular o mximo divisor
comum entre a e b, calcula simultaneamente e que satisfazem a seguinte equao:
a+b=d
sendo d o Maximo divisor comum entre a e b.
A funo
de Euler definida da seguinte maneira, seja um nmero m pertencente aos
naturais, e E(m) ser o conjunto dos nmeros x naturais menor que m e possui o mdc(m,x) =
1.
O teorema de Euler demonstra que se a pertence aos inteiros e m pertence aos naturais que
mdc (m, a) = 1, onde:
a(n) ( mod m)
O teorema de Fermat nos informa que seja p um primo e pertencente aos naturais. Ento
teremos:
ap (mod m)

A partir de agora tentaremos, em linhas gerais, mostrar os passos matemticos percorridos


para construo do RSA, equivalendo letras a nmeros, encontrando as chaves de codificao
e decodificao e codificando e decodificando as mensagens desejadas.
O primeiro passo a ser dado dar valores numricos para cada letra do alfabeto, para que
possamos trabalhar todas as letras usando estes valores que lhes foram atribudos. muito
importante prestar ateno na numerao aplicada para que no ocorram erros na hora da
converso de nmero para letra. Um exemplo de numerao que pode ser atribudo para cada
letra do alfabeto :

O espao entre uma palavra e outra deve receber uma numerao tambm, ento este ser
convertido no nmero 37.
Algum cuidado dever ser tomado quando formos denominar valores para cada letra, pois
poder haver confuses na hora da decodificao. Como por exemplo, se usssemos a
seguinte numerao:

Poderamos ter problemas, por exemplo de na palavra beco ,por exemplo, b = 2 e e = 5, que
juntas dariam o nmero 25 que corresponderia a letra y = 25. Assim a palavra beco poderia se
tornar palavra yco.
Agora conheceremos dois personagens muito importantes do sistema de cifragem que est
sendo estudado, dois nmeros primos, os quais chamaremos de p e q, estes dois primos
devem ser diferentes um do outro. Com eles vamos obter uma parte das chaves de codificao
e decodificao. Esta parte da chave se chamar n, que ser a multiplicao dos primos p e q.
n = p.q
De p e q tambm vem a outra parte da chave de codificao. De acordo com a definio da
funo de Euler, dado um primo p, temos (p)= p 1, e do mesmo modo a funo (n)
com n=pq ser:
(n) =

(pq) =

(p) (q) = (p - 1)(q - 1)

J que o mdc (p, q)=1.


A partir do momento que conhecemos (n) vamos procurar o menor primo que no divida
(n), este valor completar nossa chave da cifragem, e ser chamado de c. Nossa chave
ser o par (n, c).

A prxima etapa servir-se desta chave para codificarmos a mensagem sugerida. Neste
momento trabalharemos com sistema de congruncias.
Dividiremos o enorme nmero, que obtivemos com a transformao das letras da frase em
nmeros, em pequenos blocos sempre menores que n, pois trabalharemos com a congruncia
mdulo n, logo se o nmero escolhido for maior que o meu n, ele se transformar em outro
mdulo n.
Em cada parte que foi dividida usaremos a seguinte congruncia:
Ac

E (mod n)

E o resto da diviso de Ac por n, A o bloco que faria parte da mensagem clara e c o menor
primo que no divide (n), isto c invertvel mdulo (n).
Aps a codificao destes pequenos blocos no poderemos mais junt-los, pois no
conseguiramos dividi-los novamente da mesma maneira, e no poderamos decifrar os dados
cifrados.
Para seguirmos o caminho inverso, deveremos aproveitar mais uma vez de (n), pois a
partir dele e de c que vamos encontrar a outra metade da chave que denominaremos d, j
que n a outra. Assim o par (n, d) seria a chave de decodificao. Ns encontraremos d, o
inverso de c mdulo (n), aplicando o algoritmo euclidiano estendido em (n) e c. Usando o
algoritmo de Euclides estendido em (n) e c, e sabendo que o mdc ( (n), c) =1, teremos a
seguinte equao:
(n)
+ c
=1
Como (n) E (mod (n)), teremos que c
= 1 em
Fazendo =d teremos que d o inverso de c.

(n). Logo o inverso de c em

(n).

Agora usando a congruncia


A

Ed (mod n)

decodificaremos os dados, saindo limpa e legvel a parte A, ou seja, a mensagem clara.


Mas para o mtodo funcionar de acordo com o esperado teremos que verificar se, ao
decodificarmos a parte codificada teremos a mensagem clara. Ento temos que saber se:
A
Como vimos d o inverso de c mdulo
qualquer. Como
E
Da temos

(E)d (mod n)
(n), ento cd=1+k (n), para k sendo um inteiro
Ac (mod n)

Acd

A1+k

Como pelo teorema de Euler A

(n)

(n)

AA

(n)k

A(A

(n) k

) (mod n)

1(mod n), temos

Acd

A(1)k

A (mod n)

S que o teorema de Euler nos diz que para que A (n) 1(mod n), o mdc(A,n) = 1. Mas no
podemos afirmar que sempre A ser co-primo com n pois os valores podem variar entre 1 e n1.
Agora o teorema de Fermat vem nos auxiliar a resolver este problema. Lembre-se que:
cd=1+k (n) = 1 + k(p-1)(q-1)
logo teremos:
Acd = A1+ k(p-1)(q-1)

A(A p-1 )k(q-1)(mod p)

Usando o teorema teremos que supor que p no divide A. Se isto for verdade ento Ap-1
(mod p), e por Fermat obtemos Acd 1 (mod p).

Nada parece ter melhorado. Usamos o teorema de Fermat, em vez de Euler, mas acabamos
com o mesmo problema. Felizmente o fato de p ser primo nos permite tratar facilmente o caso
em que p divide A. De fato, neste caso A 0 (mod p). Assim
Acd

A (mod p)

Analogamente,podemos mostrar que Acd A (mod q). m outras palavras, Acd - A divisvel
por p e q. Como p e q so primo distintos temos que mdc (p, q) =1, assim pq divide Acd - A,
pela propriedade fundamental dos primos. Assim provamos que Acd A (mod n) quando
n=pq.
Para melhor compreenso do Sistema RSA de Criptografia, daremos um exemplo, simples,
passo a passo como foi descrito anteriormente.
Primeiramente devemos ter uma mensagem que deva ser escondida do grande pblico,
e vamos criptografa-la. Usaremos a seguinte frase hipottica, mas que os americanos
adorariam, como exemplo:
Achamos Osama Bin Laden no Tibet
A partir de agora utilizaremos somente nmeros, ento devemos converter cada letra em um
nmero. Utilizaremos a numerao j mencionada anteriormente como base para
exemplificao:
Ento teremos o seguinte nmero:
1113181123252937252911231137121924372211141524372425373019121530

Neste momento vamos gerar dois primos distintos para desenvolvermos nossas
chaves. Usaremos, por no se tratarem de nmeros muito grandes, e consequentemente a
compreenso ser facilitada, p = 5 e q = 11. Logo n = 55, (n) = 40, e o menor nmero
primo que no divide (n) ser 3.
Depois de conhecermos n,

(n) e c, fragmentaremos aquele imenso nmero,

1113181123252937252911231137121924372211141524372425373019121530,
em partes sempre menores que n. Como exemplo:
1-11-31-8-1-12-32-52-9-37-25-2-9-1-12-31-13-7-12-19-2-43-7-2-21-11-41-52-43-7-2-42-537-30-19-1-21-5-30
Com essa etapa pronta pegaremos cada bloco e aplicaremos a primeira congruncia
mencionada juntamente com a chave de codificao de dados. Aplicaremos na terceira parte
do todo para mostrar como exemplo.
313

29791

36 (mod 55)

Aps fazermos este processo com todos os blocos, teremos a mensagem criptografada. Ela
seria a seguinte:
1-11-36-17-1-23-43-28-14-53-5-8-14-1-23-36-52-13-23-39-8-32-13-8-21-11-6-28-32-13-8-347-13-50-39-1-21-15-50
Desse modo quem pegar esta mensagem ter de encontrar a outra metade da chave de
decodificao j que a primeira, como foi dito anteriormente, o n. Essa pessoa ter de
conhecer (n) para aplicar o algoritmo euclidiano estendido em (n) e c para encontrar d.
Assim teremos que d = 27, pois
(n)= 40 = 3(13) + 1

1 = 40 + 3(-13)

Como
-13

27 (mod 40)

Logo 27 o inverso de 3 mdulo 40. Assim usaremos d = 27 e a congruncia adequada para


decodificar a mensagem codificada.
4. DESENVOLVIMENTO DO SOFTWARE
Durante a pesquisa realizada sobre o algoritmo RSA foi desenvolvido, paralelamente, um
software (programa para computadores) que visa criptografar dados. Este programa um
esboo do que vem a ser o conhecido sistema criptogrfico criado por Rivest, Shamir e
Adleman.

Para o desenvolvimento do trabalho em condies reais de emprego do software produzido,


foi utilizada a plataforma Turbo Pascal 1.5 para Windows. Alem da aritmtica bsica foram
utilizados funes e algoritmos referentes Teoria dos Nmeros.
Utilizamos a tabela ASCII (American Standard Code for Information Interchange) para a pr
codificao e decodificao da mensagem, determinando valores para cada uma das letras.
Assim usamos a numerao j existente no computador, poupando o trabalho na criao de
uma nova tabela de valores.

!
"

#$ %

&

'() ( *

- - 01

+!

'.

+! 4 5

'
7

+!
3

46 .

+! .

'

+!

(9 9
: . 1
"

: . 1

&

;( (

;( (

;( (

;( (

') ( *

+!

< .

=
-

(' (
"

&

% .

>

< 1

<

1
1+

"
&
,
/
2

"
&
,
/
2
"
"
"
"
"
""
"&
",
"/
"2
&
&
&
&
&
&"

!
"
#
$
%
&
'
(
)
*
+
,
.
/
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
@
A

+!

'1
3
3
1
'1?

<

'3 1 @
4 1 @
'
7<
*
$

;<
;<
;<
;<
;<
;<

"

;<

&

;<

;<

;<

.<

<
:

$
'
'

< +!
3
A

&&
&,
&/
&2
,
,
,
,
,
,"
,&
,,
,/
,2
/
/
/
/
/
/"
/&
/,
//
/2
2
2
2
2
2
2"
2&
2,
2/
22

B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
`
a
b
c
d
e
f
g

A
A
A

>

A
A
A

A
A

A
A
A

A
A
A
A

A
A

'3

.
4

'

'

< .
A

A
A
A
A

<

h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~

"
&
,
/
2

"
&
,
/
2

"
&
,

A
E

A
A
A
A
A

A
A
A
A
A

A
A

'3

4.

.
4

/
2

"
&
,
/

4.

'1 <

"
&
,
/
2
"
"
"
"
"
""
"&
",

"/
"2
&
&
&
&
&
&"
&&
&,
&/

&2
,
,
,
,
,
,"

,&
,,
,/
,2
/
/
/
/
/
/"
/&
/,
//
/2
2
2
2
2
2
2"
2&
2,
2/
22

"
&
,
/
2

!
"
#
$
%
&
'

"
&
,
/
2

"
&
,
/
2

"
&
,
/
2

"
&
,
/
2

(
)
*
+
,
.
/
0
1
2
3

4
5
6
7

8
9
:
;
<
=
>
?
@

A
B
C
D

E
E
F

"
"
"
"
"

G
H

4.1. Algoritmo do Programa


Aqui segue o algoritmo do software que foi desenvolvido ao longo deste estudo.
program criptografia;
uses wincrt;
function EucliEst(c,fi:integer):integer;
inverso

{ Funao para encontrar o valor

multiplicativo do c modulo fi}


var
a,b,d,x,u,w,y,v,z,q:integer;
{variaveis da funo}
begin
x:=fi; y:=c;
u:=0; v:=1;
w:=1; z:=0;
repeat
q:= (x div y);
a:= (x - (q*y));
b:= (w - (q*u));
d:= (z - (q*v));
w:=u;
z:=v;
u:=b;
v:=d;
x:=y;
y:=a;
until (y=0);
EucliEst:=z
{funo Retorna valor de encontrado na variavel z}

end;
var
Vetor,vet_c,vet_aux,vet_e: array [1..1000] of longint; {variaveis do
programa}
chave: string[100];
den,c,i,j,y,fi,d: longint;
soma: longint;
primo_p,primo_q,n: longint;
achei: boolean;
begin
j:=0;

write('Digite a sua frase: ');


readln (chave);
for i:=1 to length(chave) do
{loop para converter os caracteres em valores numericos correspondende a
tabela ASCII colocando os valores obtidos em um vetor}
begin
vetor[i]:= ord(chave[i]);
j:=j+1;
end;
writeln;
write('Mensagem pr-codificada: ');
for i:=1 to j do
{loop para imprimir o vetor convertido em numero}
begin
write(vetor[i]);
end;
writeln;
writeln;
writeln;
writeln('Entre com dois numeros primos p e q:'); {dois numeros primos
para achar n e fi}
writeln;
write('P: ');
readln(primo_p);
write('Q: ');
readln(primo_q);
n:=primo_p*primo_q;
{encontrado o valor de n atraves do produto entro os dois primos}
fi:=(primo_p-1)*(primo_q-1);
{encontrado o valor de fi atraves da funcao de fi de Euler}
writeln;
writeln('O valor obtido para "n" (primeira parte da chave) igual a:
',n);
writeln('O valor de "fi" de "n" igual a: ',fi);
writeln;
for i:=1 to fi do
{loop para encontrar o menor primo que nao divide fi}
begin
if (fi mod ((2*i)+1)) <> 0 then
begin
vet_c[i]:= (2*i)+1;
end;
end;
achei:=false;
i:=1;
repeat
if (vet_c[i] mod fi) <> 0 then
begin
c:=vet_c[i];
achei:=true;
end;
i:=i+1;
until (achei = true);
writeln('Valor de "c" (segunda parte da chave): ',c);
writeln;
for i:=1 to j do

{loop para criptografar o vetor}

begin
soma:=1;
for y:=1 to c do
begin
soma:=soma*vetor[i];
if soma > fi then
begin
soma:= (soma mod n);
end;
end;
vet_e[i]:=(soma mod n);
end;
write('Mensagem codificada: ');
for i:=1 to j do
{loop para imprimir o vetor criptografado}
begin
write(vet_e[i]);
end;
den:=(EucliEst(c,fi)); {chamada da funao}
writeln;
writeln;
writeln;
if den < 0 then
{condio para encontrar o valor de "d"}
begin
d:= den + fi;
end;
if den > 0 then
begin
d:=den;
end;
writeln('Encontrado o valor de "d" (chave para decodificao): ',d);
for i:=1 to j do
{nesse loop o vetor codificado sera decodificado para os valores iniciais}
begin
soma:=1;
for y:=1 to d do
begin
soma:=soma*vet_e[i];
if soma > fi then
begin
soma:= (soma mod n);
end;
end;
vet_aux[i]:=(soma mod n);
end;
writeln;
write('Mensagem numerica decodifica: ');
for i:=1 to j do
begin
write (vet_aux[i]);
end;
writeln;
writeln;
write('Mensagem clara: ');
for i:=1 to j do
begin
write(Chr(vet_aux[i])); {impressao da mensagem clara}
end;

readkey;
donewincrt;
End;

5. CONSIDERAES FINAIS
Este artigo foi escrito Com o intuito de fazer uma conexo entre a Matemtica terica,
ensinada na sala de aula, e a Matemtica aplicada, mais precisamente na Computao. O
objetivo era estudar o Sistema Criptogrfico RSA e desenvolver e implementar um software
com base no programa. O estudo do mtodo foi repleto de mincias, e todos os detalhes foram
analisados a fundo para a criao e execuo do programa. Com esse estudo consegui
desvendar todos os segredos matemticos que esto por trs desse algoritmo conhecido
mundialmente, alcanando assim o objetivo traado por mim no projeto feito a seis meses.
Agradecimentos
Agradeo as sugestes recebidas de diversos colegas, e principalmente de meu orientador, Sinval Braga de
Freitas, que permitiram aprimorar o texto e eliminar diversas inconsistncias. A todos os professores que me
ajudaram durante a minha graduao com admirvel compreenso a cada erro que eu cometia. A Universidade
Catlica de Brasilia que me deu oportunidade de desenvolver meu potencial chegando plenitude.

REFERNCIAS BIBLIOGRFICAS
SANTOS, Jos Plnio de Oliveira. Introduo teoria dos nmeros. 2. ed. Braslia: CNPq, c2000
SHOKRANIAN, Salahoddin; SOARES, Marcus; GODINHO, Hemar. Teoria dos Nmeros. 2. ed Braslia: Ed.
da Universidade de Braslia, 1999
DOMINGUES, Hygino H.; IEZZI, Gelson. lgebra moderna. 2. ed. So Paulo: Atual, 1992.
RIBENBOIM,Paulo; Nmeros Primos, Mistrios e Recordes. 1. ed. Rio de Janeiro: IMPA,2001
COUTINHO, Severino; Nmeros Inteiros e Criptografia RSA. 2.ed. Rio de Janeiro: IMPA 2003
CMARA, Danilo Figueira; Gerao de Chaves Seguras para o Sistema Criptogrfico RSA. Dissertao de
mestrado em Engenharia Eltrica, UnB.1996.
TKOTZ,Viktoria; Historia da Criptografia. Disponvel em < http://www.numaboa.com.br/criptologia>.

Eduardo Augusto Moraes Silva (facinmat@yahoo.com.br)


Departamento de Matemtica, Universidade Catlica de Brasilia