Matemática e Criptografia
Severino Collier Coutinho
UFRJ
Criptologia
Criptos = escondido em grego
• Criptografia
arte de esconder
mensagens
• Criptoanálise
arte de quebrar
mensagens
História
• César foi o
primeiro a utilizar
criptografia como
meio de esconder
informações
secretas.
Código de César
A B C D E F G H I J L M N O P Q R S T U V X Z
C D E F G H I J L MN O P Q R S T U V X Z A B
Exemplo
ESSES ROMANOS SÃO UNS NEURÓTICOS
GUUGU TQOCPQU UCQ XPU PGXTQVLEQU
Problemas
• É fácil decodificar verificando a
freqüência das letras na mensagem.
• Saber codificar implica em saber
decodificar.
• Precisa de canal seguro.
O mesmo se aplica a outros códigos semelhantes
Outras aplicações
O método de contagem de freqüência e
técnicas semelhantes de criptografia
também são usadas na decifração de
escritas antigas.
Exemplos: hieróglifos, linear B
Abre parêntesis...
Hieróglifos egípcios
• Conhecimento da leitura esquecido
desde, pelo menos, 500 d.C.
• Horapolo de Nilópolis: caracteres seriam
ideográficos.
Renascença
• Athanasius Kircher
(1602-1680).
• Segue Horapollo.
• Língua copta.
A chave
• Pedra de Rosetta.
• Descoberta em
1799.
• Mesmo texto escrito em hieróglifos, demótico e grego.
O decifrador
• J.-F. Champollion (17991832).
• Língua derivada do copta.
• Escrita: caracteres ideográficos, alfabéticos e
determinativos.
O alfabeto
Determinativos
= htr = cavalo
• O determinativo é o
desenho do cavalo.
• E preciso acrescentá-lo
porque htr também
significa taxa.
Linear B
• Descoberta em
Creta.
• Decifrado por M.
Ventris em 1953.
• Contagem de
freqüência: língua é
grego.
Vale do Indo
• Ainda não decifrada.
• Inscrições curtas
dificultam a contagem
de freqüência.
Fecha parêntesis...
Tipos de Códigos
• Chave secreta:
• Saber codificar
implica em saber
decodificar.
• Precisa de canal
seguro.
• Chave pública:
• Saber codificar
não implica saber
decodificar.
• Não precisa de
canal seguro.
• Inventado na
década de 1970.
Chave Pública
• Imagem: armadilha para lagosta.
Idéia: problema
fácil de resolver
por um lado e
difícil por outro.
RSA
 Chave
pública
mais
popular
 Inventado em
1976
Rivest
Adleman
Shamir
Número Primo
Número divisível somente por ele
mesmo e pela unidade.
Exemplos
2, 3, 5, 7, 11, 13, 17, ..., 41, 43, 47, ....
213466917-1 tem 4.053.946 algarismos
RSA
Escolha dois números primos p e q.
Calcule n = pq.
• Chave de
codificação:
n = pq.
• Chave de
decodificação são
p e q.
• Pode ser tornada
pública.
• Tem que ser
mantida secreta.
Como quebrar o RSA?
• n = pq é público
• Preciso conhecer p e q para
decodificar a mensagem.
• Logo: basta fatorar n para achar p e
q.
Fatorando 120.
•
•
•
•
120  2 = 60
60  2 = 30
30  2 = 15
15  3 = 5, que é primo.
• Logo: 120 = 2·2 ·2 ·3 ·5.
Fatorar tem alto custo!
• Se n = pq e p, q ~ 1050.
• Começo de 2 e avanço até ~ 1050
• Computador executa 1010 divisões/s.
• Logo preciso esperar 1040s ~ 1031 anos!
Porém ...
O universo só tem 1011 anos!
Portanto...
Achar p e q conhecendo apenas
n = pq é muito difícil.
RSA-129
Mensagem codificada em 1976 usando
uma chave pública n com 129 algarismos.
Com os recursos da época (computadores e algoritmos) deveriam ser necessários quadrilhões de anos para
decodificá-la.
Entretanto...
Decodificada em 1994:
“The magic words are squeamish
ossifrage”
Como foi feito
• 600 computadores de voluntários
• Em 25 países
• Dados reunidos usando um supercomputador
• Tempo total: oito meses!
O que fez a diferença
• Novos algoritmos (crivo quadrático).
• Computadores mais rápidos.
• Popularização dos computadores.
• A internet para interligar tudo.
RSA-160
2152741102718889701896015201312825429257773588
84567598017049767677813314521885913567301105
9773491059602497907111585214302079314665202840
140619946994927570407753
Fatores
454278928584813940716861906497388316561371457
78469793250959984709250004157335359 e
473880906038320161966338323037889519732689229
21040957944741354648812028493909367
Dúvida
Se é difícil fatorar números grandes...
E se um número primo é o que não
tem fatores...
...Então como obter dois primos
grandes para construir a chave
pública n do RSA?
Primalidade
• Não é preciso fatorar para descobrir se
um número é primo ou composto!
• Por exemplo: se n e b são inteiros
positivos tais que n não divide bn-1-1,
então n tem que ser composto.
Algoritmo AKS
Método eficiente (tempo polinomial) para
determinar se um número é primo sem
fatorá-lo.
Descoberto em agosto de 2002 por M.
Agrawal, N. Kayal e N. Saxena.
O Futuro Próximo
• Sistema usa
curvas elípticas.
Grupo da curva elíptica
• Podemos somar
pontos em uma
curva elíptica.
• Isto torna a curva
em um grupo.
ECC
• Fixe uma curva E e P  E.
• Chave secreta: inteiro positivo k.
• Chave pública: Q = kP.
Suponha...
...que Alice quer mandar uma mensagem
para Bernardo...
ECC: codificando
• Alice conhece a curva E, o ponto P  E
e a chave pública Q.
• Para codificar M  E : escolha r
aleatoriamente e calcule (rP, rQ+M).
ECC: decodificando
• Bernardo
conhece a curva E, o ponto P
 E e a chave secreta k.
Decodifica (rP, rQ+M) calculando:
(rQ+M) - k(rP) = r(kP) + M - k(rP) = M.
ECC: quebrando
Calcular k conhecendo Q = kP.
Problema do Logaritmo Discreto
O Futuro Distante
• Peter Shor
(1994): algoritmo
quântico de
fatoração.
• Criptografia
quântica.
As perguntas finais...
Quão próximo, ou distante?
Assim...?
Não!
Assim!
A criptografia quântica já chegou até nós
Que outras surpresas nos
aguardam?
?
Download

Matemática e Criptografia - DCC