Criptografia e Segurança de Redes Capítulo 5 Quarta Edição por William Stallings
Capítulo 5 Advanced Encryption Standard Parece muito simples." É É muito simples. Mas se você não conhece a chave, é praticamente indecifrável." Talking to Strange Men, Ruth Rendell
As Origens Claramente era necessário ter um substituto para o DES Ataques criptoanalíticos podem quebrá-lo Ataques exaustivos podem quebrá-lo Usou-se então o Triple-DES porém é lento e tem blocos pequenos US NIST emitiu chamadas para cifras em 1997 15 candidatos aceitaram em Junho de 98 5 foram selecionados em Agosto de 99 A cifra de Rijndael foi selecionada como o AES em Outubro de 2000 Publicado na FIPS PUB 197 standard em Novembro de 2001
Requisitos para o AES Chave privada com cifras de bloco simétricas Suporte para tamanhos de chave de 128/192/256 bits Mais forte e rápido que o Triple-DES Vida ativa de 20-30 anos Especificação total e detalhes de implementação Implementações em ambos C & Java NIST liberou todos os argumentos e análises não classificadas.
Critérios de Avaliação para o AES Critério Inicial: segurança concentrado na criptoanálise custo em termos de eficiência computacional Algoritmo e características de implementação Critério Final Segurança generalizada Fácil implementação em software & hardware Ataques nas implementações flexibilidade (emcri/decriptografar, chaveamento, outros fatores)
AES - Finalistas Após o teste e avaliação, os finalistas em Agosto de 99: MARS (IBM) - complexo, rápido, alta segurança RC6 (USA) muito simples, muito rápido, baixa segurança Rijndael (Belgium) - fácil, rápido, boa margem de segurança Serpent (Euro) - lento, fácil, extrema segurança Twofish (USA) - complexo, muito rápido, extrema margem de segurança Os finalistas foram submetidos a uma nova fase de análise e comentários. Encontrou-se diferenças nas propostas como: Rodadas de complexidade baixa vs muitas rodadas simples Cifras existentes mais refinadas vs novas propostas
A Cifra AES - Rijndael Desenvolvida por Rijmen-Daemen na Bélgica Possui chaves de 128/192/256 bits, bloco de 128 bits Iterativa em vez de uma cifra do tipo Feistel Processa dados como blocos de 4 colunas de 4 bytes Opera em todo bloco de dados em cada rodada Projetada para ser: Resistente a ataques conhecidos Rápida e compacta na maioria das CPUs Projeto simplificado
Rijndael Blocos de dados de 4 colunas de 4 bytes são copiadas para o vetor State A chave é expandida para um vetor de palavras tem 9/11/13 rodadas onde o state que sofre: Substituição de bytes (1 S-box usado em cada byte) Deslocamento de linhas (permuta( bytes entre grupos/colunas) Colunas embaralhadas ( substituição usando uma multiplicação de matrizes de grupos) Adiciona chave contínua (Realiza XOR no State com parte da chave) Inicial XOR em parte da chave & ultima rodada incompleta XOR rápido & implementação em tabela lookup
Rijndael
Substituição de Bytes Uma simples substituição de cada byte Usa uma tabela de 16 x 16 bytes contendo uma permutação de todos os valores dos 256 8-bits Cada byte do State é substituído por um bit indexado por linha (4-bits esquerda) & coluna (4-bits direita) Ex.: byte {95} é substituído por um bit na linha 9 coluna 5 Com valor {2A} A S-box é construída usando transformações definidas de valores em GF(2 8 ) Projetado para ser resistente a todos os ataques conhecidos
Substituição de Bytes
Substituição de Linhas Uma substituição circular de bytes em cada linha 1ª linha não é alterada 2 ª linha faz o deslocamento circular de 1 byte à esquerda 3ª linha faz o deslocamento circular de 2 bytes à esquerda 4ª linha faz o deslocamento circular de 3 bytes à esquerda Para decifrar, usa-se o deslocamento de linhas para a direita Assim que o State é processado pelas colunas, esse passo permuta os bytes entre as colunas
Substituição de Linhas
Mesclagem de Colunas Cada coluna é processada separadamente Cada byte é substituído por um valor que depende de todos os 4 bytes na coluna eficazmente uma multiplicação de matriz em GF(2 8 ) usando prime poly m(x) =x 8 +x 4 +x 3 +x+1
Mesclagem de Colunas
Mesclagem de Colunas Pode expressar cada coluna com 4 equações Para derivar cada byte novo da coluna Decriptação requer o uso da matriz inversa Com coeficientes maiores, por isso, um pouco mais difícil Tem uma caracterização alternativa Cada coluna com um polinômio de 4º grau Com coeficientes em GF(2 8 ) Cada coluna é multiplicada módulo (x 4 +1)
Adiciona rodada de chave Realiza um XOR na State com 128-bits da rodada de chave Novamente processada por colunas (por series efetivas de operação de byte) Inverter para decriptar. Pois a operação XOR é seu próprio inverso. É a mais simples possível Uma forma da cifra de Vernam numa chave expandida Requer outro nível de complexidade / segurança
Adiciona rodada de chave
AES Round
Expansão de chave AES Pega Chave de 128 bits (16 bytes) e expande em um array de 44/52/60 de 32 bits de texto A chave é copiada para os 4 primeiras textos da chave expandida O restante é preenchido com 4 textos de cada vez Em 3 de 4 casos um XOR é usado 1º texto em 4 alternado + S-Box + XOR roda por todos os anteriores, antes de voltar ao 4º XOR.
Expansão de chave AES
Raciocínio da expansão de chave Feito para resistir aos ataques conhecidos Os critérios específicos usados são: Conhecimento de parte da chave insuficientes para descobrir outra parte qualquer Transformação invertida Velocidade em uma grande gama de CPU s Uso de constantes de rodada para eliminar simetrias Difunde bits de chave em rodadas de chaves Não-linearidade suficiente para impedir a análise Simplicidade de descrição
Decriptografia AES A cifra de decriptografia do AES não é idêntica a cifra de criptografia Mas pode definir uma cifra inversa equivalente com os passos como a encriptação Mas usando o inverso em cada passo Com uma chave diferente para o escalonamento resultado mantém-se inalterado desde que Trocando substituição de bytes & linhas trocadas Trocando colunas mescladas & chaves continuas
Decriptografia AES
Aspectos de Implementação Implementação eficiente em processadores de 8 bits Substituição de bytes usando uma tabela de 256 entradas Deslocamento de linhas é um simples deslocamento de bytes Chave da rodada é uma operação XOR Mesclagem de colunas que requer multiplicação de matrizes em GF(2 8 ), trabalha em valores de bytes e pode ser simplificada para usar tabelas lookup & XOR de bytes.
Aspectos de Implementação Implementação eficiente em processadores de 32 bits Redefine os passos para usar palavras de 32 bits Pode pré-computar 4 tabelas de 256 palavras Então cada coluna em cada rodada pode ser calculada usando 4 tabelas lookup + 4 XOR s Ao custo de 4Kb para armazenar as tabelas Projetistas acreditam que essa implementação eficiente, foi um fator chave para a sua seleção como cifra AES
Conclusão Considerações: Processo de seleção do AES Os detalhes de Rijndael A cifra AES Descrição dos passos em cada rodada Expansão da Chave Aspectos de implementação