Criptografia de chave nica Algoritmo DES Data Encryption

  • Slides: 56
Download presentation
Criptografia de chave única Algoritmo DES Data Encryption Standard

Criptografia de chave única Algoritmo DES Data Encryption Standard

DES • • DES: (Data Encryption Standard) Desenvolvido pela IBM (Lúcifer) Processo de seleção

DES • • DES: (Data Encryption Standard) Desenvolvido pela IBM (Lúcifer) Processo de seleção iniciou em 1973 Adotado como padrão nos Estados Unidos em 1977 • Revisado a cada 5 anos (última vez em 1999) • Divide a mensagem em blocos de 64 bits (8 caracteres) • Cifra cada um destes blocos com uma chave de 56 bits (8 caracteres ASCII de 7 bits)

DES • • • Transposição inicial 16 passos de cifragem Transposição final Transposições independentes

DES • • • Transposição inicial 16 passos de cifragem Transposição final Transposições independentes da chave Para os 16 passos de cifragem utilizam-se 16 sub -chaves, todas derivadas da chave original

DES Transposições simplesmente trocam bits de posição

DES Transposições simplesmente trocam bits de posição

Transposições

Transposições

Passo de cifragem

Passo de cifragem

Sub-chaves • Seleção inicial (64 para 56 bits) via tabela fixa • Deslocamento (1

Sub-chaves • Seleção inicial (64 para 56 bits) via tabela fixa • Deslocamento (1 ou 2 bits) em duas metades • Seleção (escolhe 48 bits) via tabela fixa • São geradas 16 sub-chaves distintas K 1, K 2, K 3, …. K 15, K 16

Sub-chaves

Sub-chaves

Passo de cifragem

Passo de cifragem

Metade direita • Bloco de 32 bits • Expansão (gera 48 bits) • Operação

Metade direita • Bloco de 32 bits • Expansão (gera 48 bits) • Operação de ou-exclusivo (Xor) com subchave

Transposição - Metade direita

Transposição - Metade direita

Passo de cifragem

Passo de cifragem

Substituição - Caixas S • • • Bloco de 48 bits dividido em 8

Substituição - Caixas S • • • Bloco de 48 bits dividido em 8 grupos de 6 Cada grupo vai para uma caixa distinta Dois bits (externos) selecionam a linha Quatro bits (internos) selecionam a coluna Resultado: 4 bits 8 grupos de 4 bits = 32 bits

Caixas S • Exemplo: Caixa S 1 • 8 Caixas distintas (S 1 a

Caixas S • Exemplo: Caixa S 1 • 8 Caixas distintas (S 1 a S 8)

Passo de cifragem

Passo de cifragem

Transposição

Transposição

Ri = Li-1 xor f(Ri-1, Ki)

Ri = Li-1 xor f(Ri-1, Ki)

Cifragem e Decifragem • Cifragem: entrada: Li-1 e Ri-1 do passo anterior calcular: Ri

Cifragem e Decifragem • Cifragem: entrada: Li-1 e Ri-1 do passo anterior calcular: Ri = Li-1 xor f(Ri-1, Ki) Li = Ri-1 • Ordem de geração das chaves: Chaves de cifragem: K 1, K 2, K 3, …. K 16

Cifragem e Decifragem • Decifragem: entrada: Li e Ri do texto cifrado calcular: Rd

Cifragem e Decifragem • Decifragem: entrada: Li e Ri do texto cifrado calcular: Rd = Ri xor f(Li, Ki) Ld = L i mas Li = Ri-1, ou seja: Rd = Ri xor f(Ri-1, Ki) = Li-1 Ld = Ri-1 • Ordem de geração das chaves: Chaves de decifragem: K 16, K 15, K 14, …. K 1

Cifragem e Decifragem • DES é sua própria função inversa • Basta inverter a

Cifragem e Decifragem • DES é sua própria função inversa • Basta inverter a ordem das chaves • Ordem de geração das chaves: Chaves de cifragem: K 1, K 2, K 3, …. K 16 Chaves de decifragem: K 16, K 15, K 14, …. K 1 • Isto é obtido deslocando a chave principal K para esquerda (cifragem) ou direita (decifragem)

Criptografia de chave única • Características desejadas: – Difusão dos bits da entrada e

Criptografia de chave única • Características desejadas: – Difusão dos bits da entrada e da chave – “Confusão”: inexistência de relação entre entrada e saída • Alteração de um bit na entrada altera 50% dos bits de saída • Alteração de um bit na chave altera 50% dos bits de saída

Alteração de um bit na entrada

Alteração de um bit na entrada

Alteração de um bit na chave

Alteração de um bit na chave

Número de Rodadas

Número de Rodadas

DES - Propriedades • Complementação se C = E(M, K) então not(C)=E(not(M), not(K)) •

DES - Propriedades • Complementação se C = E(M, K) então not(C)=E(not(M), not(K)) • DES não é um grupo se C = E(M, K 1) e C 1 = E(C, K 2) não existe K 3 tal que C 1=E(M, K 3) Cifrar duas (ou três vezes) é eficiente - 3 DES

DES - Chaves fracas • Chave fraca todas as 16 sub-chaves são iguais •

DES - Chaves fracas • Chave fraca todas as 16 sub-chaves são iguais • Seqüência K 1. . K 16 é igual a K 16. . K 1 • Somente 48 bits da chave são efetivos • Chaves: 00000000 FFFFFFFF 00000000

DES - Chaves semi-fracas • Pares de chaves semi-fracas • A seqüência K 1.

DES - Chaves semi-fracas • Pares de chaves semi-fracas • A seqüência K 1. . K 16 de uma chave é o inverso da seqüência gerada pela outra chave (K 16. . K 1) • Problema: Cifragem de uma chave seguida da cifragem com a outra chave na realidade decifra !

DES - Ciclos Hamiltonianos

DES - Ciclos Hamiltonianos

DES - Ciclos Hamiltonianos Relação entre as saídas caixas S e as entradas (ABCDEF)

DES - Ciclos Hamiltonianos Relação entre as saídas caixas S e as entradas (ABCDEF)

DES - Ciclos Hamiltonianos

DES - Ciclos Hamiltonianos

DES - Ciclos Hamiltonianos

DES - Ciclos Hamiltonianos

DES - Ciclos Hamiltonianos

DES - Ciclos Hamiltonianos

DES - Critérios das Caixas S • Não deve existir uma função linear das

DES - Critérios das Caixas S • Não deve existir uma função linear das entradas para as saídas • Se duas entradas diferem em exatamente um bit, suas saídas devem diferir ao menos em dois bits • Se duas entradas diferem em dois bits intermediários (que selecionam a coluna), suas saídas devem diferir ao menos em dois bits • Se duas entradas diferem nos dois primeiros bits e são iguais nos dois últimos bits, suas saídas não devem ser iguais • Os 4 bits de saída de uma caixa S devem ser distribuídos de forma que dois afetem bits intermediários e dois afetem bits das extremidades da caixa seguinte • Os 4 bits de saída devem afetar seis caixas diferentes; não pode haver uma caixa repetida

Criptoanálise Diferencial • Duas entradas distintas: M 1, M 2 • Duas saídas distintas:

Criptoanálise Diferencial • Duas entradas distintas: M 1, M 2 • Duas saídas distintas: C 1, C 2 • Diferença: M = M 1 xor M 2 • Diferença na saída: C= C 1 xor C 2 • Diferença na chave: K = K xor K = 0

Passo de cifragem

Passo de cifragem

Passo de cifragem Para um B, nem todos os valores de C tem igual

Passo de cifragem Para um B, nem todos os valores de C tem igual probabilidade

Exemplo para a caixa S 1 Saída C 0000 0001 Possíveis entradas (B) para

Exemplo para a caixa S 1 Saída C 0000 0001 Possíveis entradas (B) para ( B)=110100 nenhuma 8: 000011, 001111, 011110, 011111, 101010, 101011, 110111, 111011 0010 16 0011 6: 000001, 000010, 010101, 100001, 110110 0100 2: 010011, 100111 0101, 0110 nenhuma 0111 12 1000 6: 001001, 001100, 011001, 101101, 111000, 111101 1001 a 1100 nenhuma 1101 8: 000110, 010000, 010110, 011100, 100010, 100100, 101000, 110010 1110 nenhuma 1111 6: 000111, 001010, 001011, 110011, 111110, 111111

Criptoanálise Diferencial • Conhecida a saída C • Conhecidos os valores A 1, A

Criptoanálise Diferencial • Conhecida a saída C • Conhecidos os valores A 1, A 2 e A • Pode-se por exaustão determinar os B possíveis • A seguir, determinam-se os B 1 e B 2 possíveis • Como B = A xor K, tem-se um conjunto de chaves possíveis • Repetir até restringir o conjunto de chaves a uma só

Criptoanálise diferencial • Objetivo: “quebrar” a última rodada do DES (K 16, ou 48

Criptoanálise diferencial • Objetivo: “quebrar” a última rodada do DES (K 16, ou 48 bits da chave) • Usar suficiente diferenças para fazer as anomalias aparecerem • Descoberta K 16, os restantes 8 bits podem ser obtidos por força bruta (256 tentativas)

Passo de cifragem A = Exp(R) B = A xor K C = S(B)

Passo de cifragem A = Exp(R) B = A xor K C = S(B) L = Per(C)

Funções para criptoanálise B=K xor A B=B xor B* B*=K xor A* C =

Funções para criptoanálise B=K xor A B=B xor B* B*=K xor A* C = Sj(B)C* = Sj(B*) C=C xor C* INj( B, C) = valores de B que produzem as diferenças B que resultam na diferença C, para a caixa Sj testj(A, A*, C) = valores de K que produzem B=K xor A tal que B pertence a INj( A, C), para a caixa Sj obs: A = B xor K xor B* xor K = B

Criptoanálise Diferencial para 3 rodadas • Sejam duas entradas (L 0 R 0 e

Criptoanálise Diferencial para 3 rodadas • Sejam duas entradas (L 0 R 0 e L 0*R 0*) e suas respectivas saídas (L 3 R 3 e L 3*R 3*) • R 3 = L 2 xor f(R 2, K 3) • L 2 = R 1 • R 3 = R 1 xor f(R 2, K 3) • R 1 = L 0 xor f(R 0, K 1) • R 3 = L 0 xor f(R 0, K 1) xor f(R 2, K 3) • R 3* = L 0* xor f(R 0*, K 1) xor f(R 2*, K 3) • R 3 = L 0 xor f(R 0, K 1) xor f(R 0*, K 1) xor f(R 2, K 3) xor f(R 2*, K 3)

Criptoanálise Diferencial para 3 rodadas • R 3 = L 0 xor f(R 0,

Criptoanálise Diferencial para 3 rodadas • R 3 = L 0 xor f(R 0, K 1) xor f(R 0*, K 1) xor f(R 2, K 3) xor f(R 2*, K 3) • Escolhe-se R 0=R 0* • Então f(R 0, K 1) = f(R 0*, K 1) • R 3 = L 0 xor f(R 2, K 3) xor f(R 2*, K 3) ou • R 3 xor L 0 = f(R 2, K 3) xor f(R 2*, K 3) • Essa quantidade ( R 3 xor L 0) é conhecida

Criptoanálise Diferencial para 3 rodadas • R 3 xor L 0 = f(R 2,

Criptoanálise Diferencial para 3 rodadas • R 3 xor L 0 = f(R 2, K 3) xor f(R 2*, K 3) • ( R 3 xor L 0) é conhecido • f(R 2, K 3) = Per(C), a saída das Caixas S após a permutação da terceira rodada • f(R 2*, K 3) = Per(C*) • R 3 xor L 0 = Per(C) xor Per(C*) • C xor C* = Per-1( R 3 xor L 0) • C = Per-1( R 3 xor L 0) • ou seja, C pode ser calculado a partir de R 3, R 3*, L 0* e do conhecimento da função Per

Criptoanálise Diferencial para 3 rodadas • • Os valores de A e A* podem

Criptoanálise Diferencial para 3 rodadas • • Os valores de A e A* podem ser obtidos por A = Exp (L 3), a função Expansão A* = Exp (L 3*) Com isto, pode-se calcular testj(A, A*, C) para as 8 caixas S • Com isto determina-se K 3, a terceira sub-chave • Oito bits restantes de K determinados por força bruta

Criptoanálise diferencial • Exemplo (valores em hexa) • 748502 CD 38451097 03 C 70306

Criptoanálise diferencial • Exemplo (valores em hexa) • 748502 CD 38451097 03 C 70306 D 8 A 09 F 10 • 3874756438451097 78560 A 0960 E 6 D 4 CB • 486911026 ACDFF 31 45 FA 285 BE 5 ADC 830 • 375 B 31 F 6 AACDFF 31 134 F 7915 AC 253457 • 357418 DA 013 FEC 86 D 8 A 31 B 2 F 28 BBC 5 CF • 12549847013 FEC 86 0 F 317 AC 2 B 23 CB 944

Criptoanálise diferencial • Exemplo (valores em hexa) • 748502 CD 38451097 03 C 70306

Criptoanálise diferencial • Exemplo (valores em hexa) • 748502 CD 38451097 03 C 70306 D 8 A 09 F 10 • 3874756438451097 78560 A 0960 E 6 D 4 CB • A=0000011111100000111010000110 • A*=10111111000000101100000001010010 • C=10010111010101101101100111 • Analogamente para os outros pares

Criptoanálise diferencial • Exemplo de test 1(A 1, A 1*, C 1) • A=0000011111100000111010000110

Criptoanálise diferencial • Exemplo de test 1(A 1, A 1*, C 1) • A=0000011111100000111010000110 • A*=10111111000000101100000001010010 • C=10010111010101101101100111 • A 1=000000 A 1*=101111 C 1=1001 • test 1(A 1, A 1*, C 1)={000000, 000111, 101000, 101111}

Criptoanálise diferencial • Repetindo-se para os demais pares, tem-se a seguinte distribuição das 64

Criptoanálise diferencial • Repetindo-se para os demais pares, tem-se a seguinte distribuição das 64 possibilidades(para a caixa S 1): 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 3 0 0 0 0 1 • Assim K 31 = 101111

Criptoanálise diferencial • Repete-se para as demais caixas • Exemplo para S 5: 0

Criptoanálise diferencial • Repete-se para as demais caixas • Exemplo para S 5: 0 0 0 1 0 0 0 2 0 0 0 3 0 0 0 0 0 2 0 0 0 1 0 0 0 • Assim K 35 = 011000 0 0 0 2 0 0

Criptoanálise diferencial • Com isto, obtem-se para a chave K o valor 0001101011000101? 01?

Criptoanálise diferencial • Com isto, obtem-se para a chave K o valor 0001101011000101? 01? 00100 01010010000? ? 0111? ? 100011 • O método deve ser desenvolvido para cada número de rodadas • Veja-se “Cryptography, Theory and Practice”, de Douglas R. Stinson (primeira edição!)

Criptoanálise diferencial • • Problema: quantidade de texto necessária Para DES com 8 rodadas:

Criptoanálise diferencial • • Problema: quantidade de texto necessária Para DES com 8 rodadas: 214 Para DES com 9 ou 10 rodadas: 224 Para DES com 11 ou 12 rodadas: 231 Para DES com 13 ou 14 rodadas: 239 Para DES com 15 ou 16 rodadas: 247 Para DES com 17 ou 18 rodadas: 256 Para DES com 19 ou 20 rodadas: 266

Criptoanálise linear • • Estimativa de um bit da chave Exemplo (para uma rodada):

Criptoanálise linear • • Estimativa de um bit da chave Exemplo (para uma rodada): Seja a entrada X 17 Seguindo a expansão, verifica-se que é operada com K 26 • Seguindo-se os quatros bits da caixa S 5 (c 17, c 18, c 19 e c 20), chegam-se aos bits Y 3, Y 8, Y 14 e Y 25 na saída • Então X 17 xor Y 3 xor Y 8 xor Y 14 xor Y 25 = K 26 • Verificar se a probabilidade se afasta de 50%

Criptoanálise linear • Texto necessário – 243 pares (texto normal, texto cifrado) • Tempos

Criptoanálise linear • Texto necessário – 243 pares (texto normal, texto cifrado) • Tempos necessários (1994) – geração dos 243 pares de texto normal e cifrado: 40 dias – tempo de descoberta da chave: 10 dias • Melhor que força bruta, mas impraticável (por via das dúvidas, não use a mesma chave 243 vezes)

DES - Situação atual • Crítica: Chave de 56 bits é pequena • DES-Cracker

DES - Situação atual • Crítica: Chave de 56 bits é pequena • DES-Cracker – Desenvolvido e construído pela EFF - Electronic Frontier Fundation – Computador c/hardware específico para testar chaves – Velocidade: 88 bilhões de chaves por segundo – Custo: USD 250. 000 – Tempo de busca por uma chave: 56 horas (1998) • Internet – DES-Cracker + 100. 000 computadores – Velocidade: 245 bilhões de chaves por segundo – Tempo de busca: 22 horas, 15 minutos (1999)

DES Triplo • Utilizar 3 vezes o DES original • Cifragem – Cifrar com

DES Triplo • Utilizar 3 vezes o DES original • Cifragem – Cifrar com chave K 1 – Decifrar com chave K 2 – Cifrar com K 3 • C=E(D(E(M, K 1), K 2), K 3 • Decifragem – Decifrar com chave K 3 – Cifrar com chave K 2 – Decifrar com K 1 • M=D(E(D(C, K 3), K 2), K 1)