Qual é a importância do AES add round Key (K0)?
Uma visão geral de alto nível do AES está de acordo com a Wikipedia
- Expansão de chave;
- Adição inicial da chave da rodada;
- 9, 11 ou 13 rodadas;
- 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
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".