280 likes | 409 Views
Criptografia e Segurança de Redes Capítulo 5. Quarta Edição por William Stallings Tradução por Carlos Daniel Abreu. Capítulo 5 – Advanced Encryption Standard (AES). “Parece muito simples." “É muito simples. Mas se você não souber qual é a chave, é praticamente indecifrável."
E N D
Criptografia e Segurança de Redes Capítulo 5 Quarta Edição por William Stallings Tradução por Carlos Daniel Abreu
Capítulo 5 –AdvancedEncryption Standard (AES) “Parece muito simples." “É muito simples. Mas se você não souber qual é a chave, é praticamente indecifrável." -Talking to StrangeMen, Ruth Rendell
As Origens • Claramente era necessário ter um substituto para o DES • Ataques criptoanalíticos podem quebrá-lo • Quebrável por ataques de força-bruta • Usou-se então o 3DES – porém é lento e tem blocos pequenos • US NIST emitiu chamadas para cifras em 1997 • 15 candidatos aceitaram em Jun-98 • 5 foram selecionados em Ago-99 • A cifra de Rijndael foi selecionada como AES em Out-2000 • Publicado na FIPS PUB 197 standard em Nov-2001
Requerimentos para o AES • Cifra de bloco simétrica com um tamanho de bloco de 128 bits. • Suporte para tamanhos de chave de 128/192/256 bits • Mais forte e rápido que o 3DES • 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ística de implementação • Critério Final • Segurança generalizada • Fácil implementação de software & hardware • Ataques nas implementações • flexibilidade (em em/decriptografar, chaveamento, outros fatores)
AES [ Finalistas ] • Após o teste de avaliação, os finalistas em Ago-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) - devagar, fácil, extrema segurança • Twofish (USA) - complexo, muito rápido, extrema margem de segurança • Então foram submetidos para análise futura • Encontramos diferenças nas submissões como: • Baixas rodados de complexidade vs muitas rodadas simples • Cifras existentes mais refinadas vs novas propostas
A Cifra AES - Rijndael • Desenvolvido por Rijmen-Daemen na Bélgica • Possui chaves de 128/192/256 bit, bloco de 128 bit • Iterativa em vez de uma cifra Feistel • Processa dados como blocos de 4 colunas em 4 bytes • Executa em todo os blocos de dados em todas as rodadas • Desenhado para ser: • Resistente a ataques conhecidos • Rápido e compacto na maioria das CPUs • design simplificado
Rijndael • Representada como uma matriz quadrada de bytes e é copiada para o vetor State • A chave é expandida para um vetor de words para o escalonamento de chaves • tem 9/11/13 rodadas em cada state que sofre: • SubBytes: (1 caixa-S usado em cada byte) • ShiftRows: uma permutação simples • MixColumns: uma combinação linear que usa aritmética GF(28) • AddRoundKey: XOR bit a bit do bloco atual com uma parte da chave expandida • Alternativa para o XOR chave & scramble bytes de dados • InitialXORkey material & incomplete última rodada • withfast XOR & tablelookupimplementation
Transformação SubBytes • Uma simples substituição de cada byte • O AES define uma matriz de 16x16 de valores de byte (caixa-S), que contém uma permutação de todos os 256 valores possíveis de 8-bit • Cada byte de state é mapeado individualmente para um novo byte da seguinte maneira: linha(esquerda 4-bits) & coluna(direita 4-bits) • Ex.: byte {95} referencia a linha 9 coluna 5 • Que tem o valor {2A} • A caixa-S é construída mapeando cada byte para seu inverso multiplicativo no corpo finito GF(28) • Projetado para resistir a todos os ataques conhecidos
Transformação ShiftRows • Um deslocamento circular de byte para 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 • A transformação deslocamento inverso de linhas, chamada InvShiftRows, realiza os deslocamentos circulares na direção oposta. • Assim que o state é processado pelas colunas, esse passo permuta os bytes entre as colunas
Transformação MixColumns • Cada coluna é processada individualmente • cada byte de uma coluna é mapeado para um novo valor que é uma combinação linear de todos os 4 bytes nessa coluna • eficazmente uma multiplicação de matriz em GF(28) usando prime poly m(x) =x8+x4+x3+x+1
MixColumns • 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, hence a littleharder • Tem uma caracterização alternativa • Cada coluna do State com um polinômio de 4º grau • Com coeficientes em GF(28) • Cada coluna é multiplicada módulo (x4+1)
Add Round Key • Os 128-bits de State passam por um XOR bit a bit com os 128-bits da chave da rodada • Novamente processada por colunas (por series efetivas de operação de byte) • A transformação adição inversa de chave de rodada é idêntica à transformação adição direta de chave • 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
Expansão de chave do AES • Utiliza como entrada uma chave de 4 words (16 bytes) e produz um vetor linear de 44 words (176 bytes) • A chave é copiada para as 4 primeiras words da chave expandida • O restante é preenchido com 4 words de cada vez • Em 3 dentre 4 casos um simples XOR é usado • Para uma word cuja posição no vetor w é um multiplo de 4, uma função mais complexa é usada.
Raciocínio da expansão de chave • Feito para resistir aos ataques criptoanalíticos conhecidos • Os critérios específicos usados são: • Conhecimento de parte da chave insuficientes para descobrir outra parte qualquer • Transformação reversível • Velocidade em uma grande gama de CPU’s • Uso de constantes de rodada para eliminar simetrias • Cada bit da chave de criptografia afeta muitos bits da chave de rodada • Não-linearidade suficiente para impedir a determinação total das diferenças da chave de rodada somente a partir das diferenças da chave de criptografia • Simplicidade de descrição
Cifrainversaequivalente • 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 passada • Com uma chave diferente para o escalonamento • Os dois primeiros estágios da rodada Decript. precisam ser trocados como os dois seguintes de Decript. • Trocando InvShiftRows e InvSubBytes • Trocando AddRoundKey e InvMixColumns
Aspectos de Implementação • Implementação eficiente em processadores de 8 bits • SubBytes opera em nível de byte e só exige uma tabela de 256 bytes • shiftrows é uma operação simples de deslocamento de bytes • add round key é uma operação XOR • mix columns exige multiplicação de matriz no corpo GF(28) , o que significa que todas as operações são executadas sobre bytes, pode ser simplificada para usar XORs condicionas e XORs .
Aspectos de Implementação • Implementação eficiente em processadores de 32 bits • Redefine os passos para usar words de 32 bits • Pode pré-computar 4 tabelas de 256 words • Então cada coluna em cada rodada pode ser executada usando 4 XORs condicionais mais 4 XORs • Ao custo de 4Kb para armazenar as tabelas • Os autores acreditam que essa implementação compacta e eficiente provavelmente foi um dos fatores mais importantes na seleção do Rijndael para o AES
Conclusão • Considerações: • Processo de seleção do AES • Os detalhes de Rijndael – A cifra AES • Verificação dos passo em cada rodada • Expansão da Chave • Aspectos de implementação