Criptografia de chave única Algoritmo DES Data Encryption Standard
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 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
Transposições
Passo de cifragem
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 K1, K2, K3, …. K15, K16
Sub-chaves
Passo de cifragem
Metade direita Bloco de 32 bits Expansão (gera 48 bits) Operação de ou-exclusivo (Xor) com sub-chave
Transposição - Metade direita
Passo de cifragem
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 S1 8 Caixas distintas (S1 a S8)
Passo de cifragem
Transposição
Ri = Li-1 xor f(Ri-1, Ki)
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: K1, K2, K3, …. K16
Cifragem e Decifragem Decifragem: entrada: Li e Ri do texto cifrado calcular: Rd = Ri xor f(Li, Ki) Ld = Li 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: K16, K15, K14, …. K1
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: K1, K2, K3, …. K16 Chaves de decifragem: K16, K15, K14, …. K1 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 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 chave
Número de Rodadas
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,K1) e C1 = E(C,K2) não existe K3 tal que C1=E(M,K3) Cifrar duas (ou três vezes) é eficiente - 3DES
DES - Chaves fracas Chave fraca todas as 16 sub-chaves são iguais Seqüência K1 .. K16 é igual a K16 .. K1 Somente 48 bits da chave são efetivos Chaves: 00000000 00000000 FFFFFFFF FFFFFFFF 00000000 FFFFFFFF FFFFFFFF 00000000
DES - Chaves semi-fracas Pares de chaves semi-fracas A seqüência K1 .. K16 de uma chave é o inverso da seqüência gerada pela outra chave (K16 .. K1) Problema: Cifragem de uma chave seguida da cifragem com a outra chave na realidade decifra !
DES - Ciclos Hamiltonianos
DES - Ciclos Hamiltonianos Relação entre as saídas das caixas S e as entradas (ABCDEF)
DES - Ciclos Hamiltonianos
DES - Ciclos Hamiltonianos
DES - Ciclos Hamiltonianos
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: M1, M2 Duas saídas distintas: C1, C2 Diferença: M = M1 xor M2 Diferença na saída: C= C1 xor C2 Diferença na chave: K = K xor K = 0
Passo de cifragem
Passo de cifragem Para um B, nem todos os valores de C tem igual probabilidade
Exemplo para a caixa S1 Saída C Possíveis entradas (B) para (B)=110100 0000 nenhuma 0001 8: 000011,001111,011110,011111,101010,101011, 110111,111011 0010 16 0011 6: 000001,000010,010101,100001,110101,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 A1, A2 e A Pode-se por exaustão determinar os B possíveis A seguir, determinam-se os B1 e B2 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 (K16, ou 48 bits da chave) Usar suficiente diferenças para fazer as anomalias aparecerem Descoberta K16, 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) L = Per(C)
Funções para criptoanálise B=K xor A B*=K xor A* B=B xor B* 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 (L0R0 e L0*R0*) e suas respectivas saídas (L3R3 e L3*R3*) R3 = L2 xor f(R2, K3) L2 = R1 R3 = R1 xor f(R2, K3) R1 = L0 xor f(R0, K1) R3 = L0 xor f(R0, K1) xor f(R2, K3) R3* = L0* xor f(R0*, K1) xor f(R2*, K3) R3 = L0 xor f(R0,K1) xor f(R0*,K1) xor f(R2, K3) xor f(R2*, K3)
Criptoanálise Diferencial para 3 rodadas R3 = L0 xor f(R0,K1) xor f(R0*,K1) xor f(R2, K3) xor f(R2*, K3) Escolhe-se R0=R0* Então f(R0,K1) = f(R0*,K1) R3 = L0 xor f(R2, K3) xor f(R2*, K3) ou R3 xor L0 = f(R2, K3) xor f(R2*, K3) Essa quantidade (R3 xor L0) é conhecida
Criptoanálise Diferencial para 3 rodadas R3 xor L0 = f(R2, K3) xor f(R2*, K3) (R3 xor L0) é conhecido f(R2, K3) = Per(C), a saída das Caixas S após a permutação da terceira rodada f(R2*, K3) = Per(C*) R3 xor L0 = Per(C) xor Per(C*) C xor C* = Per-1(R3 xor L0) C = Per-1(R3 xor L0) ou seja, C pode ser calculado a partir de R3, R3*, L0, L0* e do conhecimento da função Per
Criptoanálise Diferencial para 3 rodadas Os valores de A e A* podem ser obtidos por A = Exp (L3), a função Expansão A* = Exp (L3*) Com isto, pode-se calcular testj(A,A*,C) para as 8 caixas S Com isto determina-se K3, a terceira sub-chave Oito bits restantes de K determinados por força bruta
Criptoanálise diferencial Exemplo (valores em hexa) 748502CD38451097 03C70306D8A09F10 3874756438451097 78560A0960E6D4CB 486911026ACDFF31 45FA285BE5ADC830 375B31F6AACDFF31 134F7915AC253457 357418DA013FEC86 D8A31B2F28BBC5CF 12549847013FEC86 0F317AC2B23CB944
Criptoanálise diferencial Exemplo (valores em hexa) 748502CD38451097 03C70306D8A09F10 3874756438451097 78560A0960E6D4CB A=000000000111111000001110100000000110100000000110 A*=101111110000001010101100000001010100000001010010 C=10010110010111010101101101100111 Analogamente para os outros pares
Criptoanálise diferencial Exemplo de test1(A1,A1*, C1) A=000000000111111000001110100000000110100000000110 A*=101111110000001010101100000001010100000001010010 C=10010110010111010101101101100111 A1=000000 A1*=101111 C1=1001 test1(A1,A1*,C1)={000000,000111,101000, 101111}
Criptoanálise diferencial Repetindo-se para os demais pares, tem-se a seguinte distribuição das 64 possibilidades(para a caixa S1): 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 Assim K31 = 101111
Criptoanálise diferencial Repete-se para as demais caixas Exemplo para S5: 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 2 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 1 0 0 0 0 2 0 Assim K35 = 011000
Criptoanálise diferencial Com isto, obtem-se para a chave K o valor 0001101011000101?01?01?00100 01010010000??0111?11??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: 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): Seja a entrada X17 Seguindo a expansão, verifica-se que é operada com K26 Seguindo-se os quatros bits da caixa S5 (c17, c18, c19 e c20), chegam-se aos bits Y3, Y8, Y14 e Y25 na saída Então X17 xor Y3 xor Y8 xor Y14 xor Y25 = K26 Verificar se a probabilidade se afasta de 50%
Criptoanálise linear Texto necessário Tempos necessários (1994) 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 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 chave K1 Decifrar com chave K2 Cifrar com K3 C=E(D(E(M,K1),K2),K3 Decifragem Decifrar com chave K3 Cifrar com chave K2 Decifrar com K1 M=D(E(D(C,K3),K2),K1)