Вы находитесь на странице: 1из 8

criptogrAfia

ptogg rAAfi
pto
fia

g
o
t
p
i
r
C
24..hacker
24
24.hacker
.hacker

a
i
f
a
gr
por m4t4r13l
Entenda de uma vez por todas como funciona o famoso RSA

esta continuao do
tutorial de criptografia iniciado na Hacker
17, falaremos de um
sistema criptogrfico
de chave pblica muito usado e relativamente complexo: o RSA.
A sigla vem das iniciais dos nomes de
seus criadores, Ron Revista, Adi Shamir
e Len Adleman. Sua encriptao fortemente baseada no problema matemtico da fatorao de um nmero inteiro:
para inteiros suficientemente grandes,
ela um problema bem complicado.
Como aconteceu na primeira parte do
tutorial, apresentamos uma boa dose
de matemtica. Mas, por questo de
espao, vamos remet-lo vrias vezes
literatura para saber como os resultados
mais difceis so demonstrados.

MXIMO DIVISOR COMUM

O clculo do mdc de dois nmeros naturais outro tpico importante para


compreender o RSA, que consiste em
produzir uma chave de encriptao
multiplicando dois nmeros primos
muito grandes. Multiplicar fcil,
mas, como vimos anteriormente, o
problema , dado um inteiro positivo,
descobrir uma fatorao dele.
Mas o que o mximo divisor comum?
Dados inteiros a,b; dizemos que b divide a, na representao b|a, se existe
um c inteiro tal que a = bc. Agora, se
temos a e b inteiros, o mximo divisor comum de a e b o mdc(a,b),
o maior inteiro que divide simultneamente a e b.
Ento, um problema natural que surge
, dados dois inteiros a,b, como calcu-

lar o mximo divisor comum deles?


O melhor mtodo disponvel o
chamado algoritmo de Euclides e
consiste no seguinte: primeiro dividimos a por b, obtendo o quociente
q1 e resto r1 , portanto a = bq1 + r1 ; a
seguir, se r1 for no-nulo, tomamos
b e dividimos por r1 , obtendo o quociente q 2 e o resto r2 ; novamente, r2
for no-nulo, tomamos r1 e dividimos por r2 , e assim prosseguimos
sucessivamente. D essa maneira,
temos que, como a seqncia de
quocientes r i decrescente, o processo pra (um algoritmo!) com um
ltimo resto igual a zero, e o ltimo
quociente o mximo divisor comum de a e b. Na verdade, para uma
demonstrao matemtica, consulte
as referncias.

hacker.25

criptogrAfia
Como exemplo do mtodo, considere os
inteiros 1395 e 30 e observe a figura 1.

1395

30

15

*** adicionar a imagem figura1.png acima


15 apontador
0 ***
deste
Nesse diagrama, os dois primeiros elementos da linha superior so os nmeros
de que queremos determinar o mdc. Ao
dividirmos 1395 por 30 obtemos o resto
15, copiamos o 15 na linha inferior (linha
de restos) e dividimos 30 por 15, obtendo
resto nulo; portanto, 15 o mximo divisor
de 1395 e 30.

NMEROS PRIMOS
Temos dois tipos de inteiros positivos:
os compostos e os primos. Um nmero
inteiro a composto se puder ser fatorado
(decomposto!) em um produto de outros
dois inteiros diferentes de 1.
Por exemplo, 18 composto, pois 18
= 2 x 9.
Por outro lado, um nmero inteiro positivo
p primo se for divisvel apenas por 1 e por
ele mesmo. Os primeiros nmeros primos
so bem conhecidos: 2, 3, 5, 7, 11, ...
Os pontinhos ... so propositais? Sim.
Eles indicam um fato milenar que Euclides
demonstrou.
Teorema: Existem infinitos nmeros
primos.
Demonstrao: consulte as referncias

Um algoritmo 100% eficiente no existe, mas h um problema mais leve:


mapear todos os primos at um dado
inteiro n. Para isso, existe um mtodo
bem conhecido.

CRIVO DE ERATSTENES
Eratstenes inventou um crivo que leva
seu nome. Vejamos um exemplo bem
simples de seu funcionamento: tomemos
n = 20 e listemos todos os inteiros at 20
(menos o 1).

objetos, temos uma pergunta natural em


relao aos nmeros inteiros positivos.
Dado um inteiro positivo n, temos um
algoritmo de deciso que define se
um nmero primo ou no para nos
informar se ele composto ou primo?
26.hacker

MTODO DA FATORAO DIRETA


No um algoritmo no sentido comum
da palavra (que termina em pouco tempo,
de preferncia), algo que possa ser usado
em um computador de forma eficiente. A
seguir, apresentamos um exemplo prtico
para ver como funciona.
***adicionar a imagem figura2.png acima

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
19 20
Primeiro, marquemos todos os mltiplos do primeiro nmero primo, que
2.

1825

365

73

73

deste apontador ***


2 3 4* 5 6* 7 8* 9 10* 11 12* 13 14* 15 16*
17 18* 19 20*
Continuamos o processo marcando todos
os mltiplos do prximo primo, que 3.
2 3 4* 5 6* 7 8* 9* 10* 11 12* 13 14* 15*
16* 17 18* 19 20*
O processo j acabou, pois, se continuarmos com os prximos primos (7 e 11),
no conseguiremos marcar nenhum outro
nmero composto. Todos os compostos j
foram marcados, portanto, os nmeros
primos nesse caso so:
2 3 5 7 11 13 17 19

Os nmeros primos so muito especiais,


como veremos mais adiante. A exemplo
de qualquer classificao cientfica de

aqui. H um mtodo fora-bruta, tambm bem conhecido.

De forma geral, o crivo de Eratstenes consiste em ir marcando todos os mltiplos de


um dado primo. claro que devemos saber
quais so os primeiros primos e, medida
que n cresce, o crivo de Eratstenes fica
mais trabalhoso, no sendo, portanto, um
critrio prtico.
Os algoritmos de deciso no param por

A figura fatora.png ilustra a decomposio


do nmero 1825 em seus fatores. O mtodo consiste em procurar os primeiros inteiros que dividem 1825 e, sucessivamente, ir
dividindo os quocientes gerados, at que
cheguemos a um nmero primo. No caso,
obtemos 1825 = 5 x 73. Note que os fatores so nmeros primos levados a potncias adequadas. Isso uma coincidncia?
No. Trata-se de um teorema famoso, o
autor Euclides, mais uma vez.
Teorema (da fatorao nica): Seja n um
inteiro positivo, ento ele admite uma
nica decomposio em fatores primos
(fatorao!). A decomposio de n dada
pela expresso do seguinte tipo:
n = p1x p2x2...pkxk
1

Demontrao: acesse as referncias


O teorema da fatorao diz que, de certa
maneira, os nmeros primos funcionam como elementos de construo,

blocos elementares para to dos os


nmeros inteiros.
A questo da fatorao de um nmero
inteiro importante do ponto de vista prtico (atualmente) porque o criptosistema
RSA fortemente baseado na dificuldade
prtica de se fatorar nmeros inteiros
muito grandes. S para motivar o leitor,
a chave criptogrfica do RSA (a chave
pblica) construdamultiplicando-se dois
nmeros primos mpares muito grandes, a
questo que revela-se apenas o produto
e no os seus fatores, os quais so necessrios para se descobrir a chave privada
(que fornece a decriptao); ao final deste
trabalho, faremos um resumo da criptoanlise do RSA, citando os mtodos mais
recentes para quebrar o sistema.

ARITMTICA MDULO N
Se algum dissesse a voc que 21+10=7, o
que voc faria? bem provvel que pensaria que a pessoa est com um parafuso
solto, mas no bem assim. Com certeza,
voc est pensando em clculos com os
nmeros usuais (reais ou racionais, por
exemplo).
Mas existe uma situao em que a
equao citada faz sentido? Claro que
sim! O mundo ocidental dividiu arbitrariamente o dia em 24 horas. Podemos
interpretar a igualdade 21+10=7 como
agora so nove da noite, daqui a dez
horas sero sete da manh. Essa
aritmtica cclica das horas mostra que a validade de uma equao
matemtica depende do contexto; a
chamada Aritmtica Mdulo n um
exemplo de um ambiente matemtico
no qual equaes como as que citamos
podem ocorrer.
Relembrando a primeira parte do nosso
tutorial, dado o conjunto Z dos nmeros
inteiros e n > 1 inteiro, definimos Z/nZ
como sendo o conjunto
Z/nZ = { [x] | x Z}, em que [x] = { x

+ nk | k Z }, ou seja, [x] uma classe


de inteiros que possuem o mesmo resto
quando da diviso (inteira!) por n.
conhecido na literatura matemtica
que o conjunto Z/nZ, quando munido
das operaes de adio e produto de
classes dadas por
[x] + [y] = [x+y]
[x][y] = [xy]
obedece s seguintes propriedades:
Caso da adio
i) [x] + [y] = [y] + [x] (propriedade comutativa)
ii)([x] + [y]) + [z] = [x] + ([y] + [z]) (propriedade associativa)
iii) [0] Z/nZ, tal que [x] + [0] = [x]
, [x] Z/nZ (existncia do elemento
neutro)
iv) [x] Z/nZ [y], tal que [x] + [y] =
[0] (existncia do inverso)
Caso do produto
i)[x] [y] = [y] [x] (propriedade comutativa)
ii)([x][y])[z] = [x]([y][z]) (propriedade
associativa)
iii) [1] Z/nZ, tal que [x] [1] = [x] ,
[x] Z/nZ
Essas propriedades dizem que Z/nZ
possui uma estrutura natural de um anel,
que nada mais do que um ambiente
matemtico em que podemos operar de
uma maneira muito semelhante dos
nmeros reais. No caso particular em
que n = p, com p primo, temos que, no
caso do produto, h uma propriedade
adicional vlida:

possui? A resposta est no resultado que


condensa tudo o que dissemos at aqui
sobre Z/nZ.
Teorema: O conjunto Z/nZ, munido das
operaes de adio e produto de classes,
um anel comutativo com unidade e possui exatamente n elementos.
Demontrao: consultar referncias
Exemplos de Z/nZ:
1)Z/2Z = {[0],[1]}
2)Z/3Z = {[0],[1],[2]}
Clculos em Z/3Z :
[1] + [2] = [1+2] = [3] = [0]
[2][2] = [2 x 2] = [4] = [1]
A seguir, mostraremos dois diagramas

[0]

[1]

[2]

[0]

[0]

[1]

[2]

[1]

[1]

[2]

[0]

[2]

[2]

[0]

[1]

[0]

[1]

[2]

[0]

[0]

[0]

[0]

[2]
[1] operaes
que ilustram
as[0]
tabelas das
[1]
em Z/3Z:
[2]

[0]

[2]

[1]

iv) [x] Z/nZ [x] [0], [y] tal que


[x][y] = [1] (existncia do inverso)
Uma pergunta natural: qual o tamanho de
Z/nZ? Ou seja, quantos elementos Z/nZ

Todo este tpico tem sido muito terico, no? Vamos a uma aplicao. Na
matemtica do ensino fundamental, nos
hacker.27

criptogrAfia
ensinam que um nmero inteiro divisvel
por 2 se o algarismo das unidades for par.
Vamos mostrar o por que essa afirmao
verdadeira. Dado um nmero natural
n, ele possui uma decomposio na base
decimal, ou seja:
n = A o + A1( 1 0 ) + A 2( 1 0 )
+...+A k (10) k
Tomando as classes em Z/Z2 de ambos
os membros da equao, temos:
n = A o + A1[ 1 0 ] + A 2[ 1 0 ]
+...+A k [10] k
Mas [10] m = [0] (m=1,2,3...,k) e disso
obtemos:

frmula, mas acreditar em cincia no


suficiente, preciso provar!
Nesse caso especfico, a tcnica que usaremos chama-se Princpio da Induo Finita.
A idia que se temos uma afirmao que
depende de um nmero natural n (denotaremos-a por P(n)) e mostramos que ela
vlida para um dado k, o princpio afirma
que, se P(k) verdadeira, ento P(k+1)
verdadeira, portanto, de forma indutiva
temos que P(n) vlida para todo n k.
Voltando ao exemplo, vemos que para k
= 1 a frmula da soma vlida, portanto,
j temos nossa hiptese de induo.
Temos:
S(n+1) = Sn + n+1 = n(n+1)/2 + n+1 =
(n+1)(n+2)/2

[n] = [Ao]
Portanto, n divisvel por 2 se e somente
se o algarismo das unidades Ao for par.
A seguir, apresentaremos um conjunto de
teoremas que formam o suporte matemtico para o RSA.

INDUO FINITA E OS
TEOREMAS DE FERMAT
H situaes em matemtica em que se
procura um resultado geral a partir de
uma sequncia de afirmaes particulares
vlidas. Como exemplo, considere: seja a
seqncia de nmeros naturais 1, 2, 3, 4,
... n; a soma desses termos dada pela
frmula Sn = n(n+1)/2
Se tomarmos em seqncia n = 1, 2, 3,
... e substituirmos na frmula acima,
encontraremos:

Porque viajamos com essa idia de princpio da Induo Finita? O motivo que
precisamos desse conceito para mostrar
o seguinte teorema, fundamental (vamos
us-lo posteriormente).

Usando o resultado anterior, observamos


que (n+1) p = nP + 1 = n + 1 (mod p), portanto, provamos o teorema de Fermat
para o caso de a > 0 . O caso a < 0
semelhante, deixamos como exerccio
para voc, caro leitor.
Como caso particular do Teorema de
Fermat, temos o prximo.

TEOREMA DE FERMAT (PEQUENO)


Seja p um nmero primo e a um inteiro,
tal que p no divide a. Ento:
ap-1 = 1 (mod p)
Demonstrao: sabemos do teorema de
Fermat que ap = a (mod p), mas, se p
no divide a , ento mdc(p,a) = 1. Isso
significa que a invertvel em Z/pZ.
Multiplicando ambos os membros da
equao pelo inverso b de a em Z/pZ,
temos que:
bap = ab ap-1 = 1 (mod p)

TEOREMA DE FERMAT

SISTEMAS DE CONGRUNCIAS

Seja p um nmero primo e a um nmero


inteiro. vlida a seguinte equao:

Quando consideramos a equao 2x =


8, imediato perceber que a soluo
x = 4; mas assumimos, neste caso, que
trata-se de uma equao no domnio
dos nmeros reais. Pergunta possvel:
e se tomssemos a equao em um dos
conjuntos Z/Zn, isso teria sentido?
Claro que sim, mas a complexidade do

a p = a (mod p)
Esboo de demonstrao: tomamos a
equao a ser demonstrada como sendo
a afirmao P(n), ou seja, np = n (mod
p) e para n=1 vemos que trivialmente

S1 = 1
S2 = 3
S3 = 6
...

Se p um nmero primo e a e b inteiros,


a equao a seguir vlida:
(a+b) p = a p + bp (mod p)

problema aumenta. Estaramos sujeitos


s restries da aritmtica modular.
Vendo dessa maneira, encaremos a
equao [2x] =[8] em Z/3Z, ou seja,
2x = 8 (mod 3) (essa equao um
exemplo do que chamamos de equao
de congruncia).
Como mdc(2,3) = 1, temos que [2] invertvel em Z/3Z, e o inverso o prprio
[2], em que [x] = [1] (mod 3).

Comeamos a acreditar na validade da

Demonstrao: ver referncias

Mas essa a situao mais simples. No caso

28.hacker

vlida. Portanto, a hiptese de induo j


est satisfeita.
Ento, precisamos desenvolver a expresso (n+1) p (mod p), o que uma tarefa fcil
se usarmos o seguinte fato:

de uma equao ax = b (mod n), tal que a|n,


no poderamos resolver o problema diretamente, pois o elemento a no possuiria
um inverso em Z/nZ. Para um tratamento
completo, recomendamos as referncias.
O resultado que nos interessa o chamado
teorema chins do resto, que trata de um
sistema de congruncias.

TEOREMA CHINS DO RESTO


Sejam m e n inteiros positivos e primos
entre si (mdc(m,n)=1). Ento, o sistema
x = a (mod m)
x = b (mod n)
sempre possui uma nica soluo em
Z/mnZ.
Demonstrao: ver referncias

FUNO DE EULER
Como vimos anteriormente, para cada n
inteiro positivo, temos associado um sistema de aritmtica modular Z/nZ. Um caso
muito interessante desse objeto quando
temos n = p, um nmero primo. Nesse
caso, Z/nZ um exemplo de um corpo,
um objeto matemtico que se comporta
do mesmo modo que os nmeros reais
(podemos adicionar, subtrair, multiplicar e
dividir para todo elemento no-nulo).
Mas, se n no primo, podemos perguntar quantos elementos de Z/nZ so
invertveis. A resposta para essa pergunta
dada pela chamada funo de Euler
(ou funo totiente), que definida da
seguinte maneira:
: N {0} N {0}
(n) = # ({m N-{0}, 1m n | mdc
(m,n) = 1})
Ou seja, a funo de Euler calcula, dado um
n, quantos inteiros positivos m menores
do que n so tais que mdc(m,n) = 1.

Exemplos:
(2) = #({1}) = 1
(3) = #({1,2}) = 2
(4) = #({1,3}) = 2
(5) = #({1,2,3,4}) = 4
(6) = #({1,5}) = 2
Dois resultados da funo de Euler so fundamentais para nosso estudo do RSA.
Fato: Para p primo temos que (p) = p-1
Demonstrao: Observando a equao
mdc (m,p) = 1, temos, pela definio de
nmero primo, que todos os m menores
que p so primos com p. Da conseguimos
o resultado.
Teorema: Se m e n so inteiros positivos,
tais que mdc(m,n) = 1, ento
(mn) =(m)(n)
Demonstrao: consulte as referncias
Teorema de Euler: Sejam n > 0 e a nmeros
inteiros. Se mdc(a,n) = 1, ento:
a (n) = 1 (mod n)
Demonstrao: consulte as referncias
E agora, finalmente...

O SISTEMA CRIPTOGRFICO RSA


O RSA definido desta seguinte maneira:
dados dois nmeros primos mpares p e q,
grandes e prximos, efetuamos a seguinte
seqncia de passos:
1) Calculamos n = pq e (n) = (p-1)(q-1)
2) Escolhemos um nmero inteiro e, com 1
< e < (n), tal que mdc (e, (n)) = 1.
Usamos o algoritmo de Euclides extendido (ver referncias) para calcular o nico
inteiro d, 1 < d < (n), tal que ed = 1 (mod
(n)).
4) A chave pblica o par (n,e).
5) A chave privada d.

E como encriptamos / decriptamos uma


mensagem? A seqncia de regras nos
explicar.

A) ENCRIPTAO
1) Tomamos uma chave pblica (n,e).
2) Representamos a mensagem como um
inteiro m no intervalo [0,n-1].
3) Calculamos c = me (mod n). ( Esta a
funo de encriptao Ee!)
4) Enviamos a mensagem.

B) DECRIPTAO
1) Tomamos a chave privada d e calculamos m = cd (mod n). (Esta a funo de
decriptao Dd!)
Note que o RSA encripta apenas nmeros
em um dado intervalo, ento, se quisermos encriptar um texto convencional,
preciso primeiro fazer uma encriptao
do tipo letra nmero para podermos
aplicar o processo. Outro detalhe a ser
observado que a encriptao RSA
lenta para p e q grandes; por este motivo,
em geral, o RSA usado para encriptar
chaves de um sistema simtrico, sendo
um mtodo seguro para distribuir tais
tipos de chaves.
Vejamos a seguir exemplos que ilustram
o que acabamos de dizer.
Exemplo 1: Encriptao numrica pura
Tomemos p = 19 e q = 31. Ento:
1) Calculamos n = 589 e (n) = (p-1)(q-1)
= 18 x 30 = 540
2) Escolhemos um nmero inteiro e, com
1 < e < 540; tal que mdc(e, 5
40) = 1.
Fazendo e = 7, vemos que as condies
so satisfeitas.
3) Utilizamos o algoritmo de Euclides extendido para calcular o nico inteiro d,
1 < d < 540 , tal que ed = 1 (mod 540).
No nosso caso, 7d= 1 (mod 540) (ver
hacker.29

criptogrAfia
referncias).
Para encontrar d, precisamos encontrar o
inverso de 7 em Z/Z540. Como 7 x 463 =
3241 = (540 x 6) + 1, temos d = 463.
4) A chave pblica o par (n,e) =
(589,7).
5) A chave privada d = 463.
Como exemplo de encriptao puramente
numrico, consideremos m = 25 como
sendo a mensagem de texto comum.
Portanto, a mensagem encriptada
c = 257 (mod 589) =180
Para reverter o processo, calculamos m =
180463 (mod 589).
Aqui, precisamos apresentar alguns esclarecimentos. Efetuamos boa parte dos
clculos modulares usando a calculadora
kcalc do ambiente KDE; o clculo de m,
acima, poderia tambm ser feito com a
kcalc, o problema que, como qualquer
calculadora, assim que ela entra na notao cientfica, a parte inteira truncada!
Com certeza, o resultado fornecido ao final
dos clculos estar errado!
Vamos calcular m manualmente. O truque
o seguinte:
463 = 256 + 128 + 64 + 8 + 4 + 2 + 1 (termos da decomposio binria de 463!)
Ento:
180256 + 128 + 64 + 8 + 4 + 2 + 1 = 180256 x 180128 x
18064 x 1808 x 1804 x 1802 x 1801
Agora:
1801 = 180 (mod 589)
1802 = 5 (mod 589)
1804 = 25 (mod 589)
1808 = 36 (mod 589)
18016 = 118 (mod 589)
18032 = 377 (mod 589)
18064 = 180 (mod 589)
30.hacker

180128 = 5 (mod 589)


180256 = 25 (mod 589)
Portanto:
180463 = 25 x 5 x 180 x 36 x 25 x 5 x 180
= 18225000000 = 25 (mod 589)
Exemplo 2: Encriptao de texto alfanumrico simples
No exemplo 1, fizemos a encriptao de
um nmero. Como podemos encriptar
textos usuais com o RSA? Necessariamente, precisamos de uma pr-encriptao adicional, a associao letra
nmero que j citamos. Vamos adotar
a primeira encriptao, dada pela tabela
que segue:

A seguir, destruiremos qualquer vestgio


lingstico aparente. Para isso, quebraremos a seqncia numrica obtida em
blocos. Ento:
13143028 131-430-28
Note que at mesmo a identificao letra
nmero foi perdida. Esse procedimento
aumenta a encriptao.
Finalmente, vamos usar o RSA; tomemos
os dados do Exemplo 1. Com isso, temos
de calcular:
c1 = m1 7 (mod 589) = 131 7 = 214 (mod
589)
c 2 = m 2 7 (mod 589) = 430 7 = 449
(mod 589)
c 3 = m 37 (mod 589) =
(mod 489)

A
E
I
M
Q
U
Y
10
14
18
22
26
30
34

B
A 10
F
B 11
J
C 12
N
D 13
R
E 14
V
F 15
Z
G 16
11
H 17
15
I
18
19
J
19
23
K 20
27
L 21
31
M 22
35

C
G
K
O
S
W
12
16
20
24
28
32

D
N 23
H
O 24
L
P 25
P
Q 26
T
R 27
X
S 28
T 29
13
U 30
17
V 31
21
W 32
25
X 33
29
Y 34
33
Z 35

Como exemplo de encriptao de palavras,


vamos encriptar a palavra DEUS,utilizando
a tabela acima. Temos:
D 13
E 14
U 30
S 28
Portanto, DEUS 13143028

28 7 = 479

Reunindo toda a seqncia de encriptaes, temos:


DEUS 13143028 131-430-28
214-449-479
Para recuperar a palavra DEUS, basta reverter as funes de encriptao. Apesar
da aparente complexidade dos clculos,
a escolha dos primos p e q foi apenas
para propsitos didticos. Em aplicaes
prticas, os valores escolhidos so realmente grandes, por exemplo, o RSA-155
tem o n da chave pblica igual a:
n = 10941738641570527421809707
3220403576120037329454492059
90913842131476349984288934784
71799725789126733249762575289
97818337970765372440271467435
31593354333897
Esse RSA foi quebrado (http://ftp.cwi.nl/
herman/GNFSrecords/GNFS-512) atravs
da tcnica do crivo de corpo numrico.

Seus fatores so os seguintes:


p = 102639592829741105772054196
5739916759007165678080380668
03341933521790711307779
q = 106603488380168454820
92722036001287867 9207 958
575989291522270608237193
062808643

Zn e Dd: Zn Zn so inversas uma


da outra.
Por definio, c = Ee(m) = m e . Ento
temos:

PARA SABER MAIS

c = me --> cd = mde

Nmeros inteiros e criptografia RSA


por S. C. Coutinho
Instituto Nacional de Matemtica
Pura e Aplicada 2003

Agora, como de = 1 (mod (n)), temos que


de = 1 + k(p-1)(q-1). Levando essa expresso na equao anterior, obtemos:

Isso quer dizer que todo o nosso estudo at aqui foi em vo? De maneira
alguma! A chave pblica do RSA-155
foi quebrada (ou seja, encontrados p
e q!!!) utilizando um cluster de 160
workstations Sun que rodou durante
trs meses e meio! Ou seja, ignore

c =m =m

os boatos da Web que afirmam que


um hacker pode decodificar uma
mensagem que enviamos usando um
desses RSA...

que mp-1 = 1 (mod p). Ento:

PORQUE O RSA FUNCIONA?


A demonstrao matemtica de que o
RSA , de fato, um sistema criptogrfico baseada em alguns dos teoremas
que apresentamos ao longo do texto,
mais exatamente o pequeno teorema de
Fermat, o teorema de Euler e o teorema
chins do resto.
Va m o s d e m o n s t r a o p r o p r i a mente dita :
Sejam p e q (n = pq) dois primos mpares diferentes e grandes. Tomemos
0 < m < n= pq, um dos componentes
da mensagem que queremos encriptar.
Como j dissemos, devemos escolher
um inteiro positivo e tal que mdc (e,
(n)) = 1. Com essa escolha, sabemos
que e invertvel, portanto, existe um
inteiro d tal que de = 1 (mod (n)) (ver
adendo no fim desta matria)
Basta mostrar que as funes Ee: Zn

de

1 + k(p-1)(q-1)

= m(m

(p-1)(q-1)k

Agora, h dois casos para analisarmos

Introduo criptografia
por Johannes A. Buchmann
Editora Berkeley 2002

Handbook of Applied Cryptography


por A. Menezes, P. van Oorschot,
and S. Vanstone, CRC Press, 1996
link: http://www.cacr.math.uwaterloo.ca/hc

1) mdc(m,p) = 1
Pelo pequeno teorema de Fermat, temos

mde = m(m (p-1)(q-1)k) = m((1) (q-1)k}= m(mod


p)
--> mde = m (mod p)

Um conto de dois crivos


por Carl Pomerance http://www.
ams.org/notices/199612/pomerance.pdf
Review sobre o criptosistema RSA
http://www.geometer.org/mathcircles/RSA.pdf

2) p divide m
Neste caso, m composto, mas a equao
mde = m (mod p) continua vlida, pois
ambos os termos da equao so iguais
a 0 (mod p).

Communications Security for the Twentyfirst century


The advance encryption system
por Susan Landau http://www.
ams.org/notices/200004/fea-landau.pdf

De forma anloga, temos que mde = m


(mod q).. Agora, pelo teorema chins do
resto, obtemos mde = m (mod pq).
Portanto, Ee o Dd = Dd o Ee = I, ou seja,
as funes so inversas uma da outra.
Adendo: demonstrao de que e invertvel em Z/Z(p-1)(q-1).
De fato, dado e, devemos encontrar um
d tal que ed = 1 (mod (n)). Mas, pelo
teorema de Euler, e (n) = 1 (mod (n)),,
disso obtemos d= e(n) -1}(mod (n)).. Essa
escolha resolve o problema, pois ed
d = ee(n)
-1
= 1 (mod (n)).
hacker.31
hacker.
hacker
.31

Вам также может понравиться