Hazánkban egységes algoritmust hoztak létre az adatok kriptográfiai megjelenítésére a számítógépes hálózatok információfeldolgozó rendszereihez, az egyes számítástechnikai rendszerekhez és a számítógépekhez, amelyet meghatároztak. GOST 28147-89.
Ez a kriptográfiai adatkonverziós algoritmus egy 64 bites blokk algoritmus 256 bites kulccsal, amelyet hardveres és szoftver megvalósítás, megfelel a kriptográfiai követelményeknek, és nem ír elő korlátozásokat a védett információ titkosságának fokára vonatkozóan.
Az algoritmus leírásánál a következő jelölést használjuk:
L és R - bitsorozatok;
LR az L és R sorozatok összefűzése, amelyben az R sorozat bitjei követik az L sorozat bitjeit;
(+) - bitenkénti összeadás modulo 2 ("kizárólagos VAGY" művelet);
[+] - 32 bites számok összeadása modulo 2 32;
(+) - 32 bites számok összeadása modulo 2 32 -1.
A számok összegzése a következő szabály szerint történik:
A [+] B = A + B, ha A + B< 2 32 ,
A [+] B = A + B - 2 32, ha A + B >= 2 32 . A (+) B = A + B, ha A + B< 2^32 - 1,
A {+} B = A + B - (2^32 - 1), если A + B >= 2^32 - 1.
Az algoritmus négy működési módot biztosít:
Mindenesetre egy 256 bites K kulcsot használnak az adatok titkosításához, amely nyolc 32 bites K i alkulcsként jelenik meg:
K = K 7 K 6 K 5 K 4 K 3 K 2 K 1 K 0 .
A visszafejtés ugyanazzal a kulccsal történik, mint a titkosítás, de a folyamat az adattitkosítási folyamat fordítottja. Egyszerű csere mód
Az első és legegyszerűbb mód az csere. A titkosítandó adatok 64 bites blokkokra vannak osztva. A T 0 nyílt adatblokk titkosítási eljárása 32 ciklusból áll (j=1...32).
A T 0 blokk két 32 bites sorozatra oszlik: B(0)A(0), ahol B(0) a bal vagy magasabb rendű bitek, A(0) a jobb vagy alacsony rendű bitek.
Ezek a szekvenciák az N 1 és N 2 meghajtókba kerülnek az első titkosítási ciklus kezdete előtt.
A 64 bites adatblokk titkosítási eljárásának első ciklusát (j=1) a következő képletek írják le:
Itt az i az iterációs számot jelöli (i = 1, 2,..., 32).
Az f függvényt titkosítási függvénynek nevezzük. Az argumentuma az előző iterációs lépésben kapott 32 A(i) szám és az X(j) kulcsszám összege, modulo 2 (mindegyik szám dimenziója 32 számjegy).
A titkosítási funkció két műveletet foglal magában a kapott 32 bites összegen. Az első műveletet K helyettesítésnek nevezzük. A K helyettesítési blokk 8 K(1) ... K(8) helyettesítő csomópontból áll, amelyek mindegyike 64 bites memóriával rendelkezik. A helyettesítési blokkhoz érkező 32 bites vektort 8 szekvenciális 4 bites vektorra osztják, melyek mindegyikét 4 bites vektorokká alakítja át a megfelelő helyettesítő csomópont, amely egy 16 egész számból álló táblázat a 0 tartományban. .15.
A bemeneti vektor egy sor címét adja meg a táblázatban, amelyből egy szám a kimeneti vektor. A 4 bites kimeneti vektorokat ezután szekvenciálisan összefűzik egy 32 bites vektorba. A K helyettesítési blokktáblázat olyan kulcselemeket tartalmaz, amelyek a számítógépes hálózatban közösek, és ritkán változnak.
A második művelet egy ciklikus eltolás a 32 bites vektortól balra, amelyet a K helyettesítése eredményeként kapunk. A T sh titkosított adatok 64 bites blokkját a következőképpen ábrázoljuk: Tsh = A (32) B (32).
A többi nyitott adatblokk egyszerű csere módban ugyanúgy titkosításra kerül.
Kérjük, vegye figyelembe, hogy az egyszerű csere mód csak korlátozott esetekben használható az adatok titkosítására. Ezek az esetek magukban foglalják a kulcs generálását és titkosítását imitációs védelem (hamis adatok megadása elleni védelem) biztosításával a kommunikációs csatornákon történő továbbításhoz vagy a számítógép memóriájában való tároláshoz. Gamma mód
A nyílt adatok, 64 bites T(i) blokkra bontva (i=1, 2,..., m, ahol m-t a titkosított adatok mennyisége határozza meg), gamma módban titkosításra kerül a modulo 2 bitenkénti összeadásával. a Гш gamma-rejtjel, amelyet 64 bites blokkokban állítanak elő, azaz Гш = (Г(1),Г(2),...,Г(i),...,Г(m)).
Az adattitkosítási egyenlet gamma módban a következőképpen ábrázolható:
Ш(i) = A (Y(i-1) [+] C2, Z(i-1) (+) C1) (+) T(i) = Г(i) (+) T(i) .
Itt Ш(i) egy 64 bites titkosított szöveg blokk,
A - titkosítási funkció egyszerű csere módban (a függvény argumentumai két 32 bites szám),
A C1 és C2 a GOST 28147-89 szabványban meghatározott állandók,
Y(i) és Z(i) olyan mennyiségek, amelyeket iteratív módon határoznak meg, amikor a gamma a következőképpen alakul ki:
(Y(0), Z(0)) = A(S), ahol S egy 64 bites bináris sorozat (szinkron üzenet);
(Y(i), Z(i)) = (Y(i-1) [+] C2, Z(i-1) (+) C1) i = 1, 2,...,m esetén.
Az adatok visszafejtése csak szinkronizációs üzenet jelenlétében lehetséges, amely nem a titkosítás titkos eleme, és a számítógép memóriájában tárolható, vagy a titkosított adatokkal együtt kommunikációs csatornákon továbbítható. Gamma mód visszajelzéssel
Mód játék Val vel Visszacsatolás nagyon hasonlít a gamma módra. A gamma módhoz hasonlóan a nyílt adatokat 64 bites T(i) blokkra bontva (i=1, 2,..., m, ahol m-t a titkosított adatok mennyisége határozza meg) bitenkénti összeadás modulo titkosítja. 2 az Гsh gamma-rejtjellel, amelyet 64 bites blokkokban állítanak elő:
Gw = (G(1),G(2),...,G(i),...,G(m)).
A T(m) blokkban a bináris számjegyek száma kevesebb lehet, mint 64, míg a titkosítási tartománynak a G(m) blokkból a titkosításhoz nem használt része el lesz veszve.
Az adattitkosítási egyenlet zárt hurkú gamma módban a következőképpen ábrázolható:
Itt Ш(i) egy 64 bites titkosított szöveg blokk,
A - titkosítási funkció egyszerű csere módban. Az iteratív algoritmus első lépésében a függvény argumentuma egy 64 bites szinkronizálási üzenet, minden további lépésben pedig a titkosított adat előző blokkja Ш(i-1).
A betétutánzatok fejlesztései
Gyártási folyamat imitovstaki egységes az adattitkosítási módok bármelyikéhez.
Az imitációs beillesztés egy p bitből álló blokk (Imitation insertion), amely vagy a teljes üzenet titkosítása előtt, vagy a blokkonkénti titkosítással párhuzamosan jön létre. Az utánzó beillesztés létrehozásában részt vevő első nyílt adatok blokkok tartalmazhatnak szolgáltatási információkat (például címrészt, időt, szinkronizálási üzenetet), és nincsenek titkosítva. A p paraméter értékét (a bináris bitek száma a szimulációs betétben) kriptográfiai követelmények határozzák meg, figyelembe véve azt a tényt, hogy a hamis interferencia előidézésének valószínűsége 1/2^p.
A szimulált beillesztéshez a nyílt adatokat 64 bites T(i) blokkok formájában mutatjuk be (i = 1, 2,..., m, ahol m-t a titkosított adatok mennyisége határozza meg). A T(1) sima adat első blokkja a titkosítási algoritmus első 16 ciklusának megfelelő transzformáción megy keresztül egyszerű csere módban. Ezenkívül az adatok titkosításához használt kulcsot kulcsként használják az utánzó betét létrehozásához.
A 16 műveleti ciklus után kapott 64 bites szám modulo 2 összegzésre kerül a T(2) nyílt adat második blokkjával. Az összegzés eredményét ismét a titkosítási algoritmus első 16 ciklusának megfelelő transzformációnak vetjük alá egyszerű helyettesítési módban. Az így kapott 64 bites szám modulo 2 összegzésre kerül a T(3) nyílt adat harmadik blokkjával stb. Az utolsó T(m) blokkot, ha szükséges, teljes 64 bites blokkba töltve nullákkal, modulo 2 összegzésre kerül az m-1 lépésben végzett munka eredményével, majd egyszerű csere módban titkosításra kerül az elsőre. Az algoritmus 16 ciklusa. A kapott 64 bites számból kiválasztunk egy p bit hosszúságú Ir szegmenst.
Az Ir imitatív beillesztés egy kommunikációs csatornán vagy a számítógép memóriájába kerül a titkosított adatok után. A fogadott titkosított adatokat visszafejtjük, és a vett T(i) nyílt adatblokkokból egy szimulált Ir beillesztést generálunk, amelyet azután összehasonlítunk a kommunikációs csatornáról vagy a számítógép memóriájából kapott szimulált Ir beillesztéssel a beillesztések nem egyeznek, minden visszafejtett adat hamisnak minősül.
A rejtjel rövid leírása
A GOST 28147-89 egy 1990-ben bevezetett szovjet és orosz szimmetrikus titkosítási szabvány, egyben FÁK-szabvány. Teljes név - „GOST 28147-89 Információfeldolgozó rendszerek. Kriptográfiai védelem. kriptográfiai konverziós algoritmus." Blokk titkosítási algoritmus. A gamma titkosítási módszer alkalmazásakor képes ellátni egy adatfolyam titkosítási algoritmus funkcióit.
A GOST 28147-89 egy blokk titkosítás 256 bites kulccsal és 32 konverziós ciklussal, amely 64 bites blokkon működik. A rejtjelezési algoritmus alapja a Feistel hálózat. A GOST 28147-89 szerinti alapvető titkosítási mód az egyszerű helyettesítési mód (összetettebb gamma, gamma visszacsatolásos és szimulált beillesztési módok is meg vannak határozva).
Hogyan működik az algoritmus
Az algoritmus alapvetően nem különbözik a DES-től. A Feistel-séma szerint (2.9. ábra) titkosítási ciklusokat is tartalmaz (ebből 32).
Rizs. 2.9. A GOST 28147-89 algoritmus titkosítási körei.
Alkulcsok generálásához az eredeti 256 bites kulcsot nyolc 32 bites blokkra osztják: k 1 ...k 8 . A k 9 ...k 24 billentyűk a k 1 ...k 8 billentyűk ciklikus ismétlődései (a legkisebb szignifikáns bitektől a legmagasabbig számozva). A k 25 …k 32 billentyűk a k 1 …k 8 billentyűk fordított sorrendben.
Az algoritmus mind a 32 körének befejezése után az A 33 és a B 33 blokkokat összeragasztják (megjegyezzük, hogy a legjelentősebb bit A 33, a legkisebb jelentőségű bit pedig B 33 lesz) - az eredmény az algoritmus eredménye.
Funkció f(A én ,K én) kiszámítása a következőképpen történik: A i és K i összeadjuk modulo 2 32 , majd az eredményt nyolc 4 bites részszekvenciára osztjuk, amelyek mindegyike a saját bemenetére kerül helyettesítő táblázat csomópontja(a bit elsőbbségének növekvő sorrendjében), az alábbiakban nevezzük S-blokk. A GOST S-blokkok száma összesen nyolc, azaz annyi, mint az alsorozatok száma. Minden S-blokk A számok permutációja 0-tól 15-ig. Az első 4 bites részsorozat az első S-box bemenetére megy, a második - a második bemenetére, stb. Mind a nyolc S-box kimenetét egyesítik egy 32 bites szó, akkor a teljes szó ciklikusan balra tolódik (a legjelentősebb bitek felé) 11 bittel. Mind a nyolc S-box különböző lehet. Valójában további kulcsfontosságú anyagok is lehetnek, de gyakrabban a felhasználók egy bizonyos csoportjában közös sémaparaméterek. A szabvány szövege azt jelzi, hogy a töltőpótló egységek (S-blokkok) szállítása az előírt módon történik, pl. algoritmus fejlesztő. Az orosz CIPF fejlesztők közössége megállapodott az interneten használt cserecsomópontokról.
A visszafejtés ugyanúgy történik, mint a titkosítás, de a k i alkulcsok sorrendje fordított.
A GOST 28147-89 algoritmus működési módjai
A GOST 28147-89 algoritmus négy üzemmóddal rendelkezik.
1. Módkönnyű csere olyan bemeneti adatokat fogad el, amelyek mérete 64 bit többszöröse. A titkosítás eredménye a bemeneti szöveg, amelyet 64 bites blokkokban konvertálunk a „32-Z” ciklusú titkosítás, illetve a „32-R” ciklusú dekódolás esetén.
2. Módjáték bármilyen méretű adatot fogad be bemenetként, valamint egy további 64 bites paramétert - üzenet szinkronizálása. Működés közben a szinkronizálási üzenet a „32-Z” ciklusban konvertálódik, az eredmény két részre oszlik. Az első rész modulo 2 32-vel egészül ki 1010101 16 állandó értékkel. Ha a második rész egyenlő 2 32 -1-gyel, akkor az értéke nem változik, ellenkező esetben modulo 2 32 -1-et ad hozzá 1010104 16 állandó értékkel. A két transzformált rész kombinálásával kapott érték, az úgynevezett titkosítási gamma, belép a „32-3” ciklusba, melynek eredményét bitenként modulo 2 adjuk hozzá a 64 bites bemeneti adatblokkhoz. Ha ez utóbbi kevesebb, mint 64 bit, akkor a kapott érték extra bitjeit eldobja. A kapott értéket elküldi a kimenetre. Ha még mindig vannak bejövő adatok, akkor a művelet megismétlődik: a 32 bites részekből álló blokkot részekre alakítják, és így tovább.
3. Módjáték visszajelzéssel bármilyen méretű adatot és szinkronizálási üzenetet is elfogad bemenetként. A bemeneti adatblokk bitenként modulo 2 kerül hozzáadásra a transzformáció eredményével a szinkronizálási üzenet „32-3” ciklusában. Az eredményül kapott érték elküldésre kerül a kimenetre. A szinkronizálási üzenet értékét titkosítás esetén a kimeneti blokk, dekódolás esetén pedig a bemeneti blokk, azaz a titkosított váltja fel. Ha a bejövő adatok utolsó blokkja kevesebb, mint 64 bit, akkor a gamma extra bitjei (a „32-3” ciklus kimenete) el lesznek dobva. Ha még mindig vannak bejövő adatok, akkor a művelet megismétlődik: a lecserélt érték titkosításának eredményéből egy titkosítási gamma keletkezik stb.
4. Termelési módutánzatú betétek legalább két teljes 64 bites blokk méretű bemeneti adatot vesz fel, és egy szimulált beillesztésnek nevezett 64 bites adatblokkot ad vissza. Az ideiglenes 64 bites értéket 0-ra állítjuk, majd amíg van bemenő adat, bitenként modulo 2 hozzáadódik a „16-3” ciklus eredményével, aminek a bemenete egy bemeneti blokk adat. A bemeneti adatok vége után az ideiglenes érték kerül visszaadásra eredményként.
Rejtjeles kriptoanalízis
A GOST 28147-89 titkosítás 256 bites kulcsot használ, és a kulcstér térfogata 2256. A jelenleg létező általános célú számítógépek egyikén sem található kulcs kevesebb mint sok száz éven belül. A GOST 28147-89 orosz szabványt nagy ráhagyással tervezték, és sok nagyságrenddel erősebb, mint az amerikai DES szabvány, a tényleges kulcsmérete 56 bit, és a kulcstér mennyisége mindössze 256.
Vannak támadások a teljes körű GOST 28147-89 ellen is, minden módosítás nélkül. Az elsők egyike nyitott művek, amelyben az algoritmust elemezték, számos jól ismert titkosítási algoritmus kulcsbővítési eljárásának gyengeségeit használja fel. Különösen a teljes körű GOST 28147-89 algoritmus törhető meg a kapcsolódó kulcsok differenciális kriptográfiai elemzésével, de csak akkor, ha gyenge helyettesítő táblákat használnak. Az algoritmus 24 körös változata (amelyből az első 8 kör hiányzik) hasonló módon nyílik meg bármilyen helyettesítő táblával, azonban az erős helyettesítő táblázatok teljesen kivitelezhetetlenné teszik az ilyen támadást.
A hazai tudósok A.G. Rosztovcev és E.B. Makhovenko 2001-ben egy alapvetően új kriptoanalízis-módszert javasolt úgy, hogy egy ismert nyílt szövegből, a megfelelő rejtjelezett szövegből és a kívánt kulcsértékből célfüggvényt képez, és megkeresi a kulcs valódi értékének megfelelő szélsőértékét. Megtalálták a GOST 28147-89 algoritmus gyenge kulcsainak nagy osztályát is, amelyek lehetővé teszik az algoritmus megnyitását csak 4 kiválasztott egyszerű szöveggel és a megfelelő titkosított szövegekkel, meglehetősen alacsony bonyolultsággal.
2004-ben koreai szakértők egy csoportja olyan támadást javasolt, amely a kapcsolódó kulcsok differenciális kriptoanalízisét alkalmazva 91,7%-os valószínűséggel 12 bites titkos kulcsot kaphat. A támadáshoz 2 35 kiválasztott egyszerű szövegre és 2 36 titkosítási műveletre van szükség. Amint látja, ez a támadás gyakorlatilag haszontalan az algoritmus tényleges megtörésére.
A cseretábla hosszú távú kulcselem, vagyis sokkal többre is érvényes hosszútávú mint egy külön kulcs. Feltételezhető, hogy ugyanazon a kriptográfiai védelmi rendszeren belüli összes titkosítási csomópontban közös. A titkosítás minősége a táblázat minőségétől függ. Egy „erős” helyettesítési táblázatnál a rejtjel erőssége akkor sem esik egy bizonyos elfogadható határ alá, ha nyilvánosságra hozzuk. Ezzel szemben a "gyenge" táblázat használata elfogadhatatlanul alacsony határra csökkentheti a titkosítás erősségét. Nincs információ a helyettesítési táblázat minőségéről nyílt sajtó Oroszországot nem tették közzé, de a „gyenge” táblázatok létezése kétségtelen - példa egy „triviális” helyettesítő táblázat, amelyben minden értéket önmagával helyettesít. Számos munka tévesen arra a következtetésre jutott, hogy a GOST 28147-89 algoritmus titkos helyettesítési táblái a kulcs részét képezhetik, és növelhetik annak tényleges hosszát (ami nem jelentős, mivel az algoritmus nagyon nagy, 256 bites kulccsal rendelkezik).
Ez az algoritmus titkosítási algoritmusként való használatához kötelező kormányzati szervezetek Orosz Föderáció és számos kereskedelmi.
Az algoritmus leírása
Az algoritmus diagramja az ábrán látható. 3.1. Amint láthatja, ennek az algoritmusnak a kialakítása meglehetősen egyszerű, ami egyértelműen leegyszerűsíti szoftveres vagy hardveres megvalósítását.
A GOST 28147-89 algoritmus 64 bites blokkokban titkosítja az információkat, amelyek két 32 bites alblokkra (N1 és N2) vannak osztva. Az N1 alblokk feldolgozása meghatározott módon történik, majd az értékét összeadjuk
az N2 alblokk értékével (az összeadás modulo 2 történik), majd az alblokkok felcserélődnek. Ezt a transzformációt bizonyos számú körben hajtják végre: 16 vagy 32, az algoritmus működési módjától függően (lásd alább). Minden körben a következő műveleteket hajtják végre:
1. Kulcs alkalmazás. A /VI alblokk tartalma modulo 2 32 hozzáadásra kerül a Kx kulcs egy részével.
A GOST 28147-89 algoritmus titkosítási kulcsának mérete 256 bit, a Kx pedig 32 bites része, azaz a 256 bites titkosítási kulcs 32 bites alkulcsok összefűzéseként jelenik meg (3.2. ábra):
Shch ATI, AG2, Yu, AG4, K5, Kb, K7.
A titkosítási folyamat során a körszámtól és az algoritmus működési módjától függően ezek közül az alkulcsok egyikét használják.
Rizs. 3.1. Algoritmus diagram GOST 28147-
Rizs. 3.2. A GOST 28147-89 algoritmus titkosítási kulcsa
2. Asztalcsere. Kulcsolás után a /VI alblokk 8 darab 4 bites részre van felosztva, amelyek mindegyikének értékét az alblokk ezen részének helyettesítési táblázata szerint egyedileg cseréljük. A táblázat helyettesítéseket (Substitution box, S-box) gyakran használják modern algoritmusok titkosítást, ezért érdemes ezeket részletesebben megvizsgálni.
A táblahelyettesítést így használjuk: egy bizonyos méretű (jelen esetben 4 bites) adatblokk kerül a bemenetre, amelynek numerikus ábrázolása határozza meg a kimeneti érték számát. Például van egy S-boxunk a következő formájú:
4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1.
Jöjjön a 4 bites „0100” blokk a bemenetre, azaz a 4. érték. A táblázat szerint a kimeneti érték 15 lesz, azaz. „1111” (a 0 helyett 4, 1 helyett 11, a 2 értéke változatlan, stb.).
Mint látható, az algoritmus kialakítása nagyon egyszerű, ami azt jelenti, hogy az adattitkosítás legnagyobb terhe a helyettesítő táblákra hárul. Sajnos az algoritmusnak megvan az a tulajdonsága, hogy vannak „gyenge” helyettesítő táblák, amelyek segítségével az algoritmus kriptoanalitikus módszerekkel megoldható. A gyengék közé tartozik például egy táblázat, amelyben a kimenet megegyezik a bemenettel:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.
3. Bitenkénti ciklikus eltolás balra 11 bittel.
Algoritmus működési módok
A GOST 28147-89 algoritmusnak 4 üzemmódja van:
□ egyszerű csere mód;
□ gamma mód;
P gamma mód visszajelzéssel;
□ az imitációs kötődések fejlesztési módja.
Ezek a módok némileg eltérnek az általánosan elfogadott módoktól (lásd az 1.4. fejezetben), ezért érdemes ezeket részletesebben is megvizsgálni.
Ezeknek a módoknak más a célja, de ugyanazt a titkosítási átalakítást használják, mint fentebb leírtuk.
Egyszerű csere mód
Egyszerű csere módban minden 64 bites információblokk egyszerűen titkosításra kerül a fent leírt 32 kör segítségével. A 32 bites alkulcsok a következő sorrendben használatosak:
□ KO, Kl, K2, KZ, K4, K5, KB, AG7, KO, ATI stb. - 1-24. körben;
□ K1, Kb, K5, K4, KZ, K2, K\, KO - 25-32 körben.
Az egyszerű helyettesítési módban a visszafejtés pontosan ugyanúgy történik, de az alkulcsok használatának kissé eltérő sorrendjében:
□ KO, K\, K2, KZ, K4, K5, Kb, KP - 1-8 körben;
□ KP, Kb, K5, K4, KZ, K2, K\, KO, K1, Kb stb. - körökben 9-től 32-ig.
A szabványos ECB módhoz hasonlóan a blokkok külön titkosítása miatt az egyszerű csere mód szigorúan nem ajánlott magának az adatoknak a titkosítására; csak más titkosítási kulcsok titkosításához használható többkulcsos sémákban.
Gamma mód
Gamma módban (3.3. ábra) minden egyszerű szöveg blokk modulo 2 bitenként hozzáadódik egy 64 bites titkosított gamma blokkhoz. A gamma-rejtjel egy speciális sorozat, amelyet a fent leírt transzformációk segítségével állítanak elő az alábbiak szerint:
1. A kezdeti kitöltést az N1 és N2 regiszterbe írják - egy 64 bites értéket, amelyet „szinkron üzenetnek” neveznek (a szinkron üzenet gyakorlatilag az inicializálási vektor analógja CBC, CFB és OFB módban).
2. A /VI és N2 regiszterek tartalma (jelen esetben a szinkron üzenetek) egyszerű csere módban titkosítva van.
3. Az N1 tartalmát modulo (2 32 – 1) adjuk hozzá a CI = 2 24 + 2 16 + 2 8 + 4 konstanssal, az összeadás eredménye a /VI regiszterbe kerül.
4. Az N2 tartalmát modulo 2-vel összeadjuk C2 = 2 24 + 2 16 + 2 8 +1 állandóval, az összeadás eredményét az N2 regiszterbe írjuk.
5. A /VI és N2 regiszterek tartalma 64 bites titkosítási gammablokkként kerül kiadásra (azaz ebben az esetben a /VI és az N2 alkotja az első gammablokkot).
6. Ha a következő gamma blokkra van szükség (azaz további titkosításra vagy visszafejtésre van szükség), térjen vissza a 2. lépéshez.
A visszafejtéshez a gamma generálása hasonló módon történik, majd a titkosított szöveg és a gamma bitek ismét XOR-re kerülnek.
Ugyanazon rejtjelezési tartomány létrehozásához a kriptogramot visszafejtő felhasználónak ugyanazzal a kulccsal és ugyanazzal a szinkronizálási üzenet értékkel kell rendelkeznie, amelyet az információ titkosításakor használtak. Ellenkező esetben az eredeti szöveget nem lehet lekérni a titkosított szövegről.
A GOST 28147-89 algoritmus legtöbb megvalósításában a szinkronizálási üzenet nem titkos elem, azonban a szinkronizálási üzenet ugyanolyan titkos lehet, mint a titkosítási kulcs. Ebben az esetben úgy tekinthetjük, hogy az algoritmus effektív kulcshossza (256 bit) a szinkronizációs üzenet további 64 bitjével nő, ami további kulcselemnek tekinthető.
Gamma mód visszajelzéssel
A visszacsatolásos gamma módban a /VI és L/2 regiszterek kitöltésére az előző nyílt szöveg blokk titkosításának eredménye kerül felhasználásra, a 2. blokktól kezdve nem az előző gamma blokk, hanem az előző nyílt szöveg blokk titkosításának eredménye. (3.4. ábra). Az első blokk ebben a módban teljesen hasonlóan generálódik, mint az előző.
Rizs. 3.4. Rejtjel gamma generálása gamma módban visszajelzéssel
Melléklet-generálási mód
Az előtag egy titkosítási kulcs segítségével kiszámított kriptográfiai ellenőrző összeg, amelyet az üzenetek integritásának ellenőrzésére terveztek. Kiszámításához a GOST 28147-89 algoritmus speciális módja van.
Az utánzat előtag generálása a következőképpen történik:
1. Az első 64 bites információblokk, amelyhez az utánzat előtagot számítják, az N1 és N2 regiszterekbe kerül, és redukált egyszerű helyettesítési módban titkosítva történik, amelyben a 32-ből az első 16 kör kerül végrehajtásra.
2. A kapott eredményt modulo 2 összegzi a következő információblokkkal, az eredményt N1-ben és N2-ben tárolja.
3. M és N2 ismét titkosításra kerül a rövidített egyszerű csere módban stb. az utolsó információblokkig.
Az utánzó előtag az N1 és N2 regiszterek 64 bites eredő tartalmának vagy azok egy részének tekinthető. Leggyakrabban 32 bites utánzó előtagot használnak, azaz a regiszterek tartalmának felét. Ez elég, mivel, mint minden ellenőrző összeg, az imitációs melléklet célja elsősorban az információ véletlen torzulása elleni védelem. Az adatok szándékos módosítása elleni védelem érdekében más - elsősorban elektronikus - kriptográfiai módszereket alkalmaznak digitális aláírás(lásd az 1.1. pontot).
Az utánzat előtag a következőképpen használatos:
1. Bármilyen információ titkosításakor a rendszer kiszámítja a nyílt szöveg imitátort, és a titkosított szöveggel együtt elküldi.
2. A visszafejtés után az utánzat előtagot ismét kiszámítja és összehasonlítja a küldött előtaggal.
3. Ha a számított és az elküldött utánzati előtagok nem egyeznek, akkor a rejtjelezett szöveg torzult az átvitel során, vagy hibás kulcsokat használtak a visszafejtés során.
Az utánzó előtag különösen hasznos a kulcsinformációk helyes visszafejtésének ellenőrzéséhez többkulcsos sémák használatakor.
Az utánzó előtag a MAC üzenet hitelesítési kód néhány analógja, CBC módban számítva; A különbség az, hogy az imitációs előtag kiszámításakor a szinkronizálási üzenetet nem, míg a MAC kiszámításakor az inicializálási vektort használják.
Algoritmus kriptográfiai erőssége
1994-ben a GOST 28147-89 algoritmus leírását lefordították angolra és közzétették; ezt követően kezdtek megjelenni külföldi szakemberek által végzett elemzésének eredményei; azonban hosszú ideig nem találtak megvalósítható támadást.
□ nagy kulcshossz - 256 bit; a titkos szinkronizálási üzenettel együtt az effektív kulcshossz 320 bitre nő;
□ 32 átalakítási kör; már 8 kör után elérjük a bemeneti adatok szórásának teljes hatását: a nyílt szöveg blokk egy bitjének megváltoztatása hatással lesz a titkosított szöveg blokk összes bitjére, és fordítva, azaz többszörös erősségű ráhagyás van.
Tekintsük a GOST 28147-89 algoritmus kriptográfiai elemzésének eredményeit.
A helyettesítési táblák elemzése
Mivel a szabvány nem tartalmazza a helyettesítő táblázatokat, számos munka (például in) azt sugallja, hogy egy „illetékes szervezet” „jó” és „rossz” helyettesítő táblázatokat is ki tud adni. A híres szakértő, Bruce Schneier azonban pletykáknak nevezi az ilyen feltételezéseket. Jól látható, hogy az algoritmus kriptográfiai erőssége nagymértékben függ a felhasznált helyettesítő táblák tulajdonságaitól, ennek megfelelően vannak gyenge helyettesítő táblák (lásd fentebb a példát), amelyek használata leegyszerűsítheti az algoritmus támadását. Mindazonáltal a különböző helyettesítő táblák használatának lehetősége nagyon méltó ötletnek tűnik, amely mellett a következő két tény idézhető a DES titkosítási szabvány történetéből (részletekért lásd a 3.15. szakaszt):
□ a DES algoritmus lineáris és differenciális kriptoanalízisét alkalmazó támadások a helyettesítő táblák sajátos jellemzőit használják; más táblák használatakor a kriptográfiai elemzést elölről kell kezdeni;
□ Kísérleteket tettek a DES megerősítésére a lineáris és differenciális kriptoanalízis ellen robusztusabb helyettesítési táblák használatával; ilyen, valóban robusztusabb táblázatokat javasoltak például az s 5 DES algoritmusban; de sajnos nem lehetett a DES-t s 5 DES-re cserélni, mivel a helyettesítő táblák szigorúan meghatározottak a szabványban, és ennek megfelelően az algoritmus implementációi valószínűleg nem támogatják a táblák más táblákra való cseréjét.
Számos munka (például , és ) tévesen arra a következtetésre jutott, hogy a GOST 28147-89 algoritmus titkos helyettesítő táblái a kulcs részét képezhetik, és növelhetik annak effektív hosszát (ami nem jelentős, mivel az algoritmus nagyon nagy 256 -bit kulcs). A munka azonban bebizonyítja, hogy a titkos helyettesítő táblák kiszámíthatók a következő, gyakorlatilag használható támadással:
1. Beállítjuk a nulla kulcsot, és végrehajtjuk a „nulla vektor” keresését, azaz a z = /(0) értéket, ahol /() az algoritmus körfüggvénye. Ez a szakasz körülbelül 2 titkosítási műveletet vesz igénybe.
2. A nulla vektor segítségével kiszámítjuk a helyettesítő táblázatok értékeit, ami legfeljebb 2 11 műveletet vesz igénybe.
Algoritmusmódosítások és elemzésük
A munka során a GOST 28147-89 algoritmus módosításainak kriptoanalízisét végezték el:
□ GOST-H algoritmus, amelyben az eredeti algoritmushoz képest megváltozott az alkulcsok használatának sorrendje, azaz körökben 25-től 32-ig direkt sorrendben használjuk az alkulcsokat, vagyis pontosan ugyanazt, mint az algoritmus előző köreiben;
□ 20 körös GOST® algoritmus, amelyben egy kör XOR-t használ a modulo-2 összeadás helyett a kulcs átfedésére.
Az elemzés eredményei alapján arra a következtetésre jutottak, hogy a GOST-H és a GOST© gyengébbek, mint az eredeti GOST 28147-89 algoritmus, mivel mindkettő rendelkezik gyenge kulcsosztályokkal. Érdemes megjegyezni, hogy a GOST© kriptoanalízis szempontjából a munka szóról szóra megismétli a GOST 28147-89 algoritmus kriptoanalízisének szentelt részt, amely egy jól ismert, 2000-ben megjelent munka (az eredetire való hivatkozás nélkül). Ez megkérdőjelezi a mű szerzőinek szakmai felkészültségét és egyéb eredményeit.
Az algoritmus egy nagyon érdekes módosítását javasoltam a munkában: az S\…Ss tábláknak szükségszerűen eltérőnek kell lenniük; az algoritmus minden körében át kell őket rendezni egy bizonyos törvény szerint. Ez a permutáció függhet a titkosítási kulcstól, de lehet titkos is (azaz egy nagyobb titkosítási kulcs része, mint az eredeti 256 bites kulcs). Mindkét lehetőség szerzőik szerint jelentősen növeli az algoritmus ellenállását a lineáris és differenciális kriptoanalízissel szemben.
És még egy, a helyettesítő táblákkal kapcsolatos módosítás szerepel a műben, amely a titkosítási kulcson alapuló helyettesítő táblák kiszámításának egyik lehetséges módszerét elemzi. A munka szerzői arra a következtetésre jutottak, hogy egy ilyen függőség gyengíti az algoritmust, mivel gyenge kulcsok jelenlétéhez és az algoritmus néhány lehetséges sebezhetőségéhez vezet.
Teljeskörű algoritmus-elemzés
Vannak támadások a teljes körű GOST 28147-89 ellen is, minden módosítás nélkül. Az egyik első nyilvános munka, amely elemzi az algoritmust, egy jól ismert munka, olyan támadásoknak szentelték, amelyek számos jól ismert titkosítási algoritmus kulcsbővítési eljárásának gyengeségeit használják ki. Különösen a teljes körű GOST 28147-89 algoritmus törhető meg a kapcsolódó kulcsok differenciális kriptográfiai elemzésével, de csak akkor, ha gyenge helyettesítő táblákat használnak. Az algoritmus 24 körös változata (amelyből az első 8 kör hiányzik) hasonló módon nyílik meg bármilyen helyettesítő táblával, de az erős helyettesítő táblázatok (például az itt megadott) teljesen kivitelezhetetlenné teszik az ilyen támadást.
A hazai tudósok, A. G. Rosztovcev és E. B. Makhovenko 2001-ben egy alapvetően új kriptoanalízis-módszert javasoltak (a szerzők szerint lényegesen hatékonyabb, mint a lineáris és differenciális kriptoanalízis) úgy, hogy a titkosított szövegnek és a kívánt kulcsértéknek megfelelő ismert nyílt szövegből célfüggvényt alkotnak. megtalálni a valódi kulcsértéknek megfelelő szélsőértékét. Megtalálták a GOST 28147-89 algoritmus gyenge kulcsainak nagy osztályát is, amelyek lehetővé teszik az algoritmus megnyitását csak 4 kiválasztott egyszerű szöveggel és a megfelelő titkosított szövegekkel, meglehetősen alacsony bonyolultsággal. Az algoritmus kriptoanalízise folytatódik a munkában.
2004-ben koreai szakértők egy csoportja olyan támadást javasolt, amely a kapcsolódó kulcsok differenciális kriptoanalízisét alkalmazva 91,7%-os valószínűséggel megszerezheti a titkos kulcs 12 bitjét. A támadáshoz 2 35 kiválasztott egyszerű szövegre és 2 36 titkosítási műveletre van szükség. Amint látja, ez a támadás gyakorlatilag haszontalan az algoritmus tényleges megtörésére.
A GOST 28147-89 által meghatározott algoritmus titkosítási kulcsa 256 bit. 64 bites blokkokban titkosítja az információkat (az ilyen algoritmusokat blokk-algoritmusoknak nevezzük), amelyeket ezután két 32 bites részblokkra (N1 és N2) osztanak fel (1. ábra). Az N1 alblokk feldolgozása meghatározott módon történik, majd értékét hozzáadjuk az N2 alblokk értékéhez (az összeadás modulo 2 történik, azaz a logikai XOR műveletet alkalmazzuk - „kizárólag vagy”), majd az alblokkok felcserélődnek. . Ezt a transzformációt bizonyos számú alkalommal („körök”) hajtják végre: 16 vagy 32 alkalommal, az algoritmus működési módjától függően. Minden körben két műveletet hajtanak végre.
1. ábra A GOST 28147-89 algoritmus vázlata.
Az első a kulcsolás. Az N1 alblokk tartalma modulo 2-ként hozzáadódik a Kx kulcs 32 bites részéhez. Teljes kulcs A titkosítás 32 bites alkulcsok összefűzéseként jelenik meg: K0, K1, K2, K3, K4, K5, K6, K7. A titkosítási folyamat során a körszámtól és az algoritmus működési módjától függően egy ilyen alkulcs kerül felhasználásra.
A második művelet az asztalcsere. Kulcsolás után az N1 alblokkot 8 darab 4 bites részre osztják, amelyek mindegyikének értékét az alblokk ezen részének helyettesítési táblázata szerint cserélik. Az alblokkot ezután 11 bittel balra forgatjuk.
A táblahelyettesítéseket (Substitution box - S-box) gyakran alkalmazzák a modern titkosítási algoritmusokban, ezért érdemes elmagyarázni, hogyan szerveződik egy ilyen művelet. A blokkok kimeneti értékeit a táblázat tartalmazza. Egy bizonyos dimenziójú (esetünkben 4 bites) adatblokknak saját numerikus ábrázolása van, amely meghatározza a kimeneti érték számát. Például, ha az S-box úgy néz ki, mint 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1 és a 4 bites blokk „0100” érkezett a bemenetre (4-es érték), akkor a táblázat szerint a kimeneti érték 15 lesz, azaz „1111” (0 a 4, 1 a 11, 2 a 2 ...).
A GOST 28147-89 által definiált algoritmus négy működési módot biztosít: egyszerű csere, gamma, gamma visszacsatolással és imitációs mellékletek generálása. Ugyanazt a titkosítási transzformációt használják, mint fentebb leírtuk, de mivel az üzemmódok célja eltérő, ez az átalakítás mindegyikben másként történik.
Egyszerű csere módban a fent leírt 32 kört hajtják végre az egyes 64 bites információblokkok titkosításához. Ebben az esetben a 32 bites alkulcsok a következő sorrendben kerülnek felhasználásra:
K0, K1, K2, K3, K4, K5, K6, K7, K0, K1 stb. - 1-24. körben;
K7, K6, K5, K4, K3, K2, K1, K0 - a 25-32. körben.
A visszafejtés ebben a módban pontosan ugyanúgy történik, de az alkulcsok használatának kissé eltérő sorrendjében:
K0, K1, K2, K3, K4, K5, K6, K7 - az 1-8. körben;
K7, K6, K5, K4, K3, K2, K1, K0, K7, K6 stb. - a 9-től 32-ig terjedő körben.
Minden blokk egymástól függetlenül titkosításra kerül, azaz az egyes blokkok titkosítási eredménye csak a tartalmuktól (az eredeti szöveg megfelelő blokkjától) függ. Ha az eredeti (sima) szövegnek több azonos blokkja van, akkor a megfelelő titkosított szövegblokkok is azonosak lesznek, ami további hasznos információ egy titkosítást feltörni próbáló kriptaelemző számára. Ezért ezt a módot elsősorban maguknak a titkosítási kulcsoknak a titkosítására használják (nagyon gyakran alkalmaznak többkulcsos sémákat, amelyekben számos okból a kulcsok egymáson vannak titkosítva). Két másik üzemmód az információ titkosítására szolgál - a gamma és a gamma visszacsatolással.
Gamma módban minden egyszerű szöveg blokk bitenként modulo 2-ként hozzáadódik egy 64 bites titkosítási gamma blokkhoz. A gamma titkosítás egy speciális sorozat, amelyet az N1 és N2 regiszterekkel végzett bizonyos műveletek eredményeként kapunk.
- 1. A kezdeti kitöltést az N1 és N2 regiszterbe írják – ez egy 64 bites érték, amelyet szinkronizációs üzenetnek neveznek.
- 2. Az N1 és N2 regiszterek (ebben az esetben a szinkron üzenetek) tartalma egyszerű csere módban titkosítva van.
- 3. Az N1 regiszter tartalmát modulo (232 - 1) adjuk hozzá a C1 = 224 + 216 + 28 + 24 konstanssal, és az összeadás eredményét az N1 regiszterbe írjuk.
- 4. Az N2 regiszter tartalmát 232 modulo hozzáadjuk a C2 = 224 + 216 + 28 + 1 konstanssal, és az összeadás eredményét az N2 regiszterbe írjuk.
- 5. Az N1 és N2 regiszterek tartalma a titkosítás 64 bites gamma blokkjaként kerül kiadásra (ebben az esetben N1 és N2 alkotja az első gamma blokkot).
Ha a következő gamma blokkra van szükség (azaz a titkosítást vagy a visszafejtést folytatni kell), akkor visszatér a 2. lépéshez.
A visszafejtéshez a gamma generálása hasonló módon történik, majd a titkosított szöveg és a gamma bitek ismét XOR-re kerülnek. Mivel ez a művelet reverzibilis, helyesen kidolgozott skála esetén az eredeti szöveget kapjuk (1. táblázat).
Asztal 1. Titkosítás és visszafejtés gamma módban
A gamma visszafejtéséhez szükséges rejtjel kifejlesztéséhez a kriptogramot visszafejtő felhasználónak ugyanazzal a kulccsal és a szinkronizálási üzenet értékével kell rendelkeznie, amelyet az információ titkosításakor használtak. Ellenkező esetben az eredeti szöveget nem lehet lekérni a titkosított szövegről.
A GOST 28147-89 algoritmus legtöbb megvalósításában a szinkronizálási üzenet nem titkos, azonban vannak olyan rendszerek, ahol a szinkronizálási üzenet ugyanaz a titkos elem, mint a titkosítási kulcs. Az ilyen rendszerek esetében az algoritmus effektív kulcshosszát (256 bit) a titkos szinkronizációs üzenet további 64 bitjével növelik, ami szintén kulcselemnek tekinthető.
Zárt hurkú gamma módban az N1 és N2 regiszterek kitöltésére a 2. blokktól kezdve nem az előző gamma blokkot használjuk, hanem az előző nyílt szöveg blokk titkosításának eredményét (2. ábra). Az első blokk ebben a módban teljesen hasonlóan generálódik, mint az előző.
2. ábra Rejtjel gamma generálása zárt hurkú gamma módban.
Az utánzási előtagok generálási módjának mérlegelésekor meg kell határozni a generálás alanya fogalmát. Az előtag egy titkosítási kulcs segítségével kiszámított kriptográfiai ellenőrző összeg, amelyet az üzenetek integritásának ellenőrzésére terveztek. Utánzó előtag generálásakor a következő műveleteket hajtjuk végre: az információs tömb első 64 bites blokkját, amelyhez az utánzati előtagot számítjuk, az N1 és N2 regiszterekbe írjuk, és csökkentett egyszerű helyettesítési módban titkosítjuk (a 32-ből az első 16 kört végrehajtják). A kapott eredményt modulo 2 összegzi a következő információblokkkal, és az eredményt N1 és N2 tárolja.
A ciklus az utolsó információblokkig ismétlődik. Az N1 és N2 regiszterek vagy azok egy részének ezen átalakítások eredményeként kapott 64 bites tartalmát imitációs előtagnak nevezzük. Az utánzat előtag méretét az üzenetek szükséges megbízhatósága alapján választják ki: az utánzat előtag r bit hosszával annak a valószínűsége, hogy az üzenetben bekövetkezett változás észrevétlen marad, 2-r, leggyakrabban a 32 bites utánzó előtagot használnak, azaz a regiszterek tartalmának felét. Ez elég is, hiszen mint minden ellenőrző összeg, az imitációs melléklet is elsősorban az információ véletlen eltorzulása elleni védelmet szolgálja. Az adatok szándékos módosítása elleni védelem érdekében, egyéb kriptográfiai módszerek- elsősorban elektronikus digitális aláírás.
Az információcsere során az imitációs előtag egyfajta kiegészítő ellenőrzési eszközként szolgál. A rendszer a nyílt szövegre számítja ki, ha bármilyen információ titkosítva van, és a titkosított szöveggel együtt kerül elküldésre. A visszafejtés után az utánzat előtag új értékét számítják ki, és összehasonlítják az elküldött értékkel. Ha az értékek nem egyeznek, az azt jelenti, hogy a titkosított szöveg megsérült az átvitel során, vagy helytelen kulcsokat használtak a visszafejtés során. Az utánzó előtag különösen hasznos a kulcsinformációk helyes visszafejtésének ellenőrzéséhez többkulcsos sémák használatakor.
A GOST 28147-89 algoritmust nagyon erős algoritmusnak tekintik - jelenleg nem javasoltak hatékonyabb módszereket a közzétételére, mint a fent említett „nyers erő” módszer. Magas biztonságát elsősorban a nagy kulcshossznak köszönheti - 256 bit. Titkos szinkronizálási üzenet használatakor a tényleges kulcshossz 320 bitre nő, és a helyettesítő tábla titkosítása további biteket ad hozzá. Ezenkívül a kriptográfiai erősség a transzformációs körök számától függ, amelynek a GOST 28147-89 szerint 32-nek kell lennie (a bemeneti adatok diszperziójának teljes hatása 8 kör után érhető el).
A GOST 28147-89 előnyei a hamis adatok előírása elleni védelem (utánzatok generálása) és ugyanaz a titkosítási ciklus mind a négy GOST algoritmusban.