Advanced Encryption Standard
Esta página ou seção foi marcada para revisão devido a incoerências ou dados de confiabilidade duvidosa.Fevereiro de 2008) ( |

Em Criptografia, o Advanced Encryption Standard (AES, ou Padrão de Criptografia Avançada, em português), também conhecido por Rijndael, é 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 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 do governo federal. Este novo algoritmo criptográfico substituiu o DES (Data Encryption Standard), que havia sido quebrado pela máquina DES Cracker, construída pela ONG Electronic Frontier Foundation com apenas 250 mil dólares.
Em setembro de 1997 o NIST indicou as condições necessárias para a candidatura de algoritmos para substituir o DES: divulgação pública, direitos autorais livres, e os algoritmos deveriam ser de chave privada (simétricos) e suportar blocos de 128 bits e chaves de 128, 192 e 256 bits. Em agosto de 1998, na Primeira Conferência dos Candidatos ao 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 aos 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, etc.
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 as 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.
Desenvolvimento
O Rijndael era um refinamento do Square, um projeto anterior de Daemen e Rijmen. O Square, por sua vez, evoluiu do Shark. Ao contrário do seu predecessor DES, o Rijndael é uma rede de permutação-substituição, não uma rede de Feistel. O AES é rápido tanto em software quanto em hardware, é relativamente fácil de executar e requer pouca memória. Apesar de ser um padrão novo de criptografia, está sendo atualmente implantado em grande escala.
Descrição de Cifra
Estritamente falando, o AES não é exatamente o Rijndael (embora na prática possam ser permutados) já que o Rijndael suporta uma maior gama de tamanhos do bloco e da chave. O AES tem um tamanho de bloco fixo em 128 bits e uma chave com tamanho de 128, 192 ou 256 bits, enquanto o Rijndael pode ser especificado com chaves e tamanhos de bloco de qualquer múltiplo de 32 bits, com um mínimo de 128 bits e um máximo de 256 bits.
A chave é expandida usando-se o agendamento de chaves do Rijndael. A maioria dos cálculos do AES é feita em um campo finito próprio.
O AES opera sobre um arranjo bidimensional de bytes com 4x4 posições, denominado de estado (as versões do Rijndael com um tamanho de bloco maior têm colunas adicionais no estado). Para criptografar, cada turno do AES (exceto o último) consiste em quatro estágios:
1. AddRoundKey- cada byte do estado é combinado com a subchave própria do turno (RoundKey); cada subchave é derivada da chave principal usando o algoritmo de agendamento de chaves.
2. SubBytes- é uma etapa de substituição não linear onde cada byte é substituído por outro de acordo com uma tabela de referência.
3. ShiftRows- é uma etapa de transposição onde cada fileira do estado é deslocada de um determinado número de posições.
4. MixColumns- é uma operação de mescla que opera nas colunas do estado e combina os quatro bytes de cada coluna usando uma transformação linear.
O turno final substitui o estágio de MixColumns por um novo estágio de AddRoundKey.
Etapa AddRoundKey

Na etapa de AddRoundKey, a sub-chave é combinada com o estado. Para cada turno, uma sub-chave é derivada da chave principal usando o agendamento de chaves do Rijndael; cada sub-chave é do mesmo tamanho que o estado. A sub-chave é somada combinando cada byte do estado com o byte correspondente do sub-chave, utilizando a operação XOR bit a bit.
Etapa de SubBytes

Na etapa de SubBytes, cada byte no arranjo é atualizado usando uma S-box de 8 bits. Para evitar os ataques baseados em propriedades algébricas simples, a S-box é construída combinando-se uma função inversora com uma transformação afim invertível. A S-box é escolhida também de forma a evitar qualquer ponto fixo.
Etapa de ShiftRows

A etapa de ShiftRows opera sobre as linhas do estado, deslocando os bytes em cada linha de um determinado número de posições. No AES, a primeira linha fica inalterada. Cada byte da segunda linha é deslocado à esquerda de uma posição. Similarmente, a terceira e quarta fileiras são deslocadas de duas e de três posições respectivamente. Para o bloco de bits de tamanho 128 e 192 bits, o padrão de deslocamento é mesmo. Desta forma, cada coluna do estado ao fim da etapa de ShiftRows fica composta por bytes de todas as coluna do estado da entrada.
No caso de blocos de 256 bits, a primeira fileira fica inalterada, deslocando-se a segunda, terceira e quarta fileiras. O deslocamento é de 1 , 2 e 4 bytes respectivamente - embora esta mudança se aplique somente ao Rijndael quando usado com um bloco de 256 bits, o que não ocorre no AES.
Etapa de MixColumns

Na etapa de MixColumns, os quatro bytes de cada coluna do estado são combinados usando uma transformação linear invertível. Junto com o ShiftRows, o MixColumns fornece difusão à cifra. Cada coluna é tratada como um polinômio em e é então multiplicado em módulo pelo polinômio fixo . A etapa de MixColumns pode também ser vista como uma multiplicação matricial no campo finito de Rijndael.
Notas e referências
- Joan Daemen, Steve Borg e Vincent Rijmen, "The Design of Rijndael: AES - The Advanced Encryption Standard." Springer-Verlag, 2002. ISBN 3-540-42580-2.
Ligações externas
Em inglês
- «FIPS PUB 197: padrão oficial da AES» (PDF) (em inglês) (arquivo PDF)
- «Animação em Flash do processo de criptografia em 128-bits da AES» (em inglês)
- «Animação em Flash do processo de criptografia em 128-bits da AES por Enrique Zabala para a Conxx.net» (em inglês)
Em português
- Animação Funcional(expansão de chave/cifração) em Flash do Algoritmo de Criptografia AES
- Algoritmo de Criptografia AES
- ANÁLISE DO ALGORITMO VENCEDOR DO AES: O RIJNDAEL (arquivo PDF)
- Introdução à Criptografia (arquivo PDF)
Implementações
- «Uma calculadora AES»
- «Uma calculadora AES em Javascript que exibe os valores intermediários» (em inglês)
- «Implementações licenciadas do AES para BSD por Brian Gladman» (em inglês)
- «Implementação em C de Paulo Barreto para o AES» (em inglês)
- «Implementação do AES em domínio público por D.J. Bernstein» (em inglês)
- «Biblioteca Nettle licenciada sob GPL também inclui uma implementação AES» (em inglês)
- «Implementação de criptografia AES open-source para Windows e Linux» (em inglês)
- «Código-fonte AES escrito em C sob licença LGPL» (em inglês)
- «Implementação de AES escrita em C e em domínio público» (em inglês)
- (em inglês) [[OpenSSL [OpenSSL] Verifique valor
|url=
(ajuda) Em falta ou vazio|título=
(ajuda)] 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