Professional Documents
Culture Documents
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.
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.
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) =
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).
Ed (mod n)
(E)d (mod n)
(n), ento cd=1+k (n), para k sendo um inteiro
Ac (mod n)
Acd
A1+k
(n)
(n)
AA
(n)k
A(A
(n) k
) (mod n)
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)
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,
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)
!
"
#$ %
&
'() ( *
- - 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
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;
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>.