terça-feira, 7 de abril de 2015

Gerando subchaves com S-DES

Vamos então a uma prática usando o algoritmo Simplified DES.

O DES é um algoritmo complexo demais para se trabalhar neste primeiro momento, então estamos usando o S-DES. A imagem abaixo é a mesma do post passado, coloquei ela aqui apenas para refrescar a memória.


Vimos no texto passado, que nesta imagem, K1 e K2 representam chaves. Vamos ver hoje que essas chaves são na verdade subchaves derivadas da chave usada na entrada. Na imagem acima vemos uma chave de 10 bits na entrada do algoritmo. Essa chave passa por diversas operações e produz como saída 2 subchaves.

Para facilitar a explicação vamos esquecer completamente das partes de cifragem e decifragem. Na imagem abaixo temos as mesmas operações da geração das subchaves da imagem acima, mas sem o resto do algoritmo.


Entre as duas imagens a única diferença de nomes que pode confundir é o LS-1 e o LS-2, que são o Shift da primeira imagem.

Só para lembrar também, os algoritmos usados atualmente tem blocos muito maiores que este que estamos usando para aprender. Aqui, blocos de 8 bits com chaves de 10 bits estão sendo usados.

Agora vamos ver o que cada uma dessas caixinhas quer dizer:




OK! Essas caixinhas tem números, mas o que isso realmente quer dizer? Simples, essas 3 caixinhas são operações de substituição. Estes números representam a posição do bit que será substituído. Vamos a prática que é mais fácil de entender.

Para esse e futuros exemplos com o S-DES vamos usar como chave os bits "1001101011". Muito importante! Lembre-se desse número, pois vamos usar ele como chave daqui para frente. Também é importante ressaltar que estamos trabalhando com binário, e é bom você ter uma noção disso para poder seguir em frente.

Agora com nossa chave de 10 bits em mãos vamos a geração de subchaves. Começando de cima para baixo, a primeira caixinha que passamos com os 10 bits é a P10. Vamos então fazer a substituição de acordo com a tabela acima do P10.  Devemos colocar os bits de nossa chave na ordem mostrada ali, ou seja, 3º bit, 5º bit, 2º bit, e assim por diante.

Ao passar pelo P10 nossa chave deve virar "0101111100" se você fez as operações corretamente.

Feito isso o próximo passo são duas caixas LS-1. Pode-se interpretar pela imagem que a chave de 10 bits é dividida em 2 chaves de 5 bits e cada uma passa por uma caixa diferente.

Fazendo o mesmo tipo de substituição, mas dessa vez usando a caixa do LS-1, vamos ter "10110" de um lado e "11001" do outro.

O próximo passo pode ser um pouco mais complicado de entender. Se você olhar para a imagem do algoritmo de geração de subchaves, temos que fazer 2 coisas agora, alimentar o P8 com o resultado das caixas LS-1 e "ao mesmo tempo" encaminhar estes resultados para a LS-2. Vamos fazer primeiro a caixa do P8.

Até aqui temos "10110" e "11001". Vamos passar isso pela caixa P8 e como resultado obter "11110010". De acordo com a imagem do algoritmo, este resultado é a primeira subchave, aqui chamada de K1. Note que as subchaves tem 8 bits e não 10 bits.

Agora sim vamos para as caixas LS-2 com as duas saídas de LS-1. Neste caso a caixa que usaremos é a mesma de LS-1, já que é a mesma operação. Vamos obter como resultado "01101" e "10011".

Passando isso para a próxima caixa, a P8, vamos ter na saída "11000111", nossa segunda subchave K2.

Guarde a chave e as subchaves para o próximo texto, que vamos cifrar um pequeno bloco de 10 bits com o S-DES.

0 comentários:

Postar um comentário

Subscribe to RSS Feed Follow me on Twitter!