Algoritmos de Chave Pública
RSA
Introdução
• O problema da distribuição de chaves sempre foi
o elo mais fraco da maioria dos sistemas de
criptografia.
• Em 1976, dois pesquisadores da Universidade de
Stanford, Diffie e Hellman propuseram um
sistema de criptografia totalmente novo:
– As chaves de criptografia e decriptografia são
diferentes. Uma pública e a outra privada.
– A chave de decriptografia (privada) não consegue ser
derivada da chave de criptografia (pública).
Proposta
• Cada usuário precisa ter duas chaves: Uma
pública e a outra privada.
• O algoritmo de criptografia E e o algoritmo de
decriptografia D tem de atender a três
requisitos:
– D (E (P)) = P.
– É extremamente difícil deduzir D a partir de E.
– O texto criptografado não pode ser decifrado por
um ataque de texto claro escolhido.
Requisitos
• O primeiro requisito diz que se aplicarmos o
algoritmo D a um texto claro P criptografado por
E obteremos novamente a mensagem em texto
claro.
• O segundo requisito é autoexplicativo.
• O terceiro requisito significa que os intrusos
podem experimentar o algoritmo exaustivamente
que não conseguirão quebrá-lo.
– Logo, não há razão para a chave não tornar-se pública.
Funcionamento do método
• O remetente criptografa uma mensagem
utilizando a chave pública do destinatário.
– A chave pública pode estar:
• Em um arquivo público, por exemplo no web site do
destinatário.
• Em uma Infraestrutura de Chaves Públicas.
• Alice calcula EB (P) e envia para Bob.
• Bob calcula DB (EB (P)) = P
Os pesquisadores
• Três pesquisadores do
MIT.
– Rivest (cientista da
computação),
– Shamir (cientista da
computação) ,
– Adleman (matemático) .
• Examinaram o artigo de
Diffie e Hellman.
• Propuseram entre si, inúmeras soluções durante
o ano.
A solução
• Em abril de 1977.
• Rivest.
– É possível construir uma cifra assimétrica?
– Encontrar uma função de mão única que possa ser
revertida apenas se o receptor possuir alguma
informação especial?
A matemática do RSA (1)
• Alice escolhe dois números primos gigantes, p e
q.
• Os primos devem ser enormes, geralmente de
1024 bits, mas para simplicidade vamos dizer que
Alice escolhe p = 17 e q = 11. Ela mantém esses
números em segredo.
• A seguir, Alice multiplica os números um pelo
outro para conseguir outro número, n.
– p x q = n.
– Logo, n = 187.
A matemática do RSA (2)
• A seguir, calcula também z = (p-1) x (q-1).
– Logo, z = 160.
• Depois, Alice escolhe outro número, e, de modo que
este e z sejam primos relativos. Ou seja, não possuam
fatores comuns.
• Suponha que Alice escolhe e = 7.
– Repetindo, e, (p-1) x (q-1), ou se preferir, e e z, precisam
ser primos relativos, não tendo fatores comuns.
– Observe que temos várias opções: 7, 11, 13, 17, 19
• n e e tornam-se a chave pública de Alice (187 e 7).
Primos relativos
• Os números 8 e 15 são primos relativos
porque os divisores positivos de 8, são:
– 1, 2, 4 e 8.
• E os de 15, são:
– 1, 3, 5 e 15.
• De modo que o 1 é o único inteiro nas duas
listas.
Cálculo da chave privada
• Finalmente, Alice calcula um número d de
forma que d x e = 1 mod z.
• Conforme exemplo abaixo:
Chave Pública
• Alice divulga e e n como sendo a sua chave
pública.
• O e pode ser parte da chave pública de todos,
desde que cada pessoa tenha um n diferente,
o que depende da escolha de p e q.
Restrição ao tamanho do bloco
• Cada bloco de texto claro, P, precisa estar no
intervalo entre 0 ≤ P < n.
• O que pode ser feito agrupando-se o texto
claro em blocos de k bits onde k é o maior
inteiro para o qual a desigualdade 2k < n é
verdadeira.
Criptografando
• Para criptografar são necessários e e n e para
decriptografar, d e n.
• Em outras palavras, para criptografar faça:
C = Pe (mod n)
• Para descriptografar, faça:
P = Cd (mod n).
Convertendo a entrada
• A mensagem a ser cifrada, P, precisa ser
convertida em um número.
– Por exemplo, binários em ASC convertidos para
decimal.
• O número P então é cifrado para produzir C,
de acordo com a fórmula: C = Pe (mod n).
Exemplo
• Supondo que Bob deseje enviar para Alice a letra
“X”.
• Em ASC o X é representado por 1011000 o que
equivale a 88 em decimal. Assim, P = 88.
• Para cifrar a mensagem, Bob pega a chave pública
de Alice, n = 187 e e = 7, o que resulta na
seguinte fórmula: C = 887 (mod 187).
C = 40867559636992 (mod 187)
C = 40867559636992 / 187 = 218543099663 (resto 11).
• Bob agora envia o texto cifrado, C = 11, para
Alice.
Considerações
• Exponenciais em aritmética modular são
funções de mão única.
• É muito difícil, a partir de C = 11, recuperar a
mensagem original, P.
– Logo, Eva não pode decifrar a mensagem.
• Alice pode decifrá-la porque ela tem uma
informação especial.
– Ela conhece os valores de p e q.
Decifrando
• Para decifrar a mensagem, Alice simplesmente
usa a fórmula:
P = Cd (mod 187)
P = 1123 (mod 187)
P = 88
• O que corresponde a letra “X” em ASC.
Exemplo
Sumário da operação
• Suponha que o navegador web possua um texto a ser
transmitido.
• Inicialmente o navegador envia uma solicitação.
– Ola servidor, mande-me a sua chave pública.
• O servidor responde.
– Aqui está: n=187 e e=7.
• Após receber a chave pública do servidor, o navegador
(cliente) criptografa com ela o texto a ser enviado e o
envia.
• Ao receber o texto criptografado, o servidor o
descriptografa com a sua própria chave privada.
Descobrindo o código
• As chaves pública e privada são relacionadas, mas a sua
relação é difícil de ser derivada por terceiros.
• A chave pública possui dois valores, n e k onde k é
calculado a partir de z e z é calculado a partir de p e q.
• A chave privada d é calculada a partir de k e z que são
calculados a partir de p e q.
– Observe a relação matemática entre as chaves.
• Então, para um interceptador encontrar a chave
privada d, a única maneira é determinando quais foram
os números primos usados para determiná-la (p e q).
– Decomposição de números com mais de uma centena de
dígitos.
Download

03 RSA