Professional Documents
Culture Documents
DES EM JAVA
Relatrio final do projeto
1. INTRODUO
1.1 Contextualizao
Criptografia, do grego krypts, segredo, e graphein, escrita, a utilizao de
cdigos e cifras para proteger informaes sigilosas. Os primeiros registros de
mensagens criptografadas remontam Mesopotmia, 1500 anos antes de Cristo.
Naquela poca, os materiais disponveis para aplicar os mtodos de encriptao
resumiam-se a formas de argila e aparatos para escrever nelas. Ao longo dos anos a
criptografia evoluiu at se tornar o que hoje, uma parte fundamental da vida moderna,
presente em praticamente qualquer dispositivo capaz de enviar informaes. Enquanto
antes a capacidade de codificar e decifrar mensagens era limitada pela capacidade
humana, hoje temos computadores poderosos bilhes de vezes mais velozes que
qualquer mente humana, construdos especificamente para encriptar e decifrar
mensagens digitais.
Algoritmos de criptografia modernos utilizam uma chave para transformar
sequncias de dados em um emaranhado sem nexo de caracteres, tornando impossvel
para usurios ou softwares descobrirem a mensagem original sem saber qual foi a chave
utilizada no processo. O algoritmo DES no diferente. Criado no incio da dcada de 70
pela IBM, a pedido do rgo de padronizao do governo americano, que percebeu a
necessidade de ter um nico sistema de criptografia para todas as trocas de informaes
confidenciais do Estado, este algoritmo tem como base a criptografia Lcifer, de Horst
Feistel. Em 1976 foi decretado como padro americano (e por consequncia, tornou-se
tambm padro mundial) e permaneceu assim at 1999, quando foi atualizado para
uma verso mais forte, o Triplo-DES, devido ao medo que as novas geraes de
supercomputadores seriam capazes de quebrar a criptografia por fora bruta. A
alterao para 3-DES foi somente um paliativo at que um novo padro pudesse ser
estabelecido, o que ocorreu em 2002 com o surgimento do AES, substituto definitivo do
DES. Entretanto, a verso simples do DES continuou a ser utilizada em larga escala at
2004 e o 3-DES continuar a ser utilizado at 2030 para informaes sensveis, mas que
no chegam a ser confidenciais.
A criptografia DES est definida em um documento oficial do National Institute
of Standards and Technology (NIST), rgo de padronizao americano. Detalhes do
processo, como as tabelas de permutao e as tabelas S-Boxes, que so a alma do
processo de encriptao, podem ser verificados neste arquivo, que est disponvel no
site oficial do rgo. O fluxograma a seguir sintetiza todo o procedimento, desde a
estrada at a sada final do sistema:
1.2 Motivao
A motivao para a escolha deste projeto foi a relevncia do tema e sua presena
no cotidiano da vida moderna. A compreenso do funcionamento de algoritmos de
criptografia e capacidade de implement-los pode ser uma habilidade til em diversas
1.3 Objetivos
O objetivo primrio do trabalho construir um projeto em Java que aplique
algoritmo DES para encriptar uma mensagem de 8 caracteres ASCII, ou seja, 64 bits. Para
isso, o programa receber uma chave de 8 caracteres ASCII, como uma senha. A sada
do programa dever ser uma sequncia de 64 bits. Alm disso, dever ser construdo
outro projeto em Java para realizar a decriptografia, tendo como entrada a sequncia
obtida do outro projeto e a mesma chave que foi utilizada. A sada dever ser
exatamente igual mensagem de 8 caracteres que foi a entrada do primeiro programa.
Aps o sucesso do objetivo primrio, achei razovel definir alguns objetivos
secundrios opcionais, para serem implementados a depender do tempo restante para
a entrega do trabalho. So eles:
2. DESENVOLVIMENTO
Neste projeto foram utilizadas diversas variveis, a maior parte deles vetores e
matrizes, alguns de inteiros, outros de chars ou strings. Alm disso, alguns vetores foram
usados para inserir as tabelas de permutao e expanso. Para a criptografia, as
principais variveis do mdulo main esto dispostas a seguir, com seus respectivos
significados:
key - chave ascii, 8 caracteres ascii
key_int - chave decimal, separada em 8 blocos
key_bin - chave binrio, separada em 8 blocos
key_in - chave pronta para o processo, vetor de 64 posies
key_pc1 - chave aps passar pela pc1
Alm disso, uma matriz tridimensional foi construda para armazenar os valores
das 8 tabelas de substituio que so necessrias:
sbox - matriz tridimensional com todas as 8 tabelas de substituio
3. SIMULAO E TESTES
3.1 Funcionamento do sistema
Ao iniciar o programa de criptografia, a seguinte mensagem exibida na
interface:
Figura 2. Mensagem inicial exibida na execuo do programa. Aqui, a mensagem que ser trabalhada
a string mensagem.
O usurio deve ento entrar com o texto que deseja encriptar. No necessrio
que tenha exatamente 8 caracteres, ele pode conter qualquer tamanho que for
necessrio. Ento, o programa pede a chave que ser aplicada, que dever conter
exatamente 64 bits:
Figura 3. Chave sendo solicitada ao usurio. Ela deve conter exatamente 64 bits, ou seja, 8 caracteres da
tabela ASCII padro. Dois caracteres desta chave podem ser substitudos por um caractere de 16 bits da
tabela ASCII expandida. Neste exemplo, a chave a string segredos.
Com estas entradas, o programa fornecer como sada uma sequncia de zeros
e uns, correspondente a mensagem criptografada:
Figura 5. Mensagem inicial exibida na execuo do programa de decriptografia. Aqui, a mensagem que
ser trabalhada a sequncia obtida na sada da criptografia.
Figura 6. Chave sendo solicitada ao usurio. Deve-se usar a mesma chave do programa anterior.
Por fim, o programa ir devolver a mensagem original. Alm disso, tambm cria
um arquivo de texto chamado out_decrip.txt com a sada:
A sada muito grande para caber no recorte, mas foi criptografada com sucesso.
4. CONCLUSES
O objetivo principal foi totalmente atingido, o algoritmo DES foi implementado
com sucesso. Dos objetivos opcionais, apenas o primeiro foi implementado. Os
programas encriptam e decifram mensagens de qualquer tamanho.
Um ponto positivo do algoritmo que ele cria um arquivo com a sada do
programa, facilitando para o usurio nos casos de mensagens muito grandes. Um ponto
negativo que foram criados dois projetos distintos, um para criptografar e outro para
decifrar, o que aumenta o trabalho necessrio para todo o processo
Nesta seo a equipe dever comentar se os objetivos propostos na introduo
e os algoritmos desenvolvidos foram capazes de solucionar o problema abordado ou
no, baseados nos exemplos apresentados. Dever ainda comentar sobre os pontos
positivos e negativos do algoritmo e da implementao.
5. REFERNCIAS BIBLIOGRFICAS
[1] Federal Information Processing Standards. FIPS 46-3, Data Encryption
Standard. 1976. Disponvel em: http://csrc.nist.gov/publications/fips/fips46-3/fips463.pdf.
[2] WIKIPEDIA. Cryptography. Disponvel em:
https://en.wikipedia.org/wiki/Cryptography.
[3] WIKIPEDIA. Data Encryption Standard. Disponvel em:
https://en.wikipedia.org/wiki/Data_Encryption_Standard.
[4] WIKIPEDIA. DES supplementary material. Disponvel em:
https://en.wikipedia.org/wiki/DES_supplementary_material.
[5] DES Step-by-step. Disponvel em: http://dhost.info/pasjagor/des/start.php.
6. APNDICE
Projetos Java utilizados: