23.11.2014 Views

CRIPTOGRAFIA - FESP

CRIPTOGRAFIA - FESP

CRIPTOGRAFIA - FESP

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

elevado a 64") arranjos possíveis de 64 bits, cada um deles podendo ser 0 ou 1.<br />

Cada bloco de 64 bits é dividido em dois blocos de 32 bits, um sub-bloco<br />

esquerdo L e um sub-bloco direito R (esta divisão é usada apenas em certas<br />

operações).<br />

Exemplo: Seja M o texto claro da mensagem M = 0123456789ABCDEF, onde M<br />

está no formato hexadecimal (base 16). Reescrevendo M em formato binário<br />

obtemos o bloco de texto de 64 bits:<br />

1111<br />

M = 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110<br />

L = 0000 0001 0010 0011 0100 0101 0110 0111<br />

R = 1000 1001 1010 1011 1100 1101 1110 1111<br />

O primeiro bit de M é "0" e o último bit é "1". Lemos da esquerda para a direita.<br />

O DES atua sobre blocos de 64 bits usando tamanhos de chave de 56 bits. Na<br />

realidade, as chaves são armazenadas com 64 bits mas, passando por um<br />

processo que "retira" 8 bits, são reduzidas para 56 bits. Estes 8 bits estão<br />

presentes nas chaves para garantir a integridade das mesmas, ou seja, o último<br />

bit de cada um dos 8 bytes da chave é um bit verificador, chamado de bit de<br />

paridade. Bits de paridade indicam quantos bits estão setados (têm valor 1) nos<br />

sete primeiros bits do byte. Quando este número for par (daí paridade), o último<br />

bit recebe o valor 1, caso contrário, recebe o valor 0. Por exemplo, o byte<br />

00010011 possui 2 bits setados nos primeiros sete bits, por isso o byte é<br />

completado com 1; o byte 00110100 possui três bits setados nos primeiros sete<br />

bits, por isso o byte é completado com 0. Apesar dos bits de paridade serem<br />

retirados, nos cálculos a seguir vamos sempre numerar os bits de 1 a 64, indo da<br />

esquerda para a direita.<br />

Exemplo: seja K a chave hexadecimal K = 133457799BBCDFF1. Isto nos dá a<br />

chave binária (substituindo 1 = 0001, 3 = 0011, etc agrupados em oito bits):<br />

K = 00010011 00110100 01010111 01111001 10011011 10111100 11011111 11110001<br />

Passo 1: A partir da chave de 56 bits, criar 16 subchaves de 48 bits<br />

A chave de 64 bits é permutada de acordo com a tabela a seguir, PC-1. Observe<br />

que nesta tabela os bits de paridade foram excluídos (os bits 8, 16, 24, 32, 40,<br />

48, 56 e 64 estão ausentes) portanto, esta operação só é efetuada depois da<br />

verificação de integridade da chave. Como a primeira entrada da tabela é "57",<br />

isto significa que o 57º bit da chave original K torna-se o primeiro bit da chave<br />

permutada K+. O 49º bit da chave original transforma-se no segundo bit da<br />

chave permutada. O 4º bit da chave original é o último bit da chave permutada.<br />

Observe que apenas 56 bits da chave original aparecem na chave permutada.<br />

PC-1<br />

---------------------------------------<br />

57 49 41 33 25 17 9<br />

1 58 50 42 34 26 18<br />

10 2 59 51 43 35 27<br />

19 11 3 60 52 44 36<br />

63 55 47 39 31 23 15

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!