[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

Advanced Encryption Standard

egy módszer elektronikus adatok titkosítására
Ez a közzétett változat, ellenőrizve: 2023. szeptember 17.

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

szerkesztés

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

szerkesztés
  1. A tényleges kulcsok előállítása a nyers kulcsból a Rijndael-féle módszerrel
  2. Előkészítés
    1. 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.
  3. Ciklusonként ismétlődő lépések.
    1. SubBytes—egy nemlineáris helyettesítési kódolás a Rijndael S-box szerint.
    2. 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.
    3. MixColumns—egy lépés ahol az oszlopok mind a négy bájtját kombinálják.
    4. AddRoundKey
  4. Utolsó ciklus (nincs MixColumns lépés)
    1. SubBytes
    2. ShiftRows
    3. AddRoundKey

A SubBytes lépés

szerkesztés
 
A SubBytes szakaszban, minden bájtot lecserélnek egy helyettesítési kódolással, S; bij = S(aij).

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

szerkesztés
 
A ShiftRows lépésben, a state mátrix sorait körkörösen eltolják balra. Az eltolás nagysága minden sorban különböző.

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

szerkesztés
 
A MixColumns lépésben, minden oszlopot a mátrixban megszoroznak egy meghatározott polinommal, c(x)-szel.

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

szerkesztés
 
A AddRoundKey lépésben, minden bájt a state mátrixban össze XOR-ozásra kerül az adott lépés szubkulcsának a megfelelő bájtjával.

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

szerkesztés

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

szerkesztés

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

szerkeszté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

szerkesztés

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

szerkesztés

Megjegyzések

szerkesztés
  1. 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.)
  2. John Schwartz. „U.S. Selects a New Encryption Technique”, New York Times , 2000. október 3. 
  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.)
  4. Westlund, Harold B.. „NIST reports measurable success of Advanced Encryption Standard”, Journal of Research of the National Institute of Standards and Technology 
  5. 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.
  6. 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.)
  7. 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]
  8. 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.)
  9. Sean Murphy. University of London. (Hozzáférés: 2008. november 2.)
  10. 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.)
  11. 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. 
  12. Bruce Schneier, AES Announced, October 15, 2000
  13. 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.)
  14. 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.)
  15. 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. 
  16. Henri Gilbert; Thomas Peyrin: Super-Sbox Cryptanalysis: Improved Attacks for AES-like permutations, 2009. november 9. (Hozzáférés: 2010. március 11.)
  17. 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.)
  18. a b Archivált másolat. [2012. április 21-i dátummal az eredetiből archiválva]. (Hozzáférés: 2013. november 8.)
  19. NIST.gov - Computer Security Division - Computer Security Resource Center. Csrc.nist.gov. (Hozzáférés: 2012. december 23.)
  20. a b OpenSSL, openssl@openssl.org: 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

szerkeszté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.

  • 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

szerkesztés