criptografia de dados recursos computacionais Álvaro degas [email protected]

52
Criptografia de Dados Recursos Computacionais Álvaro Degas [email protected]

Upload: internet

Post on 22-Apr-2015

110 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

Criptografia de Dados

Recursos Computacionais

Álvaro Degas

[email protected]

Page 2: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

Roteiro

• Introdução

• Problemas

• Conceitos

• Criptografia– chave privadas– Chave pública

• Conclusões

Page 3: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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

Page 4: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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

Page 5: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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.

Page 6: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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?

Page 7: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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

Page 8: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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)

Page 9: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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)

Page 10: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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.

Page 11: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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?

Page 12: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

Registros Irrecuperáveis

• Claro. O importante é: Qual a chance?

• K com 128 Bits 1038

• 1/1038 = 0,00000000000000000000000000000000000001

• Pequena o suficiente?

Page 13: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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

Page 14: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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)

Page 15: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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.

Page 16: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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

Page 17: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

Exemplo

M M

“Xereta”Emissor Receptor

C = K*M M = C/KC

Page 18: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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

Page 19: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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

Page 20: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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!

Page 21: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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)

Page 22: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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!)

Page 23: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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!

Page 24: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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)

Page 25: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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

Page 26: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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.

Page 27: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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)

Page 28: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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

Page 29: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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

Page 30: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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!

Page 31: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

Outro Exemplo

• Assinaturas Digitais

• Ana quer assinar um documento

M

SA

Assina = SA(M)

(M,)M

PA PA()

= ? Ok

Page 32: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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

Page 33: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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

Page 34: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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

Page 35: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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)

Page 36: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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

Page 37: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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)

Page 38: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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)

Page 39: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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)

Page 40: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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.

Page 41: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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

Page 42: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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

Page 43: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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

Page 44: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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

Page 45: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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!

Page 46: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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

Page 47: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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!

Page 48: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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

Page 49: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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)

Page 50: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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

Page 51: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

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.

Page 52: Criptografia de Dados Recursos Computacionais Álvaro Degas alvaro_degas@yahoo.com.br

Criptografia.

FIM!

“Dize-e com quem andas e dir-te-ei se vou contigo”Barão de Itararé

Degas