Criptografia RSA
Por que o RSA funciona?
Fatoração
Primalidade
Números Primos e Criptografia RSA
Jean Carlo Baena Vicente
Matemática - UFPR
Orientador:
Carlos Henrique dos Santos
6 de outubro de 2013
Referências
Criptografia RSA
Por que o RSA funciona?
Fatoração
Sumário
Criptografia RSA
Por que o RSA funciona?
Fatoração
Primalidade
Referências
Primalidade
Referências
Criptografia RSA
Por que o RSA funciona?
Fatoração
Primalidade
Referências
Motivação
O método de criptografia RSA foi desenvolvido por Ron Rivest,
Adi Shamir e Leonard Adleman, é fundamentado pela área da
matemática denominada Teoria de Números, hoje é o algoritmo de
chave pública mais utilizado ao redor do mundo.
Criptografia RSA
Por que o RSA funciona?
Fatoração
Primalidade
Pré-codificação
Neste primeiro momento é necessário transcrever a mensagem a
ser criptografada, por meio de uma conversão de letras em
números, por exemplo:
A=10
B=11
C=12
D=13
E=14
F=15
G=16
H=17 . . .
I =18
J =19
Alguns cuidados devem ser tomados!
Referências
Criptografia RSA
Por que o RSA funciona?
Fatoração
Primalidade
Referências
Pré-codificação
Em seguida, deve-se conhecer o número n = pq, onde p e q são
números primos distintos, n é chamado de chave pública, e agora a
mensagem transcrita deve ser quebrada em blocos, e cada um
destes deve ser menor que n, por exemplo:
Se a mensagem, já transcrita, for:
2510271029349914992118231310
Uma das formas de se formar blocos é:
25 − 102 − 7 − 102 − 93 − 49 − 91 − 49 − 92 − 118 − 23 − 13 − 10
Criptografia RSA
Por que o RSA funciona?
Fatoração
Primalidade
Codificando
Para codificar a mensagem serão necessários os números n e um
número e inversı́vel módulo φ(n), ou seja, mdc(e, φ(n)) = 1.
Como p e q são primos, φ(n) é facilmente calculado.
φ(n) = (p − 1)(q − 1)
Cada um dos blocos da mensagem será codificado da seguinte
forma:
C (b) = b e (mod n)
Onde b é o bloco a ser codificado.
Referências
Criptografia RSA
Por que o RSA funciona?
Fatoração
Primalidade
Referências
Codificando
Usando o exemplo anterior, onde os blocos da mensagem eram:
25 − 102 − 7 − 102 − 93 − 49 − 91 − 49 − 92 − 118 − 23 − 13 − 10
Tomando os primos p = 11 e q = 13, obtemos que n = pq = 143.
Tomando agora e = 7, pode-se fazer a codificação da mensagem
acima:
64 − 119 − 6 − 119 − 102 − 36 − 130 − 36 − 27 − 79 − 23 − 117 − 10
Criptografia RSA
Por que o RSA funciona?
Fatoração
Primalidade
Referências
Decodificando
Observando o processo de codificação dos blocos da mensagem, é
natural imaginar o que deverá ser feito para decodifica-los.
Basta tomar d o inverso de e módulo φ(n), então faz-se:
D(C (b)) = C (b)d (mod n)
A existência de d é garantida pelo teorema de Bézout, no exemplo,
como e = 7, temos d = 103, realizando os cálculos acima na
mensagem codificada:
25 − 102 − 7 − 102 − 93 − 49 − 91 − 49 − 92 − 118 − 23 − 13 − 10
Obtemos:
64 − 119 − 6 − 119 − 102 − 36 − 130 − 36 − 27 − 79 − 23 − 117 − 10
Criptografia RSA
Por que o RSA funciona?
Fatoração
Primalidade
Referências
Por que funciona?
Para garantir que, independente dos valores de p, q, e e d
utilizados, a mensagem decodificada será fiel à original deve-se
mostrar que D(C (b)) = b, ou seja:
b de ≡ b(mod n)
Isto não é tão óbvio pois não é certo que mdc(b, n) = 1, logo não
pode-se aplicar diretamente o teorema de Euler, mas é fácil ver
que, como de = 1 + kφ(n) = 1 + k(p − 1)(q − 1), temos:
b de ≡ b(mod p)
Caso mdc(p, b) = 1, e também quando p | b. As mesmas relações
valem para q.
Criptografia RSA
Por que o RSA funciona?
Fatoração
Primalidade
Por que funciona?
Basta agora usar o seguinte lema:
Lema
Sejam a e b, dois inteiros coprimos, se a | c e b | c, então o
produto ab | c.
Como vimos, p | b de − b e q | b de − b, como p e q são primos
concluı́mos, pelo lema acima, que
b de ≡ b(mod pq)
Referências
Criptografia RSA
Por que o RSA funciona?
Fatoração
Primalidade
Referências
Segurança
A segurança depende do quão difı́cil será decompor n, então os
primos p e q devem ser tomados com cautela, afim de que não
sejam facilmente descobertos.
Dependendo da escolha dos primos pode-se garantir que o sistema
será seguro durante anos, mas o que deve ser levado em
consideração para decidir quais primos serão utilizados?
Criptografia RSA
Por que o RSA funciona?
Fatoração
Primalidade
Referências
Fatoração usual
Algoritmo (Usual de Fatoração)
Etapa1: Comece fazendo F = 2
Etapa2: Se n/F é inteiro então F é fator de n; caso contrário vá
para a etapa 3.
Etapa3: Incremente F de uma unidade e vá para a etapa 4.
√
Etapa4: Se F n então n é primo; caso contrário volte à etapa 2.
O algoritmo usual de fatoração é menos eficiente quanto maiores
forem os fatores do número a ser decomposto.
Criptografia RSA
Por que o RSA funciona?
Fatoração
Primalidade
Referências
Fatoração por Fermat
Algoritmo (Fermat)
√
Etapa1: Comece com x = n, se n = x 2 então x é fator de n;
caso contrário vá para a etapa 2.
√
Etapa2: Incremente x de uma unidade e calcule y = x 2 − n.
Etapa3: Repita a etapa 2 até encontrar um valor inteiro para y , ou
até que x seja igual a (n + 1)/2; no primeiro caso n tem fatores
x + y e x − y , no segundo n é primo.
O algoritmo de Fermat encontrará facilmente fatores que são
relativamente próximos um ao outro.
Criptografia RSA
Por que o RSA funciona?
Fatoração
Primalidade
Referências
Primos Populares
Então deve-se impor certas condições aos primos utilizados no
RSA, afim de que a codificação atinja um certo nı́vel de segurança,
para encontrar estes números, se faz necessário o uso de algumas
ferramentas.
Computacionalmente falando, o método mais facil de se encontrar
estes números é fazer uso de funções que possam gerar primos,
algumas destas funções são bastante conhecidas.
Criptografia RSA
Por que o RSA funciona?
Fatoração
Primalidade
Números de Mersenne
Os números de Mersenne são os números da seguinte forma:
Mn = 2n − 1
É sabido que se o número Mn é primo, então n também será um
número primo. Infelizmente a reciproca desta afirmação não é
válida.
Referências
Criptografia RSA
Por que o RSA funciona?
Fatoração
Primalidade
Referências
Números de Fermat
Os números de Fermat seguem a seguinte regra:
Fn = 2n + 1
Pode-se mostrar que, quando Fn é primo, n será uma potência de
dois. A recı́proca também falha nesta afirmação.
Criptografia RSA
Por que o RSA funciona?
Fatoração
Primalidade
Referências
Famı́lias de Primos
Obviamente os números de Mersenne e Femat não serão úteis para
os fins do RSA, mas existe uma infinidade de famı́lias de primos
que podem ser utilizadas.
Teorema (Dirichlet)
Sejam a, b ∈ N, tais que mdc(a, b) = 1 então a progressão
aritmética:
an = a + nb
Contém infinitos números primos.
Criptografia RSA
Por que o RSA funciona?
Fatoração
Primalidade
Referências
Pseudoprimos
Pelo teorema de Fermat podemos compreender o que são números
pseudoprimos.
Teorema
Se n > 0 e 1 < b < n são números inteiros e b n−1 6≡ 1(mod n),
então n é um número composto.
O número b é uma de testemunha de que n é composto.
Criptografia RSA
Por que o RSA funciona?
Fatoração
Primalidade
Referências
Teste de Lucas
Teorema
Seja n > 0 um inteiro tal que
n − 1 = p1e1 . . . prer
onde p1 < · · · < pr são primos. Se, para cada i = 1, . . . , r
existirem inteiros positivos bi (2 ≤ bi ≤ n − 1) que satisfaçam
bin−1 ≡ 1(mod n)
(n−1/pi )
bi
6≡ 1(mod n),
então n é primo.
Este algoritmo é bastante eficiente para determinar primalidade de
números como os de Fermat.
Criptografia RSA
Por que o RSA funciona?
Fatoração
Primalidade
Referências
Referências
S. C. Coutinho: Números Inteiros e Criptografia RSA. Instituto
Nacional de Matemática Pura e Aplicada - IMPA. 2009.
S. C. Coutinho: Criptografia. Programa de Iniciação Cientı́fica
OBMEP. 2009.
RSA Algorithm. xtrmntr.org/priikone/docs/rsa.pdf. Acessado
em 06/05/2013.
Download

Números Primos e Criptografia RSA - PET Matemática