V našej krajine existuje jednotný algoritmus na kryptografickú reprezentáciu údajov pre systémy spracovania informácií v počítačových sieťach, jednotlivé počítačové systémy a počítače, ktorý je určený tzv. GOST 28147-89.
Tento algoritmus konverzie kryptografických údajov je 64-bitový blokový algoritmus s 256-bitovým kľúčom, určený na implementáciu hardvéru a softvéru, spĺňa kryptografické požiadavky a nekladie obmedzenia na stupeň utajenia chránených informácií.
Pri popise algoritmu sa používa nasledujúci zápis:
L a R sú bitové sekvencie;
LR je zreťazenie sekvencií L a R, v ktorom bity sekvencie R nasledujú po bitoch sekvencie L;
(+) - bitové sčítanie modulo 2 (operácia "exkluzívne OR");
[+] - sčítanie 32-bitových čísel modulo 2 32 ;
(+) - sčítanie 32-bitových čísel modulo 2 32 -1.
Čísla sa spočítavajú podľa nasledujúceho pravidla:
A[+]B=A+B, ak A+B< 2 32 ,
A [+] B = A + B - 2 32, ak A + B >= 2 32 . A (+) B = A + B, ak A + B< 2^32 - 1,
A {+} B = A + B - (2^32 - 1), если A + B >= 2^32 - 1.
Algoritmus poskytuje štyri režimy činnosti:
V každom prípade sa na šifrovanie údajov používa 256-bitový kľúč K, ktorý je reprezentovaný ako osem 32-bitových podkľúčov K i:
K = K 7 K 6 K 5 K 4 K 3 K 2 K 1 K 0.
Dešifrovanie sa vykonáva pomocou rovnakého kľúča ako šifrovanie, ale tento proces je opakom procesu šifrovania údajov. Jednoduchý režim výmeny
Prvý a najjednoduchší režim - nahradenie. Údaje, ktoré sa majú zašifrovať, sú rozdelené do 64-bitových blokov. Šifrovacia procedúra pre otvorený dátový blok To zahŕňa 32 cyklov (j=1...32).
Blok To je rozdelený na dve sekvencie po 32 bitoch: B(0)A(0), kde B(0) sú ľavé alebo najvyššie platné bity, A(0) sú pravé alebo najnižšie platné bity.
Tieto sekvencie sa vložia do jednotiek N 1 a N 2 pred začiatkom prvého šifrovacieho cyklu.
Prvý cyklus (j=1) šifrovacej procedúry pre 64-bitový dátový blok je opísaný nasledujúcimi vzorcami:
Tu i označuje číslo iterácie (i = 1, 2,..., 32).
Funkcia f sa nazýva šifrovacia funkcia. Jeho argumentom je súčet modulo 2 32 čísla A(i) získaného v predchádzajúcom kroku iterácie a číslo X(j) kľúča (rozmer každého z týchto čísel je 32 číslic).
Funkcia šifrovania zahŕňa dve operácie s výsledným 32-bitovým súčtom. Prvá operácia sa nazýva substitúcia K. Substitučný blok K pozostáva z 8 substitučných uzlov K(1) ... K(8) s pamäťou každého 64 bitov. 32-bitový vektor prichádzajúci do substitučného bloku je rozdelený na 8 po sebe idúcich 4-bitových vektorov, z ktorých každý je konvertovaný na 4-bitový vektor zodpovedajúcim náhradným uzlom, ktorým je tabuľka 16 celých čísel v rozsahu 0.. .15.
Vstupný vektor určuje adresu riadku v tabuľke, ktorého číslo je výstupný vektor. 4-bitové výstupné vektory sú potom postupne kombinované do 32-bitového vektora. Tabuľka substitučných blokov K obsahuje kľúčové prvky spoločné pre počítačovú sieť a zriedkavo menené.
Druhou operáciou je cyklický posun doľava 32-bitového vektora získaného dosadením K. 64-bitový šifrovaný dátový blok Tw je reprezentovaný ako Tw =A(32)B(32).
Zvyšok otvorených dátových blokov v režime jednoduchej výmeny je zašifrovaný rovnakým spôsobom.
Majte na pamäti, že režim jednoduchej výmeny možno na šifrovanie údajov použiť iba v obmedzených prípadoch. Tieto prípady zahŕňajú vygenerovanie kľúča a jeho zašifrovanie so zabezpečením imitačnej ochrany (ochrana pred uložením falošných údajov) pre prenos cez komunikačné kanály alebo uloženie do pamäte počítača. Režim gama
Otvorené dáta, rozdelené do 64-bitových blokov T(i) (i=1, 2,..., m, kde m je určené množstvom zašifrovaných dát), sú šifrované v gama režime bitovým sčítaním modulo 2 s šifra gama Гw, ktorá sa vyrába v blokoch po 64 bitoch, t.j. Гw = (Г(1),Г(2),...,Г(i),...,Г(m)).
Rovnica šifrovania údajov v režime gama môže byť znázornená takto:
W(i) = A (Y(i-1) [+] C2, Z(i-1) (+) C1) (+) T(i) = G(i) (+) T(i).
Tu W(i) je 64-bitový blok šifrovaného textu,
A - funkcia šifrovania v režime jednoduchého nahradenia (argumenty tejto funkcie sú dve 32-bitové čísla),
C1 a C2 - konštanty špecifikované v GOST 28147-89,
Y(i) a Z(i) sú množstvá, ktoré sa určujú iteračne, keď sa gama tvorí takto:
(Y(0), Z(0)) = A(S), kde S je 64-bitová binárna sekvencia (synchronizačná správa);
(Y(i), Z(i)) = (Y(i-1) [+] C2, Z(i-1) (+) C1) pre i = 1,2,...,m.
Dešifrovanie údajov je možné len vtedy, ak existuje synchronizačná správa, ktorá nie je tajným prvkom šifry a môže byť uložená v pamäti počítača alebo prenášaná komunikačnými kanálmi spolu so zašifrovanými údajmi. Gama režim spätnej väzby
Režim škálovanie s spätná väzba veľmi podobný gama režimu. Rovnako ako v režime gama sú otvorené dáta rozdelené do 64-bitových blokov T(i) (i=1, 2,..., m , kde m je určené množstvom zašifrovaných dát), šifrované bitovým sčítaním modulo 2 so šifrou gama Gsh, ktorá sa vyrába v blokoch po 64 bitoch:
Гw = (Г(1),Г(2),...,Г(i),...,Г(m)).
Počet bitov v bloku T(m) môže byť menší ako 64, pričom časť šifry gama z bloku G(m), ktorá sa nepoužíva na šifrovanie, sa zahodí.
Rovnicu šifrovania údajov v režime gama so spätnou väzbou možno znázorniť takto:
Tu W(i) je 64-bitový blok šifrovaného textu,
A - funkcia šifrovania v režime jednoduchej výmeny. Argumentom funkcie v prvom kroku iteratívneho algoritmu je 64-bitová synchronizačná správa a vo všetkých nasledujúcich krokoch predchádzajúci blok šifrovaných údajov W(i-1).
Imitácia vložiek
Vývojový proces imitácie stohov je jednotný pre ktorýkoľvek z režimov šifrovania údajov.
Imitačné vkladanie je blok p bitov (imitácia vkladania Ip), ktorý sa vytvára buď pred šifrovaním celej správy, alebo súbežne so šifrovaním blok po bloku. Prvé bloky otvorených dát, ktoré sa podieľajú na vývoji simulácie vkladania, môžu obsahovať servisné informácie (napríklad časť adresy, čas, synchronizačná správa) a nemusia byť šifrované. Hodnota parametra p (počet binárnych číslic v simulovanej vložke) je určená kryptografickými požiadavkami, berúc do úvahy skutočnosť, že pravdepodobnosť falošnej interferencie je 1/2^p.
Na získanie imitácie vloženia sú otvorené dáta reprezentované ako 64-bitové bloky T(i) (i = 1, 2,..., m, kde m je určené množstvom zašifrovaných dát). Prvý blok otvorených dát T(1) je podrobený transformácii zodpovedajúcej prvým 16 cyklom šifrovacieho algoritmu v režime jednoduchého nahradzovania. Okrem toho sa kľúč použitý na šifrovanie údajov používa ako kľúč na generovanie vloženia imitácie.
64-bitové číslo získané po 16 pracovných cykloch sa sčíta modulo 2 s druhým otvoreným dátovým blokom T(2). Výsledok súčtu je opäť podrobený transformácii zodpovedajúcej prvým 16 cyklom šifrovacieho algoritmu v režime jednoduchého nahradzovania. Výsledné 64-bitové číslo sa pridá modulo 2 k tretiemu bloku otvorených dát T(3) atď. Posledný blok T(m), ak je to potrebné, doplnený na celý 64-bitový blok s nulami, sa sčíta modulo 2 s výsledkom práce v kroku m-1, po ktorom sa zašifruje v režime jednoduchého nahradzovania cez prvý 16 cyklov algoritmu. Z prijatého 64-bitového čísla sa vyberie segment Ip s dĺžkou p bitov.
Imitácia vložky Ip sa prenáša cez komunikačný kanál alebo do pamäte počítača po zašifrovaných dátach. Prichádzajúce zašifrované dáta sa dešifrujú a z prijatých blokov otvorených dát T(i) sa vygeneruje imitácia vložky Ip, ktorá sa potom porovná s imitáciou vložky IR prijatej z komunikačného kanála alebo z pamäte počítača. nezhodujú, všetky dešifrované údaje sa považujú za nepravdivé.
Stručný popis šifry
GOST 28147-89 - Sovietsky a ruský štandard pre symetrické šifrovanie, zavedený v roku 1990, je tiež štandardom CIS. Celé meno - „GOST 28147-89 Systémy spracovania informácií. Kryptografická ochrana. Algoritmus kryptografickej transformácie“. Algoritmus blokovej šifry. Pri použití metódy šifrovania s gama môže vykonávať funkcie algoritmu prúdovej šifry.
GOST 28147-89 je bloková šifra s 256-bitovým kľúčom a 32 cyklami konverzie, pracujúca so 64-bitovými blokmi. Základom šifrovacieho algoritmu je sieť Feistel. Základným režimom šifrovania v súlade s GOST 28147-89 je režim jednoduchého nahradzovania (definujú sa aj zložitejšie režimy - gama, gama so spätnou väzbou a imitáciou vkladania).
Ako funguje algoritmus
Algoritmus sa zásadne nelíši od DES. Obsahuje aj šifrovacie cykly (je ich 32) podľa Feistelovej schémy (obr. 2.9.).
Ryža. 2.9. Šifrovacie kolá algoritmu GOST 28147-89.
Na generovanie podkľúčov je pôvodný 256-bitový kľúč rozdelený do ôsmich 32-bitových blokov: k 1 …k 8 . Kľúče k 9 ... k 24 sú cyklickým opakovaním kľúčov k 1 ... k 8 (číslované od najmenej významných bitov po najvýznamnejšie). Klávesy k 25 ...k 32 sú klávesy k 1 ...k 8 v opačnom poradí.
Po dokončení všetkých 32 kôl algoritmu sa bloky A 33 a B 33 zlepia (všimnite si, že A 33 sa stane najvýznamnejším bitom a B 33 sa stane najmenej významným bitom) - výsledok je výsledkom algoritmu.
Funkcia f(A i ,K i) sa vypočíta takto: A i a K i sa pripočítajú modulo 2 32 , potom sa výsledok rozdelí na osem 4-bitových podsekvencií, z ktorých každá sa privedie na vlastný vstup uzol substitučnej tabuľky(vo vzostupnom poradí bitovej priority), nazývané nižšie S-blok. Celkový počet S-blokov GOST je osem, t.j. rovnaký ako počet podsekvencií. Každý S-blok predstavuje permutáciu čísel od 0 do 15. Prvá 4-bitová podsekvencia pripadá na vstup prvého S-boxu, druhá - na vstup druhého atď. Výstupy všetkých ôsmich S-boxov sú spojené do 32-bitové slovo, potom sa celé slovo cyklicky posúva doľava (k najvýznamnejším bitom) o 11 bitov. Všetkých osem S-boxov môže byť odlišných. V skutočnosti môžu byť dodatočným kľúčovým materiálom, ale častejšie sú parametrom schémy, ktorý je spoločný pre určitú skupinu používateľov. Z textu normy vyplýva, že dodávka náplne náhradných jednotiek (S-blokov) sa uskutočňuje predpísaným spôsobom, t.j. vývojár algoritmov. Komunita ruských vývojárov CIPF sa dohodla na náhradných uzloch používaných na internete.
Dešifrovanie sa vykonáva rovnakým spôsobom ako šifrovanie, ale poradie podkľúčov k i je obrátené.
Prevádzkové režimy algoritmu GOST 28147-89
Algoritmus GOST 28147-89 má štyri režimy prevádzky.
1. Režimjednoduchá výmena akceptuje ako vstup dáta, ktorých veľkosť je násobkom 64 bitov. Výsledkom šifrovania je vstupný text, konvertovaný v blokoch 64 bitov v prípade šifrovania s cyklom "32-3" a v prípade dešifrovania - s cyklom "32-P".
2. Režimškálovanie akceptuje dáta akejkoľvek veľkosti ako vstup, ako aj ďalší 64-bitový parameter - synchronizovať správu. Počas prevádzky sa synchronizačná správa konvertuje v cykle "32-Z", výsledok je rozdelený na dve časti. K prvej časti sa pripočíta modulo 2 32 s konštantnou hodnotou 1010101 16 . Ak sa druhá časť rovná 2 32 -1, potom sa jej hodnota nemení, inak sa pripočíta modulo 2 32 -1 s konštantnou hodnotou 1010104 16 . Hodnota získaná spojením oboch konvertovaných častí, nazývaná šifra gama, vstupuje do slučky „32-3“, jej výsledkom je bitovo pridané modulo 2 so 64-bitovým blokom vstupných dát. Ak je táto hodnota menšia ako 64 bitov, extra bity prijatej hodnoty sa zahodia. Výsledná hodnota sa odošle na výstup. Ak stále prichádzajú údaje, akcia sa zopakuje: blok zložený z 32-bitových častí sa prevedie po častiach atď.
3. Režimškálovanie so spätnou väzbou tiež akceptuje dáta ľubovoľnej veľkosti a synchronizačnú správu ako vstup. Blok vstupných dát je bitovo pridaný modulo 2 s výsledkom transformácie v cykle "32-3" synchronizačnej správy. Výsledná hodnota sa odošle na výstup. Hodnota synchronizačnej správy je v prípade šifrovania nahradená výstupným blokom a v prípade dešifrovania - vstupom, t.j. šifrovaná. Ak je posledný blok prichádzajúcich dát menší ako 64 bitov, potom sa extra bity gama (výstup slučky "32-3") zahodia. Ak stále existujú prichádzajúce údaje, akcia sa zopakuje: gama šifra sa vytvorí z výsledku šifrovania nahradenej hodnoty atď.
4. Výrobný režimimitácie vložiek berie vstupné údaje, ktoré majú veľkosť aspoň dvoch úplných 64-bitových blokov, a vracia 64-bitový blok údajov nazývaný zosobnenie vloženia. Dočasná 64-bitová hodnota je nastavená na 0, potom, kým sú k dispozícii vstupné dáta, sa bitovo pripočíta modulo 2 s výsledkom vykonania cyklu „16-3“, ktorého vstupom je blok vstupných dát. . Po ukončení zadávania sa ako výsledok vráti dočasná hodnota.
Kryptoanalýza šifry
Šifra GOST 28147-89 používa 256-bitový kľúč a veľkosť priestoru pre kľúč je 2256 . Žiadny počítač na všeobecné použitie, ktorý v súčasnosti existuje, nedokáže uhádnuť kľúč za menej ako mnoho stoviek rokov. Ruská norma GOST 28147-89 bola navrhnutá s veľkou rezervou a o mnoho rádov prevyšuje americkú normu DES so svojou reálnou veľkosťou kľúča 56 bitov a objemom priestoru kľúča iba 2 56 .
Existujú aj útoky na celoobvodový GOST 28147-89 bez akýchkoľvek úprav. Jeden z prvých otvorené diela, v ktorej bola vykonaná analýza algoritmu, využíva slabé stránky postupu rozšírenia kľúča množstva známych šifrovacích algoritmov. Najmä úplný algoritmus GOST 28147-89 možno prelomiť pomocou diferenciálnej kryptoanalýzy na prepojených kľúčoch, ale iba ak sa použijú slabé substitučné tabuľky. 24-kolová verzia algoritmu (v ktorej chýba prvých 8 kôl) sa otvára rovnakým spôsobom pre akékoľvek tabuľky striedania, avšak silné tabuľky striedania robia takýto útok úplne nepraktickým.
Domáci vedci A.G. Rostovtsev a E.B. Makhovenko v roku 2001 navrhol zásadne novú metódu kryptoanalýzy vytvorením objektívnej funkcie zo známeho otvoreného textu, ktorému zodpovedá šifrový text a požadovanej hodnoty kľúča a nájdenie jeho extrému zodpovedajúceho skutočnej hodnote kľúča. Našli tiež veľkú triedu slabých kľúčov algoritmu GOST 28147-89, ktoré vám umožňujú otvoriť algoritmus iba pomocou 4 vybraných otvorených textov a ich zodpovedajúcich šifrových textov s pomerne nízkou zložitosťou.
V roku 2004 skupina expertov z Kórey navrhla útok, pomocou ktorého je možné pomocou diferenciálnej kryptoanalýzy na pridružených kľúčoch získať 12-bitový tajný kľúč s pravdepodobnosťou 91,7 %. Útok si vyžaduje 235 vybraných otvorených textov a 236 šifrovacích operácií. Ako vidíte, tento útok je pre skutočné otvorenie algoritmu prakticky zbytočný.
Tabuľka suplovania je dlhodobý kľúčový prvok, to znamená, že platí oveľa viac dlhý termín než jeden kľúč. Predpokladá sa, že je spoločný pre všetky šifrovacie uzly v rámci jedného systému kryptografickej ochrany. Kvalita tejto tabuľky určuje kvalitu šifry. Pri "silnej" substitučnej tabuľke sila šifry neklesne pod určitú prijateľnú hranicu, aj keď je zverejnená. Naopak, použitie „slabej“ tabuľky môže znížiť silu šifry na neprijateľne nízku hranicu. Žiadne informácie o kvalite tabuľky striedaní v otvorené tesnenie Rusko nebolo zverejnené, ale o existencii „slabých“ tabuliek niet pochýb – príkladom je „triviálna“ substitučná tabuľka, podľa ktorej sa každá hodnota nahrádza sama sebou. V mnohých prácach sa mylne dospelo k záveru, že tajné substitučné tabuľky algoritmu GOST 28147-89 môžu byť súčasťou kľúča a zvýšiť jeho efektívnu dĺžku (čo nie je podstatné, pretože algoritmus má veľmi veľký 256-bitový kľúč). ).
Tento algoritmus je povinný na použitie ako šifrovací algoritmus vládne organizácie RF a množstvo komerčných.
Popis algoritmu
Schéma algoritmu je znázornená na obr. 3.1. Ako vidíte, schéma tohto algoritmu je pomerne jednoduchá, čo jednoznačne zjednodušuje jeho softvérovú alebo hardvérovú implementáciu.
Algoritmus GOST 28147-89 šifruje informácie v blokoch po 64 bitoch, ktoré sú rozdelené do dvoch podblokov po 32 bitoch (N1 a N2). Podblok N1 je spracovaný určitým spôsobom, po ktorom je pridaná jeho hodnota
s hodnotou podbloku N2 (sčítanie sa vykoná modulo 2), potom sa podbloky vymenia. Takáto transformácia sa vykonáva pre určitý počet kôl: 16 alebo 32, v závislosti od režimu činnosti algoritmu (opísaného nižšie). V každom kole sa vykonávajú tieto operácie:
1. Prekrytie kľúča. Obsah podbloku /VI je pridaný modulo 2 32 do časti Kx kľúča.
Šifrovací kľúč algoritmu GOST 28147-89 má rozmer 256 bitov a Kx je jeho 32-bitová časť, t. j. 256-bitový šifrovací kľúč je reprezentovaný ako zreťazenie 32-bitových podkľúčov (obr. 3.2):
SH ATI, AG2, Yu, AG4, K5, Kb, K7.
Počas procesu šifrovania sa používa jeden z týchto podkľúčov v závislosti od čísla kola a režimu činnosti algoritmu.
Ryža. 3.1. Schéma algoritmu GOST 28147-
Ryža. 3.2. Šifrovací kľúč algoritmu GOST 28147-89
2. Náhrada tabuľky. Po prekrytí kľúča sa podblok /VI rozdelí na 8 častí po 4 bitoch, pričom hodnota každého z nich sa individuálne nahradí podľa náhradnej tabuľky pre túto časť podbloku. Náhrady stolov (Substitution box, S-box) sa často používajú v moderné algoritmyšifrovanie, preto stojí za to ich podrobnejšie zvážiť.
Nahradenie tabuľky sa využíva týmto spôsobom: na vstup sa privedie dátový blok určitého rozmeru (v tomto prípade 4-bitový), ktorého číselné znázornenie určuje číslo výstupnej hodnoty. Napríklad máme S-box nasledujúceho tvaru:
4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1.
Na vstup nech príde 4-bitový blok „0100“, teda hodnota je 4. Výstupná hodnota bude podľa tabuľky 15, t.j. "1111" (0 sa nahradí 4, 1 sa nahradí 11, hodnota 2 sa nemení atď.).
Ako vidíte, schéma algoritmu je veľmi jednoduchá, čo znamená, že najväčšia záťaž pri šifrovaní údajov padá na náhradné tabuľky. Bohužiaľ, algoritmus má tú vlastnosť, že existujú „slabé“ substitučné tabuľky, pomocou ktorých je možné algoritmus odhaliť kryptanalytickými metódami. Medzi slabé patrí napríklad tabuľka, v ktorej sa výstup rovná vstupu:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.
3. Bitový cyklický posun doľava o 11 bitov.
Režimy algoritmov
Algoritmus GOST 28147-89 má 4 režimy prevádzky:
□ jednoduchý režim výmeny;
□ gama režim;
P herný režim so spätnou väzbou;
□ spôsob výroby imitácie príloh.
Tieto režimy sa trochu líšia od všeobecne akceptovaných režimov (popísaných v časti 1.4), takže stojí za to ich zvážiť podrobnejšie.
Tieto režimy majú rôzne účely, ale používajú rovnakú transformáciu šifrovania opísanú vyššie.
Jednoduchý režim výmeny
V jednoduchom režime nahradenia sa jednoducho vykoná 32 kôl opísaných vyššie na zašifrovanie každého 64-bitového bloku informácií. 32-bitové podkľúče sa používajú v nasledujúcom poradí:
□ KO, Kl, K2, K3, K4, K5, Kb, AG7, KO, ATI atď. - v kolách 1 až 24;
□ K1, Kb, K5, K4, K3, K2, K\, KO - v kolách 25 až 32.
Dešifrovanie v režime jednoduchého nahradenia sa vykonáva presne rovnakým spôsobom, ale s mierne odlišnou postupnosťou použitia podkľúčov:
□ KO, K\, K2, KZ, K4, K5, Kb, KP - v 1. až 8. kole;
□ KP, Kb, K5, K4, K3, K2, K\, KO, K1, Kb atď. - v kolách 9 až 32.
Podobne ako v štandardnom režime ECB sa režim jednoduchej výmeny vzhľadom na samostatné šifrovanie blokov dôrazne neodporúča na šifrovanie skutočných údajov; mal by sa používať iba na šifrovanie iných šifrovacích kľúčov vo viackľúčových schémach.
Režim gama
V režime gama (obr. 3.3) sa každý blok otvoreného textu pridáva bit po bite modulo 2 do gama bloku šifry s veľkosťou 64 bitov. Šifra gama je špeciálna sekvencia, ktorá sa generuje pomocou transformácií opísaných vyššie takto:
1. V registroch N1 a N2 je zapísaná ich počiatočná náplň - 64-bitová hodnota, nazývaná "synchronizačná správa" (synchronizačná správa je v skutočnosti analógom inicializačného vektora v režimoch CBC, CFB a OFB ).
2. Obsah registrov /VI a N2 (v tomto prípade synchronizačné správy) je zašifrovaný v režime jednoduchej výmeny.
3. Obsah N1 sa sčíta modulo (2 32 - 1) s konštantou CI = 2 24 + 2 16 + 2 8 + 4 , výsledok sčítania sa zapíše do registra /VI.
4. K obsahu N2 sa pripočíta modulo 2 s konštantou C2 = 2 24 + 2 16 + 2 8 +1, výsledok sčítania sa zapíše do registra N2.
5. Obsah registrov /VI a N2 je na výstupe ako 64-bitový šifrovací gama blok (tj v tomto prípade /VI a N2 tvoria prvý gama blok).
6. Ak je potrebný ďalší gama blok (t. j. šifrovanie alebo dešifrovanie musí pokračovať), vráťte sa na krok 2.
Pre dešifrovanie sa rovnakým spôsobom vygeneruje gama, potom sa operácia XOR opäť aplikuje na šifrový text a gama bity.
Na vygenerovanie rovnakej šifry gama musí mať používateľ dešifrujúci kryptogram rovnaký kľúč a rovnakú hodnotu synchronizačnej správy, aké boli použité na zašifrovanie informácií. V opačnom prípade nebudete môcť získať pôvodný text zo zašifrovaného.
Vo väčšine implementácií algoritmu GOST 28147-89 nie je synchronizačná správa tajným prvkom, ale synchronizačná správa môže byť rovnako tajná ako šifrovací kľúč. V tomto prípade môžeme uvažovať, že efektívna dĺžka kľúča algoritmu (256 bitov) sa zvýši o ďalších 64 bitov synchronizačnej správy, čo možno považovať za dodatočný kľúčový prvok.
Gama režim spätnej väzby
V spätnoväzbovom gama režime počnúc 2. blokom sa registre /VI a L/2 nenapĺňajú predchádzajúcim gama blokom, ale výsledkom šifrovania predchádzajúceho bloku otvoreného textu (obr. 3.4). Prvý blok v tomto režime je generovaný presne rovnakým spôsobom ako predchádzajúci.
Ryža. 3.4. Generovanie šifry gama v režime gama so spätnou väzbou
Režim generovania imitátora
Spoof je kryptografický kontrolný súčet vypočítaný pomocou šifrovacieho kľúča a určený na kontrolu integrity správ. Na jeho výpočet existuje špeciálny režim algoritmu GOST 28147-89.
Generovanie predpony imitácie sa vykonáva takto:
1. Prvý 64-bitový blok informácií, pre ktorý sa vypočítava impersonátor, sa zapíše do registrov N1 a N2 a zašifruje sa v režime redukovanej jednoduchej náhrady, v ktorom sa vykoná prvých 16 kôl z 32.
2. Získaný výsledok sa sčíta modulo 2 s ďalším blokom informácií, pričom sa výsledok uloží do N1 a N2.
3. M a N2 sú opäť zakódované v redukovanom režime jednoduchej náhrady a tak ďalej až do posledného bloku informácií.
Za predponu sa považuje 64-bitový výsledný obsah registrov N1 a N2 alebo ich časti. Najčastejšie sa používa 32-bitová imitácia prefixu, to znamená polovica obsahu registrov. To stačí, pretože ako každý kontrolný súčet, aj predpona imitácie je určená predovšetkým na ochranu pred náhodným skreslením informácií. Na ochranu pred úmyselnou úpravou údajov sa používajú iné kryptografické metódy – predovšetkým elektronické digitálny podpis(pozri časť 1.1).
Predpona imitácie sa používa takto:
1. Pri šifrovaní akejkoľvek informácie sa vypočíta imitátor otvoreného textu a odošle sa spolu so šifrovaným textom.
2. Po dekódovaní sa predpona imitácie znova vypočíta a porovná sa s odoslanou.
3. Ak sa vypočítané a odoslané predpony imitácie nezhodujú, šifrový text bol pri prenose skreslený alebo boli pri dešifrovaní použité nesprávne kľúče.
Napodobenina predpony je užitočná najmä na overenie správneho dešifrovania kľúčových informácií pri použití schém s viacerými kľúčmi.
Imitačná predpona je nejakým analógom autentifikačného kódu správy MAC vypočítaného v režime CBC; rozdiel je v tom, že výpočet prefixu nepoužíva synchronizačnú správu, zatiaľ čo výpočet MAC používa inicializačný vektor.
Kryptografická sila algoritmu
V roku 1994 bol popis algoritmu GOST 28147-89 preložený do angličtiny a publikovaný; až potom sa začali objavovať výsledky jeho analýz vykonaných zahraničnými expertmi; počas dlhého obdobia sa však nezistili žiadne útoky blížiace sa uskutočniteľnosti.
□ veľká dĺžka kľúča – 256 bitov; spolu s tajnou synchronizačnou správou sa efektívna dĺžka kľúča zvýši na 320 bitov;
□ 32 kôl transformácií; už po 8 kolách sa dosiahne plný efekt rozptylu vstupných dát: zmena jedného bitu bloku otvoreného textu ovplyvní všetky bity bloku šifrovaného textu a naopak, t.j. existuje viacnásobná bezpečnostná rezerva.
Zvážte výsledky kryptoanalýzy algoritmu GOST 28147-89.
Analýza substitučných tabuliek
Keďže substitučné tabuľky nie sú v norme uvedené, množstvo prác (napríklad v) naznačuje, že „kompetentná organizácia“ môže vydať „dobré“ aj „zlé“ substitučné tabuľky. Slávny odborník Bruce Schneier však takéto domnienky nazýva „fámy“. Je zrejmé, že kryptografická sila algoritmu do značnej miery závisí od vlastností použitých substitučných tabuliek, respektíve existujú slabé substitučné tabuľky (pozri príklad vyššie), ktorých použitie môže zjednodušiť útok algoritmu. Napriek tomu sa možnosť použitia rôznych substitučných tabuliek javí ako veľmi hodnotná myšlienka, ktorú podporujú nasledujúce dve skutočnosti z histórie šifrovacieho štandardu DES (podrobnosti nájdete v časti 3.15):
□ útoky využívajúce lineárnu aj diferenciálnu kryptoanalýzu algoritmu DES využívajú špecifické vlastnosti substitučných tabuliek; pri použití iných tabuliek bude musieť kryptoanalýza začať odznova;
□ Boli urobené pokusy posilniť DES proti lineárnej a diferenciálnej kryptoanalýze použitím silnejších substitučných tabuliek; takéto tabuľky, ktoré sú skutočne stabilnejšie, boli navrhnuté napríklad v algoritme s 5 DES; ale, bohužiaľ, nebolo možné nahradiť DES s 5 DES, pretože náhradné tabuľky sú pevne definované v štandarde, respektíve implementácie algoritmu pravdepodobne nepodporujú možnosť zmeny tabuliek na iné.
V mnohých prácach (napríklad , a ) sa mylne dospelo k záveru, že tajné substitučné tabuľky algoritmu GOST 28147-89 môžu byť súčasťou kľúča a zvýšiť jeho efektívnu dĺžku (čo nie je podstatné, pretože algoritmus má veľmi veľký 256-bitový kľúč). Práca však dokazuje, že tajné substitučné tabuľky možno vypočítať pomocou nasledujúceho útoku, ktorý sa dá prakticky použiť:
1. Nastavte nulový kľúč a vyhľadajte "nulový vektor", t. j. hodnotu z = /(0), kde /() je okrúhla funkcia algoritmu. Táto fáza trvá približne 2 šifrovacie operácie.
2. Pomocou nulového vektora sa vypočítajú hodnoty substitučných tabuliek, čo nezaberie viac ako 2 11 operácií.
Úpravy algoritmov a ich analýza
V práci bola vykonaná kryptanalýza modifikácií algoritmu GOST 28147-89:
□ algoritmus GOST-H, v ktorom sa oproti pôvodnému algoritmu mení poradie použitia podkľúčov, a to v kolách od 25. do 32. podkľúča sa používajú v priamom poradí, t.j. rovnakým spôsobom ako v predchádzajúcom kolá algoritmu;
□ 20-kolový algoritmus GOST®, ktorý používa XOR namiesto modulo 2 32 na prekrytie kľúčov.
Na základe výsledkov analýzy sa dospelo k záveru, že GOST-H a GOST© sú slabšie ako pôvodný algoritmus GOST 28147-89, pretože oba majú triedy slabých kľúčov. Stojí za zmienku, že pokiaľ ide o kryptoanalýzu GOST©, v práci sa slovo po slove opakuje časť o kryptoanalýze algoritmu GOST 28147-89, publikovaná v roku 2000 v známom diele (bez akéhokoľvek odkazu na originál). To spochybňuje profesionalitu autorov práce a jej ďalšie výsledky.
V práci je navrhnutá veľmi zaujímavá modifikácia algoritmu: tabuľky S \ ... Ss musia byť nevyhnutne odlišné; v každom kole algoritmu musia byť permutované podľa určitého zákona. Táto permutácia môže závisieť od šifrovacieho kľúča alebo môže byť tajná (t. j. môže byť súčasťou väčšieho šifrovacieho kľúča ako pôvodný 256-bitový kľúč). Obe tieto možnosti podľa ich autorov výrazne zvyšujú odolnosť algoritmu voči lineárnej a diferenciálnej kryptoanalýze.
A ešte jedna modifikácia týkajúca sa substitučných tabuliek je uvedená v práci, v ktorej je analyzovaná jedna z možných metód výpočtu substitučných tabuliek na základe šifrovacieho kľúča. Autori práce dospeli k záveru, že takáto závislosť oslabuje algoritmus, pretože vedie k prítomnosti slabých kľúčov a k niektorým potenciálnym zraniteľnostiam algoritmu.
Kompletná analýza algoritmov
Existujú aj útoky na celoobvodový GOST 28147-89 bez akýchkoľvek úprav. Jedna z prvých otvorených prác, v ktorej bola vykonaná analýza algoritmu, známa práca, je venovaná útokom, ktoré využívajú slabiny v postupe rozširovania kľúčov množstva známych šifrovacích algoritmov. Najmä úplný algoritmus GOST 28147-89 možno prelomiť pomocou diferenciálnej kryptoanalýzy na prepojených kľúčoch, ale iba ak sa použijú slabé substitučné tabuľky. 24-kolová verzia algoritmu (v ktorej chýba prvých 8 kôl) sa otvára rovnakým spôsobom pre akékoľvek tabuľky suplovania, ale silné tabuľky suplovania (napríklad uvedené v ) robia takýto útok absolútne nepraktickým.
Domáci vedci A. G. Rostovtsev a E. B. Makhovenko v roku 2001 navrhli zásadne novú metódu kryptoanalýzy (podľa autorov je podstatne efektívnejšia ako lineárna a diferenciálna kryptanalýza) vytvorením objektívnej funkcie zo známeho otvoreného textu zodpovedajúceho šifrovému textu a požadovanej hodnote. kľúča a nájdenie jeho extrému zodpovedajúceho skutočnej hodnote kľúča. Našli tiež veľkú triedu slabých kľúčov algoritmu GOST 28147-89, ktoré vám umožňujú otvoriť algoritmus iba pomocou 4 vybraných otvorených textov a ich zodpovedajúcich šifrových textov s pomerne nízkou zložitosťou. V práci pokračuje kryptanalýza algoritmu.
V roku 2004 skupina expertov z Kórey navrhla útok, pomocou ktorého je možné pomocou diferenciálnej kryptoanalýzy na pridružených kľúčoch získať s pravdepodobnosťou 91,7 % 12 bitov tajného kľúča. Útok si vyžaduje 235 vybraných otvorených textov a 236 šifrovacích operácií. Ako vidíte, tento útok je pre skutočné otvorenie algoritmu prakticky zbytočný.
Algoritmus definovaný GOST 28147-89 má dĺžku šifrovacieho kľúča 256 bitov. Šifruje informácie v blokoch po 64 bitoch (takéto algoritmy sa nazývajú blokové algoritmy), ktoré sú potom rozdelené do dvoch podblokov po 32 bitoch (N1 a N2) (obrázok 1). Podblok N1 sa spracuje určitým spôsobom, potom sa jeho hodnota pripočíta k hodnote podbloku N2 (sčítanie sa vykoná modulo 2, t.j. použije sa logická operácia XOR - „exkluzívne alebo“) a potom sa podbloky vymenia. Táto transformácia sa vykoná určitý počet krát („kol“): 16 alebo 32 v závislosti od režimu algoritmu. V každom kole sa vykonajú dve operácie.
Obrázok 1. Schéma algoritmu GOST 28147-89.
Prvým je kľúčovanie. Obsah podbloku N1 je pridaný modulo 2 do 32-bitovej časti kľúča Kx. Úplný kľúčšifrovanie je reprezentované ako zreťazenie 32-bitových podkľúčov: K0, K1, K2, K3, K4, K5, K6, K7. Jeden z týchto podkľúčov sa používa v procese šifrovania v závislosti od čísla kola a režimu prevádzky algoritmu.
Druhou operáciou je výmena stola. Po kľúčovaní sa podblok N1 rozdelí na 8 častí po 4 bitoch, pričom hodnota každého z nich sa nahradí v súlade s náhradnou tabuľkou pre túto časť podbloku. Podblok je potom bitovo doľava otočený o 11 bitov.
Náhrady tabuliek (Substitution box - S-box) sa často používajú v moderných šifrovacích algoritmoch, takže stojí za to vysvetliť, ako je takáto operácia organizovaná. Výstupné hodnoty blokov sa zapisujú do tabuľky. Dátový blok určitého rozmeru (v našom prípade 4-bitový) má svoje číselné znázornenie, ktoré určuje číslo výstupnej hodnoty. Ak napríklad S-box vyzerá ako 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1 a 4-bitový blok "0100" prišiel na vstup (hodnota 4), potom podľa tabuľky bude výstupná hodnota 15, t.j. "1111" (0 a 4, 1 a 11, 2 a 2 ...).
Algoritmus definovaný v GOST 28147-89 poskytuje štyri prevádzkové režimy: jednoduché nahradenie, škálovanie, škálovanie so spätnou väzbou a generovanie imitačných predpôn. Používajú rovnakú transformáciu šifrovania opísanú vyššie, ale keďže účel režimov je odlišný, táto transformácia sa v každom z nich vykonáva inak.
V režime jednoduchého nahradzovania sa vykoná 32 kôl opísaných vyššie na zašifrovanie každého 64-bitového bloku informácií. V tomto prípade sa 32-bitové podkľúče používajú v nasledujúcom poradí:
K0, K1, K2, K3, K4, K5, K6, K7, K0, K1 atď. - v 1. až 24. kole;
K7, K6, K5, K4, K3, K2, K1, K0 - v 25. až 32. kole.
Dešifrovanie v tomto režime sa vykonáva presne rovnakým spôsobom, ale s mierne odlišnou postupnosťou použitia podkľúčov:
K0, K1, K2, K3, K4, K5, K6, K7 - v 1. až 8. kole;
K7, K6, K5, K4, K3, K2, K1, K0, K7, K6 atď. - v 9. až 32. kole.
Všetky bloky sú šifrované nezávisle na sebe, t.j. výsledok šifrovania každého bloku závisí len od jeho obsahu (zodpovedajúceho zdrojového bloku). Ak existuje niekoľko identických blokov pôvodného (obyčajného) textu, zodpovedajúce bloky šifrovaného textu budú tiež rovnaké, čo poskytuje dodatočný užitočná informácia pre kryptoanalytika, ktorý sa snaží prelomiť šifru. Preto sa tento režim používa najmä na šifrovanie samotných šifrovacích kľúčov (často sú implementované viackľúčové schémy, v ktorých sú z viacerých dôvodov kľúče šifrované nad sebou). Na šifrovanie samotnej informácie sú určené ďalšie dva režimy prevádzky – gama a gama so spätnou väzbou.
V režime gama je každý blok otvoreného textu po bitoch pridaný modulo 2 k bloku gama 64-bitovej šifry. Šifra gama je špeciálna sekvencia, ktorá sa získa ako výsledok určitých operácií s registrami N1 a N2.
- 1. V registroch N1 a N2 sa zapíše ich počiatočné naplnenie - 64-bitová hodnota nazývaná synchronizačná správa.
- 2. Šifrovanie obsahu registrov N1 a N2 (v tomto prípade synchronizačných správ) sa vykonáva v režime jednoduchej výmeny.
- 3. K obsahu registra N1 sa pripočíta modulo (232 - 1) s konštantou C1 = 224 + 216 + 28 + 24 a výsledok sčítania sa zapíše do registra N1.
- 4. K obsahu registra N2 sa pripočíta modulo 232 s konštantou C2 = 224 + 216 + 28 + 1 a výsledok sčítania sa zapíše do registra N2.
- 5. Obsah registrov N1 a N2 je vyvedený ako 64-bitový šifrovací gama blok (v tomto prípade N1 a N2 tvoria prvý gama blok).
Ak je potrebný ďalší gama blok (t. j. šifrovanie alebo dešifrovanie musí pokračovať), vráťte sa na krok 2.
Na dešifrovanie sa gama vygeneruje podobným spôsobom a potom sa šifrový text a bity gama opäť XORujú. Keďže táto operácia je reverzibilná, v prípade správne vygenerovanej gama sa získa pôvodný text (tabuľka 1).
Stôl 1.Šifrovanie a dešifrovanie v gama režime
Aby sa vyvinul rozsah šifry potrebný na dešifrovanie, používateľ dešifrujúci kryptogram musí mať rovnaký kľúč a rovnakú hodnotu synchronizačnej správy, aké boli použité pri zašifrovaní informácií. V opačnom prípade nebudete môcť získať pôvodný text zo zašifrovaného.
Vo väčšine implementácií algoritmu GOST 28147-89 nie je synchronizačná správa tajná, existujú však systémy, kde je synchronizačná správa rovnakým tajným prvkom ako šifrovací kľúč. Pre takéto systémy je efektívna dĺžka kľúča algoritmu (256 bitov) zvýšená o ďalších 64 bitov tajnej synchronizačnej správy, ktorú možno tiež považovať za kľúčový prvok.
V spätnoväzbovom gama režime sa na vyplnenie registrov N1 a N2, počnúc od 2. bloku, nepoužíva predchádzajúci gama blok, ale výsledok zašifrovania predchádzajúceho bloku otvoreného textu (obrázok 2). Prvý blok v tomto režime je generovaný presne rovnakým spôsobom ako predchádzajúci.
![](https://i2.wp.com/studwood.ru/imag_/15/160970/image002.jpg)
Obrázok 2. Generovanie šifry gama v režime spätnej väzby gama.
Vzhľadom na spôsob generovania imitačných prefixov je potrebné definovať pojem predmetu generovania. Spoof je kryptografický kontrolný súčet vypočítaný pomocou šifrovacieho kľúča a určený na kontrolu integrity správ. Pri generovaní prefixu sa vykonajú tieto operácie: prvý 64-bitový blok informačného poľa, pre ktorý je prefix vypočítaný, sa zapíše do registrov N1 a N2 a zašifruje sa v režime redukovaného jednoduchého nahradzovania (prvých 16 vykonajú sa kolá z 32). Získaný výsledok sa sčíta modulo 2 s ďalším blokom informácií, pričom sa výsledok uloží do N1 a N2.
Cyklus sa opakuje až do posledného bloku informácií. 64-bitový obsah registrov N1 a N2 alebo jeho časť, ktorý je výsledkom týchto transformácií, sa nazýva imitačná predpona. Veľkosť predpony sa vyberá na základe požadovanej spoľahlivosti správ: pri dĺžke predpony r bitov je pravdepodobnosť, že zmena v správe zostane nepovšimnutá, 2-r. Najčastejšie je 32-bitová predpona použité, t. j. polovica obsahu registrov. To je postačujúce, pretože ako každý kontrolný súčet je predpona imitácie určená predovšetkým na ochranu pred náhodným skreslením informácií. Na ochranu pred úmyselnou úpravou údajov, iné kryptografických metód- V prvom rade elektronický digitálny podpis.
Pri výmene informácií slúži predpona imitácie ako druh doplnkového prostriedku kontroly. Vypočítava sa pre čistý text, keď sú niektoré informácie zašifrované a odosielajú sa spolu so šifrovaným textom. Po dešifrovaní sa vypočíta nová hodnota predpony imitácie, ktorá sa porovná s odoslanou hodnotou. Ak sa hodnoty nezhodujú, znamená to, že šifrový text bol počas prenosu skreslený alebo boli pri dešifrovaní použité nesprávne kľúče. Imitačná predpona je užitočná najmä na kontrolu správneho dešifrovania kľúčových informácií pri použití schém s viacerými kľúčmi.
Algoritmus GOST 28147-89 sa považuje za veľmi silný algoritmus - v súčasnosti nie sú navrhnuté žiadne efektívnejšie metódy na jeho odhalenie ako vyššie uvedená metóda "hrubej sily". Jeho vysoká bezpečnosť je dosiahnutá predovšetkým vďaka veľkej dĺžke kľúča – 256 bitov. Pri použití tajnej synchronizačnej správy sa efektívna dĺžka kľúča zvýši na 320 bitov a tajomstvo substitučnej tabuľky pridáva ďalšie bity. Okrem toho kryptografická sila závisí od počtu kôl transformácií, ktoré by podľa GOST 28147-89 mali byť 32 (úplný efekt rozptylu vstupných údajov sa dosiahne po 8 kolách).
Výhody GOST 28147-89 sú prítomnosť ochrany proti uloženiu falošných údajov (vývoj vkladania imitácie) a rovnaký cyklus šifrovania vo všetkých štyroch algoritmoch GOST.