quinta-feira, 2 de abril de 2015

Data Encryption Standard - DES

O algoritmo DES era inicialmente um projeto da IMB, chamado de LUCIFER, e olhem só, o projeto era dirigido por ninguém mais ninguém menos que Horst Feistel, nome familiar? :)

Como já comentei diversas vezes antes, a maioria destes algoritmos mais famosos tem seu código fonte público. Normalmente estes algoritmos usados hoje em dia são os ganhadores, ou os que mais se destacaram nas seleções do NIST dos projetos para um padrão nacional de criptografia, obviamente nos Estados Unidos, mas que foi amplamente adotado e teve presença mundial (ainda tem em alguns lugares).

A IBM então enviou seu projeto LUCIFER para a seleção do NIST, que na época se chamava NBS, estamos falando lá dos anos 70. O projeto foi o escolhido para se tornar o padrão nacional de criptografia para criptografar informações e documentos menos sigilosos.

O projeto foi muito criticado, várias suspeitas de enfraquecimento do algoritmo foram levantadas. Não querendo entrar em teorias da conspiração ou assuntos de espionagem (o que já é tecnicamente público) mas já entrando, no desenvolvimento do DES a NSA convenceu a IBM de que a chave poderia ser bem menor. Outra modificação que alegam é a alteração das Caixas-S do algoritmo.

Caixa-S é uma parte fundamental de um algoritmo de criptografia, a caixa-S é o bloco que mantém as operações do algoritmo.

Até teve um relato do Alan Konheim, desenvolvedor do DES:

"Enviamos as Caixas-S para Washington para avaliação, e quando voltaram estavam completamente diferentes."

Algum tempo depois, quando o poder computacional cresceu, se tornou simples quebrar o DES através de bruteforce. Para tentar resolver o problema foi criado o Triple DES, ou 3DES, mas outros problemas apareceram, o que fez o DES perder um pouco de espaço para outro algoritmo que veremos mais a frente, o AES.

Simplified DES


Agora sim vamos falar um pouco do algoritmo. Pare sua leitura e vá procurar no google sobre o algoritmo DES. Vou facilitar para você, apenas clique aqui.

É um algoritmo extremamente complexo né? Não temos como analisar tudo aquilo no ponto que estamos aprendendo como funciona a coisa. Para facilitar para todo mundo, inclusive seus alunos, o professor Edward Schaefer criou uma versão simplificada do DES, o S-DES. Com ele seus alunos poderiam estudar um algoritmo de criptografia de verdade e atual de uma forma mais simples. A funcionalidade básica é a mesma, mas o tamanho das chaves e blocos é menor para simplificar como o próprio nome já diz.

Este algoritmo usa blocos de 8 bits e chave de 10 bits para produzir um texto cifrado de 8 bits. É claro que com isso o algoritmo seria quebrado em segundos, por isso ele é apenas usado para questões de estudo.

Vamos agora dar uma olhada em como ficou o DES neste modelo simplificado:


Algumas coisas da imagem já vimos em textos passados, como por exemplo o uso de chaves (K1 e K2 nesse exemplo), algumas pode-se deduzir como entrada e saída, e algumas vou explicar. Não se preocupe se a explicação agora for superficial e não ajudar muito, nos próximos textos vamos ver na prática isso "funcionando" para ter uma noção do que é cada coisa.

IP = Permutação inicial
Fk = Função complexa (função necessária de acordo com a cifra de Feistel)
SW = Permutação simples
P10 = Permutação com 10 bits
P8 = Permutação com 8 bits
Shift = Substituição
IP-1= Permutação final ou permutação inicial inversa

Então aguardo você para o próximo texto para brincarmos um pouco com o algoritmo S-DES.

Até a próxima!

0 comentários:

Postar um comentário

Subscribe to RSS Feed Follow me on Twitter!