8.5. GOST 28147-89

Ez a szimmetrikus titkos algoritmus körülbelül egyidős a DES-szel, de csak a múlt század végén hozták nyilvánosságra. Nem polgári célra készítették, hanem a Szovjetunió hadseregében és felső párt- és államigazgatásában alkalmazták. A DES-hez hasonlóan ez is egy Feistel hálózat. Az alábbiakban megadjuk az eljárás pszeudokódját20.

Az algoritmus c. lépésében az R és Kj szavakat 32 bites bináris számoknak tekintjük, és az összegüket képezzük moduló 232. Tekintettel arra, hogy egy 32 bites szó egy [0, 232-1] intervallumba eső egész számot reprezentál, így 0 <= R + Kj <= 233-2. A c. lépés tehát helyettesíthető az alábbival:

c’. if R + Kj => 232 then R := R + Kj - 232 else R := R + Kj ;

Az e. lépésben az lshift(R,11) függvény azt jelenti, hogy az R szót 11 bittel ciklikusan balra kell shiftelni.

Az F’ függvény megadásához szükséges nyolc darab S7, S6, S5, S4, S3, S2, S1, S0 táblázat, amelyek a {0,1,…,15} számok egy permutációját jelenti úgy, hogy minden számot négy bites szóként ábrázolunk. Bontsuk fel az R szót nyolc darab, négy bites részszóra, azaz legyen R = r7||r6||r5||r4||r3||r2||r1||r0. Ezek után helyettesítsük ri helyére az Si táblázat ri-dik elemét. Az F’(R) így tényleg egy 32 bites szó. A Feistel hálózat definiálásánál használt F függvényt most a 2.b. – 2.f. utasítások határozzák meg. Ezért a dekódolásnál alkalmazható az általános módszer. Megjegyezzük, hogy a táblázatok is változók a GOST algoritmusban, így az aktuális kulcshossz 256 bitnél nagyobb.

A GOST algoritmust eddig nem vetették alá olyan részletes elemzésnek, mint a DES-t, így biztonságáról kevesebbet tudunk.