380 likes | 560 Views
AES. Advanced Encryption System. 1997-ben az NIST (National Institute of standards) pályázatot írt ki az AES-re Határidő: 1998. június 15. 15 pályázat érkezett Az első kört 5 javaslat élte túl: MARS, RC6, Rijndael, Serpent, Twofish 2000. október 2.: A 128 bites Rijndael lesz az AES.
E N D
AES Advanced Encryption System
1997-ben az NIST (National Institute of standards) pályázatot írt ki az AES-re • Határidő: 1998. június 15. • 15 pályázat érkezett • Az első kört 5 javaslat élte túl: MARS, RC6, Rijndael, Serpent, Twofish • 2000. október 2.: A 128 bites Rijndael lesz az AES.
Az AES a kiírás szerint egy • nyilvánosan közzétett • díjmentes • világszerte terjesztett • a következő évszázadban a kormányzati dokumentumok védelmére alkalmas titkkosító algoritmus kell legyen
Minimális kritériumok: • Szimmetrikus kriptorendszert valósítson meg • Blokkódoló legyen • Kezelje a 128-128, 128-192 és a 128-256 bites blokkhoszz-kulcshossz kombinációt
További elvárások: • Legyen legalább olyan biztonságos mint a TDES • Legyen sokkal gyorsabb mint a TDES • A tervezőnek le kell mondania a szerzői jogokról
Matematikai előismeretek • A Rijndael erősen kihasználja a test tulajdonságait • A test elemeit 7-ed fokú {0,1} együtthatós polinomokként ábrázoljuk, az összeadás a polinomok összeadásának felel meg, míg a szorzás a polinomok szorzásának modulo egy irreducibilis polinom. A kiválasztott polinom az
Inverz számítása • Mivel • Ezért • azaz
feletti polinomok Négy byte tekinthető mint feletti harmadfokú polinom. Az és polinomok szorzata ahol
Sajnos ez már nem ábrázolható 4 byte-on ezért az eredményt vesszük modulo Így a szorzásunk eredménye a alakban adható meg, ahol mivel
Ez írható mátrixos alakban Mivel az polinom reducibilis felett, ezért egy rögzített polinommal való szorzás modulo nem feltétlenül invertálható művelet, de a Rijndael-ben olyan polinomot választottak, melynek van inverze.
Szorzás x-szel A polinom alakú lesz, amit modulo véve adódik, azaz
A Rijndael leírása Tervezők: Joan Daemen Vincent Rijmen A tervezés során figyelembe vett fő szempontok: • Ellenállás az ismert támadásokkal szemben • Gyorsaság és tömör kódolhatóság a platformok minél szélesebb körén • Egyszerű kivitel
A Rijndael blokkhossza: 128, 192, 256 bit • A Rijndael kulcshossza: 128, 192, 256 bit • Mindegyik blokkhossz mindegyik kulcshosszal használható • A Rijdael nem Feistel struktúrájú blokktitksító, mivel azokban az egyes menetek során a bitek legnagyobbrészt csak összekeverednek, de nem változnak meg a bitek.
A Rijndael menet-transzformációja ezzel szemben három invertálható rétegből áll • lineáris keverő réteg (ez teríti szét az információt a blokk teljes hosszában) • nem-lineáris réteg (egy S-boksz, azaz a lineáristól minél távolabb álló transzformáció) • kulcshozzáadó réteg (a menetkulcsot egyszerű EXOR-ozása az aktuális állapothoz)
Részletes leírás Az állapot (state) a titkosítás köztes eredménye Legyen Nb a blokhossz 32-ed része Legyen Nk a kulcshossz 32-ed része • Ekkor az állapotot ábrázolhatjuk egy 4 sorból és Nb oszlopból álló táblázatként, ahol a táblázat minden eleme egy byte
A kezdeti állapot feltöltése a nyílt szöveggel • Az inputot 8 bites byte-ok alkotják, melyek 0-tól (4*Nb-1)-ig vannak sorszámozva • Ha ebben a számozásban a byte sorszáma n akkor a táblázatbeli kétdimenziós (i,j) indexe:
A menettranszformáció Az utolsó menet kicsit különbözik a többitől
A ByteSub transzformáció A ByteSub transzformáció egy S-box, ami az állapot egy-egy byte-ján külön-külön hat. Ez egy invertálható transzformáció, mely két részből áll: • Először vesszük az inverzet -ban • Aztán alkalmazzuk az alábbi affin transzformációt:
Az S-box kimenete minden byte esetén előre kiszámítható, és táblázatba foglalható • A ByteSub inverze is egy ByteSub és ugyanannyi időbe telik elvégezni. • A ByteSub és a ShiftRow sorrendje felcserélhető
A ShiftRow transzformáció A ShiftRow transzformáció az állapot sorait sifteli ciklikusan. Az i-edik sort Ci-vel shifteljük, ahol Ci függ a blokkhossztól. Ci = 0.
Az alábbi ábra mutatja a ShiftRow hatását az állapot sorain A ShiftRow inverze az (Nb- Ci)-vel való ciklikus bal-eltolás.
A MixColumn transzformáció A MixColumn során az állapot oszlopait feletti polinomoknak tekintjük és modulo a polinommal szorozzuk, azaz a művelet alakba írható.
Az alábbi ábra mutatja a MixColumn hatását az állapot sorain A MixColumn inverze polinomszorzás, egy d(x) polinommal, melyre Ez a d(x) az alábbi polinom:
Az AddRoundKey transzformáció Ebben a részben adjuk hozzá a menetkulcsot az állapothoz
Menetkulcsgenerálás • A szükséges menetkulcsok bitjeinek száma 32*Nb*(Nr+1) • Először a titkosító kulcsból egy kiterjesztett kulcsot generálunk, amely Nb*(Nr+1) darab 4 byte-os szóból áll. Jel: W[i] az i-edik szó. • Ebből választjuk ki a menetkulcsokat, úgy, hogy az első menetkulcs a kiterjesztett kulcs első Nb darab 4 byte-os szava, a második menetkulcs a második Nb darab, stb.
Kulcskiterjesztés • A kulcskiterjesztés során a az 32*Nk bit hosszúságú titkosítókulcsból egy 32*Nb*(Nr+1) hosszúságú kiterjesztett kulcsot hozunk létre • A kiterjesztett kulcs első Nk szava a titkosítókulcs bitjeit tartalmazza • A többit az alábbi módon, rekurzívan definiáljuk
Nk ≤ 6 esetén: • SubByte() a szó minden byte-jára az S-Boxot alkamazza • A RotByte() a négy szón egy szóval való ciklikus baleltolást hajt végre • Rcon(i/Nk) egy menetkonstans, amely Nk-tól függetlenül van definiálva:
Menetkulcskiválasztás • Az i-edik menetkucs a kiterjesztett kulcs W[Nb*i] és W[Nb*(i+1)] közötti része lesz • Például Nb=6 és Nk=4 esetén:
A titkosító algoritmus • Először alkalmazunk egy kulcshozzáadást • Majd jön Nr-1 menet • Végül egy utolsó menet (amelyik kicsit különbözik a többitől)
A Rijndael inverze • Ha az összes transzformáció inverzét elvégezzük fordított sorrendben, akkor visszakapjuk az eredeti szöveget. • Az inverztranszformáció a Rijndael-lel azonos struktúrjúra hozható, de ezzel nem foglalkozunk.