You are on page 1of 11

O Algoritmo de Criptograa RSA

Thiago Leucz Astrizi


21 de agosto de 2014
1 Introducao
O RSA e um sistema criptograco descrito publicamente pela primeira vez em
1977, embora fosse conhecido e mantido em segredo por pessoas do servi co se-
creto brit anico desde 1973. Seu inventor aparentemente foi o matematico e
cript ografo Cliord Cocks. O nome do algoritmo se deve `as iniciais dos pes-
quisadores Ron Rivest, Adi Shamir and Leonard Adleman, os quais foram os
primeiros a descrever o algoritmo publicamente apos te-lo descoberto de maneira
independente [5].
A sua mais marcante caracterstica e o fato de ter sido o primeiro sistema
criptograco de chave-p ublica (ou de criptograa assimetrica), que permitia
que as chaves necessarias para produzir a encriptacao pudessem ser distribudas
publicamente, sem que isso comprometesse a seguranca.
Sistemas criptogracos desta natureza s ao formados por tres algoritmos dife-
rentes. O primeiro recebe como entrada uma mensagem e uma chave, retornando
ent ao uma versao cifrada da mensagem. O segundo recebe mensagens cripto-
grafadas e uma outra chave e com isso retorna a mensagem original descripto-
grafada. As chaves para criptografar e descriptografar s ao sempre diferentes e
s ao retornadas pelo terceiro algoritmo do sistema.

E o fato de serem diferentes as chaves usadas para criptografar e descrip-


tografar que mantem o sistema seguro mesmo que o meio usado para a troca
de chaves nao seja seguro. Se Alice e Bob desejam trocar mensagem usando o
RSA, cada um deles s o precisa enviar para o outro a chave necessaria para crip-
tografar (denominada chave p ublica), enquanto mantem em segredo a chave
para descriptografar (denominada chave privada).
Seja M uma mensagem qualquer, P(M) o resultado da aplica cao do algo-
ritmo de encriptacao para uma dada chave p ublica e a mensagem M e S(M

)
o resultado da aplica cao do algoritmo de decriptacao usando a chave privada
correspondente `a chave p ublica usada por P para uma mensagem M

qualquer.
Conforme visto, no RSA S(P(M)) = M, e e isso que garante a funcionalidade da
criptograa do sistema. Entretanto, o RSA tambem tem a propriedade notavel
de que P(S(M)) = M. Esta e a caracterstica suciente para demonstrar que o
RSA tambem pode ser usado para autenticar mensagens por meio de assinaturas
digitais.
1
Isso ocorre porque se Alice e Bob possuem cada um as suas proprias chaves
privadas e tambem a cheve p ublica um do outro, se Alice deseja provar que foi
ela que enviou uma mensagem M, basta ela anexar `a ela uma assinatura S(M).
Quando Bob receber a mensagem, ele pode vericar ent ao que P(S(M)) = M,
e isso comprova a autoria da mensagem, ja que somente Alice possui a chave
privada necessaria para calcular S(M).
Naturalmente, para que o sistema seja comprovadamente seguro e funcional,
tambem e necessario que S(M) e P(M) possam ser computados em tempo
polinomial quando sabe-se qual e a chave adeq uada e tambem que nao seja
possvel computar em tempo polinomial S(M) quando nao conhecemos qual a
chave privada, ainda que tenhamos acesso `a todas as outras informacoes usadas
pelo sistema.
A primeira destas propriedades sera demonstrada e analizada no presente
trabalho. A segunda ate o presente momento nunca foi demonstrada e perma-
nece sendo uma conjectura.
2 Teoria dos N umeros
Antes de denir as funcoes P(M) e S(M), bem como o modo de ger a-las no
RSA, precisa-se denir os seguintes conceitos de Teoria dos N umeros:
Deni cao 1 Diz-se que um n umero inteiro a divide outro n umero inteiro b
quando existe um inteiro q tal que aq = b. Caso em que podemos tambem dizer
que b e m ultiplo de a e que tanto a como q s ao divisores de b. Representamos
tal propriedade com a notac ao a|b.
Deni cao 2 Dizemos que dois n umeros s ao primos entre si quando o unico
divisor em comum entre eles e o n umero 1. Quando um n umero positivo e primo
em rela c ao `a todos os outros n umeros positivos menores que ele, dizemos que
ele e um n umero primo.
Uma propriedade interessante e que para todo n umero inteiro maior que 1,
existe um conjunto unico de divisores primos que ele possui. Tal propriedade
foi demonstrada pela primeira vez no livro VII dos Elementos de Euclides, onde
as proposicoes 30 e 32 respectivamente a denem e provam. Tal propriedade e
conhecida como Teorema Fundamental da Aritmetica.
Teorema 1 Teorema Fundamental da Aritmetica: Todo inteiro positivo
maior que 1 pode ser representado como um produto de potencias de primos:
n = p
a
1
1
p
a
2
2
. . . p
a
k
k
=

k
i=1
p
a
i
i
Prova: Comecamos demonstrando que tal produto de primos sempre existe
para todo n > 1 inteiro e positivo. Somente em seguida demonstramos que tal
produto e unico.
A existencia de tal produto pode ser emonstrada por indu c ao ao observarmos
que o n umero 2 tem esta propriedade. Tanto o 2 como qualquer outro primo
2
podem ser representados trivialmente como eles proprios elevados `a 1 e todos
os primos anteriores elevados `a 0. Assumindo que a propriedade e v alida para
todos os n umeros entre 2 e a, com a 2 e seja b = a + 1 sendo que b nao e
primo. Por nao ser primo, podemos separar b em dois divisores: b
1
e b
2
sendo
b = b
1
b
2
. Como b
1
< b e b
2
< b, ent ao os dois divisores podem ser representados
como um produto de potencias de primos. Seja b
1
=

k
1
i=1
p
i
e b
2
=

k
2
i=1
p
i
. E
como b e resultante da multiplica cao de ambos, b tambem pode ser representado
como um produto de potencias de primos.
A unicidade de tal produto de potencias pode ser demonstrada com a ajuda
do Lema de Euclides, outro teorema importante apresentado e provado por
Euclides. Segundo este lema, se p divide o produto de dois n umeros naturais a
e b, ent ao p divide ou a ou b ou ambos.
Sendo assim, podemos fazer uma prova por redu cao ao absurdo assumindo
que um certo n > 1 inteiro e positivo pode ser expresso como dois produtos
diferentes de primos: p
1
p
2
. . . p
k
e q
1
q
2
. . . q
k
. Segundo o Lema de Euclides,
p
1
deve ser capaz de dividir algum dos fatores do segundo produto. Contudo,
cada um deles e primo. Portanto, o valor q
i
que ele divide s o pode ser igual `a
ele mesmo. O mesmo racioccio pode ser aplicado para p
2
e todos os demais
fatores do primeiro produto. Sendo assim, para cada fator do primeiro produto
existe um fator identico no segundo e vice-versa. Logo, ambos os produtos s ao
identicos.
Q.E.D.
Teorema 2 Lema de Euclides: Dado um n umero primo p e dois n umeros
a, b N. Se p|ab e p nao divide a, entao p|b.
Prova: A prova deste lema tem como pre-requisito a Identidade de Bezout,
a qual provaremos logo em seguida. Segundo a identidade, se d e o maior divisor
em comum entre dois n umeros x e y, enstao existem r e s tal que rx + sy = d.
Pela hip otese do lema, temos que p nao divide a. Sendo p primo, a tambem
nao divide p. Portanto, o maior divisor em comum que ambos os n umeros
possuem e 1.
Pela Identidade de Bezout, existem ent ao r e s tal que rn+sa = 1. Podemos
multiplicar ambos os lados da igualdade por b obtendo brn+bsa = b. Temos que
o primeiro fator desta soma (brn) claramente e um m ultiplo de n. Ja o segundo
fator (bsa) e um m ultiplo de ab, o qual e um m ultiplo de n pela hip otese do
lema. Portanto, b e o resultado da soma de dois m ultiplos de n o que nos mostra
que b s o pode ser um m ultiplo de n. Logo, n|b.
Q.E.D.
Teorema 3 Identidade de Bezout: Seja d o maior divisor comum entre a
e b, entao existem r e s tal que ra + sb = d.
Prova: Tomemos d como sendo o menor inteiro positivo tal que d = ra+sb.
Provaremos agora que d e o maior divisor comum de a e b.
Supondo que estamos dividindo a ou b por d e estamos interessados em
extrair o resto da divisao. Podemos concluir que o resto tambem pode ser
3
escrito como ax+by, pois ele pode ser obtido subtraindo de a ou b um m ultiplo
de d (que e igual `a ra +sb). Entretanto, d ja e o menor valor positivo que pode
ser escrito desta forma. Como o resto da divisao deve ser menor que d, o resto
portanto s o pode ser igual `a zero. O que demonstra que d|a e d|b.
Para provar agora que d e o maior divisor existente, basta assumirmos um
n umero qualquer e tal que e = d, e|a e e|b. Temos agora que provar que e < d.
Como e|a e e|b, ent ao e|(ra + sb). Portanto, e|d. Como e = d, e s o pode ser
menor do que d. Portanto, d s o pode ser o maior m ultiplo comum de a e b.
Q.E.D.
Deni cao 3 mod e uma operac ao binaria denida da seguinte forma para
quaisquer n umeros reais x e y:
xmod y = x y
x
y
, para y = 0
Teorema 4 0 a mod b < b
Prova: Para provarmos que 0 a mod b, vamos comear supondo por redu cao
ao absurdo que a mod b < 0:
a mod b < 0
a b
a
b
< 0
b
a
b
< a
b
a
b
> a

a
b
>
a
b
E isso e absurdo pela denicao da funcao piso. Ja para provar que a mod b < b,
suporemos por redu cao ao absurdo que a mod b b:
a mod b b
a b
a
b
b
b
a
b
a b

a
b

a b
b

a
b

a b
b

a
b

a
b
1
O que tambem e um absurdo pela denicao de piso.
Q.E.D.
Deni cao 4 Existe uma relacao de congruencia em um dado m odulo m en-
tre dois n umeros a e b (denota-se a b( mod m)) quando a seguinte propriedade
se verica:
a mod m = b mod m
Teorema 5 Para todo a, p R, existe 0 b < p tal que a b( mod p)
4
Prova: Para provar tal teorema, iremos demonstrar que se 0 b < p, ent ao
b mod p = b. Isso e suciente, pois pelo princpio da casa dos pombos, se obtemos
todos os valores possveis da opera cao mod p com valores b que possuem tal
prpriedade, ent ao para todo a > b, tem-se que a mod p e igual `a algum valor b,
e portanto, e igual `a b mod p. Como 0 b < p: b mod p = b p
b
p
= b 0 = b.
Q.E.D.
Tal teorema e bastante util para provar propriedades envolvendo opera coes
mod. Gra cas `a ele, em muitos casos, quando queremos provar uma propriedade
para todos os n umeros envolvidos em uma opera cao assim, basta provarmos tal
propriedade para valores menores que o modulo da opera cao.
Deni cao 5 Diz-se que um n umero a e inverso multiplicativo de outro
n umero b, m odulo m quando:
ab 1( mod m)
Deni cao 6 A Fun cao Phi de Euler ( : N N) e denida como:
(n) = n

p|n
(1
1
p
) , tal que p e primo
A funcao acima foi apresentada por Leonhard Euler e usada para demonstrar
propriedades de exponencia cao modular em 1760. Iremos apresent a-la e us a-la
pelos mesmos motivos.
Teorema 6 Se a e b s ao primos entre si, (ab) = (a)(b)
Prova: Se a e b s ao primos entre si, eles nao possuem fatores primos em comum.
Portanto, todos os fatores primos de ab podem ser particionados entre fatores
de a e fatores de b. Com isso:
(ab) = ab

p|ab
(1
1
p
)
= a

p|a
(1
1
p
)b

q|b
(1
1
q
)
= (a)(b)
3 O Algoritmo RSA
O algoritmo assume que a mensagem a ser criptografada e assinada e um n umero
inteiro de tamanho arbitrario. Para criptografar cadeias de caracteres, normal-
mente utilizam-se os bytes da mensagem de texto original ap os passar por al-
gum esquema de preenchimento (padding) que serve para aumentar a seguranca
5
contra alguns ataques e para dicultar a obten cao de alguns detalhes como o
tamanho exato da mensagem original. Como exemplo de algoritmo usado para
gerar o preenchimento, pode-se citar o OAEP (Optimal asymmetric encryption
padding) [2].
No presente captulo iremos nos concentrar primariamente no algoritmo do
RSA, que assume que o a mensagem a ser transmitida ja passou pelo esquema
de preenchimento e se apresenta como um n umero inteiro positivo.
O funcionamento do algoritmo RSA envolve tres passos: a gera cao de chaves,
criptografar e descriptografar. Basicamente as chaves s ao pares de n umeros que
podem ser usados para gerarmos as funcoes S
a
(M) e P
a
(M) para uma dada
pessoa a. Sempre s ao geradas duas chaves: uma p ublica (` a partir da qual pode-
se gerar facilmente P
a
) e uma privada e secreta (` a partir da qual pode-se gerar
facilmente S
a
). Para gerar as chaves, usa-se o seguinte metodo:
1: function RSA-gera-chave
2: p, q primos grandes distintos
3: n pq
4: (n) (p 1)(q 1)
5: e primo pequeno, primo em rela cao `a (n)
6: d inverso multiplicativo de e, modulo (n)
7: Chave P ublica (n, e)
8: Chave Privada (n, d)
9: retorne (Chave P ublica, Chave Privada)
10: end function
A denicao do processo de gera cao de chaves e vago ao nao denir exata-
mente o que seria um n umero primo grande e pequeno. Como sera visto
posteriormente, e importante para a seguranca do RSA que tais n umeros pri-
mos grandes ao serem multiplicados gerem resultados que nao possam ser
fatorados em tempo habil. Isso e algo que muda de acordo com os avancos tec-
nologicos, que fazem com que um n umero grande demais para ser fatorado hoje
possa ser fatorado futuramente. O algoritmo usa tais n umeros primos gran-
des para gerar um novo valor formado pela multiplica cao de dois primos. Tais
n umeros que podem ser gerados pela multiplica cao de apenas dois primos s ao
chamados de semi-primos.
Normalmente as implementa coes do algoritmo em programas de computador
assumem como valores grandes n umeros representados em 1024 bits ou mais.
O maior n umero formado pela multiplica cao de dois primos desconhecidos que ja
foi fatorado tinha 768 bits. [3] Isso faz com que muitos acreditem que o valor de
1024 bits e adequado para a maioria dos propositos. Entretanto, em 2003, Adi
Shamir e Eran Tromer projetaram uma maquina dedicada `a calcular a fatora cao
de n umeros chamada TWIRL, que seria capaz de fatorar n umeros semi-primos
de 1024 bits em um ano, ao custo de algumas dezenas de milh oes de dolares [4].
A maquina calculava de maneira paralelizada o Algoritmo do Crivo Geral
do Corpo Numerico. Isso fez com que muitas pessoas passassem a considerar
como grandes o bastante somente n umeros com 2048 bits ou mais, embora a
constru cao de tal maquina nunca tenha sido documentada.
6
Ja para o valor pequeno de e, requere-se somente que ele seja menor que
(n). Freq uentemente usa-se na pratica o n umero 65537 como valor de e, por
ser o maior primo conhecido que pode ser representado como 2
2
n
+1 para n N
(no caso, n = 4) e que por isso e um n umero notorio, amplamente estudado e
que pode ser computado rapidamente em computadores bin arios atraves de su-
cessivos deslocamentos de bits `a esquerda. Pode ser tentador usar um n umero
menor para melhorar a eciencia do processo de criptograa e de vericar assi-
naturas (tal valor e usado como expoente durante tais opera coes). Entretanto,
sabe-se que valores muito pequenos para e acabam inserindo vulnerabilidades
no algoritmo, que podem permitir descriptografar conte udos sem ter a chave
adequada e forjar assinaturas [1].
Para criptgrafar um dado n umero M < n, transformando-o ent ao no n umero
cifrado M

por meio da chave p ublica (n, e), basta computarmos M

usando a
funcao P
a
(M) denida da seguinte forma:
M

= P
a
(M) = M
e
mod n
Ja a opera cao inversa, de descriptografar um valor M

para se obter a men-


sagem original M, pode ser feita por meio da chave privada (n, d), computando
M com a funcao S
a
(M

) denida da seguinte forma:


M = S
a
(M

) = M
d
mod n
3.1 Provando a Funcionalidade da Criptgraa RSA
Para demonstrar que podemos usar o RSA para criptografar dados, temos que
provar que
S
a
(P
a
(M)) = M
Pela denicao das funcoes S
a
e P
a
, temos que:
S
a
(P
a
(M)) = (M
e
mod n)
d
mod n
Antes de provar a formula acima, sera necessario simplic a-la um pouco.
Para isso, precisaremos demonstrar os seguintes teoremas:
Teorema 7 ((a mod n)(b mod n)) mod n = ab mod n, se a, b Z
Prova:
((a mod n)(b mod n)) mod n = ((a n
a
n
)(b n
b
n
)) mod n
7
= (ab na
b
n
nb
a
n
+ n
2

a
n

b
n
) mod n
= (ab n(a
b
n
+ b
a
n
n
a
n

b
n
)) mod n
= (ab n(a
b
n
+ b
a
n
n
a
n

b
n
)) n
(ab n(a
b
n
+ b
a
n
n
a
n

b
n
))
n

= (ab n(a
b
n
+ b
a
n
n
a
n

b
n
)) n
ab
n
a
b
n
b
a
n
+ n
a
n

b
n

= ab n(a
b
n
+ b
a
n
n
a
n

b
n
+
ab
n
a
b
n
b
a
n
+ n
a
n

b
n
)
E como a, b Z:
= ab n(a
b
n
a
b
n
+ b
a
n
b
a
n
+ n
a
n

b
n
n
a
n

b
n
+
ab
n
)
= ab n
ab
n

= (ab) mod n
Q.E.D.
Corolario 1 (a mod n)
b
mod n = a
b
mod n
Prova: O corolario e uma conseq uencia da denicao da exponencia cao e pode
ser demonstrado por indu cao sobre o valor de b:
Base: Para b = 0, temos que:
(a mod n)
0
mod n = 1 mod n = a
0
mod n
Passo Indutivo: Assumindo que a propriedade e v alida para um valor k
(ou seja: (a mod n)
k
mod n = a
k
mod n), devemos provar ent ao que e v alida
para k + 1 (ou seja, que (a mod n)
k+1
mod n = a
k+1
mod n):
(a mod n)
k+1
mod n = (a mod n)
k
(a mod n) mod n
= (a
k
mod n)(a mod n) mod n
= aa
k
mod n
= a
k+1
mod n
Q.E.D.
Gra cas `a este corolario, podemos ent ao simplicar a formula que queremos
demonstrar ser ig ual ao valor de M:
S
a
(P
a
(M)) = (M
e
mod n)
d
mod n = M
ed
mod n
8
Agora, para provarmos que o RSA funciona, basta provarmos que M
ed
mod n =
M. Isso nos remete ao problema de identicar quando um n umero elevado `a
outro e igual `a ele mesmo em aritmetica modular. O primeiro a identicar uma
propriedade que garanta que garante que isso ocorra foi Pierre de Fermat em
1640. Ele enunciou na epoca o seguinte teorema:
Teorema 8 Pequeno Teorema de Fermat: a
p
a( mod p), para qualquer
inteiro a e qualquer n umero primo p.
Prova: O modo mais facil de prov a-lo e por meio de indu cao sobre o valor de
a. Isso prova o teorema verdadeiro para todo a natural, mas nao para todo a
inteiro. Entretanto, para o nosso objetivo de provar a funcionalidade do RSA,
isso e o suciente.
Base: Para a = 0, temos que provar ent ao que 0
p
0( mod p). Que pela
denicao, e o mesmo que 0
p
mod p = 0 mod p. Como 0
p
= 0 para qualquer p
primo, a propriedade e v alida em seu valor base.
Passo Indutivo: Assumindo que a propriedade e v alida para a = k, temos
ent ao que k
p
mod p = k mod p. Temos ent ao que provar que ela continua v alida
para a = k + 1, ou seja, que a expressao abaixo e ig ual `a k + 1 mod p:
(k + 1)
p
mod p = (
p

i=0

p
i

k
pi
) mod p
= (
p

i=0
p!
i!(p i)!
k
pi
) mod p
= k
p
+ (
p1

i=1
p!
i!(p i)!
k
pi
) + 1 mod p
Como p e primo e cada um dos termos
p!
i!(pi)!
e um inteiro, ent ao isolando
p, temos que cada termo resultante
(p1)!
i!(pi)!
tambem e inteiro. Sendo assim,
p
(p1)!
i!(pi)!
e um m ultiplo de p, o que nos permite simplicar a equacao e provar o
teorema:
(k + 1)
p
mod p = k
p
+ p(
p1

i=1
(p 1)!
i!(p i)!
k
pi
) + 1 mod p
= k
p
+ 1 mod p
= ((k
p
mod p) + (1 mod p)) mod p
= ((k mod p) + (1 mod p)) mod p
= (k + 1) mod p
Q.E.D.
9
Corolario 2 Se p |a, entao a
p1
1 mod p
Prova: Pelo Pequeno Teorema de Fermat:
a
p
mod p = a mod p
a
p
p
a
p
p
= a p
a
p

Assumindo que a < p:


a
p
p
a
p
p
= a
a
p1

p
a

a
p
p
= 1
a
p1

p
a
a
a
p1
p
= 1
Como p |a:
a
p1

ap
a

a
p1
p
= 1
a
p1
p
a
p1
p
= 1
a
p1
mod p = 1
Para mostrar que isso funciona tambem para quando a > p, basta demons-
trar que se a mod p = c mod p, ent ao a
n
mod p = c
n
mod p. Pois ent ao, como
existe um valor c < p tal que a mod p = c mod p (pelo Teorema 5) e a proprie-
dade acima vale para c
p1
como acabamos de demonstrar, ent ao a propriedade
tambem vale para a
p1
. Demonstrar a propriedade acima e facil, gracas ao
Corolario 1 que provamos `a pouco:
a mod p = c mod p (a mod p)
n
= (c mod p)
n
(a mod p)
n
mod p = (c mod p)
n
mod p
a
n
mod p = c
n
mod p
Q.E.D.
Por mais interessante a propriedade demonstrada pelo Pequeno Teorema
de Fermat, ela ainda nao e util para demonstrar que M
ed
mod n = M. Pois
neste caso, ed = n e n nao e primo. Apesar disso, tal teorema pode ser genera-
lizado pelo Teorema de Euler, demonstrado por Leonhard Euler em 1763:
10
Referencias
[1] Dan Boneh. Twenty years of attacks on the rsa cryptosystem. NOTICES
OF THE AMS, 46:203213, 1999.
[2] J. Jonsson and B. Kaliski. Public-Key Cryptography Standards (PKCS) #1:
RSA Cryptography Specications Version 2.1. RFC 3447 (Informational),
February 2003.
[3] Thorsten Kleinjung, Kazumaro Aoki, Jens Franke, Arjen Lenstra, Emma-
nuel Thome, Joppe Bos, Pierrick Gaudry, Alexander Kruppa, Peter Mont-
gomery, Dag Arne Osvik, Herman te Riele, Andrey Timofeev, and Paul
Zimmermann. Factorization of a 768-bit rsa modulus. Cryptology ePrint
Archive, Report 2010/006, 2010. http://eprint.iacr.org/.
[4] Adi Shamir and Eran Tromer. Factoring large number with the twirl de-
vice. In Advances in Cryptology - CRYPTO 2003, 23rd Annual Internatio-
nal Cryptology Conference, Santa Barbara, California, USA, August 17-21,
2003, Proceedings, volume 2729 of Lecture Notes in Computer Science, pages
126. Springer, 2003.
[5] Nigel Smart. Dr cliord cocks cb. http://www.bristol.ac.uk/pace/
graduation/honorary-degrees/hondeg08/cocks.html, February 2008.
Accessado em: 2013-10-30.
11

You might also like