Como o AES funciona?

O AES usa uma chave de criptografia de comprimento variável.

Operação básica

O AES pode ser descrito como um bloco criptografado iterativo e simétrico. O AES usa uma estrutura de loop para repetidamente executar rearranjos de dados ou permutações. O loop substitui uma unidade de dados por outra para dados de entrada. A rotina de criptografia usa a mesma chave para criptografar e descriptografar os dados e aplica essa chave a blocos de dados de comprimento fixo.

Programa chave

A rotina de criptografia AES armazena a chave de criptografia principal em uma matriz. Uma matriz é um grupo de objetos com os mesmos atributos que podem ser endereçados individualmente. A matriz consiste em quatro linhas, cada uma contendo quatro, seis ou oito bytes, dependendo do tamanho da chave. Nos bastidores, a rotina de criptografia usa essa matriz para gerar uma tabela, conhecida como um programa chave, que contém várias chaves. Essas teclas são chamadas de chaves redondas para diferenciá-las da chave mestra original.

Matriz de status

O AES usa uma chave de criptografia que pode ter 128, 192 ou 256 bits e é aplicada em unidades de dados, chamadas de blocos, cada uma com 128 bits de comprimento. O algoritmo AES começa copiando cada bloco de 16 bits em uma matriz bidimensional chamada State, para criar uma matriz de bytes 4x4. O algoritmo executa uma operação exclusiva "O" que retorna "true" se um ou outro de seus operandos for verdadeiro. Isso é conhecido como "AddRoundKey" e está entre as quatro primeiras linhas do programa chave e a matriz de estado.

Operações matemáticas

Após a operação inicial exclusiva "O", o algoritmo de criptografia AES entra em seu loop principal, onde executa repetidamente quatro operações matemáticas diferentes na matriz State: "SubBytes", "ShiftRows", "MixColumns" e "AddRoundKey" . Essas operações empregam uma combinação de adição, multiplicação, rotação e substituição para criptografar cada byte na matriz do Estado. O loop principal é executado 10, 12 ou 14 vezes, dependendo do tamanho da chave de criptografia. Quando a execução estiver concluída, o algoritmo copia a matriz de estados para sua saída na forma de um texto criptografado.