quinta-feira, 9 de abril de 2015

Criptografando com o S-DES

Seguindo com a série de criptografia, neste post vamos criptografar uma mensagem em texto claro com o algoritmo S-DES. No testo anterior vimos que o algoritmo necessita de subchaves, e vimos também o algoritmo de como são geradas.

Neste texto vamos ver como funciona a função complexa (fK) do algoritmo S-DES, e no próximo post, vamos fazer o processo completo da criptografia pelo algoritmo.

A função complexa tanto do DES quanto do S-DES é similar, a diferença está no número de rodadas. Veja abaixo o conteúdo, de uma forma simplificada, da função complexa.


As operações são similares as que vimos no algoritmo de geração de subchaves, então não tem necessidade de explicar novamente cada uma das operações.

O algoritmo representado na imagem é o DES, que possui 16 rodadas, chaves de 56 bits e blocos de 64 bits. Sabemos que no caso do S-DES temos apenas 2 rodadas. Caso não se lembra confira a imagem abaixo do S-DES:



Pode-se ver no algoritmo que a primeira rodada é onde a chave K1 entra, e a segunda rodada onde a chave K2 entra.

Se expandirmos a função fK temos as seguintes operações:



Na imagem acima podemos ver a Permutação Inicial (IP), quais operações compõe o fK (E/P, S0, S1, P4 e XOR),  o funcionamento do SW, uma segunda função fK com a segunda chave, e por fim a Permutação Final (IP -1).

As caixas E/P, S0, S1 e P4 funcionam do mesmo modo que as caixas P10, P8 e LS-1 do texto anterior.

Veja abaixo a organização das caixas:




As caixas E/P e P4 são simples, como as outras já apresentadas. Basta substituir a entrada de acordo com a ordem apresentada na imagem acima. Por exemplo, se recebermos como entrada na caixa E/P o número (binário) "1101", na saída teremos os bits dispostos de acordo com a imagem do E/P. Neste caso seguiremos a ordem 4º bit, 1º bit, 2º bit, 3º bit, 2º bit, 3º bit, 4º bit e por fim o 1º bit novamente. Neste caso a saída seria "11101011".

Já no caso da caixa S0 e S1, comumente chamadas de Caixas-S, são um pouco diferentes. A entrada da caixa-S é sempre 4 bits. O primeiro e o último bit representam a linha na matriz e o segundo e o terceiro bit representam a coluna da matriz. O resultado das coordenadas em decimal representa a saída da caixa-S, que deve ser convertido em binário.

Vamos a um exemplo. Vou usar aqui como entrada da caixa S0 o número "1010". Sabendo que o primeiro e quarto bit formam a linha (1º = 1, 4º = 0, ou seja, 10 binário = 2 decimal), e o segundo e terceiro formam a coluna (2º = 0, 3º = 1, ou seja, 01 binário = 1 decimal), temos as coordenadas da matriz.

O valor na posição (2, 1) é 2, ou seja, a saída da caixa S0 neste exemplo é 2 decimal = 10 binário.

Lembre-se que as linhas e colunas começam em 0 e não 1. As 4 linhas/colunas são 0, 1, 2 e 3.

Seguindo com o algoritmo, após a permutação inicial (P1) de 8 bits, os 8 bits são divididos em 2 blocos de 4 bits, a primeira metade vai para o fim do algoritmo para o XOR e a segunda metade para a caixa E/P e para o SW para a próxima rodada. A saída de 8 bits do E/P passa por um XOR com a primeira subchave e seu resultado é dividido e 2 blocos de 4 bits que entrarão nas caixas-S S0 e S1.

Os 2 blocos de 2 bits como saída das caixas-S entram na caixa P4. O resultado de 4 bits da saída de P4 passa por um XOR com a primeira parte do bloco que foi dividido na permutação inicial (IP), que ainda não tinha sido usado.

A saída do XOR e o segundo bloco de 4 bits da permutação inicial entram no SW, que inverte a ordem das entradas e usa na segunda rodada da função complexa.

Após realizar novamente as operações da função complexa, sua saídas vão para a permutação final (IP -1) e a saída desta permutação é o texto cifrado.

Neste caso a teoria é muito mais difícil que a prática, mas a teoria é necessária. Caso não tenha entendido alguma coisa, releia e acompanhe o texto com as imagens de referência, seguindo o fluxo do algoritmo.

No próximo texto vamos fazer todo o processo de criptografia, usando as subchaves que criamos no texto anterior.

Caso não tenha entendido alguma coisa poste sua dúvida aqui no post ou no grupo do Facebook que responderei e explicarei novamente se for necessário.

0 comentários:

Postar um comentário

Subscribe to RSS Feed Follow me on Twitter!