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