Advanced Encryption Standard
![]() | Ezt a szócikket át kellene olvasni, ellenőrizni a szöveg helyesírását és nyelvhelyességét, a tulajdonnevek átírását. Esetleges további megjegyzések a vitalapon. |
Az Advanced Encryption Standard (AES) egy módszer elektronikus adatok titkosítására, melyet a U.S. National Institute of Standards and Technology által meghirdetett versenyre beküldött eljárások közül választották ki 2001-ben.[1] A titkosítást két belga kriptográfiai szakember, Joan Daemen és Vincent Rijmen fejlesztette ki, majd specifikálta.[2] A módszer eredeti, holland neve Rijndael.[3]
Az AES-t számos nemzetközi szervezet használja, köztük az Amerikai Egyesült Államok jegybankja is. Az eljárás a korábbi hivatalos ajánlást, a Data Encryption Standardet (DES)-t[4] váltotta le. A korábbi ajánlás 1977-ben született. Az AES szimmetrikus kulcsú titkosítás, ami azt jelenti, hogy az adatok titkosításához ugyanazt a kulcsot használják, mint az adatok visszafejtéséhez.
Az AES-t 2001. november 26-án, az Amerikai Egyesült Államok szabadalmi hivatala, a NIST hozta nyilvánosságra a U.S. FIPS PUB 197 (FIPS 197) jelzéssel ellátott dokumentumban.[1] Ezt egy 5 éves kiválasztási folyamat előzte meg, amely során 15 módszer közül választották ki a végül elfogadott Rijndael titkosítást. 2002-ben az amerikai kormány első számú titkosításává vált. Az AES az ISO/IEC 18033-3 szabvány része. Az eljárás elérhető a legtöbb titkosítással foglalkozó szoftverben. Ez volt az első olyan széles körben nyilvánosságra hozott módszer, amit az amerikai National Security Agency (NSA) elfogadott mint titkos információk titkosítására használható eljárást.
A Rijndael név a készítők (Joan Daemen és Vincent Rijmen) nevének összevonása. Hivatalosan AES-nek csak a Rijndael kódolás azon változatát tekinthetjük, ahol a blokkméret 128 bit.
A titkosítás leírása
Az AES a Rijndael kódolás olyan változata, ahol a blokkméret szigorúan 128 bit, a kulcs pedig 128, 192 vagy 256 bit. Összehasonlításként a Rijndael kódolásban a blokkméret és a kulcsméret is lehet 32 bit tetszőleges többszöröse azzal a kikötéssel, hogy mind a kulcs, mind a blokkméret minimum 128 és maximum 256 bit lehet.
Az AES 4x4-es mátrixokat[5] használ a titkosítás során, habár más blokkméret esetén más a mátrix mérete is.
A kulcsméret meghatározza, hogy a bemeneti információt hány átalakítási ciklus éri, míg eléri a „végleges” titkosított állapotát. A titkosítási ciklusok száma a következőképpen alakul:
- 10 ciklus 128 bites kulcs esetén.
- 12 ciklus 192 bites kulcs esetén.
- 14 ciklus 256 bites kulcs esetén.
Minden ciklus számos lépést foglal magába, ezek között van az a lépés is, ami kulcs alapján módosítja a mátrixot. A visszaalakítás során ugyanennyi ellentétes ciklust hajtanak végre a kulcs segítségével.
Az eljárás részletes leírása
- A tényleges kulcsok előállítása a nyers kulcsból a Rijndael-féle módszerrel
- Előkészítés
- AddRoundKey A mátrix minden bájtját bitenkénti XOR (kizáró vagy) művelettel módosítják a tényleges kulcs segítségével.
- Ciklusonként ismétlődő lépések.
- SubBytes—egy nemlineáris helyettesítési kódolás a Rijndael S-box szerint.
- ShiftRows—egy keverési lépés ahol a sorokat körkörösen (tehát a sor végi elemek megjelennek a sor elején) eltolják egy meghatározott mértékkel.
- MixColumns—egy lépés ahol az oszlopok mind a négy bájtját kombinálják.
- AddRoundKey
- Utolsó ciklus (nincs MixColumns lépés)
- SubBytes
- ShiftRows
- AddRoundKey
A SubBytes lépés
![](http://upload.wikimedia.org/wikipedia/commons/thumb/a/a4/AES-SubBytes.svg/320px-AES-SubBytes.svg.png)
Ebben a lépésben minden bájtot a state mátrixban lecserélnek egy 8 bites helyettesítési tábla, a Rijndael S-box segítségével. Ez a művelet biztosítja, hogy a szöveg nemlineáris lesz a kódolási szakaszban. Hogy az egyszerű algebrai tulajdonságokra támaszkodó támadásokat kiküszöböljék, az S-boxot egy Galois test(28) multiplikatív inverzének és egy affin transzformáció segítségével készítik.
A ShiftRows lépés
![](http://upload.wikimedia.org/wikipedia/commons/thumb/6/66/AES-ShiftRows.svg/320px-AES-ShiftRows.svg.png)
A ShiftRows lépés a mátrix sorait módosítja, körkörös eltolással. Minden sort egy meghatározott, de soronként különböző mértékben eltolják. Az AES-ben az első sor változatlan marad ebben a lépésben. A második sor minden bájtját egyszeresen tolják balra. Hasonlóan, a harmadik és a negyedik sort 2 illetve 3 bájttal tolják balra. 128 és 192 bites blokkokban az eltolás megegyezik. Az n. sort n-1 bájttal tolják el. Így minden oszlop a ShiftRows lépés után csak azokból a bájtokból áll, amiket a transzformáció előtt is tartalmazott az adott sor. (Nagyobb Rijndael blokkméret esetén az eltolás más módszerrel történik). 256 bites blokkméret esetében az első sor változatlan marad, míg a 2., 3., 4. esetében az eltolás 1 bájt, 3 bájt és 4 bájt. Ez a módszer csak 256 blokkméret esetében alkalmazandó. Emlékeztetőül: az AES nem támogatja a 256 blokkméretet.
A MixColumns lépés
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/76/AES-MixColumns.svg/320px-AES-MixColumns.svg.png)
A MixColumns lépésben minden oszlop 4 bájtját módosítják egy invertálható lineáris transzformáció szerint. A MixColumns lépésben a bemeneti információ a 4 bájt, a kimenet pedig 4 bájt, ahol bármely bájt megváltozása a bemenetben a teljes kimenetet megváltoztatja. A ShiftRows és a MixColumns lépések együtt biztosítják a véletlennek látszó kimenetet.
Ez alatt a lépés alatt minden oszlop megszorzásra kerül egy előre meghatározott mátrixszal, ami 128 bites kulcs esetén:
Az 1-gyel való szorzás nem változtat, a 2-vel való szorzást most úgy kell értelmezni mint eltolást balra (lásd a képet), a 3-mal való szorzás eltolás balra, majd xor művelet az eredeti el nem tolt értékkel. Az eltolás után, ha a keletkezett érték 0xFF-nél nagyobb, akkor még egy xor-t kell elvégezni az eredménnyel és a 0x11B értékkel.
Általánosabban: minden oszlopot úgy kezelünk mint egy polinomot GF(28) felett és aztán ezt szorozzuk meg egy meghatározott polinommal c(x) = 0x03 · x3 + x2 + x + 0x02 modulus x4+1-gyel. Az együtthatók hexadecimális formában vannak. A MixColumns lépést úgy is tekinthetjük, mint szorzást egy megfelelő MDS mátrixxal egy véges testen.
Az AddRoundKey lépés
![](http://upload.wikimedia.org/wikipedia/commons/thumb/a/ad/AES-AddRoundKey.svg/320px-AES-AddRoundKey.svg.png)
Az AddRoundKey lépésben a szubkulcsot összekombinálják a state mátrixxal. Minden ilyen lépésben a szubkulcsot az eredeti kulcsból állítják elő a Rijndael-féle szubkulcs-előállító algoritmussal (angolul: Rijndael's key schedule). A keletkező szubkulcs ugyanakkora, mint a state mátrix. A szubkulcs megfelelő bájtját és a state mátrix megfelelő bájtját össze XOR-ozzák, így kapják meg a state mátrix új bájtjait.
Biztonság
2009 májusáig az egyetlen sikeres publikált támadás a teljes AES ellen egy specifikus támadás bizonyos implementációk ellen. Az NSA átnézte az AES összes végső jelöltjét, beleértve a Rijndael titkosítást és úgy találta, hogy mindegyik megfelelő az USA kormánynak a nem-titkosított (jogi értelemben) adatok titkosítására. 2003 júniusában az USA kormánya is bejelentette, hogy az AES használható a titkosított információk (jogi értelemben vett) védelme érdekében is:
Az AES szerkezete és erőssége minden kulcshossz mellett (pld: 128, 192 és 256 bites kulcsokkal) megfelelő a titkos információk védelméhez, a "SECRET" kategóriáig. A "TOP SECRET" kategóriájú információkhoz 192 vagy 256-os kulcshosszra van szükség. Azok a programok, amiknek az a célja, hogy titkos információkat és/vagy rendszereket védjenek az AES segítségével, át kell esniük egy átvilágításon az NSA-nál.[6]
Az AES 128 bites kulcs esetén 10 ciklusból áll, 192 bites kulcs esetén 12 ciklusból áll és 256 bites kulcs esetén 14 ciklusból. 2006-ban a legjobb ismert támadások a 7 ciklusos 128 bites, 8 ciklusos 192 bites és a 9 ciklusos 256 bites titkosítást támadták.[7]
Ismert támadások
A kriptográfusok a "kriptográfiai törésen" egy olyan eljárást értenek, ami gyorsabb, mint a brute force, vagyis gyorsabb, mint kipróbálni minden lehetséges kulcsot. Ebbe a meghatározásba beletartoznak olyan a brute force-nál jobb eljárások is, amik a gyakorlatban nem valósíthatóak meg a jelenlegi technológiával. 2006-ban a legnagyobb sikeres brute force-os törés, ami nyilvánosságra került, bármilyen block alapú titkosítással szemben egy 64 bites RC5-ös feltörése.[8]
Az AES viszonylag könnyen leírható algebrailag.[9] 2002-ben egy elméleti törés, az "XSL" látott napvilágot Nicolas Courtois és Josef Pieprzyk tollából, aminek az volt a célja, hogy bemutassa az AES azon gyengeségeit, amik ebből az egyszerű leírhatóságból következnek.[10] Azóta más tanulmányok megmutatták, hogy az eredeti XSL támadás a gyakorlatban működésképtelen.
Az AES kiválasztási folyamata alatt más algoritmusok kifejlesztői ezt írták a Rijndaelről: "... meggyőző a hatásossága ... a biztonságkritikus körülmények között..."[11] Egyébként 2000 októberében, az AES kiválasztási folyamatának végén Bruce Schneier, egy másik olyan algoritmusnak (Twofish) a kifejlesztője, amely részt vett a versenyben, azt írta, hogy miközben elméleti törések lehetségesek az algoritmussal szemben: "Nem hiszem, hogy valaha is bárki fölfedezne egy olyan támadást, ami a gyakorlatban képessé tenné, hogy Rijndael titkosított adatforgalmat hallgasson le."[12]
2009. július 1-jén Bruce Scheier írt a blogjában[13] egy támadási módról, ami a 192 bites és a 256 bites verziókat érintette, és amit Alex Biryukov és Dmitry Khovratovich,[14] fedezett fel. Ez a módszer azt használja ki, hogy az AES a kulcsokat elkészíti és a komplexitása 2119. Decemberre ezt a módszert 299.5-es komplexitásúra javították. A módszer egy korábban felfedezett eljárást fejlesztett tovább amit 2009 elején fedezett fel Alex Biryukov, Dmitry Khovratovich, és Ivica Nikolić. Ennek 296 a komplexitása minden 235. kulcsra.[15]
2009 novemberében lett ismert az első olyan támadás, ami meg tudja különböztetni a véletlenszerű adatokat az AES-el kódolt adatoktól. Ez a módszert egy egyszerűsített 8 ciklusos AES-128-as ellen működik.[16]
Az első olyan támadások, amelyek megszerzik a titkosító kulcsot, Andrey Bogdanov, Dmitry Khovratovich és Christian Rechbergertől származnak és 2011-ben jelentek meg.[17]
NIST/CSEC ellenőrzés
A Cryptographic Module Validation Program (CMVP) az Amerikai Egyesült Államok National Institute of Standards and Technology (NIST) nevű szervezetének Computer Security részlegének és Kanada Communications Security Establishment (CSE) szervezetének programja. A titkosítást, amit az USA rendelt meg, a szabályok szerint olyan adatok titkosítására használhatja az Egyesült Államok, amik titkosítási besorolása érzékeny (Sensitive), de nem titkos (Unclassified (SBU)) vagy szigorúbb. A NSTISSP #11 alapján: "Az olyan titkosítások, amiket a titkos minősítésű adatok védelmére használnak, az NSA-nak kell ellenőriznie és az ilyen titkosítás megkapja a NIST FIPS 140-2 szerinti minősítést."[18]
A kanadai kormány szintén azt javasolja, hogy a titkosítást a kormánylétesítmények ne használják titkos adatok védelmére.
A Cryptographic Algorithm Validation Program (CAVP)[19] lehetővé teszi, hogy egy adott implementációt az NIST ellenőrizzen, viszont ennek a költsége nagy. Egy ilyen ellenőrzés azt eredményezi, hogy az adott implementáció felkerült az NIST által ellenőrzött módszerek listájára. Ugyanakkor ez az ellenőrzés nem elégséges sem az NSA-ellenőrzés, sem a FIPS 140-2 minősítés pótlására, tehát az USA kormánya nem használhatja ezeket titkos adatok védelmére.[18]
FIPS 140-2 minősítés kihívást jelent mind technikailag, mind fizikailag.[20] Egy ilyen teszt jól meghatározott részekből áll, mint pl.: a forráskód megvizsgálása. Az eljárás költsége magas lehet (több mint 30,000 USD)[20]
Teljesítmény
A gyorsaság és alacsony memóriaigény követelmény volt az AES kiválasztási eljárásában. Így az AES jól használható szinte minden hardveren 8 bites smart kártyákon át a nagyteljesítményű számítógépekig.
Kapcsolódó szócikkek
Megjegyzések
- ↑ a b Announcing the ADVANCED ENCRYPTION STANDARD (AES). Federal Information Processing Standards Publication 197. United States National Institute of Standards and Technology (NIST), 2001. november 26. (Hozzáférés: 2012. október 2.)
- ↑ John Schwartz. „U.S. Selects a New Encryption Technique”, New York Times , 2000. október 3.
- ↑ AES Proposal: Rijndael. National Institute of Standards and Technology, 2003. szeptember 4. [2013. március 5-i dátummal az eredetiből archiválva]. (Hozzáférés: 2013. február 21.)
- ↑ Westlund, Harold B.. „NIST reports measurable success of Advanced Encryption Standard”, Journal of Research of the National Institute of Standards and Technology
- ↑ A mátrixokat a bemenetből úgy építik fel, hogy veszik az első 4 bájtot, ez lesz a mátrix első oszlopa, és így tovább, míg a mátrix el nem készül.
- ↑ Lynn Hathaway: National Policy on the Use of the Advanced Encryption Standard (AES) to Protect National Security Systems and National Security Information (PDF), 2003. június 1. (Hozzáférés: 2011. február 15.)
- ↑ John Kelsey, Stefan Lucks, Bruce Schneier, Mike Stay, David Wagner, and Doug Whiting, Improved Cryptanalysis of Rijndael, Fast Software Encryption, 2000 pp 213–230 [1]
- ↑ Is encryption really crackable?. Ziff-Davis, 2006. április 30. [2010. augusztus 7-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. augusztus 7.)
- ↑ Sean Murphy. University of London. (Hozzáférés: 2008. november 2.)
- ↑ Bruce Schneier: AES News, Crypto-Gram Newsletter, September 15, 2002. [2007. július 7-i dátummal az eredetiből archiválva]. (Hozzáférés: 2007. július 27.)
- ↑ Niels Ferguson, Richard Schroeppel, Doug Whiting (2001). „A simple algebraic representation of Rijndael” (PDF/PostScript). Proceedings of Selected Areas in Cryptography, 2001, Lecture Notes in Computer Science: 103–111, Springer-Verlag. [2006. november 4-i dátummal az eredetiből archiválva]. Hozzáférés: 2006. október 6.
- ↑ Bruce Schneier, AES Announced, October 15, 2000
- ↑ Bruce Schneier: New Attack on AES. Schneier on Security, A blog covering security and security technology, 2009. július 1. [2010. február 8-i dátummal az eredetiből archiválva]. (Hozzáférés: 2010. március 11.)
- ↑ Biryukov, Alex; Khovratovich, Dmitry: Related-key Cryptanalysis of the Full AES-192 and AES-256, 2009. december 4. (Hozzáférés: 2010. március 11.)
- ↑ Distinguisher and Related-Key Attack on the Full AES-256, Advances in Cryptology – CRYPTO 2009. Springer Berlin / Heidelberg, 231–249. o.. DOI: 10.1007/978-3-642-03356-8_14 (2009). ISBN 978-3-642-03355-1. Hozzáférés ideje: 2010. március 11.
- ↑ Henri Gilbert; Thomas Peyrin: Super-Sbox Cryptanalysis: Improved Attacks for AES-like permutations, 2009. november 9. (Hozzáférés: 2010. március 11.)
- ↑ Andrey Bogdanov, Dmitry Khovratovich, and Christian Rechberger: Biclique Cryptanalysis of the Full AES, 2011. [2016. március 6-i dátummal az eredetiből archiválva]. (Hozzáférés: 2016. október 9.)
- ↑ a b Archivált másolat. [2012. április 21-i dátummal az eredetiből archiválva]. (Hozzáférés: 2013. november 8.)
- ↑ NIST.gov - Computer Security Division - Computer Security Resource Center. Csrc.nist.gov. (Hozzáférés: 2012. december 23.)
- ↑ a b OpenSSL, [email protected]: OpenSSL's Notes about FIPS certification. Openssl.org. [2013. január 2-i dátummal az eredetiből archiválva]. (Hozzáférés: 2012. december 23.)
Fordítás
Ez a szócikk részben vagy egészben az Advanced Encryption Standard című angol Wikipédia-szócikk fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.
Források
- Nicolas Courtois, Josef Pieprzyk, "Cryptanalysis of Block Ciphers with Overdefined Systems of Equations". pp 267–287, ASIACRYPT 2002.
- Joan Daemen, Vincent Rijmen, "The Design of Rijndael: AES – The Advanced Encryption Standard." Springer, 2002. ISBN 3-540-42580-2.
- Christof Paar, Jan Pelzl, "The Advanced Encryption Standard", Chapter 4 of "Understanding Cryptography, A Textbook for Students and Practitioners". (companion web site contains online lectures on AES), Springer, 2009.
További információk
- Online kódolás és dekódolás AES algoritmussal
Informatikai portál • összefoglaló, színes tartalomajánló lap