Advanced Encryption Standard
O Padrão de Criptografia Avançada, também conhecido pelo seu nome original Rijndael}), é uma especificação para a criptografia de dados eletrônicos estabelecida pelo National Institute of Standards and Technology (NIST) dos EUA em 2001.
Imagem: Xurble · BY · Openverse
O Padrão de Criptografia Avançada (AES) é definido em cada um dos seguintes documentos:
Imagem: Mercurish · BY-SA · Openverse
O AES baseia-se em um princípio de design conhecido como rede de substituição-permutação [en] e é eficiente tanto em software quanto em hardware. Ao contrário de seu predecessor DES, o AES não usa uma rede de Feistel. O AES é uma variante do Rijndael, com um tamanho de bloco [en] fixo de 128 bits e um tamanho da chave de 128, 192 ou 256 bits. Em contraste, o Rijndael per se é especificado com tamanhos de bloco e chave que podem ser qualquer múltiplo de 32 bits, com um mínimo de 128 e um máximo de 256 bits. A maioria dos cálculos do AES é feita em um corpo finito [en] específico. O AES opera em uma matriz de 4 × 4 em ordem de coluna de 16 bytes b0, b1, ..., b15 denominada estado (state):[nota 3] [ b 0 b 4 b 8 b 12 b 1 b 5 b 9 b 13 b 2 b 6 b 10 b 14 b 3 b 7 b 11 b 15 ] {\displaystyle {\begin{bmatrix}b_{0}&b_{4}&b_{8}&b_{12}\\b_{1}&b_{5}&b_{9}&b_{13}\\b_{2}&b_{6}&b_{10}&b_{14}\\b_{3}&b_{7}&b_{11}&b_{15}\end{bmatrix}}}
A etapa SubBytes
Na etapa SubBytes, cada byte ai,j na matriz de estado é substituído por um SubByte S(ai,j) usando uma caixa de substituição [en] (S-box) de 8 bits. Antes da rodada 0, a matriz de estado é simplesmente o texto simples/entrada. Esta operação fornece a não linearidade na cifra. A S-box usada é derivada do inverso multiplicativo sobre GF(28), conhecido por ter boas propriedades de não linearidade. Para evitar ataques baseados em propriedades algébricas simples, a S-box é construída combinando a função inversa com uma transformação afim invertível. A S-box também é escolhida para evitar quaisquer pontos fixos (e, portanto, é um desarranjo), ou seja, S(ai,j) ≠ ai,j, e também quaisquer pontos fixos opostos, ou seja, S(ai,j) ⊕ ai,j ≠ FF16. Ao realizar a descriptografia, a etapa InvSubBytes (o inverso de SubBytes) é usada, o que requer primeiro tomar o inverso da transformação afim e depois encontrar o inverso multiplicativo.
A etapa ShiftRows
A etapa ShiftRows opera nas linhas do estado; ela desloca ciclicamente os bytes em cada linha por um certo deslocamento. Para o AES, a primeira linha permanece inalterada. Cada byte da segunda linha é deslocado um para a esquerda. Da mesma forma, a terceira e a quarta linhas são deslocadas por deslocamentos de dois e três, respectivamente.[nota 4] Dessa forma, cada coluna do estado de saída da etapa ShiftRows é composta por bytes de cada coluna do estado de entrada. A importância desta etapa é evitar que as colunas sejam criptografadas independentemente, caso em que o AES degeneraria em quatro cifras de bloco independentes.
A etapa MixColumns
Na etapa MixColumns, os quatro bytes de cada coluna do estado são combinados usando uma transformação linear invertível. A função MixColumns recebe quatro bytes como entrada e gera quatro bytes, onde cada byte de entrada afeta todos os quatro bytes de saída. Juntamente com ShiftRows, MixColumns fornece difusão [en] na cifra. Durante esta operação, cada coluna é transformada usando uma matriz fixa (matriz multiplicada à esquerda pela coluna dá o novo valor da coluna no estado): [ b 0 , j b 1 , j b 2 , j b 3 , j ] = [ 2 3 1 1 1 2 3 1 1 1 2 3 3 1 1 2 ] [ a 0 , j a 1 , j a 2 , j a 3 , j ] 0 ≤ j ≤ 3 {\displaystyle {\begin{bmatrix}b_{0,j}\\b_{1,j}\\b_{2,j}\\b_{3,j}\end{bmatrix}}={\begin{bmatrix}2&3&1&1\\1&2&3&1\\1&1&2&3\\3&1&1&2\end{bmatrix}}{\begin{bmatrix}a_{0,j}\\a_{1,j}\\a_{2,j}\\a_{3,j}\end{bmatrix}}\qquad 0\leq j\leq 3}
A etapa AddRoundKey
Na etapa AddRoundKey, a subchave é combinada com o estado. Para cada rodada, uma subchave é derivada da chave principal usando o escalonamento de chaves do Rijndael [en]; cada subchave tem o mesmo tamanho que o estado. A subchave é adicionada combinando o estado com o byte correspondente da subchave usando XOR bit a bit.
Otimização da cifra
Em sistemas com palavras de 32 bits ou maiores, é possível acelerar a execução desta cifra combinando as etapas SubBytes e ShiftRows com a etapa MixColumns, transformando-as em uma sequência de consultas de tabela. Isso requer quatro tabelas de 32 bits com 256 entradas (ocupando juntas 4096 bytes). Uma rodada pode então ser realizada com 16 operações de consulta de tabela e 12 operações de ou-exclusivo (XOR) de 32 bits, seguidas por quatro operações de ou-exclusivo de 32 bits na etapa AddRoundKey. Alternativamente, a operação de consulta de tabela pode ser realizada com uma única tabela de 32 bits com 256 entradas (ocupando 1024 bytes) seguida por operações de rotação circular.
Imagem: Thirdeyetechbd · BY-SA · Openverse
A National Security Agency (NSA) revisou todos os finalistas do AES, incluindo o Rijndael, e declarou que todos eles eram seguros o suficiente para dados não classificados do governo dos EUA. Em junho de 2003, o governo dos EUA anunciou que o AES poderia ser usado para proteger informações classificadas: O design e a força de todos os comprimentos de chave do algoritmo AES (ou seja, 128, 192 e 256) são suficientes para proteger informações classificadas até o nível SECRETO (SECRET). Informações ULTRASSECRETAS (TOP SECRET) exigirão o uso dos comprimentos de chave de 192 ou 256. A implementação do AES em produtos destinados a proteger sistemas de segurança nacional e/ou informações deve ser revisada e certificada pela NSA antes de sua aquisição e uso. O AES possui 10 rodadas para chaves de 128 bits, 12 rodadas para chaves de 192 bits e 14 rodadas para chaves de 256 bits. Orientações mais recentes da NSA, no entanto, permitem que informações classificadas sejam criptografadas apenas com chaves de 256 bits. Chaves de 128 e 192 bits não são mais suficientes para a criptografia de informações classificadas.
Ataques conhecidos
Para criptógrafos, uma "quebra" criptográfica é qualquer coisa mais rápida que um ataque de força bruta – ou seja, realizar uma tentativa de descriptografia para cada chave possível em sequência (ver Criptoanálise § Recursos computacionais necessários). Uma quebra pode, portanto, incluir resultados que são inviáveis com a tecnologia atual. Apesar de serem impraticáveis, quebras teóricas podem, às vezes, fornecer insights sobre padrões de vulnerabilidade. O maior ataque de força bruta bem-sucedido publicamente conhecido contra um algoritmo de criptografia de cifra de bloco amplamente implementado foi contra uma chave RC5 de 64 bits pelo distributed.net em 2006.
Ataques de canal lateral
Ataques de canal lateral não atacam a cifra como uma caixa preta, e, portanto, não estão relacionados à segurança da cifra conforme definida no contexto clássico, mas são importantes na prática. Eles atacam implementações da cifra em sistemas de hardware ou software que inadvertidamente vazam dados. Existem vários ataques conhecidos desse tipo em várias implementações do AES. Em abril de 2005, D. J. Bernstein anunciou um ataque de temporização de cache que ele usou para quebrar um servidor personalizado que usava a criptografia AES do OpenSSL. O ataque exigiu mais de 200 milhões de textos simples escolhidos. O servidor personalizado foi projetado para fornecer o máximo de informações de temporização possível (o servidor relata o número de ciclos de máquina levados pela operação de criptografia). No entanto, como Bernstein apontou, "reduzir a precisão dos registros de data e hora do servidor, ou eliminá-los das respostas do servidor, não impede o ataque: o cliente simplesmente usa temporizações de ida e volta com base em seu relógio local e compensa o aumento do ruído calculando a média sobre um número maior de amostras."
Ataques quânticos
O AES-256 é considerado resistente a ataques quânticos, pois tem resistência quântica semelhante à resistência do AES-128 contra ataques tradicionais, não quânticos, em 128 bits de segurança [en]. O AES-192 e o AES-128 não são considerados resistentes a ataques quânticos devido aos seus tamanhos de chave menores. O AES-192 tem uma força de 96 bits contra ataques quânticos e o AES-128 tem 64 bits de força contra ataques quânticos, tornando ambos inseguros.
O Programa de Validação de Módulo Criptográfico [en] (CMVP) é operado em conjunto pela Divisão de Segurança de Computadores do National Institute of Standards and Technology (NIST) do governo dos Estados Unidos e pelo Communications Security Establishment (CSE) do governo do Canadá. O uso de módulos criptográficos validados pelo NIST FIPS 140-2 [en] é exigido pelo governo dos Estados Unidos para criptografia de todos os dados que tenham uma classificação de Sensível nas não classificado [en] (SBU) ou superior. Do NSTISSP #11, Política Nacional que Rege a Aquisição de Garantia da Informação: "Produtos de criptografia para proteção de informações classificadas serão certificados pela NSA, e produtos de criptografia destinados a proteger informações sensíveis serão certificados de acordo com o NIST FIPS 140-2." O governo do Canadá também recomenda o uso de módulos criptográficos validados pelo FIPS 140 [en] em aplicações não classificadas de seus departamentos.
Os vetores de teste são um conjunto de cifras conhecidas para uma determinada entrada e chave. O NIST distribui a referência de vetores de teste AES como Vetores de Teste de Resposta Conhecida (KAT) AES.[nota 5]
Alta velocidade e baixos requisitos de RAM foram alguns dos critérios do processo de seleção do AES. Como o algoritmo escolhido, o AES teve bom desempenho em uma ampla variedade de hardware, de cartões inteligentes (smart cards) de 8 bits a computadores de alto desempenho. Em um Pentium Pro, a criptografia AES requer 18 ciclos de clock por byte (cpb), equivalente a uma taxa de transferência de cerca de 11 MiB/s para um processador de 200 MHz. Em CPUs Intel Core e AMD Ryzen que suportam extensões do conjunto de instruções AES-NI [en], a taxa de transferência pode ser de múltiplos GiB/s. Em uma CPU Intel Westmere [en], a criptografia AES usando AES-NI leva cerca de 1,3 cpb para AES-128 e 1,8 cpb para AES-256.


