Pesquisar no site

Contato

Tecnologiadarede

fassisaraujo@gmail.com

Algoritmos de Criptografia ( DES, 3DES, AES, RC4)

15/05/2010 01:32

Data Encryption Standard (DES):

DES é tipo de cifra em bloco, ou seja, um algoritmo que toma uma string de tamanho fixo de um texto plano e a transforma, através de uma série de complicadas operações, em um texto cifrado de mesmo tamanho. No caso do DES, o tamanho do bloco é 64 bits. DES também usa uma chave para personalizar a transformação, de modo que a descriptografia somente seria possível, teoricamente, por aqueles que conhecem a chave particular utilizada para criptografar. A chave consiste nominalmente de 64 bits, porém somente 56 deles são realmente utilizados pelo algoritmo. Os oito bits restantes são utilizados para checar a paridade e depois são descartados, portanto o tamanho efetivo da chave é de 56 bits, e assim é citado o tamanho de sua chave.

Como outras cifras de bloco, o DES sozinho não é um meio seguro de criptografia, deve ser utilizado em um modo de operação.

O algoritmo trabalha com 64 bits de dados a cada vez. Cada bloco de 64 bits de dados sofre de 1 a 16 iterações (16 é o padrão DES). Para cada iteração um pedaço de 48 bits da chave de 56 bits entra no bloco de encriptação representado pelo retângulo tracejado no diagrama acima. A decriptação é o processo inverso. O módulo "F" mostrado no diagrama é o coração do DES. Atualmente ele consiste de diferentes transformadas e substituições não-lineares.

Uma maneira de se aumentar a segurança ao utilizar o DES é usar o DES TRPLO, onde criptografa-se a mensagem, e a chave (em geral a chave usando-se chave assimétrica), junta-se chave criptografada mais mensagem criptografada e faz-se nova criptografia usando DES. Isto aumenta enormemente a dificuldade de se quebrar a criptografia.

O DES foi desenvolvido há mais de 20 anos, e nestes 20 anos não apareceu nenhuma descrição de um caminho de quebrá-lo, exceto pela força bruta.

História

As origens do DES remontam ao início da década de 1970. Em 1972, após concluir um estudo sobre as necessidades de segurança de informação do governo norte-americano, o então NBS  (National Bureau of Standards), atualmente conhecido como NIST (National Institute of Standards and Technology), na época o órgão de padrões do governo norte-americano) identificou a necessidade de um padrão governamental para criptografia de informações não confidenciais, porém sensíveis. Em conseqüência, em 15 de Maio de 1973, após uma consulta à NSA, o NBS solicitou proposta para um algoritmo de criptografia que atendesse a critérios rigorosos de projeto. Entretanto, nenhuma das propostas recebidas se mostrou viável. Uma segunda solicitação foi aberta em 27 de Agosto de 1974. Desta vez, a IBM submeteu uma proposta candidata que foi considerada aceitável: um algoritmo de criptografia desenvolvido no período de 1973-1974 baseado num algoritmo mais antigo, o algoritmo Lucifer de Horst Feistel. A equipe da IBM envolvida no projeto do algoritmo incluía Feistel, Walter Tuchman, Don Coppersmith, Alan Konheim, Carl Meyer, Mike Matyas, Roy Adler, Edna Grossman, Bill Notz, Lynn Smith, and Bryant Tuckerman.

Segurança do DES

 

No DES existem 256 chaves possíveis de 56 bits (~ 7,2×1016)

Em 1993 foi feito um estudo de custo de uma máquina paralela para quebrar o DES:

Desafio

– Em 29 de janeiro de 1997, RSA Laboratories publicou um desafio de quebrar uma mensagem cifrada com DES

– Um consultor desenvolveu um programa de força bruta e o distribuiu pela Internet

– 96 dias depois a mensagem foi quebrada

– Mais de 70.000 máquinas foram usadas.

 

Triple Data Encryption Standard (3DES)

O 3DES(Triplo DES), sigla para Triple Data Encryption Standard é um padrão de criptografia baseado no algoritmo de criptografia DES desenvolvido pela IBM em 1974 e adotado como padrão em 1977. 3DES usa 3 chaves de 64 bits (o tamanho máximo da chave é de 192 bits, embora o comprimento atual seja de 56 bits). Os dados são encriptados com a primeira chave, decriptado com a segunda chave e finalmente encriptado novamente com a terceira chave. Isto faz do 3DES ser mais lento que o DES original, mas oferece maior segurança. Em vez de 3 chaves, podem ser utilizadas apenas 2, fazendo-se K1 = K3.

A variante mais simples do 3DES opera da seguinte forma: DES(k3;DES(k2;DES(k1;M))), onde M é o bloco de mensagem a ser criptografado e k1, k2 e k3 são chaves DES.

O 3DES é uma simples variação do DES, utilizando-o em três ciframentos suscessivos, podendo empregar um versão com duas ou com três chaves diferentes. É seguro, porém muito lento para ser um algoritmo padrão.

 

Advanced Encryption Standard (AES)

 

É uma cifra de bloco adotada como padrão de criptografia pelo governo dos Estados Unidos. Espera-se que seja utilizado em todo o mundo e analisada extensivamente, assim como foi seu predecessor, o Data Encryption Standard (DES). O AES foi anunciado pelo NIST (Instituto Nacional de Padrões e Tecnologia dos EUA) como U.S. FIPS PUB (FIPS 197) em 26 de Novembro de 2001, depois de 5 anos de um processo de padronização. Tornou-se um padrão efetivo em 26 de Maio de 2002. Em 2006, o AES já é um dos algoritmos mais populares usados para criptografia de chave simétrica.

O atual padrão de criptografia dos EUA se originou de um concurso lançado em 1997 pelo NIST (National Institute of Standards and Technology). Nesse momento havia a necessidade de escolher um algoritmo mais seguro e eficiente para substituir o DES (Data Encryption Standard), que apresentou fragilidades.

O novo algoritmo deveria atender a certos pré-requisitos como: ser divulgado publicamente e não possuir patentes; cifrar em blocos de 128 bits usando chaves de 128, 192 e 256 bits; ser implementado tanto em software quanto em hardware; ter maior rapidez em relação ao 3DES, uma variação recursiva do antigo padrão DES. Em 1998, na Primeira Conferencia dos Candidatos AES, apresentaram-se 15 candidatos e, um ano depois, na Segunda Conferencia, foram indicados 5 destes como finalistas: MARS, RC6, Rijndael, Serpent e Twofish. Em 2000, é conhecido o vencedor: Rijndael. O algoritmo, criado pelos belgas

Vincent Rijmen e Joan Daemen, foi escolhido com base em qualidades como segurança, flexibilidade, bom desempenho em software e hardware etc.

 

 

Funcionamento

 

No AES o numero de rodadas depende do tamanho da chave, sendo Nr igual a 10, 12 e 14, para Nk igual a 4, 6 e 8, respectivamente. O algoritmo possui uma chave principal e, a partir dela, são geradas Nr + 1 chaves, geralmente chamadas de chaves de rodada, pois cada uma será usada em uma rodada diferente. Além disso, a própria chave principal é usada antes da primeira rodada. A chave principal é alocada em uma matriz de 4 linhas e Nk colunas, e cada chave de rodada é agrupada da mesma maneira que o bloco de dados.

Em cada etapa, são executados substituições e transposições

Substituição de bytes (byte substitution);

Permutação de bytes entre grupos (shift rows);

Substituição usando matrizes dos grupos (mix collumns);

Execução de um XOR com a chave (add round key);

 

RC4

Em 1987Ron Rivest desenvolveu o algoritmo RC4 para a empresa RSA Data Security, Inc., líder mundial em algoritmos de criptografia. Foi, durante tempos, um segredo comercial muito bem guardado, muito popular, e utilizado largamente em software, como Lotus Notes, Apple Computer’s AOCE, Oracle Secure SQL, Internet Explorer, Netscape e Adobe Acrobat.

Sete anos depois, surge numa mailing list dedicada à criptografia (Cypherpunks) código alegadamente equivalente ao RC4. Utilizadores com cópias legais puderam confirmar a compatibilidade. É de realçar, no entanto, que esta não é a implementação comercial, e, como tal, é habitualmente referida como ARC4 (Alleged RC4).

As transformações neste algoritmo são lineares, não são necessários cálculos complexos, já que o sistema funciona basicamente por permutações e somas de valores inteiros, o que torna este algoritmo muito simples e rápido. Um raro exemplo de Barato, Rápido e Bom.

De uma forma geral, o algoritmo consiste em utilizar um array que a cada utilização tem os seus valores permutados, e misturados com a chave, o que provoca que seja muito dependente desta. Esta chave, utilizada na inicialização do array, pode ter até 256 bytes (2048 bits), embora o algoritmo seja mais eficiente quando é menor, pois a perturbação aleatória induzida no array é superior.

Aplicação e segurança

Em criptografia, RC4 (ou ARC4) é o algoritmo de criptografia de fluxo mais usado no software e utilizado nos protocolos mais conhecidos, como Secure Socket Layers (SSL) (para proteger o tráfego Internet) e WEP (para a segurança de redes sem fios. RC4 não é considerado um dos melhores sistemas criptográficos pelos adeptos da criptografia, e em algumas aplicações podem converter-se em sistemas muito inseguros. No entanto, alguns sistemas baseados em RC4 são seguros o bastante num contexto prático