AES kriptográfiai algoritmus Smidla József Rendszer- és Számítástudományi Tanszék Pannon Egyetem
2012. 2. 28.
Smidla József (RSZT)
AES
2012. 2. 28.
1 / 65
Tartalom 1
Bevezetés
2
Alapműveletek Összeadás, kivonás Szorzás
3
Kulcs kiterjesztés
4
Kódolás Kulcs hozzáadása Bájt helyettesítés Sor forgatás Oszlop keverés
5
Dekódolás Inverz sor forgatás Inverz bájt helyettesítés Inverz oszlop keverés
6
Példa Smidla József (RSZT)
AES
2012. 2. 28.
2 / 65
Bevezetés: Élet az AES előtt Előd: DES (Data Encryption System) 1
IBM szakemberei fejlesztették ki
2
Blokk kódoló
3
56 bites kulcs
4
Bit alapú
5
S-dobozok és P-dobozok építik fel
Smidla József (RSZT)
AES
2012. 2. 28.
3 / 65
Bevezetés: Élet az AES előtt Előd: DES (Data Encryption System) 1
IBM szakemberei fejlesztették ki
2
Blokk kódoló
3
56 bites kulcs
4
Bit alapú
5
S-dobozok és P-dobozok építik fel
Problémák 1
Elavult, gyenge
2
Nehezen implementálható
3
Sokan nem bíztak benne
Smidla József (RSZT)
AES
2012. 2. 28.
3 / 65
Az AES születése Az amerikai kormánynak új titkosítási szabványra volt szüksége, amely biztonságosabb, és mindenki megbízik benne. 1
2
1997-ben a NIST (National Institute of Standards and Technology) kriptográfiai versenyt ír ki Elvárások az új szabvánnyal szemben: Szimmetrikus blokk-kódoló Minden részlete legyen nyilvános 128, 192 és 256 bites kulcsok támogatása Hardveresen és szoftveresen hatékonyan megvalósítható Bárki használhassa
3
2000-ben bejelentették, hogy a Rijndael nevű algoritmus nyert, alkotói: Joan Daemen és Vincent Rijmen
Smidla József (RSZT)
AES
2012. 2. 28.
4 / 65
Alapműveletek
Smidla József (RSZT)
AES
2012. 2. 28.
5 / 65
XOR Kizáró vagy: A XOR B = C C akkor és csak akkor igaz, ha A és B nem egyenlőek
Igazságtábla A 0 0 1 1
B 0 1 0 1
A XOR B = C 0 1 1 0
Smidla József (RSZT)
→
A 0 0 1 1
B 0 1 0 1
AES
A XOR B = C 0 1 1 0
C XOR B ≡ A 0 0 1 1
2012. 2. 28.
6 / 65
Alapműveletek: Összeadás, kivonás Alapegység: polinomokat reprezentáló bájtok 0x53 = 01010011 = x 6 + x 4 + x + 1 A műveleteket ilyen polinomok között végezzük, GF(28 ) algebra szerint.
Összeadás, kivonás A ⊕ B = A ⊖ B = A XOR B Példa: 0x53 ⊕ 0xAB = 0x53 ⊖ 0xAB = 01010011 ⊕ 10101011 01010011 10101011 -------11111000 = 0xF8 (x 6 + x 4 + x + 1) ⊕ (x 7 + x 5 + x 3 + x + 1) = x7 + x6 + x5 + x4 + x3 Smidla József (RSZT)
AES
2012. 2. 28.
7 / 65
Alapműveletek: Szorzás Szorozzuk össze az 0x53 és 0xAB által reprezentált polinomokat GF(28 ) algebrában: (x 6 + x 4 + x + 1) ◦ (x 7 + x 5 + x 3 + x + 1) =
Smidla József (RSZT)
AES
2012. 2. 28.
8 / 65
Alapműveletek: Szorzás Szorozzuk össze az 0x53 és 0xAB által reprezentált polinomokat GF(28 ) algebrában: (x 6 + x 4 + x + 1) ◦ (x 7 + x 5 + x 3 + x + 1) = [(x 13 + x 11 +x 8 + x 7 ) ⊕ ( x 11 +x 9 + x 6 + x 5 )] ⊕ [(x 9 + x 7 +x 4 + x 3 ) ⊕( x 7 +x 5 + x 2 + x)] ⊕ (x 6 + x 4 + x + 1) =
Smidla József (RSZT)
AES
2012. 2. 28.
8 / 65
Alapműveletek: Szorzás Szorozzuk össze az 0x53 és 0xAB által reprezentált polinomokat GF(28 ) algebrában: (x 6 + x 4 + x + 1) ◦ (x 7 + x 5 + x 3 + x + 1) = [(x 13 + x 11 +x 8 + x 7 ) ⊕ ( x 11 +x 9 + x 6 + x 5 )] ⊕ [(x 9 + x 7 +x 4 + x 3 ) ⊕( x 7 +x 5 + x 2 + x)] ⊕ (x 6 + x 4 + x + 1) = (x 13 + x 9 +x 8 + x 7 + x 6 + x 5 ) ⊕ ( x 9 + x 5 +x 4 + x 3 + x 2 + x)⊕ (x 6 + x 4 + x + 1) =
Smidla József (RSZT)
AES
2012. 2. 28.
8 / 65
Alapműveletek: Szorzás Szorozzuk össze az 0x53 és 0xAB által reprezentált polinomokat GF(28 ) algebrában: (x 6 + x 4 + x + 1) ◦ (x 7 + x 5 + x 3 + x + 1) = [(x 13 + x 11 +x 8 + x 7 ) ⊕ ( x 11 +x 9 + x 6 + x 5 )] ⊕ [(x 9 + x 7 +x 4 + x 3 ) ⊕( x 7 +x 5 + x 2 + x)] ⊕ (x 6 + x 4 + x + 1) = (x 13 + x 9 +x 8 + x 7 + x 6 + x 5 ) ⊕ ( x 9 + x 5 +x 4 + x 3 + x 2 + x)⊕ (x 6 + x 4 + x + 1) = (x 13 + x 8 + x 7 + x 6 + x 4 +x 3 + x 2 + x ) ⊕ ( x 6 + x 4 + x +1) =
Smidla József (RSZT)
AES
2012. 2. 28.
8 / 65
Alapműveletek: Szorzás Szorozzuk össze az 0x53 és 0xAB által reprezentált polinomokat GF(28 ) algebrában: (x 6 + x 4 + x + 1) ◦ (x 7 + x 5 + x 3 + x + 1) = [(x 13 + x 11 +x 8 + x 7 ) ⊕ ( x 11 +x 9 + x 6 + x 5 )] ⊕ [(x 9 + x 7 +x 4 + x 3 ) ⊕( x 7 +x 5 + x 2 + x)] ⊕ (x 6 + x 4 + x + 1) = (x 13 + x 9 +x 8 + x 7 + x 6 + x 5 ) ⊕ ( x 9 + x 5 +x 4 + x 3 + x 2 + x)⊕ (x 6 + x 4 + x + 1) = (x 13 + x 8 + x 7 + x 6 + x 4 +x 3 + x 2 + x ) ⊕ ( x 6 + x 4 + x +1) = x 13 + x 8 + x 7 + x 3 + x 2 + 1
Smidla József (RSZT)
AES
2012. 2. 28.
8 / 65
Alapműveletek: Szorzás Szorozzuk össze az 0x53 és 0xAB által reprezentált polinomokat GF(28 ) algebrában: (x 6 + x 4 + x + 1) ◦ (x 7 + x 5 + x 3 + x + 1) = [(x 13 + x 11 +x 8 + x 7 ) ⊕ ( x 11 +x 9 + x 6 + x 5 )] ⊕ [(x 9 + x 7 +x 4 + x 3 ) ⊕( x 7 +x 5 + x 2 + x)] ⊕ (x 6 + x 4 + x + 1) = (x 13 + x 9 +x 8 + x 7 + x 6 + x 5 ) ⊕ ( x 9 + x 5 +x 4 + x 3 + x 2 + x)⊕ (x 6 + x 4 + x + 1) = (x 13 + x 8 + x 7 + x 6 + x 4 +x 3 + x 2 + x ) ⊕ ( x 6 + x 4 + x +1) = x 13 + x 8 + x 7 + x 3 + x 2 + 1 Viszont a szorzást modulo aritmetikával végezzük el: (x 6 + x 4 + x + 1) ◦ (x 7 + x 5 + x 3 + x + 1) mod (x 8 + x 4 + x 3 + x + 1) x 13 + x 8 + x 7 + x 3 + x 2 + 1 mod (x 8 + x 4 + x 3 + x + 1) Smidla József (RSZT)
AES
2012. 2. 28.
8 / 65
Alapműveletek: Szorzás x 13 + x 8 + x 7 + x 3 + x 2 + 1 mod (x 8 + x 4 + x 3 + x + 1) 1
Szorozzuk be az x 8 + x 4 + x 3 + x + 1 polinomot x 5 -el, és a kapott polinomot adjuk hozzá az eredetihez:
Smidla József (RSZT)
AES
2012. 2. 28.
9 / 65
Alapműveletek: Szorzás x 13 + x 8 + x 7 + x 3 + x 2 + 1 mod (x 8 + x 4 + x 3 + x + 1) 1
Szorozzuk be az x 8 + x 4 + x 3 + x + 1 polinomot x 5 -el, és a kapott polinomot adjuk hozzá az eredetihez: ( x 13 + x 8 +x 7 + x 3 + x 2 + 1) ⊕ ( x 13 +x 9 + x 8 +x 6 + x 5 ) = x9 + x7 + x6 + x5 + x3 + x2 + 1
Smidla József (RSZT)
AES
2012. 2. 28.
9 / 65
Alapműveletek: Szorzás x 13 + x 8 + x 7 + x 3 + x 2 + 1 mod (x 8 + x 4 + x 3 + x + 1) 1
Szorozzuk be az x 8 + x 4 + x 3 + x + 1 polinomot x 5 -el, és a kapott polinomot adjuk hozzá az eredetihez: ( x 13 + x 8 +x 7 + x 3 + x 2 + 1) ⊕ ( x 13 +x 9 + x 8 +x 6 + x 5 ) = x9 + x7 + x6 + x5 + x3 + x2 + 1
2
Szorozzuk be az x 8 + x 4 + x 3 + x + 1 polinomot x-el, és a kapott polinomot adjuk hozzá az eredményhez:
Smidla József (RSZT)
AES
2012. 2. 28.
9 / 65
Alapműveletek: Szorzás x 13 + x 8 + x 7 + x 3 + x 2 + 1 mod (x 8 + x 4 + x 3 + x + 1) 1
Szorozzuk be az x 8 + x 4 + x 3 + x + 1 polinomot x 5 -el, és a kapott polinomot adjuk hozzá az eredetihez: ( x 13 + x 8 +x 7 + x 3 + x 2 + 1) ⊕ ( x 13 +x 9 + x 8 +x 6 + x 5 ) = x9 + x7 + x6 + x5 + x3 + x2 + 1
2
Szorozzuk be az x 8 + x 4 + x 3 + x + 1 polinomot x-el, és a kapott polinomot adjuk hozzá az eredményhez: ( x 9 +x 7 + x 6 + x 5 +x 3 + x 2 +1) ⊕ ( x 9 + x 5 +x 4 + x 2 +x) = x7 + x6 + x4 + x3 + x + 1
Smidla József (RSZT)
AES
2012. 2. 28.
9 / 65
Alapműveletek: Szorzás x 13 + x 8 + x 7 + x 3 + x 2 + 1 mod (x 8 + x 4 + x 3 + x + 1) 1
Szorozzuk be az x 8 + x 4 + x 3 + x + 1 polinomot x 5 -el, és a kapott polinomot adjuk hozzá az eredetihez: ( x 13 + x 8 +x 7 + x 3 + x 2 + 1) ⊕ ( x 13 +x 9 + x 8 +x 6 + x 5 ) = x9 + x7 + x6 + x5 + x3 + x2 + 1
2
Szorozzuk be az x 8 + x 4 + x 3 + x + 1 polinomot x-el, és a kapott polinomot adjuk hozzá az eredményhez: ( x 9 +x 7 + x 6 + x 5 +x 3 + x 2 +1) ⊕ ( x 9 + x 5 +x 4 + x 2 +x) = x7 + x6 + x4 + x3 + x + 1
Tehát: (x 6 + x 4 + x + 1) ◦ (x 7 + x 5 + x 3 + x + 1) mod (x 8 + x 4 + x 3 + x + 1) = x7 + x6 + x4 + x3 + x + 1 Smidla József (RSZT)
AES
2012. 2. 28.
9 / 65
Alapműveletek: Szorzás Szorzás bitműveletek segítségével: 0x53 ◦ 0xAB mod 0x11B = 01010011 ◦ 10101011 mod 100011011
Smidla József (RSZT)
AES
2012. 2. 28.
10 / 65
Alapműveletek: Szorzás Szorzás bitműveletek segítségével: 0x53 ◦ 0xAB mod 0x11B = 01010011 ◦ 10101011 mod 100011011 Végezzük el a szorzást: Az 10101011 bitsorozat 7., 5., 3., 1. és 0. bitje 1 −→ Toljuk el a 01010011 bitsorozatot 7, 5, 3, 1, és 0 pozícióval, és adjuk össze a keletkezett bitsorozatokat
Smidla József (RSZT)
AES
2012. 2. 28.
10 / 65
Alapműveletek: Szorzás Szorzás bitműveletek segítségével: 0x53 ◦ 0xAB mod 0x11B = 01010011 ◦ 10101011 mod 100011011 Végezzük el a szorzást: Az 10101011 bitsorozat 7., 5., 3., 1. és 0. bitje 1 −→ Toljuk el a 01010011 bitsorozatot 7, 5, 3, 1, és 0 pozícióval, és adjuk össze a keletkezett bitsorozatokat 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 1 0 1 0 0 1 1 0 0 1 0 1 0 0 1 1 XOR ----------------------------0 1 0 0 0 0 1 1 0 0 0 1 1 0 1
Smidla József (RSZT)
AES
Eltolva 7 bittel Eltolva 5 bittel Eltolva 3 bittel Eltolva 1 bittel Eltolva 0 bittel
2012. 2. 28.
10 / 65
Alapműveletek: Szorzás Szorzás bitműveletek segítségével: 0x53 ◦ 0xAB mod 0x11B = 01010011 ◦ 10101011 mod 100011011 Végezzük el a szorzást: Az 10101011 bitsorozat 7., 5., 3., 1. és 0. bitje 1 −→ Toljuk el a 01010011 bitsorozatot 7, 5, 3, 1, és 0 pozícióval, és adjuk össze a keletkezett bitsorozatokat 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 1 0 1 0 0 1 1 0 0 1 0 1 0 0 1 1 XOR ----------------------------0 1 0 0 0 0 1 1 0 0 0 1 1 0 1
Eltolva 7 bittel Eltolva 5 bittel Eltolva 3 bittel Eltolva 1 bittel Eltolva 0 bittel
1-esek indexei: 13, 8, 7, 3, 2, 0 A bitsorozat által reprezentált polinom: x 13 + x 8 + x 7 + x 3 + x 2 + 1 Smidla József (RSZT)
AES
2012. 2. 28.
10 / 65
Alapműveletek: Szorzás A szorzás első lépéseként kapott bitsorozat: 10000110001101 Van a 7-esnél nagyobb pozíción 1-es bit −→ modulo aritmetika
Smidla József (RSZT)
AES
2012. 2. 28.
11 / 65
Alapműveletek: Szorzás A szorzás első lépéseként kapott bitsorozat: 10000110001101 Van a 7-esnél nagyobb pozíción 1-es bit −→ modulo aritmetika Toljuk el az 100011011 bitsorozatot úgy, hogy a legmagasabb helyi értékű bitje az előző bitsorozat 1-es bitjeire illeszkedjen, majd a kapott bitsorozatokat adjuk össze az eredetivel
Smidla József (RSZT)
AES
2012. 2. 28.
11 / 65
Alapműveletek: Szorzás A szorzás első lépéseként kapott bitsorozat: 10000110001101 Van a 7-esnél nagyobb pozíción 1-es bit −→ modulo aritmetika Toljuk el az 100011011 bitsorozatot úgy, hogy a legmagasabb helyi értékű bitje az előző bitsorozat 1-es bitjeire illeszkedjen, majd a kapott bitsorozatokat adjuk össze az eredetivel 1 0 0 0 0 1 1 0 0 0 1 1 0 1 Redukálandó bitsorozat 1 0 0 0 1 1 0 1 1 0 0 0 0 0 5-el eltolt redukáló bitsorozat --------------------------- XOR
Smidla József (RSZT)
AES
2012. 2. 28.
11 / 65
Alapműveletek: Szorzás A szorzás első lépéseként kapott bitsorozat: 10000110001101 Van a 7-esnél nagyobb pozíción 1-es bit −→ modulo aritmetika Toljuk el az 100011011 bitsorozatot úgy, hogy a legmagasabb helyi értékű bitje az előző bitsorozat 1-es bitjeire illeszkedjen, majd a kapott bitsorozatokat adjuk össze az eredetivel 1 0 0 0 0 1 1 0 0 0 1 1 0 1 Redukálandó bitsorozat 1 0 0 0 1 1 0 1 1 0 0 0 0 0 5-el eltolt redukáló bitsorozat --------------------------- XOR 0 0 0 0 1 0 1 1 1 0 1 1 0 1 Legmagasabb 1-es bit: 9.
Smidla József (RSZT)
AES
2012. 2. 28.
11 / 65
Alapműveletek: Szorzás A szorzás első lépéseként kapott bitsorozat: 10000110001101 Van a 7-esnél nagyobb pozíción 1-es bit −→ modulo aritmetika Toljuk el az 100011011 bitsorozatot úgy, hogy a legmagasabb helyi értékű bitje az előző bitsorozat 1-es bitjeire illeszkedjen, majd a kapott bitsorozatokat adjuk össze az eredetivel 1 0 0 0 0 1 1 0 0 0 1 1 0 1 Redukálandó bitsorozat 1 0 0 0 1 1 0 1 1 0 0 0 0 0 5-el eltolt redukáló bitsorozat --------------------------- XOR 0 0 0 0 1 0 1 1 1 0 1 1 0 1 Legmagasabb 1-es bit: 9. 1 0 0 0 1 1 0 1 1 0 1-el eltolt redukáló bitsorozat --------------------------- XOR
Smidla József (RSZT)
AES
2012. 2. 28.
11 / 65
Alapműveletek: Szorzás A szorzás első lépéseként kapott bitsorozat: 10000110001101 Van a 7-esnél nagyobb pozíción 1-es bit −→ modulo aritmetika Toljuk el az 100011011 bitsorozatot úgy, hogy a legmagasabb helyi értékű bitje az előző bitsorozat 1-es bitjeire illeszkedjen, majd a kapott bitsorozatokat adjuk össze az eredetivel 1 0 0 0 0 1 1 0 0 0 1 1 0 1 Redukálandó bitsorozat 1 0 0 0 1 1 0 1 1 0 0 0 0 0 5-el eltolt redukáló bitsorozat --------------------------- XOR 0 0 0 0 1 0 1 1 1 0 1 1 0 1 Legmagasabb 1-es bit: 9. 1 0 0 0 1 1 0 1 1 0 1-el eltolt redukáló bitsorozat --------------------------- XOR 0 0 0 0 0 0 1 1 0 1 1 0 1 1 Legmagasabb 1-es bit: 7.
Smidla József (RSZT)
AES
2012. 2. 28.
11 / 65
Alapműveletek: Szorzás A szorzás első lépéseként kapott bitsorozat: 10000110001101 Van a 7-esnél nagyobb pozíción 1-es bit −→ modulo aritmetika Toljuk el az 100011011 bitsorozatot úgy, hogy a legmagasabb helyi értékű bitje az előző bitsorozat 1-es bitjeire illeszkedjen, majd a kapott bitsorozatokat adjuk össze az eredetivel 1 0 0 0 0 1 1 0 0 0 1 1 0 1 Redukálandó bitsorozat 1 0 0 0 1 1 0 1 1 0 0 0 0 0 5-el eltolt redukáló bitsorozat --------------------------- XOR 0 0 0 0 1 0 1 1 1 0 1 1 0 1 Legmagasabb 1-es bit: 9. 1 0 0 0 1 1 0 1 1 0 1-el eltolt redukáló bitsorozat --------------------------- XOR 0 0 0 0 0 0 1 1 0 1 1 0 1 1 Legmagasabb 1-es bit: 7.
Smidla József (RSZT)
AES
X
2012. 2. 28.
11 / 65
Alapműveletek: Szorzás A szorzás első lépéseként kapott bitsorozat: 10000110001101 Van a 7-esnél nagyobb pozíción 1-es bit −→ modulo aritmetika Toljuk el az 100011011 bitsorozatot úgy, hogy a legmagasabb helyi értékű bitje az előző bitsorozat 1-es bitjeire illeszkedjen, majd a kapott bitsorozatokat adjuk össze az eredetivel 1 0 0 0 0 1 1 0 0 0 1 1 0 1 Redukálandó bitsorozat 1 0 0 0 1 1 0 1 1 0 0 0 0 0 5-el eltolt redukáló bitsorozat --------------------------- XOR 0 0 0 0 1 0 1 1 1 0 1 1 0 1 Legmagasabb 1-es bit: 9. 1 0 0 0 1 1 0 1 1 0 1-el eltolt redukáló bitsorozat --------------------------- XOR 0 0 0 0 0 0 1 1 0 1 1 0 1 1 Legmagasabb 1-es bit: 7.
X
A kapott polinom: x 7 + x 6 + x 4 + x 3 + x + 1 Smidla József (RSZT)
AES
2012. 2. 28.
11 / 65
Kulcs kiterjesztés
Smidla József (RSZT)
AES
2012. 2. 28.
12 / 65
Kulcs kiterjesztés
A 128 bites kulcsot ki kell terjeszteni, hogy a titkosítás minden iterációjában más kulcs értékeket használjunk A kulcs: k0 , k1 , k2 , k3 , k4 , k5 , k6 , k7 , k8 , k9 , k10 , k11 , k12 , k13 , k14 , k15 A kulcs bájtjait 4 sorba rendezzük: k0 k1 k2 k3
k4 k5 k6 k7
k8 k9 k10 k11
k12 k13 k14 k15
Ezt a kulcs táblázatot kiterjesztjük 44 oszlopra w [i]: a kulcs táblázat i. oszlopa, ahol 0 ≤ i < 44
Smidla József (RSZT)
AES
2012. 2. 28.
13 / 65
Kulcs kiterjesztés
A kulcs oszlop minden i ≥ 4 sorszámú oszlopát a következő módon számoljuk ki: 1 2
Legyen temp = w [i − 1] Ha i osztható 4-el, akkor: a) temp bájtjait forgatjuk: temp = [w0 , w1 , w2 , w3 ] −→ [w1 , w2 , w3 , w0 ] b) temp minden bájtját egy S-doboz segítségével kicseréljük c) temp új első bájtjához hozzáadjuk az x i/4−1 mod (x 8 + x 4 + x 3 + x + 1) polinomot reprezentáló bájtot
3
w [i] = w [i − 4] XOR temp
Smidla József (RSZT)
AES
2012. 2. 28.
14 / 65
Kulcs kiterjesztés példa w[0] 0x0F 0x15 0x71 0xC9
w[1] 0x47 0xD9 0xE8 0x59
Smidla József (RSZT)
w[2] 0x0C 0xB7 0xAD 0xD6
w[3] 0xAF 0x7F 0x67 0x98
AES
w[4]
w[5]
w[6]
w[7]
2012. 2. 28.
15 / 65
Kulcs kiterjesztés példa w[0] 0x0F 0x15 0x71 0xC9 1
w[1] 0x47 0xD9 0xE8 0x59
w[2] 0x0C 0xB7 0xAD 0xD6
w[3] 0xAF 0x7F 0x67 0x98
w[4]
w[5]
w[6]
w[7]
i = 4, temp = [0xAF, 0x7F, 0x67, 0x98], i osztható 4-el
Smidla József (RSZT)
AES
2012. 2. 28.
15 / 65
Kulcs kiterjesztés példa w[0] 0x0F 0x15 0x71 0xC9
w[1] 0x47 0xD9 0xE8 0x59
w[2] 0x0C 0xB7 0xAD 0xD6
w[3] 0xAF 0x7F 0x67 0x98
w[4]
w[5]
w[6]
w[7]
1
i = 4, temp = [0xAF, 0x7F, 0x67, 0x98], i osztható 4-el
2
temp-et forgatjuk: temp = [0x7F, 0x67, 0x98, 0xAF]
Smidla József (RSZT)
AES
2012. 2. 28.
15 / 65
Kulcs kiterjesztés példa w[0] 0x0F 0x15 0x71 0xC9
w[1] 0x47 0xD9 0xE8 0x59
w[2] 0x0C 0xB7 0xAD 0xD6
w[3] 0xAF 0x7F 0x67 0x98
w[4]
w[5]
w[6]
w[7]
1
i = 4, temp = [0xAF, 0x7F, 0x67, 0x98], i osztható 4-el
2
temp-et forgatjuk: temp = [0x7F, 0x67, 0x98, 0xAF]
3
temp bájtjait kicseréljük: temp = [0xD2, 0x85, 0x46, 0x79]
Smidla József (RSZT)
AES
2012. 2. 28.
15 / 65
Kulcs kiterjesztés példa w[0] 0x0F 0x15 0x71 0xC9
w[1] 0x47 0xD9 0xE8 0x59
w[2] 0x0C 0xB7 0xAD 0xD6
w[3] 0xAF 0x7F 0x67 0x98
w[4]
w[5]
w[6]
w[7]
1
i = 4, temp = [0xAF, 0x7F, 0x67, 0x98], i osztható 4-el
2
temp-et forgatjuk: temp = [0x7F, 0x67, 0x98, 0xAF]
3
temp bájtjait kicseréljük: temp = [0xD2, 0x85, 0x46, 0x79]
4
x i /4−1 = x 0 = 1 = 0x01, ezt XOR-oljuk temp első bájtjával: temp = [0xD3, 0x85, 0x46, 0x79]
Smidla József (RSZT)
AES
2012. 2. 28.
15 / 65
Kulcs kiterjesztés példa w[0] 0x0F 0x15 0x71 0xC9
w[1] 0x47 0xD9 0xE8 0x59
w[2] 0x0C 0xB7 0xAD 0xD6
w[3] 0xAF 0x7F 0x67 0x98
w[4]
w[5]
w[6]
w[7]
1
i = 4, temp = [0xAF, 0x7F, 0x67, 0x98], i osztható 4-el
2
temp-et forgatjuk: temp = [0x7F, 0x67, 0x98, 0xAF]
3
temp bájtjait kicseréljük: temp = [0xD2, 0x85, 0x46, 0x79]
4
5
x i /4−1 = x 0 = 1 = 0x01, ezt XOR-oljuk temp első bájtjával: temp = [0xD3, 0x85, 0x46, 0x79] w[4] = w[0] XOR temp = [0xDC, 0x90, 0x37, 0xB0]
Smidla József (RSZT)
AES
2012. 2. 28.
15 / 65
Kulcs kiterjesztés példa w[0] 0x0F 0x15 0x71 0xC9
w[1] 0x47 0xD9 0xE8 0x59
Smidla József (RSZT)
w[2] 0x0C 0xB7 0xAD 0xD6
w[3] 0xAF 0x7F 0x67 0x98
AES
w[4] 0xDC 0x90 0x37 0xB0
w[5]
w[6]
w[7]
2012. 2. 28.
16 / 65
Kulcs kiterjesztés példa w[0] 0x0F 0x15 0x71 0xC9 1
w[1] 0x47 0xD9 0xE8 0x59
w[2] 0x0C 0xB7 0xAD 0xD6
w[3] 0xAF 0x7F 0x67 0x98
w[4] 0xDC 0x90 0x37 0xB0
w[5]
w[6]
w[7]
i = 5, nem osztható 4-el, temp = w[4] = [0xDC, 0x90, 0x37, 0xB0]
Smidla József (RSZT)
AES
2012. 2. 28.
16 / 65
Kulcs kiterjesztés példa w[0] 0x0F 0x15 0x71 0xC9
w[1] 0x47 0xD9 0xE8 0x59
w[2] 0x0C 0xB7 0xAD 0xD6
w[3] 0xAF 0x7F 0x67 0x98
w[4] 0xDC 0x90 0x37 0xB0
w[5]
w[6]
w[7]
1
i = 5, nem osztható 4-el, temp = w[4] = [0xDC, 0x90, 0x37, 0xB0]
2
w[5] = w[1] XOR temp = [0x9B, 0x49, 0xDF, 0xE9]
Smidla József (RSZT)
AES
2012. 2. 28.
16 / 65
Kulcs kiterjesztés példa w[0] 0x0F 0x15 0x71 0xC9
w[1] 0x47 0xD9 0xE8 0x59
w[2] 0x0C 0xB7 0xAD 0xD6
w[3] 0xAF 0x7F 0x67 0x98
w[4] 0xDC 0x90 0x37 0xB0
w[5]
w[6]
w[7]
1
i = 5, nem osztható 4-el, temp = w[4] = [0xDC, 0x90, 0x37, 0xB0]
2
w[5] = w[1] XOR temp = [0x9B, 0x49, 0xDF, 0xE9] w[0] 0x0F 0x15 0x71 0xC9
w[1] 0x47 0xD9 0xE8 0x59
Smidla József (RSZT)
w[2] 0x0C 0xB7 0xAD 0xD6
w[3] 0xAF 0x7F 0x67 0x98 AES
w[4] 0xDC 0x90 0x37 0xB0
w[5] 0x9B 0x49 0xDF 0xE9
w[6]
w[7]
2012. 2. 28.
16 / 65
Kulcs kiterjesztés példa w[0] 0x0F 0x15 0x71 0xC9
w[1] 0x47 0xD9 0xE8 0x59
Smidla József (RSZT)
w[2] 0x0C 0xB7 0xAD 0xD6
w[3] 0xAF 0x7F 0x67 0x98
AES
w[4] 0xDC 0x90 0x37 0xB0
w[5] 0x9B 0x49 0xDF 0xE9
w[6]
w[7]
2012. 2. 28.
17 / 65
Kulcs kiterjesztés példa w[0] 0x0F 0x15 0x71 0xC9 1
w[1] 0x47 0xD9 0xE8 0x59
w[2] 0x0C 0xB7 0xAD 0xD6
w[3] 0xAF 0x7F 0x67 0x98
w[4] 0xDC 0x90 0x37 0xB0
w[5] 0x9B 0x49 0xDF 0xE9
w[6]
w[7]
i = 6, nem osztható 4-el, temp = w[5] = [0x9B, 0x49, 0xDF, 0xE9]
Smidla József (RSZT)
AES
2012. 2. 28.
17 / 65
Kulcs kiterjesztés példa w[0] 0x0F 0x15 0x71 0xC9
w[1] 0x47 0xD9 0xE8 0x59
w[2] 0x0C 0xB7 0xAD 0xD6
w[3] 0xAF 0x7F 0x67 0x98
w[4] 0xDC 0x90 0x37 0xB0
w[5] 0x9B 0x49 0xDF 0xE9
w[6]
w[7]
1
i = 6, nem osztható 4-el, temp = w[5] = [0x9B, 0x49, 0xDF, 0xE9]
2
w[6] = w[2] XOR temp = [0x97, 0xFE, 0x72, 0x3F]
Smidla József (RSZT)
AES
2012. 2. 28.
17 / 65
Kulcs kiterjesztés példa w[0] 0x0F 0x15 0x71 0xC9
w[1] 0x47 0xD9 0xE8 0x59
w[2] 0x0C 0xB7 0xAD 0xD6
w[3] 0xAF 0x7F 0x67 0x98
w[4] 0xDC 0x90 0x37 0xB0
w[5] 0x9B 0x49 0xDF 0xE9
w[6]
w[7]
1
i = 6, nem osztható 4-el, temp = w[5] = [0x9B, 0x49, 0xDF, 0xE9]
2
w[6] = w[2] XOR temp = [0x97, 0xFE, 0x72, 0x3F] w[0] 0x0F 0x15 0x71 0xC9
w[1] 0x47 0xD9 0xE8 0x59
Smidla József (RSZT)
w[2] 0x0C 0xB7 0xAD 0xD6
w[3] 0xAF 0x7F 0x67 0x98 AES
w[4] 0xDC 0x90 0x37 0xB0
w[5] 0x9B 0x49 0xDF 0xE9
w[6] 0x97 0xFE 0x72 0x3F
w[7]
2012. 2. 28.
17 / 65
Kulcs kiterjesztés példa w[0] 0x0F 0x15 0x71 0xC9
w[1] 0x47 0xD9 0xE8 0x59
Smidla József (RSZT)
w[2] 0x0C 0xB7 0xAD 0xD6
w[3] 0xAF 0x7F 0x67 0x98
AES
w[4] 0xDC 0x90 0x37 0xB0
w[5] 0x9B 0x49 0xDF 0xE9
w[6] 0x97 0xFE 0x72 0x3F
w[7]
2012. 2. 28.
18 / 65
Kulcs kiterjesztés példa w[0] 0x0F 0x15 0x71 0xC9 1
w[1] 0x47 0xD9 0xE8 0x59
w[2] 0x0C 0xB7 0xAD 0xD6
w[3] 0xAF 0x7F 0x67 0x98
w[4] 0xDC 0x90 0x37 0xB0
w[5] 0x9B 0x49 0xDF 0xE9
w[6] 0x97 0xFE 0x72 0x3F
w[7]
i = 7, nem osztható 4-el, temp = w[6] = [0x97, 0xFE, 0x72, 0x3F]
Smidla József (RSZT)
AES
2012. 2. 28.
18 / 65
Kulcs kiterjesztés példa w[0] 0x0F 0x15 0x71 0xC9
w[1] 0x47 0xD9 0xE8 0x59
w[2] 0x0C 0xB7 0xAD 0xD6
w[3] 0xAF 0x7F 0x67 0x98
w[4] 0xDC 0x90 0x37 0xB0
w[5] 0x9B 0x49 0xDF 0xE9
w[6] 0x97 0xFE 0x72 0x3F
w[7]
1
i = 7, nem osztható 4-el, temp = w[6] = [0x97, 0xFE, 0x72, 0x3F]
2
w[7] = w[3] XOR temp = [0x38, 0x81, 0x15, 0xA7]
Smidla József (RSZT)
AES
2012. 2. 28.
18 / 65
Kulcs kiterjesztés példa w[0] 0x0F 0x15 0x71 0xC9
w[1] 0x47 0xD9 0xE8 0x59
w[2] 0x0C 0xB7 0xAD 0xD6
w[3] 0xAF 0x7F 0x67 0x98
w[4] 0xDC 0x90 0x37 0xB0
w[5] 0x9B 0x49 0xDF 0xE9
w[6] 0x97 0xFE 0x72 0x3F
w[7]
1
i = 7, nem osztható 4-el, temp = w[6] = [0x97, 0xFE, 0x72, 0x3F]
2
w[7] = w[3] XOR temp = [0x38, 0x81, 0x15, 0xA7] w[0] 0x0F 0x15 0x71 0xC9
w[1] 0x47 0xD9 0xE8 0x59
Smidla József (RSZT)
w[2] 0x0C 0xB7 0xAD 0xD6
w[3] 0xAF 0x7F 0x67 0x98
w[4] 0xDC 0x90 0x37 0xB0
AES
w[5] 0x9B 0x49 0xDF 0xE9
w[6] 0x97 0xFE 0x72 0x3F
w[7] 0x38 0x81 0x15 0xA7
2012. 2. 28.
18 / 65
Kódolás
Smidla József (RSZT)
AES
2012. 2. 28.
19 / 65
Kódolás 1 2 3
Beolvassuk a kódolandó 16 bájtos blokkot az állapot táblázatba Az állapothoz hozzáadjuk a kulcs táblázat [0-3]-as oszlopait Végrehajtunk 9 iterációt, jelölje i az aktuális iteráció sorszámát, és i értéke 1-től 9-ig halad a) b) c) d)
Bájt csere Sorok eltolása Oszlopok keverése Az állapothoz hozzáadjuk a kulcs táblázat [i*4, (i+1)*4-1] oszlopait
4
Bájt csere
5
Sorok eltolása
6
Az állapothoz hozzáadjuk a kulcs táblázat [40, 43]-as oszlopait
A kulcs hozzáadása után 10 iterációt hajtunk végre, de az utolsóból kihagyjuk az oszlopok keverését. Smidla József (RSZT)
AES
2012. 2. 28.
20 / 65
Inicializálás
Bemenet: 16 bájtos blokk, és 16 bájtos kulcs Bemenet: a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 A bemenetet egy 4*4-es táblázatba rendezzük
a0 a1 a2 a3
a4 a5 a6 a7
a8 a9 a10 a11
a12 a13 a14 a15
A titkosító algoritmus ezen táblázaton végez el különféle transzformációkat.
Smidla József (RSZT)
AES
2012. 2. 28.
21 / 65
Kulcs hozzáadása A kódolás i. iterációjában a kiterjesztett kulcs [i ∗ 4, (i + 1) ∗ 4 − 1] oszlopait hozzáadjuk a jelenlegi állapot oszlopaihoz. s0,0 s1,0 s2,0 s3,0
s0,1 s1,1 s2,1 s3,1
s0,2 s1,2 s2,2 s3,2
s0,0 ⊕ w0,i s1,0 ⊕ w1,i s2,0 ⊕ w2,i s3,0 ⊕ w3,i
Smidla József (RSZT)
s0,3 s1,3 s2,3 s3,3
w0,i w1,i ⊕ w2,i w3,i
s0,1 ⊕ w0,i +1 s1,1 ⊕ w1,i +1 s2,1 ⊕ w2,i +1 s3,1 ⊕ w3,i +1
w0,i +1 w1,i +1 w2,i +1 w3,i +1
s0,2 ⊕ w0,i +2 s1,2 ⊕ w1,i +2 s2,2 ⊕ w2,i +2 s3,2 ⊕ w3,i +2
AES
w0,i +2 w1,i +2 w2,i +2 w3,i +2
w0,i +3 w1,i +3 w2,i +3 w3,i +3
=
s0,3 ⊕ w0,i +3 s1,3 ⊕ w1,i +3 s2,3 ⊕ w2,i +3 s3,3 ⊕ w3,i +3
2012. 2. 28.
22 / 65
Bájt helyettesítés
Minden bájt értékét lecseréljük egy S-doboz szerint.
s0,0 s1,0 s2,0 s3,0
s0,1 s1,1 s2,1 s3,1
s0,2 s1,2 s2,2 s3,2
s0,3 s1,3 s2,3 s3,3
′
=⇒
s0,0 ′ s1,0 ′ s2,0 ′ s3,0
′
s0,1 ′ s1,1 ′ s2,1 ′ s3,1
′
s0,2 ′ s1,2 ′ s2,2 ′ s3,2
′
s0,3 ′ s1,3 ′ s2,3 ′ s3,3
′
Ahol si ,j = S-doboz(si ,j )
Smidla József (RSZT)
AES
2012. 2. 28.
23 / 65
Bájt helyettesítés S-doboz: 0 1 2 3 4 5 6 7 8 9 A B C D E F
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
63 CA B7 04 09 53 D0 51 CD 60 E0 E7 BA 70 E1 8C
7C 82 FD C7 83 D1 EF A3 0C 81 32 C8 78 3E F8 A1
77 C9 93 23 2C 00 AA 40 13 4F 3A 37 25 B5 98 89
7B 7D 26 C3 1A ED FB 8F EC DC 0A 6D 2E 66 11 0D
F2 FA 36 18 1B 20 43 92 5F 22 49 8D 1C 48 69 BF
6B 59 3F 96 6E FC 4D 9D 97 2A 06 D5 A6 03 D9 E6
6F 47 F7 05 5A B1 33 38 44 90 24 4E B4 F6 8E 42
C5 F0 CC 9A A0 5B 85 F5 17 88 5C A9 C6 0E 94 68
30 AD 34 07 52 6A 45 BC C4 46 C2 6C E8 61 9B 41
01 D4 A5 12 3B CB F9 B6 A7 EE D3 56 DD 35 1E 99
67 A2 E5 80 D6 BE 02 DA 7E B8 AC F4 74 57 87 2D
2B AF F1 E2 B3 39 7F 21 3D 14 62 EA 1F B9 E9 0F
FE 9C 71 EB 29 4A 50 10 64 DE 91 65 4B 86 CE B0
D7 A4 D8 27 E3 4C 3C FF 5D 5E 95 7A BD C1 55 54
AB 72 31 B2 2F 58 9F F3 19 0B E4 AE 8B 1D 28 BB
76 C0 15 75 84 CF A8 D2 73 DB 79 08 8A 9E DF 16
Példa: 0x13-at 0x7D-re helyettesítjük, azaz az 1-es sor és 3-as oszlopában lévő elemre. Smidla József (RSZT)
AES
2012. 2. 28.
24 / 65
Sor forgatás
A második sor elemeit 1-el balra forgatjuk, a harmadik sort 2-vel, a negyediket 3-al: s0,0 s1,0 s2,0 s3,0
s0,1 s1,1 s2,1 s3,1
Smidla József (RSZT)
s0,2 s1,2 s2,2 s3,2
s0,3 s1,3 s2,3 s3,3
=⇒
AES
s0,0 s1,1 s2,2 s3,3
s0,1 s1,2 s2,3 s3,0
s0,2 s1,3 s2,0 s3,1
s0,3 s1,0 s2,1 s3,2
2012. 2. 28.
25 / 65
Oszlop keverés
Az állapot táblázat c. oszlopának elemeit az alábbi módon keverjük össze: ′ s0,c = (0x02 ◦ s0,c ) ⊕ (0x03 ◦ s1,c ) ⊕ s2,c ⊕ s3,c ′ s1,c = s0,c ⊕ (0x02 ◦ s1,c ) ⊕ (0x03 ◦ s2,c ) ⊕ s3,c ′ s2,c = s0,c ⊕ s1,c ⊕ (0x02 ◦ s2,c ) ⊕ (0x03 ◦ s3,c ) ′ s3,c = (0x03 ◦ s0,c ) ⊕ s1,c ⊕ s2,c ⊕ (0x02 ◦ s2,c ) s0,0 s1,0 s2,0 s3,0
s0,1 s1,1 s2,1 s3,1
Smidla József (RSZT)
s0,2 s1,2 s2,2 s3,2
s0,3 s1,3 s2,3 s3,3
′
=⇒
AES
s0,0 ′ s1,0 ′ s2,0 ′ s3,0
′
s0,1 ′ s1,1 ′ s2,1 ′ s3,1
′
s0,2 ′ s1,2 ′ s2,2 ′ s3,2
′
s0,3 ′ s1,3 ′ s2,3 ′ s3,3
2012. 2. 28.
26 / 65
Dekódolás
Smidla József (RSZT)
AES
2012. 2. 28.
27 / 65
Dekódolás
Az üzenet dekódolásához a kódolási lépések inverzét kell végrehajtani. Ugyanazt a kiterjesztett kulcs táblázatot használjuk, amit a kódoló is alkalmazott. Tudjuk, hogy A XOR B = C, és C XOR B = A, azaz ha egy kulcs bitsorozatot 2x XOR-olunk egy A bitsorozathoz, akkor visszakapjuk az eredeti bitsorozatot → A kulcs táblázat sorait visszafele haladva kell hozzáadni az állapothoz. A kódolásnál alkalmazott lépések inverzeit fordított sorrendben alkalmazzuk.
Smidla József (RSZT)
AES
2012. 2. 28.
28 / 65
Dekódolás
1 2 3
Beolvassuk a dekódolandó 16 bájtos blokkot az állapot táblázatba Az állapothoz hozzáadjuk a kulcs táblázat [40-43]-as oszlopait Végrehajtunk 9 iterációt, jelölje i az aktuális iteráció sorszámát, és i értéke 9-től visszafele halad 1-ig a) b) c) d)
Inverz sor forgatás Inverz bájt csere Az állapothoz hozzáadjuk a kulcs táblázat [i*4, (i+1)*4-1] oszlopait Inverz oszlop keverés
4
Inverz sor forgatás
5
Inverz bájt csere
6
Az állapothoz hozzáadjuk a kulcs táblázat [0, 3]-as oszlopait
Smidla József (RSZT)
AES
2012. 2. 28.
29 / 65
Inverz sor forgatás
A kódolásnál használt sor forgatás inverze: A sorokat a másik irányba kell forgatni. s0,0 s1,0 s2,0 s3,0
s0,1 s1,1 s2,1 s3,1
Smidla József (RSZT)
s0,2 s1,2 s2,2 s3,2
s0,3 s1,3 s2,3 s3,3
=⇒
AES
s0,0 s1,3 s2,2 s3,1
s0,1 s1,0 s2,3 s3,2
s0,2 s1,1 s2,0 s3,3
s0,3 s1,2 s2,1 s3,0
2012. 2. 28.
30 / 65
Inverz bájt helyettesítés Az állapot bájtjait az inverz S-doboz alapján cseréljük ki. Inverz S-doboz:
0 1 2 3 4 5 6 7 8 9 A B C D E F
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
52 7C 54 08 72 6C 90 D0 3A 96 47 FC 1F 60 A0 17
09 E3 7B 2E F8 70 D8 2C 91 AC F1 56 DD 51 E0 2B
6A 39 94 A1 F6 48 AB 1E 11 74 1A 3E A8 7F 3B 04
D5 82 32 66 64 50 00 8F 41 22 71 4B 33 A9 4D 7E
30 9B A6 28 86 FD 8C CA 4F E7 1D C6 88 19 AE BA
36 2F C2 D9 68 ED BC 3F 67 AD 29 D2 07 B5 2A 77
A5 FF 23 24 98 B9 D3 0F DC 35 C5 79 C7 4A F5 D6
38 87 3D B2 16 DA 0A 02 EA 85 89 20 31 0D B0 26
BF 34 EE 76 D4 5E F7 C1 97 E2 6F 9A B1 2D C8 E1
40 8E 4C 5B A4 15 E4 AF F2 F9 B7 DB 12 E5 EB 69
A3 43 95 A2 5C 46 58 BD CF 37 62 C0 10 7A BB 14
9E 44 0B 49 CC 57 05 03 CE E8 0E FE 59 9F 3C 63
81 C4 42 6D 5D A7 B8 01 F0 1C AA 78 27 93 83 55
F3 DE FA 8B 65 8D B3 13 B4 75 18 CD 80 C9 53 21
D7 E9 C3 D1 B6 9D 45 8A E6 DF BE 5A EC 9C 99 0C
FB CB 4E 25 92 84 06 6B 73 6E 1B F4 5F EF 61 7D
Smidla József (RSZT)
AES
2012. 2. 28.
31 / 65
Inverz oszlop keverés
Az állapot táblázat c. oszlopának elemeit az alábbi módon keverjük össze: ′ s0,c = (0x0E ◦ s0,c ) ⊕ (0x0B ◦ s1,c ) ⊕ (0x0D ◦ s2,c ) ⊕ (0x09 ◦ s3,c ) ′ s1,c = (0x09 ◦ s0,c ) ⊕ (0x0E ◦ s1,c ) ⊕ (0x0B ◦ s2,c ) ⊕ (0x0D ◦ s3,c ) ′ s2,c = (0x0D ◦ s0,c ) ⊕ (0x09 ◦ s1,c ) ⊕ (0x0E ◦ s2,c ) ⊕ (0x0B ◦ s3,c ) ′ s3,c = (0x0B ◦ s0,c ) ⊕ (0x0D ◦ s1,c ) ⊕ (0x09 ◦ s2,c ) ⊕ (0x0E ◦ s3,c ) s0,0 s1,0 s2,0 s3,0
s0,1 s1,1 s2,1 s3,1
Smidla József (RSZT)
s0,2 s1,2 s2,2 s3,2
s0,3 s1,3 s2,3 s3,3
′
=⇒
AES
s0,0 ′ s1,0 ′ s2,0 ′ s3,0
′
s0,1 ′ s1,1 ′ s2,1 ′ s3,1
′
s0,2 ′ s1,2 ′ s2,2 ′ s3,2
′
s0,3 ′ s1,3 ′ s2,3 ′ s3,3
2012. 2. 28.
32 / 65
Példa
Smidla József (RSZT)
AES
2012. 2. 28.
33 / 65
Példa Kódoljuk a (61 62 63 64 65 66 67 üzenetet a (0F 15 71 C9 47 D9 E8 59 0C B7 segítségével! 0x61 0x62 1 A kezdő állapot táblázat: 0x63 0x64
2
A kulcs táblázat első 4 oszlopa:
Smidla József (RSZT)
68 69 6A 6B 6C 6D 6E 6F 70) AD D6 AF 7F 67 98) kulcs 0x65 0x66 0x67 0x68
0x69 0x6A 0x6B 0x6C
0x6D 0x6E 0x6F 0x70
0x0F 0x15 0x71 0xC9
0x47 0xD9 0xE8 0x59
0x0C 0xB7 0xAD 0xD6
AES
0xAF 0x7F 0x67 0x98
2012. 2. 28.
34 / 65
Példa: kulcs kiterjesztés 1
temp = w[3] = (0xAF 0x7F 0x67 0x98)
2
temp forgatása: temp = (0x7F 0x67 0x98 0xAF)
3
4 5
temp bájtjainak helyettesítése S-dobozzal: temp = (0xD2 0x85 0x46 0x79) temp[0]-hoz hozzáadunk 0x01-et: temp = (0xD3 0x85 0x46 0x79) w[4] = w[0] XOR temp, w[5] = w[1] XOR w[4], w[6] = w[2] XOR w[5], w[7] = w[3] XOR w[6]
A kulcs táblázat első 8 oszlopa: w[0] 0x0F 0x15 0x71 0xC9
w[1] 0x47 0xD9 0xE8 0x59
Smidla József (RSZT)
w[2] 0x0C 0xB7 0xAD 0xD6
w[3] 0xAF 0x7F 0x67 0x98
w[4] 0xDC 0x90 0x37 0xB0
AES
w[5] 0x9B 0x49 0xDF 0xE9
w[6] 0x97 0xFE 0x72 0x3F
w[7] 0x38 0x81 0x15 0xA7
2012. 2. 28.
35 / 65
Példa: kulcs kiterjesztés 1
temp = w[7] = (0x38 0x81 0x15 0xA7)
2
temp forgatása: temp = (0x81 0x15 0xA7 0x38)
3
4 5
temp bájtjainak helyettesítése S-dobozzal: temp = (0x0C 0x59 0x5C 0x07) temp[0]-hoz hozzáadunk 0x02-t: temp = (0x0E 0x59 0x5C 0x07) w[8] = w[4] XOR temp, w[9] = w[5] XOR w[8], w[10] = w[6] XOR w[9], w[11] = w[7] XOR w[10]
A kulcs táblázat [4,11] oszlopai: w[4] 0xDC 0x90 0x37 0xB0
w[5] 0x9B 0x49 0xDF 0xE9
Smidla József (RSZT)
w[6] 0x97 0xFE 0x72 0x3F
w[7] 0x38 0x81 0x15 0xA7
w[8] 0xD2 0xC9 0x6B 0xB7
AES
w[9] 0x49 0x80 0xB4 0x5E
w[10] 0xDE 0x7E 0xC6 0x61
w[11] 0xE6 0xFF 0xD3 0xC6
2012. 2. 28.
36 / 65
Példa: kulcs kiterjesztés 1
temp = w[11] = (0xE6 0xFF 0xD3 0xC6)
2
temp forgatása: temp = (0xFF 0xD3 0xC6 0xE6 )
3
4 5
temp bájtjainak helyettesítése S-dobozzal: temp = (0x16 0x66 0xB4 0x8E) temp[0]-hoz hozzáadunk 0x04-t: temp = (0x12 0x66 0xB4 0x8E) w[12] = w[8] XOR temp, w[13] = w[9] XOR w[12], w[14] = w[10] XOR w[13], w[15] = w[11] XOR w[14]
A kulcs táblázat [8,15] oszlopai: w[8] 0xD2 0xC9 0x6B 0xB7
w[9] 0x49 0x80 0xB4 0x5E
Smidla József (RSZT)
w[10] 0xDE 0x7E 0xC6 0x61
w[11] 0xE6 0xFF 0xD3 0xC6
w[12] 0xC0 0xAF 0xDF 0x39 AES
w[13] 0x89 0x2F 0x6B 0x67
w[14] 0x57 0x51 0xAD 0x06
w[15] 0xB1 0xAE 0x7E 0xC0
2012. 2. 28.
37 / 65
Példa: kulcs kiterjesztés 1
temp = w[15] = (0xB1 0xAE 0x7E 0xC0)
2
temp forgatása: temp = (0xAE 0x7E 0xC0 0xB1)
3
4 5
temp bájtjainak helyettesítése S-dobozzal: temp = (0xE4 0xF3 0xBA 0xC8) temp[0]-hoz hozzáadunk 0x08-t: temp = (0xEC 0xF3 0xBA 0xC8) w[16] = w[12] XOR temp, w[17] = w[13] XOR w[16], w[18] = w[14] XOR w[17], w[19] = w[15] XOR w[18]
A kulcs táblázat [12,19] oszlopai: w[12] 0xC0 0xAF 0xDF 0x39
w[13] 0x89 0x2F 0x6B 0x67
Smidla József (RSZT)
w[14] 0x57 0x51 0xAD 0x06
w[15] 0xB1 0xAE 0x7E 0xC0
w[16] 0x2C 0x5C 0x65 0xF1
AES
w[17] 0xA5 0x73 0x0E 0x96
w[18] 0xF2 0x22 0xA3 0x90
w[19] 0x43 0x8C 0xDD 0x50
2012. 2. 28.
38 / 65
Példa: kulcs kiterjesztés 1
temp = w[19] = (0x43 0x8C 0xDD 0x50)
2
temp forgatása: temp = (0x8C 0xDD 0x50 0x43)
3
4 5
temp bájtjainak helyettesítése S-dobozzal: temp = (0x64 0xC1 0x53 0x1A) temp[0]-hoz hozzáadunk 0x10-t: temp = (0x74 0xC1 0x53 0x1A) w[20] = w[16] XOR temp, w[21] = w[17] XOR w[20], w[22] = w[18] XOR w[21], w[23] = w[19] XOR w[22]
A kulcs táblázat [16,23] oszlopai: w[16] 0x2C 0x5C 0x65 0xF1
w[17] 0xA5 0x73 0x0E 0x96
Smidla József (RSZT)
w[18] 0xF2 0x22 0xA3 0x90
w[19] 0x43 0x8C 0xDD 0x50
w[20] 0x58 0x9D 0x36 0xEB
AES
w[21] 0xFD 0xEE 0x38 0x7D
w[22] 0x0F 0xCC 0x9B 0xED
w[23] 0x4C 0x40 0x46 0xBD
2012. 2. 28.
39 / 65
Példa: kulcs kiterjesztés 1
temp = w[23] = (0x4C 0x40 0x46 0xBD)
2
temp forgatása: temp = (0x40 0x46 0xBD 0x4C)
3
4 5
temp bájtjainak helyettesítése S-dobozzal: temp = (0x09 0x5A 0x7A 0x29) temp[0]-hoz hozzáadunk 0x20-t: temp = (0x29 0x5A 0x7A 0x29) w[24] = w[20] XOR temp, w[25] = w[21] XOR w[24], w[26] = w[22] XOR w[25], w[27] = w[23] XOR w[26]
A kulcs táblázat [20,27] oszlopai: w[20] 0x58 0x9D 0x36 0xEB
w[21] 0xFD 0xEE 0x38 0x7D
Smidla József (RSZT)
w[22] 0x0F 0xCC 0x9B 0xED
w[23] 0x4C 0x40 0x46 0xBD AES
w[24] 0x71 0xC7 0x4C 0xC2
w[25] 0x8C 0x29 0x74 0xBF
w[26] 0x83 0xE5 0xEF 0x52
w[27] 0xCF 0xA5 0xA9 0xEF
2012. 2. 28.
40 / 65
Példa: kulcs kiterjesztés 1
temp = w[27] = (0xCF 0xA5 0xA9 0xEF)
2
temp forgatása: temp = (0xA5 0xA9 0xEF 0xCF)
3
4 5
temp bájtjainak helyettesítése S-dobozzal: temp = (0x06 0xD3 0xDF 0x8A) temp[0]-hoz hozzáadunk 0x40-t: temp = (0x46 0xD3 0xDF 0x8A) w[28] = w[24] XOR temp, w[29] = w[25] XOR w[27], w[30] = w[26] XOR w[29], w[31] = w[27] XOR w[30]
A kulcs táblázat [24, 31] oszlopai: w[24] 0x71 0xC7 0x4C 0xC2
w[25] 0x8C 0x29 0x74 0xBF
Smidla József (RSZT)
w[26] 0x83 0xE5 0xEF 0x52
w[27] 0xCF 0xA5 0xA9 0xEF
w[28] 0x37 0x14 0x93 0x48
AES
w[29] 0xBB 0x3D 0xE7 0xF7
w[30] 0x38 0xD8 0x08 0xA5
w[31] 0xF7 0x7D 0xA1 0x4A
2012. 2. 28.
41 / 65
Példa: kulcs kiterjesztés 1
temp = w[31] = (0xF7 0x7D 0xA1 0x4A)
2
temp forgatása: temp = (0x7D 0xA1 0x4A 0xF7)
3
4 5
temp bájtjainak helyettesítése S-dobozzal: temp = (0xFF 0x32 0xD6 0x68) temp[0]-hoz hozzáadunk 0x80-t: temp = (0x7F 0x32 0xD6 0x68) w[32] = w[28] XOR temp, w[33] = w[29] XOR w[32], w[34] = w[30] XOR w[33], w[35] = w[31] XOR w[34]
A kulcs táblázat [28, 35] oszlopai: w[28] 0x37 0x14 0x93 0x48
w[29] 0xBB 0x3D 0xE7 0xF7
Smidla József (RSZT)
w[30] 0x38 0xD8 0x08 0xA5
w[31] 0xF7 0x7D 0xA1 0x4A
w[32] 0x48 0x26 0x45 0x20
AES
w[33] 0xF3 0x1B 0xA2 0xD7
w[34] 0xCB 0xC3 0xAA 0x72
w[35] 0x3C 0xBE 0x0B 0x38
2012. 2. 28.
42 / 65
Példa: kulcs kiterjesztés 1
temp = w[35] = (0x3C 0xBE 0x0B 0x38)
2
temp forgatása: temp = (0xBE 0x0B 0x38 0x3C)
3
4 5
temp bájtjainak helyettesítése S-dobozzal: temp = (0xAE 0x2B 0x07 0xEB) temp[0]-hoz hozzáadunk 0x1B-t: temp = (0xB5 0x2B 0x07 0xEB) w[36] = w[32] XOR temp, w[37] = w[33] XOR w[36], w[38] = w[34] XOR w[37], w[39] = w[35] XOR w[38]
A kulcs táblázat [32, 39] oszlopai: w[32] 0x48 0x26 0x45 0x20
w[33] 0xF3 0x1B 0xA2 0xD7
Smidla József (RSZT)
w[34] 0xCB 0xC3 0xAA 0x72
w[35] 0x3C 0xBE 0x0B 0x38
w[36] 0xFD 0x0D 0x42 0xCB
AES
w[37] 0x0E 0x16 0xE0 0x1C
w[38] 0xC5 0xD5 0x4A 0x6E
w[39] 0xF9 0x6B 0x41 0x56
2012. 2. 28.
43 / 65
Példa: kulcs kiterjesztés 1
temp = w[39] = (0xF9 0x6B 0x41 0x56)
2
temp forgatása: temp = (0x6B 0x41 0x56 0xF9)
3
4 5
temp bájtjainak helyettesítése S-dobozzal: temp = (0x7F 0x83 0xB1 0x99) temp[0]-hoz hozzáadunk 0x36-t: temp = (0x49 0x83 0xB1 0x99) w[40] = w[36] XOR temp, w[41] = w[37] XOR w[40], w[42] = w[38] XOR w[41], w[43] = w[39] XOR w[42]
A kulcs táblázat [36, 43] oszlopai: w[36] 0xFD 0x0D 0x42 0xCB
w[37] 0x0E 0x16 0xE0 0x1C
Smidla József (RSZT)
w[38] 0xC5 0xD5 0x4A 0x6E
w[39] 0xF9 0x6B 0x41 0x56
w[40] 0xB4 0x8E 0xF3 0x52
AES
w[41] 0xBA 0x98 0x13 0x4E
w[42] 0x7F 0x4D 0x59 0x20
w[43] 0x86 0x26 0x18 0x76
2012. 2. 28.
44 / 65
Példa: Kulcs hozzáadása az iterációk előtt
Az állapot táblázathoz hozzáadjuk a kulcs táblázat [0,3] oszlopait: 0x61 0x62 0x63 0x64
0x65 0x66 0x67 0x68
0x69 0x6A 0x6B 0x6C
0x6D 0x6E 0x6F 0x70 0x6E 0x77 0x12 0xAD
Smidla József (RSZT)
⊕
0x0F 0x15 0x71 0xC9
0x47 0xD9 0xE8 0x59
0x22 0xBF 0x8F 0x31
0x65 0xDD 0xC6 0xBA
0xC2 0x11 0x08 0xE8
AES
0x0C 0xB7 0xAD 0xD6
0xAF 0x7F 0x67 0x98
2012. 2. 28.
=
45 / 65
Példa: 1. iteráció
0x6E 0x77 0x12 0xAD
0x22 0xBF 0x8F 0x31
0x65 0xDD 0xC6 0xBA
0xC2 0x11 0x08 0xE8
S-doboz −−−−−−→
0x9F 0xF5 0xC9 0x95
0x93 0x08 0x73 0xC7
0x4D 0xC1 0xB4 0xF4
0x25 0x82 0x30 0x9B
0x9F 0x08 0xB4 0x9B
0x93 0xC1 0x30 0x95
0x4D 0x82 0xC9 0xC7
0x25 0xF5 0x73 0xF4
Oszlop keverés −−−−−−−−−−−→
0x12 0xD3 0x52 0x2B
0xC0 0xCF 0x96 0x6E
0x09 0xD5 0x14 0x09
0xC9 0xB5 0x31 0x1A
Smidla József (RSZT)
AES
Sor forgatás −−−−−−−−−→
2012. 2. 28.
46 / 65
Példa: Kulcs hozzáadása az 1. iteráció végén
Az állapot táblázathoz hozzáadjuk a kulcs táblázat [4,7] oszlopait: 0x12 0xD3 0x52 0x2B
0xC0 0xCF 0x96 0x6E
0x09 0xD5 0x14 0x09
0xC9 0xB5 0x31 0x1A
0xCE 0x43 0x65 0x9B
Smidla József (RSZT)
0xDC 0x90 0x37 0xB0
⊕
0x5B 0x86 0x49 0x87
0x9E 0x2B 0x66 0x36
AES
0x9B 0x49 0xDF 0xE9
0x97 0xFE 0x72 0x3F
0x38 0x81 0x15 0xA7
=
0xF1 0x34 0x24 0xBD
2012. 2. 28.
47 / 65
Példa: 2. iteráció
0xCE 0x43 0x65 0x9B
0x5B 0x86 0x49 0x87
0x9E 0x2B 0x66 0x36
0xF1 0x34 0x24 0xBD
S-doboz −−−−−−→
0x8B 0x1A 0x4D 0x14
0x39 0x44 0x3B 0x17
0x0B 0xF1 0x33 0x05
0xA1 0x18 0x36 0x7A
0x8B 0x44 0x33 0x7A
0x39 0xF1 0x36 0x14
0x0B 0x18 0x4D 0x17
0xA1 0x1A 0x3B 0x05
Oszlop keverés −−−−−−−−−−−→
0x88 0x2C 0x27 0x05
0x58 0x8E 0x98 0xA4
0x64 0xFB 0xB0 0x66
0x49 0xDD 0xC2 0xD3
Smidla József (RSZT)
AES
Sor forgatás −−−−−−−−−→
2012. 2. 28.
48 / 65
Példa: Kulcs hozzáadása a 2. iteráció végén
Az állapot táblázathoz hozzáadjuk a kulcs táblázat [8,11] oszlopait: 0x88 0x2C 0x27 0x05
0x58 0x8E 0x98 0xA4
0x64 0xFB 0xB0 0x66
0x49 0xDD 0xC2 0xD3 0x5A 0xE5 0x4C 0xB2
Smidla József (RSZT)
0xD2 0xC9 0x6B 0xB7
⊕
0x11 0x0E 0x2C 0xFA
0xBA 0x85 0x76 0x07
AES
0x49 0x80 0xB4 0x5E
0xDE 0x7E 0xC6 0x61
0xE6 0xFF 0xD3 0xC6
=
0xAF 0x22 0x11 0x15
2012. 2. 28.
49 / 65
Példa: 3. iteráció
0x5A 0xE5 0x4C 0xB2
0x11 0x0E 0x2C 0xFA
0xBA 0x85 0x76 0x07
0xAF 0x22 0x11 0x15
S-doboz −−−−−−→
0xBE 0xD9 0x29 0x37
0x82 0xAB 0x71 0x2D
0xF4 0x97 0x38 0xC5
0x79 0x93 0x82 0x59
0xBE 0xAB 0x38 0x59
0x82 0x97 0x82 0x37
0xF4 0x93 0x29 0x2D
0x79 0xD9 0x71 0xC5
Oszlop keverés −−−−−−−−−−−→
0xE0 0xE2 0x8E 0xF8
0x08 0x1D 0x53 0xE6
0x59 0x9F 0x42 0xE7
0x36 0x86 0x16 0xB2
Smidla József (RSZT)
AES
Sor forgatás −−−−−−−−−→
2012. 2. 28.
50 / 65
Példa: Kulcs hozzáadása a 3. iteráció végén
Az állapot táblázathoz hozzáadjuk a kulcs táblázat [12,15] oszlopait: 0xE0 0xE2 0x8E 0xF8
0x08 0x1D 0x53 0xE6
0x59 0x9F 0x42 0xE7
0x36 0x86 0x16 0xB2 0x20 0x4D 0x51 0xC1
Smidla József (RSZT)
0xC0 0xAF 0xDF 0x39
⊕
0x81 0x32 0x38 0x81
0x0E 0xCE 0xEF 0xE1
AES
0x89 0x2F 0x6B 0x67
0x57 0x51 0xAD 0x06
0xB1 0xAE 0x7E 0xC0
=
0x87 0x28 0x68 0x72
2012. 2. 28.
51 / 65
Példa: 4. iteráció
0x20 0x4D 0x51 0xC1
0x81 0x32 0x38 0x81
0x0E 0xCE 0xEF 0xE1
0x87 0x28 0x68 0x72
S-doboz −−−−−−→
0xB7 0xE3 0xD1 0x78
0x0C 0x23 0x07 0x0C
0xAB 0x8B 0xDF 0xF8
0x17 0x34 0x45 0x40
0xB7 0x23 0xDF 0x40
0x0C 0x8B 0x45 0x78
0xAB 0x34 0xD1 0x0C
0x17 0xE3 0x07 0xF8
Oszlop keverés −−−−−−−−−−−→
0x8F 0xCB 0xF1 0xBE
0xA3 0xB6 0x85 0x2A
0xCC 0xA7 0x32 0x1B
0xEF 0x3B 0xE9 0x36
Smidla József (RSZT)
AES
Sor forgatás −−−−−−−−−→
2012. 2. 28.
52 / 65
Példa: Kulcs hozzáadása a 4. iteráció végén
Az állapot táblázathoz hozzáadjuk a kulcs táblázat [16,19] oszlopait: 0x8F 0xCB 0xF1 0xBE
0xA3 0xB6 0x85 0x2A
0xCC 0xA7 0x32 0x1B
0xEF 0x3B 0xE9 0x36
0xA3 0x97 0x94 0x4F
Smidla József (RSZT)
0x2C 0x5C 0x65 0xF1
⊕
0x06 0xC5 0x8B 0xBC
0x3E 0x85 0x91 0x8B
AES
0xA5 0x73 0x0E 0x96
0xF2 0x22 0xA3 0x90
0x43 0x8C 0xDD 0x50
=
0xAC 0xB7 0x34 0x66
2012. 2. 28.
53 / 65
Példa: 5. iteráció
0xA3 0x97 0x94 0x4F
0x06 0xC5 0x8B 0xBC
0x3E 0x85 0x91 0x8B
0xAC 0xB7 0x34 0x66
S-doboz −−−−−−→
0x0A 0x88 0x22 0x84
0x6F 0xA6 0x3D 0x65
0xB2 0x97 0x81 0x3D
0x91 0xA9 0x18 0x33
0x0A 0xA6 0x81 0x33
0x6F 0x97 0x18 0x84
0xB2 0xA9 0x22 0x65
0x91 0x88 0x3D 0x3D
Oszlop keverés −−−−−−−−−−−→
0x57 0xF6 0xE0 0x5F
0xE0 0xF6 0x5F 0x2D
0xD8 0xF8 0xF0 0x8C
0xBA 0xE0 0x24 0x67
Smidla József (RSZT)
AES
Sor forgatás −−−−−−−−−→
2012. 2. 28.
54 / 65
Példa: Kulcs hozzáadása az 5. iteráció végén
Az állapot táblázathoz hozzáadjuk a kulcs táblázat [20,23] oszlopait: 0x57 0xF6 0xE0 0x5F
0xE0 0xF6 0x5F 0x2D
0xD8 0xF8 0xF0 0x8C
0xBA 0xE0 0x24 0x67
0x0F 0x6B 0xD6 0xB4
Smidla József (RSZT)
0x58 0x9D 0x36 0xEB
⊕
0x1D 0x18 0x67 0x50
0xD7 0x34 0x6B 0x61
AES
0xFD 0xEE 0x38 0x7D
0x0F 0xCC 0x9B 0xED
0x4C 0x40 0x46 0xBD
=
0xF6 0xA0 0x62 0xDA
2012. 2. 28.
55 / 65
Példa: 6. iteráció
0x0F 0x6B 0xD6 0xB4
0x1D 0x18 0x67 0x50
0xD7 0x34 0x6B 0x61
0xF6 0xA0 0x62 0xDA
S-doboz −−−−−−→
0x76 0x7F 0xF6 0x8D
0xA4 0xAD 0x85 0x53
0x0E 0x18 0x7F 0xEF
0x42 0xE0 0xAA 0x57
0x76 0xAD 0x7F 0x57
0xA4 0x18 0xAA 0x8D
0x0E 0xE0 0xF6 0x53
0x42 0x7F 0x85 0xEF
Oszlop keverés −−−−−−−−−−−→
0x28 0xE1 0xDC 0xE6
0x5C 0xFC 0x7F 0x44
0x82 0x87 0xEC 0xA2
0x6F 0xC7 0x06 0xF9
Smidla József (RSZT)
AES
Sor forgatás −−−−−−−−−→
2012. 2. 28.
56 / 65
Példa: Kulcs hozzáadása a 6. iteráció végén
Az állapot táblázathoz hozzáadjuk a kulcs táblázat [24,27] oszlopait: 0x28 0xE1 0xDC 0xE6
0x5C 0xFC 0x7F 0x44
0x82 0x87 0xEC 0xA2
0x6F 0xC7 0x06 0xF9
0x59 0x26 0x90 0x24
Smidla József (RSZT)
0x71 0xC7 0x4C 0xC2
⊕
0xD0 0xD5 0x0B 0xFB
0x01 0x62 0x03 0xF0
AES
0x8C 0x29 0x74 0xBF
0x83 0xE5 0xEF 0x52
0xCF 0xA5 0xA9 0xEF
=
0xA0 0x62 0xAF 0x16
2012. 2. 28.
57 / 65
Példa: 7. iteráció
0x59 0x26 0x90 0x24
0xD0 0xD5 0x0B 0xFB
0x01 0x62 0x03 0xF0
0xCB 0x03 0x7B 0x47
0x70 0xAA 0x79 0x36
0x7C 0xAA 0x60 0x0F
Smidla József (RSZT)
0xA0 0x62 0xAF 0x16
0xE0 0xF7 0x2B 0x8C
S-doboz −−−−−−→
0xCB 0xF7 0x60 0x36
0x70 0x03 0x2B 0x0F
0x7C 0xAA 0x7B 0x8C
0xE0 0xAA 0x79 0x47
Oszlop keverés −−−−−−−−−−−→
0xB4 0x07 0xF7 0xB0
0x4A 0x82 0x72 0x2F
0x72 0x9C 0x07 0x50
0x7E 0xE4 0xCE 0xE4
AES
Sor forgatás −−−−−−−−−→
2012. 2. 28.
58 / 65
Példa: Kulcs hozzáadása a 7. iteráció végén
Az állapot táblázathoz hozzáadjuk a kulcs táblázat [28,31] oszlopait: 0xB4 0x07 0xF7 0xB0
0x4A 0x82 0x72 0x2F
0x72 0x9C 0x07 0x50
0x7E 0xE4 0xCE 0xE4 0x83 0x13 0x64 0xF8
Smidla József (RSZT)
0x37 0x14 0x93 0x48
⊕
0xF1 0xBF 0x95 0xD8
0x4A 0x44 0x0F 0xF5
AES
0xBB 0x3D 0xE7 0xF7
0x38 0xD8 0x08 0xA5
0xF7 0x7D 0xA1 0x4A
=
0x89 0x99 0x6F 0xAE
2012. 2. 28.
59 / 65
Példa: 8. iteráció
0x83 0x13 0x64 0xF8
0xF1 0xBF 0x95 0xD8
0x4A 0x44 0x0F 0xF5
0x89 0x99 0x6F 0xAE
S-doboz −−−−−−→
0xEC 0x7D 0x43 0x41
0xA1 0x08 0x2A 0x61
0xD6 0x1B 0x76 0xE6
0xA7 0xEE 0xA8 0xE4
0xEC 0x08 0x76 0xE4
0xA1 0x1B 0xA8 0x41
0xD6 0xEE 0x43 0x61
0xA7 0x7D 0x2A 0xE6
Oszlop keverés −−−−−−−−−−−→
0x49 0x82 0x3F 0x82
0x9D 0x35 0x32 0xC9
0xBC 0xB5 0x1D 0x0E
0x1E 0xC5 0xBF 0x72
Smidla József (RSZT)
AES
Sor forgatás −−−−−−−−−→
2012. 2. 28.
60 / 65
Példa: Kulcs hozzáadása a 8. iteráció végén
Az állapot táblázathoz hozzáadjuk a kulcs táblázat [32,35] oszlopait: 0x49 0x82 0x3F 0x82
0x9D 0x35 0x32 0xC9
0xBC 0xB5 0x1D 0x0E
0x1E 0xC5 0xBF 0x72 0x01 0xA4 0x7A 0xA2
Smidla József (RSZT)
0x48 0x26 0x45 0x20
⊕
0x6E 0x2E 0x90 0x1E
0x77 0x76 0xB7 0x7C
AES
0xF3 0x1B 0xA2 0xD7
0xCB 0xC3 0xAA 0x72
0x3C 0xBE 0x0B 0x38
=
0x22 0x7B 0xB4 0x4A
2012. 2. 28.
61 / 65
Példa: 9. iteráció
0x01 0xA4 0x7A 0xA2
0x6E 0x2E 0x90 0x1E
0x77 0x76 0xB7 0x7C
0x22 0x7B 0xB4 0x4A
S-doboz −−−−−−→
0x7C 0x49 0xDA 0x3A
0x9F 0x31 0x60 0x72
0xF5 0x38 0xA9 0x10
0x93 0x21 0x8D 0xD6
0x7C 0x31 0xA9 0xD6
0x9F 0x38 0x8D 0x3A
0xF5 0x21 0xDA 0x72
0x93 0x49 0x60 0x10
Oszlop keverés −−−−−−−−−−−→
0xD4 0x28 0x65 0xAB
0xDA 0x59 0xE8 0x7B
0x3A 0xB0 0xED 0x1B
0x96 0xB1 0x2A 0xA7
Smidla József (RSZT)
AES
Sor forgatás −−−−−−−−−→
2012. 2. 28.
62 / 65
Példa: Kulcs hozzáadása a 9. iteráció végén
Az állapot táblázathoz hozzáadjuk a kulcs táblázat [36,39] oszlopait: 0xD4 0x28 0x65 0xAB
0xDA 0x59 0xE8 0x7B
0x3A 0xB0 0xED 0x1B
0x96 0xB1 0x2A 0xA7
0x29 0x25 0x27 0x60
Smidla József (RSZT)
0xD4 0x4F 0x08 0x67
0xFD 0x0D 0x42 0xCB
⊕
0xFF 0x65 0xA7 0x75
AES
0x0E 0x16 0xE0 0x1C
0xC5 0xD5 0x4A 0x6E
0xF9 0x6B 0x41 0x56
=
0x6F 0xDA 0x6B 0xF1
2012. 2. 28.
63 / 65
Példa: 10. iteráció
0x29 0x25 0x27 0x60
0xD4 0x4F 0x08 0x67
0xFF 0x65 0xA7 0x75
0x6F 0xDA 0x6B 0xF1
0xA5 0x84 0x5C 0xA1
Smidla József (RSZT)
0xA5 0x3F 0xCC 0xD0
S-doboz −−−−−−→
0x48 0x4D 0x7F 0xD0
0x16 0x57 0xCC 0x85
AES
0x48 0x84 0x30 0x85
0x16 0x4D 0x5C 0x9D
0xA8 0x57 0x7F 0xA1
Sor forgatás −−−−−−−−−→
0xA8 0x3F 0x30 0x9D
2012. 2. 28.
64 / 65
Példa: Kulcs hozzáadása a 10. iteráció végén Az állapot táblázathoz hozzáadjuk a kulcs táblázat [40,43] oszlopait: 0xA5 0x84 0x5C 0xA1
0x48 0x4D 0x7F 0xD0
0x16 0x57 0xCC 0x85
0xA8 0x3F 0x30 0x9D
0x11 0x0A 0xAF 0xF3
0xB4 0x8E 0xF3 0x52
⊕
0xF2 0xD5 0x6C 0x9E
0x69 0x1A 0x95 0xA5
0xBA 0x98 0x13 0x4E
0x7F 0x4D 0x59 0x20
0x86 0x26 0x18 0x76
=
0x2E 0x19 0x28 0xEB
A kódoló kimenete: (0x11 0x0A 0xAF 0xF3 0xF2 0xD5 0x6C 0x9E 0x69 0x1A 0x95 0xA5 0x2E 0x19 0x28 0xEB)
Smidla József (RSZT)
AES
2012. 2. 28.
65 / 65