AES (angl. Advanced Encryption Standard – pažangus šifravimo standartas) – šifravimo algoritmas, 2001 metais JAV paskelbtas standartu. Dar vadinamas Rijndael algoritmu, jo autoriai yra Joan Daemen ir Vincent Rijmen. Rijndael yra blokinis simetrinis algoritmas. Šifravimo raktai gali būti 128, 192, arba 256 bitų ilgio, o bloko ilgis 128 bitų.

Etapų raktų sudarymas

[redaguoti | redaguoti vikitekstą]

Etapo rakto sudarymas iš šifro rakto susideda iš dviejų pagrindinių dalių: rakto plėtimas ir etapo rakto pasirinkimas.

Etapų raktų sudarymo procesas:

Nb – Bloko ilgis.
Nk – Šifro rakto stulpelių skaičius.
Nr – Etapų skaičius


kur


kai Nk<6:

KeyExpansion(byte Key[4*Nk] word W[Nb*(Nr+1)])
{
for(i = 0; i < Nk; i++)
W[i] = (Key[4*i], Key[4*i+1], Key[4*i+2], Key[4*i+3]);
for(i = Nk; i < Nb * (Nr + 1); i++)
{
temp = W[i – 1];
if (i % Nk == 0)
temp = SubByte(RotByte(temp)) XOR Rcon[i / Nk];
W[i] = W[i – Nk] XOR temp;
}
}

Pirmieji Nk žodžių yra užpildyti šifro raktu. Kiekvienas tolimesnis žodis yra lygus prieš tai buvusio žodžio W[i–1] ir Nk pozicijų anksčiau buvusio žodžio XOR sumai. Kai indeksas i dalinasi iš Nk prieš atliekant operacija XOR, žodžiui W[i – 1]> įvykdoma funkcija RotByte, gautam rezultatui įvykdoma SubByte, dar pridedama Etapo konstanta , ir po šių veiksmų gauta reikšmė sudedama XOR su žodžio .
Skirtumas tarp atvejo kai ir kai , kuomet , kai indeksas dalinasi iš Nk , atliekam SubByte operaciją žodžiui

Šifravimas

[redaguoti | redaguoti vikitekstą]

kiekvienas baitas pakeičiamas Y,. Kuris yra skaičiuojamas taip:

Eilutės pastumiamos cikliškai, nulinė eilutė nekeičiama, pirmoji eilutė pastumiama per viena baitą į kairę, antroje eilutėje per du, trečioje per tris baitus.

Kiekvienas stulpelis padauginamas iš matricos.
Gautą rezultatas padedamas atgal.

Sudedama bloko matrica su etapo rakto (Round key) matrica.
Šios operacijos kartojamos dešimt kartų, tik dešimta kartą neatliekama stulpelių maišymo operacija (MixColumns).