AES titkosítási algoritmus

Semenov YA (ITEF-MIPT)
Yu. Semenov (ITEP-MIPT)

Az adatbitek vannak számozva nulla, kezdve a legrégebbi. Az AES mag polinomiális reprezentáció kódokat. Mivel bájt képviseletében a következő: x 6 + x 5 + x + 1.

AES algoritmus működése során a kétdimenziós tömb byte úgynevezett struktúrák (állam). A szerkezet áll 4 sor Nb bájt. Nb a hossza a blokk osztva 32 (ebben a szabványos Nb = 4). Ez lehetővé teszi a címkézési struktúra SR, c, vagy s [r, c], ahol 0≤r<4 и 0≤с<4..

Hozzáférési kódját (in), amely egy sorozat 16 byte felírható:

Végrehajtásakor AES algoritmus segítségével az összeadást bájt (modulo 2 = XOR) és szorzás. Az AES algoritmust használjuk megszorozzuk a byte irreducibilis polinom:

m (X) = x 8 + x 4 + x 3 + x + 1

Számítás terméket M byte itt szerint hajtjuk végre a következő algoritmus:

Ebben az esetben az inverze a byte egyenlő:

szaporodnak nibbles (4 bit hosszú kód) használt irreducibilis polinom:

Számítás termék M nibbles a leírásban a következő:

M jelentése egy falat d. Szorzás művelet nibbles felírható mátrix formában:

Amint a fentiekben említettük Nk kulcs (hossz mérve 32 bites szó) vehet az értékeket 4, 6 vagy 8 (AES-128, -192 és -256, sorrendben). A iterációk száma Nr (kerek), megvalósított az algoritmus AES, rendre 10, 12 és 14.

titkosítás

Amikor elkezdjük a titkosító algoritmus bemenő adatblokkot másolni az állam tömb. Hozzáadása után a kiindulási állapothoz kapcsoló tömb állapotban átalakul a ciklikus feldolgozási funkciót Nr alkalommal (az utolsó ciklus kissé eltér a korábbitól, lásd. Ábra. 19.3). A kapott átalakulás van tárolva a kimeneti tömbben.

Leírása az algoritmus C-ábrázolás ábrán látható. 1. Conversion SubByte (), ShiftRows (), MixColumns () és AddRoundKey (), a feldolgozási tömb állapotban. A tömb w [i] az alábbiakban ismertetjük.

Cipher (byte [4 * Nb], byte ki [4 * Nb], w szó [Nb * (Nr + 1)])
kezdődik
byte állapotban [4, Nb] állapotban = a
AddRoundKey (állam, w [0, Nb-1])
kerek = 1 az 1. lépést Nr-1
SubBytes (állami)
ShiftRows (állami)
MixColumns (állami)
AddRoundKey (állam, W [kerek * Nb, (kerek + 1) * Nb-1])
az év végén az
SubBytes (állami)
ShiftRows (állami)
AddRoundKey (állam, W [Nr * Nb, (Nr + 1) * Nb-1])
out = állam
vég

Ábra. 1. A pszeudo-kód, amely megvalósítja a titkosítási folyamatot

Conversion SubByte ()

Conversion SubByte () egy nemlineáris permutációja bájt amely függetlenül működik minden egyes byte-állam és használja permutációs táblázat S. Ezt a cserét két műveletből:

  1. Minden byte helyett egy reciprok (lásd ekv. 3). Byte alakítjuk önmagában.
  2. Minden egyes bájt egy affin transzformáció végezzük területén GF (2), képlet által meghatározott

Conversion ShiftRows ()

Az átalakítások ShiftRows () bájt az utolsó három sorban állami ciklikusan eltolt különböző számú bájt. Az első sor (r = 0) nem tolódik. ShiftRows () átváltás a következőképpen végezzük:

0

ahol a korrekciós érték shift (R, Nb) függ több szám r a következőképpen:

shift (1,4) = 1; shift (2,4) = 2; shift (3,4) = 3

Conversion MixColumns ()

Conversion MixColumns () feldolgozza az állam oszlopról oszlopra, az egyes oszlopok egy 4-bites kódot. Oszlopok minősülnek polinomok egy mezőt GF (augusztus 2.). Az oszlopot egy fix polinom = x 3 + x 2 + x + modulo x 4 + 1 (lásd Eq. 2a).

Conversion AddRoundKey ()

Az átalakulás AddRoundKey () adunk az állam iteráció kulcs (Kulcs; bitenkénti XOR művelet). A műveletet minden egyes byte az állam.

Az eljárás fő expanziós

Keys iteráció alapján számítják ki a titkosítási kulcsot a kulcs segítségével átalakítja eljárás (Key expanzió). Ez az eljárás generál Nb (Nr + 1) szó. Az algoritmus megköveteli Nb szavak és minden iterációban igényel Nr Nb szó. Az eredmény egy lineáris tömb 4-bájtos szó, jelöljük [wi]. ahol i a tartomány 0? i

KeyExpansion (bájt nagyságú kulcs [4 * Nk], w szó [Nb * (Nr + 1)], NK)
kezdődik
szó temp
i = 0
míg a (I 6 és i mod Nk = 4)
temp = SubWord (Temp)
végén, ha
w [i] = w [i-Nk] XOR temp
i = i + 1
end míg
vég
vég

Ábra. 2. A pszeudokódját végrehajtási kulcs transzformációs eljárás

másolat

Minden leírt eljárásokat az előző szakaszban, visszafordítható. A cél a dekódolás dolgoz titkosított adatfájlt megszerezni az eredeti adatokat blokk. dekódolás eljárások közé InvShiftRows () függvény, InvSubBytes (), InvMixColumns () és AddRoundKey (). A pszeudo-kódot dekódolás eljárás ábrán látható. 3.

InvCipher (byte [4 * Nb], byte ki [4 * Nb], w szó [Nb * (Nr + 1)])
kezdődik

byte állapotban [4, Nb]
state = a
AddRoundKey (állam, W [Nr * Nb, (Nr + 1) * Nb-1])
kerek = Nr-1 lépésben -1 downto 1
InvShiftRows (állami)
InvSubBytes (állami)
AddRoundKey (állam, W [kerek * Nb, (kerek + 1) * Nb-1])
InvMixColumns (állami)

az év végén az
InvShiftRows (állami)
InvSubBytes (állami)
AddRoundKey (állam, w [0, Nb-1])
out = állam
vég

Ábra. 3. Az ál dekódolási eljárások

Conversion InvShiftRows ()

InvShiftRows () eljárás fordítottja a ShiftRows (). A bájt az utolsó három sorban állami ciklikusan eltolt különböző számú bájt. Az első sor (r = 0) nem tolódik.

Conversion InvSubBytes ()

Conversion InvSubBytes () van az inverz permutációs bájtok, ahol az S-táblázat szekvenciálisan alkalmazni minden egyes bájt állam. Ez úgy érhető el, mivel a fordított affin transzformáció.

Conversion InvMixColumns ()

InvMixColumns () eljárás a fordított MixColumns () (lásd., 1.3). Oszlopok minősülnek polinomok egy mezőt GF (augusztus 2.).

Visszaképezzük AddRoundKey ()

Conversion AddRoundKey (), az 1.4 fejezetben leírtuk reverzibilis, mivel ez tartalmazza csak XOR műveleteket.

Egyenértékű kódot dekódolás

A dekódoló algoritmus (3.), Egy sorozata transzformációk eltér a sorrendben kriptográfiai műveletek, és az alak a tágulási a titkosítási és visszafejtési változatlan marad (ábra. 4). Azonban, néhány tulajdonságát AES algoritmus kialakulását teszi lehetővé, ezzel egyenértékű dekódolás, amelyben a szekvencia a átalakítási műveletek ugyanaz marad (a helyettesítő transzformációk fordított).

EqInvCipher (byte [4 * Nb], byte ki [4 * Nb], szó DW [Nb * (Nr + 1)])
kezdődik
byte állapotban [4, Nb]
state = a
AddRoundKey (állam, dw [Nr * Nb, (Nr + 1) * Nb-1])
kerek = Nr-1 lépésben -1 downto 1
InvSubBytes (állami)
InvShiftRows (állami)
InvMixColumns (állami)
AddRoundKey (állam, dw [kerek * Nb, (kerek + 1) * Nb-1])
az év végén az
InvSubBytes (állami)
InvShiftRows (állami)
AddRoundKey (állam, DW [0, Nb-1])
out = állam
vég

Egy egyenértékű program végén megfejtési kulcs növekedési program felvette a következő pszeudo-kód:

i = 0 az 1. lépést (Nr + 1) * Nb-1
dw [i] = w [i]
az év végén az
kerek = 1 az 1. lépést Nr-1
InvMixColumns (dw [kerek * Nb, (kerek + 1) * Nb-1])

Ábra. 4. A pszeudo-kód egyenértékű leképező

Nemrégiben egy új változatát az AES-NI (New utasítások) [2], amely lehetővé teszi, hogy optimalizálja az algoritmus működését (alsó 50% CPU használat). Ez a változat lehet használni együtt SSL. Intel kifejlesztett egy chipet, amely végrehajtja az algoritmus (sorozat X5600). Az ügyfelek száma, amikor az AES-NI változata lehet 13% -kal növekedett.

Kapcsolódó cikkek