terça-feira, 12 de janeiro de 2016

AES - Origem

Em 1997 O governo americano, através do NIST (National Institute of Standards and Technology) lançou um processo de seleção para definir um novo algoritmo de chave simétrica para proteger as informações do governo federal. Tratou-se de uma medida com o objetivo de substituir o DES (Data Encryption Standard), que havia sido quebrado pela máquina DES Cracker. As condições necessárias para a candidatura de algoritmos: 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 1998, a Primeira Conferência dos Candidatos ao AES, foram apresentados 15 candidatos: Cast-256CryptonDealDFCE2FrogHPCLOKI97MagentaMARSRC6RijndaelSafer+Serpent e Twofish. Em 1999, na Segunda Conferência dos Canditatos AES, foram escolhidos 5 finalistas: MARSRC6RijndaelSerpent e Twofish. O Rijndael (fusão de Vincent Rijmen e Joan Daemen) foi o escolhido, três anos e meio após Segunda Conferência, 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.

O AES tem um tamanho de bloco fixo em 128 bits e uma chave com tamanho de 128, 192 ou 256 bits. O AES opera sobre um arranjo bidimensional de bytes com 4x4 posições, denominado de 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.

Fonte:
http://pt.wikipedia.org/wiki/Advanced_Encryption_Standard
http://www.gta.ufrj.br/grad/05_2/aes/

0 comentários: