Algoritmus kryptografického prevodu podľa GOST 28147 89. Domáce štandardné šifrovanie dát

Šifrovací algoritmus GOST 28147-89, jeho použitie a softvérová implementácia pre počítače platformy Intel x86.


Andrej Vinokurov

Popis algoritmu.

Termíny a označenia.

Popis šifrovacieho štandardu Ruskej federácie je obsiahnutý vo veľmi zaujímavom dokumente s názvom „GOST 28147-89 Cryptographic Transformation Algorithm“. Skutočnosť, že v názve sa namiesto pojmu „šifrovanie“ používa všeobecnejší pojem „ kryptografická transformácia ' nie je náhoda. Okrem niekoľkých úzko súvisiacich šifrovacích postupov dokument popisuje jeden algoritmus na generovanie imitácie vložiek . To posledné nie je nič iné ako kombinácia kryptografickej kontroly, to znamená kód vygenerovaný z pôvodných údajov pomocou tajného kľúča, aby ochrana proti imitácii alebo chrániť údaje pred neoprávnenými zmenami.

V rôznych krokoch algoritmov GOST sa údaje, s ktorými pracujú, interpretujú a používajú rôznymi spôsobmi. V niektorých prípadoch sa s dátovými prvkami zaobchádza ako s poliami nezávislých bitov, v iných prípadoch ako s celým číslom bez znamienka, v iných ako so zložitým prvkom, ktorý má štruktúru pozostávajúcu z niekoľkých jednoduchších prvkov. Preto, aby nedošlo k zámene, je potrebné dohodnúť sa na použitom zápise.

Prvky údajov v tomto článku sú označené veľkými latinskými písmenami s kurzívou (napr. X). Prostredníctvom | X| označuje veľkosť dátového prvku X v bitoch. Ak teda interpretujeme dátový prvok X ako nezáporné celé číslo môžeme zapísať nasledujúcu nerovnosť:

Ak dátový prvok pozostáva z niekoľkých prvkov menšej veľkosti, potom sa táto skutočnosť označuje takto: X=(X 0 ,X 1 ,…,X n –1)=X 0 ||X 1 ||…||X n- jeden. Volá sa procedúra kombinovania viacerých dátových prvkov do jedného zreťazenie údajov a je označený symbolom "||". Prirodzene, pre veľkosti dátových prvkov musí platiť nasledujúci vzťah: | X|=|X 0 |+|X 1 |+…+|X n-1 |. Pri špecifikovaní zložitých dátových prvkov a operácie zreťazenia sú základné dátové prvky uvedené vo vzostupnom poradí podľa priority. Inými slovami, ak interpretujeme zložený prvok a všetky dátové prvky v ňom obsiahnuté ako celé čísla bez znamienka, môžeme zapísať nasledujúcu rovnosť:

V algoritme možno dátový prvok interpretovať ako pole jednotlivých bitov, pričom v tomto prípade sú bity označené rovnakým písmenom ako pole, ale malými písmenami, ako je znázornené v nasledujúcom príklade:

X=(X 0 ,X 1 ,…,x n –1)=X 0 + 2 1 X 1 +…+2 n- jeden · x n –1 .

Ak ste teda venovali pozornosť, tzv. "little-endian" číslovanie číslic, t.j. v rámci viacbitových dátových slov sú jednotlivé binárne číslice a ich skupiny s menšími číslami menej významné. Toto je výslovne uvedené v odseku 1.3 normy: "Pri pridávaní a cyklickom posúvaní binárnych vektorov sú najvyššie bity bity akumulátorov s veľkými číslami." Ďalej odseky štandardu 1.4, 2.1.1 a iné predpisujú začať plniť úložné registre virtuálneho šifrovacieho zariadenia údajmi z nižších, t.j. menej významné hodnosti. Presne rovnaké poradie číslovania je prijaté v architektúre mikroprocesora Intel x86, a preto softvérová implementácia šifry na tejto architektúre nevyžaduje žiadne dodatočné permutácie bitov vo vnútri dátových slov.

Ak sa na dátových prvkoch vykoná nejaká operácia, ktorá má logický význam, potom sa predpokladá, že sa táto operácia vykoná na zodpovedajúcich bitoch prvkov. Inými slovami A B=(a 0 b 0 ,a 1 b 1 ,…,a n –1 b n–1), kde n=|A|=|B|, a symbol " " označuje ľubovoľnú binárnu logickú operáciu; zvyčajne odkazuje na operáciu exkluzívne resp , čo je tiež operácia sumačného modulu 2:

Logika konštrukcie šifry a štruktúra kľúčových informácií GOST.

Ak si pozorne preštudujete pôvodný GOST 28147–89, všimnete si, že obsahuje popis algoritmov niekoľkých úrovní. Úplne hore sú praktické algoritmy navrhnuté na šifrovanie dátových polí a vývoj falošných vložiek pre ne. Všetky sú založené na troch algoritmoch nižšej úrovne, ktoré sa v texte nazývajú GOST cyklov . Tieto základné algoritmy sú v tomto článku označované ako základné cykly aby ste ich odlíšili od všetkých ostatných slučiek. Majú nasledujúce názvy a označenia, ktoré sú uvedené v zátvorkách a ich význam bude vysvetlený neskôr:

  • šifrovací cyklus (32-3);
  • dešifrovací cyklus (32-P);
  • cyklus generovania imitácie vložky (16-Z).

Na druhej strane, každý zo základných cyklov je viacnásobným opakovaním jedného postupu, ktorý je v tomto dokumente popísaný ďalej. hlavný krok transformácie kryptomien .

Preto, aby ste porozumeli GOST, musíte pochopiť nasledujúce tri veci:

  • čo sa stalo základný krok krypto transformácie;
  • ako sa z hlavných krokov tvoria základné cykly;
  • ako z troch základné cykly spočítajte všetky praktické algoritmy GOST.

Predtým, ako pristúpime k štúdiu týchto problémov, mali by sme hovoriť o kľúčových informáciách, ktoré používajú algoritmy GOST. V súlade s Kirchhoffovým princípom, ktorý spĺňajú všetky moderné šifry známe širokej verejnosti, práve jeho utajenie zabezpečuje utajenie zašifrovanej správy. V GOST sa kľúčové informácie skladajú z dvoch dátových štruktúr. Okrem tohoto kľúč vyžadované pre všetky šifry, obsahuje aj substitučná tabuľka . Nižšie sú uvedené hlavné charakteristiky kľúčových štruktúr GOST.

Hlavný krok transformácie kryptomien.

Hlavným krokom konverzie kryptomien je v podstate operátor, ktorý definuje konverziu 64-bitového dátového bloku. Doplnkovým parametrom tohto operátora je 32-bitový blok, ktorý sa používa ako ľubovoľný prvok kľúča. Schéma hlavného krokového algoritmu je znázornená na obrázku 1.


Obrázok 1. Schéma hlavného kroku krypto-transformácie algoritmu GOST 28147-89.

Nižšie sú uvedené vysvetlenia hlavného krokového algoritmu:

Krok 0

  • N– 64-bitový dátový blok na konverziu, počas vykonávania kroku je najmenej významný ( N 1) a starší ( N 2) časti sa považujú za samostatné 32-bitové celé čísla bez znamienka. Takto sa dá písať N=(N 1 ,N 2).
  • X– 32-bitový kľúčový prvok;

Krok 1

Doplnenie pomocou kľúča. Do spodnej polovice konvertovaného bloku sa pridá modulo 2 32 s kľúčovým prvkom použitým v kroku, výsledok sa prenesie do ďalšieho kroku;

Krok 2

Výmena bloku. 32-bitová hodnota získaná v predchádzajúcom kroku sa interpretuje ako pole ôsmich 4-bitových blokov kódu: S=(S 0 , S 1 , S 2 , S 3 , S 4 , S 5 , S 6 , S 7) a S 0 obsahuje 4 najmenšie a S 7 - 4 najvýznamnejšie bity S.

Potom sa hodnota každého z ôsmich blokov nahradí novou, ktorá sa vyberie zo substitučnej tabuľky takto: hodnota bloku Si zmení na Si-tý prvok v poradí (číslovanie od nuly) i-tohto náhradného uzla (t.j. i-tý riadok tabuľky suplovania, číslovanie aj od nuly). Inými slovami, ako náhrada za hodnotu bloku sa z nahradzovacej tabuľky vyberie prvok s číslom riadka rovným číslu náhradného bloku a číslom stĺpca rovným hodnote náhradného bloku ako 4-bitové nezáporné celé číslo. Z toho je zrejmá veľkosť náhradnej tabuľky: počet riadkov v nej sa rovná počtu 4-bitových prvkov v 32-bitovom dátovom bloku, tj osem, a počet stĺpcov sa rovná počtu počet odlišných hodnôt 4-bitového dátového bloku, ktorý je známy ako 2 4, šestnásť.

Krok 3

Otočiť doľava o 11 bitov. Výsledok predchádzajúceho kroku sa cyklicky posúva o 11 bitov smerom k vyšším bitom a prenáša sa do nasledujúceho kroku. V diagrame algoritmu symbol označuje funkciu cyklického posunu jeho argumentu o 11 bitov doľava, t.j. smerom k vyšším úrovniam.

Krok 4

Bitové sčítanie: Hodnota získaná v kroku 3 sa pridáva modulo 2 bit po bite do hornej polovice konvertovaného bloku.

Krok 5

Posun pozdĺž reťazca: spodná časť prevedeného bloku sa posunie na miesto staršieho bloku a na jeho miesto sa umiestni výsledok predchádzajúceho kroku.

Krok 6

Výsledná hodnota bloku, ktorý sa má konvertovať, sa vráti ako výsledok vykonania algoritmu hlavného krypto-transformačného kroku.

Základné cykly kryptografických transformácií.

Ako je uvedené na začiatku tohto článku, GOST patrí do triedy blokových šifier, to znamená, že jednotkou spracovania informácií v nej je dátový blok. Preto je celkom logické očakávať, že bude definovať algoritmy pre kryptografické transformácie, teda pre šifrovanie, dešifrovanie a „účtovanie“ v riadiacej kombinácii jedného bloku dát. Tieto algoritmy sa nazývajú základné cykly GOST, ktorý zdôrazňuje ich zásadný význam pre konštrukciu tejto šifry.

Základné cykly sú postavené z základné kroky kryptografická transformácia diskutovaná v predchádzajúcej časti. Počas vykonávania hlavného kroku sa používa iba jeden 32-bitový kľúčový prvok, zatiaľ čo kľúč GOST obsahuje osem takýchto prvkov. Preto, aby bol kľúč plne využitý, každá zo základných slučiek musí opakovane vykonávať hlavný krok so svojimi rôznymi prvkami. Zároveň sa zdá celkom prirodzené, že v každom základnom cykle by sa mali všetky prvky kľúča použiť rovnako často, z dôvodu sily šifrovania by tento počet mal byť viac ako jeden.

Všetky vyššie uvedené predpoklady založené jednoducho na zdravom rozume sa ukázali ako správne. Základné slučky sú opakované hlavný krok pomocou rôznych prvkov kľúča a líšia sa od seba iba počtom opakovaní kroku a poradím použitia prvkov kľúča. Toto poradie je uvedené nižšie pre rôzne cykly.

Šifrovací cyklus 32-3:

K 0 ,K 1 ,K 2 ,K 3 ,K 4 ,K 5 ,K 6 ,K 7 ,K 0 ,K 1 ,K 2 ,K 3 ,K 4 ,K 5 ,K 6 ,K 7 ,K 0 ,K 1 ,K 2 ,K 3 ,K 4 ,K 5 ,K 6 ,K 7 ,K 7 ,K 6 ,K 5 ,K 4 ,K 3 ,K 2 ,K 1 ,K 0 .


Obrázok 2a. Schéma šifrovacieho cyklu 32-Z

Dešifrovací cyklus 32-P:

K 0 ,K 1 ,K 2 ,K 3 ,K 4 ,K 5 ,K 6 ,K 7 ,K 7 ,K 6 ,K 5 ,K 4 ,K 3 ,K 2 ,K 1 ,K 0 ,K 7 ,K 6 ,K 5 ,K 4 ,K 3 ,K 2 ,K 1 ,K 0 ,K 7 ,K 6 ,K 5 ,K 4 ,K 3 ,K 2 ,K 1 ,K 0 .


Obrázok 2b. Schéma dešifrovacej slučky 32-P

Cyklus na výrobu imitácie vložky 16-З:

K 0 ,K 1 ,K 2 ,K 3 ,K 4 ,K 5 ,K 6 ,K 7 ,K 0 ,K 1 ,K 2 ,K 3 ,K 4 ,K 5 ,K 6 ,K 7 .


Obrázok 2c. Schéma výrobného cyklu imitácie vložky 16-З.

Každý z cyklov má svoje alfanumerické označenie zodpovedajúce vzoru " n-X", kde prvý prvok označenia ( n), určuje počet opakovaní hlavného kroku v cykle a druhý prvok notácie ( X), písmeno, určuje poradie šifrovania ("З") alebo dešifrovania ("Р") pri použití kľúčových prvkov. Táto objednávka vyžaduje ďalšie vysvetlenie:

Dešifrovací cyklus musí byť opakom cyklu šifrovania, to znamená, že následná aplikácia týchto dvoch cyklov na ľubovoľný blok musí viesť k pôvodnému bloku, čo sa odráža v nasledujúcom vzťahu: C 32-R ( C 32-З ( T))=T, kde T– ľubovoľný 64-bitový dátový blok, C X( T) je výsledkom cyklu X nad dátovým blokom T. Na splnenie tejto podmienky pre algoritmy podobné GOST je potrebné a postačujúce, aby poradie, v ktorom sú kľúčové prvky použité príslušnými cyklami, bolo vzájomne inverzné. Je ľahké overiť platnosť písomnej podmienky pre uvažovaný prípad porovnaním vyššie uvedených sekvencií pre cykly 32-3 a 32-R. Z vyššie uvedeného vyplýva jeden zaujímavý dôsledok: vlastnosť cyklu byť inverznou k inému cyklu je vzájomná, to znamená, že cyklus 32-3 je inverzný vzhľadom na cyklus 32-P. Inými slovami, šifrovanie dátového bloku by sa teoreticky mohlo uskutočniť pomocou dešifrovacej slučky, v takom prípade by sa dešifrovanie dátového bloku muselo uskutočniť pomocou šifrovacej slučky. Z dvoch vzájomne inverzných cyklov možno jeden použiť na šifrovanie, druhý sa potom musí použiť na dešifrovanie údajov, norma GOST28147-89 však priraďuje roly cyklom a neposkytuje používateľovi právo výberu v tejto veci. .

Cyklus generovania napodobeniny vloženia je polovičný ako šifrovacie cykly, poradie použitia kľúčových prvkov v ňom je rovnaké ako v prvých 16 krokoch šifrovacieho cyklu, čo je ľahké vidieť pri zohľadnení vyššie uvedených sekvencií, preto toto poradie v označení cyklu je zakódované rovnakým písmenom „Z“.

Schémy základných cyklov sú znázornené na obrázkoch 2a-c. Každý z nich berie ako argument a ako výsledok vráti 64-bitový blok údajov, uvedený na diagramoch N. Symbol Krok ( N,X) označuje vykonanie hlavného kroku krypto-transformácie pre dátový blok N pomocou kľúčového prvku X. Medzi cyklami šifrovania a výpočtom simulačnej vložky je ešte jeden rozdiel, vyššie neuvedený: na konci základných cyklov šifrovania sa prehodí vysoká a nízka časť výsledkového bloku, je to potrebné pre ich vzájomnú reverzibilitu. .

Základné režimy šifrovania.

GOST 28147-89 poskytuje nasledujúce tri režimy šifrovania údajov:

  • jednoduchá výmena,
  • hranie hier,
  • spätná väzba gama,

a jeden dodatočný spôsob generovania vkladania imitácie.

V ktoromkoľvek z týchto režimov sa údaje spracúvajú v blokoch po 64 bitoch, na ktoré je pole rozdelené a podrobené kryptografickej transformácii, a preto GOST odkazuje na blokové šifry. V dvoch herných režimoch je však možné spracovať neúplný dátový blok menší ako 8 bajtov, čo je nevyhnutné pri šifrovaní dátových polí s ľubovoľnou veľkosťou, ktorá nemusí byť násobkom 8 bajtov.

Predtým, ako pristúpime k úvahám o špecifických algoritmoch kryptografickej transformácie, je potrebné objasniť notáciu použitú v diagramoch v nasledujúcich častiach:

Tó, T w sú polia otvorených a zašifrovaných údajov;

, – i- 64-bitové bloky otvorených a šifrovaných údajov: , , posledný blok môže byť neúplný: ;

n– počet 64-bitových blokov v dátovom poli;

C X je funkcia konverzie 64-bitového bloku dát podľa algoritmu základného cyklu "X".

Teraz popíšme hlavné režimy šifrovania:

Jednoduchá výmena.

Šifrovanie v tomto režime spočíva v aplikácii cyklu 32-3 na otvorené dátové bloky, dešifrovanie - cyklus 32-P na zašifrované dátové bloky. Ide o najjednoduchší z režimov, spracovávajú sa v ňom 64-bitové dátové bloky nezávisle od seba. Schémy šifrovacích a dešifrovacích algoritmov v režime jednoduchej náhrady sú znázornené na obrázkoch 3a a b, sú triviálne a nepotrebujú komentár.


Kreslenie. 3a. Algoritmus šifrovania údajov v režime jednoduchého nahradenia


Kreslenie. 3b. Algoritmus dešifrovania údajov v režime jednoduchého nahradenia

Veľkosť poľa otvorených alebo šifrovaných údajov, ktoré sú predmetom šifrovania alebo dešifrovania, musí byť násobkom 64 bitov: | T o |=| T w |=64 n , po vykonaní operácie sa veľkosť poľa prijatých údajov nemení.

Režim jednoduchého náhradného šifrovania má nasledujúce funkcie:

  • Keďže dátové bloky sú šifrované nezávisle od seba a od ich polohy v dátovom poli, keď sú zašifrované dva identické bloky otvoreného textu, získajú sa rovnaké bloky šifrovaného textu a naopak. Uvedená vlastnosť umožní kryptoanalytikovi dospieť k záveru, že bloky pôvodných údajov sú identické, ak narazí na rovnaké bloky v poli šifrovaných údajov, čo je pre serióznu šifru neprijateľné.
  • Ak dĺžka šifrovaného dátového poľa nie je násobkom 8 bajtov alebo 64 bitov, vzniká problém, ako a ako doplniť posledný neúplný dátový blok poľa na plných 64 bitov. Táto úloha nie je taká jednoduchá, ako sa na prvý pohľad zdá. Zrejmé riešenia, ako napríklad „vyplniť neúplný blok nulovými bitmi“ alebo všeobecnejšie „vyplniť neúplný blok pevnou kombináciou nula a jedného bitu“, môžu za určitých podmienok poskytnúť kryptoanalytikom možnosť určiť obsah tohto veľmi neúplný blok metódami enumerácie a táto skutočnosť znamená zníženie bezpečnostnej šifry. Okrem toho sa zmení dĺžka šifrového textu, ktorá sa zvýši na najbližší celočíselný násobok 64 bitov, čo je často nežiaduce.

Vyššie uvedené vlastnosti na prvý pohľad prakticky znemožňujú použitie režimu jednoduchej výmeny, pretože je možné ho použiť len na šifrovanie dátových polí s veľkosťou, ktorá je násobkom 64 bitov a neobsahuje opakované 64-bitové bloky. Zdá sa, že pre žiadne reálne údaje nie je možné garantovať splnenie týchto podmienok. To je takmer pravda, ale je tu jedna veľmi dôležitá výnimka: pamätajte, že veľkosť kľúča je 32 bajtov a veľkosť náhradnej tabuľky je 64 bajtov. Navyše, prítomnosť opakovaných 8-bajtových blokov v kľúči alebo substitučnej tabuľke bude indikovať ich veľmi nízku kvalitu, takže v skutočných kľúčových prvkoch nemôže dochádzať k takémuto opakovaniu. Zistili sme teda, že režim jednoduchého nahradenia je celkom vhodný na šifrovanie kľúčových informácií, najmä preto, že iné režimy sú na tento účel menej vhodné, pretože vyžadujú dodatočný prvok synchronizácie údajov - synchronizačnú správu (pozri nasledujúcu časť). Náš odhad je správny, GOST predpisuje používať režim jednoduchej výmeny výlučne na šifrovanie kľúčových údajov.

Hazardné hry.

Ako sa môžete zbaviť nedostatkov režimu jednoduchej výmeny? Na to je potrebné umožniť šifrovanie blokov s veľkosťou menšou ako 64 bitov a zabezpečiť, aby blok šifrovaného textu závisel od jeho počtu, inými slovami, randomizovať šifrovací proces. V GOST sa to dosahuje dvoma rôznymi spôsobmi v dvoch režimoch šifrovania, ktoré poskytujú škálovanie . Hazardné hry - ide o uloženie (odstránenie) kryptografického rozsahu na otvorené (šifrované) dáta, to znamená sekvenciu dátových prvkov vygenerovaných pomocou nejakého kryptografického algoritmu na získanie zašifrovaných (otvorených) dát. Na prekrytie gama počas šifrovania a jeho odstránenie počas dešifrovania sa musia použiť recipročne inverzné binárne operácie, napríklad sčítanie a odčítanie modulo 2 64 pre 64-bitové dátové bloky. V GOST sa na tento účel používa operácia bitového sčítania modulo 2, pretože je inverzná sama o sebe a navyše je najjednoduchšie implementovaná v hardvéri. Gamming rieši oba vyššie uvedené problémy: po prvé, všetky gama prvky sú odlišné pre skutočné šifrované polia, a preto bude výsledok šifrovania aj dvoch rovnakých blokov v jednom dátovom poli odlišný. Po druhé, hoci sa gama prvky vyrábajú v rovnakých častiach 64 bitov, môže sa použiť aj časť takéhoto bloku s veľkosťou rovnajúcou sa veľkosti zašifrovaného bloku.

Teraz prejdime priamo k popisu gama režimu. Gama pre tento režim sa získa nasledovne: pomocou nejakého algoritmického generátora opakujúcich sa číselných sekvencií (RGCH) sa vygenerujú 64-bitové dátové bloky, ktoré sa potom podrobia konverzii 32-3, teda šifrovaniu v režime jednoduchého nahradenia, výsledkom čoho je v gama blokoch. Vzhľadom na skutočnosť, že prekrytie a odstránenie gama sa vykonáva pomocou rovnakej bitovej operácie XOR, šifrovacie a dešifrovacie algoritmy v režime gama sú identické, ich všeobecná schéma je znázornená na obrázku 4.

RGHR použitý na generovanie stupnice je rekurentná funkcia: – prvky opakujúcej sa sekvencie, f je konverzná funkcia. Preto nevyhnutne vyvstáva otázka o jeho inicializácii, teda o prvku.Tento dátový prvok je v skutočnosti parametrom algoritmu pre gama režimy, na diagramoch je označený ako S, a nazýva sa v kryptografii synchronizovať správu a v našej GOST - počiatočné plnenie jeden z registrov kódovača. Z určitých dôvodov sa vývojári GOST rozhodli použiť na inicializáciu RGHR nie priamo synchronizačnú správu, ale výsledok jej transformácie podľa cyklu 32-3: . Poradie prvkov generovaných RGHR úplne závisí od jeho počiatočného naplnenia, to znamená, že prvky tejto postupnosti sú funkciou ich počtu a počiatočného naplnenia RGHR: kde fi(X)=f(fi –1 (X)), f 0 (X)=X. Berúc do úvahy transformáciu podľa jednoduchého náhradného algoritmu, pridáva sa aj závislosť od kľúča:

kde G ii- prvok stupnice, K- kľúč.

Postupnosť prvkov gama, ktoré sa majú použiť v režime gama, je teda jednoznačne určená kľúčovými dátami a synchronizačnou správou. Prirodzene, aby bol postup šifrovania reverzibilný, musí sa v procesoch dešifrovania a dešifrovania použiť rovnaká synchronizačná správa. Z požiadavky jedinečnosti rozsahu, ktorého výpadok vedie ku katastrofálnemu poklesu sily šifry, vyplýva, že pre šifrovanie dvoch rôznych dátových polí na rovnakom kľúči je potrebné zabezpečiť použitie tzv. rôzne synchronizované správy. To vedie k potrebe ukladať alebo prenášať synchronizačnú správu pozdĺž komunikačných kanálov spolu so šifrovanými údajmi, aj keď v niektorých špeciálnych prípadoch môže byť preddefinovaná alebo vypočítaná špeciálnym spôsobom, ak je vylúčené šifrovanie dvoch polí na rovnakom kľúči.

Teraz sa pozrime bližšie na RGHR používaný v GOST na generovanie gama prvkov. V prvom rade je potrebné poznamenať, že nie je potrebné poskytovať žiadne štatistické charakteristiky vygenerovanej postupnosti čísel. RGHR navrhli vývojári GOST na základe potreby splniť nasledujúce podmienky:

  • perióda opakovania sekvencie čísel generovaných RGHR by sa nemala výrazne líšiť (v percentách) od maximálnej možnej hodnoty 2 64 pre danú veľkosť bloku;
  • susedné hodnoty produkované RGHR sa musia navzájom líšiť v každom byte, inak sa úloha kryptoanalytika zjednoduší;
  • RGHR by sa malo dať pomerne ľahko implementovať hardvérovo aj softvérovo na najbežnejších typoch procesorov, z ktorých väčšina, ako viete, má 32-bitovú kapacitu.

Na základe týchto princípov navrhli tvorcovia GOST veľmi úspešný RGHR, ktorý má nasledujúce vlastnosti:

Kde C 0 =1010101 16 ;

Kde C 1 =1010104 16 ;

Dolný index v zápise čísla znamená jeho číselnú sústavu, takže konštanty použité v tomto kroku sú zapísané v hexadecimálnej číselnej sústave.

Druhý výraz potrebuje komentáre, pretože v texte GOST je uvedené niečo iné: , s rovnakou hodnotou konštanty C jeden . Ale ďalej v texte normy je uvedený komentár, že sa ukazuje, že pri prevzatí zvyšku modulo 2 32 -1 tam sa chápe nie rovnako ako v matematike. Rozdiel spočíva v tom, že podľa GOST (2 32 -1) mod(2 32 –1)=(2 32 –1), nie 0. V skutočnosti to zjednodušuje implementáciu vzorca a matematicky správny výraz preň je uvedený vyššie.

  • perióda opakovania sekvencie pre mladšiu časť je 2 32, pre staršiu časť 2 32 -1, pre celú sekvenciu je perióda 2 32 (2 32 -1), dôkaz tejto skutočnosti je veľmi jednoduchý, budete dostať sa. Prvý vzorec z dvoch je implementovaný v jednej inštrukcii, druhý, napriek svojej zjavnej ťažkopádnosti, v dvoch inštrukciách na všetkých moderných 32-bitových procesoroch - prvá inštrukcia je zvyčajné sčítanie modulo 2 32 s uložením prenášacieho bitu a druhá inštrukcia pridáva bit prenosu k prijatej hodnote.

Schéma šifrovacieho algoritmu v režime gama je znázornená na obrázku 4, nižšie sú vysvetlenia schémy:


Obrázok 4. Algoritmus na šifrovanie (dešifrovanie) údajov v režime gama.

Krok 0

Definuje počiatočné údaje pre hlavný krok transformácie kryptomien:

  • T o(w) - pole otvorených (šifrovaných) údajov ľubovoľnej veľkosti, ktoré sa podrobuje procedúre šifrovania (dešifrovania), počas ktorej sa pole konvertuje na časti 64 bitov;
  • S synchronizovať správu 64-bitový dátový prvok potrebný na inicializáciu gama generátora;

Krok 1

Počiatočná transformácia synchronizačnej správy, vykonaná na jej "randomizáciu", to znamená na elimináciu štatistických vzorov v nej prítomných, výsledok sa použije ako počiatočné vyplnenie RGHR;

Krok 2

Jeden krok v práci RGHR, ktorá implementuje svoj rekurentný algoritmus. Počas tohto kroku starší ( S 1) a mladší ( S 0) časti dátovej sekvencie sú generované nezávisle od seba;

Krok 3

Hazardné hry. Ďalší 64-bitový prvok produkovaný RGHR sa podrobí procedúre 32-3 šifrovania, pričom výsledok sa použije ako gama prvok na zašifrovanie (dešifrovanie) ďalšieho bloku otvorených (šifrovaných) údajov rovnakej veľkosti.

Krok 4

Výsledkom algoritmu je zašifrované (dešifrované) dátové pole.

Nasledujú funkcie gama ako režimu šifrovania:

  1. Identické bloky v otvorenom dátovom poli budú pri šifrovaní poskytovať rôzne bloky šifrovaného textu, čo umožní skryť skutočnosť ich identity.
  2. Pretože gama sa vykonáva bit po bite, šifrovanie neúplného bloku údajov sa ľahko vykoná ako šifrovanie bitov tohto neúplného bloku, na ktoré sa použijú zodpovedajúce bity bloku gama. Na zašifrovanie neúplného bloku 1 bit by sa teda podľa normy mal použiť najmenej významný bit z gama bloku.
  3. Synchronizačná správa použitá pri šifrovaní musí byť nejakým spôsobom prenesená, aby mohla byť použitá pri dešifrovaní. To možno dosiahnuť nasledujúcimi spôsobmi:
  • uložiť alebo preniesť synchronizačnú správu spolu so zašifrovaným dátovým poľom, čím sa veľkosť dátového poľa počas šifrovania zväčší o veľkosť synchronizačnej správy, teda o 8 bajtov;
  • použiť preddefinovanú hodnotu synchronizačnej správy alebo ju generovať synchrónne zdrojom a prijímačom podľa určitého zákona, v tomto prípade nedochádza k zmene veľkosti prenášaného alebo uloženého dátového poľa;

Obe metódy sa navzájom dopĺňajú a v tých zriedkavých prípadoch, keď prvá, najbežnejšia z nich nefunguje, možno použiť druhú, exotickejšiu. Druhá metóda je oveľa menej užitočná, pretože je možné vytvoriť preddefinovanú synchronizačnú správu iba vtedy, ak nie je zašifrované viac ako jedno dátové pole na danej sade kľúčových informácií, čo sa nestáva tak často. Taktiež nie je vždy možné generovať synchronizačnú správu synchrónne u zdroja a príjemcu dátového poľa, pretože to vyžaduje pevné pripojenie k niečomu v systéme. Takže zdanlivo dobrý nápad použiť číslo prenášanej správy ako synchronizačnú správu v systéme na prenos šifrovaných správ nie je vhodný, pretože správa sa môže stratiť a nedostane sa k adresátovi, v takom prípade šifrovacie systémy zdroja a prijímač nebude synchronizovaný. Preto v uvažovanom prípade neexistuje žiadna alternatíva k prenosu synchronizačnej správy spolu so zašifrovanou správou.

Na druhej strane je možné uviesť aj opačný príklad. Predpokladajme, že na ochranu informácií na disku sa používa šifrovanie údajov a je implementované na nízkej úrovni, údaje sú šifrované podľa sektorov, aby sa zabezpečil nezávislý prístup. V tomto prípade nie je možné uložiť synchronizačnú správu spolu so zašifrovanými údajmi, pretože veľkosť sektora nemožno zmeniť, ale možno ju vypočítať ako funkciu čísla čítacej hlavy disku, čísla stopy (cylindra), a číslo sektora na trati. V tomto prípade je synchronizačná správa viazaná na pozíciu sektora na disku, ktorá sa len ťažko môže zmeniť bez preformátovania disku, teda bez zničenia údajov na ňom.

Režim gama má ešte jednu zaujímavú funkciu. V tomto režime sú bity dátového poľa šifrované nezávisle od seba. Každý bit šifrového textu teda závisí od zodpovedajúceho bitu otvoreného textu a samozrejme od poradového čísla bitu v poli: . Z toho vyplýva, že zmena bitu šifrového textu na opačnú hodnotu povedie k podobnej zmene bitu otvoreného textu na opačný:

kde znamená prevrátené vzhľadom na t bitová hodnota ().

Táto vlastnosť dáva útočníkovi možnosť manipuláciou s bitmi šifrovaného textu vykonať predvídateľné a dokonca cielené zmeny v zodpovedajúcom otvorenom texte získanom po jeho dešifrovaní bez toho, aby vlastnil tajný kľúč. To ilustruje známy fakt v kryptológii, že tajnosť a pravosť sú rôzne vlastnosti kryptografických systémov . Inými slovami, vlastnosti kryptosystému na zabezpečenie ochrany pred neoprávneným prístupom k obsahu správy a pred neoprávnenými zmenami správy sú nezávislé a môžu sa prelínať len v niektorých prípadoch. To znamená, že existujú kryptografické algoritmy, ktoré zaisťujú určité utajenie zašifrovaných údajov a zároveň nechránia pred zmenami a naopak zaisťujú autenticitu údajov a neobmedzujú možnosť zoznámiť sa s nimi. Z tohto dôvodu by sa uvažovaná vlastnosť gama režimu nemala považovať za jeho nevýhodu.

Hazardné hry so spätnou väzbou.

Tento režim je veľmi podobný režimu gama a líši sa od neho iba spôsobom generovania prvkov gama - ďalší prvok gama sa generuje ako výsledok transformácie pozdĺž cyklu 32-3 predchádzajúceho bloku šifrovaných údajov a zašifruje prvý blok dátového poľa, prvok gama sa vygeneruje ako výsledok transformácie podľa rovnakého synchronizačného cyklu. Tým sa dosiahne prepojenie blokov - každý blok šifrovaného textu v tomto režime závisí od zodpovedajúcich a všetkých predchádzajúcich blokov otvoreného textu. Preto sa tento režim niekedy nazýva škálovanie pomocou sieťových blokov . Skutočnosť, že bloky sú prepojené, nemá žiadny vplyv na bezpečnosť šifry.

Schéma algoritmov na dekódovanie a dešifrovanie v spätnoväzbovom gama režime je znázornená na obrázku 5 a vzhľadom na svoju jednoduchosť nepotrebuje komentár.


Obrázok 5. Algoritmus pre šifrovanie dát (dešifrovanie) v gama režime so spätnou väzbou.

Šifrovanie v režime gama s uzavretou slučkou má rovnaké vlastnosti ako šifrovanie v normálnom režime gama, s výnimkou vplyvu poškodenia šifrovaného textu na zodpovedajúci otvorený text. Pre porovnanie si napíšme funkcie dešifrovania blokov pre oba spomínané režimy:

hazardné hry;

Hranie so spätnou väzbou;

Zatiaľ čo v normálnom režime zmeny mierky ovplyvňujú zmeny určitých bitov šifrového textu iba zodpovedajúce bity otvoreného textu, v režime spätnej väzby je obraz o niečo komplikovanejší. Ako je možné vidieť zo zodpovedajúcej rovnice, pri dešifrovaní dátového bloku v režime gama uzavretej slučky závisí otvorený dátový blok od zodpovedajúcich a predchádzajúcich zašifrovaných dátových blokov. Ak teda do zašifrovaného bloku zavedieme skreslenia, potom po dešifrovaní budú skreslené dva bloky otvorených údajov - zodpovedajúci a za ním nasledujúci, pričom skreslenia v prvom prípade budú rovnakého charakteru ako v gama. režim av druhom prípade - ako v režime jednoduchá výmena. Inými slovami, v zodpovedajúcom otvorenom dátovom bloku budú poškodené rovnaké bity ako v zašifrovanom dátovom bloku a v nasledujúcom otvorenom dátovom bloku budú všetky bity navzájom nezávislé s pravdepodobnosťou 1. / 2 zmenia ich hodnoty.

Vývoj simulácie vkladania do poľa údajov.

V predchádzajúcich častiach sme diskutovali o vplyve poškodenia šifrovaných údajov na zodpovedajúce jasné údaje. Zistili sme, že pri dešifrovaní v režime jednoduchého nahradzovania sa zodpovedajúci blok otvorených údajov ukáže ako skreslený nepredvídateľným spôsobom a pri dešifrovaní bloku v režime gama sú zmeny predvídateľné. V režime škálovania s uzavretou slučkou sú skreslené dva bloky, jeden predvídateľným spôsobom a druhý nepredvídateľným spôsobom. Znamená to, že z hľadiska ochrany proti vnucovaniu nepravdivých údajov je režim gama zlý, zatiaľ čo režimy jednoduchej náhrady a spätnej väzby gama sú dobré? - V žiadnom prípade. Pri analýze tejto situácie je potrebné vziať do úvahy skutočnosť, že nepredvídateľné zmeny v dešifrovanom dátovom bloku je možné zistiť iba v prípade redundancie týchto istých dát, pričom čím väčší je stupeň redundancie, tým je pravdepodobnejšie, že detekovať skreslenie. K veľmi veľkej redundancii dochádza napríklad pri textoch v prirodzených a umelých jazykoch, pričom v tomto prípade je skreslenie takmer nevyhnutné. V iných prípadoch, napríklad pri skreslení komprimovaných digitalizovaných zvukových obrazov, však jednoducho získame iný obraz, ktorý naše ucho dokáže vnímať. Skreslenie v tomto prípade zostane neodhalené, pokiaľ samozrejme neexistujú a priori informácie o povahe zvuku. Záver je takýto: keďže schopnosť niektorých režimov šifrovania odhaliť skreslenia vnesené do šifrovaných údajov do značnej miery závisí od prítomnosti a stupňa redundancie šifrovaných údajov, táto schopnosť nie je imanentnou vlastnosťou zodpovedajúcich režimov a nemožno ju považovať za ich výhodou.

Na vyriešenie problému detekcie skreslení v poli šifrovaných údajov s danou pravdepodobnosťou poskytuje GOST ďalší režim kryptografickej transformácie - generovanie imitovaného vkladania. Falošná vložka je kontrolná kombinácia, ktorá závisí od otvorených údajov a tajných informácií o kľúči. Účelom použitia napodobňovačov vkladania je odhaliť všetky náhodné alebo úmyselné zmeny v poli informácií. Problém načrtnutý v predchádzajúcom odseku možno úspešne vyriešiť pridaním imitovaného vkladania k zašifrovaným údajom. Pre potenciálneho útočníka sú nasledujúce dve úlohy prakticky neriešiteľné, ak nevlastní kľúč:

  • výpočet simulácie vkladania pre dané otvorené pole informácií;
  • výber otvorených dát pre danú simulačnú vložku;

Schéma algoritmu na generovanie simulovanej vložky je znázornená na obrázku 6.


Obrázok 6. Algoritmus na generovanie simulovanej vložky pre dátové pole.

Časť bloku prijatá na výstupe sa berie ako imitácia vložky, zvyčajne jej 32 najmenej významných bitov. Pri výbere veľkosti simulovaného vloženia je potrebné vziať do úvahy, že pravdepodobnosť úspešného uloženia falošných údajov sa rovná 2 –| ja | za pokus hrubou silou, pokiaľ útočník nemá efektívnejšiu metódu hrubou silou ako jednoduché hádanie. Pri použití 32-bitovej falošnej vložky je táto pravdepodobnosť

Diskusia o kryptografických algoritmoch GOST.

Kryptografická sila GOST.

Pri výbere kryptografického algoritmu na použitie v konkrétnom vývoji je jedným z určujúcich faktorov jeho sila, teda odolnosť voči pokusom protivníka odhaliť ho. Otázka sily šifry sa pri bližšom preskúmaní scvrkáva na dve vzájomne súvisiace otázky:

  • je možné túto šifru vôbec otvoriť;
  • ak áno, aké ťažké je to v praxi;

Šifry, ktoré sa vôbec nedajú prelomiť, sa nazývajú absolútne alebo teoreticky bezpečné. Existenciu takýchto šifier dokazuje Shannonova veta, no cenou za túto silu je potreba použiť na zašifrovanie každej správy kľúč, ktorý nie je menší ako samotná správa. Vo všetkých prípadoch, s výnimkou množstva špeciálnych, je táto cena premrštená, preto sa v praxi využívajú najmä šifry, ktoré nemajú absolútnu bezpečnosť. Najčastejšie používané šifrovacie schémy sa teda dajú vyriešiť v konečnom čase, presnejšie v konečnom počte krokov, z ktorých každý je nejakou operáciou s číslami. Pre nich je najdôležitejším pojmom pojem praktická stabilita, ktorý vyjadruje praktickú náročnosť ich zverejnenia. Kvantitatívnou mierou tejto obtiažnosti môže byť počet elementárnych aritmetických a logických operácií, ktoré je potrebné vykonať na vyriešenie šifry, to znamená na určenie zodpovedajúceho otvoreného textu pre daný šifrový text s pravdepodobnosťou nie menšou ako je daná hodnota. Súčasne, okrem dešifrovaného dátového poľa, môže kryptoanalytik disponovať blokmi otvorených dát a zodpovedajúcimi zašifrovanými dátami alebo dokonca schopnosťou získať zodpovedajúce zašifrované dáta pre akékoľvek otvorené dáta, ktoré si vyberie – v závislosti od uvedených a mnohých iné nešpecifikované stavy, rozlišujú sa samostatné typy kryptoanalýzy.

Všetky moderné kryptosystémy sú postavené podľa Kirchhoffovho princípu, to znamená, že utajenie zašifrovaných správ je určené utajením kľúča. To znamená, že aj keď kryptoanalytik pozná samotný šifrovací algoritmus, stále nie je schopný dešifrovať správu, ak nemá zodpovedajúci kľúč. Šifra sa považuje za dobre navrhnutú vtedy, ak neexistuje spôsob, ako ju prelomiť efektívnejšie ako hľadaním hrubou silou v celom priestore kľúča, t.j. nad všetkými možnými kľúčovými hodnotami. Tomuto princípu pravdepodobne zodpovedá GOST - v priebehu rokov intenzívneho výskumu nebola navrhnutá jediná účinná metóda na jeho kryptoanalýzu. Pokiaľ ide o silu, je o mnoho rádov lepší ako bývalý americký šifrovací štandard DES.

GOST používa 256-bitový kľúč a veľkosť priestoru pre kľúče je 2256 . Žiadne z elektronických zariadení, ktoré v súčasnosti existujú alebo sa očakáva ich implementácia v blízkej budúcnosti, nemôže vyzdvihnúť kľúč za menej ako mnoho stoviek rokov. Táto hodnota sa v súčasnosti stala de facto štandardom veľkosti kľúča pre symetrické kryptografické algoritmy a podporuje ju aj nový americký šifrovací štandard. Bývalý americký štandard DES so svojou reálnou veľkosťou kľúča 56 bitov a veľkosťou priestoru kľúča iba 256 už nie je dostatočne silný vo svetle možností moderných výpočtových nástrojov. To bolo preukázané koncom 90. rokov niekoľkými úspešnými útokmi hrubou silou na DES. Okrem toho bol DES podrobený špeciálnym metódam kryptoanalýzy, ako sú diferenciálne a lineárne. V tomto ohľade môže byť DES viac výskumný alebo vedecký ako praktický. V roku 1998 bola oficiálne uznaná jeho kryptografická slabosť – americký Národný inštitút pre štandardy odporučil používať trojité DES šifrovanie. A koncom roku 2001 bol oficiálne schválený nový americký šifrovací štandard AES, postavený na iných princípoch a bez nedostatkov svojho predchodcu.

Poznámky k architektúre GOST.

Je dobre známe, že domáci šifrovací štandard je predstaviteľom celej rodiny šifier postavených na rovnakých princípoch. Jeho najznámejším „príbuzným“ je bývalý americký šifrovací štandard, algoritmus DES. Všetky tieto šifry, podobne ako GOST, obsahujú algoritmy troch úrovní. Základom je vždy určitý „základný krok“, na základe ktorého sa podobným spôsobom stavajú „základné cykly“ a na ich základe sú už postavené praktické postupy pre šifrovanie a vývoj vkladania imitácií. Špecifickosť každej zo šifier tejto rodiny teda spočíva práve v jej hlavnom kroku, či skôr dokonca v jej časti. Hoci architektúra klasických blokových šifier, ku ktorým patrí GOST, ďaleko presahuje rámec tohto článku, stále stojí za to povedať o nej pár slov.

Algoritmy pre „základné kroky krypto-transformácie“ pre šifry ako GOST sú zostavené identickým spôsobom a táto architektúra sa nazýva vyvážená sieť Feistel (vyvážená sieť Feistel) pomenovaná po osobe, ktorá ju ako prvá navrhla. Schéma transformácie údajov v jednom cykle, alebo, ako sa to bežne nazýva, okrúhly , znázornené na obrázku 7.


Obrázok 7. Obsah hlavného kroku krypto-transformácie pre blokové šifry podobné GOST.

Na vstup hlavného kroku sa privádza blok rovnakej veľkosti, ktorého horná a spodná polovica sa spracovávajú oddelene od seba. Počas transformácie sa spodná polovica bloku umiestni na miesto staršieho bloku a staršia sa spojí pomocou bitového „ exkluzívne resp » s výsledkom výpočtu nejakej funkcie, na mieste mladšej. Táto funkcia, ktorá berie ako argument spodnú polovicu bloku a prvok kľúčovej informácie ( X), je obsahová časť šifry a nazýva sa ňou šifrovacia funkcia . Z rôznych dôvodov sa ukázalo ako výhodné rozdeliť zašifrovaný blok na dve časti rovnakej veľkosti: | N 1 |=|N 2 | - práve tento fakt odráža slovo "vyvážený" v názve architektúry. Z času na čas sa však používajú aj šifrovacie nevyvážené siete, aj keď nie tak často ako tie vyvážené. Okrem toho úvahy o sile šifry vyžadujú, aby veľkosť kľúčového prvku nebola menšia ako veľkosť polovice bloku: v GOST sú všetky tri veľkosti 32 bitov. .

Ak použijeme vyššie uvedené na schému hlavného kroku algoritmu GOST, je zrejmé, že bloky 1,2,3 algoritmu (pozri obr. 1) určujú výpočet jeho šifrovacej funkcie a bloky 4 a 5 nastavujú vytvorenie výstupného bloku hlavného kroku na základe obsahu vstupného bloku a hodnoty šifrovacej funkcie. Viac podrobností o architektúrach moderných blokových šifier s tajným kľúčom možno nájsť v klasických prácach, alebo v upravenej podobe v mojich prácach.

V predchádzajúcej časti sme už porovnávali DES a GOST z hľadiska odolnosti, teraz ich porovnáme z hľadiska funkčného obsahu a jednoduchosti implementácie. V šifrovacích cykloch GOST sa hlavný krok opakuje 32-krát, pre DES je táto hodnota 16. Samotná funkcia šifrovania GOST je však oveľa jednoduchšia ako podobná funkcia DES, v ktorej je veľa nepravidelných bitových permutácií. Tieto operácie sú extrémne neefektívne implementované na moderných nešpecializovaných procesoroch. GOST neobsahuje takéto operácie, takže je oveľa pohodlnejšie na implementáciu softvéru.

Žiadna z implementácií DES uvažovaných autorom pre platformu Intel x86 nedosahuje ani polovičný výkon oproti implementácii GOST, ktorú vám ponúka tento článok, a to aj napriek dvakrát kratšiemu cyklu. Všetko vyššie uvedené naznačuje, že vývojári GOST zohľadnili pozitívne aj negatívne aspekty DES a realistickejšie zhodnotili súčasné a budúce možnosti kryptoanalýzy. Avšak brať DES ako základ pri porovnávaní výkonu implementácií šifier už nie je relevantné. Nový americký šifrovací štandard je na tom s účinnosťou oveľa lepšie – s rovnakou veľkosťou kľúča ako GOST v 256 bitoch, AES funguje rýchlejšie ako on o približne 14 % – to je v porovnaní s počtom „základných operácií“. Okrem toho je GOST prakticky nemožné paralelizovať, zatiaľ čo AES má v tomto smere oveľa viac príležitostí. Na niektorých architektúrach môže byť táto výhoda AES menšia, na iných viac. Na procesore Intel Pentium teda dosahuje 28 %. Podrobnosti nájdete v .

Požiadavky na kvalitu kľúčových informácií a kľúčové zdroje.

Nie všetky kľúče a substitučné tabuľky poskytujú maximálnu silu šifry. Každý šifrovací algoritmus má svoje vlastné kritériá na vyhodnotenie kľúčových informácií. Takže pre algoritmus DES existencia tzv. slabé klávesy “, v ktorom spojenie medzi otvorenými a šifrovanými dátami nie je dostatočne maskované a šifra sa dá pomerne ľahko prelomiť.

Vyčerpávajúcu odpoveď na otázku o kvalitatívnych kritériách pre kľúče a substitučné tabuľky GOST, ak ju vôbec niekde môžete získať, je len od vývojárov algoritmu. Príslušné údaje neboli zverejnené vo verejnej tlači. Podľa zavedeného postupu sa však kľúčové údaje prijaté od oprávnenej organizácie musia použiť na zašifrovanie informácií, ktoré majú pečiatku. Nepriamo to môže naznačovať existenciu metód na kontrolu kľúčových údajov na prítomnosť „vší“. Ak je prítomnosť slabých kľúčov v GOST diskutabilnou otázkou, potom je prítomnosť slabých náhradných uzlov nepochybná. Je zrejmé, že „triviálna“ substitučná tabuľka, podľa ktorej sa akákoľvek hodnota nahrádza sama sebou, je taká slabá, že pri jej použití sa šifra jednoducho prelomí, bez ohľadu na to, aký je kľúč.

Ako je uvedené vyššie, kritériá na hodnotenie kľúčových informácií nie sú k dispozícii, ale stále je možné o nich urobiť niekoľko všeobecných úvah.

kľúč

Kľúčom musí byť pole štatisticky nezávislých bitov, ktoré s rovnakou pravdepodobnosťou nadobúdajú hodnoty 0 a 1. Nedá sa úplne vylúčiť, že niektoré špecifické hodnoty kľúča sa môžu ukázať ako „slabé“, teda napr. šifra nemusí poskytnúť danú úroveň bezpečnosti, ak sa použije. Podiel takýchto hodnôt na celkovej hmotnosti všetkých možných kľúčov je však pravdepodobne zanedbateľný. Prinajmenšom intenzívny výskum šifier zatiaľ neodhalil žiadny takýto kľúč pre žiadnu zo známych (t. j. navrhovaných FAPSI) substitučných tabuliek. Preto kľúče vygenerované pomocou určitého generátora skutočne náhodných čísel budú kvalitné s pravdepodobnosťou, ktorá sa od jednoty líši len zanedbateľne malým množstvom. Ak sa kľúče generujú pomocou generátora pseudonáhodných čísel, potom musí použitý generátor poskytovať vyššie uvedené štatistické charakteristiky a navyše musí mať vysokú kryptografickú silu, nie menšiu ako samotná GOST. Inými slovami, úloha určiť chýbajúce členy postupnosti prvkov generovaných generátorom by nemala byť jednoduchšia ako úloha prelomiť šifru. Okrem toho je možné použiť rôzne štatistické kritériá na odmietnutie kľúčov so slabým štatistickým výkonom. V praxi zvyčajne postačujú dve kritériá - na kontrolu ekvipravdepodobného rozloženia kľúčových bitov medzi hodnotami 0 a 1 sa zvyčajne používa Pearsonovo kritérium ("chi square") a na kontrolu nezávislosti kľúčových bitov sa používa kritérium série. použité. O spomínaných kritériách si môžete prečítať v učebniciach alebo príručkách o matematickej štatistike.

Najlepším prístupom na generovanie kľúčov by bolo použitie hardvérových snímačov MF, ale to nie je vždy prijateľné z ekonomických dôvodov. Pri generovaní malého poľa kľúčových informácií je rozumnou alternatívou k použitiu takéhoto senzora a v praxi sa široko používa metóda „elektronickej rulety“, keď ďalšia vygenerovaná časť náhodných bitov závisí od okamihu, keď operátor stlačí určitú klávesu. na klávesnici počítača. V tejto schéme je zdrojom náhodných údajov používateľ počítača, presnejšie časové charakteristiky jeho reakcie. V tomto prípade je možné na jedno stlačenie klávesu vygenerovať len niekoľko bitov náhodných dát, takže celková rýchlosť generovania kľúčových informácií je nízka – až niekoľko bitov za sekundu. Je zrejmé, že tento prístup nie je vhodný na získanie veľkých polí kľúčov.

V prípade, že je potrebné vyvinúť veľké pole kľúčových informácií, je možné a veľmi rozšírené použiť rôzne softvérové ​​senzory pseudonáhodných čísel. Keďže takýto senzor vyžaduje vysokú kryptografickú silu, je prirodzené použiť gama generátor samotnej šifry ako taký - jednoducho „rozrežeme“ gama generovanú šifrou na „kúsky“ požadovanej veľkosti, pre GOST - každý 32 bajtov. . Samozrejme, na tento prístup potrebujeme „hlavný kľúč“, ktorý môžeme získať vyššie opísanou metódou elektronickej rulety a pomocou šifry v režime gama generátora získame pole kľúčových informácií objem, ktorý potrebujeme. Takže tieto dva spôsoby generovania kľúčov – „manuálny“ a „algoritmický“ – fungujú v tandeme a navzájom sa dopĺňajú. Schémy generovania kľúčov v „nízkorozpočtových“ informačných kryptografických systémoch ochrany sú takmer vždy postavené podľa tohto princípu.

Tabuľka suplovania

Náhradná tabuľka je dlhodobým kľúčovým prvkom, to znamená, že je platná oveľa dlhšie ako jeden kľúč. Predpokladá sa, že je spoločný pre všetky šifrovacie uzly v rámci jedného systému kryptografickej ochrany. Aj keď dôjde k porušeniu dôvernosti substitučnej tabuľky, sila šifry zostáva extrémne vysoká a neklesne pod povolenú hranicu. Preto nie je potrebné udržiavať tabuľku v tajnosti a vo väčšine komerčných aplikácií GOST sa to robí takto. Na druhej strane je substitučná tabuľka kritickým prvkom na zabezpečenie pevnosti celej šifry. Výber nesprávnej tabuľky môže viesť k ľahkému prelomeniu šifry pomocou známych metód kryptoanalýzy. Kritériá pre vývoj substitučných uzlov sú tajomstvom siedmich pečatí a je nepravdepodobné, že by ich FAPSI v blízkej dohľadnej budúcnosti zdieľala s verejnosťou. Nakoniec, aby ste mohli povedať, či je táto konkrétna substitučná tabuľka dobrá alebo zlá, musíte vynaložiť obrovské množstvo práce - mnoho tisíc hodín ľudí a strojov. Po výbere a použití sa tabuľka môže nahradiť iba vtedy, ak sa šifra s jej použitím ukáže ako zraniteľná voči jednému alebo druhému typu kryptoanalýzy. Preto je najlepšou voľbou pre bežného používateľa šifry vziať si jednu z niekoľkých tabuliek, ktoré sa stali verejnými. Napríklad zo štandardu hašovacej funkcie je to aj „centrálne bankovníctvo“; informácie o týchto tabuľkách nájdete v otvorenej tlači a dokonca aj na internete, ak budete dobre hľadať.

Pre tých, ktorí nie sú zvyknutí ísť jednoduchým spôsobom, nižšie je všeobecná schéma na získanie tabuliek kvality:

  1. Použitím jednej alebo druhej metódy vytvoríte súbor ôsmich náhradných uzlov so zaručenými nelineárnymi charakteristikami. Existuje niekoľko takýchto metód, jednou z nich je použitie takzvaných ohýbaných funkcií.
  2. Skontrolujete implementáciu najjednoduchších „kritérií kvality“ – napríklad tých, ktoré sú zverejnené pre náhradné uzly DES. Tu sú niektoré všeobecnejšie úvahy o tomto skóre: Každý substitučný uzol môže byť opísaný štyrmi logickými funkciami zo štyroch logických argumentov. Ak tieto funkcie, zapísané v minimálna forma(t. j. s minimálnou možnou dĺžkou výrazu) nie sú dostatočne zložité, takýto náhradný uzol sa zamietne. Jednotlivé funkcie v rámci celej tabuľky suplovania sa navyše musia navzájom dostatočne líšiť. V tejto fáze sa eliminujú mnohé zámerne nekvalitné tabuľky.
  3. Pre šifru s tabuľkami podľa vlastného výberu zostavte rôzne okrúhle modely zodpovedajúce rôznym typom kryptoanalýzy a zmerajte zodpovedajúce „profilové“ charakteristiky. Takže pre lineárnu kryptoanalýzu zostavte lineárny štatistický analóg šifrovacieho kola a vypočítajte "profilovú" charakteristiku - index nelinearity. Ak sa ukáže, že je nedostatočná, tabuľka suplovania sa zamietne.
  4. Nakoniec s využitím výsledkov predchádzajúceho odseku podrobte šifru s tabuľkou podľa vlastného výberu intenzívnemu výskumu - pokusu o kryptoanalýzu všetkými známymi metódami. Táto fáza je najťažšia a časovo náročná. Ale ak je to urobené kvalitne, potom s vysokou mierou pravdepodobnosti možno konštatovať, že šifru s tabuľkami, ktoré ste si vybrali, neotvoria obyčajní smrteľníci, a je možné, že bude pre nich príliš ťažká. špeciálne služby.

Dá sa to však urobiť oveľa jednoduchšie. Ide o to, že čím viac kôl v šifre, tým menší dopad na bezpečnosť celej šifry majú bezpečnostné charakteristiky jedného kola. V GOST je až 32 kôl - viac ako takmer vo všetkých šifrách s podobnou architektúrou. Preto pre väčšinu domácich a komerčných aplikácií stačí získať substitučné uzly ako nezávislé náhodné permutácie čísel od 0 do 15. Prakticky sa to dá realizovať napríklad zamiešaním balíčka šestnástich kariet, z ktorých každá má priradenú jednu z hodnôt zadaného rozsahu.

V súvislosti s tabuľkou náhrad je potrebné poznamenať ešte jeden zaujímavý fakt. Reverzibilita šifrovacích cyklov 32-3 a 32-R nevyžaduje, aby náhradné uzly boli permutácie čísel od 0 do 15. Všetko funguje, aj keď sú v náhradnom uzle duplicitné prvky a náhrada určená takýmto uzlom , je nevratný – v tomto prípade je však sila šifry znížená. Prečo je to tak, sa v tomto článku nezaoberáme, no overiť si samotný fakt nie je ťažké. Na to stačí pokúsiť sa najskôr zašifrovať a následne dešifrovať dátový blok pomocou takejto „podradnej“ substitučnej tabuľky, ktorej uzly obsahujú duplicitné hodnoty.

Variácie na tému GOST

Veľmi často sa na použitie v systéme ochrany kryptografických údajov vyžaduje algoritmus s vyššou rýchlosťou implementácie ako má GOST a takáto vysoká kryptografická sila nie je potrebná. Typickým príkladom takýchto úloh sú rôzne druhy elektronických burzových obchodných systémov, ktoré riadia obchodné relácie v reálnom čase. Tu sú potrebné šifrovacie algoritmy, ktoré znemožnia dešifrovanie prevádzkových údajov systému počas relácie (údaje o zadaných objednávkach, uskutočnených obchodoch atď.), Ale po nej sú tieto údaje spravidla už zbytočné. pre útočníkov. Inými slovami, vyžaduje sa len niekoľko hodín zaručenej vytrvalosti, čo je typická dĺžka obchodnej relácie. Je jasné, že použitie plnohodnotného GOST v tejto situácii by znamenalo streľbu z dela na vrabce.

Ako postupovať v tomto a podobných prípadoch, aby sa zvýšila rýchlosť šifrovania? Odpoveď leží na povrchu – použite v základných cykloch modifikáciu šifry s menším počtom základných krokov (kôl). Koľkokrát znížime počet kôl šifrovania, výkon sa zvýši o rovnakú hodnotu. Túto zmenu je možné dosiahnuť dvoma spôsobmi – skrátením dĺžky kľúča a znížením počtu „vyhľadávacích cyklov“ kľúča. Pripomeňme, že počet základných krokov v základných šifrovacích cykloch je N=n m, kde n je počet 32-bitových prvkov v kľúči, m- počet cyklov použitia kľúčových prvkov v norme n=8, m=4. Ktorékoľvek z týchto čísel môžete znížiť, ale najjednoduchšou možnosťou je skrátiť dĺžku kľúča bez ovplyvnenia schémy jeho použitia.

Je jasné, že cenou za urýchlenie práce bude zníženie sily šifry. Hlavný problém spočíva v tom, že je dosť ťažké viac či menej presne odhadnúť veľkosť tohto poklesu. Je zrejmé, že jediným možným spôsobom, ako to urobiť, je vykonať štúdiu variantov šifry so zníženými cyklami kryptografickej transformácie „v plnom rozsahu“. Je jasné, že po prvé si to vyžaduje použitie utajovaných informácií, ktoré vlastnia iba vývojári GOST, a po druhé, je to veľmi pracné. Preto sa teraz pokúsime poskytnúť veľmi, veľmi hrubý odhad, založený len na všeobecných vzorcoch.

Čo sa týka odolnosti šifry proti prelomeniu „extenzívnymi“ metódami, teda proti útoku „hrubou silou“, tu je všetko viac-menej jasné: 64-bitový kľúč je niekde na hranici dostupnosti pre tento typ útoku, šifra s kľúčom 96-bitovým a vyšším (pamätajte, že kľúč musí obsahovať celé číslo 32-bitových prvkov) je proti nemu dosť robustná. Niekdajší americký šifrovací štandard DES bol totiž pred niekoľkými rokmi opakovane napadnutý hrubou silou – najskôr ho nabúrala počítačová sieť organizovaná na báze globálneho internetu a následne špecializovaná, t.j. počítač navrhnutý špeciálne na tento účel. Predpokladajme, že štandardná verzia GOST, keď je implementovaná do softvéru na moderných procesoroch, funguje štyrikrát rýchlejšie ako DES. Potom 8-kolový "redukovaný GOST" bude fungovať 16-krát rýchlejšie ako DES. Predpokladajme tiež, že v priebehu času od hacknutia DES sa výkon výpočtovej techniky podľa Moorovho zákona štvornásobne zvýšil. Výsledkom je, že teraz je overenie jedného 64-bitového kľúča pre „redukovaný GOST“ s ôsmimi cyklami 64-krát rýchlejšie, ako sa kedysi vykonávalo overenie jedného kľúča DES. Výhoda tejto verzie GOST oproti DES, pokiaľ ide o zložitosť útoku hrubou silou, je teda znížená z 2 64–56 = 2 8 = 256 na 256. / 64 = 4 krát. Súhlasíte, je to veľmi iluzórny rozdiel, takmer nič.

Je oveľa ťažšie posúdiť odolnosť oslabených modifikácií GOST voči „intenzívnym“ metódam kryptoanalýzy. Aj tu však možno vysledovať všeobecný vzorec. Faktom je, že „profilové“ charakteristiky mnohých v súčasnosti najsilnejších typov kryptoanalýzy závisia exponenciálne od počtu kôl šifrovania. Takže pre lineárnu kryptoanalýzu (LCA) to bude charakteristika linearity L :

kde C a sú konštanty, R je počet kôl. Podobný vzťah existuje pre diferenciálnu kryptoanalýzu. Podľa ich „fyzikálneho významu“ sú všetky charakteristiky tohto druhu pravdepodobnosťou. Zvyčajne je množstvo počiatočných údajov potrebných na kryptoanalýzu a jej zložitosť nepriamo úmerné takýmto charakteristikám. Z toho vyplýva, že tieto ukazovatele náročnosti na prácu rastú exponenciálne s rastom počtu základných krokov šifrovania. Ak sa teda počet kôl niekoľkonásobne zníži, zložitosť najznámejších typov analýz sa zmení ako veľmi približne a zhruba koreň tejto sily z počiatočného množstva. To je veľmi veľký pokles výdrže.

Na druhej strane, GOST bol navrhnutý s veľkou mierou bezpečnosti a dnes je odolný voči všetkým známym typom kryptoanalýzy, vrátane diferenciálnej a lineárnej. S ohľadom na LCA to znamená, že na jeho úspešnú implementáciu je potrebných viac párov „otvorený blok – šifrovaný blok“, ako „existuje v prírode“, teda viac ako 2 64 . Vzhľadom na vyššie uvedené to znamená, že pre úspešnú LCA 16-kolového GOST budú potrebné aspoň bloky alebo 2 35 bajtov alebo 32 GB údajov a pre 8-kolový GOST aspoň bloky alebo 2 19 bajtov alebo 0,5 MB.

Závery zo všetkého, čo bolo povedané vyššie, sú uvedené v nasledujúcej tabuľke, ktorá zhŕňa charakteristiky znížených verzií GOST.

Počet kôl Veľkosť kľúča, bit Index rýchlej akcie Pravdepodobné vlastnosti šifry (veľmi hrubý odhad)
24 192 1,33 Odolný voči väčšine známych typov KA, alebo byť na pokraji odolnosti. Praktická implementácia CA je nemožná z dôvodu vysokých požiadaviek na počiatočné údaje a náročnosť práce.
16 128 2 Teoreticky nestabilné voči niektorým typom kryptoanalýzy, ich praktická implementácia je však vo väčšine prípadov náročná z dôvodu vysokých požiadaviek na počiatočné údaje a náročnosti práce.
12 95 2,67 Nie je odolný voči niektorým známym typom kryptoanalýz, je však vhodný na krátkodobé zabezpečenie utajenia malého množstva dát (do desiatok či stoviek KB).
8 64 4 Nie je odolný voči niektorým známym typom kryptoanalýzy, ale je vhodný na krátkodobé zabezpečenie utajenia malého množstva dát (do desiatok Kbajtov).

Posledné dve možnosti s 12 a 8 nábojmi sú schopné poskytnúť časovo veľmi, veľmi obmedzenú ochranu. Ich použitie je opodstatnené len pri úlohách, kde sa vyžaduje len krátkodobé utajovanie uzavretých údajov, rádovo niekoľko hodín. Možnou oblasťou použitia pre tieto slabé šifry je uzavretie prenosu UDP systémov elektronického obchodovania na burze. V tomto prípade je každý dátový paket (datagram, stredné „D“ zo skratky UDP) zašifrovaný samostatným 64-bitovým kľúčom a samotný kľúč je zašifrovaný kľúčom relácie (kľúčom, ktorého rozsah je jedna komunikačná relácia medzi dvoma počítačmi ) a prenášané spolu s údajmi.

Pred dokončením so zníženými verziami GOST poviem, že všetky vyššie uvedené úvahy sú vysoko špekulatívne. Norma poskytuje trvanlivosť len pre jednu, 32-kruhovú možnosť. A nikto vám nemôže poskytnúť záruky, že odolnosť zmenšených variantov šifry proti prelomeniu sa zmení vyššie uvedeným spôsobom. Ak sa ich predsa len rozhodnete použiť vo svojom vývoji, pamätajte, že ste vkročili na veľmi vratkú zem, ktorá vám môže kedykoľvek vykĺznuť spod nôh. Keďže rýchlosť šifrovania je pre vás rozhodujúca, možno by ste mali zvážiť použitie rýchlejšej šifry alebo výkonnejšieho počítača? Ďalšou úvahou, pre ktorú to stojí za to urobiť, je, že oslabené verzie GOST budú čo najcitlivejšie na kvalitu použitých náhradných jednotiek.

Problém má aj negatívnu stránku. Čo ak rýchlosť šifrovania nie je kritická a požiadavky na silu sú veľmi prísne? Existujú dva spôsoby, ako zvýšiť odolnosť GOST - budeme ich podmienečne nazývať "extenzívne" a "intenzívne". Prvým z nich nie je nič iné ako jednoduché zvýšenie počtu kôl šifrovania. Nie je mi celkom jasné, prečo by to mohlo byť skutočne potrebné, pretože domáci štandard už poskytuje potrebnú stabilitu aj bez neho. Ak však trpíte paranojou viac ako je požadovaná miera (a všetci "ochrancovia informácií" sú jednoducho povinní ňou trpieť, je to podmienka odbornej spôsobilosti, otázkou je len závažnosť prípadu :), bude pomôže ti trochu sa upokojiť. Ak si nie ste istí touto šifrou KGB alebo substitučnou tabuľkou, ktorú používate, stačí použiť dvojnásobok, štvornásobok atď. počet kôl - vyberte početnosť na základe závažnosti vášho prípadu. Tento prístup vám umožňuje skutočne zvýšiť silu šifry - ak bola skoršia kryptanalýza jednoducho nemožná, teraz je to nemožné na námestí!

Zložitejšia a zaujímavejšia je otázka, či je možné zvýšiť silu šifry bez zmeny počtu a štruktúry hlavných krokov šifrovania. Prekvapivo je odpoveď na túto otázku áno, hoci opäť kráčame na vratkej pôde špekulácií. Faktom je, že v GOST sa v hlavnom kroku konverzie má nahradiť 4 bitmi 4, ale v praxi (o tom si povieme neskôr) všetky implementácie softvéru vykonávajú nahradenie bajtu po bajte, t.j. 8 x 8 bitov – toto sa robí z dôvodov efektívnosti. Ak takúto náhradu hneď navrhneme ako 8-bitovú, tak výrazne zlepšíme vlastnosti jedného kola. Najprv sa zvýši „difúzna“ charakteristika alebo „lavínový“ indikátor – jeden bit zdrojových údajov a/alebo kľúč ovplyvní viac bitov výsledku. Po druhé, pre väčšie substitučné uzly možno získať nižšie diferenciálne a lineárne charakteristiky, čím sa zníži náchylnosť šifry na podobné typy kryptoanalýzy. To platí najmä pre znížené cykly GOST a pre 8 a 12-kolové možnosti je takýto krok jednoducho potrebný. To trochu kompenzuje stratu výdrže v nich z poklesu počtu kôl. Čo sťažuje použitie tejto techniky, je to, že takéto "zvýšené" náhradné uzly budete musieť navrhnúť sami. A tiež skutočnosť, že väčšie uzly sa vo všeobecnosti navrhujú citeľne ťažšie ako menšie.

Neštandardné použitie normy.

Hlavným účelom kryptografických algoritmov GOST je samozrejme šifrovanie údajov a ochrana pred imitáciou. Možno ich však nájsť aj v iných aplikáciách, ktoré prirodzene súvisia s ochranou informácií. Poďme si o nich stručne povedať:

1. Pre šifrovanie v režime gama zabezpečuje GOST generovanie kryptografickej gama - sekvencie bitov s dobrými štatistickými charakteristikami a vysokou kryptografickou silou. Ďalej sa táto gama používa na úpravu otvorených údajov, výsledkom čoho sú šifrované údaje. Toto však nie je jediná možná aplikácia kryptografickej gama. Faktom je, že algoritmus na jeho vývoj je generátor pseudonáhodnej postupnosti čísel (PRNG) s vynikajúcimi vlastnosťami. Samozrejme, nie je veľmi rozumné používať takéto PRNG tam, kde je potrebné len získanie štatistických charakteristík vygenerovanej sekvencie a nie je potrebná kryptografická sila, nie je to príliš rozumné - pre tieto prípady existujú oveľa efektívnejšie generátory. Ale pre rôzne aplikácie súvisiace s informačnou bezpečnosťou bude takýto zdroj veľmi užitočný:

  • Ako je uvedené vyššie, gama môže byť použitá ako "surovina" na generovanie kľúčov. Aby ste to dosiahli, stačí získať gama segment požadovanej dĺžky - 32 bajtov. Takto je možné vyrobiť kľúče podľa potreby a nie je potrebné ich skladovať – ak bude takýto kľúč opäť potrebný, bude ľahké ho znova vygenerovať. Bude potrebné si zapamätať, na ktorom kľúči bol pôvodne vygenerovaný, ktorá synchronizačná správa bola použitá a od ktorého bajtu vygenerovanej gama kľúč začal. Všetky informácie okrem použitého kľúča nie sú tajné. Tento prístup uľahčí ovládanie pomerne zložitého a rozvetveného systému kľúčov iba pomocou jedného „hlavného kľúča“.
  • Podobne ako v predchádzajúcom, aj gama môže byť použitá ako počiatočná „surovina“ na generovanie hesiel. Tu môže vzniknúť otázka, prečo je vôbec potrebné ich generovať, či nie je jednoduchšie ich jednoducho vymyslieť podľa potreby. Neúspech tohto prístupu jasne demonštrovala séria incidentov v počítačových sieťach, z ktorých najväčším bola denná paralýza internetu v novembri 1988 spôsobená „červom Morris“. Jedným zo spôsobov, ako škodlivý program prenikol do počítača, bolo uhádnutie hesla: program sa pokúsil dostať do systému postupným triedením niekoľkých stoviek hesiel zo svojho interného zoznamu a vo významnej časti prípadov sa mu to podarilo. Fantázia človeka pri vymýšľaní hesiel sa ukázala ako veľmi chabá. Preto v organizáciách, kde sa bezpečnosti venuje náležitá pozornosť, heslá generuje a distribuuje používateľom správca bezpečnostného systému. Generovanie hesiel je o niečo komplikovanejšie ako generovanie kľúčov, pretože v tomto prípade musí byť „surová“ binárna gama prevedená do znakovej podoby a nie len „rozrezaná“ na kúsky. Okrem toho môže byť potrebné zlikvidovať jednotlivé hodnoty, aby sa zabezpečilo, že všetky znaky abecedy sa budú v hesle objavovať rovnako.
  • Ďalším spôsobom využitia kryptografického gamutu je zaručené vymazanie dát na magnetických médiách. Faktom je, že aj keď sú informácie prepísané na magnetické médium, zostávajú stopy predchádzajúcich údajov, ktoré je možné obnoviť vhodným preskúmaním. Na zničenie týchto stôp je potrebné takéto prepísanie vykonať mnohokrát. Ukázalo sa, že by bolo potrebné prepisovať informácie do médií menejkrát, ak takýto postup využíva náhodné alebo pseudonáhodné údaje, ktoré zostanú neznáme odborníkom snažiacim sa obnoviť prepísané informácie. Tu sa vám bude hodiť gama šifra.

2. Nielen kryptografická gama, ale aj samotná kryptografická transformácia môže byť použitá pre potreby, ktoré priamo nesúvisia so šifrovaním:

  • Vieme, že jednou z takýchto možností použitia GOST je vývoj simulovanej vložky pre dátové polia. Na základe akejkoľvek blokovej šifry, vrátane GOST, je však celkom ľahké zostaviť schému na výpočet jednosmernej hašovacej funkcie, ktorá sa v literatúre nazýva aj MDC, ktorá v rôznych zdrojoch znamená zmeniť detekčný kód / manipulácia (M modifikácia/ M anipulácia D etiky Códa) alebo prehľad správ (M esej D igest Códa). Prvý prepis sa objavil v literatúre oveľa skôr, druhý, kratší, myslím, vymysleli tí, ktorí si nevedeli zapamätať ten prvý :) - to bol vtip. MDC je možné priamo použiť v systémoch ochrany proti imitácii ako analóg vkladania imitácie, ktorý však nezávisí od tajného kľúča. Okrem toho sa MDC široko používa v schémach elektronického digitálneho podpisu (EDS), pretože väčšina týchto schém je navrhnutá tak, že je vhodné podpísať dátový blok pevnej veľkosti. Ako viete, na základe diskutovanej normy GOST 28147-89 je postavená norma Ruskej federácie na výpočet jednosmernej hašovacej funkcie GOST R34.11-94.
  • Menej známe je, že na základe akejkoľvek blokovej šifry, vrátane GOST, možno vybudovať plne funkčnú schému EDS s tajným podpisovým kľúčom a otvorenou overovacou kombináciou. Z viacerých dôvodov táto schéma nenašla široké praktické rozšírenie, no v niektorých prípadoch ju možno stále považovať za veľmi atraktívnu alternatívu k „matematickým“ schémam EDS, ktoré sú v súčasnosti vo svete dominantné.

Literatúra

Systémy spracovania informácií. Kryptografická ochrana. Algoritmus kryptografického prevodu GOST 28147-89. Štát. Com. ZSSR podľa noriem, M., 1989. ftp://ftp.wtc-ural.ru/pub/ru.crypt/GOST-28147
Shannon Claude. Matematická teória tajných systémov. V zborníku „Práce z teórie informácie a kybernetiky“, M., IL, 1963, s. 333-369. http://www.enlight.ru/crypto/articles/shannon/shann__i.htm
Oznamujeme schválenie Federal Information Processing Standard (FIPS) 197, Advanced Encryption Standard (AES), Federal Register Vol. 66, č. 235 / štvrtok 6. decembra 2001 / Oznámenia, s. 63369–63371. http://csrc.nist.gov/encryption/aes/
Feistel Horst. Kryptografia a počítačová bezpečnosť. Preklad A. Vinokurov, vydal Horst Feistel. Cryptography and Computer Privacy, Scientific American, máj 1973, zv. 228, č. 5, str. 15-23. http://www.enlight.ru/crypto/articles/feistel/feist_i.htm
Schneier Bruce. Aplikovaná kryptografia. 2. vyd. Protokoly, algoritmy a zdrojové texty v jazyku C., M., "Triumph", 2002 http://www.ssl.stu.neva.ru/psw/crypto/appl_rus/appl_cryp.htm
Menezes Alfred, van Oorschot Paul, Vanstone Scott. Príručka aplikovanej kryptografie. http://www.cacr.math.uwaterloo.ca/hac/
Vinokurov Andrej. Ako je štruktúrovaná bloková šifra? Rukopis. http://www.enlight.ru/crypto/articles/vinokurov/blcyph_i.htm
Vinokurov Andrej. Problémy s kryptografiou pre elektronický časopis iNFUSED BYTES online. http://www.enlight.ru/crypto/articles/ib/ib.htm
Vinokurov Andrej, Primenko Eduard. Text správy "O softvérovej implementácii šifrovacích štandardov Ruskej federácie a USA", konferencia o informatizácii, Moskva, MEPhI, 28. - 29. januára 2001. Uverejnené v zborníku z konferencie.
Informačné technológie. Kryptografická ochrana informácií. Hashovacia funkcia GOST R34.11-94, Gosstandart RF, M., 1994.

Známy výskumník, zakladateľ algebraickej kryptoanalýzy Nicolas Courtois tvrdí, že bloková šifra GOST, ktorá sa mala stať v blízkej budúcnosti medzinárodným štandardom, bola skutočne prelomená a v budúcnosti očakáva množstvo publikácií, ktoré by sa mali rozvíjať jeho predstavy o nestabilite tohto algoritmu.

Nasledujú krátke úryvky z tejto práce, ktorú možno považovať za poplašný útok uprostred medzinárodnej štandardizácie (autor bol známy podobným zveličovaním vo vzťahu k AES, ale jeho práca mala vtedy veľký teoretický vplyv na kryptoanalýzu, ale má neviedlo k praktickým útokom na samotný AES). Ale možno je to aj skutočné varovanie pred začiatkom fázy „potápania sa na chvost“, ktorá môže skončiť kolapsom národného šifrovacieho štandardu, ako to bolo v prípade hashovacieho algoritmu SHA-1 a „de facto“ MD5 hashovací algoritmus.

GOST 28147-89 bol štandardizovaný v roku 1989 a po prvýkrát sa stal oficiálnym štandardom na ochranu dôverných informácií, ale špecifikácia šifry zostala uzavretá. V roku 1994 bola norma odtajnená, publikovaná a preložená do angličtiny. Analogicky s AES (a na rozdiel od DES), GOST môže chrániť utajované informácie bez obmedzení, v súlade so spôsobom, ktorý je špecifikovaný v ruskej norme. To. GOST nie je analógom DES, ale konkurentom 3-DES s tromi nezávislými kľúčmi alebo AES-256. Je zrejmé, že GOST je pomerne vážna šifra, ktorá spĺňa vojenské kritériá, vytvorená s očakávaním najzávažnejších aplikácií. Na základe aplikácií používaných ruskými bankami boli identifikované najmenej dve sady boxov GOST S. Tieto banky musia viesť tajnú komunikáciu so stovkami pobočiek a chrániť miliardy dolárov pred podvodnými krádežami.

GOST je bloková šifra s jednoduchou Feistelovou štruktúrou, s veľkosťou bloku 64 bitov, 256-bitovým kľúčom a 32 kolami. Každé kolo obsahuje modulo 2^32 kľúčovaný prídavok, sadu ôsmich 4-bitových S-boxov a jednoduchú 11-bitovú rotáciu. Funkciou GOST je schopnosť tajne ukladať S-boxy, ktoré môžu byť reprezentované ako druhý kľúč, ktorý zvyšuje efektívny kľúčový materiál na 610 bitov. Jedna sada S-boxov bola publikovaná v roku 1994 ako súčasť špecifikácie hashovacej funkcie GOST-R 34.11-94 a podľa Schneiera ju používala Centrálna banka Ruskej federácie. Taktiež vstúpil do štandardu RFC4357 v časti „id-GostR3411-94-CryptoProParamSet“. Na konci Schneierovej knihy (v poradí S-box) sa vyskytla chyba v zdrojových kódoch. Najpresnejšiu referenčnú implementáciu pôvodného ruského pôvodu teraz nájdete v knižnici OpenSSL. Ak sa niekde používajú tajné S-boxy, možno ich extrahovať zo softvérových implementácií az mikroobvodov, v skutočnosti boli publikované zodpovedajúce práce.

GOST je vážnym konkurentom

Okrem veľmi veľkej veľkosti kľúča má GOST výrazne nižšie náklady na vykonanie ako AES a iné podobné šifrovacie systémy. V skutočnosti to stojí oveľa menej ako AES, ktoré vyžaduje štyrikrát toľko hardvérových logických brán pre oveľa nižšie nároky na bezpečnosť.

Nie je prekvapením, že GOST sa stal internetovým štandardom, najmä je súčasťou mnohých krypto knižníc, ako sú OpenSSL a Crypto++, a je čoraz obľúbenejší mimo krajiny svojho pôvodu. V roku 2010 bol GOST predložený na štandardizáciu ISO ako celosvetový kódovací štandard. Extrémne malému počtu algoritmov sa podarilo stať sa medzinárodnými štandardmi. ISO/IEC 18033-3:2010 popisuje nasledujúce algoritmy: štyri 64-bitové šifry – TDEA, MISTY1, CAST-128, HIGHT – a tri 128-bitové šifry – AES, Camellia, SEED. GOST sa navrhuje pridať k rovnakej norme ISO/IEC 18033-3.

Prvýkrát v histórii priemyselnej štandardizácie máme do činenia s takýmto konkurenčným algoritmom z hľadiska optimality medzi úrovňou nákladov a bezpečnosti. GOST má za sebou 20 rokov pokusov o kryptoanalýzu a až donedávna bola jeho bezpečnosť na vojenskej úrovni nespochybniteľná.

Ako sa autor nedávno dozvedel zo súkromnej korešpondencie, väčšina krajín hlasovala proti GOST v hlasovaní ISO v Singapure, avšak výsledky tohto hlasovania sa budú ešte posudzovať na plenárnom zasadnutí ISO SC27, takže GOST je stále v procese štandardizácie na čas vydania tohto diela.

Názory odborníkov na GOST

Nič z dostupných informácií a literatúry o GOST nedáva dôvod domnievať sa, že šifra môže byť neistá. Naopak, veľká veľkosť kľúča a veľké množstvo nábojov robí GOST na prvý pohľad vhodným na desaťročia používania.

Každý, kto pozná Moorov zákon, chápe, že teoreticky zostanú 256-bitové kľúče bezpečné najmenej 200 rokov. GOST bol rozsiahlo skúmaný poprednými odborníkmi v kryptografii, známymi v oblasti analýzy blokových šifier, ako sú Schneier, Biryukov, Dankelman, Wagner, mnohými austrálskymi, japonskými a ruskými vedcami, odborníkmi na kryptografiu z ISO a všetci vedci vyjadrili, že všetko vyzerá tak, že môže byť alebo by mal byť v bezpečí. Hoci je všeobecne známe, že samotná štruktúra GOST je extrémne slabá, napríklad v porovnaní s DES, difúzia nie je taká dobrá, vždy to však bolo spôsobené tým, že to musí byť kompenzované veľkým počtom kol (32), ako aj dodatočnú nelinearitu a difúziu poskytovanú modulo adíciou.

Biryukov a Wagner napísali: "Veľký počet nábojov (32) a dobre preštudovaná Feistelova konštrukcia v kombinácii s postupnými Shannonovými substitúciami-permutáciami poskytujú solídny základ bezpečnosti GOST." V tom istom diele čítame: „po značnej investícii času a úsilia sa nedosiahol žiadny pokrok v kryptoanalýze štandardu v otvorenej literatúre“. Neexistovali teda žiadne významné útoky, ktoré by umožnili dešifrovanie alebo obnovenie kľúča v realistickom scenári, kde sa GOST používa pri šifrovaní s mnohými rôznymi náhodnými kľúčmi. Naproti tomu je veľa prác o útokoch na slabé kľúče v GOST, útokoch so súvisiacimi kľúčmi, útokoch na obnovu tajných S-boxov. Na Crypto-2008 bol predstavený hack hašovacej funkcie založený na tejto šifre. Pri všetkých útokoch má útočník oveľa väčšiu mieru slobody, než je mu zvyčajne umožnené. V tradičných šifrovacích aplikáciách používajúcich náhodne vybrané kľúče sa doteraz nenašli žiadne vážne kryptografické útoky na GOST, čo bolo v roku 2010 vyjadrené záverečnou frázou: „napriek značnému úsiliu kryptoanalytikov za posledných 20 rokov GOST stále nie je zlomený“ ( Axel Poschmann, San Ling a Huaxiong Wang: 256-bitové štandardizované kryptomeny pre 650 GE GOST prehodnotené, v CHES 2010, LNCS 6225, s. 219-233, 2010).

Lineárna a diferenciálna analýza GOST

V Schneierovej známej knihe čítame: "Proti diferenciálnej a lineárnej kryptoanalýze je GOST pravdepodobne robustnejší ako DES." Hlavné hodnotenie bezpečnosti GOST poskytli v roku 2000 Gabidulin a kol.. Ich výsledky sú veľmi pôsobivé: s úrovňou bezpečnosti 2^256 stačí päť kôl na ochranu GOST pred lineárnou kryptoanalýzou. Navyše aj pri výmene S-boxov za identické a jedinej nelineárnej operácii šifry - sčítaní modulo 2 ^ 32 - je šifra po 6 kolách z 32 stále odolná voči lineárnej kryptoanalýze. Diferenciálna kryptanalýza GOST vyzerá relatívne jednoduchšie a priťahuje viac pozornosti. Pre úroveň 2^128 výskumníci bezpečnosti (Vitalij V. Shorin, Vadim V. Jelezniakov a Ernst M. Gabidulin: Lineárna a diferenciálna kryptoanalýza ruského GOST, Preprint odovzdaná Elsevierovi Preprint, 4. apríla 2001) predpokladali dostatočnú vytrvalosť na úrovni 7 kôl. Podľa nich je hacknutie GOST vo viac ako piatich kolách „extrémne ťažké“. Okrem toho dvaja japonskí vedci ukázali, že klasický priamy diferenciálny útok s jednou diferenciálnou charakteristikou má extrémne nízku pravdepodobnosť, že prejde veľkým počtom kôl. Na základe skutočnosti, že sme študovali dostatočne „dobrú“ iteratívnu diferenciálnu charakteristiku pre obmedzený počet kôl (ktorá sama osebe má pravdepodobnosť prechodu nie lepšiu ako 2 – 11,4 na kolo), hodnoty sady zodpovedajúcich kľúčov sú menšie. ako polovica. Pre celý GOST bude takýto útok s jedinou charakteristikou fungovať iba so zanedbateľne malou časťou kľúčov rádovo 2-62 (a dokonca aj v tejto malej časti bude mať pravdepodobnosť, že neprejde viac ako 2 -360).

Sofistikovanejšie útoky zahŕňajú viacero rozdielov podľa určitých vzorov, ako napríklad použitie samostatných S-boxov, ktoré majú nulové rozdiely, zatiaľ čo ostatné bity majú nenulové. Hovoríme o diskriminačných útokoch na základe zlých difúznych vlastností GOST. Najlepší z týchto útokov funguje proti 17 kolám GOST, závisí od kľúča a sám o sebe má extrémne slabé rozlíšenie od náhodných údajov, aby sa dal nejakým spôsobom použiť na získanie informácií o kľúči.

Útoky kĺzaním a odrazom

Podľa Biryukova a Wagnera je štruktúra GOST, vrátane opačného poradia podkľúčov v posledných kolách, odolná voči útokom pošmyknutia (tzv. „slide attack“). Vzhľadom na prítomnosť veľkého množstva sebapodobnosti v šifre to však umožňuje vykonávanie inverzných útokov na kombinácie pevných bodov a „odrazových“ vlastností (takzvané „reflexné útoky“) pre určité slabé kľúče. . Zložitosť tohto útoku je 2^192 a 2^32 zodpovedajúcich otvorených textov.

Najnovšie výsledky

Nové útoky využívajú aj odraz a vlastne cracknutý GOST, ktorý bol prezentovaný na konferencii FSE 2011. Tieto útoky objavil nezávisle aj autor tejto práce. Útok vyžaduje 2^132 bajtov pamäte, čo je v skutočnosti horšie ako pomalšie útoky s menšími nárokmi na pamäť.

Mnoho nových útokov na vlastnú podobnosť funguje proti všetkým kľúčom GOST a umožňuje prelomiť celý GOST s 256-bitovým kľúčom, a to nielen pre slabé kľúče, ako tomu bolo predtým. Všetky tieto útoky vyžadujú podstatne menej pamäte a sú výrazne rýchlejšie.

Tieto nové útoky možno považovať za príklady novej všeobecnej paradigmy kryptoanalýzy blokovej šifry nazývanej „redukcia algebraickej zložitosti“ so zovšeobecnením týchto útokov na mnohé špeciálne prípady útokov so známymi pevnými bodmi, sklzmi, involúciami a cyklami. Je dôležité, aby medzi rodinou všetkých týchto útokov boli tie, ktoré umožňujú kryptoanalýzu GOST bez akýchkoľvek odrazov a bez akýchkoľvek symetrických bodov, ktoré sa objavujú v priebehu výpočtov. Jedným príkladom je jednoduchý hackerský útok GOST bez odrazov v tomto dokumente.

Algebraická kryptoanalýza a útoky s nízkou zložitosťou údajov na šifry so zníženým okrúhlym počtom

Algebraické útoky na blokové a prúdové šifry možno reprezentovať ako problém riešenia veľkého systému booleovských algebraických rovníc, ktorý sleduje geometriu a štruktúru konkrétnej kryptografickej schémy. Samotná myšlienka sa vracia k Shannonovi. V praxi bola zavedená pre DES (prvýkrát ju predstavil autor tejto práce) ako metóda formálneho kódovania a dokáže rozlúsknuť 6 kôl len na jednom známom otvorenom texte. Manipulácia s rovnicami je založená na XL algoritmoch, Gröbnerových bázach, ElimLin metóde, SAT riešiteľoch.

V praxi boli algebraické útoky implementované proti veľmi malému počtu kôl blokových šifier, ale už viedli k prelomeniu prúdových šifier a úspechy sú aj v prelomení ultraľahkých šifier pre mikrohardvér. Kvôli ťažkostiam s veľkosťou pamäte a odhadmi výpočtových nákladov sú kombinované s inými útokmi.

Ako hacknúť GOST?

Algebraický útok na celý GOST je podrobnejšie uvedený v posudzovanej publikácii. V predchádzajúcej práci autor už načrtol 20 algebraických útokov na GOST a v blízkej budúcnosti ich očakáva veľké množstvo. Útok navrhnutý v tomto dokumente nie je najlepší z nich, ale otvára jednoduchý (aspoň pre pochopenie pre kryptografov) cestu pre ďalší vývoj na vytvorenie špecifickej metodológie na prelomenie GOST.

Praktický výsledok je zatiaľ skromný: 2^64 známych otvorených textov a 2^64 pamäte na ukladanie párov otvoreného textu/šifrovaného textu umožňujú prelomiť GOST o 2^8 rýchlejšie ako obyčajná hrubá sila. Ale z hľadiska kryptoanalýzy je tvrdenie, že „GOST bol hacknutý“, úplne spravodlivé.

závery

GOST je navrhnutý tak, aby poskytoval vojenskú úroveň bezpečnosti na 200 rokov dopredu. Väčšina popredných odborníkov, ktorí študovali GOST, dospela k dohode, že "napriek značnému kryptanalytickému úsiliu počas 20 rokov, GOST ešte nebol prelomený." V roku 2010 bol GOST povýšený na ISO 18033 ako svetový štandard šifrovania.

Základ myšlienok o algebraickej kryptoanalýze vznikol pred viac ako 60 rokmi. Ale až za posledných 10 rokov boli vyvinuté efektívne softvérové ​​nástroje na (čiastočné) riešenie mnohých NP-úplných problémov. Bolo prelomených niekoľko prúdových šifier. Touto metódou bola prelomená iba jedna bloková šifra, samotný slabý KeeLoq. V tomto diele autor lúšti dôležitú, skutočne používanú GOST šifru. Poznamenáva, že je to prvýkrát v histórii, čo bola štandardizovaná štátna šifra prelomená algebraickou kryptoanalýzou.

Jednoduchý útok „MITM s odrazom“ na GOST už bol prezentovaný na konferencii FSE 2011. V práci, o ktorej sa uvažuje v tomto článku, je uvedený ďalší útok len na ilustráciu skutočnosti, koľko útokov na GOST sa už objavilo, mnohé z nich ktoré sú rýchlejšie a samotný algebraický útok si vyžaduje oveľa menej pamäte a otvára protivníkovi takmer nevyčerpateľný priestor možností zaútočiť na šifru mnohými rôznymi spôsobmi. Aj v tejto práci je ukázané, že na hackovanie nie je potrebné používať vlastnosť odrazu.

Autor tvrdí, že je zrejmé, že GOST má vážne nedostatky a teraz neposkytuje úroveň odolnosti požadovanú ISO. Súbor útokov na GOST je prezentovaný ako súčasť potvrdenia paradigmy znižovania algebraickej zložitosti.

Na záver si výskumník osobitne všíma niektoré skutočnosti, ktoré ešte nie sú čitateľovi dostupné, no výskumníkovi sú známe a ktoré sú dôležité počas procesu štandardizácie ISO. Tento útok nie je len „certifikačným“ útokom na GOST, ktorý je rýchlejší ako hrubá sila. V skutočnosti by teraz štandardizácia GOST bola mimoriadne nebezpečná a nezodpovedná. Je to tak preto, lebo niektoré z útokov sú v praxi uskutočniteľné. Niektoré kľúče GOST možno dokonca v praxi dešifrovať, či už ide o slabé kľúče alebo kľúče z konkrétnych skutočných aplikácií GOST. V predchádzajúcej práci autor podrobne zvažuje prípady možnosti praktických útokov. Je príznačné, že „je to prvýkrát v histórii, čo bola matematickým útokom prelomená vážna, štandardizovaná bloková šifra, navrhnutá na ochranu tajomstiev vojenskej úrovne a navrhnutá na ochranu štátnych tajných dokumentov pre vlády, veľké banky a iné organizácie. "

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ý šifrovací kľúč 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 prekrytí kľúča sa podblok N1 rozdelí na 8 častí po 4 bitoch, pričom hodnota každého z nich sa nahradí podľa náhradnej tabuľky 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, teda "1111" (0 a 4, 1 a 11, 2 a 2 ...).

Algoritmus definovaný 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 rovnakých blokov pôvodného (obyčajného) textu, zodpovedajúce bloky šifrovaného textu budú tiež rovnaké, čo poskytuje ďalšie užitočné informácie pre kryptoanalytika, ktorý sa pokúša otvoriť š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 64-bitovej šifry gama. Š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 rozvinul 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 š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 šifrovania predchádzajúceho bloku otvoreného textu (obrázok 2). Prvý blok v tomto režime sa generuje úplne rovnakým spôsobom ako predchádzajúci.

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 redukovanej jednoduchej náhrady (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 tj polovicu obsahu registrov To je dostatočné, pretože ako každý kontrolný súčet je predpona imitácie primárne určená 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.

Pri výmene informácií slúži imitačná predpona 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. Napodobenina predpony 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 je považovaný 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ýhodou GOST 28147-89 je 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.

Tento algoritmus je povinný používať ako šifrovací algoritmus v štátnych organizáciách Ruskej federácie a mnohých 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 tabuliek (Substitution box, S-box) sa často používajú v moderných šifrovacích algoritmoch, takže stojí za to zvážiť ich podrobnejšie.

Náhrada tabuľky sa využíva týmto spôsobom: na vstup sa privádza 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 nahrádza 4, 1 sa nahrádza 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 zvážiť ich 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.

Na 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 sa generuje úplne 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 modifikáciou ú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 znovu 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ú v štandarde pevne definované, 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í, tj 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©, práca doslovne opakuje časť o kryptoanalýze algoritmu GOST 28147-89, publikovanú v roku 2000 známou prácou (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ú slabé miesta 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ý.

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ý 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 - výmena. Ú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 bitov: 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é.

Druhá operácia je ľavý cyklický posun 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 (ochrany 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é iba vtedy, ak existuje synchronizačná správa, ktorá nie je tajným prvkom šifry a možno ju uložiť do pamäte počítača alebo preniesť cez komunikačné kanály spolu so zašifrovanými údajmi.

Gama režim spätnej väzby

Režim škálovanie so spätnou väzbou je veľmi podobný režimu gama. Rovnako ako v gama režime 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 zaš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 vkladanie Ip), ktorý sa generuje 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 imitovaného vloženia.

64-bitové číslo získané po 16 cykloch prevádzky 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 údajov 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é.