Algoritmus GOST 28147 89 je. Domáce štandard šifrovania údajov

V našej krajine existuje jednotný algoritmus na kryptografickú reprezentáciu údajov pre systémy spracovania informácií v počítačových sieťach, jednotlivé počítačové systémy a počítače, ktorý je určený tzv. GOST 28147-89.

Tento algoritmus konverzie kryptografických údajov je 64-bitový blokový algoritmus s 256-bitovým kľúčom, určený na implementáciu hardvéru a softvéru, spĺňa kryptografické požiadavky a nekladie obmedzenia na stupeň utajenia chránených informácií.

Pri popise algoritmu sa používa nasledujúci zápis:

L a R sú bitové sekvencie;
LR je zreťazenie sekvencií L a R, v ktorom bity sekvencie R nasledujú po bitoch sekvencie L;
(+) - bitové sčítanie modulo 2 (operácia "exkluzívne OR");
[+] - sčítanie 32-bitových čísel modulo 2 32 ;
(+) - sčítanie 32-bitových čísel modulo 2 32 -1.

Čísla sa spočítavajú podľa nasledujúceho pravidla:

A[+]B=A+B, ak A+B< 2 32 ,
A [+] B = A + B - 2 32, ak A + B >= 2 32 . A (+) B = A + B, ak A + B< 2^32 - 1, A {+} B = A + B - (2^32 - 1), если A + B >= 2^32 - 1.

Algoritmus poskytuje štyri režimy činnosti:

V každom prípade sa na šifrovanie údajov používa 256-bitový kľúč K, ktorý je reprezentovaný ako osem 32-bitových podkľúčov K i:

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

Dešifrovanie sa vykonáva pomocou rovnakého kľúča ako šifrovanie, ale tento proces je opakom procesu šifrovania údajov.

Jednoduchý režim výmeny

Prvý a najjednoduchší režim - nahradenie. Údaje, ktoré sa majú zašifrovať, sú rozdelené do 64-bitových blokov. Šifrovacia procedúra pre otvorený dátový blok To zahŕňa 32 cyklov (j=1...32).

Blok To je rozdelený na dve sekvencie po 32 bitoch: B(0)A(0), kde B(0) sú ľavé alebo najvyššie platné bity, A(0) sú pravé alebo najnižšie platné bity.

Tieto sekvencie sa vložia do jednotiek N 1 a N 2 pred začiatkom prvého šifrovacieho cyklu.

Prvý cyklus (j=1) šifrovacej procedúry pre 64-bitový dátový blok je opísaný nasledujúcimi vzorcami:

Tu i označuje číslo iterácie (i = 1, 2,..., 32).

Funkcia f sa nazýva šifrovacia funkcia. Jeho argumentom je súčet modulo 2 32 čísla A(i) získaného v predchádzajúcom kroku iterácie a číslo X(j) kľúča (rozmer každého z týchto čísel je 32 číslic).

Funkcia šifrovania zahŕňa dve operácie s výsledným 32-bitovým súčtom. Prvá operácia sa nazýva substitúcia K. Substitučný blok K pozostáva z 8 substitučných uzlov K(1) ... K(8) s pamäťou každého 64 bitov. 32-bitový vektor prichádzajúci do substitučného bloku je rozdelený na 8 po sebe idúcich 4-bitových vektorov, z ktorých každý je konvertovaný na 4-bitový vektor zodpovedajúcim náhradným uzlom, ktorým je tabuľka 16 celých čísel v rozsahu 0.. .15.

Vstupný vektor určuje adresu riadku v tabuľke, ktorého číslo je výstupný vektor. 4-bitové výstupné vektory sú potom postupne kombinované do 32-bitového vektora. Tabuľka substitučných blokov K obsahuje kľúčové prvky spoločné pre počítačovú sieť a zriedkavo menené.

Druhou operáciou je cyklický posun doľava 32-bitového vektora získaného dosadením K. 64-bitový šifrovaný dátový blok Tw je reprezentovaný ako Tw =A(32)B(32).

Zvyšok otvorených dátových blokov v režime jednoduchej výmeny je zašifrovaný rovnakým spôsobom.

Majte na pamäti, že režim jednoduchej výmeny možno na šifrovanie údajov použiť iba v obmedzených prípadoch. Tieto prípady zahŕňajú vygenerovanie kľúča a jeho zašifrovanie so zabezpečením imitačnej ochrany (ochrana pred uložením falošných údajov) pre prenos cez komunikačné kanály alebo uloženie do pamäte počítača.

Režim gama

Otvorené dáta, rozdelené do 64-bitových blokov T(i) (i=1, 2,..., m, kde m je určené množstvom zašifrovaných dát), sú šifrované v gama režime bitovým sčítaním modulo 2 s šifra gama Гw, ktorá sa vyrába v blokoch po 64 bitoch, t.j. Гw = (Г(1),Г(2),...,Г(i),...,Г(m)).

Rovnica šifrovania údajov v režime gama môže byť znázornená takto:

W(i) = A (Y(i-1) [+] C2, Z(i-1) (+) C1) (+) T(i) = G(i) (+) T(i).
Tu W(i) je 64-bitový blok šifrovaného textu,
A - funkcia šifrovania v režime jednoduchého nahradenia (argumenty tejto funkcie sú dve 32-bitové čísla),
C1 a C2 - konštanty špecifikované v GOST 28147-89,
Y(i) a Z(i) sú množstvá, ktoré sa určujú iteračne, keď sa gama tvorí takto:
(Y(0), Z(0)) = A(S), kde S je 64-bitová binárna sekvencia (synchronizačná správa);
(Y(i), Z(i)) = (Y(i-1) [+] C2, Z(i-1) (+) C1) pre i = 1,2,...,m.

Dešifrovanie údajov je možné len vtedy, ak existuje synchronizačná správa, ktorá nie je tajným prvkom šifry a môže byť uložená v pamäti počítača alebo prenášaná komunikačnými kanálmi spolu so zašifrovanými údajmi.

Gama režim spätnej väzby

Režim škálovanie s spätná väzba veľmi podobný gama režimu. Rovnako ako v režime gama sú otvorené dáta rozdelené do 64-bitových blokov T(i) (i=1, 2,..., m , kde m je určené množstvom zašifrovaných dát), šifrované bitovým sčítaním modulo 2 so šifrou gama Gsh, ktorá sa vyrába v blokoch po 64 bitoch:

Гw = (Г(1),Г(2),...,Г(i),...,Г(m)).

Počet bitov v bloku T(m) môže byť menší ako 64, pričom časť šifry gama z bloku G(m), ktorá sa nepoužíva na šifrovanie, sa zahodí.

Rovnicu šifrovania údajov v režime gama so spätnou väzbou možno znázorniť takto:


Tu W(i) je 64-bitový blok šifrovaného textu,
A - funkcia šifrovania v režime jednoduchej výmeny. Argumentom funkcie v prvom kroku iteratívneho algoritmu je 64-bitová synchronizačná správa a vo všetkých nasledujúcich krokoch predchádzajúci blok šifrovaných údajov W(i-1).

Imitácia vložiek

Vývojový proces imitácie stohov je jednotný pre ktorýkoľvek z režimov šifrovania údajov.

Imitačné vkladanie je blok p bitov (imitácia vkladania Ip), ktorý sa vytvára buď pred šifrovaním celej správy, alebo súbežne so šifrovaním blok po bloku. Prvé bloky otvorených dát, ktoré sa podieľajú na vývoji simulácie vkladania, môžu obsahovať servisné informácie (napríklad časť adresy, čas, synchronizačná správa) a nemusia byť šifrované. Hodnota parametra p (počet binárnych číslic v simulovanej vložke) je určená kryptografickými požiadavkami, berúc do úvahy skutočnosť, že pravdepodobnosť falošnej interferencie je 1/2^p.

Na získanie imitácie vloženia sú otvorené dáta reprezentované ako 64-bitové bloky T(i) (i = 1, 2,..., m, kde m je určené množstvom zašifrovaných dát). Prvý blok otvorených dát T(1) je podrobený transformácii zodpovedajúcej prvým 16 cyklom šifrovacieho algoritmu v režime jednoduchého nahradzovania. Okrem toho sa kľúč použitý na šifrovanie údajov používa ako kľúč na generovanie vloženia imitácie.

64-bitové číslo získané po 16 pracovných cykloch sa sčíta modulo 2 s druhým otvoreným dátovým blokom T(2). Výsledok súčtu je opäť podrobený transformácii zodpovedajúcej prvým 16 cyklom šifrovacieho algoritmu v režime jednoduchého nahradzovania. Výsledné 64-bitové číslo sa pridá modulo 2 k tretiemu bloku otvorených dát T(3) atď. Posledný blok T(m), ak je to potrebné, doplnený na celý 64-bitový blok s nulami, sa sčíta modulo 2 s výsledkom práce v kroku m-1, po ktorom sa zašifruje v režime jednoduchého nahradzovania cez prvý 16 cyklov algoritmu. Z prijatého 64-bitového čísla sa vyberie segment Ip s dĺžkou p bitov.

Imitácia vložky Ip sa prenáša cez komunikačný kanál alebo do pamäte počítača po zašifrovaných dátach. Prichádzajúce zašifrované dáta sa dešifrujú a z prijatých blokov otvorených dát T(i) sa vygeneruje imitácia vložky Ip, ktorá sa potom porovná s imitáciou vložky IR prijatej z komunikačného kanála alebo z pamäte počítača. nezhodujú, všetky dešifrované údaje sa považujú za nepravdivé.

Stručný popis šifry

GOST 28147-89 - Sovietsky a ruský štandard pre symetrické šifrovanie, zavedený v roku 1990, je tiež štandardom CIS. Celé meno - „GOST 28147-89 Systémy spracovania informácií. Kryptografická ochrana. Algoritmus kryptografickej transformácie“. Algoritmus blokovej šifry. Pri použití metódy šifrovania s gama môže vykonávať funkcie algoritmu prúdovej šifry.

GOST 28147-89 je bloková šifra s 256-bitovým kľúčom a 32 cyklami konverzie, pracujúca so 64-bitovými blokmi. Základom šifrovacieho algoritmu je sieť Feistel. Základným režimom šifrovania v súlade s GOST 28147-89 je režim jednoduchého nahradzovania (definujú sa aj zložitejšie režimy - gama, gama so spätnou väzbou a imitáciou vkladania).

Ako funguje algoritmus

Algoritmus sa zásadne nelíši od DES. Obsahuje aj šifrovacie cykly (je ich 32) podľa Feistelovej schémy (obr. 2.9.).

Ryža. 2.9. Šifrovacie kolá algoritmu GOST 28147-89.

Na generovanie podkľúčov je pôvodný 256-bitový kľúč rozdelený do ôsmich 32-bitových blokov: k 1 …k 8 . Kľúče k 9 ... k 24 sú cyklickým opakovaním kľúčov k 1 ... k 8 (číslované od najmenej významných bitov po najvýznamnejšie). Klávesy k 25 ...k 32 sú klávesy k 1 ...k 8 v opačnom poradí.

Po dokončení všetkých 32 kôl algoritmu sa bloky A 33 a B 33 zlepia (všimnite si, že A 33 sa stane najvýznamnejším bitom a B 33 sa stane najmenej významným bitom) - výsledok je výsledkom algoritmu.

Funkcia f(A i ,K i) sa vypočíta takto: A i a K i sa pripočítajú modulo 2 32 , potom sa výsledok rozdelí na osem 4-bitových podsekvencií, z ktorých každá sa privedie na vlastný vstup uzol substitučnej tabuľky(vo vzostupnom poradí bitovej priority), nazývané nižšie S-blok. Celkový počet S-blokov GOST je osem, t.j. rovnaký ako počet podsekvencií. Každý S-blok predstavuje permutáciu čísel od 0 do 15. Prvá 4-bitová podsekvencia pripadá na vstup prvého S-boxu, druhá - na vstup druhého atď. Výstupy všetkých ôsmich S-boxov sú spojené do 32-bitové slovo, potom sa celé slovo cyklicky posúva doľava (k najvýznamnejším bitom) o 11 bitov. Všetkých osem S-boxov môže byť odlišných. V skutočnosti môžu byť dodatočným kľúčovým materiálom, ale častejšie sú parametrom schémy, ktorý je spoločný pre určitú skupinu používateľov. Z textu normy vyplýva, že dodávka náplne náhradných jednotiek (S-blokov) sa uskutočňuje predpísaným spôsobom, t.j. vývojár algoritmov. Komunita ruských vývojárov CIPF sa dohodla na náhradných uzloch používaných na internete.

Dešifrovanie sa vykonáva rovnakým spôsobom ako šifrovanie, ale poradie podkľúčov k i je obrátené.

Prevádzkové režimy algoritmu GOST 28147-89

Algoritmus GOST 28147-89 má štyri režimy prevádzky.

1. Režimjednoduchá výmena akceptuje ako vstup dáta, ktorých veľkosť je násobkom 64 bitov. Výsledkom šifrovania je vstupný text, konvertovaný v blokoch 64 bitov v prípade šifrovania s cyklom "32-3" a v prípade dešifrovania - s cyklom "32-P".

2. Režimškálovanie akceptuje dáta akejkoľvek veľkosti ako vstup, ako aj ďalší 64-bitový parameter - synchronizovať správu. Počas prevádzky sa synchronizačná správa konvertuje v cykle "32-Z", výsledok je rozdelený na dve časti. K prvej časti sa pripočíta modulo 2 32 s konštantnou hodnotou 1010101 16 . Ak sa druhá časť rovná 2 32 -1, potom sa jej hodnota nemení, inak sa pripočíta modulo 2 32 -1 s konštantnou hodnotou 1010104 16 . Hodnota získaná spojením oboch konvertovaných častí, nazývaná šifra gama, vstupuje do slučky „32-3“, jej výsledkom je bitovo pridané modulo 2 so 64-bitovým blokom vstupných dát. Ak je táto hodnota menšia ako 64 bitov, extra bity prijatej hodnoty sa zahodia. Výsledná hodnota sa odošle na výstup. Ak stále prichádzajú údaje, akcia sa zopakuje: blok zložený z 32-bitových častí sa prevedie po častiach atď.

3. Režimškálovanie so spätnou väzbou tiež akceptuje dáta ľubovoľnej veľkosti a synchronizačnú správu ako vstup. Blok vstupných dát je bitovo pridaný modulo 2 s výsledkom transformácie v cykle "32-3" synchronizačnej správy. Výsledná hodnota sa odošle na výstup. Hodnota synchronizačnej správy je v prípade šifrovania nahradená výstupným blokom a v prípade dešifrovania - vstupom, t.j. šifrovaná. Ak je posledný blok prichádzajúcich dát menší ako 64 bitov, potom sa extra bity gama (výstup slučky "32-3") zahodia. Ak stále existujú prichádzajúce údaje, akcia sa zopakuje: gama šifra sa vytvorí z výsledku šifrovania nahradenej hodnoty atď.

4. Výrobný režimimitácie vložiek berie vstupné údaje, ktoré majú veľkosť aspoň dvoch úplných 64-bitových blokov, a vracia 64-bitový blok údajov nazývaný zosobnenie vloženia. Dočasná 64-bitová hodnota je nastavená na 0, potom, kým sú k dispozícii vstupné dáta, sa bitovo pripočíta modulo 2 s výsledkom vykonania cyklu „16-3“, ktorého vstupom je blok vstupných dát. . Po ukončení zadávania sa ako výsledok vráti dočasná hodnota.

Kryptoanalýza šifry

Šifra GOST 28147-89 používa 256-bitový kľúč a veľkosť priestoru pre kľúč je 2256 . Žiadny počítač na všeobecné použitie, ktorý v súčasnosti existuje, nedokáže uhádnuť kľúč za menej ako mnoho stoviek rokov. Ruská norma GOST 28147-89 bola navrhnutá s veľkou rezervou a o mnoho rádov prevyšuje americkú normu DES so svojou reálnou veľkosťou kľúča 56 bitov a objemom priestoru kľúča iba 2 56 .

Existujú aj útoky na celoobvodový GOST 28147-89 bez akýchkoľvek úprav. Jeden z prvých otvorené diela, v ktorej bola vykonaná analýza algoritmu, využíva slabé stránky postupu rozšírenia kľúča množstva známych šifrovacích algoritmov. Najmä úplný algoritmus GOST 28147-89 možno prelomiť pomocou diferenciálnej kryptoanalýzy na prepojených kľúčoch, ale iba ak sa použijú slabé substitučné tabuľky. 24-kolová verzia algoritmu (v ktorej chýba prvých 8 kôl) sa otvára rovnakým spôsobom pre akékoľvek tabuľky striedania, avšak silné tabuľky striedania robia takýto útok úplne nepraktickým.

Domáci vedci A.G. Rostovtsev a E.B. Makhovenko v roku 2001 navrhol zásadne novú metódu kryptoanalýzy vytvorením objektívnej funkcie zo známeho otvoreného textu, ktorému zodpovedá šifrový text a požadovanej hodnoty kľúča a nájdenie jeho extrému zodpovedajúceho skutočnej hodnote kľúča. Našli tiež veľkú triedu slabých kľúčov algoritmu GOST 28147-89, ktoré vám umožňujú otvoriť algoritmus iba pomocou 4 vybraných otvorených textov a ich zodpovedajúcich šifrových textov s pomerne nízkou zložitosťou.

V roku 2004 skupina expertov z Kórey navrhla útok, pomocou ktorého je možné pomocou diferenciálnej kryptoanalýzy na pridružených kľúčoch získať 12-bitový tajný kľúč s pravdepodobnosťou 91,7 %. Útok si vyžaduje 235 vybraných otvorených textov a 236 šifrovacích operácií. Ako vidíte, tento útok je pre skutočné otvorenie algoritmu prakticky zbytočný.

Tabuľka suplovania je dlhodobý kľúčový prvok, to znamená, že platí oveľa viac dlhý termín než jeden kľúč. Predpokladá sa, že je spoločný pre všetky šifrovacie uzly v rámci jedného systému kryptografickej ochrany. Kvalita tejto tabuľky určuje kvalitu šifry. Pri "silnej" substitučnej tabuľke sila šifry neklesne pod určitú prijateľnú hranicu, aj keď je zverejnená. Naopak, použitie „slabej“ tabuľky môže znížiť silu šifry na neprijateľne nízku hranicu. Žiadne informácie o kvalite tabuľky striedaní v otvorené tesnenie Rusko nebolo zverejnené, ale o existencii „slabých“ tabuliek niet pochýb – príkladom je „triviálna“ substitučná tabuľka, podľa ktorej sa každá hodnota nahrádza sama sebou. V mnohých prácach sa mylne dospelo k záveru, že tajné substitučné tabuľky algoritmu GOST 28147-89 môžu byť súčasťou kľúča a zvýšiť jeho efektívnu dĺžku (čo nie je podstatné, pretože algoritmus má veľmi veľký 256-bitový kľúč). ).

Tento algoritmus je povinný na použitie ako šifrovací algoritmus vládne organizácie RF a množstvo komerčných.

Popis algoritmu

Schéma algoritmu je znázornená na obr. 3.1. Ako vidíte, schéma tohto algoritmu je pomerne jednoduchá, čo jednoznačne zjednodušuje jeho softvérovú alebo hardvérovú implementáciu.

Algoritmus GOST 28147-89 šifruje informácie v blokoch po 64 bitoch, ktoré sú rozdelené do dvoch podblokov po 32 bitoch (N1 a N2). Podblok N1 je spracovaný určitým spôsobom, po ktorom je pridaná jeho hodnota

s hodnotou podbloku N2 (sčítanie sa vykoná modulo 2), potom sa podbloky vymenia. Takáto transformácia sa vykonáva pre určitý počet kôl: 16 alebo 32, v závislosti od režimu činnosti algoritmu (opísaného nižšie). V každom kole sa vykonávajú tieto operácie:

1. Prekrytie kľúča. Obsah podbloku /VI je pridaný modulo 2 32 do časti Kx kľúča.

Šifrovací kľúč algoritmu GOST 28147-89 má rozmer 256 bitov a Kx je jeho 32-bitová časť, t. j. 256-bitový šifrovací kľúč je reprezentovaný ako zreťazenie 32-bitových podkľúčov (obr. 3.2):

SH ATI, AG2, Yu, AG4, K5, Kb, K7.

Počas procesu šifrovania sa používa jeden z týchto podkľúčov v závislosti od čísla kola a režimu činnosti algoritmu.

Ryža. 3.1. Schéma algoritmu GOST 28147-

Ryža. 3.2. Šifrovací kľúč algoritmu GOST 28147-89

2. Náhrada tabuľky. Po prekrytí kľúča sa podblok /VI rozdelí na 8 častí po 4 bitoch, pričom hodnota každého z nich sa individuálne nahradí podľa náhradnej tabuľky pre túto časť podbloku. Náhrady stolov (Substitution box, S-box) sa často používajú v moderné algoritmyšifrovanie, preto stojí za to ich podrobnejšie zvážiť.

Nahradenie tabuľky sa využíva týmto spôsobom: na vstup sa privedie dátový blok určitého rozmeru (v tomto prípade 4-bitový), ktorého číselné znázornenie určuje číslo výstupnej hodnoty. Napríklad máme S-box nasledujúceho tvaru:

4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1.

Na vstup nech príde 4-bitový blok „0100“, teda hodnota je 4. Výstupná hodnota bude podľa tabuľky 15, t.j. "1111" (0 sa nahradí 4, 1 sa nahradí 11, hodnota 2 sa nemení atď.).

Ako vidíte, schéma algoritmu je veľmi jednoduchá, čo znamená, že najväčšia záťaž pri šifrovaní údajov padá na náhradné tabuľky. Bohužiaľ, algoritmus má tú vlastnosť, že existujú „slabé“ substitučné tabuľky, pomocou ktorých je možné algoritmus odhaliť kryptanalytickými metódami. Medzi slabé patrí napríklad tabuľka, v ktorej sa výstup rovná vstupu:

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.

3. Bitový cyklický posun doľava o 11 bitov.

Režimy algoritmov

Algoritmus GOST 28147-89 má 4 režimy prevádzky:

□ jednoduchý režim výmeny;

□ gama režim;

P herný režim so spätnou väzbou;

□ spôsob výroby imitácie príloh.

Tieto režimy sa trochu líšia od všeobecne akceptovaných režimov (popísaných v časti 1.4), takže stojí za to ich zvážiť podrobnejšie.

Tieto režimy majú rôzne účely, ale používajú rovnakú transformáciu šifrovania opísanú vyššie.

Jednoduchý režim výmeny

V jednoduchom režime nahradenia sa jednoducho vykoná 32 kôl opísaných vyššie na zašifrovanie každého 64-bitového bloku informácií. 32-bitové podkľúče sa používajú v nasledujúcom poradí:

□ KO, Kl, K2, K3, K4, K5, Kb, AG7, KO, ATI atď. - v kolách 1 až 24;

□ K1, Kb, K5, K4, K3, K2, K\, KO - v kolách 25 až 32.

Dešifrovanie v režime jednoduchého nahradenia sa vykonáva presne rovnakým spôsobom, ale s mierne odlišnou postupnosťou použitia podkľúčov:

□ KO, K\, K2, KZ, K4, K5, Kb, KP - v 1. až 8. kole;

□ KP, Kb, K5, K4, K3, K2, K\, KO, K1, Kb atď. - v kolách 9 až 32.

Podobne ako v štandardnom režime ECB sa režim jednoduchej výmeny vzhľadom na samostatné šifrovanie blokov dôrazne neodporúča na šifrovanie skutočných údajov; mal by sa používať iba na šifrovanie iných šifrovacích kľúčov vo viackľúčových schémach.

Režim gama

V režime gama (obr. 3.3) sa každý blok otvoreného textu pridáva bit po bite modulo 2 do gama bloku šifry s veľkosťou 64 bitov. Šifra gama je špeciálna sekvencia, ktorá sa generuje pomocou transformácií opísaných vyššie takto:

1. V registroch N1 a N2 je zapísaná ich počiatočná náplň - 64-bitová hodnota, nazývaná "synchronizačná správa" (synchronizačná správa je v skutočnosti analógom inicializačného vektora v režimoch CBC, CFB a OFB ).

2. Obsah registrov /VI a N2 (v tomto prípade synchronizačné správy) je zašifrovaný v režime jednoduchej výmeny.

3. Obsah N1 sa sčíta modulo (2 32 - 1) s konštantou CI = 2 24 + 2 16 + 2 8 + 4 , výsledok sčítania sa zapíše do registra /VI.

4. K obsahu N2 sa pripočíta modulo 2 s konštantou C2 = 2 24 + 2 16 + 2 8 +1, výsledok sčítania sa zapíše do registra N2.

5. Obsah registrov /VI a N2 je na výstupe ako 64-bitový šifrovací gama blok (tj v tomto prípade /VI a N2 tvoria prvý gama blok).

6. Ak je potrebný ďalší gama blok (t. j. šifrovanie alebo dešifrovanie musí pokračovať), vráťte sa na krok 2.

Pre dešifrovanie sa rovnakým spôsobom vygeneruje gama, potom sa operácia XOR opäť aplikuje na šifrový text a gama bity.

Na vygenerovanie rovnakej šifry gama musí mať používateľ dešifrujúci kryptogram rovnaký kľúč a rovnakú hodnotu synchronizačnej správy, aké boli použité na zašifrovanie informácií. V opačnom prípade nebudete môcť získať pôvodný text zo zašifrovaného.

Vo väčšine implementácií algoritmu GOST 28147-89 nie je synchronizačná správa tajným prvkom, ale synchronizačná správa môže byť rovnako tajná ako šifrovací kľúč. V tomto prípade môžeme uvažovať, že efektívna dĺžka kľúča algoritmu (256 bitov) sa zvýši o ďalších 64 bitov synchronizačnej správy, čo možno považovať za dodatočný kľúčový prvok.

Gama režim spätnej väzby

V spätnoväzbovom gama režime počnúc 2. blokom sa registre /VI a L/2 nenapĺňajú predchádzajúcim gama blokom, ale výsledkom šifrovania predchádzajúceho bloku otvoreného textu (obr. 3.4). Prvý blok v tomto režime je generovaný presne rovnakým spôsobom ako predchádzajúci.

Ryža. 3.4. Generovanie šifry gama v režime gama so spätnou väzbou

Režim generovania imitátora

Spoof je kryptografický kontrolný súčet vypočítaný pomocou šifrovacieho kľúča a určený na kontrolu integrity správ. Na jeho výpočet existuje špeciálny režim algoritmu GOST 28147-89.

Generovanie predpony imitácie sa vykonáva takto:

1. Prvý 64-bitový blok informácií, pre ktorý sa vypočítava impersonátor, sa zapíše do registrov N1 a N2 a zašifruje sa v režime redukovanej jednoduchej náhrady, v ktorom sa vykoná prvých 16 kôl z 32.

2. Získaný výsledok sa sčíta modulo 2 s ďalším blokom informácií, pričom sa výsledok uloží do N1 a N2.

3. M a N2 sú opäť zakódované v redukovanom režime jednoduchej náhrady a tak ďalej až do posledného bloku informácií.

Za predponu sa považuje 64-bitový výsledný obsah registrov N1 a N2 alebo ich časti. Najčastejšie sa používa 32-bitová imitácia prefixu, to znamená polovica obsahu registrov. To stačí, pretože ako každý kontrolný súčet, aj predpona imitácie je určená predovšetkým na ochranu pred náhodným skreslením informácií. Na ochranu pred úmyselnou úpravou údajov sa používajú iné kryptografické metódy – predovšetkým elektronické digitálny podpis(pozri časť 1.1).

Predpona imitácie sa používa takto:

1. Pri šifrovaní akejkoľvek informácie sa vypočíta imitátor otvoreného textu a odošle sa spolu so šifrovaným textom.

2. Po dekódovaní sa predpona imitácie znova vypočíta a porovná sa s odoslanou.

3. Ak sa vypočítané a odoslané predpony imitácie nezhodujú, šifrový text bol pri prenose skreslený alebo boli pri dešifrovaní použité nesprávne kľúče.

Napodobenina predpony je užitočná najmä na overenie správneho dešifrovania kľúčových informácií pri použití schém s viacerými kľúčmi.

Imitačná predpona je nejakým analógom autentifikačného kódu správy MAC vypočítaného v režime CBC; rozdiel je v tom, že výpočet prefixu nepoužíva synchronizačnú správu, zatiaľ čo výpočet MAC používa inicializačný vektor.

Kryptografická sila algoritmu

V roku 1994 bol popis algoritmu GOST 28147-89 preložený do angličtiny a publikovaný; až potom sa začali objavovať výsledky jeho analýz vykonaných zahraničnými expertmi; počas dlhého obdobia sa však nezistili žiadne útoky blížiace sa uskutočniteľnosti.

□ veľká dĺžka kľúča – 256 bitov; spolu s tajnou synchronizačnou správou sa efektívna dĺžka kľúča zvýši na 320 bitov;

□ 32 kôl transformácií; už po 8 kolách sa dosiahne plný efekt rozptylu vstupných dát: zmena jedného bitu bloku otvoreného textu ovplyvní všetky bity bloku šifrovaného textu a naopak, t.j. existuje viacnásobná bezpečnostná rezerva.

Zvážte výsledky kryptoanalýzy algoritmu GOST 28147-89.

Analýza substitučných tabuliek

Keďže substitučné tabuľky nie sú v norme uvedené, množstvo prác (napríklad v) naznačuje, že „kompetentná organizácia“ môže vydať „dobré“ aj „zlé“ substitučné tabuľky. Slávny odborník Bruce Schneier však takéto domnienky nazýva „fámy“. Je zrejmé, že kryptografická sila algoritmu do značnej miery závisí od vlastností použitých substitučných tabuliek, respektíve existujú slabé substitučné tabuľky (pozri príklad vyššie), ktorých použitie môže zjednodušiť útok algoritmu. Napriek tomu sa možnosť použitia rôznych substitučných tabuliek javí ako veľmi hodnotná myšlienka, ktorú podporujú nasledujúce dve skutočnosti z histórie šifrovacieho štandardu DES (podrobnosti nájdete v časti 3.15):

□ útoky využívajúce lineárnu aj diferenciálnu kryptoanalýzu algoritmu DES využívajú špecifické vlastnosti substitučných tabuliek; pri použití iných tabuliek bude musieť kryptoanalýza začať odznova;

□ Boli urobené pokusy posilniť DES proti lineárnej a diferenciálnej kryptoanalýze použitím silnejších substitučných tabuliek; takéto tabuľky, ktoré sú skutočne stabilnejšie, boli navrhnuté napríklad v algoritme s 5 DES; ale, bohužiaľ, nebolo možné nahradiť DES s 5 DES, pretože náhradné tabuľky sú pevne definované v štandarde, respektíve implementácie algoritmu pravdepodobne nepodporujú možnosť zmeny tabuliek na iné.

V mnohých prácach (napríklad , a ) sa mylne dospelo k záveru, že tajné substitučné tabuľky algoritmu GOST 28147-89 môžu byť súčasťou kľúča a zvýšiť jeho efektívnu dĺžku (čo nie je podstatné, pretože algoritmus má veľmi veľký 256-bitový kľúč). Práca však dokazuje, že tajné substitučné tabuľky možno vypočítať pomocou nasledujúceho útoku, ktorý sa dá prakticky použiť:

1. Nastavte nulový kľúč a vyhľadajte "nulový vektor", t. j. hodnotu z = /(0), kde /() je okrúhla funkcia algoritmu. Táto fáza trvá približne 2 šifrovacie operácie.

2. Pomocou nulového vektora sa vypočítajú hodnoty substitučných tabuliek, čo nezaberie viac ako 2 11 operácií.

Úpravy algoritmov a ich analýza

V práci bola vykonaná kryptanalýza modifikácií algoritmu GOST 28147-89:

□ algoritmus GOST-H, v ktorom sa oproti pôvodnému algoritmu mení poradie použitia podkľúčov, a to v kolách od 25. do 32. podkľúča sa používajú v priamom poradí, t.j. rovnakým spôsobom ako v predchádzajúcom kolá algoritmu;

□ 20-kolový algoritmus GOST®, ktorý používa XOR namiesto modulo 2 32 na prekrytie kľúčov.

Na základe výsledkov analýzy sa dospelo k záveru, že GOST-H a GOST© sú slabšie ako pôvodný algoritmus GOST 28147-89, pretože oba majú triedy slabých kľúčov. Stojí za zmienku, že pokiaľ ide o kryptoanalýzu GOST©, v práci sa slovo po slove opakuje časť o kryptoanalýze algoritmu GOST 28147-89, publikovaná v roku 2000 v známom diele (bez akéhokoľvek odkazu na originál). To spochybňuje profesionalitu autorov práce a jej ďalšie výsledky.

V práci je navrhnutá veľmi zaujímavá modifikácia algoritmu: tabuľky S \ ... Ss musia byť nevyhnutne odlišné; v každom kole algoritmu musia byť permutované podľa určitého zákona. Táto permutácia môže závisieť od šifrovacieho kľúča alebo môže byť tajná (t. j. môže byť súčasťou väčšieho šifrovacieho kľúča ako pôvodný 256-bitový kľúč). Obe tieto možnosti podľa ich autorov výrazne zvyšujú odolnosť algoritmu voči lineárnej a diferenciálnej kryptoanalýze.

A ešte jedna modifikácia týkajúca sa substitučných tabuliek je uvedená v práci, v ktorej je analyzovaná jedna z možných metód výpočtu substitučných tabuliek na základe šifrovacieho kľúča. Autori práce dospeli k záveru, že takáto závislosť oslabuje algoritmus, pretože vedie k prítomnosti slabých kľúčov a k niektorým potenciálnym zraniteľnostiam algoritmu.

Kompletná analýza algoritmov

Existujú aj útoky na celoobvodový GOST 28147-89 bez akýchkoľvek úprav. Jedna z prvých otvorených prác, v ktorej bola vykonaná analýza algoritmu, známa práca, je venovaná útokom, ktoré využívajú slabiny v postupe rozširovania kľúčov množstva známych šifrovacích algoritmov. Najmä úplný algoritmus GOST 28147-89 možno prelomiť pomocou diferenciálnej kryptoanalýzy na prepojených kľúčoch, ale iba ak sa použijú slabé substitučné tabuľky. 24-kolová verzia algoritmu (v ktorej chýba prvých 8 kôl) sa otvára rovnakým spôsobom pre akékoľvek tabuľky suplovania, ale silné tabuľky suplovania (napríklad uvedené v ) robia takýto útok absolútne nepraktickým.

Domáci vedci A. G. Rostovtsev a E. B. Makhovenko v roku 2001 navrhli zásadne novú metódu kryptoanalýzy (podľa autorov je podstatne efektívnejšia ako lineárna a diferenciálna kryptanalýza) vytvorením objektívnej funkcie zo známeho otvoreného textu zodpovedajúceho šifrovému textu a požadovanej hodnote. kľúča a nájdenie jeho extrému zodpovedajúceho skutočnej hodnote kľúča. Našli tiež veľkú triedu slabých kľúčov algoritmu GOST 28147-89, ktoré vám umožňujú otvoriť algoritmus iba pomocou 4 vybraných otvorených textov a ich zodpovedajúcich šifrových textov s pomerne nízkou zložitosťou. V práci pokračuje kryptanalýza algoritmu.

V roku 2004 skupina expertov z Kórey navrhla útok, pomocou ktorého je možné pomocou diferenciálnej kryptoanalýzy na pridružených kľúčoch získať s pravdepodobnosťou 91,7 % 12 bitov tajného kľúča. Útok si vyžaduje 235 vybraných otvorených textov a 236 šifrovacích operácií. Ako vidíte, tento útok je pre skutočné otvorenie algoritmu prakticky zbytočný.

Algoritmus definovaný GOST 28147-89 má dĺžku šifrovacieho kľúča 256 bitov. Šifruje informácie v blokoch po 64 bitoch (takéto algoritmy sa nazývajú blokové algoritmy), ktoré sú potom rozdelené do dvoch podblokov po 32 bitoch (N1 a N2) (obrázok 1). Podblok N1 sa spracuje určitým spôsobom, potom sa jeho hodnota pripočíta k hodnote podbloku N2 (sčítanie sa vykoná modulo 2, t.j. použije sa logická operácia XOR - „exkluzívne alebo“) a potom sa podbloky vymenia. Táto transformácia sa vykoná určitý počet krát („kol“): 16 alebo 32 v závislosti od režimu algoritmu. V každom kole sa vykonajú dve operácie.

Obrázok 1. Schéma algoritmu GOST 28147-89.

Prvým je kľúčovanie. Obsah podbloku N1 je pridaný modulo 2 do 32-bitovej časti kľúča Kx. Úplný kľúčšifrovanie je reprezentované ako zreťazenie 32-bitových podkľúčov: K0, K1, K2, K3, K4, K5, K6, K7. Jeden z týchto podkľúčov sa používa v procese šifrovania v závislosti od čísla kola a režimu prevádzky algoritmu.

Druhou operáciou je výmena stola. Po kľúčovaní sa podblok N1 rozdelí na 8 častí po 4 bitoch, pričom hodnota každého z nich sa nahradí v súlade s náhradnou tabuľkou pre túto časť podbloku. Podblok je potom bitovo doľava otočený o 11 bitov.

Náhrady tabuliek (Substitution box - S-box) sa často používajú v moderných šifrovacích algoritmoch, takže stojí za to vysvetliť, ako je takáto operácia organizovaná. Výstupné hodnoty blokov sa zapisujú do tabuľky. Dátový blok určitého rozmeru (v našom prípade 4-bitový) má svoje číselné znázornenie, ktoré určuje číslo výstupnej hodnoty. Ak napríklad S-box vyzerá ako 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1 a 4-bitový blok "0100" prišiel na vstup (hodnota 4), potom podľa tabuľky bude výstupná hodnota 15, t.j. "1111" (0 a 4, 1 a 11, 2 a 2 ...).

Algoritmus definovaný v GOST 28147-89 poskytuje štyri prevádzkové režimy: jednoduché nahradenie, škálovanie, škálovanie so spätnou väzbou a generovanie imitačných predpôn. Používajú rovnakú transformáciu šifrovania opísanú vyššie, ale keďže účel režimov je odlišný, táto transformácia sa v každom z nich vykonáva inak.

V režime jednoduchého nahradzovania sa vykoná 32 kôl opísaných vyššie na zašifrovanie každého 64-bitového bloku informácií. V tomto prípade sa 32-bitové podkľúče používajú v nasledujúcom poradí:

K0, K1, K2, K3, K4, K5, K6, K7, K0, K1 atď. - v 1. až 24. kole;

K7, K6, K5, K4, K3, K2, K1, K0 - v 25. až 32. kole.

Dešifrovanie v tomto režime sa vykonáva presne rovnakým spôsobom, ale s mierne odlišnou postupnosťou použitia podkľúčov:

K0, K1, K2, K3, K4, K5, K6, K7 - v 1. až 8. kole;

K7, K6, K5, K4, K3, K2, K1, K0, K7, K6 atď. - v 9. až 32. kole.

Všetky bloky sú šifrované nezávisle na sebe, t.j. výsledok šifrovania každého bloku závisí len od jeho obsahu (zodpovedajúceho zdrojového bloku). Ak existuje niekoľko identických blokov pôvodného (obyčajného) textu, zodpovedajúce bloky šifrovaného textu budú tiež rovnaké, čo poskytuje dodatočný užitočná informácia pre kryptoanalytika, ktorý sa snaží prelomiť šifru. Preto sa tento režim používa najmä na šifrovanie samotných šifrovacích kľúčov (často sú implementované viackľúčové schémy, v ktorých sú z viacerých dôvodov kľúče šifrované nad sebou). Na šifrovanie samotnej informácie sú určené ďalšie dva režimy prevádzky – gama a gama so spätnou väzbou.

V režime gama je každý blok otvoreného textu po bitoch pridaný modulo 2 k bloku gama 64-bitovej šifry. Šifra gama je špeciálna sekvencia, ktorá sa získa ako výsledok určitých operácií s registrami N1 a N2.

  • 1. V registroch N1 a N2 sa zapíše ich počiatočné naplnenie - 64-bitová hodnota nazývaná synchronizačná správa.
  • 2. Šifrovanie obsahu registrov N1 a N2 (v tomto prípade synchronizačných správ) sa vykonáva v režime jednoduchej výmeny.
  • 3. K obsahu registra N1 sa pripočíta modulo (232 - 1) s konštantou C1 = 224 + 216 + 28 + 24 a výsledok sčítania sa zapíše do registra N1.
  • 4. K obsahu registra N2 sa pripočíta modulo 232 s konštantou C2 = 224 + 216 + 28 + 1 a výsledok sčítania sa zapíše do registra N2.
  • 5. Obsah registrov N1 a N2 je vyvedený ako 64-bitový šifrovací gama blok (v tomto prípade N1 a N2 tvoria prvý gama blok).

Ak je potrebný ďalší gama blok (t. j. šifrovanie alebo dešifrovanie musí pokračovať), vráťte sa na krok 2.

Na dešifrovanie sa gama vygeneruje podobným spôsobom a potom sa šifrový text a bity gama opäť XORujú. Keďže táto operácia je reverzibilná, v prípade správne vygenerovanej gama sa získa pôvodný text (tabuľka 1).

Stôl 1.Šifrovanie a dešifrovanie v gama režime

Aby sa vyvinul rozsah šifry potrebný na dešifrovanie, používateľ dešifrujúci kryptogram musí mať rovnaký kľúč a rovnakú hodnotu synchronizačnej správy, aké boli použité pri zašifrovaní informácií. V opačnom prípade nebudete môcť získať pôvodný text zo zašifrovaného.

Vo väčšine implementácií algoritmu GOST 28147-89 nie je synchronizačná správa tajná, existujú však systémy, kde je synchronizačná správa rovnakým tajným prvkom ako šifrovací kľúč. Pre takéto systémy je efektívna dĺžka kľúča algoritmu (256 bitov) zvýšená o ďalších 64 bitov tajnej synchronizačnej správy, ktorú možno tiež považovať za kľúčový prvok.

V spätnoväzbovom gama režime sa na vyplnenie registrov N1 a N2, počnúc od 2. bloku, nepoužíva predchádzajúci gama blok, ale výsledok zašifrovania predchádzajúceho bloku otvoreného textu (obrázok 2). Prvý blok v tomto režime je generovaný presne rovnakým spôsobom ako predchádzajúci.

Obrázok 2. Generovanie šifry gama v režime spätnej väzby gama.

Vzhľadom na spôsob generovania imitačných prefixov je potrebné definovať pojem predmetu generovania. Spoof je kryptografický kontrolný súčet vypočítaný pomocou šifrovacieho kľúča a určený na kontrolu integrity správ. Pri generovaní prefixu sa vykonajú tieto operácie: prvý 64-bitový blok informačného poľa, pre ktorý je prefix vypočítaný, sa zapíše do registrov N1 a N2 a zašifruje sa v režime redukovaného jednoduchého nahradzovania (prvých 16 vykonajú sa kolá z 32). Získaný výsledok sa sčíta modulo 2 s ďalším blokom informácií, pričom sa výsledok uloží do N1 a N2.

Cyklus sa opakuje až do posledného bloku informácií. 64-bitový obsah registrov N1 a N2 alebo jeho časť, ktorý je výsledkom týchto transformácií, sa nazýva imitačná predpona. Veľkosť predpony sa vyberá na základe požadovanej spoľahlivosti správ: pri dĺžke predpony r bitov je pravdepodobnosť, že zmena v správe zostane nepovšimnutá, 2-r. Najčastejšie je 32-bitová predpona použité, t. j. polovica obsahu registrov. To je postačujúce, pretože ako každý kontrolný súčet je predpona imitácie určená predovšetkým na ochranu pred náhodným skreslením informácií. Na ochranu pred úmyselnou úpravou údajov, iné kryptografických metód- V prvom rade elektronický digitálny podpis.

Pri výmene informácií slúži predpona imitácie ako druh doplnkového prostriedku kontroly. Vypočítava sa pre čistý text, keď sú niektoré informácie zašifrované a odosielajú sa spolu so šifrovaným textom. Po dešifrovaní sa vypočíta nová hodnota predpony imitácie, ktorá sa porovná s odoslanou hodnotou. Ak sa hodnoty nezhodujú, znamená to, že šifrový text bol počas prenosu skreslený alebo boli pri dešifrovaní použité nesprávne kľúče. Imitačná predpona je užitočná najmä na kontrolu správneho dešifrovania kľúčových informácií pri použití schém s viacerými kľúčmi.

Algoritmus GOST 28147-89 sa považuje za veľmi silný algoritmus - v súčasnosti nie sú navrhnuté žiadne efektívnejšie metódy na jeho odhalenie ako vyššie uvedená metóda "hrubej sily". Jeho vysoká bezpečnosť je dosiahnutá predovšetkým vďaka veľkej dĺžke kľúča – 256 bitov. Pri použití tajnej synchronizačnej správy sa efektívna dĺžka kľúča zvýši na 320 bitov a tajomstvo substitučnej tabuľky pridáva ďalšie bity. Okrem toho kryptografická sila závisí od počtu kôl transformácií, ktoré by podľa GOST 28147-89 mali byť 32 (úplný efekt rozptylu vstupných údajov sa dosiahne po 8 kolách).

Výhody GOST 28147-89 sú prítomnosť ochrany proti uloženiu falošných údajov (vývoj vkladania imitácie) a rovnaký cyklus šifrovania vo všetkých štyroch algoritmoch GOST.

Šifrovací algoritmus GOST 28147-89. Jednoduchá substitučná metóda. — Archív WASM.RU

„Kým si nažive, neumieraj, pozri sa na tento svet.
Mnohí tu majú mŕtvu dušu – sú mŕtvi vo vnútri.
Ale chodia a smejú sa, nevediac, že ​​tam nie sú,
Neunáhlite svoju smrť,“ povedala mi.

Aria, "Tam hore"

2.1 Siete Feistel.
2.2 Bloková šifra GOST 28147-89

3.1 Kľúčové informácie
3.2 Hlavný krok krypto transformácie

3.3 Základné cykly:32-З, 32-R.

4.1 Implementácia hlavného kroku transformácie kryptomien
4.2 Zvýšenie rýchlosti algoritmu
5. Požiadavky na kľúčové informácie
6. Zoznam použitej literatúry
7. Vďaka.

Úvod.

Tento dokument je mojím pokusom opísať metódu jednoduchého nahradenia šifrovacieho algoritmu GOST 28147-89 v najjednoduchšom, ale napriek tomu technicky gramotnom jazyku. Ako dobre sa mi to podarilo, povie čitateľ po prečítaní prvých šiestich bodov.

Aby moja práca dávala väčší úžitok Odporúčam vyzbrojiť sa dielami autorov uvedených v zozname použitej literatúry. Odporúča sa aj kalkulačka, aby mala funkciu na výpočet operácie XOR, pretože čítanie článku predpokladá, že čitateľ sa rozhodol študovať tento šifrovací algoritmus. Hoci je vhodný aj ako referenčný nástroj, tento článok som napísal práve ako návod.

Úvod do blokových šifier.

Predtým, ako začneme uvažovať o algoritme, musíme sa oboznámiť s históriou vytvorenia tohto druhu šifry. Algoritmus patrí do kategórie blokových šifier, v ktorých architektúre sú informácie rozdelené do konečného počtu blokov, pričom ten konečný samozrejme nemusí byť úplný. Proces šifrovania prebieha presne cez celé bloky, ktoré tvoria šifrový text. Posledný blok, ak je neúplný, je niečím doplnený (o nuansách jeho pridávania budem hovoriť nižšie) a je šifrovaný rovnakým spôsobom ako plné bloky. Šifrovaným textom mám na mysli - výsledok činnosti šifrovacej funkcie na určité množstvo údajov, ktoré používateľ odoslal na šifrovanie. Inými slovami, šifrovaný text je konečným výsledkom šifrovania.

História vývoja blokových šifier sa spája so začiatkom 70-tych rokov, kedy IBM, uvedomujúc si potrebu ochrany informácií pri prenose dát cez počítačové komunikačné kanály, začala implementovať vlastný program vedecký výskum venovaný ochrane informácií v elektronických sieťach vrátane kryptografie.

Skupine výskumníkov – vývojárov spoločnosti IBM, ktorá začala študovať šifrovacie systémy so schémou symetrického kľúča, viedol Dr. Horst Feistel.

2.1 Siete Feistel

Architektúra novej metódy šifrovania, ktorú navrhol Feistel v klasickej literatúre, sa nazývala „Feistel Architecture“, ale na r. tento moment v ruskej a zahraničnej literatúre sa používa ustálenejší pojem – „Feistelova sieť“ alebo Feistelova sieť. Následne bola podľa tejto architektúry zostrojená šifra „Lucifer“ – ktorá bola neskôr publikovaná a vyvolala novú vlnu záujmu o kryptografiu všeobecne.

Myšlienka architektúry siete Feistel je nasledovná: vstupný informačný tok je rozdelený na bloky s veľkosťou n bitov, kde n je párne číslo. Každý blok je rozdelený na dve časti - L a R, tieto časti sa potom privedú do iteračnej blokovej šifry, v ktorej je výsledok j-tej etapy určený výsledkom predchádzajúcej etapy j-1! Dá sa to ilustrovať na príklade:

Ryža. 1

Kde, funkcia A je hlavnou činnosťou blokovej šifry. Môže to byť jednoduchá akcia, ako je operácia XOR, alebo môže mať komplexnejší vzhľad, môže ísť o postupnosť niekoľkých jednoduchých akcií - pridanie modulo, posun doľava, výmena prvku atď., celkovo tieto jednoduché kroky tvoria tzv. – hlavný krok krypto-transformácie.

Treba si uvedomiť, že kľúčovými prvkami funkcie sú zásoba kľúčových prvkov a operácia XOR a to, ako premyslená je práca týchto operácií, hovorí o kryptografickej sile šifry ako celku.

Aby bola myšlienka sietí Feistel úplne jasná, zvážte najjednoduchší prípad znázornený na obr. ryža. 1, kde sa vo funkcii A - vykonajú operácie „mod 2“ („xor“), ale toto prvok V prípade závažnejšej situácie, napríklad pri skrývaní informácií národného významu, môže byť funkcia A zložitejšia (ako som videl, funkcia A môže byť skutočne veľmi komplikovaná):

Počiatočné údaje:

L=1110b, R=0101, K=1111b

Získajte šifrovaný text

1. (R + K) mod 2 4 = Smod, Smod = 0100b

2. (Smod + L) mod 2 = Sxor, Sxor = 1010b

3. L=R, R=Sxor

L=0101b, R=1010b

Poďme si vysvetliť naše kroky:

1. Táto operácia je pridanie mod 2 4 . V praxi sa takáto operácia scvrkáva na jednoduché sčítanie, kde musíme sčítať dve čísla a ignorovať prenos na 5. číslicu. Pretože ak umiestnime exponenty nad číslice binárnej reprezentácie čísla, nad piatou číslicou bude indikátor štyri, pozrite sa na obrázok nižšie, ktorý znázorňuje akcie našej operácie:

Ryža. 2

Tu som ukázal šípkou na exponenty, ako vidíte, výsledok by mal byť 10100, ale keďže sa prenos ignoruje počas operácie mod 2 4, dostaneme 0100.

2. Táto operácia sa v literatúre nazýva mod 2, v jazyku symbolických inštancií sa realizuje príkazom XOR. Ale jeho správnejší názov je mod 2 1 . Bez tejto jedinečnej operácie je len ťažko možné vybudovať rýchly, ľahko implementovateľný šifrovací algoritmus a zároveň byť celkom odolný voči kryptomenám. Jedinečnosť tejto operácie spočíva v tom, že je jej opakom! Napríklad, ak je číslo A XORed s číslom B, výsledkom bude C, v budúcnosti stačí znova XORovať čísla B a C spolu, aby ste dostali predchádzajúcu hodnotu A!

V tejto operácii sme dostali 1010 s číslami 1110 a 0100, aby sme dostali späť 1110, stačí XOR čísla 0100 a 1010 spolu! Viac podrobností o tejto operácii nájdete v článku, ktorý je vložený na stránke. www.wasm.ru, « Základný sprievodcaAlgoritmy detekcie chýb CRC» autor, ktorý Ross N. Williams. V tejto práci je odsek - " 5. Binárna aritmetika bez prenášania". V tomto článku je popísaná operácia xor! Kričím, pretože v tomto článku je táto operácia opísaná tak, že čitateľ nielen pochopí, ako táto operácia funguje, ale dokonca ju aj začne vidieť, počuť a ​​cítiť!

3. Táto akcia je potrebná, aby ste pri dešifrovaní zo šifrovaného textu získali pôvodné hodnoty.

2.2 Bloková šifra GOST 28147-89

Šifrovací algoritmus GOST 28147 - 89 patrí do kategórie blokových šifier pracujúcich na architektúre vyváženej siete Feistel, kde dve časti zvoleného informačného bloku majú rovnakú veľkosť. Algoritmus bol vyvinutý v útrobách ôsmeho oddelenia KGB, teraz transformovaný na FAPSI, a bol zakotvený ako šifrovací štandard Ruskej federácie už v roku 1989 za ZSSR.

Pre prácu túto metódu algoritmu, je potrebné rozdeliť informácie do blokov s veľkosťou 64 bitov. Vygenerujte alebo zadajte do šifrovacieho systému nasledujúce informácie o kľúči: kľúč a substitučnú tabuľku. Výber kľúča a substitučnej tabuľky pre šifrovanie by sa mal brať veľmi vážne, pretože. toto je základom bezpečnosti vašich informácií. Informácie o tom, aké požiadavky sú kladené na kľúč a tabuľku suplovania, nájdete v odseku „Požiadavky na kľúčové informácie“.

Pri zvažovaní metódy sa na to nezameriame, pretože. tento článok, ako som povedal vyššie, bol napísaný s cieľom naučiť čitateľa šifrovať údaje pomocou metódy jednoduchej náhrady tento algoritmusšifrovania, no tejto problematiky sa určite dotkneme na konci článku.

teoretické minimum.

3.1 Kľúčové informácie

Ako som už uviedol vyššie, na šifrovaní údajov sa aktívne podieľajú:

3.1.1. Kľúč je sekvencia ôsmich prvkov po 32 bitoch. Ďalej budeme označovať symbol K a prvky, z ktorých sa skladá - k1,k2,k3,k4,k5,k6,k7,k8.

3.1.2 Substitučná tabuľka je matica ôsmich riadkov a šestnástich stĺpcov, ďalej len Hij. Každý prvok v priesečníku riadku i a stĺpca j má 4 bity.

3.2 Hlavný krok transformácie kryptomien

Hlavná akcia v procese šifrovania je hlavným krokom transformácie kryptomien. Toto nie je nič iné ako akcia na šifrovanie údajov pomocou určitého algoritmu, iba názov, ktorý vývojári predstavili, bol príliš ťažkopádny.

Pred začatím šifrovania sa blok rozdelí na dve časti L a R, každá po 32 bitoch. Vyberie sa kľúčový prvok a až potom sa naplnia tieto dve časti bloku, kľúčovým prvkom je substitučná tabuľka do funkcie hlavného kroku, výsledkom hlavného kroku je jedna iterácia základného cyklu, o ktorej sa bude diskutovať v nasledujúci odsek. Hlavný krok pozostáva z nasledujúcich krokov:

  1. Prídavná časť bloku R sa pridá ku kľúčovému prvku K mod 2 32 . Podobnú operáciu som opísal vyššie, tu je to isté, len exponent nie je „4“, ale „32“ - výsledok tejto operácie bude v budúcnosti označený Smod.
  2. Predtým získaný výsledok Smod rozdelíme na štyri bitové prvky s7,s6,s5,s4,s3,s2,s1,s0 a vložíme ho do náhradnej funkcie. Nahradenie je nasledovné: vyberie sa prvok Smod - s i, od začiatku začneme od najnižšieho prvku a nahradíme ho hodnotou zo substitučnej tabuľky pre i- riadok a stĺpec označenú hodnotou prvku s i . Prejdeme na prvok s i +1 a urobíme to isté a pokračujeme, kým nenahradíme hodnotu posledného prvku Smod - výsledok tejto operácie bude označený ako Ssimple.
  3. Pri tejto operácii sa hodnota Ssimple cyklicky posúva doľava o 11 bitov a dostaneme Srol.
  4. Vyberieme druhú časť bloku L a pridáme mod 2 so Srol, výsledkom je Sxor.
  5. V tejto fáze sa časť L bloku rovná hodnote časti R a časť R sa inicializuje s výsledkom Sxor, čím sa dokončí funkcia hlavného kroku!

3.3 Základné cykly: „32-Z“, „32-R“.

Aby bolo možné zašifrovať informácie, je potrebné ich rozdeliť na bloky s veľkosťou 64 bitov, samozrejme, že posledný blok môže mať menej ako 64 bitov. Tento fakt je Achillovou pätou tejto metódy „jednoduchej substitúcie“. Keďže jeho pridanie k 64 bitom je veľmi dôležitou úlohou na zvýšenie kryptografickej sily šifrového textu, toto citlivé miesto, ak je prítomné v poli informácií, ale nemusí byť (napríklad súbor s veľkosťou 512 bajtov !), by sa malo zaobchádzať s veľkou zodpovednosťou!

Po rozdelení informácií do blokov by ste mali kľúč rozdeliť na prvky:

K = k1,k2,k3,k4,k5,k6,k7,k8

Samotné šifrovanie spočíva vo využívaní základných cyklov tzv. Ktoré zase zahŕňajú n -tý počet základných krypto-transformačných krokov.

Základné cykly sú, ako to povedať, označené: n - m. Kde n je počet základných krypto-transformačných krokov v základnej slučke a m je "typ" základnej slučky, t.j. o čo ide, "Z" šifrovanie alebo "R" šifrovanie dát.

Základný šifrovací cyklus 32–3 pozostáva z 32 základných kryptografických krokov. Blok N a prvok kľúča K sa privedú do funkcie, ktorá implementuje akcie kroku, a prvý krok nastane s k1, druhý nad výsledkom s prvkom k2 atď. podľa nasledujúcej schémy:

k1,k2,k3,k4,k5,k6,k7,k8,k1,k2,k3,k4,k5,k6,k7,k8,k1,k2,k3,k4,k5,k6,k7,k8k8,k7, k6,k5,k4,k3,k2,k1

Proces 32-P dešifrovania prebieha podobným spôsobom, ale kľúčové prvky sa dodávajú v opačnom poradí:

k1,k2,k3,k4,k5,k6,k7,k8,k8,k7,k6,k5,k4,k3,k2,k1,k8,k7,k6,k5,k4,k3,k2,k1,k8, k7,k6,k5,k4,k3,k2,k1

Prax.

4.1 Implementácia hlavného kroku krypto transformácie

Po tom, čo sme sa zoznámili s teóriou ako šifrovať informácie, je čas pozrieť sa, ako šifrovanie funguje v praxi.

Počiatočné údaje:

Zoberme si blok informácií N = 0102030405060708h, tu sú časti L a R rovnaké:

L = 01020304h, R = 05060708h, zoberte kľúč:

K=' ako28 zw37 q839 7342ui23 8e2t wqm2 ewp1' (toto sú kódy ASCII, ak chcete zobraziť hexadecimálnu reprezentáciu, môžete tento súbor otvoriť v režime zobrazenia v Úplný veliteľ stlačenie klávesu " F3“ a potom kľúč „ 3 "). V tomto kľúči budú hodnoty prvkov:

k1 = 'as28', k2 = 'zw37', k3 = 'q839', k4 = '7342'

k5 = 'ui23', k6 = '8e2t', k7 = 'wqm2', k8 = 'ewp1'

Vezmite tiež nasledujúcu tabuľku nahrádzania:

Ryža. 3

Tu sú riadky očíslované od 0 do 7, stĺpce od 0 do F.

POZOR: Všetky informácie, vrátane kľúča so substitučnou tabuľkou, sa berú ako príklad na zváženie algoritmu!

Pomocou "počiatočných údajov" musíte získať výsledok akcie hlavného kroku transformácie kryptomien.

1. Vyberte časť R = 05060708h a kľúčový prvok k1 = ‚as28‘, v hexadecimálnom tvare bude kľúčový prvok vyzerať takto: 61733238h. Teraz vykonáme operáciu sumačného modu 2 32:

Ryža. 4

Ako môžete vidieť na obrázku, nepreniesli sme na 33 bity označené červenou farbou a s exponentom " 32 ". A ak by sme mali iné hodnoty R a kľúčového prvku, mohlo by sa to pokojne stať a potom by sme to ignorovali a v budúcnosti by sme používali iba bity označené žltou farbou.

Takúto operáciu vykonávam príkazom assembler pridať:

; eax=R, ebx='as28'

Výsledkom tejto operácie je Smod = 66793940h

2. Teraz najzložitejšia operácia, ale ak sa pozriete pozorne, už to nie je také strašidelné, ako sa na prvý pohľad zdá. Predstavme si Smod v nasledovnej podobe:

Ryža. 5

Snažil som sa vizualizovať prvky Smod na obrázku, ale aj tak to vysvetlím:

s0 = 0, s1 = 4, s2 = 9 atď.

Teraz, počnúc od najnižšieho prvku s0, urobíme náhradu. Zapamätanie si odseku 3.2 Hlavný krok transformácie kryptomien» i je riadok, s i je stĺpec, hľadáme hodnotu v nultom riadku a nulovom stĺpci:

Obr.6

Takže aktuálna hodnota Smodu nie je 6679394 0 h a 6679394 5 h.

Pristúpime k výmene s1, t.j. štyri. Použite prvý riadok a štvrtý stĺpec (s1= 4!). Pozrime sa na obrázok:

Ryža. 7

Teraz je hodnota Smod, nie 667939 4 5h, 667939 2 5h. Predpokladám, že teraz je náhradný algoritmus čitateľovi jasný a môžem povedať, že po konečnom výsledku Ssimple bude mať nasledujúcu hodnotu - 11e10325h.

O tom, ako je to najjednoduchšie implementovať vo forme príkazov assembleru, budem hovoriť neskôr v nasledujúcom odseku, keď budem hovoriť o rozšírenej tabuľke.

  1. Výslednú hodnotu Ssimple musíme posunúť o 11 bitov doľava.

Ryža. 8

Ako vidíte, táto akcia je pomerne jednoduchá a je implementovaná jedným príkazom v jazyku symbolických inštancií - rolovať a výsledok tejto operácie Srol je 0819288Fh.

4. Teraz zostáva súčasťou L nášho bloku informácií pre XOR s hodnotou Srol. Beriem kalkulačku z w2k sp4 a dostanem Sxor = 091b2b8bh.

5. Táto akcia je konečná a my jednoducho priradíme, očistíme R hodnotu časti L a inicializujeme časť L s hodnotou Sxor.

Konečný výsledok:

L=091b2b8bh, R=01020304h

4.2 Zvýšenie rýchlosti algoritmu

Teraz hovorme o optimalizácii algoritmu na rýchlosť. Pri realizácii projektu treba brať do úvahy, že najrýchlejšie pracuje program, ktorý pracuje s registrami častejšie ako s pamäťou a tu je tento úsudok tiež veľmi dôležitý, pretože. cez jeden blok informácií až 32 šifrovacích krokov!

Keď som implementoval šifrovací algoritmus do svojho programu, urobil som nasledovné:

1. Vybraná časť bloku L v registri eax a R v edx.

2. Inicializované do registra esi s adresou rozšíreného kľúča, viac nižšie.

3. Registru ebx som priradil hodnotu adresy rozšírenej substitučnej tabuľky, viac nižšie

4. Informácie bodov 1,2,3 odovzdal do funkcie základného cyklu 32 - Z alebo 32 - R podľa situácie.

Ak sa pozriete na schému dodávania kľúčových prvkov v odseku " Základné cykly: „32-Z“, „32-R““, potom náš kľúč pre základný cyklus 32 - Z môže byť reprezentovaný takto:

K32-Z=

'as28','zw37','q839','7342','ui23','8e2t','wqm2','ewp1',

'as28','zw37','q839','7342','ui23','8e2t','wqm2','ewp1',

'ewp1','wqm2','8e2t','ui23','7342','q839','zw37','as28'

Tie. od začiatku ísť k1,k2,k3,k4,k5,k6,k7,k8 - as28', 'zw37', 'q839', '7342', 'ui23', '8e2t', 'wqm2', 'ewp1' Táto sekvencia sa opakuje trikrát. Potom prvky idú v opačnom poradí, t.j.: k8,k7,k6,k5,k4,k3,k2,k1 - 'ewp1', 'wqm2', '8e2t', 'ui23', '7342', 'q839', 'zw37', 'as28'.

Prvky v poli som vopred usporiadal v poradí, v akom sa majú obsluhovať v 32 – Z. Zvýšil som teda pamäť potrebnú na kľúč, ale ušetril som sa od niektorých procesov myslenia, ktoré som nepotreboval, a zvýšil som rýchlosť algoritmus, pretože sa zníži čas prístupu do pamäte! Tu som opísal iba kľúč pre 32 - Z, pre cyklus 32 - R som urobil to isté, ale s použitím inej schémy na dodávanie prvkov, ktorú som tiež opísal v odseku " Základné cykly: „32-Z“, „32-R».

Je čas popísať implementáciu náhradnej funkcie, ako som sľúbil vyššie. Nemohol som to opísať skôr, pretože. to si vyžaduje zavedenie nového konceptu – rozšírenej substitučnej tabuľky. Neviem ti vysvetliť čo to je. Namiesto toho vám to ukážem a môžete si sami sformulovať, čo to je - rozšírená substitučná tabuľka?

Aby sme teda pochopili, čo je rozšírená substitučná tabuľka, potrebujeme substitučnú tabuľku, napríklad vezmem tú, ktorá je znázornená na obr. 3.

Napríklad sme potrebovali nahradiť číslo 66793940h. Uvediem ho v nasledovnej forme:

Ryža. 9

Ak teraz vezmeme prvky s1,s0, t.j. nízky bajt, potom bude výsledok náhradnej funkcie 25h! Po prečítaní článku Andreyho Vinokurova, ktorý som citoval v odseku „ Zoznam použitej literatúry“, skutočne zistíte, že ak vezmete dva riadky, môžete získať pole, ktoré vám umožní rýchlo nájsť náhradné prvky pomocou príkazu assembler xlat. Hovorí sa, že je to možné aj inak, rýchlejšie, ale Andrey Vinokurov strávil asi štyri roky výskumom rýchlych algoritmov na implementáciu GOST! Nemyslím si, že by ste mali znovu vynájsť koleso, keď už existuje.

Takže o poli:

Vezmime prvé dva riadky, nulu a prvý, a vytvoríme pole s veľkosťou 256 bajtov. Teraz pozorujeme jednu vlastnosť, že ak potrebujete previesť 00h, tak výsledok bude 75h (na základe obr. 3) - vložte túto hodnotu do poľa s posunom 00h. Zoberieme hodnotu 01h, výsledok náhradnej funkcie je 79h, vložíme ju do poľa s offsetom 01 a tak ďalej až do 0FFh, čím dostaneme 0FCh, ktoré vložíme do poľa s offsetom 0FFh. Tak sme dostali rozšírenú tabuľku náhrad pre prvú skupinu reťazcov: prvý a nula. Stále však existujú tri skupiny: druhá strana 2, strana 3, tretia strana 4, strana 5, štvrtá strana 6, strana 7. Pri týchto troch skupinách postupujeme rovnako ako pri prvej. Výsledkom je rozšírená tabuľka suplovania!

Teraz môžete implementovať algoritmus, ktorý vykoná výmenu. Za to berieme zdrojové kódy zverejnil Andrey Vinokurov na svojej stránke, pozri " Bibliografia».

lea ebx,extented_table_simple

mov eax,[uveďte číslo, ktoré chcete nahradiť]

pridať ebx,100h ;prejdite na ďalšie dva uzly

sub ebx, 300h ; aby v budúcnosti ebx ukazoval na tabuľku

Teraz ešte jedna funkcia, nielenže sme nahradili predchádzajúce akcie, ale aj posunuli číslo o 8 bitov doľava! Musíme posunúť číslo o ďalšie 3 bity doľava:

a dostaneme výsledok operácie rol eax,11!

K optimalizácii nemôžem nič viac dodať, jediné, čo môžem zdôrazniť, čo som povedal vyššie, je častejšie používanie registrov ako prístupov do pamäte. Myslím, že tieto slová sú len pre začiatočníkov, skúsení ľudia tomu rozumejú veľmi dobre aj bez mojich slov.

Požiadavky na kľúčové informácie.

Ako je uvedené v článku Andrey Vinokurov, kľúč sa vyberá podľa dvoch kritérií:

Kritérium pre ekvipravdepodobnú distribúciu bitov medzi hodnotami 1 a 0. Zvyčajne je kritériom pre ekvipravdepodobnú distribúciu bitov Pearsonovo kritérium ("chi-kvadrát").

To znamená kľúč, v zásade môže akékoľvek číslo. To znamená, že pri vytváraní ďalšieho bitu kľúča je pravdepodobnosť jeho inicializácie jednotkou alebo nulou 50/50!

Upozorňujeme, že kľúč má osem prvkov, každý 32 bitov, takže v kľúči je celkovo 32 * 8 = 256 bitov a číslo možné kľúče 2256! Nenapadá ťa to?

kritériá série.

Ak sa pozrieme na náš kľúč, ktorý som dal v odseku " 4.1 Implementácia hlavného kroku krypto transformácie“, potom si všimnete, že nasledujúci záznam je pravdivý:

Ryža. 10

V jednej fráze by sa hodnota k 1 nemala opakovať ani v k 2 , ani v žiadnom inom prvku kľúča.

To znamená, že kľúč, ktorý sme vybrali ako zváženie šifrovacieho algoritmu, dobre spĺňa dve vyššie uvedené kritériá.

Teraz o výbere substitučnej tabuľky:

Teraz si povedzme, ako si vybrať správnu tabuľku suplovania. Hlavnou požiadavkou na výber substitučných tabuliek je fenomén „neopakovateľnosti“ prvkov, z ktorých každý má veľkosť 4 bity. Ako ste videli vyššie, každý riadok substitučnej tabuľky pozostáva z hodnôt 0h, 1h, 2h, 3h, ..., 0fh. Hlavnou požiadavkou teda je, aby každý riadok obsahoval hodnoty 0h, 1h, 2h, ..., 0fh a každú takúto hodnotu v jednom prípade. Napríklad postupnosť:

1 2 3 4 5 6 7 8 9 A B C D E F

Plne spĺňa túto požiadavku, ale predsa! Neodporúča sa vybrať takúto sekvenciu ako reťazec. Pretože ak zadáte hodnotu na vstup funkcie, ktorá sa spolieha na takýto reťazec, potom dostanete rovnakú hodnotu na výstupe! neveríš? Potom vezmite číslo 332DA43Fh a osem takýchto riadkov ako substitučnú tabuľku. Vykonajte operáciu výmeny a uisťujem vás, že výstup bude číslo 332DA43Fh! Teda to isté, čo ste predložili na vstupe operácie! A to nie je znak dobrej formy v šifrovaní, a bolo to tak?

To bola jedna požiadavka, ďalšie kritérium hovorí, že - každý bit výstupného bloku musí byť štatisticky nezávislý od každého bitu vstupného bloku!

Ako to vyzerá jednoduchšie? A takto sme napríklad vybrali prvok s0 = 0Fh, 01111b z vyššie uvedeného čísla. Pravdepodobnosť, že teraz nahradíme prvý bit jednotkou alebo nulou, je 0,5! Pravdepodobnosť nahradenia druhého, tretieho a štvrtého bitu, každý bit, uvažovaný samostatne, jednotkami alebo nulami je tiež 0,5. Pri výbere s1 = 0Eh nahradíme pravdepodobnosť, že sme nulový bit, a to je „0“ , nula alebo jedna sa rovná - 0,5! Podľa tohto kritéria teda neexistuje pravidelnosť medzi nahradením nulových bitov prvkov s0, s1! Áno, môžete nahradiť jednotky, ale môžete dať aj nuly.

Ak chcete vyhodnotiť tabuľku podľa tohto kritéria, môžete zostaviť tabuľku korelačných koeficientov vypočítaných podľa vzorca:

Ak p = 1, potom sa hodnota bitu j na výstupe rovná hodnote bitu i na vstupe pre akúkoľvek kombináciu bitov na vstupe;

Ak p = -1, potom hodnota bitu j na výstupe je vždy inverzná hodnota vstupného bitu i;

Ak p = 0, potom výstupný bit j nadobúda hodnoty 0 a 1 s rovnakou pravdepodobnosťou pre akúkoľvek pevnú hodnotu vstupného bitu i.

Zoberme si príklad s jedným riadkom:

Poďme si to rozdeliť na komponenty:

Jeden koeficient vypočítame pomocou vyššie uvedeného vzorca. Aby ste ľahšie pochopili, ako sa to robí, vysvetlím podrobnejšie:

Zoberieme 0. bit 0. čísla (0) na vstupe a 0. bit 0. čísla na výstupe (1) a vykonáme operáciu 0 XOR 1 = 1.

Zoberieme 0. bit z 1. čísla (1) na vstupe a 0. bit z 1. čísla na výstupe (1) a vykonáme operáciu 1 XOR 1 = 0.

Zoberieme 0. bit z 2. čísla (0) na vstupe a 0. bit z 2. čísla na výstupe (0) a vykonáme operáciu 0 XOR 0 = 0.

Zoberieme 0. bit z 3. čísla (1) na vstupe a 0. bit z 3. čísla na výstupe (1) a vykonáme operáciu 1 XOR 1 = 0.

Po postupnom vykonaní operácií XOR v takejto postupnosti spočítame počet všetkých nenulových hodnôt, dostaneme hodnotu 6. Preto P 00 = 1-(6/2 4-1) = 0,25. Takže sa ukázalo, že hodnota bitu 0 na výstupe sa rovná hodnote bitu 0 na vstupe v 4 prípadoch zo 16;

Konečná tabuľka kurzov:

Ako vidno z tabuľky korelačných koeficientov, bit 3 na vstupe je invertovaný vzhľadom na bit 0 na výstupe v 14 prípadoch zo 16, čo je 87,5 % To už nie je prijateľné pre bežné šifrovacie systémy. Pre zmenu si uveďme ďalší príklad:

Tabuľka koeficientov bude nasledovná (kto nie je lenivý prepočítať)

V tejto tabuľke sú veci ešte horšie - bity 1 a 2 skupiny zostávajú nezmenené! Kryptanalytik sa má kde obracať Berúc do úvahy všetky tieto požiadavky, jednoduchým enumeráciou („head-on“) sa našli permutačné tabuľky zodpovedajúce špecifikovanej teórii (dnes - 1276 kombinácií) Tu sú niektoré z nich:

09 0D 03 0E-06 02 05 08-0A 07 00 04-0C 01 0F 0B

00 05 0A 07-03 08 0F 0C-0E 0B 04 09-0D 06 01 02

06 0B 0F 00-0C 01 02 0D-08 07 09 04-05 0A 03 0E

04 0E 00 09-0B 01 0F 06-03 0D 07 0A-0C 02 08 05

04 02 08 0E-05 0F 03 09-0B 01 0D 07-0A 0C 06 00

07 03 09 0C-08 00 06 0F-0E 04 01 0A-0D 0B 02 05

06 0F 03 08-0D 04 0A 01-09 02 05 0C-00 0B 0E 07

0C 06 08 01-03 09 07 0E-0B 05 0F 02-04 0A 00 0D

04 0B 09 06-0E 01 00 0F-0A 05 03 0C-0D 02 07 08

00 0E 0F 01-07 08 09 06-04 0B 0A 05-03 0D 0C 02

0F 09 01 07-04 0A 08 06-0E 00 02 0C-05 03 0B 0D

0A 03 04 01-05 0C 0B 0E-08 06 0F 0D-07 09 00 02

0B 06 0F 01-04 0A 08 05-00 0D 0C 02-07 09 03 0E

0C 03 02 08-0D 06 0B 05-07 09 04 0F-0A 00 01 0E

02 0B 0F 04-09 00 06 0D-05 0E 01 08-0C 07 0A 03

Zoznam použitej literatúry.

  1. Článok od Andrey Vinokurov:

Šifrovací algoritmus GOST 28147-89, jeho použitie a implementácia

pre počítače platformy Intel x86.

Tu sú zdrojové kódy pre implementáciu šifrovacieho algoritmu.

  1. Článok od Horsta Feistela:

Kryptografia a počítačová bezpečnosť.

(nájdete na rovnakej adrese ako predchádzajúci článok)

  1. Ross N. Williams:

Základný sprievodca algoritmami detekcie chýb CRC

Uverejnené na stránke www.wasm.en.

Vďaka.

Chcel by som vyjadriť svoju vďaku všetkým návštevníkom fóra www.wasm.ru. Ale hlavne by som sa chcel poďakovať ChS, ktorý je momentálne známy ako SteelRat, pomohol mi pochopiť veci, ktorým by som asi nikdy nerozumel, a tiež mi pomohol napísať odsek: “ Požiadavky na kľúčové informácie“, napísal hlavnú časť tohto odseku on. Som hlboko vďačný aj zamestnancovi KSTU. A.N. Tupolev Anikin Igor Vjačeslavovič a bolo by hriechom nespomenúť Chrisa Kasperského za to, že ním je, a Volodyu / wasm.ru za jeho pokyny. Oh, a dostávam od neho. Tiež by som chcel poznamenať Sega-Zero / Callipso za to, že mi na myseľ priniesol nejakú matematickú džungľu.

To je možno všetko, čo by som vám chcel povedať.

Bol by som vďačný za kritiku alebo otázky súvisiace s týmto článkom alebo len za rady. Moje kontaktné údaje: [chránený e-mailom], ICQ - 337310594.

S pozdravom, Evil`s Interrupt.

P.S.: Týmto článkom som sa nesnažil nikoho predbehnúť. Bol napísaný s úmyslom uľahčiť štúdium GOST, a ak máte ťažkosti, neznamená to, že za to môžem ja. Buďte rozumní a trpezliví, všetko najlepšie!



Načítava...
Hore