Kriptográfia Ötödik előadás Az AES Dr. Németh N L. Zoltán SZTE, Számítástudom studomány Alapjai Tanszék 2008 ősz
Az AES pályp lyázat a DES szabványt le kellett váltani, mert nyt le kellett az 56 bites kulcs brute-force módon való feltörését t több t kisérlet is igazolta (distributed.net, Deep Crack) kriptoanalízisen alapuló támadások is ismertek rá r (igaz csak elméletiek) letiek) a TDES T helyettesítheti, theti, de lassú, és s a blokkméret továbbra is kicsi (64 bit) az USA-ban a NIST újabb pályp lyázatot hirdetett 1997-ben AES = Advanced Encryption Standard-re re (Továbbfejlesztett titkosítási si szabványra nyra)
Az AES pályázat követelmk vetelményei titkos kulcsú szimmetrikus blokktitkosító 128-bit bites blokk,, 128/192/256-bit bites kulcs erősebb és s gyorsabb legyen a TDES-nél hatékony megvalósíthat thatóság számítási si teljesítm tmény kód és s adatmemória szüks kséglet előkész szítő számítások sok (pl. kulcsszervezés) s) flexibilitás s az egyes platformok és későbbi fejlesztések sek tekintetében aktív v működésm 20-30 évre (+ archív használat)
A nevezéshez szüks kséges dokumentumok 1. az algoritmus specifikáci ciójának komplett leírása 2. a teljesítm tményekre vonatkozó számítások, sok, becslések, sek, mérésekm 3. teszt-vektorok (nyílt lt titkosított tott szövegp vegpárok) 4. analízis az ismert támadt madási módszerekkel m szembeni helytáll llásról l (pl. lineáris és fifferencuális kriptoanalízis zis) 5. az algoritmus lehetőségei és s korlátai 6. referencia megvalósítás s ANSI C-benC 7. optimalizálási lehetőségek C illetve JAVA megvalósításban sban
AES értékelési szempontok kezdeti kritériumok riumok (az első két t fordulóban) ban): biztonság a gyakorlati kriptoanalízissel szemben idő/t /tár r igény számítási si hatékonys konyság g szempontjából az algoritmus és s az implementáci ció tulajdonságai végső kritériumok riumok (az 5 döntd ntős s résztvevr sztvevőnek) általános biztonság g (az analízis nyilvános nos volt!) a softveres és s hardveres megvalósítás s könnyk nnyűsége (korlátozott RAM/ROM memória esetén n is) az implementáci ció támadhatósága (pl. az idő vagy áram felhasználás s mérése m alapján) flexibilit itás (titkosítás/megfejtés, kulcsszervezés/csere, s/csere, paraméterek, platformok, utasítás s szintű párh. rh.-síthatóság)
Az AES pályp lyázat eredménye az értékelés s három h fordulóban zajlott 1998 98 jún: : az első fordulóban 15 jelelöltet ltet fogadtak el 1999 aug: : a második m fordulóban ezt 5-re szűkített tették 2000 okt: : a Rijndael lett a győztes (ejtsd: www.iaik.tu-graz.ac.at/research/krypto/aes/wav/rijndael_pronunciation.wav ) 2001 nov: FIPS 197 szabványk nyként nt publikált lták AES néven 2003 jún: : az NSA mínősített adatok védelmv delmére is engedélyezi: Sectret,, Top Secret (utóbbira csak 192/256 bites kulccsal) ez az első ilyen mindenki számára elérhet rhető titkosítás
AES szűkített lista Az öt t döntd ntős s résztvevr sztvevő: MARS (IBM) - complex, gyors, nagy bizt.. ráhagyr hagyás RC6 (USA) - n. egyszrű, n. gyors, kis bizt.. ráhagyr hagyás Rijndael (Belgium) - világos gos, gyors, jó bizt.. ráhagyr hagyás Serpent (Euro) - világos gos, lassú,, n. nagy bizt.. ráhagyr hagyás Twofish (USA) - complex, n. gyors, nagy bizt.. ráhagyr hagyás ezután n jött j az újabb szempontok analízise
Az AES titkosító - Rijndael tervezői: Joan Rijmen és Vincent Daemen (Belgium) a Rijndaelben mind az adatblokk mind a kulcshossz 128-256 256 bit között k 32 bitenként nt változtathatv ltoztatható AES szabványos kulcsok: 128/192/256 bit, AES szabványos adatblokk 128 bit iteratív S-P P hálózat, h de nem Feistel struktúrás az adatokat 4 sor x 4 oszlopos adatblokkokban tárolja, t melyekben egy-egy bájtot b tárolt minden körben k az egész adatblokkon dolgozik úgy tervezték, hogy: minden ismert támadt madásnak ellenálljon lljon gyors és s tömör t r kód k írható rá sok processzor típusont átlátható terve legyen
Az AES az 4 x 4 bájtos b adatblokk egy tartalmát állapotnak (state)) hívjuk h = 4 db 32 bites szó = 128 bit a kulcsot is 32 bites szavak oszlopaira bontjuk ki melyekből l körönkk nként nt szintén n 4 db-ot használunk fel (kulcsméret függvf ggvényében) 10/1 /12/14 körben: byte substitution: (1 közös S-dobozos a bájthelyettesb jthelyettesítés) shift rows: (a a sorok elforgatása különbk nböző mértékben) mix columns: (az oszlopok átalakítása mátrixszorzm trixszorzással) add round key: (XOR művelet bájtonkb jtonként nt a körkulccsalk rkulccsal) az első kör r előtt még m g egy add round key van az utolsó körben a mix columns kimarad könnyen invertálhat lható és s implementálhat lható XOR-ok és műveleti táblt blázatok segíts tségével
AES titkosítás/megfejt s/megfejtés
A titkosítás s algoritmusa AESCipher(byte in[16], byte out[16], word w[44]) begin byte state[4,4] state = in AddRoundKey(state state,, w[0, 3]) for round = 1 step 1 to 10 SubBytes(state state) ShiftRows(state state) MixColumns(state state) AddRoundKey(state state,, w[round round*4,( *4,(round+1)*4-1]) 1]) end for SubBytes(state state) ShiftRows(state state) AddRoundKey(state state,, w[40, 43]) out = state end
1. SubBytes() (bájt helyettesítés) s) Minden bájt helyettesítése egy közös (8 bit -> 8 bites) S-doboz segítségével.
1. SubBytes Bytes() megadása táblázattal
Az AES S-doboza S táblt blázatban
1. SubBytes Bytes() egyszerű helyettesítés s az aktuális állapot minden bájtjb jtjára egy 16x16-os bájtokat tartalmazó 256 elemű táblázattal (minden 8-bites érték k pontosan egyszer fordul elő) a helyettesítend tendő bájt első 4 bitje a sorindexet a második 4 bitje az oszlopindexet adja pl. {95}-öt (hexadecimálisan írva) a 9-es sor 5-ös oszlopában levő {2A} bájttal helyettesítj tjük gondosan úgy tervezték, hogy az ismert támadt madástípusoknak ellenálljon, lljon, pl.,,nagyon nem lineáris az S-doboz egy a 256 elemű test feletti invertálhat lható függvénnyel adható meg ez multiplikatív inverz számítás a testben, majd egy affin transzformáci ció végrehajtása a 256 elemű test elemei polinomok segíts tségével írhatók k le, pl: GF(2 8 ) = Z 2 [x] / (x 8 +x 4 +x 3 +x+1)
Számol molás s GF(2 8 )-ban az együtthat tthatókra 1+1 = 1 1 = 0 és (x 8 +x 4 +x 3 +x+1)-ra nézve redukálni kell. Pl: 2d = 00101101 =x= 5 + x 3 + x 2 + 1 a3 = 10100011 =x= 7 + x 5 + x + 1 2d + a3 = x 7 + 2x 5 + x 3 + x 2 + x + 2 = x 7 + x 3 + x 2 + x = 10001110 = 8e 2d a3 =(x 12 + x 10 + x 9 + x 7 ) + (x 10 + x 8 + x 7 + x 5 ) + (x 6 + x 4 + x 3 + x) + (x 5 + x 3 + x 2 + 1) =x 12 + x 9 + x 8 + x 6 + x 4 + x 2 + x + 1 = = (x 4 + x) (x 8 +x 4 +x 3 +x+1) + x 7 + x 6 + x 4 + 1 = = x 7 + x 6 + x 4 + 1. Így 2d a3 =11010001 = d1 Ez a struktúra ra test, mert bebizonyíthat tható,, hogy minden nem 0 polinomnak van inverze.
Az S-doboz S megkonstruálása sa bemenet: (a 7,a 6,,a,a 0 ) 8 bit, inverze G(256)-ban legyen: (x 7,x 6,,x,x 0 ) majd egy affin transzformáci ció: Másképpen bitenként nt kiszámolva: b i = x i x i+4 mod 8 x i+5 mod 8 x i+6 mod 8 x i+7 mod 8 c i ahol a b i kimenet i-dik bitje, és s c= 01100011. kimenet: (b 7,b 6,,b,b 0 ) 8 bit.
2. Shift Rows()
2. ShiftRows() (sorok elforgatása) permutáci ciós s lépés l s (keverés) a bájtok körkk rkörös s forgatása balra az 1.. sor változatlan v marad a 2. sor 1 bájttal b fordul körbe k balra a 3. sor 2 bájttal b fordul körbe k balra a 4. sor 3 bájttal b fordul körbe k balra a megfejtéskor egyszerűen en jobbra forgatunk mivel az állapotokban a bájtokat b oszloponként nt tekinthetjük, k, ez a lépés l s az oszlopok adatait keveri össze minden oszlop kap bájtot b minden oszlopból
3. MixColumns()
3. MixColumns() (oszlopok összekeverése) se) az oszlopokat külön-külön k n helyettesítj tjük minden helyettesített tett bájt b a keverendő oszlop mind a 4 bájtjb jtjának függvf ggvénye effektíven leírhat rható egy mátrix szorzással ssal a 256 elemű GF(2 8 ) test felett, ahol a bájtok b szorzása sa polinomok segíts tségével törtt rténő bonyolult, de könnyen implementálhat lható művelet:
4. AddRoundKey()
4. AddRoundKey() (körkulcs hozzáad adása) annyira egyszerű,, amennyire csak lehet XOR az állapot és s a 1281 bites körkulcs között szintén n oszloponként nt haladva (persze bájt b szinten párhuzamosp rhuzamosítható) inverze a megfejtéskor ugyanez mivel a XOR önmaga inverze, csak a kulcsok sorrendjét t kell megfordítani
Egy AES kör r az állapotok oszloponkénti nti kiterítésével vel
AES kulcs kiterjesztés (Key Expansion) minden körhk rhöz z 4 (32-bites) szóból álló körkulcs kell a körök k k számától l függf ggően egy összesen 44/52/60 szóból álló kulcstömbre van szüks kség a kulcstömb első 4 eleme maga a titkosítás s kulcsa (128 bit) w 0, w 1, w 2, w 3 a kulcstömb további szavait ezek kiterjesztésével kapjuk a következk vetkező szót mindig az előzőből és s a 4-gyel ezelőttib ttiből képezve 4 ből 3 esetben egyszerűen en XOR-olva a kettőt minden 4. esetben viszont (ha az új w i indexe 4-gyel 4 osztható) az előző szót t előbb 1. elforgatjuk 2. az S-doboz alapján helyettesítj tjük 3. egy kör k r konstanssal XOR-oljuk mielőtt a 4-el 4 ezelőttivel XOR-oln olnánknk
AES kulcs kiterjesztés
A kulcs kiterjesztés s magyarázata hogy az ismert támadt madásoknak ellenálljon lljon a következk vetkező tervezési kritériumok riumok vették: a kulcs egy részr szének ismeret ne segítse a többi t bit meghatároz rozását a transzformáci ció invertálhat lható legyen gyorsan működjm djön n különbk nböző a processzorokon a körkonstansok alkalmazása megtörje a szimmetriát biztosítsa tsa a kulcs bitjeinek diffúzi zióját t a körkulcsok k bitjeibe küszöbölje ki a linearitást st, így gátolva g az analízist egyszerűen en leírhat rható/megvalósítható legyen
Az AES megfejtés mind a 4 lépésnek l van inverze: pl. InvSubBytes() ezek megegyeznek az eredetivel csak más m konstansokkal/tábl blázatokkal dolgoznak az AES megfejtés s nem egyezik meg a titkosítással ssal mivel a lépések inverzét t fordított sorrendben kell alkalmazni de szerencsére lehetőség g van a titkosítással ssal megegyező struktúrájú ekvivalens megfejtő algoritmus kidolgozására természetesen fordított kulcssorrenddel a lépések l inverzeihez tartozó más s táblt blázatokkal erre azért van lehetőség, mert InvSubBytes és InvShift hiftrows sorrenje felcserélhet lhető InvMix ixcolumns és AddRoundKey is felcserélhet lhető,, ha a körkulcson k előbb InvMixColumns-t elvégez gezünk, hiszen InvMixColumns lineáris transzformáci ció.
AES ekvivalens megfejtés
Implementáci ciós szempontok I effekt ektíven implementálhat lható 8-bites CPU-ra ra: SubBytes leírhat rható egy 256 elemű bájtokat tartalmazó táblázattal ShiftRows egyszerűen en bájtok b cseréje AddRoundKey bájtonkénti nti XOR művelet MixColumns ugyan mátrixszorzás GF(2 8 ) felett, de egyszerűsíthet thető egy másik m 256 elemű, bájt értéket tartalmazó tömbben való keresések sek és s bájtonkb jtonkéntinti XOR műveletek használat latára csak {02}-vel kell tudni szorozni, mert {03} = {02} {01}
Implementáci ciós szempontok II effekt ektíven implementálhat lható 32-bit bites CPU-ra is: a kör k r 4 függvf ggvényét összevonhatjuk 32-bit bites oszlopok közvetlen kiszámítására táblt blázatokkal ehhez előre kiszámíthatunk 4 darab 256 bemenetű 32-bites szó értékeket tartalmazó táblázatot egy eredmény oszlop kiszámíthat tható 4 darab kereséssel ssel a táblázatokban + 4 szavankénti nti XOR-ral a táblt blázatok mérete m összesen 4 x 256 x 4 = 4096 bájtb ha nincs 4KB hely megoldható 1 táblt blázattal és s ciklikus forgatásokkal is a tervezők k szerint ez az effektív v megvalósíthat thatóság kulcsfontosságú tényező volt abban, hogy a Rijndaelt választották k AES titkosítónak
Az AES biztonsága a módszer m feltörésének minősül l minden olyan módszer, ami pl. a tejes kipróbálás átlagos 2 127 titkosítási si műveletm veleténél l kevesebbel fejti meg a 128 bites kulcsot mondjuk egy 2 120 műveletigényű,, 2 100 választott nyíltsz ltszöveget igényl nylő módszer is, ami a gyakorlatban biztos, hogy kivitelezhetetlen jelenleg (2008-ban) nem ismert AES törést csupán n az AES kevesebb körrel k rendelkező változatatira van ilyen: ismert nyílt szöveg vegű támadás 7 körös k s AES-128 128-ra 8 körös k s AES-192 192-re és s AES-256 256-ra hasonló kulcsos támadt madás s (related( key attack) 9 körös k s AES-256 256-ra
Az XSL támadt madás s (?) 2002-ben ugyan napvilágot látott l egy spekulatív XSL attack nevezetű támadás de még m g nyitott kérdk rdéses, hogy valóban alkalmazható-e e elméletileg letileg is az AES-re jelenleg gyakorlati kivitelezése nagyon valósz színűtlen
Kerülő utas támadt madások (side channel attacks) ezek nem az algoritmust, hanem annak implementáci cióját t támadjt madják nevezetesen cache timing attacks (gyorsítótár időméréses támadt madások) de kivitelezésükh khöz z a titkosító rendszer nagyon pontos megfigyelésére van szüks kség, pl. a titkosító szerveren futó időmérő programra, vagy 200 millió választott nyílt szövegre komoly gyakorlati fenyegetést nem jelentenek sajnos nagyon nehéz z olyan implementáci ciót írni, hogy a táblt blázatokban való keresés s gyors, de az indextől l teljesen független f legyen
Felhasznált lt irodalom Virrasztó Tamás: Titkosítás és s adatrejtés: Biztonságos kommunikáci ció és s algoritmikus adatvédelem, delem, NetAcademia Kft., Budapest, 2004. Online elérhet rhető: http:// ://www.netacademia.net/book.aspx?id=1# (3.4.-3.5. 3.5. fejezet) William Stallings: Cryptography and Network Security,, 4th Edition, Prentice Hall, 2006. (Chapter 5) Lawrie Brown előad adás s fólif liái i (Chapter( 5) http://en.wikipedia.org/wiki/advanced_encryptio n_standard AES animáci ció: http:// ://www.cs.bc.edu/~straubin/cs381-05/blockciphers blockciphers/rijndael_ingles2004.swf