Upload
internet
View
114
Download
3
Embed Size (px)
Citation preview
Roteiro
• Introdução
• Problemas
• Conceitos
• Criptografia– chave privadas– Chave pública
• Conclusões
Introdução
• O que é Criptografia
– Kriptos (Grego): Esconder
– Grapho (Grego): Escrita
– Kripto Grapho: Esconder Escrita
• A criptografia viabiliza a troca de
informações sem que haja o
comprometimento do sigilo
Introdução
• “Arte de tornar incompreensível, com
observância de normas especiais designadas
numa cifra de código, o texto de uma
mensagem escrita com clareza” - Aurélio
• Talvez seja tão antiga quanto a própria
escrita
Introdução
• “A mensagem é sua. Particular, privativa. Ninguém tem o direito de bisbilhotar” – Guia de Referência rápida do PGP
• PGP – Prety Good Privacy: Software de criptografia multi-plataforma – Networks Associates inc.
Introdução• Criptografia usada por Júlio César (Imperador de
Roma - 60 a.C.):
– A chave utilizada era muito simples: desloca-se o alfabeto 3
letras e troca-as entre si.
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
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
• Por exemplo, se ele quisesse enviar "Veni, vidi, vici",
qual seria a mensagem criptografada?
Conceitos
• Definições– Mensagem: A informação que se deseja enviar– Participantes: O Emissor e o Receptor da
mensagem– Chaves: Os métodos de se criptografar e
decriptografar mensagens
Chaves de Criptografia
• Registros Irrecuperáveis (não descriptografáveis)• Chaves Privadas• Chaves Públicas
• Criptografar: Aplicar sobre a mensagem M uma
função F resultando num objeto C
“incompreensível”
• C = F(M)
Registros Irrecuperáveis
• Pode-se criptografar mas não se pode des-criptografar
• Etimologicamente não se trata de “criptografia”
• Conceito: Uma Mensagem M e uma função
F(M) | F-1(M)
Registros Irrecuperáveis
• Exemplo:
• Converte M em um número grande (128 bits no mínimo)
• “Enxergar” mensagens como números não é difícil: Uma tira de bits, várias tiras (menores) de bits, concatenação de códigos ASCII, etc. Cada aplicação pode ter a sua.
Registros Irrecuperáveis
• Armazena X(M) mod K – X e K secretos– K muito grande (128 bits por exemplo)– X(M) “gera” algo com o aproximadamente o
dobro do tamanho de M
• Uma mensagem N só pode ser igual a M se X(N) mod K = X(M) mod K
• Pode acontecer de – X(M) mod K = X(N) mod K com M N?
Registros Irrecuperáveis
• Claro. O importante é: Qual a chance?
• K com 128 Bits 1038
• 1/1038 = 0,00000000000000000000000000000000000001
• Pequena o suficiente?
Chaves Privadas
• Mecanismo para “embaralhar” a mensagem
• De conhecimento apenas dos proprietários
• Aplicar uma função F sobre a mensagem
• F aqui é inversível!
• Somente quem sabe que função foi aplicada consegue recompor a mensagem original
Chaves Privadas
• Seja M uma mensagem e D o conjunto de todas as mensagens possíveis, ou seja– Dados os |M| bits que comporão mensagens, D
é o conjunto de todas as combinações possíveis destes bits
• P(M) e S(M) são permutações de D (mais combinações de bits)
Exemplo• Escolher K um número muito grande (por
exemplo 128 bits)• Armazenar K em local secreto e seguro. K é a
chave!• Multiplicar M em blocos de tamanho |K| por K
• “Enxergar” mensagens como números não é difícil: Uma tira de bits, várias tiras (menores) de bits, concatenação de códigos ASCII, etc. Cada aplicação pode ter a sua.
Exemplo
• C = M*K
• C terá o dobro do tamanho de K
• C pode ser enviada pela Internet sem problemas
• O receptor, que conhece K faz M = C/K
Exemplo
M M
“Xereta”Emissor Receptor
C = K*M M = C/KC
Se o “xereta” ler?
• C terá 256 bits “por bloco”– Cada bloco em M de tamanho |K| multiplicado
pelo próprio K– K tendo 128 bits
• Encontrar M é possível? Sim. “Basta” Fatorar C. Um dos fatores será K, donde se pode encontrar M
Fatorando C
• C tem 256 bits 1.15x1077
• Para se fatorar: testar até a raiz quadrada de C 3.40x1038 testes
• Não testa os pares 1.70x1038 testes
• Supercomputador: 1025 testes por segundo
• Tempo estimado: 5470,07 séculos
Fatorando C
• Com |K| = 136 (1 byte a mais)... 272 bits 7.59x1081
• 8.71x1040 testes • Menos os pares: 4.35x1040 testes• Mais de 100 vezes maior!• A máquina teria que ser mais de 100 vezes
mais rápida para igualar os 5470,07 séculos!
Chave Pública• Algoritmos de Criptografia usando Chaves
Públicas
• Problema: Nem sempre é possível “enviar” a chave!
• Criptografar: Aplicar sobre a mensagem M uma função F resultando num objeto C “incompreensível”
• C = F(M)
Chave Pública
• Decriptografar: Aplicar sobre C a função F-1 resgatando novamente M
• F-1(C)=M
• Se F-1 for secreta e impossível de ser encontrada, a criptografia é perfeita
• F e F-1 são ditas Chaves de Criptografia (e Descriptografia obviamente!)
Chave Pública
• O problema da distribuição de Chaves:
• F pode ser conhecida, mas F-1 não pode.
• Para enviar uma mensagem, criptografar
com F. Só quem tem F-1 pode abrir!
• Obviamente F e F-1 tem que ser distintas!
Problemas resolvidos com chave pública:
• Basicamente dois problemas:
– Exclusão do acesso de terceiros a mensagens de
outrem
– Estabelecer autenticidade de mensagens
(assinatura digital)
Chave Pública
• Cada participante tem uma chave pública e uma secreta
• Exemplo: Ana e Beto.– Ana tem as chaves PA e SA
– Beto tem as chaves PB e SB
• As chaves públicas e privadas são estabelecidas por cada participante
Chave Pública
• As chaves são Funções, conforme já visto, aplicadas sobre mensagens
• Relembrando: “Enxergar” mensagens como números não é difícil: Uma tira de bits, várias tiras (menores) de bits, concatenação de códigos ASCII, etc. Cada aplicação pode ter a sua.
Chave Pública
• Seja M uma mensagem e D o conjunto de todas as mensagens possíveis, ou seja– Dados os |M| bits que comporão mensagens, D
é o conjunto de todas as combinações possíveis destes bits
• P(M) e S(M) são permutações de D (mais combinações de bits)
Chave Pública
• As chaves são funções inversas:
– M=PA(SA(M))=SB(PB(M)) M D
• Suposições sine qua non:
– Somente Ana computa SA
– Somente Beto computa SB
– Todo mundo computa PA e PB
Exemplo
• Beto manda uma mensagem para Ana:
M M
“Xereta”Beto Ana
PA SA
C=PA(M)
• Beto usa PA para criptografar
• Ana usa SA para descriptografar
Se o “xereta” ver?
• C não tem sentido para ele!
• PA não o ajuda em nada!
• SA não é conhecida dele!
• O “xereta” conseguiu uma tira enorme de Bits Inútil!
Outro Exemplo
• Assinaturas Digitais
• Ana quer assinar um documento
M
SA
Assina = SA(M)
(M,)M
PA PA()
= ? Ok
Outro Exemplo
• Ana gera a assinatura da mensagem M com
=SA(M)
• Ana envia M e para Beto
• Beto computa PA() e verifica se é igual a
M
Outro Exemplo
• Se for igual, aceita M como mensagem de Ana.
• Caso contrário– Ou a mensagem não é de Ana– Ou foi corrompida (maliciosamente ou não)
• (M,) pode ser passado de Beto para qualquer pessoa, que verifica tudo novamente
Algoritmo RSA
• Criptossistema RSA (Rivest, Shamir,
Adleman)
• Como selecionar as chaves
• Dois números primos muito grandes (de
100 dígitos ou mais cada) p e q
• Calcula n = p*q
Algoritmo RSA
• Calcula (n) = (p-1) * (q-1)
• Selecionar um pequeno número ímpar, (e) relativamente primo a (n) = (p-1) * (q-1)
• Calcula d = inverso multiplicativo e, mod (n)
• Publica o par P=(e,n) como chave pública
• Guarda S=(d,n) como chave secreta (basta d pois n é público)
Algoritmo RSA
• Como Criptografar e Decriptografar?
– D = {0,1,2,...,n-1} (mensagens possíveis)
– P(M) = Me mod n
– S(C) = Cd mod n
Um exemplo
• Caso prático:– p=11– q=13– n=143 (universo de mensagens possíveis) (n) = 10*12 = 120– e=7 (primo em relação a 120)
Um exemplo
• Como se calcula d?– d é o inverso multiplicativo de e mod (n) (de 7
mod 120)
• Isso significa que e*d mod (n) = 1
• Extended_euclid(e, (n))
• d é o valor x que retorna de extended_euclid(7, 120)
Um exemplo
Extended_euclid(a,b)If b=0return(a,1,0)
Else(d’,x’,y’) := extended_euclid(b, a mod b)
(d,x,y) := (d’, y’, x’ – (a div b)*y’) while d < 0 d = d + b - 1 return d, y, y)
Um exemplo
• d = 103
• Supor uma mensagem M = 40
• Publica e=7 e n=143. Guarda d=103
• C = P(M) = Me mod n = 407 mod 143 = 105
• S(C) = Cd mod n = 105103 mod 143 = 40
• Que é a mensagem original perfeitamente recuperada.
Um exemplo• Considerações de complexidade:
• Fazer a exponenciação de números grandes: Seja o algoritmo computacionalmente simplesExp_Modular(a,b,n) /* calcula ab mod n*/1. d 12. Seja <bk, ..., b0> b em binário3. Para i= k downto 14. d d2 mod n5. Se bi = 16. d (d*a) mod n7. Return d
Um exemplo
• 105103 mod 143
• 10310 = 11001112 (k=6)
i 6 5 4 3 2 1 0
bi 1 1 0 0 1 1 1
d(4) 1 14 27 14 53 1 14
d(6) 105 40 27 14 131 105 40
Um exemplo
• Quebrar a criptografia
• Para quebrar o sistema basta encontrar os valores p e q que geraram n.
• Escolhe-se dois primos grandes e com uma grande diferença numérica entre si
• Para encontrar os fatores primos de n– Testar candidatos entre 1 e a raiz quadrada de n
Um exemplo
• Encontrar os fatores de 667
• Raiz de 667 = 25,8...
• Entre 2 e 25 há algum fator, se 667 não for primo.
• Com efeito, 23 (e por conseguinte 29) é fator
Um exemplo• Encontrar os fatores de
123456789012345678901234567890123456789012347 (45 dígitos)
• Raiz de 123456789012345678901234567890123456789012347 = algo entre 1022 e 1023
• Desprezando-se os números pares (que não podem ser primos grandes) restam algo entre 1021 e 1022 candidatos, no mínimo!
Um exemplo
• Suponha uma máquina que faça 1010
divisões por segundo (cada candidato é
testado com uma divisão)
• 1 ano tem 31.536.000 segundos
• 31.536.000*1010 testes por ano
Um exemplo
• Isso é menor que 1018
• Com 1018 testes levar-se-ia 5000 anos!
• Caso a máquina fique 5000 vezes mais rápida, um aumento de 4 algarismos levaria os 5000 anos originais para 500.000.000 de anos!
• Eis outro exemplo de problema NP!
Eficiência
• M {0,1,...,n-1}
• Mesmo n = 200 trata apenas mensagens
pequenas (660 bits aproximadamente)
• O processo é lento, as mensagens são
pequenas
Eficiência
• Como resolver?– Algoritmos de Criptografia (mais rápidos) com
uma chave K aleatória (Huffman pode ser uma solução)
– Criptografa a mensagem longa com K– Criptografa K com P– Envia K(M) e P(K)
Conclusões
• Os algoritmos se baseiam em problemas não polinomiais
• Métodos exponenciais são extremamente inviáveis de serem tratados com a máquina de Turing
• Praticamente TODA a informação sensível do planeta está guardada por métodos como estes
Conclusões
• As alternativas para resolver tais problemas esbarram na complexidade e nos métodos numéricos
• Computação Quântica: – A possibilidade é de operar-se N QuBits ao mesmo
tempo, em todos os seus possíveis valores
– “Derruba” a complexidade dos métodos
– Acaba com Criptografia.
Criptografia.
FIM!
“Dize-e com quem andas e dir-te-ei se vou contigo”Barão de Itararé
Degas