sexta-feira, setembro 29, 2006

Criptografia RSA

Criptografia RSA

Para criar uma chave RSA precisamos escolher dois números primos grandes, geralmente este numeros sao maiores que 10^100, mas para facilitar vamos escolher dois números pequenos que serão associados a "p" e "q".

p = 3
q = 11

Depois vamos calcular dois novos números com base nos dois números primos escolhidos

n = p * q
z = (p - 1) * (q - 1)

Os resultados serão

n = 33
z = 20

Note que o valor "n" vai ser importante quando relacionarmos os caracteres a numeros pois os valores de cada caracter não podera eceder este valor.
Em seguida deveremos escolher um número primo em relação a "z" que será associado a "d", o único requsito é que não haja fatores comuns entre eles, por exemplo:

d = 7

O número 7 não tem fator comum com 20 por isso foi escolhido. Agora complica um pouco e seus conhecimentos em matemática serão requisitados. Voce deverá encontrar um número que será associado a "e" na seguinte formula:

(e * d) mod z = 1

Substituindo "d" e "z" pelos seus valores. Bom voce vai pensar: "Putz até dá para fazer, mas acho que esse mod vai complicar". Não se preocupe "mod" nada mais é do que o módulo do resto de uma divisão, ou seja 5 dividido por 3 vai restar 2 certo, então escrevemos assim: 5 mod 3 = 2
Entendeu? Então vamos testar, iremos escolher o número 1 para associarmos a "e":

e = 1
(1 * 7) mod 20 = 1
O valor retornado será 7 e não 1 então não pode ser 1

e = 3
(3 * 7) mod 20 = 1
O valor retornado será 1 então o nosso número será o 3

Bom já temos os valores das chaves privadas e publicas, ambas são compostas por dois valores, v1 e v2 que aplicados na seguinte fórmula genérica faz a criptografia ou descriptografia:

saída = entrada ^ v1 mod v2

Os valores "e" e "n" formam a chave pública e "d" e "n" formam a chave privada. Substituindo v1 por "e" e v2 por "n" você terá a formula de emcriptação

texto criptografado = texto original ^ e mod n

Logo o inverso será a formula para descriptografar, substituindo v1 por "d" e v2 por "n" que é a chave privada:

texto original = texto criptografado ^ d mod n

Para usar as chaves públicas e privadas é necessário associar um número a cada letra do alfabeto, por exemplo:

A = 1; B = 2; C = 3; D = 4; E = 5; F = 6; G = 7; H = 8; I = 9; J = 10; K = 11; L = 12; M = 13; N = 14;
O = 15; P = 16; Q = 17; R = 18; S = 19; T = 20; U = 21; V = 22; X = 23; Y = 24; W = 25; Z = 26

Com exemplo vamos encriptar de desencriptar a letra "m", para isso veremos qual o número correspondente na tabela acima e verificamos que é o número 13, então:

texto criptografado = 13 ^ e mod n
texto criptografado = 13 ^ 3 mod 33
texto criptografado = 19

Convertendo o valor para a tabela padronizada anteriormente teremos a letra "S". O destinatário ao receber a mensagem deverá descriptografá-la usando a fórmula usando os dados da chave privada:

texto original = 19 ^ d mod n
texto original = 19 ^ 7 mod 33
texto original = 13

O número 13 é equivalente a letra "M" na tabela padronizada anteriormente.

Nenhum comentário: