Académique Documents
Professionnel Documents
Culture Documents
Rubens Vilhena
Criptografia RSA
Pré-codificação
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
[]
99
1
Prof. Rubens Vilhena
Codificando e decodificando
mdc (e, (n)) = mdc (e, (p – 1) (q – 1)) = 1. Note que e é sempre ímpar, dado
que (n) é par.
C(b) be (mod n)
25 10 27 10 29 34 99 14 99 21 18 23 13 10
Então temos que (143) = 10.12 = 120 e, portanto, vamos escolher e como o
menor primo que não divide 120. O valor é 7. Logo,
2
Prof. Rubens Vilhena
A informação que precisamos para decodificar está contida no par (n, d), onde
d (1< d <(n)) é o inverso de e módulo (n) (e.d 1 (mod (n)). Chamaremos
(n, d) de chave de decodificação e D(c) o resultado do processo de
decodificação. D(c) é dado por:
D(c) cd (mod n)
ou seja,
d 7((143)) – 1 (mod (143))
d 7(120) – 1 (mod 120)
d 732 – 1 (mod 120)
d 731 (mod 120)
d 103 (mod 120)
3
Prof. Rubens Vilhena
Mas d é o inverso de e módulo (n). Logo, existe inteiro k tal que e.d = 1 +
k.(n). Logo,
bed b 0 (mod p)
Logo,
bed b (mod p)
bed b (mod q)
Portanto,
bed b (mod p.q)
bed b (mod n)
c.q.d.
Exemplo2:
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
4
Prof. Rubens Vilhena
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
[]
99
FINALMENTE
Você deve inicialmente numerar toda a palavra de acordo com a tabela acima:
15 18 23 10 21 22 14 23 29 14
Etapas:
1. Primeiro, fatoramos o número n = 7623 ( veja abaixo a fatoração pelo
método de Fermat). Encontramos os primos 79 e 97.
2. Calculamos (n) = (7663) = (79) . (97) = 78.96 = 7488.
3. Calculamos d e((n)) – 1 (mod (n)) 17(7488) – 1 (mod 7488) 881 (mod
7488).
4. Agora basta pegar cada bloco que recebemos e elevar à potência d módulo
n.
5
Prof. Rubens Vilhena
15 18 23 10 21 22 14 23 29 14
FINALMENTE
Para começar vamos supor que n é ímpar, já que se n for par então 2 é um de
seus fatores. A idéia do algoritmo de Fermat é tentar achar números inteiros
positivos x e y tais que n = x 2 − y 2 . Supondo que encontramos estes números,
temos que
n = x 2 − y 2 = ( x − y )( x + y ) .
Seja r um número real, denotamos por r sua menor parte inteira. Por
exemplo, = 11 e = . É claro que se r é inteiro então r = r.
x = n + y2 n
6
Prof. Rubens Vilhena
Algoritmo de Fermat
Etapa 3. Repita a Etapa 2 até encontrar um valor inteiro para y, ou até que x
(n + 1)
seja igual a : no primeiro caso n tem fatores x+y e x-y, no segundo n é
2
primo.
x2 − n
(n + 1)
seja inteiro, ou x seja igual a , que neste caso vale 671064. É mais fácil
2
resumir isto em uma tabela
x x2 − n
1159 33,97
1160 58,93
1161 76,11
1162 90,09
1163 102,18
1164 113
Exercício:
7
Prof. Rubens Vilhena
a) 437623
b) 919199
c) 9797
d) 4061
e) 19109
8
Prof. Rubens Vilhena
O que não deve ser disponibilizado, pois é secreto e pertence somente aos
seus donos:
Chave privada de Alice (nA, dA) = (469873, 281081).
Chave privada de Bob (nB, dB) = (431957, 307543).
*Observação 4: note que tanto os primos p e q, assim como a função (n), também devem ser mantidos secretos!
Pois a partir de p e q, pode-se facilmente calcular (n) = (p – 1) * (q – 1). E vice-versa, a partir de (n) pode-se calcular
p e q através de um sistema linear e uma simples equação do 2º grau. Tendo posse de (n), calcula-se a chave
privada d como demonstrado.
9
Prof. Rubens Vilhena
para Bob.
Isto faria com que a mensagem ficasse cifrada com a sua chave privada, e
como isto seria útil? Antes de partimos para o exemplo numérico, uma breve
teoria.
b → CB(b) → DB(CB(b)) → b
10
Prof. Rubens Vilhena
O que isto garante? Que Bob pode primeiramente decodificar esta mensagem-
cápsula com sua própria chave privada, e assim obter de volta a mensagem
criptografada com a chave privada de Alice. Mas aqui que surge o grande
ponto: se Bob utilizar a chave pública de Alice, ele obterá a mensagem original!
Como ninguém mais além de Alice possui a chave privada dA, então realmente
aquela mensagem foi codificada inicialmente por Alice. A outra garantia vem de
que somente Bob sabe disto, pois Alice sabiamente também utilizou a chave
pública de Bob.
1º passo: Alice utiliza sua chave privada para “decodificar” a palavra “BRASIL”
separada em blocos como no exemplo anterior (as mesmas observações de
tamanho de bloco e valores menores que os módulos também valem para este
caso):
11
Prof. Rubens Vilhena
Já aqui neste resultado, Bob deve obter algo que Alice obteve no 1º passo.
4º passo: Finalmente, Bob aplica a chave pública de Alice que garante que foi
ela mesma que enviou esta mensagem (nenhuma outra pessoa além de Alice
pode ter a chave privada dela, lembra?):
12
Prof. Rubens Vilhena
A B C D E F G H I J K L M
65 66 67 68 69 70 71 72 73 74 75 76 77
N O P Q R S T U V W X Y Z
78 79 80 81 82 83 84 85 86 87 88 89 90
Tabela ASCII
(2) A chave pública utilizada pelo Banco Crash para codificar suas mensagens
é a seguinte:
(n, e) = (4559, 5)
(3) A mensagem
96 – 61 – 751 – 9
foi codificada pelo método RSA usando a chave (n, e) = (767, 13). Decodifique
a mensagem.
(6) A mensagem
13
Prof. Rubens Vilhena
14