Kriptogrāfijā Advanced Encryption Standard (AES) ir simetriskās atslēgas bloka šifrēšanas algoritms, ko 2001. gadā izvēlējās Nacionālais standartu un tehnoloģiju institūts (NIST). Tas tika izvēlēts datu šifrēšanai. To plaši izmanto visā pasaulē. Uzlabotais šifrēšanas standarts ir aizstājis datu šifrēšanas standartu (DES).
Kopš 2008. gada AES ir viens no populārākajiem algoritmiem, ko izmanto simetriskajā kriptogrāfijā. Tas ir pieejams programmētājiem un plašai sabiedrībai ar dažādām programmatūras pakotnēm.
Kas ir AES — īss pārskats
AES ir bloka šifrēšanas algoritms ar fiksētu bloka garumu 128 biti. Tam ir trīs atbalstītās atslēgas garuma variācijas: 128, 192 un 256 biti. Atbilstoši atslēgas garumam mainās arī izpildes kārtu (rounds) skaits: 10, 12 vai 14 kārtas. AES pamatā ir Rijndael konstrukcija, ko izstrādāja Joan Daemen un Vincent Rijmen — NIST izvēlēja tieši šo kandidātu par AES uzvarētāju.
Tehniskā uzbūve un darbības princips
AES šifrēšanas pamatdarbības tiek veiktas uz 4x4 baitu matricu (stāvokļa bloks). Katrā kārtā izmanto virkni lineāru un nelināru transformāciju. Galvenās darbības ir:
- SubBytes — baitu aizstāšana ar S-kastīti (statisku permutāciju / nelināru transformāciju);
- ShiftRows — rindu cikliska nobīde, kas nodrošina difūziju starp rindu elementiem;
- MixColumns — lineāra transformācija, kas sajauc katras kolonnas baitu saturu, rada papildu sajaukšanu (mixing);
- AddRoundKey — bitu ekskluzīva vaišana (XOR) ar katras kārtas atslēgu, kas iegūta no galvenās atslēgas, izmantojot atslēgas paplašināšanas (key schedule) algoritmu.
AES izpilde ietver pirmo AddRoundKey, tad N‑1 pilnas kārtas (SubBytes → ShiftRows → MixColumns → AddRoundKey) un pēdējā kārtā MixColumns tiek izlaista.
Režīmi un praktiskā lietošana
AES kā bloka šifrā nevar tieši apstrādāt lielus datu straumes bez režīma. Parastākie darbības režīmi ir:
- ECB — vienkāršs, bet nedrošs režīms (nav ieteicams), jo identiski bloki rezultējas identiskā šifratekstā;
- CBC — plaši izmantots, nodrošina atkarību starp bloks, bet prasa pareizu inicializācijas vektoru (IV);
- CTR — straumes režīms ar skaitītāju (counter), labi paralelizējams;
- GCM — autentificēta šifrēšana (AEAD), kas sniedz gan konfidencialitāti, gan integritātes pārbaudi (vēlams mūsdienīgām lietojumprogrammām);
- CCM — vēl viens AEAD režīms, īpaši populārs iebūvētās sistēmās un bezvadu protokolos.
Praktiskās pielietošanas piemēri: TLS/HTTPS, IPsec, VPN, disku šifrēšana, failu šifrēšana, bezvadu tīklu drošība (piem., WPA2 izmanto AES-CCMP), dažādas programmatūras paketes un ierīces.
Drošība un kriptoanalīze
AES tiek uzskatīts par drošu rūpnieciskai un valstiskai lietošanai, ja tiek izmantoti atbilstoši atslēgas garumi un droši režīmi. Nav zināmu praktisku uzbrukumu, kas ļautu atklāt pilnu AES atslēgu par saprātīgu laiku, ja tiek izmantota pilna atslēga (128/192/256 biti) un pareiza izmantošana. Tomēr ir svarīgi ņemt vērā sekojošo:
- Ir uzrādītas teorētiskas vājības vai daļēji efektīvas metodes pret samazinātām kārtām vai ar specifiskām maldinošām atslēgām (related-key attacks) — tās neapdraud labi īstenotu AES ar pilnu kārtu skaitu praksē.
- Ir bijuši speciāli uzbrukumi, piemēram, biclique uzbrukums, kas nedaudz samazina teoretisko darba kārtību pret AES, taču praktiskā ietekme uz drošību ir minimāla.
- Reāla drošības problēma bieži rodas nevis no matemātiskām vājībām, bet no nepareizas ieviešanas — piemēram, puskanālu (side-channel) uzbrukumi, laika izceltas informācijas izmantošana, vājas nejaušības avotu atlases IV/nonce ģenerēšanā utt.
Implementācijas un optimizācija
AES labi piemērots gan programmatūras, gan aparatūras realizācijām. Mūsdienu procesori (Intel, AMD, ARM u.c.) bieži satur AES‑NI vai līdzīgu instrukciju komplektu, kas paātrina AES darbības un padara tās drošākas pret daudziem laika atkarīgajiem uzbrukumiem. Lai nodrošinātu drošību, jāievēro sekojošais:
- Izmantojiet pārbaudītas kriptogrāfijas bibliotēkas (OpenSSL, libsodium, BoringSSL utt.) nevis rakstiet savu AES īstenojumu no nulles;
- Izvairieties no nedrošiem režīmiem (piem., ECB) un izmantojiet AEAD režīmus (piem., GCM, CCM) ja nepieciešama arī datu autentifikācija;
- Rūpējieties par drošu atslēgu pārvaldību, atslēgu ģenerēšanu ar kvalitatīvu nejaušības avotu un drošu atslēgu glabāšanu;
- Aizsargājiet pret puskanālu uzbrukumiem (konstant‑time kods, maskēšana, speciālas aparatūras metodes) īpaši iebūvētajās vai ierīču vidēs.
Standarti, adopcija un licences
AES tika standartizēts kā FIPS 197 (NIST standarts). Tā plaša adopcija padarīja to par de facto standartu valsts un komerciālajai šifrēšanai. AES ir brīvi izmantojams — tas nav nepieciešams licencēt vai maksāt nodevas par tā lietošanu.
Praktiski ieteikumi
- Izmantojiet AES-256 vai AES-128 atbilstoši drošības prasībām (AES-256 sniedz lielāku atslēgas telpu, bet AES-128 joprojām tiek uzskatīts par drošu un bieži ātrāku);
- Izvēlieties AEAD režīmus (piem., AES-GCM) ja nepieciešama gan konfidencialitāte, gan autentifikācija;
- Vienmēr pareizi ģenerējiet un pārvaldiet IV/nonce — nekad neatkārtoti izmantojiet to pašā atslēgā, it īpaši GCM režīmā;
- Izmantojiet pārbaudītas bibliotēkas un sekojiet drošības ieteikumiem un atjauninājumiem no kriptogrāfijas kopienas.
Kopsavilkums
AES ir robusts, plaši atzīts un plaši izmantots simetrisks bloka šifrēšanas standarts. Tas nodrošina labu veiktspēju un drošību, ja tiek pareizi izmantots ar drošiem režīmiem un atbilstošu atslēgu pārvaldību. Tās popularitāte tulkojas tiešā lietošanā daudzās protokolu un produktu realizācijās visā pasaulē.

