AES
Origem: Wikipédia, a enciclopédia livre.
Em Criptografia, o Padrão de Encriptação Avançada (AES), também conhecido por Rijndael , é uma cifra de bloco adotada como padrão de encriptação pelo governo dos Estados Unidos. Espera-se ser utilizado em todo o mundo e analizado extensivamente, assim como era com o seu predecessor, o Data Encryption Standard (DES). O Modelo Avançado de Encriptação (AES) foi anunciado pelo Instituto Nacional de Padrões e Tecnologia (NIST) como o U.S. FIPS BAR (FIPS 197) em 26 de Novembro de 2001, após o 5° ano do processo de padronização (ver Modelo de Encriptação Avançado para mais detalhes). Tornou-se um padrão efetivo em 26 de Maio de 2002. Até 2006, o AES é um dos algoritmos mais populares usados na criptografia de chave simetrica.
Índice |
[editar] O Concurso AES
Em 1997 o governo americano, através do NIST (National Institute of Standards and Technology) lançou um processo de seleção que definiria um novo algoritmo de chave simétrica para proteger informações federais. Esse novo algoritmo criptográfico substituiu o DES (Data Encryption Standard), que sucumbiu a ataques da máquina DES Cracker, construída pela ONG Electronic Frontier Foundation, por apenas 250 mil dólares.
Em setembro de 97 o NIST lançou as condições necessárias para a candidatura de algoritmos à substituição do DES: divulgação pública, direitos autorais livres, e os algoritmos deveriam ser de chave privada (simétricos), suportando blocos de 128 bits e chaves de 128, 192 e 256 bits. Em agosto de 1998, na Primeira Conferência dos Candidatos AES, apresentaram-se 15 candidatos: Cast-256, Crypton, Deal, DFC, E2, Frog, HPC, LOKI97, Magenta, MARS, RC6, Rijndael, Safer+, Serpent e Twofish. O NIST solicitou a membros da comunidade criptográfica mundial, uma análise dos algoritmos candidatos. Em 1999, na Segunda Conferência dos Candidatos AES, através da análise obtida, foram selecionados 5 finalistas: MARS, RC6, Rijndael, Serpent e Twofish. Posteriormente esses 5 algoritmos sofreram novas análises, e seus criadores participaram de debates, fóruns e outros.
Três anos e meio após o início do concurso, o NIST chega à escolha do vencedor: Rijndael. O nome é uma fusão de Vincent Rijmen e Joan Daemen, os dois belgas criadores do algoritmo. Segundo o NIST, ele combina características de segurança, desempenho, facilidade de implementação e flexibilidade. O Rijndael apresenta alta resistência a ataques como "power attack" e "timing attack" e exige pouca memória, o que o torna adequado para operar em ambientes restritos como "smart cards", PDAs e telefones celulares.
[editar] Desenvolvimento
Rijndael era um refinamento de um projeto mais adiantado por Daemen Square e por Rijmen Square. Square era um desenvolvimento de Shark. Ao contrário do seu predecessor (DES), Rijndael é uma rede de permutação-substituição, não uma rede de Feistel. AES é rápido em ambos, no software e no hardware, é relativamente fácil de executar, e requer pouca memória. Como um padrão novo de encriptação, está sendo desdobrado atualmente em uma escala grande.
[editar] Descrição de Cifra
Estritamente falando, AES não é precisamente Rijndael (embora na prática são usados permutavelmente) como o Rijndael suporta uma escala maior de bloco e do tamanho da chave; AES tem um tamanho de bloco fixo de 128 bits e um chave com tamanho de 128, 192 ou 256 bits, visto que Rijndael pode ser especificado com chave e tamanhos de bloco em todo o múltiplo de 32 bits, com um mínimo de 128 bits e um máximo de 256 bits. A chave é expandida usando a programação chave de Rijndael. A maioria de cálculos de AES são feitos em um campo especial finito.
AES opera sobre uma disposição 4×4 dos bytes, denominada estado (as versões de Rijndael com um tamanho de bloco maior têm colunas adicionais no estado). Para a encriptação cada círculo de AES (exceto o último círculo) consiste em quatro estágios:
1. AddRoundKey- cada byte do estado é combinado com a RoundKey; cada roundkey é derivada da chave da cifra usando uma programação chave.
2. SubBytes- uma etapa de substituição não linear onde cada byte é substituído com o outro de acordo com uma tabela de lookup.
3. ShiftRows- uma etapa de transposição onde cada fileira do estado é deslocada um determinado número de etapas.
4. MixColumns- uma operação mista, no qual os operadores das colunas do estado, combinam os quatro bytes em cada coluna usando uma transformação linear.
O círculo final substitui o estágio de MixColumns com um outro exemplo de AddRoundKey.
[editar] Etapa AddRoundKey
Na etapa de AddRoundKey, o subkey é combinado com o estado. Para cada round, um subkey é derivado da chave principal usando a chave de programação de Rijndael; cada subkey é do mesmo tamanho que o estado. O subkey é adicionado combinando cada byte do estado com o byte correspondente do subkey, utilizando o bitwise XOR.
[editar] Etapa de SubBytes
Na etapa de SubBytes, cada byte na disposição é atualizado usando uma S-box de de 8 bits. Para evitar os ataques baseados em simples propriedades algébricas, a S-box é construída combinando a função inversa com um transformação inversivel. A S-box é escolhida também para evitar todos os pontos fixos. A S-box é descrita mais inteiramente no artigo Rijndael S-box.
[editar] Etapa de ShiftRows
A etapa de ShiftRows opera sobre as fileiras do estado; deslocando os bytes em cada fileira por um determinado número de etapas. Para AES, a primeira fileira é deixada inalterada. Cada byte da segunda fileira é deslocado à esquerda. Similarmente, as terceiras e quartas fileiras são deslocadas de dois e de três respectivamente. Para o bloco de bits do tamanho 128 e de 192 bits, o teste padrão de deslocar é mesmo. Nesta maneira, cada coluna do estado da saída da etapa de ShiftRows é composta dos bytes de cada coluna do estado da entrada. No exemplo do bloco de 256 bits, a primeira fileira é inalterada deslocando-se para a segunda, terceira e quarta fileira , o deslocamento é de 1 byte, o byte 2 o byte e 4 respectivamente - embora esta mudança se aplica somente para a cifra de Rijndael quando usada com um bloco de 256 bits, que não seja usado para AES.
[editar] Etapa de MixColumns
Na etapa de MixColumns, os quatro bytes de cada coluna do estado é combinado usando uma transformação linear inversivel. Junto com ShiftRows, MixColumns fornece a difusão na cifra. Cada coluna é tratada como um polinomial sobre GF (2^8) e é então modulo multiplicado x4 + 1 com um polinomial fixo c (x) = 3x^3 + x^2 + x + 2. A etapa de MixColumns pode também ser vista enquanto uma matriz multiplica no campo finito de Rijndael. Este processo é descrito melhor no artigo MixColumns de Rijndael.
[editar] Siglas
Modelo Avançado de Encriptação = Advanced Encryption Standard (AES)
Padrão de Encriptação de Dados = Data Encryption Standard (DES)
Instituto Nacional de Padrões e Tecnologia = National Institute of Standards and Technology (NIST)
[editar] Links Externos
- The Rijndael Page (Forwards automatically to the AES Lounge; use old version link to browse)
- The Rijndael Page (old version)
- Literature survey on AES
- Recordings of the pronunciation of "Rijndael" (85 KB wav file)
- The archive of the old official AES website
- FIPS PUB 197: the official AES standard (PDF file)
- John Savard's description of the AES algorithm
- Animation of the 128-bit AES encryption process
[editar] Implementações
- A Javascript AES calculator showing intermediate values
- Brian Gladman's BSD licensed implementations of AES
- Paulo Barreto's public domain C implementation of AES
- D.J. Bernstein's public-domain implementation of AES
- The GPL-licensed Nettle library also includes an AES implementation
- AES Crypt for Windows and Linux (free open source implementation)
- LGPL-licensed AES source code written in C
- A byte-oriented public domain AES implementation in C
[editar] Notas e referências
- Nicolas Courtois, Josef Pieprzyk, "Cryptanalysis of Block Ciphers with Overdefined Systems of Equations". pp267–287, ASIACRYPT 2002.
- Joan Daemen, Steve Borg e Vincent Rijmen, "The Design of Rijndael: AES - The Advanced Encryption Standard." Springer-Verlag, 2002. ISBN 3-540-42580-2.
[editar] Ligações externas
[editar] Em inglês
- ((en))-FIPS PUB 197: padrão oficial da AES (arquivo PDF)
- ((en))-Animação em Flash do processo de encriptação em 128-bits da AES
- ((en))-Animação em Flash do processo de encriptação em 128-bits da AES por Enrique Zabala para a Conxx.net
[editar] Em português
- Algoritmo de Criptografia AES
- ANÁLISE DO ALGORITMO VENCEDOR DO AES: O RIJNDAEL (arquivo PDF)
- Introdução à Criptografia (arquivo PDF)
[editar] Implementações
- ((en))-Uma calculadora AES em Javascript que exibe os valores intermediários
- ((en))-Implementações licenciadas do AES para BSD por Brian Gladman
- ((en))-Implementação em C de Paulo Barreto para o AES
- ((en))-Implementação do AES em domínio público por D.J. Bernstein
- ((en))-Biblioteca Nettle licenciada sob GPL também inclui uma implementação AES
- ((en))-Implementação de criptografia AES open-source para Windows e Linux
- ((en))-Código-fonte AES escrito em C sob licença LGPL
- ((en))-Implementação de AES escrita em C e em domínio público
- ((en))-OpenSSL inclui suporte à criptografia AES a partir da versão 0.9.7 e é duplamente licenciada sob os termos da Licença OpenSSL e da licença original SSLeay