Cum funcționează AES?
Operație de bază
AES poate fi descrisă ca un bloc criptat iterativ și simetric. AES utilizează o structură de buclă pentru a efectua în mod repetat rearanjamente de date sau permutări. Buclele înlocuiesc o unitate de date cu alta pentru datele de intrare. Rutina de criptare utilizează aceeași cheie pentru criptarea și decriptarea datelor și aplică cheia respectivă blocurilor de date cu lungime fixă.
Program cheie
Rutina de criptare AES stochează cheia de criptare primară într-o matrice. O matrice este un grup de obiecte cu aceleași atribute care pot fi abordate individual. Matricea este formată din patru rânduri, fiecare conținând patru, șase sau opt octeți, în funcție de dimensiunea cheii. În spatele scenei, rutina de criptare utilizează această matrice pentru a genera un tabel, cunoscut ca un program cheie, care conține mai multe chei. Aceste chei sunt numite chei rotunde pentru a le distinge de tasta master originală.
Matricea de stare
AES utilizează o cheie de criptare care poate fi de 128, 192 sau 256 de biți lungă și este aplicată în unități de date numite blocuri, fiecare având o lungime de 128 de biți. Algoritmul AES începe prin copierea fiecărui bloc de 16 biți într-o matrice bidimensională denumită Stat, pentru a crea o matrice de octeți de 4x4. Algoritmul execută o operație exclusivă "O" care returnează "true" dacă unul sau altul dintre operanzi este adevărat. Aceasta este cunoscută sub numele de "AddRoundKey" și se află între primele patru rânduri ale programului cheie și matricea de stat.
Operații matematice
După operația inițială exclusivă "O", algoritmul de criptare AES intră în buclă principală, unde efectuează în mod repetat patru operații matematice diferite în matricea de stat: "SubBytes", "ShiftRows", "MixColumns" și "AddRoundKey" . Aceste operații utilizează o combinație de adăugare, multiplicare, rotire și substituire pentru a cripta fiecare octet în matricea de stat. Bucla principală rulează 10, 12 sau 14 ori, în funcție de dimensiunea cheii de criptare. Odată ce execuția este completă, algoritmul copiază matricea de stare la ieșirea ei sub forma unui text criptat.