Advanced Encryption Standard

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Searchtool.svg
Esta página ou secção foi marcada para revisão, devido a inconsistências e/ou dados de confiabilidade duvidosa (desde fevereiro de 2008). Se tem algum conhecimento sobre o tema, por favor, verifique e melhore a consistência e o rigor deste artigo. Considere utilizar {{revisão-sobre}} para associar este artigo com um WikiProjeto e colocar uma explicação mais detalhada na discussão.
Advanced Encryption Standard - AES

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[editar | editar código-fonte]

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[editar | editar código-fonte]

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[editar | editar código-fonte]

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 escalonamento de chaves do Rijndael. A maioria dos cálculos do AES é feita em um corpo 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 escalonamento 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[editar | editar código-fonte]

Na etapa de AddRoundKey, a sub-chave é combinada com o estado.

Na etapa de AddRoundKey, a sub-chave é combinada com o estado. Para cada turno, uma sub-chave é derivada da chave principal usando o escalonamento 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[editar | editar código-fonte]

Na etapa de SubBytes, cada byte no arranjo é atualizado usando uma S-box de 8 bits.

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[editar | editar código-fonte]

A etapa de ShiftRows opera sobre as linhas do estado; deslocando ciclicamente os bytes em cada linha de um determinado número de posições.

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[editar | editar código-fonte]

Na etapa de MixColumns, os quatro bytes de cada coluna do estado são combinados usando uma transformação linear invertível.

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 com coeficientes em GF(2^8) e é então multiplicado em módulo x^4 + 1 pelo polinômio fixo c(x) = 3x^3 + x^2 + x + 2.

A etapa de MixColumns pode também ser vista como uma multiplicação matricial no corpo finito de Rijndael.

Notas e referências[editar | editar código-fonte]

  • 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[editar | editar código-fonte]

Em inglês[editar | editar código-fonte]

Em português[editar | editar código-fonte]

Implementações[editar | editar código-fonte]