Você está na página 1de 20

Criptografia RSA

Pre-codificacao
Codificando uma mensagem
Decodificando uma mensagem

Criptografia RSA

MSc. Tiago Delpupo Mognhol

PIC OBMEP 2015

24 de junho de 2016

tiagodelpupo@gmail.com Criptografia RSA - PIC OBMEP 2015


Criptografia RSA
Pre-codificacao
Codificando uma mensagem
Decodificando uma mensagem

O mais conhecido dos metodos de criptografia de chave publica


e o RSA. Este codigo foi inventado em 1977 por R. L. Rivest,
A. Shamir e L. Adleman, que na epoca trabalhavam no Mas-
sachussets Institute of Technology (M.I.T.), uma das melhores
universidades americanas. As letras RSA correspondem as inici-
ais dos inventores do codigo. Ha varios outros tipos de codigos
de chave publica, mas o RSA continua sendo o mais usado em
aplicacoes comerciais.

tiagodelpupo@gmail.com Criptografia RSA - PIC OBMEP 2015


Criptografia RSA
Pre-codificacao Tabela de conversao
Codificando uma mensagem Escolhendo os primos
Decodificando uma mensagem

Para iniciarmos a Criptografia RSA, precisamos de uma tabela


de conversao, como no exemplo:
Tabela de conversao
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
Usaremos 99 para simbolizar o espaco.

tiagodelpupo@gmail.com Criptografia RSA - PIC OBMEP 2015


Criptografia RSA
Pre-codificacao Tabela de conversao
Codificando uma mensagem Escolhendo os primos
Decodificando uma mensagem

Para iniciarmos a Criptografia RSA, precisamos de uma tabela


de conversao, como no exemplo:
Tabela de conversao
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
Usaremos 99 para simbolizar o espaco.

Exemplo de codificacao
Codificando a frase AMO A OBMEP temos
1022249910992411221425

tiagodelpupo@gmail.com Criptografia RSA - PIC OBMEP 2015


Criptografia RSA
Pre-codificacao Tabela de conversao
Codificando uma mensagem Escolhendo os primos
Decodificando uma mensagem

Para iniciarmos a Criptografia RSA, precisamos de uma tabela


de conversao, como no exemplo:
Tabela de conversao
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
Usaremos 99 para simbolizar o espaco.

Exemplo de codificacao
Codificando a frase AMO A OBMEP temos
1022249910992411221425
Porque nao codificamos o A apenas como 1?
tiagodelpupo@gmail.com Criptografia RSA - PIC OBMEP 2015
Criptografia RSA
Pre-codificacao Tabela de conversao
Codificando uma mensagem Escolhendo os primos
Decodificando uma mensagem

Agora precisamos determinar os parametros do sistema RSA


que vamos usar. Estes parametros sao dois numeros primos
distintos, que vamos denotar por p e q, e cujo resto na divisao
por 6 tem que ser 5. Usaremos como exemplo:

p = 17

q = 23
Depois tome
n = p q = 17 23 = 391

tiagodelpupo@gmail.com Criptografia RSA - PIC OBMEP 2015


Criptografia RSA
Pre-codificacao Tabela de conversao
Codificando uma mensagem Escolhendo os primos
Decodificando uma mensagem

A mensagem, cuja conversao foi feita anteriormente, pode ser


quebrada em varios blocos, conforme abaixo:

102 224 99 109 92 41 122 142 5

Voce pode dividir os blocos da maneira que quiser, desde que


eles nao comecem por 0 e nem sejam maiores que n.

tiagodelpupo@gmail.com Criptografia RSA - PIC OBMEP 2015


Criptografia RSA
Pre-codificacao Chave Publica
Codificando uma mensagem Codificacao
Decodificando uma mensagem

Para codificar a mensagem precisamos apenas do numero n, que


e o produto dos primos.
Dizemos que n e a chave publica de codificacao do sistema RSA
que estamos usando. Esta chave pode ser tornada publica.

tiagodelpupo@gmail.com Criptografia RSA - PIC OBMEP 2015


Criptografia RSA
Pre-codificacao Chave Publica
Codificando uma mensagem Codificacao
Decodificando uma mensagem

Como codificar um bloco b? Lembre-se que b e um inteiro


positivo menor que n. Vamos denotar o bloco codificado por
C (b). A receita para calcular C (b) e a seguinte:

C (b) = resto da divisao de b 3 por n.

Ou seja, C (b) e o resduo de b 3 modulo n.


Codificando toda a mensagem, obtemos:

tiagodelpupo@gmail.com Criptografia RSA - PIC OBMEP 2015


Criptografia RSA
Pre-codificacao Chave Publica
Codificando uma mensagem Codificacao
Decodificando uma mensagem

102 224 99 109 92 41 122 142 5

1023 1023 .102 238.102 34 mod 391


2243 2242 .224 128.224 129 mod 391
993 992 .99 26.99 228 mod 391
1093 1092 .109 151.109 37 mod 391
923 922 .92 253.92 207 mod 391
413 412 .41 117.41 105 mod 391
1223 1222 .122 26.122 44 mod 391
1423 1422 .142 223.142 386 mod 391
53 52 .5 25.5 125 mod 391
tiagodelpupo@gmail.com Criptografia RSA - PIC OBMEP 2015
Criptografia RSA
Pre-codificacao Chave Publica
Codificando uma mensagem Codificacao
Decodificando uma mensagem

Resumindo todos os blocos, descobrimos que a mensagem co-


dificada e

34 129 228 37 207 105 44 386 125

tiagodelpupo@gmail.com Criptografia RSA - PIC OBMEP 2015


Criptografia RSA Chave secreta
Pre-codificacao Como decodificar
Codificando uma mensagem Demonstracao
Decodificando uma mensagem Referencia bibliografica

Agora queremos saber qual e a receita que nos permite, de posse


de um bloco codificado e da chave publica, reconstituir o bloco
original, assim como ele era antes da codificacao.
A informacao que precisamos para poder codificar consiste de
dois numeros: n e d, onde d e o inverso de 3 modulo (p
1).(q 1). Ou seja,

3d 1 mod (p 1).(q 1)

O par (n, d) sera nossa chave de decodificacao. Esta chave


devera ser mantida secreta.

tiagodelpupo@gmail.com Criptografia RSA - PIC OBMEP 2015


Criptografia RSA Chave secreta
Pre-codificacao Como decodificar
Codificando uma mensagem Demonstracao
Decodificando uma mensagem Referencia bibliografica

De posse do par (n, d), que no nosso exemplo e (391, 235),


como devemos proceder para decodificar uma mensagem? Se a
for um bloco codificado, denotaremos por D(a) o resultado do
processo de decodificacao do bloco a. A receita e:

D(a) = resto da divisao de ad por n.

tiagodelpupo@gmail.com Criptografia RSA - PIC OBMEP 2015


Criptografia RSA Chave secreta
Pre-codificacao Como decodificar
Codificando uma mensagem Demonstracao
Decodificando uma mensagem Referencia bibliografica

Como nossa mensagem codificada e

34 129 228 37 207 105 44 386 125

Fazemos,
34235 b mod 391
onde b e primeiro bloco da nossa mensagem original (decodifi-
cada). Repetimos o processo para os demais blocos.

tiagodelpupo@gmail.com Criptografia RSA - PIC OBMEP 2015


Criptografia RSA Chave secreta
Pre-codificacao Como decodificar
Codificando uma mensagem Demonstracao
Decodificando uma mensagem Referencia bibliografica

Como resolver a equacao 34235 b mod 391? Observe que:

391 = 17.23

34 0 mod 17
34 11 mod 23
Da,
34235 0 mod 17
34235 (1110 )22 .1115 1115 10 mod 23

tiagodelpupo@gmail.com Criptografia RSA - PIC OBMEP 2015


Criptografia RSA Chave secreta
Pre-codificacao Como decodificar
Codificando uma mensagem Demonstracao
Decodificando uma mensagem Referencia bibliografica

Resumindo:
34235 0 mod 17
235
34 10 mod 23
Que equivale a
x 0 mod 17
x 10 mod 23
Podemos resolver com Teoremo Chines do Resto ou via equacao:

x = 10 + 23y

10 + 23y 0 mod 17 6y 7 mod 17


y 3.7 4 mod 17 x = 10 + 23.4 = 102

tiagodelpupo@gmail.com Criptografia RSA - PIC OBMEP 2015


Criptografia RSA Chave secreta
Pre-codificacao Como decodificar
Codificando uma mensagem Demonstracao
Decodificando uma mensagem Referencia bibliografica

Demonstracao
Considere a como a mensagem codificada e b como a
mensagem original. Para codificar, fazemos:

be a mod n

Onde mdc(e, (p 1).(q 1)) = 1.


Repare que e nao precisa ser 3, como no exemplo utilizado, e
n = p.q nao precisa ser formado por primos da forma 6k + 5.
Na verdade, p e q podem ser qualquer numero primo.
Da relacao acima, conclumos que:

b e a = kn

a = b e kn (1)
tiagodelpupo@gmail.com Criptografia RSA - PIC OBMEP 2015
Criptografia RSA Chave secreta
Pre-codificacao Como decodificar
Codificando uma mensagem Demonstracao
Decodificando uma mensagem Referencia bibliografica

Demonstracao
Para decodificar, precisamos encontrar d que satisfaca

e.d 1 mod (p 1).(q 1)

j 1
d = (p 1).(q 1). + (2)
e e
Ou seja, d e o inverso modular de e. Por isso tomamos e tal
que mdc(e, (p 1).(q 1)) = 1, caso contrario nao
poderamos garantir a existencia de d. O proximo passo e fazer

ad b mod n

Entao falta mostrar que ad mod n realmente resulta em b,


nossa mensagem original.
tiagodelpupo@gmail.com Criptografia RSA - PIC OBMEP 2015
Criptografia RSA Chave secreta
Pre-codificacao Como decodificar
Codificando uma mensagem Demonstracao
Decodificando uma mensagem Referencia bibliografica

Demonstracao
ad mod n = (b e kn)d mod n =
(p1).(q1). ej + e1
(b e kn) mod n =
b (p1).(q1).j+1 + i.n mod n =
(b j )(p1).(q1) .b mod n =
Pelo Teorema de Euler, x (n) 1 mod n, entao:

1.b mod n =

b mod n
Como queramos demonstrar.

tiagodelpupo@gmail.com Criptografia RSA - PIC OBMEP 2015


Criptografia RSA Chave secreta
Pre-codificacao Como decodificar
Codificando uma mensagem Demonstracao
Decodificando uma mensagem Referencia bibliografica

COUTINHO, S. C. PIC: Programa de Iniciacao Cientfica da


OBMEP - Criptografia. Volume 7. Rio de Janeiro, 2014.

tiagodelpupo@gmail.com Criptografia RSA - PIC OBMEP 2015