21
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

Criptografia RSA

Embed Size (px)

Citation preview

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