Técnicas de criptografiatele.sj.ifsc.edu.br/~msobral/rmu/intro-seguranca2.pdf · Técnicas de...

Post on 21-Jul-2020

4 views 0 download

Transcript of Técnicas de criptografiatele.sj.ifsc.edu.br/~msobral/rmu/intro-seguranca2.pdf · Técnicas de...

1

Técnicas de criptografiaTécnicas de criptografia

• Funções Hash • Criptografia com chave secreta• Criptografia com chave pública• Assinatura digital• Protocolos

2

Técnicas de criptografiaTécnicas de criptografia

Criptografia• Estudo de ferramentas e técnicas matemáticas

relacionadas com aspectos relativos a segurança da informação, tais como privacidade, integridade, autenticação de entidade e autenticação da origem dos dados.

• É amplamente reconhecido que criptografia é uma tecnologia crucial para segurança em redes."Necessidade é a mão das invenções, e redes de computadores

são as mães da criptografia moderna."Ronald L. Rivest, 1997.

3

Técnicas de criptografiaTécnicas de criptografia

Criptografia– Transformação de uma mensagem segundo um

método (encriptação)– A mensagem é encriptada antes de ser enviada– Ao ser recebida, a mensagem encriptada é

revertida à mensagem original (decriptação)– Para dificultar a descoberta do método de

encriptação, este é dividido em duas partes• Um procedimento, ou algoritmo, de encriptação• Uma chave de codificação

– Assim, o algoritmo de encriptação pode ser conhecido publicamente, resguardando-se a chave

4

Técnicas de criptografiaTécnicas de criptografia

CriptografiaModelo de encriptação convencional

5

Técnicas de criptografiaTécnicas de criptografia

CriptografiaTerminologia

Parâmetro de codificação do algoritmo de encriptação

Chave

Análise da cifra, visando desvendar o texto plano

Criptanálise

O texto encriptadoCifra

O texto originalTexto plano

6

Técnicas de criptografiaTécnicas de criptografia

CriptografiaCifra de César

• Cada letra do alfabeto é substituída por outra letra três posições adiante:

Texto: meet me after the toga partyCifra: phhw ph diwhu wkh wrjd sduwb• A criptanálise para desvendar o texto original é

de grande simplicidadeTexto: 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

zCifra: 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

7

Técnicas de criptografiaTécnicas de criptografia

CriptografiaCifra de César

• O método pode ser expresso por:c = E(p) = (p + 3) mod (26)p = D(c) = (c - 3) mod (26)

• Se for generalizado o número de posições de deslocamento das letras:

c = E(p) = (p + k) mod (26)p = D(c) = (c - k) mod (26) • Para se quebrar este código, basta tentar todas

as 25 possibilidades para k

8

Técnicas de criptografiaTécnicas de criptografia

CriptografiaCifra de César

Quebrando o código na força bruta ...

9

Técnicas de criptografiaTécnicas de criptografia

CriptografiaUma boa técnica deve ter propriedades:– Segurança depender da chave permanecer secreta, e não o algoritmo– Alta entropia– Resistência a criptanálise– Espaço de chaves amplo– Alta variabilidade em função da chave e do texto plano– Resistência a colisões

10

Técnicas de criptografiaTécnicas de criptografia

CriptografiaTécnicas modernas incluem:– Hashes– Encriptação com chave simétrica (chave secreta)– Encriptação com chaves assimétricas (chave pública)

11

Técnicas de criptografiaTécnicas de criptografia

Hashes– Uma função hash h recebe como entrada uma

string x de comprimento arbitrário.

– A saída h(x) é uma string de comprimento fixo.• Ex: cálculo de dígito verificador do CPF,CRC

– Uma função hash é dita somente-ida (one-way) se for computacionalmente inviável invertê-la

• Deve ser muito difícil encontrar x, dado h(x)

– Além disto, uma função hash é dita fortemente resistente a colisão se for também muito difícil encontrar duas strings x e x' tais que h(x) = h(x').

12

Técnicas de criptografiaTécnicas de criptografia

Hashes (algoritmos mais conhecidos):– MD4 (128 bits): desenvolvido em 1990 pela RSA,

sendo atualmente considerado frágil. Usado para senhas NTLM.

– MD5 (128 bits): desenvolvido em 1991 pela RSA. Há técnicas para gerar colisões. Muito usado para verificação de integridade de arquivos e armazenamento de senhas.

– SHA (160 a 512 bits): desenvolvidos a partir de 1993 pelo NIST e NSA. Há técnicas para gerar colisões para SHA-0 e SHA-1 (ambos com 160 bits).

– Whirlpool (512 bits): criado em 2004 e parte do padrão ISO 10118-3.

13

Técnicas de criptografiaTécnicas de criptografia

Hashes– Ex: Algoritmo MD5, que gera hashes de 128 bits:

Entrada: abcdefghijHash: a925576942e94b2ef57a066101b48876

Entrada: abcdefghiHash: 8aa99b1f439ff71293e95357bac6fd94

14

Técnicas de criptografiaTécnicas de criptografia

Hashes– Ex: Algoritmo SHA, que gera hashes de 160 bits:

Entrada: abcdefghijHash:

d68c19a0a345b7eab78d5e11e991c026ec60db63

Entrada: abcdefghiHash:

c63b19f1e4c8b5f76b25c49b8b87f57d8e4872a1

15

Técnicas de criptografiaTécnicas de criptografia

HashesUtilidade de hashes

– Verificação de integridade de mensagens• Deteccção de erros• Detecção de adulteração

– Representação compacta de mensagens (fingerprint, ou impressão digital)

• Podem-se comparar os hashes de duas mensagens, ao invés das mensagens em si.

• Usados em aplicações P2P e de cópias de arquivos (rsync)

– Armazenamento de senhas• Amplamente usado por sistemas operacionais e

aplicativos

16

Técnicas de criptografiaTécnicas de criptografia

HashesUtilidade de hashes – exemploMensagem original:

Hash MD5 da mensagem:

17

Técnicas de criptografiaTécnicas de criptografia

HashesUtilidade de hashes – exemploModificando a mensagem original:

Hash MD5 da mensagem modificada:

18

Técnicas de criptografiaTécnicas de criptografia

HashesUtilidade de hashes – exemploComparando os dois hashes MD5:

... Pode-se concluir que:1. As mensagens são diferentes.2. Se deveriam ser iguais, a mensagem original foi alterada

(a alteração pode ter sido um erro durante a transmissão, ou uma modificação intencional).

19

Técnicas de criptografiaTécnicas de criptografia

HashesUtilidade de hashes – exemploSe o hash MD5 da mensagem for enviado a ela anexado,

pode-se fazer uma verificação de integridade na recepção:

20

Técnicas de criptografiaTécnicas de criptografia

Criptografia com chave secreta– Transforma uma string:c = E(p, k)p = D(c, k)– Comumente c e p têm mesmo tamanho– Ideal para proteger (encriptar) informação– Chamados de algoritmos de criptografia simétricos

• Usa-se a mesma chave k para encriptar e para decriptar

• A chave deve ser do conhecimento apenas dos pares envolvidos na troca de informação

21

Técnicas de criptografiaTécnicas de criptografia

Criptografia com chave secreta

22

Técnicas de criptografiaTécnicas de criptografia

Criptografia com chave secreta (algoritmos):– DES (Data Encryption Standard): padrão do

governo americano a partir de 1976. Considerado fraco, por usar chaves pequenas (40 ou 56 bits).

– 3DES (Triple DES): desenvolvido pela IBM em 1978, usa DES três vezes, com duas ou três chaves distintas de 56 bits.

– AES (Advanced Encryption Standard): desenvolvido em 1998, e sucessor do DES como padrão do governo americano em 2002. Usa chaves de 128, 192 ou 256 bits.

23

Técnicas de criptografiaTécnicas de criptografia

Criptografia com chave secreta (algoritmos):– RC4 (Ron's Code): desenvolvido em 1987 pela

RSA. Cifra para streams bastante usada em protocolos de comunicação (SSL, WEP), apesar de fraquezas conhecidas. Usa chaves entre 40 e 256 bits.

– Blowfish: desenvolvido em 1993 por Bruce Schneier. Tem boa taxa de encriptação, e não há fraquezas conhecidas. Usa chaves de 128 bits.

– Twofish: desenvolvido em 1998 por Bruce Schneier e outros, sendo sucessor do Blowfish. Usa chaves de 256 bits. Disputou com AES para ser novo padrão do governo americano.

24

Técnicas de criptografiaTécnicas de criptografia

Criptografia com chave secreta

Usando criptografia simétrica para encriptar o hash MD5 da mensagem mostrada anteriormente:

25

Técnicas de criptografiaTécnicas de criptografia

Criptografia com chave secreta

Para fazer a verificação da mensagem, quem a receber deve antes decriptar o hash

– Implica então que a chave simétrica deve ser de seu conhecimento

– Caso a possua, a verificação da mensagem se dará pelas etapas:

• Decripta o hash• Calcula o hash da mensagem recebida• Compara os hashes

– Para implementar essa verificação, faz-se necessário um mecanismo seguro de distribuição de chaves

26

Técnicas de criptografiaTécnicas de criptografia

Criptografia com chave secretaEncriptando um valor com GnuPG:

Decriptando o texto cifrado acima:

27

Técnicas de criptografiaTécnicas de criptografia

Criptografia com chave secreta• Algoritmos com chave simétrica são apropriados para encriptar informação• Há uma dificuldade quanto ao gerenciamento das chaves secretas

– Como chaves secretas podem ser compartilhadas ?– Se a chave secreta for enviada pela rede, um terceiro

usuário poderia interceptá-la !

Vejam o filme “The Imitation Game”, de 2014.

28

Técnicas de criptografiaTécnicas de criptografia

Criptografia com chave pública– Algoritmos de criptografia com chaves assimétricas– Cada par da comunicação possui duas chaves

• Uma cifra gerada com uma das chaves somente pode ser decriptada com a outra chave.

– Com este método, pode-se tornar pública uma das chaves, e manter a outra secreta (privada)

• A chave pública de uma entidade da rede será usada por quem desejar lhe enviar uma mensagem

• Somente o possuidor da correspondente chave privada conseguirá decodificar a mensagem

29

Técnicas de criptografiaTécnicas de criptografia

Criptografia com chave públicac = F(p, kp) c = F(p, ks)p = F(c, ks) p = F(p, kp)

30

Técnicas de criptografiaTécnicas de criptografia

Criptografia de chave pública (algoritmos):– RSA (Rivest-Shamir-Adleman): desenvolvido em

1977 no MIT. Primeiro algoritmo de chave pública, e usa dificuldade de fatoração de grandes números como princípio. Usa chaves de 512, 1024, 2048 ou 4096 bytes.

– DSA (Digital Signature Algorithm): desenvolvido em 1991 pelo NIST, tornando-se padrão do governo americano. Usado somente para assinaturas digitais. Usa chaves de 1024, 2048 ou 3072 bits.

– Elgamal: desenvolvido em 1984 por Taher Elgamal. Possui fraquezas conhecidas.

31

Técnicas de criptografiaTécnicas de criptografia

Criptografia com chave públicaO algoritmo RSA se baseia em teoria dos números (fatoração de números):

Chave pública:n = p.q (p e q são números primos)e relativamente primo de (p - 1).(q - 1)Chave secreta:d = e-1 mod [(p - 1).(q - 1)]Encriptação:c = me mod nDecriptação:m = cd mod n

32

Técnicas de criptografiaTécnicas de criptografia

Criptografia com chave públicaExemplo de criação de chaves para RSA:

Se p = 47 e q = 71:n = p.q = 3337(p - 1).(q - 1) = 3220Escolhe-se e aleatoriamente, de forma que seja primo e não tenha fatores em comum com 3220:e = 79d = 79-1 mod 3220 = 1019Publiquem-se e e n, mantendo-se d secreta.Encriptando m = 688:68879 mod 3337 = 1570 = cDecriptando c:15701019 mod 3337 = 688 = m

33

Técnicas de criptografiaTécnicas de criptografia

Assinatura digitalUma forma de garantir que uma mensagem foi gerada de fato por uma determinada entidade da rede

– O remetente calcula um hash da mensagem, que a ela é anexado

– Hash é encriptado com a chave privada do remetente

– Mensagem + hash encriptado são enviados para o destinatário

– O destinatário decripta o hash com a chave pública do remetente

– O destinatário confere se o hash corresponde à mensagem

34

Técnicas de criptografiaTécnicas de criptografia

Assinatura digitalExemplo de assinatura digital da mensagem vista anteriormente,usando o software GnuPG (uma variação do famoso PGP):

35

Técnicas de criptografiaTécnicas de criptografia

Assinatura digital– Inserindo uma pequena alteração na mensagem.

– Verificando a mensagem:

36

Técnicas de criptografiaTécnicas de criptografia

ProtocolosTroca de chave• Criptografia com chave pública é muito mais pesada

computacionalmente que criptografia simétrica.– Segundo Bruce Schneier, em seu livro “Applied

Cryptography”, o algoritmo RSA é cerca de 100 vezes mais lento que DES se implementado em software, e 1000 vezes mais lento se implementado em hardware.

– Não se considera viável usar criptografia de chave pública para manter sigilo (confidencialidade) de informação.

– Sigilo pode ser implantado de forma mais eficiente com criptografia simétrica.

– Isto leva ao problema de troca de chaves entre pares de uma comunicação, pois ambos precisarão conhecer a chave secreta usada por tal tipo de algoritmo.

37

Técnicas de criptografiaTécnicas de criptografia

ProtocolosIntercâmbio de chave

– Com criptografia simétrica• a chave de sessão deve ser do conhecimento dos pares

antes da comunicação• Uma entidade confiável pode gerar uma chave de sessão,

e enviá-la para os pares que desejam se comunicar com sigilo.

• Cada par deve possuir uma chave simétrica previamente fornecida pela entidade confiável, para poder se comunicar com esta também com sigilo.

– Com criptografia assimétrica• a chave de sessão é gerada aleatoriamente por um dos

pares • usa-se a chave pública do outro par para lhe transmitir a

chave de sessão

38

Técnicas de criptografiaTécnicas de criptografia

Protocolos Autenticação• Com funções somente-ida (one-way hash)

– Uma senha é armazenada criptografada– Para conferir a autenticidade de um usuário, solicita-se a

senha– A senha fornecida é criptografada e então comparada

com aquela armazenada

39

Técnicas de criptografiaTécnicas de criptografia

Protocolos Autenticação• Com criptografia de chave pública

– Armazena-se a chave pública de um usuário A– Para B autenticar este usuário, gera-se uma string

aleatória e encripta-se a chave pública de A– Envia-se a string ao usuário A, que deve decriptá-la com

sua chave privada, encriptá-la com a chave pública de B e remetê-la de volta

– B decripta esta mensagem com sua chave privada, e compara-a com a string original

40

Técnicas de criptografiaTécnicas de criptografia

Protocolos Autenticação

– Com credenciais únicas• Recebe-se uma semente da entidade que exige

autenticação (isto é feito num momento de cadastro).• A cada autenticação a ser realizada, computa-se um

valor que servirá de credencial.• Esta credencial é calculada com uma função a partir

da semente.• A cada autenticação, a nova credencial é calculada

em função da credencial anterior.• A função deve ser tal que seja computacionalmente

inviável determinar a semente a partir das credenciais calculadas.