3
Pró-Reitoria de Graduação
Curso de Licenciatura em Matemática
Trabalho de Conclusão de Curso
[Digite o
título do
documento]
[Digite o subtítulo do
PRÓ-REITORIA
DE GRADUAÇÃO
documento]
TRABALHO DE CONCLUSÃO DE CURSO
CRIPTOGRAFIA RSA
Sherley
Matemática
Autor:
Amanda Oliveira Fonseca
CIFRA
DE HILL
Orientador: Haendel Lins
Autor: Elaine da Silva Mantovani
Orientador: Sinval Braga de Freitas
Brasília - DF
2012
4
AMANDA OLIVEIRA FONSECA
CRIPTOGRAFIA RSA
Artigo apresentado ao curso de graduação em
Matemática da Universidade Católica de
Brasília, como requisito parcial para obtenção
do Título de Licenciado em Matemática.
Orientador: Haendel Lins
Brasília
52012
3
Artigo de autoria de Amanda Oliveira Fonseca, intitulado “CRIPTOGRAFIA RSA”,
apresentado como requisito parcial para obtenção do grau de Licenciado em Matemática da
Universidade Católica de Brasília, em 29 de novembro de 2012, defendido e aprovado pela
banca examinadora abaixo assinada:
_____________________________________________________
Prof. Haendel Lins
Orientador
Matemática – UCB
_____________________________________________________
Prof. MSc. Sinval Braga de Freitas
Matemática - UCB
_____________________________________________________
Prof. MSc. Vilmondes Rocha
Matemática – UCB
Brasília
2012
3
CRIPTOGRAFIA RSA
AMANDA OLIVEIRA FONSECA
Resumo:
Esse artigo foi desenvolvido, primeiramente, pela curiosidade de como fazer aplicações
utilizando a Teoria dos Números, pois ao estudar esta disciplina durante o curso de
Licenciatura em Matemática muitos não sabem aplicá-la ou não a compreendem. E para
quebrar paradigmas, este artigo mostra como é feito o uso da Matemática em um ramo que
necessita transmitir muita segurança para seus usuários. Para iniciar este trabalho, haverá uma
breve história de quando surgiu a criptografia, relatando as mais importantes. A partir daí, o
tema limita-se apenas ao Algoritmo RSA, no qual é abordado a pré-codificação e em seguida
a codificação e a decodificação. É claro que, para obter segurança, é preciso utilizar números
muito grandes, mas será feita apenas uma mostra da criptografia RSA para provar porque ele
é o sistema de chave-pública mais utilizado.
Palavras-chave: Teoria dos números. Criptografia. Algoritmo RSA. Chave-pública.
1. INTRODUÇÃO
Sabe-se que nos últimos tempos houve uma popularização das redes sociais e um
avanço da internet e meios eletrônicos. Com esse crescimento, é preciso mais segurança para
os documentos. Então foram criadas senhas para que não ocorram falsificações. Isso foi feito
utilizando técnicas de criptografia dinâmicas e eficientes.
As bases desses estudos estão em Teoria da Informação e em Teoria dos Números,
áreas da matemática para se aplicar em segurança de dados. Dessa forma, foi estudado o
algoritmo RSA e até onde responde sua segurança.
Essa pesquisa é necessária para demonstrar a dinâmica do que às vezes não faz sentido
quando se estuda apenas a teoria. Dessa forma, poderá ser útil tanto para profissionais e
estudantes de Engenharia de Computação, Comunicação, quanto para curiosos da
Matemática, que, muitas vezes, não compreendem onde aplicar alguns conceitos estudados,
como por exemplo, teoremas de Euler e Fermat, a função φ de Euler, entre outros conceitos.
2. A ARTE DA CRIPTOGRAFIA
Do grego, criptografia quer dizer “escrita secreta”, ou seja, são adotadas técnicas para
aplicar em uma mensagem legível e transformá-la em ilegível para que apenas remetente e
destinatário a conheça.
Desde a invenção da escrita, houve a necessidade de obter informações secretas entre
as pessoas, então apareceram vários métodos de escrita secreta, mais o primeiro conhecido é a
Cifra de César que data 58 a.C e recebe esse nome devido Júlio César (Imperador Romano).
4
A cifra de César era de forma manual e monoalfabética, ou seja, utilizava-se apenas
um alfabeto cifrado, onde cada letra do alfabeto correspondia a três letras à frente.
Tabela 1: Cifra de César
B
C
D
E
F
G
A
D
N
Q
O
R
P
S
Q
T
E
H
F
I
G
J
H
K
I
L
J
M
K
N
L
O
M
P
R
U
S
V
T
W
U
X
V
Y
W
Z
X
A
Y
B
Z
C
Com a facilidade em criptografar e decriptografar, cifras monoalfabéticas já não eram
tão seguras, pois bastava encontrar uma sílaba que a cifra era quebrada. Com o
desenvolvimento da criptoanálise (método utilizado para quebrar uma cifra) e a contagem de
frequência de caracteres as cifras monoalfabéticas já não tinham mais segurança nas
informações. Após essa guerra entre Criptografia e Criptoanálise, houve um grande avanço na
arte de esconder e enfim, o novo método criptográfico era polialfabético, ou seja, utilizava
mais de um alfabeto cifrado. Então, Blaise Vigenère utilizou o método polialfabético que era
muito seguro para a época e demorou 291 anos para ser quebrado, se baseava na cifra de
César, utilizando 26 alfabetos codificados. O quadro dessas codificações utilizadas por Blaise,
era chamado de “Quadrado de Vigenère”.
Tabela 2: Quadrado de Vigenère
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
Para utilizar o quadrado de Vigenère, era preciso uma mensagem e uma chave para
cifrar. Por exemplo, se a mensagem fosse NÃO e a chave TIM o texto cifrado ficaria GIA.
Para cifrar por esse método, procuramos, na 13ª linha (que começa com a letra N), a letra que
está na coluna T (no caso, G). Mas digamos que a mensagem fosse AMANDA e a chave para
cifrar fosse à mesma utilizada anteriormente, TIM, então era preciso repetir a chave até obter
o mesmo número de letras da mensagem, ou seja, a chave seria TIMTIM e logo a mensagem
cifrada seria TUMGLM.
Com a evolução tecnológica e o descoberta dos primeiros computadores houve um
grande avanço na criptografia e a necessidade de mais segurança. Foi então que, em 1978, foi
publicado o algoritmo de chave-pública conhecido como algoritmo RSA, baseado nos estudos
de Diffie-Hellman sobre chaves assimétricas.
5
3. CRIPTOGRAFIA RSA
A criptografia RSA recebe este nome devido a seus criadores, Rivest, Shamir e
Adleman, pesquisadores do Massachussets Institute of Technology (MIT). O RSA não é o
único código de chave-pública, mas atualmente é o mais utilizado em aplicações comerciais.
(Coutinho,2005). Seus estudos foram baseados na Matemática, mais precisamente em
conhecimentos básicos da Teoria dos Números. O que dificulta a quebra desse algoritmo é a
fatoração de enormes números inteiros em primos.
Nesse sistema, o usuário possui duas chaves, uma pública (P ) que pode ser divulgada
e utilizada por qualquer pessoa. Essa chave criptografa uma mensagem, ou seja, qualquer
pessoa pode criptografar algo. Já a chave privada ou secreta (S ) decodifica a mensagem. É
mais sigilosa, pois apenas o destinatário a conhece e consegue decriptografá-la. Se x é um
texto legível, S é a chave secreta e P a chave pública, então a aplicação S ( x) = y e
P ( y ) = x . Para quem conhece as chaves, os cálculos são computacionalmente fáceis, mas
para quem não as conhece torna-se complicado calcular S a partir da chave P . (TERADA,
2008).
Dessa forma, esse sistema mostra-se seguro e eficaz, dificultando a ação de pessoas
não autorizadas.
3.1. ENTENDENDO O SISTEMA RSA
A codificação de uma mensagem não é tão complexa quanto imaginamos, mas para
que não haja erro é preciso alguns conhecimentos e cuidados. A base do RSA está no produto
de dois números primos extremamente grandes e a quebra só será possível, devido a
fatoração. Porém, não é preciso ter um conhecimento profundo, basta apenas uma breve
introdução de Teoria dos Números e já conseguimos criptografar uma mensagem no sistema
RSA. O cuidado necessário consiste em fazer uma pré-codificação, para que não haja nenhum
duplo sentido ou ambiguidade ao codificarmos ou decodificarmos uma mensagem.
3.1.1. Pré-Codificação
Segundo Coutinho, a pré-codificação é necessária para que não haja ambiguidade na
mensagem, ou seja, a mensagem criptografada pelo usuário deve ser a mesma recebida e
decodificada pelo destinatário. Para que não ocorra erro, é preciso fazer com que cada letra
tenha um número que a corresponda, e podemos fazer da seguinte maneira:
A
11
N
24
Tabela 03: Codificação
B
C
D
12
13
14
O
25
P
26
Q
27
E
15
F
16
G
17
H
18
I
19
J
20
K
21
L
22
M
23
R
28
S
29
T
30
U
31
V
32
W
33
X
34
Y
35
Z
36
6
Outra atenção que devemos ter é quanto ao espaço entre as palavras, caso a mensagem
seja um texto ou uma frase. Por esse motivo, nosso espaço corresponderá ao número 55.
Portanto, para o nome AMANDA FONSECA, teríamos a seguinte codificação:
1123112414115516252429151311.
Mas o que aconteceria se a tabela fosse a seguinte?
A
1
N
14
Tabela 04: Erro
B
C
2
3
O
15
P
16
D
4
E
5
F
6
G
7
H
8
I
9
J
10
K
11
L
12
M
13
Q
17
R
18
S
19
T
20
U
21
V
22
W
23
X
24
Y
25
Z
26
Agora a palavra para ser codificada seria ADAO que, em números, é igual a 14115.
Ao decodificar, o destinatário poderia interpretar as letras AD como N, pois recebe o número
14 na tabela, ou AO como KE, e rapidamente a mensagem ADAO passaria a ser NKE. Por
esse motivo cada letra deve corresponder a dois algarismos, pois assim evitamos
ambiguidades.
3.1.2. Codificando e decodificando uma mensagem no RSA
Para codificar no sistema RSA, precisamos de dois números primos que tenham
valores diferentes, que receberão o nome de p e q . Eles serão necessários para a codificação
e decodificação de uma mensagem e apenas o usuário terá acesso a esses números. A partir
deles vamos obter n : basta apenas multiplicar p e q .
n = p.q
(1)
Os valores utilizados para a codificação são o par de chaves (n, e) , logo essa será
chamada de chave-pública, onde e é um menor número relativamente primo a φ (n) e deve
satisfazer as condições do “pequeno teorema de Fermat”, ou seja, mdc (φ (n), e) = 1.
(TERADA, 2008).
Para calcular a função φ (n) de Euler é preciso conhecer p e q , pois essa função é
multiplicativa e para números primos o cálculo é da seguinte forma:
φ (n) = ( p − 1).(q − 1)
(2)
Segundo Terada, se considerarmos uma mensagem legível expressa em números
inteiros e separada em blocos representado por x , então, 0 ≤ x ≤ n − 1 , ou seja, cada bloco
não poderá ser negativo e deverá ser menor que n . Então, em cada bloco que foi separado,
será aplicada a congruência a seguir:
x e ≡ y (mod n)
(3)
7
Ao dividirmos x e por n, obtemos o resto y que será a mensagem codificada, pois,
x e ≡ y (mod n) é o mesmo que x e = kn + y , para qualquer k ∈ Ζ .
Para decodificar uma mensagem, utilizaremos também um par de chaves (n, d ) . Esta
será a chave privada, pois apenas o usuário e o destinatário terão acesso a ela. O n é o mesmo
utilizado na codificação e o d é um número inverso ao e módulo φ (n) . (Coutinho,2005).
e.d ≡ 1 (mod φ (n))
(4)
Após encontrar d , já é possível decodificar, para isso, aplicaremos a congruência em
y para voltarmos à mensagem original x .
y d ≡ x (mod n)
(5)
Mas seguintes aplicações servem para quando mdc ( x, n) = 1 de forma que:
x kφ ( n )+1 ≡ x (mod n)
(6)
Pois se multiplicarmos d nos expoentes da congruência (3), obtemos:
x e.d ≡ y d (mod n)
(7)
E a equação (4) nos informa que e.d ≡ 1 (mod φ (n)) , então:
e.d = 1 + kφ (n), ∀ k ∈ Ζ
(8)
x e.d = x1+ kφ ( n ) ≡ x (mod n)
(9)
Assim;
Por (7) e (9) provamos a equação (5).
Mas, nem sempre o bloco será um número relativamente primo a n , pois x pode variar de 0 a
n − 1 . Então, como ter a certeza de que a mensagem decodificada é realmente a que foi
codificada? Como podemos provar que o mesmo acontece quando x não é primo de n ?
Se o mdc ( x, n) ≠ 1 , então x e n têm um fator primo em comum, só pode ser p ou q , pois
n = p.q . Dessa forma, x é múltiplo de p , de q ou de p.q .
Caso 1: p | x , então x = t. p , para algum t inteiro. Então x e q são primos entre si, pois caso
contrário x seria múltiplo de n . Neste caso temos:
x ≡ 0 (mod p )
(10)
Mas como o mdc ( x, q ) = 1 , então o teorema de Euler nos garante que:
x φ ( q ) ≡ 1 (mod q )
(11)
8
Lembrando que φ ( p.q ) = φ ( p ).φ (q ) , então vale demonstrar que:
x kφ ( n )+1 =
x kφ ( p ).φ ( q ) x =
1kφ ( p ) x = x (mod q )
(12)
(13)
(14)
Como x = 0(mod p ) , podemos concluir que:
x kφ ( n )+1 = x (mod p )
(15)
Segundo as equações (14) e (15) é provado que x kφ ( n )+1 − x é divisível por p e q , ou seja,
também é divisível por n , então:
x kφ ( n )+1 = x (mod n)
(16)
Caso 2: Este caso terá o mesmo resultado do primeiro, pois apenas vamos trocar os papéis de
p e q.
Caso 3: Quando o mdc ( x, n) = n , ou seja, n | x , então a congruência será da seguinte forma:
x ≡ 0 (mod n)
(17)
Para o teorema de Euler, temos a seguinte afirmação:
x φ ( n ) ≡ 0 (mod n)
(18)
x kφ ( n )+1 = x (mod n)
(19)
Como x ≡ 0 (mod n) , então:
Enfim, é provada que a mensagem decodificada será a mesma que anteriormente foi
codificada.
4. SOLUÇÕES NUMÉRICAS
Para entender melhor, faremos uma pequena “receita” mostrando os passos do
algoritmo RSA. Para isso, não utilizaremos números grandes. Para facilitar o entendimento,
usaremos números primos pequenos. Vamos utilizar o exemplo antes codificado, AMANDA
FONSECA, lembrando antes que é preciso separar os blocos e eles não podem ultrapassar o
nosso valor n . Para isso, é necessário saber primeiramente os valores de p e q . Sejam
p = 11 e q = 17 , então n = 187 e, portanto, φ (n) = 160 , logo e = 3 , pois é o menor primo que
vai satisfazer o mdc (φ (n), e) = 1 . Agora que temos a chave-pública, já é possível separar os
blocos:
9
112-31-124-141-155-162-52-42-91-51-3-11
Dessa forma evitamos também a contagem da frequência em que aparece uma letra,
dificultando a quebra. A partir daí, vamos aplicar a seguinte congruência da equação (3) em
cada bloco separadamente. Ao aplicar no primeiro bloco teremos:
112 3 ≡ 184 (mod187)
Assim, o primeiro bloco codificado, que antes era 112, passou a ter um valor de 184,
que é o resto da divisão de 112 3 por 187 . Após aplicar essa congruência em todos os blocos,
teremos a seguinte mensagem codificada:
184-58-159-91-144-83-171-36-148-187-27-22
Portanto, se algum intruso obtiver essa mensagem, não conseguirá decifrá-la, a menos
que conheça d que é inverso de e , pois a chave para decodificar a mensagem é (n, d ) , sendo
que n é um valor conhecido por fazer parte da chave de codificação. Para calcular d basta
aplicarmos a equação (4) e teremos o seguinte:
3.d ≡ 1 (mod 160)
Logo, tem-se d = 107. Enfim, vamos aplicar a congruência da equação (5) para
decodificarmos o primeiro bloco:
184107 ≡ 112 (mod187)
Portanto, se aplicarmos corretamente o algoritmo RSA ao decodificarmos, teremos a
mesma mensagem antes codificada:
112-31-124-141-155-162-52-42-91-51-3-11
5. RESULTADOS E CONCLUSÕES
Conclui-se que ao longo da história criptográfica, pode-se perceber uma grande
evolução ligada à tecnologia e um avanço intelectual da população, pois se hoje fosse
utilizada a cifra de César, por exemplo, seria na verdade uma brincadeira de criança. É claro
que todos os métodos antes utilizados respondiam as necessidades dos povos da época, quanto
mais evolução, é preciso mais segurança.
Portanto o método RSA qualquer pessoa consegue codificar e, se a codificação for
utilizada de forma correta, a segurança pode ser garantida. O que não se pode afirmar é que
esse método é inquebrável, pois, sempre depende da forma correta de utilização.
Com esse artigo consegui entender melhor a teoria estudada em sala de aula e me
mostrou o quão necessário é a Matemática, pois a partir dela conseguimos obter segurança em
nossas transações comerciais, entre outros.
10
O tema desse artigo vai muito além do que foi apresentado e as dificuldades na parte
matemática também, envolvendo conhecimentos mais avançados envolvendo tanto teoria dos
números quanto cálculo, álgebra e outros.
REFERÊNCIAS BIBLIOGRÁFICAS
COUTINHO, S.C. Números inteiros e criptografia RSA. Rio de Janeiro, IMPA, 2005.
FRANÇA, Waldizar B. de Araújo. Criptografia. Disponível em:
<www.matematica.ucb.br/sites/000/68/00000041.pdf>. Acesso em: 23 set 2012.
SANTOS, Plínio José de Oliveira. Introdução à Teoria dos números. 3. ed. IMPA, 2007.
SHOKRANIAN, Salahoddin. Criptografia para iniciantes. Brasília: Universidade de
Brasília, 2005.
SILVA, Eduardo Augusto Moraes. Um estudo do sistema criptográfico RSA. Disponível
em:
<http://www.ucb.br/sites/100/103/TCC/12005/EduardoAugustoMoraesSilva.pdf>.
Acesso em: 19 nov 2012.
SOBRAL, João Bosco M. Gerenciamento de chaves simétricas. Maio, 2006. Disponível
em: <www.inf.ufsc.br/~bosco/...seg/Gerenciamento-Chave-Simetrica.ppt>. Acesso em: 10
nov 2012.
TERADA, Routo. Segurança de dados: criptografia em redes. 2. ed. São Paulo: Edgard
Blucher, 2008.
SINGH,
Simon.
O
livro
dos
códigos.
Disponível
<http://tigredefogo.wordpress.com/2008/01/03/livro-o-livro-dos-codigos-simon-singhprimeiro-capitulo. Acesso em: 05 dez 2012.
Amanda Oliveira Fonseca ([email protected])
Curso de Matemática, Universidade Católica de Brasília
EPCT – QS 07 – Lote 01 – Águas Claras – Taguatinga – CEP.: 72966-700
em:
Download

Amanda Oliveira Fonseca - Universidade Católica de Brasília