Top Banner
Universidade Federal De Minas Gerais Criptografia RSA Criptografia RSA Fundamentos De Álgebra Fundamentos De Álgebra Alexandre Elias Dos Santos Alexandre Elias Dos Santos [email protected] [email protected] 13 de Novembro de 2015 13 de Novembro de 2015
21

Criptografia RSA

Feb 19, 2017

Download

Science

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Criptografia RSA

Universidade Federal De Minas Gerais

Criptografia RSACriptografia RSAFundamentos De ÁlgebraFundamentos De Álgebra

Alexandre Elias Dos SantosAlexandre Elias Dos [email protected]@ufmg.br

13 de Novembro de 201513 de Novembro de 2015

Page 2: Criptografia RSA

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.

Page 3: Criptografia RSA

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

Page 4: Criptografia RSA

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.

Page 5: Criptografia RSA

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.

Page 6: Criptografia RSA

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.

Page 7: Criptografia RSA

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.

Page 8: Criptografia RSA

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.

Page 9: Criptografia RSA

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.

Page 10: Criptografia RSA

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) ≡≡ m me e ≡ k≡ k mod n, mod n,

onde k é a forma reduzida de me módulo n.

Page 11: Criptografia RSA

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) ≡≡ 25 2577 ≡ 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

Page 12: Criptografia RSA

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.

Page 13: Criptografia RSA

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

Page 14: Criptografia RSA

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.

Page 15: Criptografia RSA

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)

Page 16: Criptografia RSA

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.

Page 17: Criptografia RSA

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

Page 18: Criptografia RSA

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 Δ.

Page 19: Criptografia RSA

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.

Page 20: Criptografia RSA

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.

Page 21: Criptografia RSA

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