Padrão de criptografia avançado
O algoritmo de criptografia simétrica mais popular e amplamente adotado que provavelmente será encontrado hoje em dia é o Advanced Encryption Standard (AES). É encontrado pelo menos seis vezes mais rápido que o DES triplo.
Foi necessário substituir o DES porque o tamanho da chave era muito pequeno. Com o aumento do poder de computação, ele foi considerado vulnerável contra ataques exaustivos de busca por chave. O DES triplo foi projetado para superar essa desvantagem, mas foi considerado lento.
As características do AES são as seguintes -
- Cifra de bloco simétrico de chave simétrica
- Dados de 128 bits, chaves de 128/192/256 bits
- Mais forte e mais rápido do que Triple-DES
- Fornece especificações completas e detalhes de design
- Software implementável em C e Java
Operação de AES
AES é uma cifra iterativa em vez de Feistel. É baseado na 'rede de substituição-permutação'. É composto por uma série de operações vinculadas, algumas das quais envolvem a substituição de entradas por saídas específicas (substituições) e outras envolvem a troca de bits (permutações).
Curiosamente, o AES executa todos os seus cálculos em bytes, em vez de bits. Portanto, o AES trata os 128 bits de um bloco de texto simples como 16 bytes. Esses 16 bytes são organizados em quatro colunas e quatro linhas para processamento como uma matriz -
Ao contrário do DES, o número de rodadas no AES é variável e depende do comprimento da chave. O AES usa 10 rodadas para chaves de 128 bits, 12 rodadas para chaves de 192 bits e 14 rodadas para chaves de 256 bits. Cada uma dessas rodadas usa uma chave redonda diferente de 128 bits, que é calculada a partir da chave AES original.
O esquema da estrutura AES é dado na ilustração a seguir -
Processo de criptografia
Aqui, nos restringimos à descrição de uma rodada típica de criptografia AES. Cada rodada é composta por quatro subprocessos. O processo da primeira rodada é descrito abaixo -
Substituição de Byte (SubBytes)
Os 16 bytes de entrada são substituídos olhando-se uma tabela fixa (S-box) fornecida no design. O resultado é uma matriz de quatro linhas e quatro colunas.
Shiftrows
Cada uma das quatro linhas da matriz é deslocada para a esquerda. Quaisquer entradas que 'caiam' são reinseridas no lado direito da linha. A mudança é realizada da seguinte forma -
A primeira linha não é deslocada.
A segunda linha é deslocada um (byte) posição para a esquerda.
A terceira linha é deslocada duas posições para a esquerda.
A quarta linha é deslocada três posições para a esquerda.
O resultado é uma nova matriz consistindo nos mesmos 16 bytes, mas deslocados em relação um ao outro.
MixColumns
Cada coluna de quatro bytes agora é transformada usando uma função matemática especial. Esta função recebe como entrada os quatro bytes de uma coluna e produz quatro bytes completamente novos, que substituem a coluna original. O resultado é outra nova matriz composta por 16 novos bytes. Ressalta-se que esta etapa não é realizada na última rodada.
Addroundkey
Os 16 bytes da matriz são agora considerados como 128 bits e são XORed para os 128 bits da chave redonda. Se esta for a última rodada, a saída será o texto cifrado. Caso contrário, os 128 bits resultantes são interpretados como 16 bytes e começamos outra rodada semelhante.
Processo de descriptografia
O processo de descriptografia de um texto cifrado AES é semelhante ao processo de criptografia na ordem inversa. Cada rodada consiste em quatro processos conduzidos na ordem inversa -
- Adicionar chave redonda
- Colunas de mistura
- Mudar de linha
- Substituição de byte
Como os subprocessos em cada rodada ocorrem de maneira reversa, ao contrário de uma codificação Feistel, os algoritmos de criptografia e descriptografia precisam ser implementados separadamente, embora estejam intimamente relacionados.
Análise AES
Na criptografia atual, o AES é amplamente adotado e suportado tanto em hardware quanto em software. Até o momento, nenhum ataque criptanalítico prático foi descoberto contra AES. Além disso, o AES possui flexibilidade integrada de comprimento de chave, o que permite um certo grau de 'proteção futura' contra o progresso na capacidade de realizar pesquisas de chave exaustivas.
No entanto, assim como para o DES, a segurança do AES é garantida apenas se for corretamente implementado e um bom gerenciamento de chaves for empregado.