Você está na página 1de 25

Algoritmos de Criptografia RSA

Orientador: Prof. Dr. André Vignatti


Estudante: Thiago Leucz Astrizi

3 de julho de 2015

Orientador: Prof. Dr. André VignattiEstudante: Thiago


Algoritmos
Leucz Astrizi
de Criptografia RSA 3 de julho de 2015 1 / 11
Criptografia de Chave Pública

Criptografando
Alice Bob
SAlice , PAlice SBob , PBob

Orientador: Prof. Dr. André VignattiEstudante: Thiago


Algoritmos
Leucz Astrizi
de Criptografia RSA 3 de julho de 2015 2 / 11
Criptografia de Chave Pública

Criptografando
Alice Bob
SAlice , PAlice SBob , PBob
M 0 = PBob (M) → M0

Orientador: Prof. Dr. André VignattiEstudante: Thiago


Algoritmos
Leucz Astrizi
de Criptografia RSA 3 de julho de 2015 2 / 11
Criptografia de Chave Pública

Criptografando
Alice Bob
SAlice , PAlice SBob , PBob
M 0 = PBob (M) → M0
M = SBob (M 0 )

Orientador: Prof. Dr. André VignattiEstudante: Thiago


Algoritmos
Leucz Astrizi
de Criptografia RSA 3 de julho de 2015 2 / 11
Criptografia de Chave Pública

Criptografando
Alice Bob
SAlice , PAlice SBob , PBob
M 0 = PBob (M) → M0
M = SBob (M 0 )

Fazendo Assinaturas Digitais


Alice Bob
SAlice , PAlice SBob , PBob

Orientador: Prof. Dr. André VignattiEstudante: Thiago


Algoritmos
Leucz Astrizi
de Criptografia RSA 3 de julho de 2015 2 / 11
Criptografia de Chave Pública

Criptografando
Alice Bob
SAlice , PAlice SBob , PBob
M 0 = PBob (M) → M0
M = SBob (M 0 )

Fazendo Assinaturas Digitais


Alice Bob
SAlice , PAlice SBob , PBob
M + M0 ← M 0 = SBob (M)

Orientador: Prof. Dr. André VignattiEstudante: Thiago


Algoritmos
Leucz Astrizi
de Criptografia RSA 3 de julho de 2015 2 / 11
Criptografia de Chave Pública

Criptografando
Alice Bob
SAlice , PAlice SBob , PBob
M 0 = PBob (M) → M0
M = SBob (M 0 )

Fazendo Assinaturas Digitais


Alice Bob
SAlice , PAlice SBob , PBob
M + M0 ← M 0 = SBob (M)
PBob (M 0 ) = M

Orientador: Prof. Dr. André VignattiEstudante: Thiago


Algoritmos
Leucz Astrizi
de Criptografia RSA 3 de julho de 2015 2 / 11
Uso de Chaves no RSA

Chaves
Chave Pública: P = (e, n)
Chave Privada: S = (d, n)

Criptografando
P(M) = M e mod n

Descriptografando
P(M 0 ) = M 0d mod n

Orientador: Prof. Dr. André VignattiEstudante: Thiago


Algoritmos
Leucz Astrizi
de Criptografia RSA 3 de julho de 2015 3 / 11
Função Phi de Euler (φ(n))

Y 1
φ(n) = n (1 − ) , tal que p é primo
p
p|n

Orientador: Prof. Dr. André VignattiEstudante: Thiago


Algoritmos
Leucz Astrizi
de Criptografia RSA 3 de julho de 2015 4 / 11
Gerando Primos Aleatórios

Distribuição de Primos
π(x)
lim =1
x→∞ x/ln(x)

Teste de Primalidade (Pequeno Teorema de Fermat)


ap−1 ≡ 1( mod p), para qualquer número natural a e qualquer primo p
tal que p não divide a.

Orientador: Prof. Dr. André VignattiEstudante: Thiago


Algoritmos
Leucz Astrizi
de Criptografia RSA 3 de julho de 2015 5 / 11
Teste de Primalidade Probabilı́stico

Algoritmo de Fermat

Orientador: Prof. Dr. André VignattiEstudante: Thiago


Algoritmos
Leucz Astrizi
de Criptografia RSA 3 de julho de 2015 6 / 11
Teste de Primalidade Probabilı́stico

Algoritmo de Fermat Algoritmo de Miller-Rabin

Orientador: Prof. Dr. André VignattiEstudante: Thiago


Algoritmos
Leucz Astrizi
de Criptografia RSA 3 de julho de 2015 6 / 11
Fatoração de Inteiros (Algoritmos Ingênuos)

Divisões Sucessivas

O(2 β)

Fatoração de Fermat
Todo número ı́mpar pode ser descrito como a diferença de dois
quadrados.
Se n = a2 − b 2 , então n = (a + b)(a − b)

O(2 β)

Orientador: Prof. Dr. André VignattiEstudante: Thiago


Algoritmos
Leucz Astrizi
de Criptografia RSA 3 de julho de 2015 7 / 11
Fatoração de Inteiros (Algoritmo Rho de Pollard)

1: function Pollard-Rho(n)
2: x1 ← RANDOM(0, n − 1)
3: y ← x1
4: k ←2
5: for i ← 1 to ∞ do
6: 2 − 1) mod n
xi ← (xi−1
7: d ← mdc(y − xi , n)
8: if d 6= 1 e d 6= n then
9: imprima d
10: end if
11: if i = k then
12: y ← xi
13: k ← 2k
14: end if
15: end for
16: end function
Orientador: Prof. Dr. André VignattiEstudante: Thiago
Algoritmos
Leucz Astrizi
de Criptografia RSA 3 de julho de 2015 8 / 11
Fatoração de Inteiros (Método de Kraitchik)

Encontre u 2 ≡ v 2 ( mod n)
Se u 6≡ v ( mod n), então mdc(u − v , n) é fator não-trivial de n
Exemplo: n=2041

Iteração
x 46 47 48 49 50 51 ...
x2 − 2041 75 168 263 360 459 560 ...

Orientador: Prof. Dr. André VignattiEstudante: Thiago


Algoritmos
Leucz Astrizi
de Criptografia RSA 3 de julho de 2015 9 / 11
Fatoração de Inteiros (Método de Kraitchik)

Encontre u 2 ≡ v 2 ( mod n)
Se u 6≡ v ( mod n), então mdc(u − v , n) é fator não-trivial de n
Exemplo: n=2041

Iteração
x 46 47 48 49 50 51 ...
x2 − 2041 75 168 263 360 459 560 ...

Fatoração
75 = 3.52 168 = 23 .3.7
360 = 23 .32 .7 560 = 24 .5.7

Orientador: Prof. Dr. André VignattiEstudante: Thiago


Algoritmos
Leucz Astrizi
de Criptografia RSA 3 de julho de 2015 9 / 11
Fatoração de Inteiros (Método de Kraitchik)

Encontre u 2 ≡ v 2 ( mod n)
Se u 6≡ v ( mod n), então mdc(u − v , n) é fator não-trivial de n
Exemplo: n=2041

Iteração
x 46 47 48 49 50 51 ...
x 2 − 2041 75 168 263 360 459 560 ...

Fatoração Vetor de Expoentes


75 = 3.52 168 = 23 .3.7 75 = (0, 1, 2, 0) 168 = (3, 1, 0, 1)
360 = 23 .32 .7 560 = 24 .5.7 360 = (3, 2, 0, 1) 560 = (4, 0, 1, 1)

Orientador: Prof. Dr. André VignattiEstudante: Thiago


Algoritmos
Leucz Astrizi
de Criptografia RSA 3 de julho de 2015 9 / 11
Fatoração de Inteiros (Método de Kraitchik)

Encontre u 2 ≡ v 2 ( mod n)
Se u 6≡ v ( mod n), então mdc(u − v , n) é fator não-trivial de n
Exemplo: n=2041

Iteração
x 46 47 48 49 50 51 ...
x 2 − 2041 75 168 263 360 459 560 ...

Fatoração Vetor de Expoentes


75 = 3.52 168 = 23 .3.7 75 = (0, 1, 0, 0) 168 = (1, 1, 0, 1)
360 = 23 .32 .7 560 = 24 .5.7 360 = (1, 0, 0, 1) 560 = (0, 0, 1, 1)

Orientador: Prof. Dr. André VignattiEstudante: Thiago


Algoritmos
Leucz Astrizi
de Criptografia RSA 3 de julho de 2015 9 / 11
Fatoração de Inteiros (Algoritmo do Crivo Quadrático)

Crivo de Eratóstenes
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Orientador: Prof. Dr. André VignattiEstudante: Thiago


Algoritmos
Leucz Astrizi
de Criptografia RSA 3 de julho de 2015 10 / 11
Fatoração de Inteiros (Algoritmo do Crivo Quadrático)

Crivo de Eratóstenes
2 3 64 5 66 7 68 9 6 10 11 6 12 13 6 14 15 6 16

Orientador: Prof. Dr. André VignattiEstudante: Thiago


Algoritmos
Leucz Astrizi
de Criptografia RSA 3 de julho de 2015 10 / 11
Fatoração de Inteiros (Algoritmo do Crivo Quadrático)

Crivo de Eratóstenes
2 3 64 5 66 7 68 69 6 10 11 6 12 13 6 14 6 15 6 16

Orientador: Prof. Dr. André VignattiEstudante: Thiago


Algoritmos
Leucz Astrizi
de Criptografia RSA 3 de julho de 2015 10 / 11
Fatoração de Inteiros (Algoritmo do Crivo Quadrático)

Crivo de Eratóstenes
2 3 64 5 66 7 68 69 6 10 11 6 12 13 6 14 6 15

Orientador: Prof. Dr. André VignattiEstudante: Thiago


Algoritmos
Leucz Astrizi
de Criptografia RSA 3 de julho de 2015 10 / 11
Fatoração de Inteiros (Algoritmo do Crivo Quadrático)

Crivo de Eratóstenes
2 3 64 5 66 7 68 69 6 10 11 6 12 13 6 14 6 15
2 3 2 5 61 7 4 3 1 11 2 13 1 1 8

Orientador: Prof. Dr. André VignattiEstudante: Thiago


Algoritmos
Leucz Astrizi
de Criptografia RSA 3 de julho de 2015 10 / 11
Fatoração de Inteiros (Algoritmo do Crivo Quadrático)

Crivo de Eratóstenes
2 3 64 5 66 7 68 69 6 10 11 6 12 13 6 14 6 15
2 3 2 5 61 7 4 3 1 11 2 13 1 1 8

Crivo Quadrático
Para cada primo p menor que a lisura, encontre todos os ai tais que
ai2 − n é múltiplo de p e os marque.
Resolva o problema de dependência linear de seus vetores de
expoentes binários para obter u 2 e v 2
Se u 6≡ v ( mod n), encontramos um fator não-trivial de n.

Orientador: Prof. Dr. André VignattiEstudante: Thiago


Algoritmos
Leucz Astrizi
de Criptografia RSA 3 de julho de 2015 10 / 11
FIM

Orientador: Prof. Dr. André VignattiEstudante: Thiago


Algoritmos
Leucz Astrizi
de Criptografia RSA 3 de julho de 2015 11 / 11