Criptografia e Segurança de Redes Capítulo 5 Quarta Edição por William Stallings Tradução por...
Transcript of Criptografia e Segurança de Redes Capítulo 5 Quarta Edição por William Stallings Tradução por...
Criptografia e Criptografia e Segurança de Redes Segurança de Redes
Capítulo 5Capítulo 5
Quarta EdiçãoQuarta Edição
por William Stallingspor William Stallings
Tradução por Raul Piccoli MadeiraTradução por Raul Piccoli Madeira
Capítulo 5 – Capítulo 5 – Advanced Advanced Encryption Standard Encryption Standard
““Parece muito simples."Parece muito simples."
““É muito simples. Mas se você não conhece É muito simples. Mas se você não conhece a chave, é praticamente indecifrável."a chave, é praticamente indecifrável."
——Talking to Strange Men, Talking to Strange Men, Ruth RendellRuth Rendell
As OrigensAs Origens Claramente era necessário ter um substituto para o DESClaramente era necessário ter um substituto para o DES
Ataques criptoanalíticos podem quebrá-loAtaques criptoanalíticos podem quebrá-lo Ataques exaustivos podem quebrá-loAtaques exaustivos podem quebrá-lo
Usou-se então o Usou-se então o Triple-DESTriple-DES – porém é lento e tem blocos – porém é lento e tem blocos pequenospequenos
US NIST emitiu chamadas para cifras em 1997US NIST emitiu chamadas para cifras em 1997 15 candidatos aceitaram em Junho de 98 15 candidatos aceitaram em Junho de 98 5 foram selecionados em Agosto de 99 5 foram selecionados em Agosto de 99 A cifra de Rijndael foi selecionada como AES em Outubro de A cifra de Rijndael foi selecionada como AES em Outubro de
20002000 Publicado na FIPS PUB 197 standard em Novembro de 2001 Publicado na FIPS PUB 197 standard em Novembro de 2001
Requerimentos para o AESRequerimentos para o AES Chave privada com cifras de bloco simétricasChave privada com cifras de bloco simétricas Suporte para tamanhos de chave de 128/192/256 bitsSuporte para tamanhos de chave de 128/192/256 bits Mais forte e rápido que o Mais forte e rápido que o Triple-DESTriple-DES Vida ativa de 20-30 anosVida ativa de 20-30 anos Especificação total e detalhes de implementaçãoEspecificação total e detalhes de implementação Implementações em ambos C & JavaImplementações em ambos C & Java NIST liberou todos os argumentos e análises não NIST liberou todos os argumentos e análises não
classificadas.classificadas.
Critérios de Avaliação para o Critérios de Avaliação para o AESAES
Critério Inicial:Critério Inicial: segurança – concentrado na criptoanálisesegurança – concentrado na criptoanálise custo – em termos de eficiência computacionalcusto – em termos de eficiência computacional Algoritmo e característica de implementaçãoAlgoritmo e característica de implementação
Critério FinalCritério Final Segurança generalizadaSegurança generalizada Fácil implementação de software & hardwareFácil implementação de software & hardware Ataques nas implementaçõesAtaques nas implementações flexibilidade (em en/decriptografar, chaveamento, outros flexibilidade (em en/decriptografar, chaveamento, outros
fatores)fatores)
AES Finalistas AES Finalistas Após o teste e avaliação, os finalistas em Agosto de 99: Após o teste e avaliação, os finalistas em Agosto de 99:
MARS (IBM) - complexo, rápido, alta segurança MARS (IBM) - complexo, rápido, alta segurança RC6 (USA) – muito simples, muito rápido, baixa segurança RC6 (USA) – muito simples, muito rápido, baixa segurança Rijndael (Belgium) - fácil, rápido, boa margem de segurança Rijndael (Belgium) - fácil, rápido, boa margem de segurança Serpent (Euro) - devagar, fácil, extrema segurança Serpent (Euro) - devagar, fácil, extrema segurança Twofish (USA) - complexo, muito rápido, extrema margem de Twofish (USA) - complexo, muito rápido, extrema margem de
segurança segurança Então foram submetidos a uma nova análise e comentários.Então foram submetidos a uma nova análise e comentários. Encontramos diferenças nas submissões como: Encontramos diferenças nas submissões como:
Rodadas de complexidade baixa Rodadas de complexidade baixa vsvs muitas rodadas simples muitas rodadas simples Cifras existentes mais refinadas Cifras existentes mais refinadas vsvs novas propostas novas propostas
A Cifra AES - Rijndael A Cifra AES - Rijndael
Desenvolvido por Rijmen-Daemen na Bélgica Desenvolvido por Rijmen-Daemen na Bélgica Possui chaves de 128/192/256 bit, bloco de 128 bitPossui chaves de 128/192/256 bit, bloco de 128 bit Iterativa em vez de uma cifra FeistelIterativa em vez de uma cifra Feistel
Processa dados como blocos de 4 colunas em 4 bytesProcessa dados como blocos de 4 colunas em 4 bytes Opera em todo bloco de dados em cada rodadaOpera em todo bloco de dados em cada rodada
Desenhado para ser:Desenhado para ser: Resistente a ataques conhecidosResistente a ataques conhecidos Rápido e compacto na maioria das CPUsRápido e compacto na maioria das CPUs design simplificadodesign simplificado
Blocos de dados de 4 colunas de 4 bytes são copiadas para o vetor Blocos de dados de 4 colunas de 4 bytes são copiadas para o vetor SStatetate
A chave é expandida para um vetor de A chave é expandida para um vetor de palavraspalavras tem 9/11/13 rodadas em cada tem 9/11/13 rodadas em cada statestate que sofre: que sofre:
Submissão de bytes (1 Submissão de bytes (1 S-boxS-box usado em cada byte) usado em cada byte) Deslocamento de linhas (Deslocamento de linhas (permuta bytes entre grupos/colunas)permuta bytes entre grupos/colunas) Colunas embaralhadas ( substituição usando uma matriz multipy Colunas embaralhadas ( substituição usando uma matriz multipy
de grupos)de grupos) Adiciona chave contínua( Realiza Adiciona chave contínua( Realiza XOR XOR no State com parte da no State com parte da
chave)chave) Visão alternada da chave XOR & bytes de dados misturadosVisão alternada da chave XOR & bytes de dados misturados
Inicial XOR em parte da chave & ultima rodada incompletaInicial XOR em parte da chave & ultima rodada incompleta XOR rápido & implementação em tabela lookupXOR rápido & implementação em tabela lookup
RijndaelRijndael
RijndaelRijndael
Substituição de BytesSubstituição de Bytes
Uma simples substituição de cada byteUma simples substituição de cada byte Usa uma tabela de 16 x 16 bytes contendo uma permutação de Usa uma tabela de 16 x 16 bytes contendo uma permutação de
todos os valores dos 256 8-bitstodos os valores dos 256 8-bits Cada byte do State é substituído por um bit indexado por linha (4-bits Cada byte do State é substituído por um bit indexado por linha (4-bits
esquerda) & coluna (4-bits direita)esquerda) & coluna (4-bits direita) Ex.: byte {95} é substituído por um bit na linha 9 coluna 5Ex.: byte {95} é substituído por um bit na linha 9 coluna 5 Com valor {2A}Com valor {2A}
A S-box é construída usando transformações definidas de valores A S-box é construída usando transformações definidas de valores em GF(2em GF(288))
Projetado para ser resistente a todos os ataques conhecidosProjetado para ser resistente a todos os ataques conhecidos
Substituição de BytesSubstituição de Bytes
Substituição de LinhasSubstituição de Linhas
Uma substituição circular de bytes em cada linhaUma substituição circular de bytes em cada linha 1ª linha não é alterada1ª linha não é alterada 22ªª linha faz o deslocamento circular de 1 byte à esquerda linha faz o deslocamento circular de 1 byte à esquerda 3ª linha faz o deslocamento circular de 2 bytes à esquerda3ª linha faz o deslocamento circular de 2 bytes à esquerda 4ª linha faz o deslocamento circular de 3 bytes à esquerda4ª linha faz o deslocamento circular de 3 bytes à esquerda
Para desencriptar, usa-se o deslocamento de linhas para a direitaPara desencriptar, usa-se o deslocamento de linhas para a direita Assim que o State é processado pelas colunas, esse passo permuta Assim que o State é processado pelas colunas, esse passo permuta
os bytes entre as colunasos bytes entre as colunas
Substituição de LinhasSubstituição de Linhas
Mesclagem de ColunasMesclagem de Colunas
Cada coluna é processada separadamenteCada coluna é processada separadamente Cada byte é substituído por um valor que depende de todos os 4 Cada byte é substituído por um valor que depende de todos os 4
bytes na colunabytes na coluna eficazmente uma multiplicação de matriz em GF(2eficazmente uma multiplicação de matriz em GF(288) usando prime ) usando prime
poly m(x) =xpoly m(x) =x88+x+x44+x+x33+x+1+x+1
Mesclagem de ColunasMesclagem de Colunas
Mesclagem de ColunasMesclagem de Colunas
Pode expressar cada coluna com 4 equaçõesPode expressar cada coluna com 4 equações Para derivar cada byte novo da colunaPara derivar cada byte novo da coluna
Decriptação requer o uso da matriz inversaDecriptação requer o uso da matriz inversa Com coeficientes maiores, por isso, um pouco mais difícilCom coeficientes maiores, por isso, um pouco mais difícil
Tem uma caracterização alternativaTem uma caracterização alternativa Cada coluna com um polinômio de 4º grauCada coluna com um polinômio de 4º grau Com coeficientes em GF(2Com coeficientes em GF(288) ) Cada coluna é multiplicada módulo (xCada coluna é multiplicada módulo (x44+1) +1)
Adiciona rodada de chaveAdiciona rodada de chave Realiza um XOR na State com 128-bits da rodada de chaveRealiza um XOR na State com 128-bits da rodada de chave Novamente processada por colunas (por series efetivas de operação Novamente processada por colunas (por series efetivas de operação
de byte)de byte) Inverter para decriptar.Inverter para decriptar.
Pois a operação XOR é seu próprio inverso.Pois a operação XOR é seu próprio inverso. É a mais simples possívelÉ a mais simples possível
Uma forma da cifra de Vernam numa chave expandidaUma forma da cifra de Vernam numa chave expandida Requer outro nível de complexidade / segurançaRequer outro nível de complexidade / segurança
Adiciona rodada de chaveAdiciona rodada de chave
AES RoundAES Round
Expansão de chave AESExpansão de chave AES Pega Chave de 128 bits (16 bytes) e expande em um array de Pega Chave de 128 bits (16 bytes) e expande em um array de
44/52/60 de 32 bits de texto44/52/60 de 32 bits de texto A chave é copiada para os 4 primeiras textos da chave expandidaA chave é copiada para os 4 primeiras textos da chave expandida O restante é preenchido com 4 textos de cada vezO restante é preenchido com 4 textos de cada vez
Em 3 de 4 casos um XOR é usadoEm 3 de 4 casos um XOR é usado 1º texto em 4 alternado + S-Box + XOR roda por todos os 1º texto em 4 alternado + S-Box + XOR roda por todos os
anteriores, antes de voltar ao 4º XOR.anteriores, antes de voltar ao 4º XOR.
Expansão de chave AESExpansão de chave AES
Raciocínio da expansão de chaveRaciocínio da expansão de chave Feito para resistir aos ataques conhecidosFeito para resistir aos ataques conhecidos Os critérios específicos usados são:Os critérios específicos usados são:
Conhecimento de parte da chave insuficientes para descobrir Conhecimento de parte da chave insuficientes para descobrir outra parte qualqueroutra parte qualquer
Transformação invertidaTransformação invertida Velocidade em uma grande gama de CPU’sVelocidade em uma grande gama de CPU’s Uso de constantes de rodada para eliminar simetriasUso de constantes de rodada para eliminar simetrias Difunde bits de chave em rodadas de chavesDifunde bits de chave em rodadas de chaves Não-linearidade suficiente para impedir a análiseNão-linearidade suficiente para impedir a análise Simplicidade de descriçãoSimplicidade de descrição
Decriptografia AESDecriptografia AES
A cifra de decriptografia do AES não é idêntica a cifra de criptografiaA cifra de decriptografia do AES não é idêntica a cifra de criptografia Mas pode definir uma cifra inversa equivalente com os passos como Mas pode definir uma cifra inversa equivalente com os passos como
a encriptaçãoa encriptação Mas usando o inverso em cada passoMas usando o inverso em cada passo Com uma chave diferente para o escalonamentoCom uma chave diferente para o escalonamento
resultado mantém-se inalterado desde queresultado mantém-se inalterado desde que Trocando substituição de bytes & linhas trocadasTrocando substituição de bytes & linhas trocadas Trocando colunas mescladas & chaves continuasTrocando colunas mescladas & chaves continuas
Decriptografia AESDecriptografia AES
Aspectos de ImplementaçãoAspectos de Implementação
Implementação eficiente em processadores de 8 bitsImplementação eficiente em processadores de 8 bits Substituição de textos de bytes usando uma tabela de 256 Substituição de textos de bytes usando uma tabela de 256
entradasentradas Deslocamento de linhas é um simples deslocamento de bytesDeslocamento de linhas é um simples deslocamento de bytes Adiciona rodada de chaveAdiciona rodada de chave é uma operação XOR é uma operação XOR Mesclagem de colunas requer multiplicação de matriz em GF(2Mesclagem de colunas requer multiplicação de matriz em GF(288) , ) ,
que trabalha em valores de bytes, pode ser simplificada para usar que trabalha em valores de bytes, pode ser simplificada para usar tabelas lookup & XOR de bytes.tabelas lookup & XOR de bytes.
Aspectos de ImplementaçãoAspectos de Implementação Implementação eficiente em processadores de 32 bitsImplementação eficiente em processadores de 32 bits
Redefine os passos para usar textos de 32 bitsRedefine os passos para usar textos de 32 bits Pode pré-computar 4 tabelas de 256 textosPode pré-computar 4 tabelas de 256 textos Então cada coluna em cada rodada pode ser executada usando 4 Então cada coluna em cada rodada pode ser executada usando 4
tabelas lookup + 4 XOR´stabelas lookup + 4 XOR´s Ao custo de 4Kb para armazenar as tabelasAo custo de 4Kb para armazenar as tabelas
Designers acreditam que essa implementação foi muito eficiente, um Designers acreditam que essa implementação foi muito eficiente, um fator chave para a sua seleção como cifra AESfator chave para a sua seleção como cifra AES
ConclusãoConclusão
Considerações:Considerações: Processo de seleção do AESProcesso de seleção do AES Os detalhes de Rijndael – A cifra AESOs detalhes de Rijndael – A cifra AES Verificação dos passo em cada rodadaVerificação dos passo em cada rodada Expansão da ChaveExpansão da Chave Aspectos de implementaçãoAspectos de implementação