Resenha do código DES
1. Introdução
O DES é um cifrador selecionado pelo governo dos EUA em 1976, futuramente sendo substituto pelo AES como padrão, esse algoritmo tinha várias controvérsias, como o tamanho de chave e suspeitas de possuir um backdoor, atualmente o DES é considerado inseguro para muitas aplicações, isso devido ao tamanho da chave de 56-bit podendo ser quebrado em um curto período de tempo.
Essa resenha apresenta a implementação do algoritmo DES (Data Encryptation Standard) na linguagem de programação C criado por Christopher R. Hertel, o código cria hashs de senha LM e respostas LM e
NTLM e esta sobre a licença GNU Lesser General Public, podendo ser distribuído e/ou modificado.
2. Desenvolvimento
A implementação usa o protocolo SMB no algoritmo DES como gerador de hashs mas não como função cifradora, sendo uma função de um único caminho (ath_DEShash), o inverso não é implementado, essa função é responsável por gerar respostas LM de chave de 7-byte e um desafio de 8-bytes.
Primeiro passo do algoritmo é definir a tabela de permutação inicial, um array com 65 inteiros. Os bits do texto plano inicial são reordenados através da tabela, usado na função Permute. Assim como no texto plano e na cifra, a chave sofre uma permutação antes do algoritmo iniciar, esse processo é realizado usando uma tabela de permutação de chaves, durante esse processo os bits de paridade são descartados. É passado para o DES uma chave contendo 7-bytes, para implementações que esperam paridade, devem ser adicionados os bits de paridade.
Para cada rodada a chave é embaralhada, o número de bits de rotação por rodada é dada por uma tabela.
A chave também passa por uma compressão usando outra tabela que seleciona 48 dos 56 bits da chave, a metade da direita e esquerda do texto plano são de 32 bits mas eles sofrem uma expansão para 48 bits, passando por um XOR com a chave comprimida de 48 bits. Depois os dados são expandidos usando uma tabela de