Titulo: Programa de Criptografia Rijndael-AES para Cifragem de Arquivos
Nome dos autores: Getúlio
Antero de Deus Júnior e Patrícia Cursino Suares.
Unidade Acadêmica onde o trabalho foi desenvolvido: Escola de Engenharia Elétrica e de Computação.
E-mail (do autor principal): getulio@eee.ufg.br.
Palavras-Chave (no máximo 4): criptografia; algoritmo Rijndael-AES;
cifragem de arquivos.
Introdução
A
segurança é um dos principais assuntos relacionados com a transmissão dos
dados, sejam estes dados transmitidos de forma eletrônica ou não. Assim, o
gerenciamento de sistemas de segurança pode ser melhorado examinando
periodicamente por problemas ou pontos inseguros. Vários aspectos do sistema
podem ser verificados, tais como:
·
Senhas curtas e
fáceis de adivinhar.
·
Programas não
autorizados em diretórios de sistemas.
·
Proteções inadequadas
para diretórios.
·
Entradas perigosas em
caminhos de pesquisa.
·
Mudanças em programas
do sistema detectados com o uso de códigos de correção de erros.
As várias medidas que um sistema operacional pode tomar para autenticação podem
não oferecer segurança suficiente para dados secretos, visto que uma maior
quantidade de dados secretos está sendo transmitida por meio de canais onde a
mensagem pode ser interceptada ou até mesmo não disponibilizada para todas as
pessoas em servidores de Internet. Deste modo, são necessários mecanismos de
proteção dos dados obtidos da rede.
A
codificação dos dados possibilita tal proteção dos dados. A criptografia é um
conjunto de técnicas para codificar textos originais em códigos cifrados, com o
objetivo de inibir a leitura imediata por usuários não autorizados. Existe uma
quantidade razoável de programas e algoritmos para os cálculos para se
codificar e decodificar mensagens.
Não
resta dúvida que a troca de arquivos codificados (cifrados) possibilitados pela
Internet é crescente. Deste modo, foi implementado um programa de computador
que utiliza o algoritmo de criptografia Rijndael-AES
(do inglês: Rijndael – Advanced Encryption Standard). O programa implementado é capaz de
garantir a privacidade, integridade e autenticidade do emissor na
disponibilização de arquivos na Internet para um público dedicado (exclusivo).
Vale ressaltar que o conceito de segurança é muito mais amplo do que o abordado
nesse artigo. Segurança significa privacidade, integridade e autenticidade do
emissor. Privacidade é garantia de que a mensagem não será atendida por um
intruso que, de alguma forma, consiga lê-la no meio de transmissão. Integridade
é a garantia de que a mensagem não foi modificada por um eventual intruso ativo
durante a transmissão. Autenticidade do emissor é a garantia de que o emissor
da mensagem é realmente que diz ser. Assim, a criptografia computacional
protege o sistema quanto à ameaça de perda de confiabilidade, integridade dos
dados ou não-repudiação. É utilizada para garantir: sigilo, integridade,
autenticação do usuário, autenticação do remetente, autenticação do
destinatário e autenticação de atualidade [1].
Material e Método (Metodologia):
Técnicas Clássicas de
Criptografia
Basicamente,
os sistemas de criptografia podem ser classificados de acordo com dois
critérios: tipo de tratamento de mensagem e tipo de chave. Segundo o tratamento
de mensagem, os sistemas se classificam em cifrado em blocos de 64 a 128 bits
(DES, IDEA, RSA) e cifrado em fluxo bit a bit (A5, RC4, SEAL). Segundo o tipo
de chaves, os sistemas se dividem em cifrado com chave secreta e cifrado com
chave pública [2]. Assim, os algoritmos criptográficos utilizam, em geral, uma
série de combinações de substituições e transposições, e sua eficiência é tão
maior quando mais difícil for decifrá-lo sem o conhecimento da chave. Um outro
fator que dificulta a quebra do código é o tamanho da chave. Para uma chave
longa, como as chaves de 128 bits, torna-se muito difícil a busca por força
bruta pela chave correta, mesmo para computadores mais rápidos disponíveis hoje
no mercado.
Os algoritmos de criptografia podem ser classificados em
simétricos e assimétricos. Os algoritmos simétricos, ou convencionais, utilizam
uma chave para cifrar e decifrar as mensagens. A prinicipal atração dos
algoritmos simétricos é o seu desempenho, pois são mais rápidos do que os
algoritmos assimétricos. Entretanto, o algotimo simétrico deixa de ser
interessante para um grande número de usuários e aplicações comerciais.
Os algoritmos de chave pública e privada, também conhecidos
de algoritmos de chave assimétrica, utilizam duas chaves: uma pública que pode
ser divulgada, e outra secreta, conhecida somente por pessoas autorizadas [3].
Em um sistema de chave assimétrica, cada usuário tem duas chaves: uma chave
pública e uma chave privada. As mensagens criptografadas com uma das chaves do
par só podem ser descriptografadas com a outra chave correspondente. Portanto,
qualquer mensagem criptorgrafada com a chave privada apenas pode ser
descriptografada com a chave pública e vice-versa. Como o nome sugere,
normalmente a chave pública é mantida universalmente disponível. A outra chave,
a chave privada, é mantida em segredo.
Para cifrar a mensagem utiliza-se a chave pública do
destinário e a privada do remetente. Para decifrá-la utiliza-se a chave privada
do destinatário e a pública do remetente. Dessa forma, a privacidade é
garantida, visto que apenas o destinatário consegue decifrar a mensagem
(conhecimento de sua chave privada).
O padrão Rijndael-AES é descrito em [4]. Esse padrão
especifica o algoritmo Rijndael, um algoritmo de bloco simétrico que pode
processar tamanhos de blocos de textos de 128 bits, usando chaves simétricas
com comprimentos de 128, 192 e 256 bits (tamanho da chave variável). O
algoritmo pode ser usado com três diferentes comprimentos de chaves
referenciados como “AES-128”, “AES-192”, e “AES-256”. As especificações do
padrão incluem as seguintes seções:
·
Definições dos
termos, acrônimos, e os parâmetros dos algoritmos, símbolos, e funções.
·
Notação e convenções
usadas na especificação do algoritmo, incluindo a ordem e o número de bits e
palavras.
·
Propriedades
matemáticas que são úteis no entendimento do algoritmo.
·
Especificação do
algoritmo, cobrindo a expansão da chave, rotinas de codificação e
decodificação.
·
Implementação em
questão, como o suporte do comprimento da chave, restrições da chave e tamanhos
adicionais do bloco, chave ou número de
iterações.
O padrão conclui com muitos apêndices que incluem exemplos
para expansão e codificação da chave, exemplos de mensagens para codificação e
decodificação, e uma lista de referências.
Resultados e Discussão:
O
programa que implementa o algoritmo Rijndael foi elaborado na linguagem Borland
Builder C/C++. A figura 1 apresenta o programa codificador/decodificador
implementado. Note que qualquer arquivo, independente do formato, pode ser
codificado/decodificado pelo programa. Uma senha com 16 caracteres deve ser
fornecida para a codificação/decodificação do arquivo. Vários testes foram
executados e mostraram a eficiência do programa.
Figura 1: Codificador Rijndael, implementado na linguagem
Borland Builder C/C++.
Conclusões:
A
troca de informações codificadas torna-se uma real necessidade à medida que as
comunicações particulares estão sendo monitoradas por canais eletrônicos.
Muitos algoritmos de criptografia foram propostos, embora muitos ainda estão
sendo desenvolvidos. Neste trabalho, foi implementado o algoritmo Rijndael-AES.
Vários testes foram realizados, mostrando a eficiência do método. Outros
algoritmos apropriados para a codificação/decodificação de arquivos ainda serão
implementados pelo programa.
Fonte de financiamento:
Não há.
Referências Bibliográficas:
[1]
G. Araújo, Transações Seguras via Web, http://www.rnp.br/newsgen/9803/https.html.
[2] J. R. A., Curso de Seguridad
Informática y Criptografía, Material Docente de Libre Distribución, http://ribanet.com/aprende/seguridad/libro/.
[3] A. B. Silva, Criptografia, Revista FIPEP, Vol. 1, nº.
1, 11/2001, pp. 28-30.
[4] Federal Information Processing Standards: Specification for the Advanced Encryption Standard (AES),
Publication 197, November 26, 2001.