Qual é a importância do AES add round Key (K0)?

Nov 17 2020

Uma visão geral de alto nível do AES está de acordo com a Wikipedia

  1. Expansão de chave;
  2. Adição inicial da chave da rodada;
  3. 9, 11 ou 13 rodadas;
  4. Rodada final (fazendo 10, 12 ou 14 rodadas no total).

Posso compreender todas as etapas, exceto a etapa 2, que é conhecida como ampliação de chave .

Qual é a importância da etapa principal de ampliação? Como isso contribui para a segurança geral do AES? Qual é a importância desta etapa e como ela contribui para a segurança geral da AES?

[EDIT] Ouvi dizer que ajuda na implementação da criptografia recursivamente, mas não consigo ver como isso é possível. pois isso é feito apenas no início da criptografia e no final da descriptografia. Implementar isso em uma função recursiva fará com que cada rodada aplique um XOR na entrada com 2 teclas.

Então, quais são exatamente os benefícios dessa etapa de adição inicial?

Respostas

1 fgrieu Nov 17 2020 at 06:00

AES-128 consiste em 10 rodadas. Cada rodada inclui uma permutação pública (consistindo na composição de permutações públicas SubByte ShiftRows MixColumns, exceto para a última rodada onde MixColumns é omitido) e transformações secretas AddRoundKey (consistindo em um XOR com um valor dependente de chave e dependente de rodada) antes do primeira rodada, entre rodadas e após a última rodada. Portanto, existem 11 AddRoundKey. A pergunta pergunta: por que o primeiro AddRoundKey?

Porque sem a primeira AddRoundKey, a permutação pública da primeira rodada operaria no texto simples, portanto, não teria valor criptográfico em ataques envolvendo texto simples conhecido.

Considere o ataque mais básico: pesquisa de chave de força bruta com um par conhecido de texto simples / texto cifrado. Com a primeira AddRoundKey, a entrada da primeira transformação pública muda para cada chave, os adversários devem calcular essa permutação para cada chave testada e sua saída é muito diferente para cada chave testada. Mas sem a primeira AddRoundKey, a saída da primeira permutação pública é uma constante que os adversários podem calcular uma vez a um custo insignificante; essencialmente, uma rodada de AES é desperdiçada.


Adição: a última AddRoundKey está aqui pelo mesmo motivo. E o MixColumns da última rodada é removido porque, caso estivesse presente, seria possível trocar os MixColumns daquela última rodada e a última AddRoundKey (após uma transformação linear da última subchave), e então os MixColumns dessa última rodada seriam uma permutação pública operando em texto cifrado, portanto sem valor criptográfico.


Adição: não vejo qualquer substância para a alegação de que "o primeiro AddRoundKey ajuda a implementar a criptografia recursivamente".