Nota: Se procura pela empresa multinacional AES, vejaAES Corporation.
Esta página ou seção foi marcada para revisão devido a incoerências ou dados de confiabilidade duvidosa. Se tem algum conhecimento sobre o tema, por favor, verifique emelhore a coerência e o rigor deste artigo. Considere colocar uma explicação mais detalhada nadiscussão.(Fevereiro de 2008)
Foram publicados ataques que são computacionalmente mais rápidos do que umataque de força bruta completo, embora nenhum deles, em 2013, seja computacionalmente viável.[1] Para oAES-128, a chave pode ser recuperada com uma complexidade computacional de 2126,1 usando o ataque biclique. Para ataques biclique emAES-192 eAES-256, as complexidades computacionais são, respectivamente, de 2189,7 e 2254,4.Ataques de chaves relacionadas podem, respectivamente, "quebrar" oAES-256 e oAES-192 com complexidades de 299,5 e 2176 em tempo e dados.[2]
Opadrão de criptografia avançada - advanced encryption standard (AES), também conhecido por seu nome originalRijndael,[3] é uma especificação para a criptografia de dados eletrônicos estabelecida pelo instituto nacional de padrões e tecnologia dos E.U.A. (NIST) em 2001.[4]
OAES é umsubconjunto dacifra de blocoRijndael[3] desenvolvida por dois criptógrafosbelgas,Vincent Rijmen e Joan Daemen, que submeteram uma proposta[5] aoNIST durante o processo de seleção doAES.[6] ARijndael é uma família de cifras com diferentes tamanhos de chave e bloco. Para oAES, oNIST selecionou três membros da famíliaRijndael, cada um com um tamanho de bloco de 128bits, mas três comprimentos de chave diferentes: 128, 192 e 256bits.
Nos Estados Unidos da América, oAES foi anunciado peloNIST comoU.S.FIPS PUB 197 (FIPS 197) em 26 de novembro de 2001.[4] Este anúncio seguiu um processo de padronização de cinco anos no qual quinzedesigns concorrentes foram apresentados e avaliados, antes que a cifra deRijndael fosse selecionada como a mais adequada (consulte o processo de padrão de criptografia avançada para obter mais detalhes).
OAES está incluído no padrãoISO/IEC 18033-3. OAES tornou-se efetivo como um padrão do governo federal dos E.U.A. em 26 de maio de 2002, após a aprovação dosecretário de comércio dos E.U.A. OAES está disponível em muitos pacotes de criptografia diferentes e é a primeira (e única)cifra acessível publicamente aprovada pelaagência de segurança nacional dos E.U.A. (NSA) para informações ultrassecretas quando usada em um módulo criptográfico aprovado pelaNSA (consulteSegurança doAES, abaixo)
OAES é baseado em um princípio dedesign conhecido como rede de substituição-permutação, e é eficiente tanto emsoftware quanto emhardware.[9] Ao contrário de seu predecessor, oDES, oAES não usa umacifra Feistel. OAES é uma variante do Rijndael, com um tamanho de bloco fixo de 128bits e um tamanho de chave de 128, 192 ou 256bits. Em contraste, Rijndael "per se" é especificado com tamanhos de bloco e chave que podem ser qualquer múltiplo de 32bits, com um mínimo de 128 e um máximo de 256bits.
Por exemplo, 16 bytes, são representados como este arranjo bidimensional:
O tamanho de chave usado para uma cifraAES especifica o número de rodadas de transformação que convertem a entrada, chamada detexto simples, na saída final, chamada de texto cifrado. O número de rodadas é o seguinte:
10 rodadas para chaves de 128 bits.
12 rodadas para chaves de 192 bits.
14 rodadas para chaves de 256 bits.
Cada rodada consiste em várias etapas de processamento, incluindo uma que depende da própria chave de criptografia. Um conjunto de rodadas reversas é aplicado para transformar o texto cifrado de volta ao texto plano original usando a mesma chave de criptografia.
KeyExpansion – as chaves das rodadas são derivadas da chave de cifragem usando o planejamento de chaveAES. OAES requer uma rodada, de bloco, de chave de 128bits separada para cada rodada mais um.
Adição da chave da rodada inicial:
AddRoundKey – cadabyte do estado é combinado com umbyte da chave da rodada usandooperaçõesbit abit xor.
9, 11 ou 13 rodadas:
SubBytes – uma etapa de substituição nãolinear onde cadabyte é substituído por outro de acordo com uma tabela de pesquisa.
ShiftRows – uma etapa de transposição em que as três últimas linhas do estado são deslocadas ciclicamente em um certo número de etapas.
MixColumns – uma operação de mistura linear que opera nas colunas do estado, combinando os quatrobytes em cada coluna.
AddRoundKey
Rodada final (fazendo 10, 12 ou 14 rodadas no total):
Na faseSubBytes, cadabyte no estado é substituído por sua entrada em uma tabela de pesquisa fixa de 8bits,S;bij =S(aij).
Na etapaSubBytes, cadabyte no arranjo deestado é substituído por umSubByte usando uma caixa de substituição de 8bits. Esta operação fornece a não linearidade nacifra. A caixa de substituição usada é derivada doinverso multiplicativo sobreGF(28), conhecido por ter boas propriedades de não linearidade. Para evitar ataques baseados em propriedades algébricas simples, a caixa de substituição é construída combinando afunção inversa com umatransformação afim invertível. A caixa de substituição também é escolhida para evitar quaisquer pontos fixos (e assim é umdesarranjo), ou seja,, e também quaisquer pontos fixos opostos, ou seja,. Ao realizar a descriptografia, a etapaInvSubBytes (o inverso deSubBytes) é usada, o que requer primeiro pegar o inverso da transformação afim e então encontrar o inverso multiplicativo.
Na etapaShiftRows,bytes em cada linha de estado são deslocados ciclicamente para a esquerda. O número de casas em que cadabyte é deslocado difere incrementalmente para cada linha.
A etapaShiftRows opera nas filas de estado. Ela desloca ciclicamente osbytes em cada linha por um certooffset. Para oAES, a primeira linha permanece inalterada. Cadabyte da segunda linha é deslocado um para a esquerda. Da mesma forma, a terceira e a quarta linha são deslocadas por deslocamentos de duas e três, respectivamente.[nota 4] Desta forma, cada coluna de saída de estado da etapaShiftRows é composta debytes de cada coluna de entrada de estado. A importância desta etapa é evitar que as colunas sejam criptografadas de forma independente, caso em que oAES degeneraria em quatro cifras de bloco independentes.
Na etapaMixColumns, cada coluna de estado é multiplicada por um polinômio fixo.
Na etapaMixColumns, os quatrobytes de cada coluna de estado são combinados usando umatransformação linear invertível. A funçãoMixColumns leva quatrobytes como entrada e produz quatrobytes, onde cadabyte de entrada afeta todos os quatrobytes de saída. Junto com oShiftRows, o MixColumns fornece difusão na cifra.
Durante esta operação, cada coluna é transformada usando uma matriz fixa (a matriz multiplicada à esquerda pela coluna fornece o novo valor da coluna no estado):
A multiplicação da matriz é composta pela multiplicação e adição das entradas. As entradas sãobytes tratados como coeficientes de polinômio de ordem. A adição é simplesmenteXOR. A multiplicação é um polinômio modulo irredutível. Se processadobit abit, então, após o deslocamento, um condicionalXOR com 1B16 deve ser executado se o valor deslocado for maior que FF16 (o estouro deve ser corrigido pela subtração do polinômio gerador). Estes são casos especiais da multiplicação usual em.
Em um sentido mais geral, cada coluna é tratada como um polinômio sobre e é então o módulo multiplicado com um polinômio fixo. Os coeficientes são exibidos em seushexadecimais equivalentes da representação binária de polinômios de bits de. A etapeMixColumns também pode ser vista como uma multiplicação pela matrizMDS particular mostrada nocampo finito. Este processo é descrito mais detalhadamente no artigoRijndael MixColumns.
Na etapaAddRoundKey, cadabyte de estado é combinado com umbyte da subchave da rodada usando a operaçãoXOR (⊕).
Na etapaAddRoundKey, a subchave é combinada com o estado. Para cada rodada, uma subchave é derivada dachave principal usando o planejamento de chave AES e cada subchave tem o mesmo tamanho que o estado. A subchave é adicionada combinando cadabyte de estado com obyte correspondente da subchave usando oXORbit abit.
Em sistemas com palavras de 32bits ou mais, é possível acelerar a execução desta cifra combinando as etapasSubBytes e ShiftRows com a etapaMixColumns, transformando-as em uma sequência de pesquisas de tabela. Isso requer quatro tabelas de 32bits de 256 entradas (ocupando, juntas, 4096bytes). Uma rodada pode então ser realizada com 16 operações de pesquisa de tabela e 12 operaçõesXOR de 32bits, seguidas por quatro operaçõesXOR de 32bits na etapaAddRoundKey.[10] Como alternativa, a operação de pesquisa de tabela pode ser realizada com uma única tabela de 32bits de 256 entradas (ocupando 1024bytes) seguida por operações de rotação circular.
Usando uma abordagem orientada abytes, é possível combinar as etapasSubBytes,ShiftRows eMixColumns em uma operação de rodada única.[11]
AAgência de Segurança Nacional (National Security Agency -NSA) analisou todos os finalistas doAES, incluindoRijndael, e afirmou que todos eles eram seguros o suficiente para dados não classificados do governo dos Estados Unidos da América. Em junho de 2003, o governo dos EUA anunciou que oAES poderia ser usado para protegerinformações classificadas:
O projeto e a força de todos os comprimentos de chave do algoritmoAES (ou seja, 128, 192 e 256) são suficientes para proteger as informações classificadas até o nívelsecreto. As informaçõesultrassecretas exigirão o uso de chaves de comprimento 192 ou 256. A implementação deAES em produtos destinados à proteção de sistemas e/ou informações de segurança nacional deve ser revisada e certificada pelaNSA antes de sua aquisição e uso.[12]
OAES tem 10 rodadas para chaves de 128bits, 12 rodadas para chaves de 192bits e 14 rodadas para chaves de 256bits.
Em 2006, os ataques mais conhecidos foram em 7 rodadas para chaves de 128bits, 8 rodadas para chaves de 192bits e 9 rodadas para chaves de 256bits.[13]
O programa de validação de módulo criptográfico (CMVP) é operado, em conjunto, pela divisão de segurança informática do governo dos Estados Unidosinstituto nacional de padrões e tecnologia (NIST) e oestabelecimento de segurança de comunicações (CSE) do governo do Canadá. O uso de módulos criptográficos validados paraNIST FIPS 140-2 é exigido pelo governo dos Estados Unidos para a criptografia de todos os dados que tenham uma classificação de "sensível, mas não classificado (SBU) ou superior". DoNSTISSP #11, política nacional que rege a aquisição de garantia de informações: “Os produtos de criptografia para proteção de informações classificadas serão certificados pelaNSA e os produtos de criptografia destinados à proteção de informações confidenciais serão certificados de acordo com oNIST FIPS 140-2.”[14]
O governo do Canadá também recomenda o uso de módulos criptográficos validadosFIPS 140 em aplicações não classificadas de seus departamentos.
Embora a publicaçãoNIST 197 ("FIPS 197") seja o documento único que cobre o algoritmoAES, os fornecedores normalmente abordam oCMVP sob oFIPS 140 e pedem para ter vários algoritmos (como oDES triplo ou oSHA-1) validados ao mesmo tempo. Portanto, é raro encontrar módulos criptográficos que sejam validados exclusivamente peloFIPS 197 e o próprioNIST, geralmente, não se preocupa em listar os módulos validados peloFIPS 197 separadamente em seu site público. Em vez disso, a validaçãoFIPS 197 é, normalmente, listada apenas como uma notação "FIPS aprovado:AES" (com um número de certificadoFIPS 197 específico) na lista atual de módulos criptográficos validadosFIPS 140.
O programa de validação de algoritmo criptográfico (CAVP)[15] permite a validação independente da implementação correta do algoritmoAES. A validação bem-sucedida resulta em ser listado na página de validaçõesNIST.[16] Este teste é um pré-requisito para a validação do móduloFIPS 140-2 descrito abaixo. No entanto, a validaçãoCAVP bem-sucedida não implica de forma alguma que o módulo criptográfico que implementa o algoritmo seja seguro. Um módulo criptográfico sem validaçãoFIPS 140-2 ou aprovação específica daNSA não é considerado seguro pelo governo dosEUA e não pode ser usado para proteger dados governamentais.[14]
A validação do FIPS 140-2 é um desafio técnico e fiscal.[17] Existe uma bateria padronizada de testes, bem como um elemento de revisão do código-fonte que deve ser aprovado por um período de algumas semanas. O custo para realizar esses testes por meio de um laboratório aprovado pode ser significativo (por exemplo, bem mais de US $ 30.000)[17] e não inclui o tempo que leva para escrever, testar, documentar e preparar um módulo para validação. Após a validação, os módulos devem ser reenviados e reavaliados se forem alterados de alguma forma. Isso pode variar de simples atualizações de papelada, se a funcionalidade de segurança não foi alterada, à um conjunto mais substancial de novos testes, se a funcionalidade de segurança foi afetada pela alteração.
Os vetores de teste são um conjunto de cifras conhecidas para uma determinada entrada e chave. ONIST distribui a referência de vetores de testeAES como vetores de teste de resposta conhecida (known answer test -KAT)AES.[nota 5][18]
Os requisitos alta velocidade e baixoRAM foram os critérios do processo de seleção doAES. Como o algoritmo escolhido, oAES teve um bom desempenho em uma ampla variedade dehardware, desdesmart cards de 8bits à computadores de alto desempenho.
Em umPentium Pro, a criptografiaAES requer 18 ciclos declock porbyte,[19] equivalente à uma taxa de transferência de cerca de 11 MiB / s para um processador de 200 MHz.
EmCPUsIntel Core eAMD Ryzen que suportam extensões do conjunto de instruçõesAES-NI, a taxa de transferência pode ser de vários GB/s (mesmo acima de 10 GB/s).[20]
Onde ohardware daCPU não suporta aceleraçãoAES,ChaCha é uma cifra alternativa com melhor desempenho e sem sacrificar a segurança.[21][22]
↑Chaves de 128, 160, 192, 224 e 256 bits são suportadas pelo algoritmo Rijndael, mas apenas as chaves de 128, 192 e 256 bits são especificadas no padrão AES.
↑Blocos de 128, 160, 192, 224 e 256 bits para cada chave são suportados pelo algoritmo Rijndael, mas apenas o bloco de 128 bits é especificado no padrão AES.
↑As variantes Rijndael de bloco grande usam um arranjo com colunas adicionais, mas sempre com quatro linhas.
↑As variantes de Rijndael com um tamanho de bloco maior têm deslocamentos ligeiramente diferentes. Para blocos de tamanhos 128 e 192bits, o padrão de deslocamento é o mesmo. A linha é deslocada para a esquerda circular embytes. Para um bloco de 256bits, a primeira linha permanece inalterada e o deslocamento para a segunda, terceira e quarta linha é de 1, 3 e 4bytes, respectivamente (esta alteração só se aplica à cifra de Rijndael quando usada com um bloco de 256bits, já que oAES não usa blocos de 256bits
↑Os vetores de teste de resposta conhecida (KAT)AESestão disponíveis em formatoZip na página doNISTaqui