SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
Universidade Federal De Minas
Gerais
Criptografia RSACriptografia RSA
Fundamentos De ÁlgebraFundamentos De Álgebra
Alexandre Elias Dos SantosAlexandre Elias Dos Santos
aleniac@ufmg.braleniac@ufmg.br
13 de Novembro de 201513 de Novembro de 2015
O Que É Criptografia?
● A criptografia, palavra de origem grega (kryptos,
escondido, gráphein, escrita), é o estudo dos
métodos de codificação de informação através do
uso de chaves que são utilizadas no processo.
● É a arte de embaralhar caracteres de uma
mensagem de forma que esta fique ilegível.
● A criptografia de chave pública, também conhecida
como criptografia de chaves assimétricas, é
baseada em algorítimos que requerem um par de
chaves: uma secreta (privada) e outra pública que
pode ser conhecida por todos.
Exemplo De Uso De Chaves
Assimétricas
Chave Privada
Chave Pública
1) O remetente solicita ao
destinatário uma chave para
codificar a informação.
Por sua vez, este gera um
par de chaves assimétricas.
2) A chave privada é mantida
em segredo e a pública é
enviada ao remetente.
3) O remetente usa a chave
pública para codificar a
mensagem e encaminha
esta ao destinatário.
4) O destinatário decodifica a
mensagem utilizando chave
privada e obtém a
informação.
Remetente Destinatário
Key
Criptografia RSA
● A criptografia RSA é o método de chave
pública mais utilizado no tráfego de dados na
internet, como por exemplo, em mensagens de
e-mail e compras online.
● Foi criada em 1978 pelos professores Ronald
Rivest, Adi Shamir e Leonard Adleman do
Instituto de Tecnologia de Massachusetts
(MIT).
● O RSA fundamenta-se na Teoria dos Números,
área clássica da matemática.
Método RSA
● O RSA basea-se na construção de um número
composto resultante de dois fatores primos grande, no
mínimo 100 dígitos.
● A segurança está na dificuldade de fatorar números
compostos essencialmente grandes em seus
componentes primos.
● Alguns teoremas importantes para a implementação
são:
➢ Teorema Fundamental da Aritmética;
➢ Teorema de Euler;
➢ Pequeno Teorema de Fermat;
➢ Algorítimo estendido de Euclides.
Passo Inicial
● O passo zero da codificação é gerar
aleatoriamente dois números primos
grandes p e q, obtendo, portanto, um
número composto n:
n = p x qn = p x q
● Utilizamos o exemplo dado por S. C.
Coutinho escolhendo p = 11 e q = 13 e,
portanto, n = 143.
Pré-codificação
● O primeiro passo é digitalizar os caracteres
utilizando-se uma tabela para conversão.
● Como exemplo, digitalizamos apenas
caracteres alfabéticos.
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
Tabela 1 - Caracteres alfabéticos codificados.
Pré-codificando Uma Mensagem
● Codificamos a mensagem Paraty é linda:
P A R A T Y E L I N D A
25 10 27 10 29 34 99 14 99 21 18 23 13 10
Note que o caractere espaço corresponte ao número 99.
Quebra Da Mensagem Em
Blocos
● Obtemos então um bloco único:
25251010272710102929343499991414999921211818232313131010
● O próximo passo é quebrar este código em blocos
menores que denotaremos por m, tal que 0 < m < n.
25 102 7 102 93 49 91 49 92 118 23 13 1025 102 7 102 93 49 91 49 92 118 23 13 10
Note que m não deve começar com 0. Isto evita
problemas na decodificação.
Criação Da Chave Pública E
Codificação
1) Uma vez obtido n = p x q, podemos calcular a função
totiente em n:
Φ(n) = (p - 1) x (q - 1)Φ(n) = (p - 1) x (q - 1)
= 10 x 12 = 120= 10 x 12 = 120
2) Para codificar um bloco m, precisamos do par de
chave (n,e), tal que e é primo e mdc (e,Φ(n)) = 1, ou
seja, e não divide Φ(n).
3) A codificação de um bloco m é obtida por:
C(m)C(m) ≡≡ mmee ≡ k≡ k mod n,mod n,
onde k é a forma reduzida de me módulo n.
Exemplo De Codificação De Um
Bloco
● Para este exemplo, consideramos e = 7.
● Logo, como exemplo, codificando o primeiro bloco
obtemos:
C(25)C(25) ≡≡ 252577 ≡ 64≡ 64 mod n,mod n,
em que 64 é a forma reduzida módulo n.
● Assim, temos que k = 64.
● Codificando a sequência de blocos da mensagem,
obtemos:
64 119 6 119 102 36 130 36 27 79 23 117 1064 119 6 119 102 36 130 36 27 79 23 117 10
Criação Da Chave Privada e
Decodificação
1)Primeiramente, calculamos o inverso de e módulo
Φ(n) denotado por d = e-1.
2)Computamos d aplicando o algorítimo estendido de
Euclides a Φ(n).
3)A decodificação de um bloco k , onde k = C(m), é
dada por:
D(k) ≡ kD(k) ≡ kdd ≡ m mod n,≡ m mod n,
onde m é a forma reduzida de kd módulo n.
● A chave de decodificação é o terno (p,q,d) que
deve ser mantida em sigilo.
Exemplo de Decodificação De
Um Bloco
● Para decodificar um bloco k com e = 7
calculamos e-1 mod Φ(n):
dd ≡ -17 ≡ 103 mod 120,≡ -17 ≡ 103 mod 120,
em que 103 é forma reduzida de e-1 mod 120.
● A partir do exemplo dado, calculamos
D(64):
D(64) ≡ D(C(25)) ≡ 64D(64) ≡ D(C(25)) ≡ 64103103
≡ 25 mod 143≡ 25 mod 143
Verificação Do Método
● Para garantir que o método de fato funciona, é
necessário mostrar que a decodificação do bloco
k resulta exatamente no original m, isto é, D(k) =
m.
● É suficiente mostrar que D(k) ≡ m mod n, pois
ambos estão no intervalo:
1 ≤ m ≤ (n-1),
note que m está imediatamente neste intervalo e k
é a forma reduzida em módulo n. Portanto, são
congruentes mod n se, e somente se, são iguais.
Demonstração
● Por definição de C(m) e D(k) temos:
D(k) ≡ D(C(m)) ≡ (mD(k) ≡ D(C(m)) ≡ (mee
))dd
≡ m≡ meded
mod n. (1)mod n. (1)
● Como ed ≡ 1 mod Φ(n), implica que:
ed = Φ(n)b + 1. (2)ed = Φ(n)b + 1. (2)
Note que e, d e Φ(n) são inteiros positivos
maiores do que 2, logo b>0.
● Substituindo (2) em (1) temos:
D(k) ≡ mD(k) ≡ mΦ(n)b + 1Φ(n)b + 1 ≡ mm≡ mmΦ(n)bΦ(n)b ≡ m(≡ m(mmΦ(n)Φ(n)))bb mod n. (3)mod n. (3)
Aplicando O Teorema De Euler
● A última expressão sugere aplicar o teorema de
Euler donde:
mmΦ(n)Φ(n) ≡ 1 mod n. (4)≡ 1 mod n. (4)
Consequentemente, bed ≡ b mod n. E, então, a
demonstração estaria encerrada.
● Mas ao aplicar este teorema (4), deve-se
considerar a hipótese de que o mdc(m,n) = 1.
● E, se de fato, esta condição deveria ser satisfeita
necessariamente para todo m, isto traria
dificuldade na codificação dos blocos.
Aplicando O Teorema de Fermat
● Alternativamente, substituímos Φ(n) pelo produto Φ(p)Φ(q),
temos em módulo p (e analogamente em módulo q):
D(k) ≡ m(mD(k) ≡ m(mΦ(n)Φ(n)
))bb
≡ m(m≡ m(mΦ(p)Φ(q)Φ(p)Φ(q)
))bb
≡≡ m(mm(mΦ(p)Φ(p)))Φ(q)bΦ(q)b ≡ m(≡ m(mm(p-1)(p-1)))(q-1)b(q-1)b
● Aqui podemos aplicar mp-1 ≡ 1 mod p do Teorema de Fermat
supondo que m não divide p.
● De fato, m só divide p se m ≡ 0 mod p, pois p é primo. Além
disso, m>0 e m<pq. Assim, esta congruência é facilmente
verificável.
● Logo, aplicamos este teorema e obtemos:
D(k) ≡ m(mD(k) ≡ m(m(p-1)(p-1)
))(q-1)b(q-1)b
≡ m1≡ m1(q-1)b(q-1)b
≡ m mod p≡ m mod p
Verificação Do Produto*
● Como pudemos ver, bed ≡ b mod p, assim como bed ≡ b
mod q.
● Dado que queremos mostrar que bed ≡ b mod n, então
devemos verificar a validade para o produto n = pq.
● De fato, bed ≡ b implica em p|(bed – b) e, analogamente,
q|(bed – b).
● Além disso, mdc(p,q) = 1. Logo, pq|(bed – b) e, portanto:
bbeded ≡ b mod n.≡ b mod n.
Como queríamos mostrar.
* Os primos p e q são naturais distintos e mdc(p,q) = 1. Seja Δ>0 um
número natural. Se p e q dividem Δ, então o produto pq divide Δ.
Segurança do RSA
Nº Dígitos Nº Operações Tempo
50 1,4 x 1010
3,9 horas
100 2,3 x 1015
74 anos
300 1,5 x 1029
4,9 x 1015
anos
500 1,3 x 1039
4,2 x 1025
anos
Tabela 2 – Número de operações e tempo necessário
para fatorar n utilizando-se computadores modernos.
● A segurança do RSA está na dificuldade de calcular d sem
conhecer Φ(n).
● Os primos p e q podem ser obtidos conhecendo-se a chave
(n,e) e Φ(n). Daí, a descoberta de um novo método de computar
Φ(n) tendo-se a chave pública seria equivalente a fatorar n.
● Acredita-se que quebrar a criptografia RSA é equivalente a
fatorar n.
Conclusão
● A criptografia RSA é um método seguro para o tráfico de
dados em meios públicos como a internet, desde que a
chave de decodificação seja mantida em segredo.
● A complexidade computacional é uma grande barreira para
fatorar n em seus fatores primos, contudo uma nova
geração de computadores pode romper esta dificuldade.
Isto tem levado a criação de novos métodos de
criptografia, a saber, a criptografia quântica.
● Um algorítimo eficiente para calcular Φ(n) utilizando-se a
chave pública implicaria numa forma eficiente de fatorar
um número composto n.
●
A Teoria dos Números é bem relevante em aplicações de
sistemas de criptografias.
Bibliografia
● COUTINHO S.C. (2011) Números Inteiros e Criptografia
RSA, Instituto de Matemática Pura e Aplicada.
● VIDIGAL A. e outros (2009) Fundamentos de Álgebra,
Universidade Federal de Minas Gerais.
● SILVA E.V.P (2006) Introdução a Criptografia RSA,
Universidade Estadual Paulista “Julio de Mesquita Filho”.
● http://www.mat.ufmg.br/~elaine/OBMEP/criptografia.pdf
● https://pt.wikipedia.org/wiki/RSA

Mais conteúdo relacionado

Mais procurados

String kmp
String kmpString kmp
String kmpthinkphp
 
Criptografía
CriptografíaCriptografía
CriptografíaFnr Mrtnz
 
2 distribuições discretas
2   distribuições discretas2   distribuições discretas
2 distribuições discretasFernando Lucas
 
Teorema do valor intermediário - Análise Real
Teorema do valor intermediário - Análise RealTeorema do valor intermediário - Análise Real
Teorema do valor intermediário - Análise RealZaqueu Oliveira
 
Exercícios - Princípio da Indução Finita (PIF)
Exercícios - Princípio da Indução Finita (PIF)Exercícios - Princípio da Indução Finita (PIF)
Exercícios - Princípio da Indução Finita (PIF)Rodrigo Thiago Passos Silva
 
Cifrado por sustitucion
Cifrado por sustitucionCifrado por sustitucion
Cifrado por sustitucionG Hoyos A
 
Criptografia - Asimetrica - RSA
Criptografia - Asimetrica - RSACriptografia - Asimetrica - RSA
Criptografia - Asimetrica - RSAG Hoyos A
 
The rsa algorithm
The rsa algorithmThe rsa algorithm
The rsa algorithmKomal Singh
 
Matemática Discreta - Parte V relações
Matemática Discreta - Parte V relaçõesMatemática Discreta - Parte V relações
Matemática Discreta - Parte V relaçõesUlrich Schiel
 
Cryptography using rsa cryptosystem
Cryptography using rsa cryptosystemCryptography using rsa cryptosystem
Cryptography using rsa cryptosystemSamdish Arora
 
Indeedなう B日程 解説
Indeedなう B日程 解説Indeedなう B日程 解説
Indeedなう B日程 解説AtCoder Inc.
 

Mais procurados (20)

String kmp
String kmpString kmp
String kmp
 
Cryptography Intro
Cryptography IntroCryptography Intro
Cryptography Intro
 
Unit 3
Unit 3Unit 3
Unit 3
 
Criptografía
CriptografíaCriptografía
Criptografía
 
2 distribuições discretas
2   distribuições discretas2   distribuições discretas
2 distribuições discretas
 
Teorema do valor intermediário - Análise Real
Teorema do valor intermediário - Análise RealTeorema do valor intermediário - Análise Real
Teorema do valor intermediário - Análise Real
 
Exercícios - Princípio da Indução Finita (PIF)
Exercícios - Princípio da Indução Finita (PIF)Exercícios - Princípio da Indução Finita (PIF)
Exercícios - Princípio da Indução Finita (PIF)
 
Cifrado por sustitucion
Cifrado por sustitucionCifrado por sustitucion
Cifrado por sustitucion
 
ΠΛΗ30 ΜΑΘΗΜΑ 5.3
ΠΛΗ30 ΜΑΘΗΜΑ 5.3ΠΛΗ30 ΜΑΘΗΜΑ 5.3
ΠΛΗ30 ΜΑΘΗΜΑ 5.3
 
ΠΛΗ30 ΜΑΘΗΜΑ 5.2
ΠΛΗ30 ΜΑΘΗΜΑ 5.2ΠΛΗ30 ΜΑΘΗΜΑ 5.2
ΠΛΗ30 ΜΑΘΗΜΑ 5.2
 
Wa 7
Wa 7Wa 7
Wa 7
 
Exercice arithmétiques
Exercice arithmétiquesExercice arithmétiques
Exercice arithmétiques
 
Criptografia - Asimetrica - RSA
Criptografia - Asimetrica - RSACriptografia - Asimetrica - RSA
Criptografia - Asimetrica - RSA
 
The rsa algorithm
The rsa algorithmThe rsa algorithm
The rsa algorithm
 
Matemática Discreta - Parte V relações
Matemática Discreta - Parte V relaçõesMatemática Discreta - Parte V relações
Matemática Discreta - Parte V relações
 
Cryptography using rsa cryptosystem
Cryptography using rsa cryptosystemCryptography using rsa cryptosystem
Cryptography using rsa cryptosystem
 
Wa 2
Wa 2Wa 2
Wa 2
 
Computacao Numérica
Computacao NuméricaComputacao Numérica
Computacao Numérica
 
ΠΛΗ20 ΤΕΣΤ 1
ΠΛΗ20 ΤΕΣΤ 1ΠΛΗ20 ΤΕΣΤ 1
ΠΛΗ20 ΤΕΣΤ 1
 
Indeedなう B日程 解説
Indeedなう B日程 解説Indeedなう B日程 解説
Indeedなう B日程 解説
 

Destaque

TUTORIAL PARA LA RESOLUCIÓN DE ECUACIONES LINEALES UTILIZANDO LA INFORMÁTICA
TUTORIAL PARA LA RESOLUCIÓN  DE ECUACIONES LINEALES UTILIZANDO LA INFORMÁTICATUTORIAL PARA LA RESOLUCIÓN  DE ECUACIONES LINEALES UTILIZANDO LA INFORMÁTICA
TUTORIAL PARA LA RESOLUCIÓN DE ECUACIONES LINEALES UTILIZANDO LA INFORMÁTICACarolina Vázquez
 
Fundamentos del algebra (2)
Fundamentos del algebra (2)Fundamentos del algebra (2)
Fundamentos del algebra (2)juegen18
 
Fundamentos de algebra básica parte 1
Fundamentos de algebra básica parte 1Fundamentos de algebra básica parte 1
Fundamentos de algebra básica parte 1Giannina Galeth
 
2016: Fundamentos Matemáticos para Inteligência Artificial
2016: Fundamentos Matemáticos para Inteligência Artificial2016: Fundamentos Matemáticos para Inteligência Artificial
2016: Fundamentos Matemáticos para Inteligência ArtificialLeandro de Castro
 
Presentación del curso funciones matemáticas
Presentación del curso funciones matemáticasPresentación del curso funciones matemáticas
Presentación del curso funciones matemáticasEdgar Mata
 

Destaque (6)

TUTORIAL PARA LA RESOLUCIÓN DE ECUACIONES LINEALES UTILIZANDO LA INFORMÁTICA
TUTORIAL PARA LA RESOLUCIÓN  DE ECUACIONES LINEALES UTILIZANDO LA INFORMÁTICATUTORIAL PARA LA RESOLUCIÓN  DE ECUACIONES LINEALES UTILIZANDO LA INFORMÁTICA
TUTORIAL PARA LA RESOLUCIÓN DE ECUACIONES LINEALES UTILIZANDO LA INFORMÁTICA
 
Fundamentos del algebra (2)
Fundamentos del algebra (2)Fundamentos del algebra (2)
Fundamentos del algebra (2)
 
Ma418 2016 01_s1.1
Ma418 2016 01_s1.1Ma418 2016 01_s1.1
Ma418 2016 01_s1.1
 
Fundamentos de algebra básica parte 1
Fundamentos de algebra básica parte 1Fundamentos de algebra básica parte 1
Fundamentos de algebra básica parte 1
 
2016: Fundamentos Matemáticos para Inteligência Artificial
2016: Fundamentos Matemáticos para Inteligência Artificial2016: Fundamentos Matemáticos para Inteligência Artificial
2016: Fundamentos Matemáticos para Inteligência Artificial
 
Presentación del curso funciones matemáticas
Presentación del curso funciones matemáticasPresentación del curso funciones matemáticas
Presentación del curso funciones matemáticas
 

Semelhante a Criptografia RSA

Criptografia com curva_eliptica_dbetoni
Criptografia com curva_eliptica_dbetoniCriptografia com curva_eliptica_dbetoni
Criptografia com curva_eliptica_dbetonidrbetoni
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmosRicardo Bolanho
 
Nota de aula seguranca da informacao - criptografia
Nota de aula   seguranca da informacao - criptografiaNota de aula   seguranca da informacao - criptografia
Nota de aula seguranca da informacao - criptografiafelipetsi
 
Algoritmo de programação dinâmica-01.pdf
Algoritmo de programação dinâmica-01.pdfAlgoritmo de programação dinâmica-01.pdf
Algoritmo de programação dinâmica-01.pdfCaiqueMiranda7
 
Trabalho de Graduação Interdisciplinas: Teoria da Informação: códigos compres...
Trabalho de Graduação Interdisciplinas: Teoria da Informação: códigos compres...Trabalho de Graduação Interdisciplinas: Teoria da Informação: códigos compres...
Trabalho de Graduação Interdisciplinas: Teoria da Informação: códigos compres...Diego Souza Silva
 
19 algoritmos de enumeracao
19   algoritmos de enumeracao19   algoritmos de enumeracao
19 algoritmos de enumeracaoRicardo Bolanho
 
Sessao 4 - Chaves espúrias e distância de unicidade
Sessao 4 - Chaves espúrias e distância de unicidadeSessao 4 - Chaves espúrias e distância de unicidade
Sessao 4 - Chaves espúrias e distância de unicidadePedro De Almeida
 
Md 4 sequenciae_inducaomatematica
Md 4 sequenciae_inducaomatematicaMd 4 sequenciae_inducaomatematica
Md 4 sequenciae_inducaomatematicaMauricio Wieler
 
Apresentação Método de Monte Carlo
Apresentação Método de Monte CarloApresentação Método de Monte Carlo
Apresentação Método de Monte CarloAngelo Polotto
 
EDA_Aula_09_Complexidade_2021.1.pdf
EDA_Aula_09_Complexidade_2021.1.pdfEDA_Aula_09_Complexidade_2021.1.pdf
EDA_Aula_09_Complexidade_2021.1.pdfSimoneSantos16595
 
Análise de Algoritmos - Análise Assintótica
Análise de Algoritmos - Análise AssintóticaAnálise de Algoritmos - Análise Assintótica
Análise de Algoritmos - Análise AssintóticaDelacyr Ferreira
 
Teoria do números - Classificações especiais
Teoria do números - Classificações especiaisTeoria do números - Classificações especiais
Teoria do números - Classificações especiaisRomulo Garcia
 

Semelhante a Criptografia RSA (20)

Criptografia com curva_eliptica_dbetoni
Criptografia com curva_eliptica_dbetoniCriptografia com curva_eliptica_dbetoni
Criptografia com curva_eliptica_dbetoni
 
13 introducao a analise de algoritmos
13   introducao a analise de algoritmos13   introducao a analise de algoritmos
13 introducao a analise de algoritmos
 
Rsa
RsaRsa
Rsa
 
Nota de aula seguranca da informacao - criptografia
Nota de aula   seguranca da informacao - criptografiaNota de aula   seguranca da informacao - criptografia
Nota de aula seguranca da informacao - criptografia
 
Algoritmo de programação dinâmica-01.pdf
Algoritmo de programação dinâmica-01.pdfAlgoritmo de programação dinâmica-01.pdf
Algoritmo de programação dinâmica-01.pdf
 
Matemática – conjuntos numéricos 03 – 2014
Matemática – conjuntos numéricos 03 – 2014Matemática – conjuntos numéricos 03 – 2014
Matemática – conjuntos numéricos 03 – 2014
 
Trabalho de Graduação Interdisciplinas: Teoria da Informação: códigos compres...
Trabalho de Graduação Interdisciplinas: Teoria da Informação: códigos compres...Trabalho de Graduação Interdisciplinas: Teoria da Informação: códigos compres...
Trabalho de Graduação Interdisciplinas: Teoria da Informação: códigos compres...
 
euclides primos
euclides primoseuclides primos
euclides primos
 
19 algoritmos de enumeracao
19   algoritmos de enumeracao19   algoritmos de enumeracao
19 algoritmos de enumeracao
 
Sessao 4 - Chaves espúrias e distância de unicidade
Sessao 4 - Chaves espúrias e distância de unicidadeSessao 4 - Chaves espúrias e distância de unicidade
Sessao 4 - Chaves espúrias e distância de unicidade
 
Md 4 sequenciae_inducaomatematica
Md 4 sequenciae_inducaomatematicaMd 4 sequenciae_inducaomatematica
Md 4 sequenciae_inducaomatematica
 
Apresentação Método de Monte Carlo
Apresentação Método de Monte CarloApresentação Método de Monte Carlo
Apresentação Método de Monte Carlo
 
O teorema de cramér lundberg via martingais
O teorema de cramér lundberg via martingaisO teorema de cramér lundberg via martingais
O teorema de cramér lundberg via martingais
 
Floyd-Warshall
Floyd-WarshallFloyd-Warshall
Floyd-Warshall
 
Aes 25
Aes 25Aes 25
Aes 25
 
03 pid d
03 pid d03 pid d
03 pid d
 
EDA_Aula_09_Complexidade_2021.1.pdf
EDA_Aula_09_Complexidade_2021.1.pdfEDA_Aula_09_Complexidade_2021.1.pdf
EDA_Aula_09_Complexidade_2021.1.pdf
 
Análise de Algoritmos - Análise Assintótica
Análise de Algoritmos - Análise AssintóticaAnálise de Algoritmos - Análise Assintótica
Análise de Algoritmos - Análise Assintótica
 
Teoria do números - Classificações especiais
Teoria do números - Classificações especiaisTeoria do números - Classificações especiais
Teoria do números - Classificações especiais
 
Pequeno teorema de fermat
Pequeno teorema de fermatPequeno teorema de fermat
Pequeno teorema de fermat
 

Criptografia RSA

  • 1. Universidade Federal De Minas Gerais Criptografia RSACriptografia RSA Fundamentos De ÁlgebraFundamentos De Álgebra Alexandre Elias Dos SantosAlexandre Elias Dos Santos aleniac@ufmg.braleniac@ufmg.br 13 de Novembro de 201513 de Novembro de 2015
  • 2. O Que É Criptografia? ● A criptografia, palavra de origem grega (kryptos, escondido, gráphein, escrita), é o estudo dos métodos de codificação de informação através do uso de chaves que são utilizadas no processo. ● É a arte de embaralhar caracteres de uma mensagem de forma que esta fique ilegível. ● A criptografia de chave pública, também conhecida como criptografia de chaves assimétricas, é baseada em algorítimos que requerem um par de chaves: uma secreta (privada) e outra pública que pode ser conhecida por todos.
  • 3. Exemplo De Uso De Chaves Assimétricas Chave Privada Chave Pública 1) O remetente solicita ao destinatário uma chave para codificar a informação. Por sua vez, este gera um par de chaves assimétricas. 2) A chave privada é mantida em segredo e a pública é enviada ao remetente. 3) O remetente usa a chave pública para codificar a mensagem e encaminha esta ao destinatário. 4) O destinatário decodifica a mensagem utilizando chave privada e obtém a informação. Remetente Destinatário Key
  • 4. Criptografia RSA ● A criptografia RSA é o método de chave pública mais utilizado no tráfego de dados na internet, como por exemplo, em mensagens de e-mail e compras online. ● Foi criada em 1978 pelos professores Ronald Rivest, Adi Shamir e Leonard Adleman do Instituto de Tecnologia de Massachusetts (MIT). ● O RSA fundamenta-se na Teoria dos Números, área clássica da matemática.
  • 5. Método RSA ● O RSA basea-se na construção de um número composto resultante de dois fatores primos grande, no mínimo 100 dígitos. ● A segurança está na dificuldade de fatorar números compostos essencialmente grandes em seus componentes primos. ● Alguns teoremas importantes para a implementação são: ➢ Teorema Fundamental da Aritmética; ➢ Teorema de Euler; ➢ Pequeno Teorema de Fermat; ➢ Algorítimo estendido de Euclides.
  • 6. Passo Inicial ● O passo zero da codificação é gerar aleatoriamente dois números primos grandes p e q, obtendo, portanto, um número composto n: n = p x qn = p x q ● Utilizamos o exemplo dado por S. C. Coutinho escolhendo p = 11 e q = 13 e, portanto, n = 143.
  • 7. Pré-codificação ● O primeiro passo é digitalizar os caracteres utilizando-se uma tabela para conversão. ● Como exemplo, digitalizamos apenas caracteres alfabéticos. 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 Tabela 1 - Caracteres alfabéticos codificados.
  • 8. Pré-codificando Uma Mensagem ● Codificamos a mensagem Paraty é linda: P A R A T Y E L I N D A 25 10 27 10 29 34 99 14 99 21 18 23 13 10 Note que o caractere espaço corresponte ao número 99.
  • 9. Quebra Da Mensagem Em Blocos ● Obtemos então um bloco único: 25251010272710102929343499991414999921211818232313131010 ● O próximo passo é quebrar este código em blocos menores que denotaremos por m, tal que 0 < m < n. 25 102 7 102 93 49 91 49 92 118 23 13 1025 102 7 102 93 49 91 49 92 118 23 13 10 Note que m não deve começar com 0. Isto evita problemas na decodificação.
  • 10. Criação Da Chave Pública E Codificação 1) Uma vez obtido n = p x q, podemos calcular a função totiente em n: Φ(n) = (p - 1) x (q - 1)Φ(n) = (p - 1) x (q - 1) = 10 x 12 = 120= 10 x 12 = 120 2) Para codificar um bloco m, precisamos do par de chave (n,e), tal que e é primo e mdc (e,Φ(n)) = 1, ou seja, e não divide Φ(n). 3) A codificação de um bloco m é obtida por: C(m)C(m) ≡≡ mmee ≡ k≡ k mod n,mod n, onde k é a forma reduzida de me módulo n.
  • 11. Exemplo De Codificação De Um Bloco ● Para este exemplo, consideramos e = 7. ● Logo, como exemplo, codificando o primeiro bloco obtemos: C(25)C(25) ≡≡ 252577 ≡ 64≡ 64 mod n,mod n, em que 64 é a forma reduzida módulo n. ● Assim, temos que k = 64. ● Codificando a sequência de blocos da mensagem, obtemos: 64 119 6 119 102 36 130 36 27 79 23 117 1064 119 6 119 102 36 130 36 27 79 23 117 10
  • 12. Criação Da Chave Privada e Decodificação 1)Primeiramente, calculamos o inverso de e módulo Φ(n) denotado por d = e-1. 2)Computamos d aplicando o algorítimo estendido de Euclides a Φ(n). 3)A decodificação de um bloco k , onde k = C(m), é dada por: D(k) ≡ kD(k) ≡ kdd ≡ m mod n,≡ m mod n, onde m é a forma reduzida de kd módulo n. ● A chave de decodificação é o terno (p,q,d) que deve ser mantida em sigilo.
  • 13. Exemplo de Decodificação De Um Bloco ● Para decodificar um bloco k com e = 7 calculamos e-1 mod Φ(n): dd ≡ -17 ≡ 103 mod 120,≡ -17 ≡ 103 mod 120, em que 103 é forma reduzida de e-1 mod 120. ● A partir do exemplo dado, calculamos D(64): D(64) ≡ D(C(25)) ≡ 64D(64) ≡ D(C(25)) ≡ 64103103 ≡ 25 mod 143≡ 25 mod 143
  • 14. Verificação Do Método ● Para garantir que o método de fato funciona, é necessário mostrar que a decodificação do bloco k resulta exatamente no original m, isto é, D(k) = m. ● É suficiente mostrar que D(k) ≡ m mod n, pois ambos estão no intervalo: 1 ≤ m ≤ (n-1), note que m está imediatamente neste intervalo e k é a forma reduzida em módulo n. Portanto, são congruentes mod n se, e somente se, são iguais.
  • 15. Demonstração ● Por definição de C(m) e D(k) temos: D(k) ≡ D(C(m)) ≡ (mD(k) ≡ D(C(m)) ≡ (mee ))dd ≡ m≡ meded mod n. (1)mod n. (1) ● Como ed ≡ 1 mod Φ(n), implica que: ed = Φ(n)b + 1. (2)ed = Φ(n)b + 1. (2) Note que e, d e Φ(n) são inteiros positivos maiores do que 2, logo b>0. ● Substituindo (2) em (1) temos: D(k) ≡ mD(k) ≡ mΦ(n)b + 1Φ(n)b + 1 ≡ mm≡ mmΦ(n)bΦ(n)b ≡ m(≡ m(mmΦ(n)Φ(n)))bb mod n. (3)mod n. (3)
  • 16. Aplicando O Teorema De Euler ● A última expressão sugere aplicar o teorema de Euler donde: mmΦ(n)Φ(n) ≡ 1 mod n. (4)≡ 1 mod n. (4) Consequentemente, bed ≡ b mod n. E, então, a demonstração estaria encerrada. ● Mas ao aplicar este teorema (4), deve-se considerar a hipótese de que o mdc(m,n) = 1. ● E, se de fato, esta condição deveria ser satisfeita necessariamente para todo m, isto traria dificuldade na codificação dos blocos.
  • 17. Aplicando O Teorema de Fermat ● Alternativamente, substituímos Φ(n) pelo produto Φ(p)Φ(q), temos em módulo p (e analogamente em módulo q): D(k) ≡ m(mD(k) ≡ m(mΦ(n)Φ(n) ))bb ≡ m(m≡ m(mΦ(p)Φ(q)Φ(p)Φ(q) ))bb ≡≡ m(mm(mΦ(p)Φ(p)))Φ(q)bΦ(q)b ≡ m(≡ m(mm(p-1)(p-1)))(q-1)b(q-1)b ● Aqui podemos aplicar mp-1 ≡ 1 mod p do Teorema de Fermat supondo que m não divide p. ● De fato, m só divide p se m ≡ 0 mod p, pois p é primo. Além disso, m>0 e m<pq. Assim, esta congruência é facilmente verificável. ● Logo, aplicamos este teorema e obtemos: D(k) ≡ m(mD(k) ≡ m(m(p-1)(p-1) ))(q-1)b(q-1)b ≡ m1≡ m1(q-1)b(q-1)b ≡ m mod p≡ m mod p
  • 18. Verificação Do Produto* ● Como pudemos ver, bed ≡ b mod p, assim como bed ≡ b mod q. ● Dado que queremos mostrar que bed ≡ b mod n, então devemos verificar a validade para o produto n = pq. ● De fato, bed ≡ b implica em p|(bed – b) e, analogamente, q|(bed – b). ● Além disso, mdc(p,q) = 1. Logo, pq|(bed – b) e, portanto: bbeded ≡ b mod n.≡ b mod n. Como queríamos mostrar. * Os primos p e q são naturais distintos e mdc(p,q) = 1. Seja Δ>0 um número natural. Se p e q dividem Δ, então o produto pq divide Δ.
  • 19. Segurança do RSA Nº Dígitos Nº Operações Tempo 50 1,4 x 1010 3,9 horas 100 2,3 x 1015 74 anos 300 1,5 x 1029 4,9 x 1015 anos 500 1,3 x 1039 4,2 x 1025 anos Tabela 2 – Número de operações e tempo necessário para fatorar n utilizando-se computadores modernos. ● A segurança do RSA está na dificuldade de calcular d sem conhecer Φ(n). ● Os primos p e q podem ser obtidos conhecendo-se a chave (n,e) e Φ(n). Daí, a descoberta de um novo método de computar Φ(n) tendo-se a chave pública seria equivalente a fatorar n. ● Acredita-se que quebrar a criptografia RSA é equivalente a fatorar n.
  • 20. Conclusão ● A criptografia RSA é um método seguro para o tráfico de dados em meios públicos como a internet, desde que a chave de decodificação seja mantida em segredo. ● A complexidade computacional é uma grande barreira para fatorar n em seus fatores primos, contudo uma nova geração de computadores pode romper esta dificuldade. Isto tem levado a criação de novos métodos de criptografia, a saber, a criptografia quântica. ● Um algorítimo eficiente para calcular Φ(n) utilizando-se a chave pública implicaria numa forma eficiente de fatorar um número composto n. ● A Teoria dos Números é bem relevante em aplicações de sistemas de criptografias.
  • 21. Bibliografia ● COUTINHO S.C. (2011) Números Inteiros e Criptografia RSA, Instituto de Matemática Pura e Aplicada. ● VIDIGAL A. e outros (2009) Fundamentos de Álgebra, Universidade Federal de Minas Gerais. ● SILVA E.V.P (2006) Introdução a Criptografia RSA, Universidade Estadual Paulista “Julio de Mesquita Filho”. ● http://www.mat.ufmg.br/~elaine/OBMEP/criptografia.pdf ● https://pt.wikipedia.org/wiki/RSA