Você está na página 1de 4

Criptografia – Método RSA

O método é baseado num primo n obtido através da multiplicação de dois primos p e q


consideravelmente grandes. n é público, mas p e q não, de forma que a quebra da
encriptação exige a fatoração de n – processo computacionalmente difícil.

Etapa 1: pré-codificação
Associar cada letra do alfabeto utilizado a um número. Os números para cada letra
devem conter a mesma quantidade de dígitos, a fim de evitar ambiguidade na
decodificação.
Etapa 2: setando os primos
Começa-se pela escolha dos primos p e q, cujo produto será n. Divide-se então a
mensagem pré-codificada em blocos numéricos.
Obs.: os blocos não podem conter mais dígitos do que a chave n, isto é:
1 ≤ número de dígitos do bloco ≤ n
Etapa 3: setando a chave e codificando os blocos de mensagem
Começa-se escolhendo um número e que entrará na seguinte relação:
[blocooriginal]e ≡ a mod n, onde a é o bloco criptografado.
(e,n) é a chave de encriptação da mensagem.
Etapa 4: decodificando a mensagem criptografada
A chave de decodificação da mensagem é o par (n,d) tal que n é a chave pública
de codificação e d é o inverso de e mod (p-1)*(q-1) (ou mod φ(n)).
Realiza-se então o processo contrário ao realizado na encriptação:
[blocoencriptado]d ≡ b mod n, onde b é o bloco original.
(d,n) é a chave de decriptação da mensagem.

Observações importantes para o funcionamento do RSA:


1. O número e precisa ser ímpar, pois, como (p-1)*(q-1) é par, se e for par seu
inverso d não existirá, já que d*e precisa ser ≡ 1 mod (p-1)(q-1).
2. O número e também não pode ser divisor de (p-1)(q-1), caso em que a divisão
de um múltiplo seu (d*e) pelo produto (p-1)(q-1) deixará sempre resto 0. O mdc(e,
φ(n)) precisa ser igual a 1. Além disso:
1 < e < φ(n), onde φ(n) é a quantidade de coprimos de n (ou (p-1)*(q-1)).
Exemplo: codificando e decodificando a mensagem RSA

1) A pré-codificação será 27-28-10 (“RSA” numa tabela alfabética que vai do 10 ao 35).
2) p = 5 e q = 7. n = 35.
3) e = 7. Temos que encontrar então a, b e c tais que:
277 ≡ a mod 35 287 ≡ b mod 35 107 ≡ c mod 35

277 ≡ (-8)7 [já que 27 está 8 abaixo de 35*1] ≡ [(-8)2]3 * (-8) ≡ 643 * -8

≡ (-6)3 * -8 [já que 64 está 6 abaixo de 35*2] ≡ (-6)2 * (-6) * (-8) ≡ 1 * 48 ≡ 13.

277 ≡ 13 mod 35.

287 ≡ (-7)7 ≡ [(-7)2]3 * (-7) ≡ 493 * -7 ≡ 143 * -7 ≡ 142 * 14 * (-7) ≡ 196 * 14 * (-7)

≡ 21 * 14 * (-7) ≡ 295 * (-7) ≡ 24 * (-7) ≡ -98 ≡ 7.

287 ≡ 7 mod 35.

107 ≡ [102]3 * 10 ≡ (-5)3 * 10 ≡ -125 * 10 ≡ 15 * 10 ≡ 150 ≡ 10.

107 ≡ 10 mod 35.

Obs.: preparar uma tabela com alguns múltiplos de n ajuda.


A mensagem codificada é, portanto: 13-07-10.
4) Precisamos encontrar d tal que 7d ≡ 1 mod (4*6), ou: 7d ≡ 1 mod (24).
Procurar então múltiplos de 24 próximos de múltiplos de 7 (e nos quais a divisão
deixe resto 1):

48 é próximo de 49 (7*7), o qual na divisão por 48 deixa resto 1.


Temos então d = 7.

Passa-se a seguir à decodificação. Encontrar x, y e z tais que:


137 ≡ x mod 35 77 ≡ y mod 35 107 ≡ z mod 35

137 ≡ [132]3 * 13 ≡ (-6)3 * 13 ≡ -6 * 13 [já que -216 está 6 abaixo de 35*(-6)] ≡ 27.

137 ≡ 27 mod 35.


77 ≡ [72]3 * 7 ≡ (14)3 * 7 ≡ 142 * 14 * 7 ≡ -14 * 14 * 7 ≡ 14*7 [já que -196 está a +14 de 35*(-6)]

≡ 28 [já que 98 ultrapassa 35*2 em 28].

77 ≡ 28 mod 35.

107 ≡ 10 mod 35.

A mensagem decodificada é, portanto: 27-28-10 (RSA).


Resumo

 n = p*q, onde os três são primos.


 φ(n) = (p-1)*(q-1).

 e deve ser tal que:


1 < e < φ(n), onde φ(n) é a quantidade de coprimos de n (ou (p-1)*(q-1));
mdc (e,φ(n)) = 1.
 (n,e) é a chave pública de encriptação.
 Função para criptografar: [blocooriginal]e ≡ a mod n, onde a é o bloco encriptado.

 d deve ser tal que:


d*e ≡ 1 mod (p-1)*(q-1), isto é: d*e ≡ 1 mod φ(n).
 (n,d) é a chave privada de decriptação.
 Função para decriptografar: [blocoencriptado]d ≡ b mod n, onde b é o bloco original.

 Método para encontrar o φ(n) sem conhecer p e q:


φ(n) é o número de coprimos de n: basta listar a sequência de 1 até n e eliminar
tanto os divisores de n quanto os múltiplos desses divisores. O número de
elementos restantes será φ(n) = (p-1)*(q-1).
 Métodos para encontrar d:
(1) Procurar múltiplos de φ(n) próximos de múltiplos de e nos quais a divisão
destes por aqueles deixe resto 1. O número que multiplicando e satisfaz a relação
será o d buscado.
(2) Transformar a relação modular numa equação diofantina e solucioná-la
utilizando o algoritmo de Euclides.
Exemplo: para e = 7 e φ(n) = 40.
7d ≡ 1 mod 40 => 40x + 7y = 1.
40 = 5(7) + 5 7 = 1(5) + 2 5 = 2(2) + 1
1 = 5 – 2(2) 1 = 5 – 2(7 – 1(5)) 1 = 5 + 2(5) – 2(7)
1 = 3(5) - 2(7) 1 = 3(40 – 5(7)) – 2(7) 1 = 3(40) – 15(7) – 2(7)
1 = 3(40) – 17(7).
Como o número obtido multiplicando e é negativo (-17), precisamos fazer:
d = 40 – 17 = 23.
Obs.: se o número que multiplica e fosse positivo já seria d.

Você também pode gostar