Formulas para numeros primos 1ed - eric campos bastos guedes
Criptografia RSA: Fundamentos e aplicação da criptografia de chaves públicas
1. Universidade Federal De Minas
Gerais
Criptografia RSACriptografia RSA
Fundamentos De ÁlgebraFundamentos De Álgebra
Alexandre Elias Dos SantosAlexandre Elias Dos Santos
aleniac@ufmg.braleniac@ufmg.br
13 de Novembro de 201513 de Novembro de 2015
2. O Que É Criptografia?
● A criptografia, palavra de origem grega (kryptos,
escondido, gráphein, escrita), é o estudo dos
métodos de codificação de informação através do
uso de chaves que são utilizadas no processo.
● É a arte de embaralhar caracteres de uma
mensagem de forma que esta fique ilegível.
● A criptografia de chave pública, também conhecida
como criptografia de chaves assimétricas, é
baseada em algorítimos que requerem um par de
chaves: uma secreta (privada) e outra pública que
pode ser conhecida por todos.
3. Exemplo De Uso De Chaves
Assimétricas
Chave Privada
Chave Pública
1) O remetente solicita ao
destinatário uma chave para
codificar a informação.
Por sua vez, este gera um
par de chaves assimétricas.
2) A chave privada é mantida
em segredo e a pública é
enviada ao remetente.
3) O remetente usa a chave
pública para codificar a
mensagem e encaminha
esta ao destinatário.
4) O destinatário decodifica a
mensagem utilizando chave
privada e obtém a
informação.
Remetente Destinatário
Key
4. Criptografia RSA
● A criptografia RSA é o método de chave
pública mais utilizado no tráfego de dados na
internet, como por exemplo, em mensagens de
e-mail e compras online.
● Foi criada em 1978 pelos professores Ronald
Rivest, Adi Shamir e Leonard Adleman do
Instituto de Tecnologia de Massachusetts
(MIT).
● O RSA fundamenta-se na Teoria dos Números,
área clássica da matemática.
5. Método RSA
● O RSA basea-se na construção de um número
composto resultante de dois fatores primos grande, no
mínimo 100 dígitos.
● A segurança está na dificuldade de fatorar números
compostos essencialmente grandes em seus
componentes primos.
● Alguns teoremas importantes para a implementação
são:
➢ Teorema Fundamental da Aritmética;
➢ Teorema de Euler;
➢ Pequeno Teorema de Fermat;
➢ Algorítimo estendido de Euclides.
6. Passo Inicial
● O passo zero da codificação é gerar
aleatoriamente dois números primos
grandes p e q, obtendo, portanto, um
número composto n:
n = p x qn = p x q
● Utilizamos o exemplo dado por S. C.
Coutinho escolhendo p = 11 e q = 13 e,
portanto, n = 143.
7. Pré-codificação
● O primeiro passo é digitalizar os caracteres
utilizando-se uma tabela para conversão.
● Como exemplo, digitalizamos apenas
caracteres alfabéticos.
A B C D E F G H I J K L M
10 11 12 13 14 15 16 17 18 19 20 21 22
N O P Q R S T U V W X Y Z
23 24 25 26 27 28 29 30 31 32 33 34 35
Tabela 1 - Caracteres alfabéticos codificados.
8. Pré-codificando Uma Mensagem
● Codificamos a mensagem Paraty é linda:
P A R A T Y E L I N D A
25 10 27 10 29 34 99 14 99 21 18 23 13 10
Note que o caractere espaço corresponte ao número 99.
9. Quebra Da Mensagem Em
Blocos
● Obtemos então um bloco único:
25251010272710102929343499991414999921211818232313131010
● O próximo passo é quebrar este código em blocos
menores que denotaremos por m, tal que 0 < m < n.
25 102 7 102 93 49 91 49 92 118 23 13 1025 102 7 102 93 49 91 49 92 118 23 13 10
Note que m não deve começar com 0. Isto evita
problemas na decodificação.
10. Criação Da Chave Pública E
Codificação
1) Uma vez obtido n = p x q, podemos calcular a função
totiente em n:
Φ(n) = (p - 1) x (q - 1)Φ(n) = (p - 1) x (q - 1)
= 10 x 12 = 120= 10 x 12 = 120
2) Para codificar um bloco m, precisamos do par de
chave (n,e), tal que e é primo e mdc (e,Φ(n)) = 1, ou
seja, e não divide Φ(n).
3) A codificação de um bloco m é obtida por:
C(m)C(m) ≡≡ mmee ≡ k≡ k mod n,mod n,
onde k é a forma reduzida de me módulo n.
11. Exemplo De Codificação De Um
Bloco
● Para este exemplo, consideramos e = 7.
● Logo, como exemplo, codificando o primeiro bloco
obtemos:
C(25)C(25) ≡≡ 252577 ≡ 64≡ 64 mod n,mod n,
em que 64 é a forma reduzida módulo n.
● Assim, temos que k = 64.
● Codificando a sequência de blocos da mensagem,
obtemos:
64 119 6 119 102 36 130 36 27 79 23 117 1064 119 6 119 102 36 130 36 27 79 23 117 10
12. Criação Da Chave Privada e
Decodificação
1)Primeiramente, calculamos o inverso de e módulo
Φ(n) denotado por d = e-1.
2)Computamos d aplicando o algorítimo estendido de
Euclides a Φ(n).
3)A decodificação de um bloco k , onde k = C(m), é
dada por:
D(k) ≡ kD(k) ≡ kdd ≡ m mod n,≡ m mod n,
onde m é a forma reduzida de kd módulo n.
● A chave de decodificação é o terno (p,q,d) que
deve ser mantida em sigilo.
13. Exemplo de Decodificação De
Um Bloco
● Para decodificar um bloco k com e = 7
calculamos e-1 mod Φ(n):
dd ≡ -17 ≡ 103 mod 120,≡ -17 ≡ 103 mod 120,
em que 103 é forma reduzida de e-1 mod 120.
● A partir do exemplo dado, calculamos
D(64):
D(64) ≡ D(C(25)) ≡ 64D(64) ≡ D(C(25)) ≡ 64103103
≡ 25 mod 143≡ 25 mod 143
14. Verificação Do Método
● Para garantir que o método de fato funciona, é
necessário mostrar que a decodificação do bloco
k resulta exatamente no original m, isto é, D(k) =
m.
● É suficiente mostrar que D(k) ≡ m mod n, pois
ambos estão no intervalo:
1 ≤ m ≤ (n-1),
note que m está imediatamente neste intervalo e k
é a forma reduzida em módulo n. Portanto, são
congruentes mod n se, e somente se, são iguais.
15. Demonstração
● Por definição de C(m) e D(k) temos:
D(k) ≡ D(C(m)) ≡ (mD(k) ≡ D(C(m)) ≡ (mee
))dd
≡ m≡ meded
mod n. (1)mod n. (1)
● Como ed ≡ 1 mod Φ(n), implica que:
ed = Φ(n)b + 1. (2)ed = Φ(n)b + 1. (2)
Note que e, d e Φ(n) são inteiros positivos
maiores do que 2, logo b>0.
● Substituindo (2) em (1) temos:
D(k) ≡ mD(k) ≡ mΦ(n)b + 1Φ(n)b + 1 ≡ mm≡ mmΦ(n)bΦ(n)b ≡ m(≡ m(mmΦ(n)Φ(n)))bb mod n. (3)mod n. (3)
16. Aplicando O Teorema De Euler
● A última expressão sugere aplicar o teorema de
Euler donde:
mmΦ(n)Φ(n) ≡ 1 mod n. (4)≡ 1 mod n. (4)
Consequentemente, bed ≡ b mod n. E, então, a
demonstração estaria encerrada.
● Mas ao aplicar este teorema (4), deve-se
considerar a hipótese de que o mdc(m,n) = 1.
● E, se de fato, esta condição deveria ser satisfeita
necessariamente para todo m, isto traria
dificuldade na codificação dos blocos.
17. Aplicando O Teorema de Fermat
● Alternativamente, substituímos Φ(n) pelo produto Φ(p)Φ(q),
temos em módulo p (e analogamente em módulo q):
D(k) ≡ m(mD(k) ≡ m(mΦ(n)Φ(n)
))bb
≡ m(m≡ m(mΦ(p)Φ(q)Φ(p)Φ(q)
))bb
≡≡ m(mm(mΦ(p)Φ(p)))Φ(q)bΦ(q)b ≡ m(≡ m(mm(p-1)(p-1)))(q-1)b(q-1)b
● Aqui podemos aplicar mp-1 ≡ 1 mod p do Teorema de Fermat
supondo que m não divide p.
● De fato, m só divide p se m ≡ 0 mod p, pois p é primo. Além
disso, m>0 e m<pq. Assim, esta congruência é facilmente
verificável.
● Logo, aplicamos este teorema e obtemos:
D(k) ≡ m(mD(k) ≡ m(m(p-1)(p-1)
))(q-1)b(q-1)b
≡ m1≡ m1(q-1)b(q-1)b
≡ m mod p≡ m mod p
18. Verificação Do Produto*
● Como pudemos ver, bed ≡ b mod p, assim como bed ≡ b
mod q.
● Dado que queremos mostrar que bed ≡ b mod n, então
devemos verificar a validade para o produto n = pq.
● De fato, bed ≡ b implica em p|(bed – b) e, analogamente,
q|(bed – b).
● Além disso, mdc(p,q) = 1. Logo, pq|(bed – b) e, portanto:
bbeded ≡ b mod n.≡ b mod n.
Como queríamos mostrar.
* Os primos p e q são naturais distintos e mdc(p,q) = 1. Seja Δ>0 um
número natural. Se p e q dividem Δ, então o produto pq divide Δ.
19. Segurança do RSA
Nº Dígitos Nº Operações Tempo
50 1,4 x 1010
3,9 horas
100 2,3 x 1015
74 anos
300 1,5 x 1029
4,9 x 1015
anos
500 1,3 x 1039
4,2 x 1025
anos
Tabela 2 – Número de operações e tempo necessário
para fatorar n utilizando-se computadores modernos.
● A segurança do RSA está na dificuldade de calcular d sem
conhecer Φ(n).
● Os primos p e q podem ser obtidos conhecendo-se a chave
(n,e) e Φ(n). Daí, a descoberta de um novo método de computar
Φ(n) tendo-se a chave pública seria equivalente a fatorar n.
● Acredita-se que quebrar a criptografia RSA é equivalente a
fatorar n.
20. Conclusão
● A criptografia RSA é um método seguro para o tráfico de
dados em meios públicos como a internet, desde que a
chave de decodificação seja mantida em segredo.
● A complexidade computacional é uma grande barreira para
fatorar n em seus fatores primos, contudo uma nova
geração de computadores pode romper esta dificuldade.
Isto tem levado a criação de novos métodos de
criptografia, a saber, a criptografia quântica.
● Um algorítimo eficiente para calcular Φ(n) utilizando-se a
chave pública implicaria numa forma eficiente de fatorar
um número composto n.
●
A Teoria dos Números é bem relevante em aplicações de
sistemas de criptografias.
21. Bibliografia
● COUTINHO S.C. (2011) Números Inteiros e Criptografia
RSA, Instituto de Matemática Pura e Aplicada.
● VIDIGAL A. e outros (2009) Fundamentos de Álgebra,
Universidade Federal de Minas Gerais.
● SILVA E.V.P (2006) Introdução a Criptografia RSA,
Universidade Estadual Paulista “Julio de Mesquita Filho”.
● http://www.mat.ufmg.br/~elaine/OBMEP/criptografia.pdf
● https://pt.wikipedia.org/wiki/RSA