Täiustatud krüpteerimisstandard (lühend AES; inglise keeles Advanced Encryption Standard) on 2001. aastal Ameerika Ühendriikide Riikliku Standardite ja Tehnoloogia Instituudi (National Institute of Standards and Tehnology ehk NIST) defineeritud krüpteerimisstandard, mis kasutab ühte võtit nii krüpteerimiseks kui ka dekrüpteerimiseks. Standardis kasutatakse algoritmi Rijndael.
Rijndaeli autorid on belglastest arvutitehnikud Vincent Rijmen ja Joan Daemen.
Täiustatud krüpteerimisstandardi puhul töötleb Rijndaeli algoritm 128-bitiseid andmeplokke 128-, 192- või 256-bitise võtmega. Teisi Rijndaeli algoritmi ploki-või võtmesuuruseid AES ei luba. Andmeplokkide ja võtmete bitid on jaotatud baitideks. Seega koosneb 128-bitine andmeplokk või võti 16-st, 192-bitine võti 24-st ja 256-bitine võti 32-st baidist. Kui krüpteeritavad andmed on suuremad kui üks 16-baidine andmeplokk, siis ülejäänud andmed mahutatakse järgmistesse 16-baidistesse plokkidesse. Võib ka juhtuda, et krüpteeritav info on väiksem kui 128 bitti. Sellisel juhul täidetakse tühjad kohad nullidega.
1997. aasta 2. jaanuaril kuulutas NIST välja AES konkursi täiustatud krüpteerimisalgoritmi leidmiseks. NISTi eesmärgiks oli kirjeldada salastamata krüpteerimisalgoritm, mis oleks võimeline kaitsma riikliku tähtsusega andmeid. Tööde esitamise tähtajaks oli konkursile laekunud 15 nõuetele vastavat algoritmi. Võitja valimisel arvestati krüpteerimisalgoritmi turvalisust, maksumust ja loogika olemust. Pärast mitut testimis- ja valimisvooru valiti kõige sobivamaks algoritmiks kahe belglasest arvutitehniku välja töötatud Rijndael.
| Algoritm | Staatus | Autorid |
|---|---|---|
| Rijndael | Võitja | Vincent Rijmen, Joan Daemen |
| MARS | Finalist | Carolynn Burwick, Don Coppersmith, Edward D'Avignon, Rosario Gennaro, Shai Halevi, Charanjit Jutla, Stephen M. Matyas, Luke O'Connor, Mohammad Peyravian, David Safford, Nevenko Zunic |
| RC6 | Finalist | Ron Rivest, Matt Robshaw, Ray Sidney, Yiqun Lisa Yin |
| Serpent | Finalist | Ross Anderson, Eli Biham, Lars Knudsen |
| Twofish | Finalist | Bruce Schneier, John Kelsey, Doug Whiting, David Wagner, Chris Hall, Niels Ferguson |
| CAST-256 | Kandidaat | Carlisle Adams, Stafford Tavares, Howard Heys, Michael Wiener |
| CRYPTON | Kandidaat | Chae Hoon Lim |
| DEAL | Kandidaat | Lars Knudsen |
| DFC | Kandidaat | Henri Gilbert, Marc Girault, Philippe Hoogvorst, Fabrice Noilhan, Thomas Pornin, Guillaume Poupard, Jacques Stern, Serge Vaudenay |
| E2 | Kandidaat | Masayuki Kanda, Shiho Moriai, Kazumaro Aoki, Hiroki Ueda, Miyako Ohkubo, Youichi Takashima, Kazuo Ohta, Tsutomu Matsumoto |
| FROG | Kandidaat | Dianelos Georgoudis, Damian Leroux, Billy Simón Chaves |
| HPC | Kandidaat | Richard Schroeppel |
| LOKI97 | Kandidaat | Lawrence Brown, Josef Pieprzyk, Jennifer Seberry |
| MAGENTA | Kandidaat | Michael Jacobson Jr., Klaus Huber |
| SAFER+ | Kandidaat | James Massey, Gurgen Khachatrian, Melsik Kuregian |
Täiustatud krüpteerimisalgoritm töötab kas 128-, 192- või 256-bitise võtmega. 128-bitise võtme puhul on erinevate võimalike võtmekombinatsioonide arv . Selline võtmepikkus tähendab, et jõumeetodil 128-bitise võtme leidmiseks kuluv aeg, kasutades kahendarvudel töötavat superarvutit, on võrreldav kogu teadaoleva universumi eksisteerimise ajaga. Kui kasutada võtmeid pikkusega 192 või 256 bitti on ka kõikvõimalike võtmekombinatsioonide arv vastavalt või .
Täiustatud krüpteerimisstandardit võib kasutada tarkvaras, püsivaras, riistvaras ja nende erinevates kombinatsioonides. Tavainimene, kes teadlikult krüptograafiaga ei tegele, puutub AESiga kokku nii WPA2 ruuteri, kuid ka erinevate programmide nagu 7-zip ja WinZip, kasutamisel.
Krüpteerimiseks ja dekrüpteerimiseks kopeeritakse sisendandmed olekumassiivi. Edasi rakendatakse olekumassiivile korduvalt nelja erinevat andmemuundamise tehnikat: baidi asendamine, rea nihutamine, veergude segamine, vooruvõtme lisamine. Krüpteerimise ja dekrüpteerimise puhul kasutatakse samu tehnikaid, kuid vastupidistes järjestustes. Andmemuundamise tehnikate rakendamise täpne tsüklite arv sõltub krüpteerimisvõtme pikkusest. 128-bitise võtme puhul läbitakse tsüklit 10, 192-bitise võtme puhul 12 ja 256-bitise võtme puhul 14 korda. Igaks järgnevaks tsükliks muudab Rijandaeli algoritm eelnevas tsüklis kasutatud vooruvõtit. Seda kutsutakse ka võtme laiendamiseks.
16-baidise võtme puhul läbitakse neljast andmemuundamise tehnikast koosnevat tsüklit 9 korda. Enne esimest tsüklit XORitakse esialgne andmeplokk algoritmi poolt muutmata võtmega. Kümnendal korral jäetakse välja veergude segamise samm, kuna vastasel juhul ei oleks võimalik algseid andmeid dekrüpteerimisel kätte saada. Dekrüpteerimisel läbitakse tsükleid tagurpidises järjestuses. Seega on 16-baidise võtme puhul läbitavate tsüklite arv nii krüpteerimisel kui dekrüpteerimisel 10.
| Tsükli number | Vooruvõtme lisamine | Baidi asendamine | Rea nihutamine | Veergude segamine |
|---|---|---|---|---|
| 0 | Toimub esimesena | Ei toimu | Ei toimu | Ei toimu |
| 1–9 | Toimub neljandana | Toimub esimesena | Toimub teisena | Toimub kolmandana |
| 10 | Toimub kolmandana | Toimub esimesena | Toimub teisena | Ei toimu |
| Tsükli number | Vooruvõtme lisamine | Baidi asendamine | Rea nihutamine | Veergude segamine |
|---|---|---|---|---|
| 0 | Toimub esimesena | Ei toimu | Ei toimu | Ei toimu |
| 1–9 | Toimub kolmandana | Toimub teisena | Toimub esimesena | Toimub neljandana |
| 10 | Toimub kolmandana | Toimub teisena | Toimub esimesena | Ei toimu |
24-baidise võtme kasutamine erineb 16-baidise võtmega krüpteerimisest ja dekrüpteerimisest tsüklite arvu poolest. Tsükleid läbitakse 12 korda nii krüpteerimisel kui dekrüpteerimisel.
| Tsükli number | Vooruvõtme lisamine | Baidi asendamine | Rea nihutamine | Veergude segamine |
|---|---|---|---|---|
| 0 | Toimub esimesena | Ei toimu | Ei toimu | Ei toimu |
| 1–11 | Toimub neljandana | Toimub esimesena | Toimub teisena | Toimub kolmandana |
| 12 | Toimub kolmandana | Toimub esimesena | Toimub teisena | Ei toimu |
| Tsükli number | Vooruvõtme lisamine | Baidi asendamine | Rea nihutamine | Veergude segamine |
|---|---|---|---|---|
| 0 | Toimub esimesena | Ei toimu | Ei toimu | Ei toimu |
| 1–11 | Toimub kolmandana | Toimub teisena | Toimub esimesena | Toimub neljandana |
| 12 | Toimub kolmandana | Toimub teisena | Toimub esimesena | Ei toimu |
32-baidise võtme kasutamine erineb 16-baidise ja 24-baidise võtmega krüpteerimisest ja dekrüpteerimisest tsüklite arvu poolest. 256-bitise võtmega krüpteerimisel ja dekrüpteerimisel on läbitavaid tsükleid 14.
| Tsükli number | Vooruvõtme lisamine | Baidi asendamine | Rea nihutamine | Veergude segamine |
|---|---|---|---|---|
| 0 | Toimub esimesena | Ei toimu | Ei toimu | Ei toimu |
| 1–13 | Toimub neljandana | Toimub esimesena | Toimub teisena | Toimub kolmandana |
| 14 | Toimub kolmandana | Toimub esimesena | Toimub teisena | Ei toimu |
| Tsükli number | Vooruvõtme lisamine | Baidi asendamine | Rea nihutamine | Veergude segamine |
|---|---|---|---|---|
| 0 | Toimub esimesena | Ei toimu | Ei toimu | Ei toimu |
| 1–13 | Toimub kolmandana | Toimub teisena | Toimub esimesena | Toimub neljandana |
| 14 | Toimub kolmandana | Toimub teisena | Toimub esimesena | Ei toimu |
Krüpteerimistsükli esimesel läbimisel kasutatakse muutmata krüpteerimisvõtit. Igas järgnevas tsüklis kasutatakse esialgsest võtmest saadud muudetud võtmeversiooni ehk vooruvõtit. Vooruvõtmeid võib nimetada ka esialgse võtme laiendusteks. Uue vooruvõtme saamiseks tuleb eelmise tsükli võtit muuta, kasutades asendus- ja rotatsioonimeetodeid ning ringkonstanti.

Lähteandmete arusaadavuse vähendamiseks asendatakse olekumaatriksi baidid asendusmaatriksist (S-box) võetud baitidega. S-box on AESi puhul 16x16 tabel, mis sisaldab asendusbaite kõigile kahekohalistele kuueteistkümnendsüsteemi arvudele. Ühekohalist kuueteistkümnendsüsteemi arvu on võimalik edastada nelja biti ehk poole baidiga. Andmete esitus kuueteistkümnendsüsteemis muudab kirjapildi lühemaks ning teeb info inimsilmale loetavamaks.
Rea nihutamise etapis nihutatakse neljarealise olekumaatriksi viimast kolme rida. Rea elementide edasiliigutamiste arv sõltub selle rea paiknemiskohast maatriksis. Maatriksist välja lükatud arv paigutatakse nihkest tekkinud tühjale kohale. Teist rida liigutatakse ühe, kolmandat kahe ja neljandat kolme koha võrra. Esimest rida ei liigutata. Krüpteerimise käigus toimub nihe vasakule.
Veergude segamine on AESi puhul matemaatiliselt kõige keerulisem protsess. Lihtsustamiseks kasutatakse selles etapis kahte otsingutabelit, mille abil on võimalik kiiremini leida vajaminevate korrutiste tulemusi.

Vooruvõti lisatakse olekumaatriksile lihtsa bitwise XOR tehtega. Tehet teostatakse veergudena. Iga olekumaatriksi veerg XORitakse vastava võtmemaatriksi veeruga.
{{cite web}}: kontrolli parameetri |url= väärtust (juhend)