Você está na página 1de 13

Aldeia Numaboa - O algoritmo DES ilustrado II

http://www.numaboa.com.br/criptografia/bloco/313-des2?tmpl=compo...

Criptografia Numaboa
O algoritmo DES ilustrado II
Seg 29 Ago 2005

01:53
(32 votos, mdia 4.81 de 5)

Categoria: Cifras de bloco Atualizao: Segunda, 20 Abril 2009 13:37 Autor: vov Vicki Acessos: 20578

No artigo "O algoritmo DES ilustrado" voc encontra um pouco da histria do DES. Neste artigo, vamos fazer uma radiografia deste algoritmo, bit a bit

Exemplos preliminares de DES


O DES trabalha com bits ou nmeros binrios - os 0s e 1s dos computadores digitais. Cada grupo de 4 bits corresponde a um valor hexadecimal, cuja base 16. O binrio "0001" corresponde ao nmero hexadecimal "1", o binrio "1000" igual ao nmero hexadecimal "8", "1001" igual ao hexadecimal "9", "1010" igual a o hexadecimal "A" e "1111" igual ao hexadecimal "F". O DES funciona encriptando grupos de 64 bits de mensagem, o que significa 16 nmeros hexadecimais. Para realizar a encriptao, o DES utiliza "chaves" com comprimento aparente de 16 nmeros hexadecimais, ou comprimento aparente de 64 bits. Entretanto, no algoritmo DES, cada oitavo bit da chave ignorado, de modo que a chave acaba tendo o comprimento de 56 bits. Mas, para todos os efeitos, o DES organizado baseando-se no nmero redondo de 64 bits (16 dgitos hexadecimais). Por exemplo, se tomarmos a mensagem clara hexadecimal 8787878787878787 e a encriptarmos com a chave DES hexadecimal 0E329232EA6D0D73, obteremos o texto cifrado hexadecimal 0000000000000000. Se o criptograma for decifrado com a mesma chave secreta, o resultado ser o texto claro original 8787878787878787 hexadecimal. Este exemplo limpo e metdico porque nosso texto claro tinha o comprimento de exatos 64 bits. O mesmo seria verdade caso nosso texto claro tivesse um comprimento mltiplo de 64 bits. Mas a maioria das mensagens no cair nesta categoria. No sero um mltiplo exato de 64 bits (isto , um mltiplo exato de 16 nmeros hexadecimais). Por exemplo, considere a seguinte mensagem: "Criptologia sempre NumaBoa". Esta mensagem clara possui 28 bytes (56 dgitos hexadecimais) de comprimento. Neste caso, para encriptar a mensagem, seu comprimento precisa ser ajustado com a adio de alguns bytes extras no final. Depois de decifrar a mensagem, estes bytes extras so descartados. lgico que existem vrios esquemas diferentes para adicionar bytes. Aqui ns iremos adicionar apenas zeros no final, de modo que a mensagem total seja um mltiplo de 8 bytes (ou 16 dgitos hexadecimais, ou 64 bits). O texto claro "Criptologia sempre NumaBoa" , em hexadecimal, 43 72 69 70 74 6F 6C 6F

1 de 13

14/08/2012 18:51

Aldeia Numaboa - O algoritmo DES ilustrado II

http://www.numaboa.com.br/criptografia/bloco/313-des2?tmpl=compo...

67 69 61 20 73 65 6D 70 72 65 20 4E 75 6D 61 42 6F 61 0D 0A Note que os primeiros 54 dgitos hexadecimais representam a mensagem em Portugus, enquanto que "0D" o hexadecimal para Retorno (Carriage Return) e "0A" o hexadecimal para Quebra de Linha (Line Feed), indicando que o arquivo de mensagem chegou ao fim. Completamos ento a mensagem com alguns zeros no final para obter um total de 64 dgitos hexadecimais: 43 72 69 70 74 6F 6C 6F 67 69 61 20 73 65 6D 70 72 65 20 4E 75 6D 61 42 6F 61 0D 0A 00 00 00 00 Se cifrarmos agora a mensagem clara em blocos de 64 bits (16 dgitos hexadecimais), usando a mesma chave DES "0E329232EA6D0D73", obtemos o seguinte texto cifrado: A1 BF 4C 8C 1F 44 6A 4C CA 4D E4 28 6E DE 99 50 F5 59 66 2B B5 09 D9 3C 4B A7 70 FA E2 4B B3 C2 Este o cdigo secreto que pode ser transmitido ou armazenado. Decifrando o texto encriptado restaura a mensagem original "Criptologia sempre NumaBoa".

Fluxograma simplificado

Etapas do algoritmo DES

O DES em detalhes
Se voc tem algum conhecimento da criptografia clssica, no vai ser difcil perceber que o DES utiliza somente cifras tradicionais como a substituio e a transposio. A diferena que, com a ajuda do computador, no se trabalha mais com letras e sim com bits. Os princpios, porm, so os mesmos. O DES uma cifra de bloco, o que significa que atua sobre blocos de texto claro de determinado tamanho (64 bits) e

2 de 13

14/08/2012 18:51

Aldeia Numaboa - O algoritmo DES ilustrado II

http://www.numaboa.com.br/criptografia/bloco/313-des2?tmpl=compo...

retorna blocos de texto cifrado do mesmo tamanho. Portanto, o DES resulta numa permutao entre os 264 (leia como "2 elevado a 64") arranjos possveis de 64 bits, cada um deles podendo ser 0 ou 1. Cada bloco de 64 bits dividido em dois blocos de 32 bits, um sub-bloco esquerdo L e um sub-bloco direito R (esta diviso usada apenas em certas operaes). Exemplo: Seja M o texto claro da mensagem M = 0123456789ABCDEF, onde M est no formato hexadecimal (base 16). Reescrevendo M em formato binrio obtemos o bloco de texto de 64 bits: M = 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 L = 0000 0001 0010 0011 0100 0101 0110 0111 R = 1000 1001 1010 1011 1100 1101 1110 1111 O primeiro bit de M "0" e o ltimo bit "1". Lemos da esquerda para a direita. O DES atua sobre blocos de 64 bits usando tamanhos de chave de 56 bits. Na realidade, as chaves so armazenadas com 64 bits mas, passando por um processo que "retira" 8 bits, so reduzidas para 56 bits. Estes 8 bits esto presentes nas chaves para garantir a integridade das mesmas, ou seja, o ltimo bit de cada um dos 8 bytes da chave um bit verificador, chamado de bit de paridade. Bits de paridade indicam quantos bits esto setados (tm valor 1) nos sete primeiros bits do byte. Quando este nmero for par (da paridade), o ltimo bit recebe o valor 1, caso contrrio, recebe o valor 0. Por exemplo, o byte 00010011 possui 2 bits setados nos primeiros sete bits, por isso o byte completado com 1; o byte 00110100 possui trs bits setados nos primeiros sete bits, por isso o byte completado com 0. Apesar dos bits de paridade serem retirados, nos clculos a seguir vamos sempre numerar os bits de 1 a 64, indo da esquerda para a direita. Exemplo: seja K a chave hexadecimal K = 133457799BBCDFF1. Isto nos d a chave binria (substituindo 1 = 0001, 3 = 0011, etc agrupados em oito bits): K = 00010011 00110100 01010111 01111001 10011011 10111100 11011111 11110001 O algoritmo DES usa vrios passos at obter o resultado final. Leia a seguir.

Passo 1: A partir da chave de 56 bits, criar 16 subchaves de 48 bits A chave de 64 bits permutada de acordo com a tabela a seguir, PC-1. Observe que nesta tabela os bits de paridade foram excludos (os bits 8, 16, 24, 32, 40, 48, 56 e 64 esto ausentes) portanto, esta operao s efetuada depois da verificao de integridade da chave. Como a primeira entrada da tabela "57", isto significa que o 57 bit da chave original K torna-se o primeiro bit da chave permutada K+. O 49 bit da chave original transforma-se no segundo bit da chave permutada. O 4 bit da chave original o ltimo bit da chave permutada. Observe que apenas 56 bits da chave original aparecem na chave permutada. PC-1 --------------------------------------57 1 10 19 63 7 14 21 49 58 2 11 55 62 6 13 41 50 59 3 47 54 61 5 33 42 51 60 39 46 53 28 25 34 43 52 31 38 45 20 17 26 35 44 23 30 37 12 9 18 27 36 15 22 29 4

---------------------------------------

3 de 13

14/08/2012 18:51

Aldeia Numaboa - O algoritmo DES ilustrado II

http://www.numaboa.com.br/criptografia/bloco/313-des2?tmpl=compo...

Exemplo: Da chave original de 64 bits K = 00010011 00110100 01010111 01111001 10011011 10111100 11011111 11110001 obtemos a permutao de 56 bits K+ = 1111000 0110011 0010101 0101111 0101010 1011001 1001111 0001111 A seguir, dividimos esta chave em duas metades, esquerda C0 e direita D0, onde cada metade tem 28 bits. Exemplo: Da chave permutada K+ obtemos C0 = 1111000 0110011 0010101 0101111 D0 = 0101010 1011001 1001111 0001111 Com C0 e D0 definidas, criamos dezesseis blocos Cn e Dn, 1<=n<=16. Cada par de blocos Cn e Dn formado pelo par anterior Cn-1 e Dn-1, respectivamente para n = 1, 2, ..., 16, usando o seguinte esquema de "deslocamentos para a esquerda" ("left shift") no bloco anterior. Para fazer um deslocamento esquerda, mova cada bit uma posio para a esquerda, exceto o primeiro bit, o qual deslocado para o final do bloco.

Nmero de Iteraes

Nmero de deslocamentos esquerda

---------------------------------------------------------1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1

Isto significa que, por exemplo, C3 e D3 so obtidos de C2 e D2, respectivamente, com dois deslocamentos esquerda, e C16 e D16 so obtidos de C15 e D15, respectivamente, com um deslocamento esquerda. Em todos os casos, um nico deslocamento esquerda significa uma rotao dos bits uma posio para a esquerda de modo que, aps um deslocamento esquerda, os bits nas 28 posies sejam os bits que previamente estavam nas posies 2, 3, ..., 28, 1. Exemplo: Do par original C0 e D0 obtemos:

C0 = 1111000011001100101010101111

D0 = 0101010101100110011110001111

4 de 13

14/08/2012 18:51

Aldeia Numaboa - O algoritmo DES ilustrado II

http://www.numaboa.com.br/criptografia/bloco/313-des2?tmpl=compo...

C1 = 1110000110011001010101011111 D1 = 1010101011001100111100011110

C2 = 1100001100110010101010111111 D2 = 0101010110011001111000111101

C3 = 0000110011001010101011111111 D3 = 0101011001100111100011110101

C4 = 0011001100101010101111111100 D4 = 0101100110011110001111010101

C5 = 1100110010101010111111110000

D5 = 0110011001111000111101010101

C6 = 0011001010101011111111000011 D6 = 1001100111100011110101010101

C7 = 1100101010101111111100001100 D7 = 0110011110001111010101010110

C8 = 0010101010111111110000110011 D8 = 1001111000111101010101011001

C9 = 0101010101111111100001100110 D9 = 0011110001111010101010110011

C10 = 0101010111111110000110011001

D10 = 1111000111101010101011001100

C11 = 0101011111111000011001100101 D11 = 1100011110101010101100110011

C12 = 0101111111100001100110010101 D12 = 0001111010101010110011001111

C13 = 0111111110000110011001010101 D13 = 0111101010101011001100111100

5 de 13

14/08/2012 18:51

Aldeia Numaboa - O algoritmo DES ilustrado II

http://www.numaboa.com.br/criptografia/bloco/313-des2?tmpl=compo...

C14 = 1111111000011001100101010101 D14 = 1110101010101100110011110001

C15 = 1111100001100110010101010111

D15 = 1010101010110011001111000111

C16 = 1111000011001100101010101111 D16 = 0101010101100110011110001111

Agora montamos as chaves Kn, para 1<=n<=16, aplicando a seguinte tabela de permutao em cada um dos pares concatenados CnDn. Cada par possui 56 bits, porm PC-2 usa apenas 48 deles. PC-2 ---------------------------------14 3 23 16 41 30 44 46 17 28 19 7 52 40 49 42 11 15 12 27 31 51 39 50 24 6 4 20 37 45 56 36 1 21 26 13 47 33 34 29 5 10 8 2 55 48 53 32

----------------------------------

Portanto, o primeiro bit de Kn o 14 bit de CnDn, o segundo bit o 17, e assim sucessivamente, terminando com o 48 bit de Kn sendo o 32 de CnDn. Exemplo: Para a primeira chave temos C1D1 = 1110000 1100110 0101010 1011111 1010101 0110011 0011110 0011110 a qual, aps aplicarmos a permutao PC-2 transforma-se em K1 = 000110 110000 001011 101111 111111 000111 000001 110010 Para as outras chaves temos

K2 = 011110 011010 111011 011001 110110 111100 100111 100101 K3 = 010101 011111 110010 001010 010000 101100 111110 011001 K4 = 011100 101010 110111 010110 110110 110011 010100 011101 K5 = 011111 001110 110000 000111 111010 110101 001110 101000

K6 = 011000 111010 010100 111110 010100 000111 101100 101111 K7 = 111011 001000 010010 110111 111101 100001 100010 111100 K8 = 111101 111000 101000 111010 110000 010011 101111 111011 K9 = 111000 001101 101111 101011 111011 011110 011110 000001 K10 = 101100 011111 001101 000111 101110 100100 011001 001111

6 de 13

14/08/2012 18:51

Aldeia Numaboa - O algoritmo DES ilustrado II

http://www.numaboa.com.br/criptografia/bloco/313-des2?tmpl=compo...

K11 = 001000 010101 111111 010011 110111 101101 001110 000110 K12 = 011101 010111 000111 110101 100101 000110 011111 101001 K13 = 100101 111100 010111 010001 111110 101011 101001 000001 K14 = 010111 110100 001110 110111 111100 101110 011100 111010 K15 = 101111 111001 000110 001101 001111 010011 111100 001010

K16 = 110010 110011 110110 001011 000011 100001 011111 110101

Em relao s subchaves s. Agora vamos dar uma olhada na mensagem.

Passo 2: Codificar cada bloco de 64 bits de dados Existe uma permutao inicial IP dos 64 bits de dados da mensagem M. Isto rearranja os bits de acordo com a seguinte tabela, onde as entradas da tabela mostram o novo arranjo de bits a partir da ordenao inicial. O 58 bit de M torna-se o primeiro bit de IP. O 50 bit de M passa a ser o segundo bit de IP. O 7 bit de M ser o ltimo bit de IP. IP ----------------------------------------58 60 62 64 57 59 61 63 50 52 54 56 49 51 53 55 42 44 46 48 41 43 45 47 34 36 38 40 33 35 37 39 26 28 30 32 25 27 29 31 18 20 22 24 17 19 21 23 10 12 14 16 9 11 13 15 2 4 6 8 1 3 5 7

-----------------------------------------

Exemplo: Aplicando a permutao inicial ao bloco de texto M citado anteriormente obtemos M = 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 IP = 1100 1100 0000 0000 1100 1100 1111 1111 1111 0000 1010 1010 1111 0000 1010 1010 Aqui, o 58 bit de M "1" e se torna o primeiro bit de IP. O 50 bit de M tambm "1" e torna-se o segundo bit de IP. O 7 bit de M "0", o qual se torna o ltimo bit de IP. Em seguida dividimos o bloco permutado IP numa metade esquerda L0 de 32 bits e numa metade direita R0 de 32 bits. Exemplo: Obtemos L0 e R0 de IP

L0 = 1100 1100 0000 0000 1100 1100 1111 1111 R0 = 1111 0000 1010 1010 1111 0000 1010 1010

Agora prosseguimos com 16 iteraes, para 1<=n<=16, usando uma funo f que opera em dois blocos - no bloco de dados de 32 bits e na chave Kn de 48 bits - para produzir um bloco de 32 bits. Seja + uma adio XOR (adio bit-a-bit mdulo 2) ento, para n variando de 1 a 16, calculamos

Ln = Rn-1

7 de 13

14/08/2012 18:51

Aldeia Numaboa - O algoritmo DES ilustrado II

http://www.numaboa.com.br/criptografia/bloco/313-des2?tmpl=compo...

Rn = Ln-1 + f(Rn-1,Kn)

O resultado aparece num bloco final, para n = 16, de L16R16. Isto , em cada iterao, pegamos os 32 bits da direita do resultado anterior e transformamo-os nos 32 bits da esquerda do passo atual. Para os 32 bits da direita do passo atual ns fazemos um XOR dos 32 bits da esquerda do passo anterior atravs do clculo de f. Exemplo: Para n = 1 temos

K1 = 000110 110000 001011 101111 111111 000111 000001 110010 L1 = R0 = 1111 0000 1010 1010 1111 0000 1010 1010 R1 = L0 + f(R0,K1)

Falta explicar como funciona a funo f. Para calcular f, primeiramente expandimos cada bloco Rn-1 de 32 bits para 48 bits (para se ajustar ao tamanho das sub-chaves). Isto feito usando uma tabela de seleo que repete alguns dos bits em Rn-1. Chamaremos o uso desta tabela de seleo de funo E. Portanto, E(Rn-1) tem um bloco de entrada de 32 bits e um bloco de sada de 48 bits. Seja E tal que os 48 bits de sada, escritos em 8 blocos de 6 bits cada, sejam obtidos atravs da seleo de bits nas suas entradas de acordo com a seguinte tabela: Tabela E de Seleo de bits ---------------------------------32 4 8 12 16 20 24 28 1 5 9 13 17 21 25 29 2 6 10 14 18 22 26 30 3 7 11 15 19 23 27 31 4 8 12 16 20 24 28 32 5 9 13 17 21 25 29 1

----------------------------------

Portanto, os primeiros trs bits de E(Rn-1) so os bits das posies 32, 1 e 2 de Rn-1, enquanto que os dois ltimos bits de E(Rn-1) so os bits da posio 32 e 1. Exemplo: Calculamos E(R0) de R0 da seguinte maneira:

R0

1111

0000

1010

1010

1111

0000

1010

1010

E(R0) = 011110 100001 010101 010101 011110 100001 010101 010101

(Note que cada bloco de 4 bits originais foi expandido para um bloco de 6 bits de sada).

A seguir, no clculo de f, fazemos um XOR na sada E(Rn-1) com a chave Kn. O motivo de se utilizar o XOR lgico porque este reversvel. Se A xor B = C, ento A xor C = B e B xor C = A. A reversibilidade importante para

8 de 13

14/08/2012 18:51

Aldeia Numaboa - O algoritmo DES ilustrado II

http://www.numaboa.com.br/criptografia/bloco/313-des2?tmpl=compo...

podermos reverter o processo quando quisermos decifrar a mensagem cifrada. Kn + E(Rn-1) Exemplo: Para K1, E(R0), temos

K1 = 000110 110000 001011 101111 111111 000111 000001 110010 E(R0) = 011110 100001 010101 010101 011110 100001 010101 010101 K1+E(R0) = 011000 010001 011110 111010 100001 100110 010100 100111

Ainda no terminamos o clculo da funo f. At este ponto, expandimos Rn-1 de 32 para 48 bits, usando a tabela de seleo E, e XORamos o resultado com a chave Kn. Com este processo obtivemos 48 bits ou oito grupos de 6 bits. Agora fazemos uma coisa meio estranha com cada grupo de seis bits: usamo-os como endereos em tabelas denominadas "S boxes", ou "caixas S". Cada grupo de seis bits nos dar um endereo numa caixa S diferente. Um nmero de 4 bits estar localizado neste endereo. Este nmero de 4 bits ir substituir os 6 bits originais. O principal resultado que os oito grupos de 6 bits so transformados em oito grupos de 4 bits (as sadas de 4 bits das caixas S) num total de 32 bits. Escrevemos o resultado anterior, que tem 48 bits, na forma: Kn + E(Rn-1) = B1B2B3B4B5B6B7B8 onde cada Bi um grupo de seis bits. Agora calculamos S1(B1)S2(B2)S3(B3)S4(B4)S5(B5)S6(B6)S7(B7)S8(B8) onde Si(Bi) se refere isima sada da caixa S. Repetindo, cada uma das funes S1, S2, ..., S8, pega um bloco de 6 bits como entrada e devolve um bloco de 4 bits como sada. A tabela para determinar S1 mostrada e explicada abaixo: Funo S1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

| -------------------------------------------------------------0 | 14 1 | 2 | 0 4 4 15 1 12 13 7 14 8 1 4 8 2 2 14 13 4 15 2 6 9 11 13 2 1 8 1 11 7 3 10 15 5 10 6 12 11 6 12 9 3 12 11 7 14 5 9 3 10 9 5 10 0 0 3 5 6 7 8 0 13

3 | 15

Se S1 a funo definida nesta tabela e B um bloco de 6 bits, ento S1(B) determinada da seguinte maneira: O primeiro e o ltimo bit de B representam um nmero na base 2 com valor decimal entre 0 e 3 (ou binrio 00 a 11). Que este nmero seja i. Os 4 bits centrais de B representam um nmero na base 2 com valor decimal entre 0 e 15 (ou binrio de 0000 a 1111). Que este nmero seja j. Procure o nmero na tabela localizado na j-sima coluna e na i-sima linha. um nmero que varia de 0 a 15 e unicamente representado por um bloco de 4 bits. Este bloco a sada S1(B) de S1 para a entrada B. Por exemplo, para o bloco de entrada B = 011011, o primeiro bit "0" e o ltimo "1", indicando a linha 01. Os quatro bits centrais so "1101". Este o equivalente binrio do decimal 13, de modo que a coluna ser a de nmero 13. Na linha 1, coluna 13, aparece 5. Isto determina a sada; 5 o binrio 0101, de modo que a sada 0101. Portanto, S1(011011) = 0101. As tabelas definindo as funes S2, ..., S8 so as seguintes: Funo S2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

9 de 13

14/08/2012 18:51

Aldeia Numaboa - O algoritmo DES ilustrado II

http://www.numaboa.com.br/criptografia/bloco/313-des2?tmpl=compo...

| -------------------------------------------------------------0 | 15 1 | 2 | 3 0 1 13 14 8 8 4 7 10 14 7 11 1 6 15 10 3 11 2 4 15 3 8 13 4 4 14 1 2 9 12 5 11 7 0 8 6 2 1 12 7 13 10 6 12 12 6 9 0 0 9 3 5 5 11 2 14 10 5 15 9

3 | 13

Funo S3 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

| -------------------------------------------------------------0 | 10 1 | 13 2 | 13 3 | 1 0 7 6 10 9 0 4 13 14 9 9 0 6 3 8 6 3 4 15 9 15 6 3 8 5 10 0 7 1 2 11 4 13 8 1 15 12 5 2 14 7 14 12 3 11 12 5 11 4 11 10 5 2 15 14 2 8 1 7 12

Funo S4 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

| -------------------------------------------------------------0 | 7 13 8 6 15 14 11 9 0 3 5 0 6 0 6 12 10 6 15 11 1 9 0 7 13 10 3 13 8 1 4 15 9 2 7 1 4 8 2 3 5 5 12 14 11 11 1 5 12 12 10 2 7 4 14 8 2 15 9 4 14

1 | 13 2 | 10 3 | 3

Funo S5 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

| -------------------------------------------------------------0 | 2 12 11 2 8 4 2 1 12 1 12 11 7 7 4 10 1 10 7 13 14 11 13 7 2 6 1 8 13 8 5 15 6 5 0 9 15 3 15 12 0 15 10 5 9 13 3 6 10 0 9 3 4 14 8 0 5 9 6 14 3

1 | 14 2 | 4

3 | 11

Funo S6 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

| -------------------------------------------------------------0 | 12 1 | 10 2 | 3 | 9 4 1 15 14 3 10 4 15 2 15 2 5 12 9 7 2 9 2 12 8 5 6 9 12 15 8 5 3 10 0 6 7 11 13 1 0 14 3 13 4 1 4 14 10 7 14 0 1 6 7 11 13 0 5 3 11 8 11 8 6 13

Funo S7 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

10 de 13

14/08/2012 18:51

Aldeia Numaboa - O algoritmo DES ilustrado II

http://www.numaboa.com.br/criptografia/bloco/313-des2?tmpl=compo...

| -------------------------------------------------------------0 | 4 11 0 4 11 2 11 11 13 14 7 13 8 15 4 12 1 0 9 3 4 8 1 7 10 13 10 14 7 3 14 10 9 12 3 15 5 9 5 6 0 7 12 8 15 5 2 0 14 10 15 5 2 6 8 9 3 1 6 2 12

1 | 13 2 | 3 | 1 6

Funo S8

10

11

12

13

14

15

| -------------------------------------------------------------0 | 13 1 | 2 | 3 | 1 7 2 2 15 11 1 8 13 4 14 4 8 1 7 6 10 9 4 15 3 12 10 11 7 14 8 1 4 2 13 10 12 0 15 9 5 6 12 3 6 10 9 14 11 13 0 5 0 15 3 0 14 3 5 12 9 5 6 7 2 8 11

Exemplo: Para a primeira rodada, obtemos como sada das oito caixas S: K1 + E(R0) = 011000 010001 011110 111010 100001 100110 010100 100111 S1(B1)S2(B2)S3(B3)S4(B4)S5(B5)S6(B6)S7(B7)S8(B8) = 0101 1100 1000 0010 1011 0101 1001 0111 O estgio final do clculo de f fazer uma permutao P da sada da caixa S para obter o valor final de f: f = P(S1(B1)S2(B2)...S8(B8)) A permutao P definida pela tabela a seguir. P devolve uma sada de 32 bits a partir de uma entrada de 32 bits permutando os bits do bloco de entrada. P -----------------16 29 1 5 2 32 19 22 7 12 15 18 8 27 13 11 20 28 23 31 24 3 30 4 21 17 26 10 14 9 6 25

-----------------Exemplo: Da sada das oito caixas S S1(B1)S2(B2)S3(B3)S4(B4)S5(B5)S6(B6)S7(B7)S8(B8) = 0101 1100 1000 0010 1011 0101 1001 0111 obtemos f = 0010 0011 0100 1010 1010 1001 1011 1011 Agora possuimos todos os elementos necessrios para calcular R1, ou seja, R1 = L0 + f(R0 ,K1)

L0 = 1100 1100 0000 0000 1100 1100 1111 1111 f(R0, K1) + 0010 0011 0100 1010 1010 1001 1011 1011 R1 = 1110 1111 0100 1010 0110 0101 0100 0100

11 de 13

14/08/2012 18:51

Aldeia Numaboa - O algoritmo DES ilustrado II

http://www.numaboa.com.br/criptografia/bloco/313-des2?tmpl=compo...

Na prxima rodada obteremos L2 = R1, que o sub-bloco que acabamos de calcular, e depois precisamos calcular R2 = L1 + f(R1, K2) e assim sucessivamente por 16 rodadas. No final da dcima sexta rodada temos os sub-blocos L16 e R16. Invertemos ento a ordem dos dois sub-blocos num bloco de 64 bits, ou seja, R16L16, e aplicamos a permutao final IP definida na seguinte tabela: IP-1 --------------------------------------------40 39 38 37 36 35 34 33 8 7 6 5 4 3 2 1 48 47 46 45 44 43 42 41 16 15 14 13 12 11 10 9 56 55 54 53 52 51 50 49 24 23 22 21 20 19 18 17 64 63 62 61 60 59 58 57 32 31 30 29 28 27 26 25
-1

-------------------------------------------- isto a, a sada do algoritmo possui o bit 40 do bloco de pre-sada como seu primeiro bit, bit 8 como seu segundo bit, e assim sucessivamente, at o bit 25 do bloco de pre-sada como seu ltimo bit. Exemplo: Se processarmos todos os 16 blocos usando o mtodo definido previamente, obteremos, na 16 rodada L16 = 0100 0011 0100 0010 0011 0010 0011 0100 R16 = 0000 1010 0100 1100 1101 1001 1001 0101 Invertendo a ordem destes dois blocos e aplicando a permutao final em R16L16 = 00001010 01001100 11011001 10010101 01000011 01000010 00110010 00110100 IP = 10000101 11101000 00010011 01010100 00001111 00001010 10110100 00000101 o que, em formato hexadecimal, 85E813540F0AB405. Portanto, a forma cifrada de M = 0123456789ABCDEF C = 85E813540F0AB405. Decifrar simplesmente o inverso de cifrar, seguindo os mesmos passos acima descritos porm invertendo a ordem das sub-chaves aplicadas.
-1

MODOS DE OPERAO DO DES


O algoritmo DES transforma um bloco de mensagem M de 64 bits num bloco cifrado C. Se cada bloco de 64 bits for cifrado individualmente, ento o modo de encriptao denominado Electronic Code Book (ECB). Existem outros dois modos de cifragem DES, os modos Chain Block Coding (CBC) e Cipher Feedback (CFB), os quais tornam cada bloco cifrado dependente de todos os outros blocos de mensagem anteriores atravs de uma operao inicial de XOR.

QUEBRANDO O DES
Antes que o DES fosse adotado como padro nacional (estadunidense), durante o perodo em que o NBS estava solicitando comentrios sobre o algoritmo proposto, os criadores da criptografia de chave pblica, Martin Hellman e Whitfield Diffie, registraram algumas objees quanto ao uso do DES como algoritmo de encriptao. Hellman escreveu: "Whit Diffie e eu ficamos preocupados com o fato de que o padro de encriptao de dados proposto, enquanto provavelmente seguro em relao a assaltos comerciais, pode ser extremamente vulnervel a ataques efetuados por uma organizao de inteligncia" (carta ao NBS, 22 de Outubro de 1975). Diffie e Hellman planejaram ento um ataque de "fora bruta" ao DES ("fora bruta" significa aplicar sequencialmente

12 de 13

14/08/2012 18:51

Aldeia Numaboa - O algoritmo DES ilustrado II

http://www.numaboa.com.br/criptografia/bloco/313-des2?tmpl=compo...

as 256 chaves possveis at encontrar a chave correta que decifra a mensagem cifrada). Propuseram o uso especfico de "computadores paralelos usando um milho de chips para testar um milho de chaves cada um" por segundo e estimaram o custo de uma mquina deste tipo em US$ 20 milhes. Um salto para 1998. Sob a direo de John Gilmore do EFF, uma equipe gastou menos do que US$ 250.000 para construir uma mquina que analisou todo o espao de chaves de 56 bits do DES e precisou, em mdia, 4.5 dias para completar a tarefa. Em 17 de Julho de 1998 eles anunciaram que haviam quebrado uma chave de 56 bits em 46 horas. O computador, chamado de Deep Crack, usa 27 placas, cada uma com 64 chips, e capaz de testar 90 bilhes de chaves por segundo. Apesar disso, em 8 de Junho de 1998, Robert Litt, principal representante procurador geral do Departamento de Justia dos Estados Unidos, negou que fosse possvel o FBI quebrar o DES: "Deixe-me colocar o problema tcnico no contexto: foram precisos 14.000 computadores Pentium trabalhando durante quatro meses para decifrar uma nica mensagem... No estamos falando apenas do FBI e da NSA [precisando de um poder de processamento macio], estamos falando a respeito de cada departamento de polcia." Respondeu o especialista em criptografia Bruce Schneier: "... o FBI ou incompetente ou est mentindo, ou ambos". Schneier continua: "A nica soluo neste caso pegar um algoritmo com uma chave maior; no existe silcio suficiente na galxia ou tempo suficiente antes do sol se apagar para quebrar com fora bruta o triple-DES" (Crypto-Gram, Counterpane Systems, 15 de Agosto de 1998).

TRIPLE-DES
O triple-DES apenas o DES com duas chaves de 56 bits aplicadas. Dada uma mensagem em texto claro, a primeira chave usada para cifrar a mensagem em DES. A segunda chave usada para decifrar o DES da mensagem cifrada. Como a segunda chave no a correta para decifrar, esta decifrao apenas embaralha ainda mais os dados. A mensagem duplamente embaralhada , ento, cifrada novamente com a primeira chave para se obter o criptograma final. Este procedimento em trs etapas chamado de triple-DES ou triplo DES. Triple-DES apenas o DES efetuado trs vezes com duas chaves usadas numa determinada ordem. O triple-DES tambm pode ser feito usando-se trs chaves diferentes, ao invs de apenas duas. No primeiro caso, o espao das chaves de 2
112 168

, no segundo, de 2

Agradecimentos Agradeo ao daimao por ter me alertado sobre os bits de paridade da chave. Agradeo ao Luis Cludio por ter me alertado a respeito do espao das chaves.

Texto publicado pela primeira vez na Aldeia em 5 de Agosto de 2003.

13 de 13

14/08/2012 18:51