GOST 28147 89 algoritam je. Domaći standard šifriranja podataka

U našoj zemlji je uspostavljen jedinstveni algoritam za kriptografsko predstavljanje podataka za sisteme za obradu informacija u računarskim mrežama, pojedinačnim računarskim sistemima i računarima, koji je utvrđen GOST 28147-89.

Ovaj algoritam konverzije kriptografskih podataka je 64-bitni blok algoritam sa 256-bitnim ključem, dizajniran za hardver i implementacija softvera, zadovoljava kriptografske zahtjeve i ne nameće ograničenja na stepen tajnosti zaštićenih informacija.

Kada se opisuje algoritam, koristi se sljedeća notacija:

L i R - bitne sekvence;
LR je konkatenacija sekvenci L i R, u kojoj bitovi sekvence R slijede bitove sekvence L;
(+) - pobitno sabiranje po modulu 2 (operacija "isključivo ILI");
[+] - sabiranje 32-bitnih brojeva po modulu 2 32 ;
(+) - sabiranje 32-bitnih brojeva po modulu 2 32 -1.

Brojevi se zbrajaju prema sljedećem pravilu:

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

Algoritam pruža četiri načina rada:

U svakom slučaju, za šifriranje podataka koristi se 256-bitni ključ K, koji je predstavljen kao osam 32-bitnih potključeva K i:

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

Dešifriranje se izvodi pomoću istog ključa kao i šifriranje, ali je proces inverzan od procesa šifriranja podataka.

Jednostavan način zamjene

Prvi i najlakši način je zamjena. Podaci koji se šifriraju dijele se na 64-bitne blokove. Procedura šifriranja za blok otvorenih podataka T 0 uključuje 32 ciklusa (j=1...32).

Blok T 0 je podijeljen u dvije sekvence od 32 bita: B(0)A(0), gdje su B(0) lijevi ili bitovi visokog reda, A(0) su desni ili niži bitovi.

Ove sekvence se unose u pogone N 1 i N 2 prije početka prvog ciklusa šifriranja.

Prvi ciklus (j=1) procedure šifriranja za 64-bitni blok podataka opisan je sljedećim formulama:

Ovdje i označava broj iteracije (i = 1, 2,..., 32).

Funkcija f se zove funkcija šifriranja. Njegov argument je zbir, po modulu 2, 32 broja A(i), dobijenih u prethodnom koraku iteracije, i ključnog broja X(j) (dimenzija svakog od ovih brojeva je 32 cifre).

Funkcija šifriranja uključuje dvije operacije na rezultirajućem 32-bitnom zbroju. Prva operacija se zove K supstitucija. K supstitucijski blok se sastoji od 8 supstitucijskih čvorova K(1) ... K(8) sa memorijom od 64 bita. 32-bitni vektor koji stiže u blok zamjene podijeljen je na 8 uzastopnih 4-bitnih vektora, od kojih se svaki konvertuje u 4-bitni vektor pomoću odgovarajućeg zamjenskog čvora, koji je tabela od 16 cijelih brojeva u rasponu 0. .15.

Ulazni vektor specificira adresu reda u tabeli, broj iz kojeg je izlazni vektor. 4-bitni izlazni vektori se zatim sekvencijalno spajaju u 32-bitni vektor. Tablica zamjenskih blokova K sadrži ključne elemente koji su zajednički za računarsku mrežu i rijetko se mijenjaju.

Druga operacija je ciklički pomak ulijevo od 32-bitnog vektora dobivenog kao rezultat zamjene K. 64-bitni blok šifriranih podataka T sh je predstavljen kao T sh = A (32) B (32).

Preostali blokovi otvorenih podataka u načinu jednostavne zamjene šifrirani su na isti način.

Imajte na umu da se jednostavni način zamjene može koristiti za šifriranje podataka samo u ograničenim slučajevima. Ovi slučajevi uključuju generiranje ključa i njegovo šifriranje uz obezbjeđivanje imitacije zaštite (zaštita od nametanja lažnih podataka) za prijenos putem komunikacijskih kanala ili pohranjivanje u memoriju računala.

Gama mod

Otvoreni podaci, podijeljeni u 64-bitne blokove T(i) (i=1, 2,..., m, gdje je m određen obimom šifriranih podataka), šifriraju se u gama modusu bitovskim sabiranjem po modulu 2 sa gama šifra Gš, koja se proizvodi u blokovima od 64 bita, odnosno Gš = (G(1),G(2),...,G(i),...,G(m)).

Jednačina enkripcije podataka u gama modu može se predstaviti na sljedeći način:

Š(i) = A (Y(i-1) [+] C2, Z(i-1) (+) C1) (+) T(i) = G(i) (+) T(i) .
Ovdje je Š(i) 64-bitni blok šifriranog teksta,
A - funkcija šifriranja u načinu jednostavne zamjene (argumenti ove funkcije su dva 32-bitna broja),
C1 i C2 su konstante navedene u GOST 28147-89,
Y(i) i Z(i) su veličine koje se određuju iterativno kako se gama formira na sljedeći način:
(Y(0), Z(0)) = A(S), gdje je S 64-bitna binarna sekvenca (sinhronizirana poruka);
(Y(i), Z(i)) = (Y(i-1) [+] C2, Z(i-1) (+) C1) za i = 1, 2,...,m.

Dešifriranje podataka moguće je samo uz prisutnost sinhronizacijske poruke, koja nije tajni element šifre i može se pohraniti u memoriju računala ili prenijeti komunikacijskim kanalima zajedno sa šifriranim podacima.

Gama način rada sa povratnim informacijama

Mode gamming With povratne informacije vrlo sličan gama modu. Kao iu gama modu, otvoreni podaci, podijeljeni u 64-bitne blokove T(i) (i=1, 2,..., m, gdje je m određen volumenom šifriranih podataka), šifriraju se bitovskim sabiranjem po modulu 2 sa gama šifrom G sh, koja se proizvodi u blokovima od 64 bita:

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

Broj binarnih znamenki u bloku T(m) može biti manji od 64, dok se dio raspona šifre koji se ne koristi za šifriranje iz G(m) bloka odbacuje.

Jednačina enkripcije podataka u gama modusu zatvorene petlje može se predstaviti na sljedeći način:


Ovdje je Š(i) 64-bitni blok šifriranog teksta,
A - funkcija šifriranja u načinu jednostavne zamjene. Argument funkcije u prvom koraku iterativnog algoritma je 64-bitna sinhronizaciona poruka, au svim narednim koracima je prethodni blok šifriranih podataka Š(i-1).

Razvoj imitacijskih umetaka

Proizvodni proces imitovstaki je uniforman za bilo koji od načina šifriranja podataka.

Imitacija umetanja je blok od p bitova (imitacija umetanja Ir), koji se generiše ili prije šifriranja cijele poruke, ili paralelno sa šifriranjem blok po blok. Prvi blokovi otvorenih podataka koji učestvuju u generisanju imitativnog umetanja mogu sadržati servisne informacije (na primer, deo adrese, vreme, sinhronizaciona poruka) i nisu šifrovani. Vrijednost parametra p (broj binarnih bitova u umetku simulacije) određena je kriptografskim zahtjevima, uzimajući u obzir činjenicu da je vjerovatnoća nametanja lažne smetnje jednaka 1/2^p.

Da bi se dobilo simulirano umetanje, otvoreni podaci se prikazuju u obliku 64-bitnih blokova T(i) (i = 1, 2,..., m, gdje je m određen volumenom šifriranih podataka). Prvi blok običnih podataka T(1) prolazi kroz transformaciju koja odgovara prvih 16 ciklusa algoritma šifriranja u načinu jednostavne zamjene. Štaviše, ključ koji se koristi za šifriranje podataka koristi se kao ključ za generiranje imitativnog umetanja.

64-bitni broj dobijen nakon 16 ciklusa rada sabira se po modulu 2 sa drugim blokom otvorenih podataka T(2). Rezultat zbrajanja ponovo se podvrgava transformaciji koja odgovara prvih 16 ciklusa algoritma šifriranja u načinu jednostavne zamjene. Rezultirajući 64-bitni broj se sabira po modulu 2 sa trećim blokom otvorenih podataka T(3), itd. Posljednji blok T(m), ako je potrebno, dopunjen u puni 64-bitni blok sa nulama, zbraja se po modulu 2 sa rezultatom rada u koraku m-1, nakon čega se šifrira u načinu jednostavne zamjene preko prvog 16 ciklusa algoritma. Od rezultirajućeg 64-bitnog broja, odabire se segment Ir dužine p bitova.

Imitativno umetanje Ir prenosi se komunikacijskim kanalom ili u memoriju računala nakon šifriranih podataka. Primljeni šifrirani podaci se dešifriraju, a iz primljenih blokova otvorenih podataka T(i), generira se simulirano umetanje Ir, koje se zatim upoređuje sa simuliranim umetanjem Ir primljenim iz komunikacijskog kanala ili iz memorije računala umetanja se ne podudaraju, svi dešifrirani podaci se smatraju lažnim.

Kratak opis šifre

GOST 28147-89 je sovjetski i ruski standard za simetrično šifriranje uveden 1990. godine, također CIS standard. Puni naziv - „GOST 28147-89 Sistemi za obradu informacija. Kriptografska zaštita. Algoritam kriptografske konverzije." Algoritam blok šifre. Kada se koristi metoda gama enkripcije, može obavljati funkcije algoritma stream šifriranja.

GOST 28147-89 je blok šifra sa 256-bitnim ključem i 32 ciklusa konverzije, koja radi na 64-bitnim blokovima. Osnova algoritma za šifriranje je Feistelova mreža. Osnovni način šifriranja prema GOST 28147-89 je jednostavan način zamjene (definirani su i složeniji gama, gama sa povratnom spregom i simulirani načini umetanja).

Kako algoritam radi

Algoritam se suštinski ne razlikuje od DES-a. Takođe sadrži cikluse enkripcije (njih 32) prema Feistelovoj šemi (slika 2.9.).

Rice. 2.9. Runde šifriranja algoritma GOST 28147-89.

Za generiranje potključeva, originalni 256-bitni ključ je podijeljen u osam 32-bitnih blokova: k 1 ...k 8 . Ključevi k 9 ...k 24 su ciklično ponavljanje ključeva k 1 ...k 8 (numerirani od najmanje značajnih do najviših bitova). Tasteri k 25 …k 32 su tasteri k 1 …k 8 obrnutim redosledom.

Nakon završetka svih 32 runde algoritma, blokovi A 33 i B 33 su zalijepljeni zajedno (imajte na umu da najznačajniji bit postaje A 33, a najmanji bit - B 33) - rezultat je rezultat algoritma.

Funkcija f(A i ,K i) se izračunava na sljedeći način: A i i K i se zbrajaju po modulu 2 32 , zatim se rezultat dijeli na osam 4-bitnih podniza, od kojih se svaka unosi u svoj vlastiti čvor tabele zamjene(u rastućem redoslijedu prioriteta bitova), pozvan ispod S-blok. Ukupan broj GOST S-blokova je osam, odnosno isti broj kao i podsekvencije. Svaki S-blok je permutacija brojeva od 0 do 15. Prva 4-bitna podniz ide na ulaz prve S-kutije, druga - na ulaz druge, itd. Izlazi svih osam S-kutija se kombinuju u 32-bitnu riječ, onda se cijela riječ ciklički pomiče ulijevo (prema najznačajnijim bitovima) za 11 bitova. Svih osam S-kutija mogu biti različite. Zapravo, oni mogu biti dodatni ključni materijal, ali češće su parametar sheme zajednički za određenu grupu korisnika. Tekst standarda navodi da se isporuka jedinica za zamjenu punjenja (S-blokova) vrši na propisan način, tj. programer algoritma. Zajednica ruskih CIPF programera složila se oko zamjenskih čvorova koji se koriste na Internetu.

Dešifriranje se izvodi na isti način kao i šifriranje, ali je redoslijed potključeva k i obrnut.

Načini rada algoritma GOST 28147-89

GOST 28147-89 algoritam ima četiri načina rada.

1. Modelaka zamena prihvata kao ulazne podatke čija je veličina višestruka od 64 bita. Rezultat enkripcije je ulazni tekst, konvertovan u blokove od 64 bita u slučaju šifrovanja sa ciklusom “32-Z”, au slučaju dešifrovanja sa ciklusom “32-R”.

2. Modegamming prihvata podatke bilo koje veličine kao ulaz, kao i dodatni 64-bitni parametar - sinhronizovana poruka. Tokom rada, sinhronizovana poruka se konvertuje u ciklusu „32-Z“, rezultat se deli na dva dela. Prvi dio se dodaje po modulu 2 32 sa konstantnom vrijednošću 1010101 16. Ako je drugi dio jednak 2 32 -1, tada se njegova vrijednost ne mijenja, inače se dodaje po modulu 2 32 -1 sa konstantnom vrijednošću 1010104 16. Vrijednost dobijena kombinovanjem oba transformirana dijela, nazvana gama šifre, ulazi u ciklus „32-3“, čiji se rezultat dodaje bit po bit po modulu 2 sa 64-bitnim blokom ulaznih podataka. Ako je potonji manji od 64 bita, tada se dodatni bitovi rezultirajuće vrijednosti odbacuju. Rezultirajuća vrijednost se šalje na izlaz. Ako još uvijek ima dolaznih podataka, radnja se ponavlja: blok sastavljen od 32-bitnih dijelova pretvara se u dijelove, itd.

3. Modeigranje s povratnim informacijama također prihvata podatke bilo koje veličine i poruku o sinhronizaciji kao ulaz. Blok ulaznih podataka dodaje se bit po bit po modulu 2 sa rezultatom transformacije u ciklusu “32-3” sinhronizacione poruke. Rezultirajuća vrijednost se šalje na izlaz. Vrijednost sinkronizirane poruke zamjenjuje se u slučaju šifriranja izlaznim blokom, a u slučaju dešifriranja - ulaznim blokom, odnosno šifriranim. Ako je posljednji blok dolaznih podataka manji od 64 bita, tada se dodatni bitovi gama (izlaz ciklusa “32-3”) odbacuju. Ako još uvijek ima dolaznih podataka, radnja se ponavlja: iz rezultata šifriranja zamijenjene vrijednosti formira se gama šifre itd.

4. Način proizvodnjeimitacije umetaka uzima kao ulazne podatke koji su veličine najmanje dva puna 64-bitna bloka i vraća 64-bitni blok podataka koji se naziva simulirani umetak. Privremena 64-bitna vrijednost je postavljena na 0, a zatim, sve dok postoje ulazni podaci, dodaje se bit po bit po modulu 2 s rezultatom ciklusa "16-3", čiji je ulaz blok unosa podaci. Nakon završetka unosa podataka, privremena vrijednost se vraća kao rezultat.

Šifra kriptoanaliza

GOST 28147-89 šifra koristi 256-bitni ključ, a volumen ključnog prostora je 2.256. Ni na jednom od trenutno postojećih računara opšte namene ne može se pronaći ključ za manje od mnogo stotina godina. Ruski standard GOST 28147-89 dizajniran je sa velikom marginom i za mnogo je redova jačine od američkog DES standarda sa svojom stvarnom veličinom ključa od 56 bita i volumenom ključnog prostora od samo 2 56 .

Postoje i napadi na kompletan GOST 28147-89 bez ikakvih modifikacija. Jedan od prvih otvoreni radovi, u kojem je algoritam analiziran, koristi slabosti procedure proširenja ključa brojnih dobro poznatih algoritama za šifriranje. Konkretno, potpuni algoritam GOST 28147-89 može se razbiti korištenjem diferencijalne kriptoanalize na srodnim ključevima, ali samo ako se koriste slabe zamjenske tablice. Verzija algoritma od 24 kruga (u kojoj nedostaje prvih 8 rundi) otvara se na sličan način sa bilo kojim zamjenskim tablicama, međutim, jake zamjenske tablice čine takav napad potpuno nepraktičnim.

Domaći naučnici A.G. Rostovtsev i E.B. Mahovenko je 2001. godine predložio fundamentalno novu metodu kriptoanalize formiranjem objektivne funkcije od poznatog otvorenog teksta, odgovarajućeg šifrovanog teksta i željene vrijednosti ključa i pronalaženjem njegovog ekstrema koji odgovara pravoj vrijednosti ključa. Pronašli su i veliku klasu slabih ključeva algoritma GOST 28147-89, koji omogućavaju otvaranje algoritma koristeći samo 4 odabrana otvorena teksta i odgovarajuće šifrirane tekstove s prilično niskom složenošću.

Godine 2004. grupa stručnjaka iz Koreje predložila je napad koji, koristeći diferencijalnu kriptoanalizu na srodnim ključevima, može dobiti 12-bitni tajni ključ sa vjerovatnoćom od 91,7%. Za napad je potrebno 2 35 odabranih otvorenih tekstova i 2 36 operacija šifriranja. Kao što vidite, ovaj napad je praktično beskoristan za stvarno razbijanje algoritma.

Zamjenska tablica je dugoročno ključni element, odnosno vrijedi za mnogo više dugoročno nego poseban ključ. Pretpostavlja se da je to zajedničko za sve čvorove šifriranja unutar istog sistema kriptografske zaštite. Kvaliteta šifre ovisi o kvaliteti ove tablice. Sa „jakom“ tablicom zamjene, snaga šifre ne pada ispod određene prihvatljive granice čak i ako je ugrožena. Suprotno tome, korištenje "slabe" tablice može smanjiti snagu šifre na neprihvatljivo nisku granicu. Nema informacija o kvalitetu tabele zamjene u otvori pritisnite Rusija nije objavljena, ali postojanje „slabih“ tablica je nesumnjivo - primjer je „trivijalna“ zamjenska tablica, u kojoj se svaka vrijednost zamjenjuje sama za sebe. Brojni radovi pogrešno zaključuju da tajne tabele zamjene algoritma GOST 28147-89 mogu biti dio ključa i povećati njegovu efektivnu dužinu (što nije značajno, budući da algoritam ima vrlo veliki 256-bitni ključ).

Ovaj algoritam je obavezan za korištenje kao algoritam za šifriranje u vladine organizacije Ruska Federacija i niz komercijalnih.

Opis algoritma

Dijagram algoritma je prikazan na sl. 3.1. Kao što vidite, dizajn ovog algoritma je prilično jednostavan, što jasno pojednostavljuje njegovu softversku ili hardversku implementaciju.

GOST 28147-89 algoritam šifrira informacije u blokovima od 64 bita, koji su podijeljeni u dva podbloka od 32 bita (N1 i N2). Podblok N1 se obrađuje na određeni način, nakon čega se njegova vrijednost zbraja

sa vrijednošću podbloka N2 (sabiranje se vrši po modulu 2), tada se podblokovi zamjenjuju. Ova transformacija se izvodi u određenom broju rundi: 16 ili 32, ovisno o načinu rada algoritma (opisano dolje). U svakom krugu se izvode sljedeće operacije:

1. Ključna aplikacija. Sadržaj /VI podbloka se dodaje po modulu 2 32 s dijelom ključa Kx.

Ključ za šifriranje algoritma GOST 28147-89 ima dimenziju od 256 bita, a Kx je njegov 32-bitni dio, tj. 256-bitni ključ za šifriranje je predstavljen kao konkatenacija 32-bitnih potključeva (slika 3.2):

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

Tokom procesa enkripcije koristi se jedan od ovih potključeva, ovisno o okruglom broju i načinu rada algoritma.

Rice. 3.1. Algoritamski dijagram GOST 28147-

Rice. 3.2. Ključ za šifriranje algoritma GOST 28147-89

2. Zamjena stola. Nakon unošenja ključa, /VI podblok se dijeli na 8 dijelova od 4 bita, od kojih se vrijednost svakog pojedinačno zamjenjuje u skladu sa zamjenskom tablicom za ovaj dio podbloka. Zamjene tablica (Supstitution box, S-box) se često koriste u savremeni algoritmi enkripcije, pa ih vrijedi detaljnije razmotriti.

Zamjena tablice se koristi na ovaj način: blok podataka određene veličine (u ovom slučaju 4-bitni) se isporučuje na ulaz, čiji numerički prikaz određuje broj izlazne vrijednosti. Na primjer, imamo S-box sljedećeg oblika:

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

Neka na ulaz dođe 4-bitni blok “0100”, odnosno vrijednost 4. Prema tabeli, izlazna vrijednost će biti jednaka 15, tj. “1111” (0 se zamjenjuje sa 4, 1 sa 11, vrijednost 2 ostaje nepromijenjena, itd.).

Kao što vidite, dizajn algoritma je vrlo jednostavan, što znači da najveći teret enkripcije podataka pada na zamjenske tablice. Nažalost, algoritam ima svojstvo da postoje „slabe“ zamjenske tablice, pomoću kojih se algoritam može riješiti kriptoanalitičkim metodama. Slabi uključuju, na primjer, tablicu u kojoj je izlaz jednak ulazu:

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

3. Bitovo ciklično pomicanje ulijevo za 11 bita.

Algoritamski režimi rada

GOST 28147-89 algoritam ima 4 načina rada:

□ jednostavan način zamjene;

□ gama mod;

P gama mod sa povratnom spregom;

□ način razvoja imitacije priloga.

Ovi načini se donekle razlikuju od općeprihvaćenih (opisanih u odjeljku 1.4), pa ih vrijedi detaljnije razmotriti.

Ovi načini imaju različite svrhe, ali koriste istu transformaciju šifriranja opisanu gore.

Jednostavan način zamjene

U načinu jednostavne zamjene, svaki 64-bitni blok informacija se jednostavno šifrira korištenjem 32 kruga opisanih gore. 32-bitni potključevi se koriste u sljedećem redoslijedu:

□ KO, Kl, K2, KZ, K4, K5, KB, AG7, KO, ATI itd. - od 1. do 24. kola;

□ K1, Kb, K5, K4, KZ, K2, K\, KO - u krugovima od 25. do 32.

Dešifriranje u načinu jednostavne zamjene izvodi se na potpuno isti način, ali s malo drugačijim redoslijedom korištenja potključeva:

□ KO, K\, K2, KZ, K4, K5, Kb, KP - od 1. do 8. kola;

□ KP, Kb, K5, K4, KZ, K2, K\, KO, K1, Kb itd. - u krugovima od 9. do 32.

Slično standardnom ECB modu, zbog odvojene enkripcije blokova, način jednostavne zamjene se striktno ne preporučuje za šifriranje samih podataka; trebalo bi da se koristi samo za šifrovanje drugih ključeva za šifrovanje u šemama sa više ključeva.

Gama mod

U gama modu (slika 3.3), svaki blok otvorenog teksta dodaje se bit po bit po modulu 2 64-bitnom gama bloku šifre. Gama šifra je poseban niz koji se generira korištenjem transformacija opisanih gore na sljedeći način:

1. Njihovo početno popunjavanje je upisano u registre N1 i N2 - 64-bitnu vrijednost koja se zove “sinhronizirana poruka” (sinhronizirana poruka je praktično analog vektora inicijalizacije u CBC, CFB i OFB modovima).

2. Sadržaj /VI i N2 registara (u ovom slučaju sinkronizirane poruke) je šifriran u načinu jednostavne zamjene.

3. Sadržaji N1 se sabiraju po modulu (2 32 – 1) sa konstantom CI = 2 24 + 2 16 + 2 8 + 4, rezultat sabiranja se upisuje u /VI registar.

4. Sadržaji N2 se sabiraju po modulu 2 sa konstantom C2 = 2 24 + 2 16 + 2 8 +1, rezultat sabiranja se upisuje u registar N2.

5. Sadržaj /VI i N2 registara se izlazi kao 64-bitni gama blok šifre (tj., u ovom slučaju, /VI i N2 čine prvi gama blok).

6. Ako je potreban sljedeći gama blok (tj. potrebno je dodatno šifriranje ili dešifriranje), vratite se na korak 2.

Za dešifriranje, gama se generiše na sličan način, a zatim se šifrirani tekst i gama bitovi ponovo postavljaju XOR.

Za generiranje istog raspona šifre, korisnik koji dešifrira kriptogram mora imati isti ključ i istu vrijednost sinkronizacijske poruke koje su korištene prilikom šifriranja informacija. U suprotnom, neće biti moguće dobiti originalni tekst iz šifrovanog.

U većini implementacija algoritma GOST 28147-89, poruka za sinhronizaciju nije tajni element, međutim, poruka za sinhronizaciju može biti tajna kao i ključ za šifrovanje. U ovom slučaju možemo smatrati da se efektivna dužina ključa algoritma (256 bita) povećava za još 64 bita sinhronizacione poruke, što se može smatrati dodatnim ključnim elementom.

Gama način rada sa povratnim informacijama

U gama modu sa povratnom spregom, rezultat šifriranja prethodnog bloka otvorenog teksta koristi se za popunjavanje /VI i L/2 registara, počevši od 2. bloka, ne prethodnog gama bloka, već rezultat šifriranja prethodnog bloka otvorenog teksta (Sl. 3.4). Prvi blok u ovom načinu rada se generira potpuno slično prethodnom.

Rice. 3.4. Generisanje gama šifre u gama modu sa povratnom spregom

Način generiranja imitacije priloga

Prefiks je kriptografska kontrolna suma izračunata pomoću ključa za šifriranje i dizajnirana za provjeru integriteta poruka. Za njegovo izračunavanje postoji poseban način algoritma GOST 28147-89.

Generiranje prefiksa imitacije izvodi se na sljedeći način:

1. Prvi 64-bitni blok informacija za koji se izračunava imitacijski prefiks upisuje se u registre N1 i N2 i šifrira u reduciranom načinu jednostavne zamjene, u kojem se izvodi prvih 16 od 32 kruga.

2. Dobijeni rezultat se sumira po modulu 2 sa sljedećim blokom informacija, pohranjujući rezultat u N1 i N2.

3. M i N2 se ponovo šifriraju u skraćenom načinu jednostavne zamjene, itd. do posljednjeg bloka informacija.

Imitacijskim prefiksom se smatra 64-bitni rezultujući sadržaj registara N1 i N2 ili njihov dio. Najčešće se koristi 32-bitni imitativni prefiks, odnosno polovina sadržaja registara. Ovo je dovoljno, budući da je, kao i svaki kontrolni zbroj, imitacija priloga namijenjena, prije svega, zaštiti od slučajnog izobličenja informacija. Za zaštitu od namjerne izmjene podataka koriste se i druge kriptografske metode – prvenstveno elektronske digitalni potpis(vidi odjeljak 1.1).

Prefiks imitacije se koristi na sljedeći način:

1. Prilikom šifriranja bilo koje informacije, prefiks imitacije otvorenog teksta se izračunava i šalje zajedno sa šifriranim tekstom.

2. Nakon dešifriranja, prefiks imitacije se ponovo izračunava i upoređuje sa poslanim.

3. Ako se izračunati i poslani imitacijski prefiksi ne poklapaju, tekst šifre je izobličen tokom prijenosa ili su korišteni netačni ključevi tokom dešifriranja.

Prefiks imitacije je posebno koristan za provjeru ispravnog dešifriranja ključnih informacija kada se koriste sheme s više ključeva.

Prefiks imitacije je neki analog koda za autentifikaciju MAC poruke, izračunat u CBC modu; Razlika je u tome što se prilikom izračunavanja prefiksa imitacije ne koristi poruka o sinhronizaciji, dok se pri izračunavanju MAC-a koristi vektor inicijalizacije.

Kriptografska snaga algoritma

Godine 1994., opis algoritma GOST 28147-89 preveden je na engleski i objavljen; nakon toga su se počeli pojavljivati ​​rezultati njene analize koju su izvršili strani stručnjaci; međutim, dugo vremena nisu pronađeni napadi koji bi se približili izvodljivosti.

□ velika dužina ključa - 256 bita; zajedno sa tajnom porukom o sinhronizaciji, efektivna dužina ključa se povećava na 320 bita;

□ 32 kruga transformacija; već nakon 8 rundi postiže se potpuni efekat disperzije ulaznih podataka: promjena jednog bita bloka otvorenog teksta utječe na sve bitove bloka šifriranog teksta, i obrnuto, tj. postoji višestruka margina jačine.

Razmotrimo rezultate kriptoanalize algoritma GOST 28147-89.

Analiza tablica zamjene

Budući da zamjenske tablice nisu predviđene u standardu, brojni radovi (na primjer, u) sugeriraju da “nadležna organizacija” može izdati i “dobre” i “loše” zamjenske tablice. Međutim, poznati stručnjak Bruce Schneier takve pretpostavke naziva „glasinama“. Jasno je da kriptografska snaga algoritma u velikoj mjeri ovisi o svojstvima zamjenskih tablica koje se koriste u skladu s tim, postoje slabe zamjenske tablice (vidi primjer iznad), čija upotreba može pojednostaviti napad algoritma; Ipak, mogućnost korištenja različitih zamjenskih tablica čini se vrlo vrijednom idejom, u prilog kojoj se mogu navesti sljedeće dvije činjenice iz istorije standarda DES enkripcije (za detalje pogledajte odjeljak 3.15):

□ napadi koji koriste i linearnu i diferencijalnu kriptoanalizu DES algoritma koriste specifične karakteristike zamjenskih tablica; kada koristite druge tabele, kriptoanaliza će morati da počne iznova;

□ Učinjeni su pokušaji da se ojača DES u odnosu na linearnu i diferencijalnu kriptoanalizu korištenjem robusnijih tablica zamjene; takve tabele, koje su zaista robusnije, predložene su, na primer, u algoritmu s 5 DES; ali, nažalost, bilo je nemoguće zamijeniti DES sa s 5 DES, budući da su zamjenske tablice striktno definirane u standardu, pa prema tome implementacije algoritma vjerovatno ne podržavaju mogućnost promjene tabela na druge.

Brojni radovi (na primjer, i ) pogrešno zaključuju da tajne zamjenske tablice algoritma GOST 28147-89 mogu biti dio ključa i povećati njegovu efektivnu dužinu (što nije značajno, budući da algoritam ima veoma veliku 256 -bitni ključ). Međutim, rad dokazuje da se tajne zamjenske tablice mogu izračunati korištenjem sljedećeg napada, koji se može praktično koristiti:

1. Postavlja se nulti ključ i vrši se traženje “nulte vektora”, odnosno vrijednosti z = /(0), gdje je /() okrugla funkcija algoritma. Ova faza traje oko 2 operacije šifriranja.

2. Koristeći nulti vektor izračunavaju se vrijednosti zamjenskih tablica, što ne zahtijeva više od 2 11 operacija.

Modifikacije algoritama i njihova analiza

U radu je izvršena kriptoanaliza modifikacija algoritma GOST 28147-89:

□ GOST-H algoritam, u kome je u odnosu na originalni algoritam promenjen redosled korišćenja potključeva, odnosno u rundama od 25 do 32 potključa se koriste direktnim redosledom, odnosno potpuno istim kao u prethodnim rundama algoritma;

□ GOST® algoritam od 20 krugova, u kojem runda koristi XOR umjesto modulo-2 dodatka za preklapanje ključa.

Na osnovu rezultata analize, zaključeno je da su GOST-H i GOST© slabiji od originalnog algoritma GOST 28147-89, budući da oba imaju klase slabih ključeva. Vrijedi napomenuti da u smislu GOST© kriptoanalize, rad ponavlja od riječi do riječi odjeljak posvećen kriptoanalizi algoritma GOST 28147-89, dobro poznatog rada objavljenog 2000. (bez ikakvih referenci na original). To dovodi u pitanje profesionalnost autora rada i drugih njegovih rezultata.

U radu je predložena vrlo zanimljiva modifikacija algoritma: tabele S\…Ss moraju nužno biti različite; u svakom krugu algoritma moraju se preurediti prema određenom zakonu. Ova permutacija može ovisiti o ključu za šifriranje, ili također može biti tajna (tj. biti dio većeg ključa za šifriranje od originalnog 256-bitnog ključa). Obje ove opcije, prema njihovim autorima, značajno povećavaju otpornost algoritma na linearnu i diferencijalnu kriptoanalizu.

I još jedna modifikacija vezana za zamjenske tablice data je u radu, koja analizira jednu od mogućih metoda za izračunavanje zamjenskih tablica na osnovu ključa za šifriranje. Autori rada su zaključili da takva zavisnost slabi algoritam, jer dovodi do prisustva slabih ključeva i do nekih potencijalnih ranjivosti algoritma.

Kompletna analiza algoritma

Postoje i napadi na kompletan GOST 28147-89 bez ikakvih modifikacija. Jedan od prvih javnih radova koji analizira algoritam, dobro poznato djelo, posvećen je napadima koji iskorištavaju slabosti u proceduri proširenja ključa brojnih dobro poznatih algoritama za šifriranje. Konkretno, potpuni algoritam GOST 28147-89 može se razbiti korištenjem diferencijalne kriptoanalize na srodnim ključevima, ali samo ako se koriste slabe zamjenske tablice. Verzija algoritma od 24 kruga (u kojoj nedostaje prvih 8 rundi) otvara se na sličan način sa bilo kojom zamjenskom tablicom, ali jake zamjenske tablice (na primjer, ona koja je data) čine takav napad potpuno nepraktičnim.

Domaći naučnici A. G. Rostovtsev i E. B. Makhovenko su 2001. godine predložili fundamentalno novu metodu kriptoanalize (prema autorima, znatno efikasniju od linearne i diferencijalne kriptoanalize) formiranjem objektivne funkcije od poznatog otvorenog teksta koji mu odgovara šifrovanom tekstu i željenoj vrijednosti ključa i pronalaženje njegovog ekstrema koji odgovara pravoj vrijednosti ključa. Pronašli su i veliku klasu slabih ključeva algoritma GOST 28147-89, koji omogućavaju otvaranje algoritma koristeći samo 4 odabrana otvorena teksta i odgovarajuće šifrirane tekstove s prilično niskom složenošću. U radu je nastavljena kriptoanaliza algoritma.

Godine 2004. grupa stručnjaka iz Koreje predložila je napad koji, koristeći diferencijalnu kriptoanalizu na srodnim ključevima, može dobiti 12 bitova tajnog ključa s vjerovatnoćom od 91,7%. Za napad je potrebno 2 35 odabranih otvorenih tekstova i 2 36 operacija šifriranja. Kao što vidite, ovaj napad je praktično beskoristan za stvarno razbijanje algoritma.

Algoritam definisan GOST 28147-89 ima dužinu ključa za šifrovanje od 256 bita. On šifrira informacije u blokovima od 64 bita (takvi algoritmi se nazivaju blok algoritmi), koji se zatim dijele na dva podbloka od 32 bita (N1 i N2) (Slika 1). Podblok N1 se obrađuje na određeni način, nakon čega se njegovoj vrijednosti dodaje vrijednost podbloka N2 (dodavanje se vrši po modulu 2, tj. primjenjuje se logička XOR operacija - „isključivo ili“), a zatim se podblokovi zamjenjuju. . Ova transformacija se izvodi određeni broj puta („rundova“): 16 ili 32, ovisno o načinu rada algoritma. U svakom krugu se izvode dvije operacije.

Slika 1. Šema algoritma GOST 28147-89.

Prvi je ključ. Sadržaju podbloka N1 dodaje se modul 2 sa 32-bitnim dijelom ključa Kx. Pun ključ enkripcija je predstavljena kao konkatenacija 32-bitnih potključeva: K0, K1, K2, K3, K4, K5, K6, K7. Tokom procesa enkripcije koristi se jedan od ovih potključeva, ovisno o okruglom broju i načinu rada algoritma.

Druga operacija je zamjena stola. Nakon unošenja ključa, podblok N1 se dijeli na 8 dijelova od po 4 bita, od kojih se vrijednost svakog zamjenjuje u skladu sa zamjenskom tablicom za ovaj dio podbloka. Podblok se tada rotira ulijevo za 11 bita.

Zamjene tablica (Substitution box - S-box) se često koriste u modernim algoritmima šifriranja, pa je vrijedno objasniti kako je takva operacija organizirana. Izlazne vrijednosti blokova su zabilježene u tabeli. Blok podataka određene dimenzije (u našem slučaju 4-bitni) ima svoj numerički prikaz, koji određuje broj izlazne vrijednosti. Na primjer, ako S-box izgleda kao 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1 i 4-bitni blok "0100" došao na ulaz (vrijednost 4), tada će, prema tabeli, izlazna vrijednost biti 15, tj. "1111" (0 a 4, 1 a 11, 2 a 2 ...).

Algoritam, definisan GOST 28147-89, pruža četiri načina rada: jednostavnu zamenu, gama, gama sa povratnom spregom i generisanje imitacije priloga. Oni koriste istu transformaciju šifriranja opisanu gore, ali budući da je svrha načina različita, ova se transformacija u svakom od njih provodi drugačije.

U načinu jednostavne zamjene, 32 kruga opisana gore se izvode za šifriranje svakog 64-bitnog bloka informacija. U ovom slučaju, 32-bitni potključevi se koriste u sljedećem redoslijedu:

K0, K1, K2, K3, K4, K5, K6, K7, K0, K1, itd. - u krugovima od 1. do 24.;

K7, K6, K5, K4, K3, K2, K1, K0 - u krugovima od 25. do 32.

Dešifriranje u ovom načinu se provodi na potpuno isti način, ali s malo drugačijim redoslijedom korištenja potključeva:

K0, K1, K2, K3, K4, K5, K6, K7 - u krugovima od 1 do 8;

K7, K6, K5, K4, K3, K2, K1, K0, K7, K6 itd. - u krugovima od 9. do 32.

Svi blokovi su šifrirani nezavisno jedan od drugog, tj. rezultat šifriranja svakog bloka zavisi samo od njegovog sadržaja (odgovarajući blok originalnog teksta). Ako postoji nekoliko identičnih blokova originalnog (običnog) teksta, bit će identični i odgovarajući blokovi šifriranog teksta, što daje dodatne korisne informacije za kriptoanalitičara koji pokušava razbiti šifru. Stoga se ovaj način koristi uglavnom za šifriranje samih ključeva za šifriranje (veoma se često primjenjuju šeme s više ključeva u kojima se, iz više razloga, ključevi šifriraju jedan na drugom). Dva druga načina rada namijenjena su šifriranju samih informacija - gama i gama sa povratnom spregom.

U gama modu, svaki blok otvorenog teksta dodaje se bit po bit po modulu 2 64-bitnom gama bloku šifre. Šifra gama je poseban niz koji se dobija kao rezultat određenih operacija sa registrima N1 i N2.

  • 1. Njihovo početno popunjavanje je upisano u registre N1 i N2 - 64-bitna vrijednost koja se zove poruka sinhronizacije.
  • 2. Sadržaj registara N1 i N2 (u ovom slučaju sinkronizirane poruke) je šifriran u načinu jednostavne zamjene.
  • 3. Sadržaj registra N1 se dodaje po modulu (232 - 1) sa konstantom C1 = 224 + 216 + 28 + 24, a rezultat sabiranja se upisuje u registar N1.
  • 4. Sadržaj registra N2 se dodaje po modulu 232 sa konstantom C2 = 224 + 216 + 28 + 1, a rezultat sabiranja se upisuje u registar N2.
  • 5. Sadržaj registara N1 i N2 izlazi kao 64-bitni gama blok šifre (u ovom slučaju, N1 i N2 čine prvi gama blok).

Ako je potreban sljedeći gama blok (tj. šifriranje ili dešifriranje treba da se nastavi), vraća se na korak 2.

Za dešifriranje, gama se generira na sličan način, a zatim se šifrirani tekst i gama bitovi ponovo postavljaju XOR. Budući da je ova operacija reverzibilna, u slučaju pravilno razvijene skale dobija se originalni tekst (tabela 1).

Tabela 1.Šifriranje i dešifriranje u gama modu

Da bi razvio šifru potrebnu za dešifriranje gama, korisnik koji dešifruje kriptogram mora imati isti ključ i istu vrijednost sinkronizacijske poruke koje su korištene prilikom šifriranja informacija. U suprotnom, neće biti moguće dobiti originalni tekst iz šifrovanog.

U većini implementacija algoritma GOST 28147-89, poruka o sinhronizaciji nije tajna, međutim, postoje sistemi u kojima je poruka za sinhronizaciju isti tajni element kao i ključ za šifrovanje. Za takve sisteme, efektivna dužina ključa algoritma (256 bita) se povećava za još 64 bita tajne sinhronizacione poruke, što se takođe može smatrati ključnim elementom.

U gama modusu zatvorene petlje, za popunjavanje registara N1 i N2, počevši od 2. bloka, ne koristi se prethodni gama blok, već rezultat šifriranja prethodnog bloka otvorenog teksta (slika 2). Prvi blok u ovom načinu rada se generira potpuno slično prethodnom.

Slika 2. Generiranje gama šifre u gama modu zatvorene petlje.

Prilikom razmatranja načina generiranja imitacijskih prefiksa, potrebno je definirati pojam subjekta generiranja. Prefiks je kriptografska kontrolna suma izračunata pomoću ključa za šifriranje i dizajnirana za provjeru integriteta poruka. Prilikom generiranja prefiksa imitacije izvode se sljedeće operacije: prvi 64-bitni blok niza informacija, za koji se izračunava prefiks imitacije, upisuje se u registre N1 i N2 i šifrira u reduciranom načinu jednostavne zamjene ( izvodi se prvih 16 rundi od 32). Rezultirajući rezultat se zbraja po modulu 2 sa sljedećim blokom informacija i rezultat se pohranjuje u N1 i N2.

Ciklus se ponavlja do posljednjeg bloka informacija. Rezultirajući 64-bitni sadržaj N1 i N2 registara ili njihov dio kao rezultat ovih transformacija naziva se imitacijski prefiks. Veličina prefiksa imitacije se bira na osnovu potrebne pouzdanosti poruka: uz dužinu imitacionog prefiksa r, vjerovatnoća da će promjena u poruci proći nezapaženo jednaka je 2-r Koristi se 32-bitni imitacijski prefiks, odnosno polovina sadržaja registara. Ovo je dovoljno, budući da je, kao i svaki kontrolni zbir, imitacija priloga prvenstveno namijenjena zaštiti od slučajnog izobličenja informacija. Za zaštitu od namjerne izmjene podataka, drugo kriptografske metode- prvenstveno elektronski digitalni potpis.

Prilikom razmjene informacija, prefiks imitacije služi kao neka vrsta dodatnog sredstva kontrole. Izračunava se za otvoreni tekst kada je bilo koja informacija šifrirana i šalje se zajedno sa šifriranim tekstom. Nakon dešifriranja, izračunava se nova vrijednost prefiksa imitacije i uspoređuje s poslanom. Ako se vrijednosti ne podudaraju, to znači da je šifrirani tekst oštećen tokom prijenosa ili su korišteni neispravni ključevi tokom dešifriranja. Prefiks imitacije je posebno koristan za provjeru ispravnog dešifriranja ključnih informacija kada se koriste sheme s više ključeva.

Algoritam GOST 28147-89 smatra se vrlo jakim algoritmom - trenutno nisu predložene efikasnije metode za njegovo otkrivanje od gore navedene metode „grube sile“. Njegova visoka sigurnost postiže se prvenstveno zahvaljujući velikoj dužini ključa - 256 bita. Kada se koristi tajna poruka za sinhronizaciju, efektivna dužina ključa se povećava na 320 bita, a šifriranje zamjenske tablice dodaje dodatne bitove. Osim toga, kriptografska snaga ovisi o broju rundi transformacije, koji bi prema GOST 28147-89 trebao biti 32 (pun efekat disperzije ulaznih podataka postiže se nakon 8 rundi).

Prednosti GOST 28147-89 su prisutnost zaštite od nametanja lažnih podataka (generiranje imitacija) i isti ciklus šifriranja u sva četiri GOST algoritma.

Algoritam šifriranja GOST 28147-89. Jednostavna metoda zamjene. — Arhiva WASM.RU

„Dok si živ, ne umri, pogledaj ovaj svijet.
Mnogi ovdje imaju mrtvu dušu - mrtvi su iznutra.
Ali hodaju i smiju se, ne znajući da ih nema,
Ne žuri sa svojim samrtnim časom”, rekla mi je.

Aria, "Tamo gore"

2.1 Feistelove mreže.
2.2 Blok šifra GOST 28147-89

3.1 Ključne informacije
3.2 Osnovni korak kripto konverzije

3.3 Osnovni ciklusi:32-Z, 32-P.

4.1 Implementacija glavnog koraka kripto konverzije
4.2 Povećanje brzine algoritma
5. Zahtjevi za ključne informacije
6. Spisak korišćene literature
7. Priznanja

Uvod.

Ovaj dokument je moj pokušaj da opišem metodu za jednostavnu zamjenu algoritma za šifriranje GOST 28147-89 najjednostavnijim, ali ipak tehnički kompetentnim jezikom. Čitalac će reći svoje mišljenje o tome koliko sam uspio nakon što pročita prvih šest tačaka.

Da bi moj rad dao više koristi Preporučujem da se naoružate radovima autora navedenih na listi referenci. Preporuča se i kalkulator kako bi imao funkciju za izračunavanje operacije XOR, jer čitanje članka pretpostavlja da čitatelj namjerava proučiti ovaj algoritam šifriranja. Iako je pogodan i kao referentni vodič, ovaj članak sam napisao posebno kao trening.

Uvod u blok šifre.

Prije nego počnemo gledati algoritam, moramo se upoznati sa istorijom stvaranja ove vrste šifri. Algoritam spada u kategoriju blok šifri, u čijoj arhitekturi su informacije podijeljene na konačan broj blokova, posljednji naravno ne može biti potpun. Proces enkripcije se odvija upravo preko kompletnih blokova, koji formiraju šifrogram. Završni blok, ako je nepotpun, dopunjen je nečim (o nijansama njegovog završetka govorit ću u nastavku) i šifriran je na isti način kao i potpuni blokovi. Pod šifrogramom podrazumijevam rezultat funkcije enkripcije koja djeluje na određenu količinu podataka koje je korisnik predao na šifriranje. Drugim riječima, šifrogram je konačni rezultat enkripcije.

Istorija razvoja blok-šifara vezana je za rane 70-te godine, kada je kompanija IBM, shvativši potrebu za zaštitom informacija pri prenosu podataka preko kompjuterskih komunikacionih kanala, počela sa implementacijom sopstveni program naučno istraživanje posvećeno zaštiti informacija u elektronskim mrežama, uključujući kriptografiju.

Grupu istraživača i programera iz IBM-a, koja je započela istraživanje sistema šifriranja sa simetričnom šemom ključa, predvodio je dr. Horst Feistel.

2.1 Feistelove mreže

Arhitektura nove metode šifriranja koju je Feistel predložio u klasičnoj literaturi nazvana je “Feistelova arhitektura”, ali na ovog trenutka u ruskoj i stranoj literaturi koristi se ustaljeniji izraz - "Feistelova mreža" ili Feistelova mreža. Nakon toga, "Luciferova" šifra je izgrađena koristeći ovu arhitekturu - koja je kasnije objavljena i izazvala je novi val interesovanja za kriptografiju općenito.

Ideja Feistelove mrežne arhitekture je sljedeća: ulazni tok informacija je podijeljen na blokove veličine n bitova, gdje je n paran broj. Svaki blok je podijeljen na dva dijela - L i R, zatim se ti dijelovi unose u iterativni blok šifru, u kojoj je rezultat j-te faze određen rezultatom prethodne faze j-1! To se može ilustrirati primjerom:

Rice. 1

Gdje je funkcija A glavna radnja blok šifre. To može biti jednostavna radnja, kao što je operacija XOR, ili može imati složeniji oblik i biti niz niza jednostavnih radnji - modulo zbrajanje, pomak ulijevo, zamjena elementa, itd., ukupno ove jednostavnim koracimačine takozvani glavni korak kripto-transformacije.

Treba napomenuti da su ključni elementi operacije funkcije nabavka ključnih elemenata i operacija XOR, a koliko su te operacije osmišljene ukazuje na kriptografsku snagu šifre u cjelini.

Kako bi ideja Feistelovih mreža bila potpuno jasna, razmotrimo najjednostavniji slučaj prikazan u pirinač. 1, pri čemu će se u funkciji A – pojaviti operacije “mod 2” (“xor”), ali ovo najjednostavniji slučaju, u ozbiljnijoj situaciji, na primjer, skrivanje informacija od nacionalnog značaja, funkcija A može biti složenija (koliko sam vidio, funkcija A može biti vrlo složena):

Početni podaci:

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

Nabavite kod za šifriranje

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

Objasnimo naše postupke:

1. Ova operacija je dodatak modu 2 4. U praksi se takva operacija svodi na jednostavno sabiranje, gdje moramo sabrati dva broja i zanemariti prenošenje u 5. znamenku. Budući da, ako stavimo eksponente iznad cifara binarnog prikaza broja, biće eksponent četiri iznad pete znamenke, pogledajmo sliku ispod, koja pokazuje radnje naše operacije:

Rice. 2

Ovdje sam strelicom pokazao na eksponente, kao što vidite, rezultat je trebao biti 10100, ali pošto mod 2 4 operacija zanemaruje prijenos, dobijamo 0100.

2. Ova operacija se u literaturi naziva mod 2 implementirana je na asembleru pomoću naredbe XOR. Ali njegov tačniji naziv je mod 2 1. Bez ove jedinstvene operacije, teško je moguće izgraditi brz, lako implementiran algoritam enkripcije i, u isto vrijeme, biti prilično otporan na kriptovanje. Jedinstvenost ove operacije je u tome što je ona sama sebi suprotna! Na primjer, ako je broj A XORED sa brojem B, rezultat je B. U budućnosti, dovoljno je XOR brojeve B i C jedan s drugim da dobijemo prethodnu vrijednost A!

U ovoj operaciji dobili smo 1010 sa brojevima 1110 i 0100, da bismo vratili 1110, dovoljno je XOR brojeve 0100 i 1010 jedan s drugim! Više o ovoj operaciji možete pročitati u članku priloženom uz web stranicu. www.wasm.ru, « Osnovni vodič zaCRC_algoritmi za detekciju grešaka» autor koji Ross N. Williams. U ovom radu postoji poenta - “ 5. Binarna aritmetika bez prijenosa" Operacija je opisana u ovom članku. xor! Uzvikujem jer je u ovom članku ova operacija tako opisana da čitatelj ne samo da razumije kako ova operacija funkcionira, već je čak i započinje vidi, cuj i oseti!

3. Ova radnja je neophodna kako bi se prilikom dešifriranja šifrograma mogle dobiti originalne vrijednosti.

2.2 Blok šifra GOST 28147-89

Algoritam šifriranja GOST 28147 – 89 pripada kategoriji blok šifri koje rade prema arhitekturi uravnoteženih Feistel mreža, gdje su dva dijela odabranog bloka informacija jednake veličine. Algoritam je razvijen u utrobi osmog odjela KGB-a, sada transformiran u FAPSI, a uspostavljen je kao standard za šifriranje Ruske Federacije još 1989. godine pod SSSR-om.

Za rad ovu metodu Algoritam treba da razbije informacije u blokove od 64 bita. Generirajte ili unesite u sistem šifriranja sljedeće ključne informacije: ključ i tablicu zamjene. Izbor ključa i zamjenske tablice prilikom šifriranja treba shvatiti vrlo ozbiljno, jer Ovo je temelj za sigurnost vaših informacija. Za informacije o tome koji su zahtjevi nametnuti ključu i zamjenskoj tablici, pogledajte odlomak „Zahtjevi za ključne informacije“.

Kada razmatramo metodu, nećemo se fokusirati na ovo, jer ovaj članak, kao što sam već rekao, napisan je s ciljem da nauči čitatelja kako šifrirati podatke koristeći metodu jednostavne zamjene ovog algoritma enkripcije, ali svakako ćemo se dotaknuti ovog pitanja na kraju članka.

Teoretski minimum.

3.1 Ključne informacije

Kao što sam već rekao, sljedeće aktivno učestvuju u enkripciji podataka:

3.1.1. Ključ je niz od osam elemenata, svaki veličine 32 bita. Dalje ćemo ga označiti simbolom K, a elementi od kojih se sastoji su k1, k2, k3, k4, k5, k6, k7, k8.

3.1.2 Tabela zamjene – matrica od osam redova i šesnaest kolona, ​​u daljem tekstu Hij. Svaki element na preseku reda i i kolone j zauzima 4 bita.

3.2 Osnovni korak kripto konverzije

Glavna radnja u procesu enkripcije je glavni korak kripto konverzije. Ovo nije ništa drugo nego akcija šifriranja podataka pomoću određenog algoritma, samo što su programeri uveli bolno glomazno ime.

Prije početka enkripcije, blok se dijeli na dva dijela L i R, svaki po 32 bita. Oni biraju ključni element i tek onda unose ova dva dijela bloka, ključni element i zamjensku tablicu u funkciju glavnog koraka. Rezultat glavnog koraka je jedna iteracija osnovnog ciklusa, o čemu će biti riječi u sljedećem stav. Glavni korak se sastoji od sljedećeg:

  1. Dodatni dio bloka R se sabira sa ključnim elementom K mod 2 32. Sličnu operaciju sam opisao gore, ovdje je ista stvar samo što eksponent nije "4", već "32" - rezultat ove operacije dalje će biti označen Smod.
  2. Prethodno dobijeni rezultat Smod podijelimo na četverobitne elemente s7, s6, s5, s4, s3, s2, s1, s0 i ubacimo ga u funkciju zamjene. Zamjena se događa na sljedeći način: odaberite element Smod - s i , počnite od početka s najnižim elementom i zamijenite ga vrijednošću iz zamjenske tablice duž i - reda i stupca označene vrijednošću elementa s i . Idemo na s i +1 element i nastavljamo na isti način i nastavljamo sve dok ne zamijenimo vrijednost posljednjeg elementa Smod - rezultat ove operacije će biti označen kao, Ssimple.
  3. U ovoj operaciji, vrijednost Ssimple se ciklički pomjera ulijevo za 11 bita i dobijamo Srol.
  4. Odaberemo drugi dio bloka L i dodamo mod 2 sa Srol, kao rezultat imamo Sxor.
  5. U ovoj fazi, L dio bloka postaje jednak vrijednosti R dijela, a R dio se zauzvrat inicijalizira rezultatom Sxor-a i ovo je kraj funkcije glavnog koraka!

3.3 Osnovni ciklusi: “32-Z”, “32-R”.

Da bi se šifrirala informacija, ona mora biti podijeljena na blokove veličine 64 bita, naravno, posljednji blok može biti manji od 64 bita. Ova činjenica je Ahilova peta ove metode “jednostavne zamjene”. Budući da je njegovo dodavanje na 64 bita vrlo važan zadatak u povećanju kriptografske snage šifrograma, ovo osjetljivo mjesto, ako je prisutno u nizu informacija, možda i nije (na primjer, datoteka veličine 512 bajtova !), treba tretirati sa velikom pažnjom odgovorno!

Nakon što podijelite informacije u blokove, trebali biste podijeliti ključ na elemente:

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

Sama enkripcija se sastoji od korištenja takozvanih osnovnih ciklusa. Što zauzvrat uključuje n-ti broj osnovnih koraka kripto konverzije.

Osnovni ciklusi su, kako da kažem, označeni: n – m. Gdje je n broj glavnih koraka kripto konverzije u osnovnom ciklusu, a m "tip" osnovnog ciklusa, tj. O čemu pričamo, “Z” enkripciji ili “R” enkripciji podataka.

Osnovni ciklus šifriranja 32-3 sastoji se od 32 glavna koraka kripto-transformacije. Funkcija koja implementira akcije koraka snabdjevena je blokom N i ključnim elementom K, gdje se prvi korak javlja sa k1, drugi iznad dobijenog rezultata sa elementom k2 itd. prema sljedećoj shemi:

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 dešifriranja za 32-P odvija se na sličan način, ali se ključni elementi isporučuju obrnutim redoslijedom:

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

Vježbajte.

4.1 Implementacija glavnog koraka kripto konverzije

Nakon što smo se upoznali sa teorijom šifriranja informacija, došlo je vrijeme da vidimo kako se šifriranje odvija u praksi.

Početni podaci:

Uzmimo blok informacija N = 0102030405060708h, ovdje su dijelovi L i R jednaki:

L = 01020304h, R =05060708h, uzmi ključ:

K = ' as28 zw37 q839 7342ui23 8e2t wqm2 ewp1’ (ovo su ASCII kodovi, da biste vidjeli heksadecimalni prikaz, možete otvoriti ovu datoteku u načinu pregleda u Total Commander pritiskom na " F3" a zatim ključ " 3 "). U ovom ključu vrijednosti elementa će biti:

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

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

Uzmimo i sljedeću zamjensku tablicu:

Rice. 3

Ovdje su redovi numerirani od 0 do 7, kolone od 0 do F.

Upozorenje: Sve informacije, uključujući ključ sa zamjenskom tablicom, uzimaju se kao primjer za razmatranje algoritma!

Koristeći “Ulazne podatke” potrebno je dobiti rezultat glavnog koraka kripto-konverzije.

1. Odaberite dio R = 05060708h i ključni element k1 = ‘as28’, u heksadecimalnom obliku ključni element će izgledati ovako: 61733238h. Sada izvodimo operaciju sumiranja mod 2 32:

Rice. 4

Kao što možete vidjeti na slici, nismo imali prijenos na 33 bita označena crvenom bojom i sa eksponentom “ 32 " A da imamo druge vrijednosti za R i ključni element, to bi se vrlo lako moglo dogoditi, a onda bismo to zanemarili i u budućnosti bismo koristili samo bitove označene žutom bojom.

Ovu operaciju izvodim koristeći komandu asemblera dodati:

; eax = R, ebx = 'as28'

Rezultat ove operacije je Smod = 66793940h

2. Ovo je sada najzahtjevnija operacija, ali ako bolje pogledate, više nije tako strašno kao što se na prvi pogled čini. Zamislimo Smod u sljedećem obliku:

Rice. 5

Pokušao sam vizualizirati Smod elemente na slici, ali ću ipak objasniti:

s0 = 0, s1 = 4, s2 = 9, itd.

Sada, počevši od najnižeg elementa s0, vršimo zamjenu. Sećanje na poentu “ 3.2 Osnovni korak kripto konverzije» i – red, s i – kolona, ​​potražite vrijednost u nultom redu i nultom stupcu:

Fig.6

Dakle, trenutna vrijednost Smoda nije 6679394 0 h, a 6679394 5 h.

Počnimo sa zamjenom s1, tj. četiri. Koristeći prvi red i četvrti stupac (s1= 4!). Pogledajmo sliku:

Rice. 7

Sada je vrijednost Smod, a ne 667939 4 5h, 667939 2 5h. Pretpostavljam da je algoritam zamjene sada jasan čitaocu i mogu reći da će nakon ovoga konačni rezultat Ssimplea imati sljedeću vrijednost - 11e10325h.

O tome kako se to najlakše može implementirati u obliku asemblerskih naredbi govorit ću kasnije u sljedećem pasusu, nakon što budem govorio o proširenoj tabeli.

  1. Moramo pomaknuti rezultirajuću Ssimple vrijednost 11 bita ulijevo.

Rice. 8

Kao što vidite, ova akcija je prilično jednostavna i implementira se jednom naredbom asemblerskog jezika - rol a rezultat ove operacije Srol je 0819288Fh.

4. Sada ostaje da XOR dio L našeg informacijskog bloka sa vrijednošću Srol. Uzimam kalkulator iz w2k sp4 i dobijam Sxor = 091b2b8bh.

5. Ova akcija je konačna i jednostavno dodjeljujemo, čistimo R, vrijednost dijela L i inicijaliziramo dio L vrijednošću Sxor.

Konačan rezultat:

L = 091b2b8bh, R = 01020304h

4.2 Povećajte brzinu algoritma

Sada razgovarajmo o optimizaciji algoritma za brzinu. Prilikom realizacije bilo kog projekta morate voditi računa da najbrže radi program koji radi sa registrima češće nego sa memorijom, a tu je i ova prosudba veoma važna, jer preko jednog bloka informacija postoje čak 32 akcije enkripcije!

Kada sam implementirao algoritam šifriranja u svoj program, uradio sam sljedeće:

1. Odabrani dio bloka L u registar eax, a R u edx.

2. Esi registar je inicijaliziran adresom proširenog ključa, više o tome u nastavku.

3. Dodijelio sam vrijednost adrese proširene zamjenske tablice ebx registru, više o tome u nastavku

4. Prenio informaciju tačaka 1,2, 3 u funkciju osnovnog ciklusa 32 - Z ili 32 - R, ovisno o situaciji.

Ako pogledate dijagram ponude ključnih elemenata u paragrafu “ Osnovni ciklusi: “32-Z”, “32-R”", tada se naš ključ za osnovni ciklus 32 - Z može predstaviti na sljedeći način:

K 32-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'

One. od početka su k1,k2,k3,k4,k5,k6,k7,k8 - as28’, ‘zw37’, ‘q839', '7342', 'ui23', '8e2t', 'wqm2', 'ewp1' Ova sekvenca se ponavlja tri puta. Tada elementi idu obrnutim redoslijedom, tj: k8,k7,k6,k5,k4,k3,k2,k1 - 'ewp1', 'wqm2', '8e2t', 'ui23', '7342', 'q839', 'zw37', 'as28'.

Unapred sam rasporedio elemente u nizu redosledom kojim treba da se unose u 32 - Z. Tako sam povećao potrebnu memoriju po okretu, ali sam se spasio nekih procesa razmišljanja koji mi nisu bili potrebni i povećao brzinu algoritam, za smanjenjem vremena pristupa memoriji! Ovdje sam opisao samo ključ za 32 - Z, za ciklus 32 - P uradio sam isto, ali koristeći drugačiju šemu za dovod elemenata, koju sam također opisao u paragrafu “ Osnovni ciklusi: “32-Z”, “32-R”».

Vrijeme je da opišemo implementaciju zamjenske funkcije, kao što sam obećao gore. Nisam to mogao ranije da opišem, jer... ovo zahtijeva uvođenje novog koncepta - proširene tablice zamjene. Ne mogu da ti objasnim šta je to. Umjesto toga, pokazaću vam je, a vi sami možete formulirati šta je to – proširena tablica zamjene?

Dakle, da bismo razumjeli šta je proširena zamjenska tablica, potrebna nam je zamjenska tablica, na primjer, uzeću onu prikazanu na Sl. 3.

Na primjer, trebali smo zamijeniti broj 66793940h. Predstaviću ga u sledećem obliku:

Rice. 9

Sada ako uzmemo elemente s1, s0, tj. niski bajt, tada će rezultat funkcije zamjene biti jednak 25h! Nakon što sam pročitao članak Andreja Vinokurova, koji sam citirao u paragrafu „ Spisak korišćene literature", zaista ćete otkriti da ako uzmete dva niza možete dobiti niz koji vam omogućava da brzo pronađete zamjenske elemente koristeći komandu asemblera xlat. Kažu da postoji još jedan brži način, ali Andrej Vinokurov proveo je oko četiri godine istražujući brze algoritme za implementaciju GOST-a! Mislim da nema potrebe da se ponovo izmišlja točak kada već postoji.

Dakle, o nizu:

Uzmimo prva dva reda, nulu i prvu, i napravimo niz od 256 bajtova. Sada uočavamo jednu posebnost: ako treba da konvertujemo 00h, onda će rezultat biti 75h (oslanjamo se na sliku 3) - ovu vrednost stavljamo u niz na ofsetu 00h. Uzimamo vrijednost 01h, rezultat zamjenske funkcije 79h, stavljamo je u niz na pomaku 01 i tako sve do 0FFh, što će nam dati 0FCh, koje stavljamo u niz na offsetu 0FFh. Tako smo dobili proširenu tablicu zamjena za prvu grupu redova: prvi i nula. Ali i dalje postoje tri grupe: druga strana 2, strana 3, treća strana 4, strana 5, četvrta strana 6, strana 7. Sa ove tri grupe se bavimo na isti način kao i sa prvom. Rezultat je proširena tablica zamjene!

Sada možete implementirati algoritam koji će izvršiti zamjenu. Za ovo uzimamo izvorni kodovi, koji je Andrej Vinokurov objavio na svojoj stranici, pogledajte “ Bibliografija».

lea ebx,extended_table_simple

mov eax,[stavite broj koji treba zamijeniti]

dodajte ebx,100h ;pređite na sljedeća dva čvora

sub ebx,300h ; tako da će u budućnosti ebx pokazivati ​​na tabelu

Sada postoji još jedna karakteristika: prethodnim radnjama ne samo da smo zamijenili, već smo i pomaknuli broj 8 bitova ulijevo! Sve što treba da uradimo je da pomerimo broj za još 3 bita ulevo:

i dobijamo rezultat operacije rol eax,11!

Ne mogu ništa više da dodam što se tiče optimizacije, jedino što mogu da naglasim je ono što sam rekao gore - češće koristite registre nego pristupanje memoriji. Mislim da su ove riječi samo za početnike, iskusni ljudi to savršeno razumiju i bez mojih riječi.

Zahtjevi za ključne informacije.

Kako je navedeno u članku Andreja Vinokurova, ključ se bira prema dva kriterija:

Kriterij za jednakovjerovatnu distribuciju bitova između vrijednosti 1 i 0. Tipično, Pearsonov kriterij („hi-kvadrat“) se koristi kao kriterij za jednakovjerovatnu distribuciju bitova.

To znači da ključ, u principu, može biti bilo koji broj. To jest, kada se formira sljedeći bit ključa, vjerovatnoća njegove inicijalizacije na jedan ili nulu je 50/50!

Imajte na umu da se ključ sastoji od osam elemenata, svaki 32 bita, tako da je ukupan broj u ključu 32 * 8 = 256 bita i broj mogući ključevi 2,256! Zar vas ovo ne čudi?

Kriterijum serije.

Ako pogledamo naš ključ, koji sam naveo u paragrafu “ 4.1 Implementacija glavnog koraka kripto konverzije", tada ćete primijetiti da je sljedeća notacija tačna:

Rice. 10

U jednoj frazi, vrijednost k 1 ne bi trebalo da se ponavlja u k 2 ili u bilo kojem drugom ključnom elementu.

Odnosno, ključ koji smo odabrali da smatramo algoritamom šifriranja u potpunosti ispunjava dva gore navedena kriterija.

Sada o odabiru zamjenskog stola:

Sada razgovarajmo o tome kako odabrati pravu tablicu zamjene. Glavni zahtjev za odabir zamjenskih tablica je fenomen "neponavljanja" elemenata, od kojih je svaki 4 bita. Kao što ste već vidjeli gore, svaki red zamjenske tablice se sastoji od vrijednosti 0h, 1h, 2h, 3h, ..., 0fh. Dakle, glavni zahtjev kaže da svaki red sadrži vrijednosti 0h, 1h, 2h, ..., 0fh i svaku takvu vrijednost u jednom primjerku. Na primjer, slijed:

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

U potpunosti ispunjava ovaj zahtjev, ali ipak! Ne preporučuje se odabir takvog niza kao niza. Jer ako unesete vrijednost na ulaz funkcije koja se oslanja na takav niz, onda ćete dobiti istu vrijednost kao i izlaz! Ne veruješ mi? Zatim uzmite broj 332DA43Fh i osam takvih redova kao tabelu zamjena. Izvršite operaciju zamjene i uvjeravam vas, izlaz koji ćete dobiti je 332DA43Fh! Odnosno, isto kao i ono što ste poslali kao input za operaciju! Ali to nije znak dobrog ponašanja prilikom šifriranja, zar ne?

Ovo je bio jedan zahtjev, sljedeći kriterij kaže da - svaki bit izlaznog bloka mora biti statistički nezavisan od svakog bita ulaznog bloka!

Kako ovo izgleda jednostavnije? A evo kako smo, na primjer, odabrali element s0 = 0Fh, 01111b iz gornjeg broja. Vjerovatnoća da ćemo sada zamijeniti prvi bit sa jedan ili nulu je 0,5! Vjerovatnoća zamjene drugog, trećeg i četvrtog bita, svaki bit, posebno, sa jedinicama ili nulama je također 0,5 Prilikom odabira s1 = 0Eh, vjerovatnoća da ćemo zamijeniti nulti bit, a to je “0”, sa. nula ili jedan je previše jednak – 0,5! Dakle, prema ovom kriteriju, ne postoji obrazac između zamjene nula bitova elemenata s0, s1! Da, možete zamijeniti jedinice, ali možete zamijeniti i nule.

Da biste procijenili tabelu prema ovom kriteriju, možete napraviti tablicu koeficijenata korelacije izračunate pomoću formule:

Ako je p = 1, tada je vrijednost bita j na izlazu jednaka vrijednosti bita i na ulazu za bilo koju kombinaciju bita na ulazu;

Ako je p = -1, tada je vrijednost izlaznog bita j uvijek inverzna od ulaznog bita i;

Ako je p = 0, tada će izlazni bit j jednako vjerovatno uzeti vrijednosti 0 i 1 za bilo koju fiksnu vrijednost ulaznog bita i.

Uzmimo primjer jednog reda:

Podijelimo ga na "komponente":

Izračunajmo jedan koeficijent koristeći gornju formulu. Da biste lakše razumjeli kako se to radi, objasnit ću detaljnije:

Uzimamo 0. bit 0. broja (0) na ulazu i 0. bit 0. broja na izlazu (1) i izvodimo operaciju 0 XOR 1 = 1.

Uzimamo 0. bit 1. broja (1) na ulazu i 0. bit 1. broja na izlazu (1) i izvodimo operaciju 1 XOR 1 = 0.

Uzimamo 0. bit 2. broja (0) na ulazu i 0. bit 2. broja na izlazu (0) i izvodimo operaciju 0 XOR 0 = 0.

Uzimamo 0. bit 3. broja (1) na ulazu i 0. bit 3. broja na izlazu (1) i izvodimo operaciju 1 XOR 1 = 0.

Nakon što je izvršeno uzastopno XOR operacije u ovom nizu, brojimo sve vrijednosti koje nisu nula, dobijamo vrijednost 6. Otuda P 00 = 1-(6/2 4-1) = 0,25. Dakle, pokazalo se da je vrijednost bita 0 na izlazu jednaka vrijednosti bita 0 na ulazu u 4 slučaja od 16;

Konačna tabela kvota:

Kao što se vidi iz tabele koeficijenata korelacije, bit 3 na ulazu je invertovan u odnosu na bit 0 na izlazu u 14 od 16 slučajeva, što je 87,5%. Uzmimo još jedan primjer za raznolikost:

Tabela koeficijenata će biti sljedeća (ko nije lijen može preračunati)

Pa, u ovoj tabeli stvari su još gore - bitovi 1 i 2 grupe ostaju nepromijenjeni! Kriptoanalitičar ima prostora za okretanje, jednostavnom pretragom ("brute sile"), pronađene su permutacijske tabele koje odgovaraju navedenoj teoriji (do danas - 1276 kombinacija).

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

Spisak korišćene literature.

  1. Članak Andrey Vinokurov:

GOST 28147-89 algoritam šifriranja, njegova upotreba i implementacija

za kompjutere Intel platforme x86.

Ovdje su izvorni kodovi za implementaciju algoritma šifriranja.

  1. Članak Horsta Feistela:

Kriptografija i kompjuterska sigurnost.

(može se naći na istoj adresi kao i prethodni članak)

  1. Ross N. Williams:

Osnovni vodič za CRC algoritme za otkrivanje grešaka

Objavljeno na web stranici www.wasm.ru.

Priznanja

Želeo bih da izrazim svoju zahvalnost svim posetiocima foruma www.wasm.ru. Ali posebno bih želeo da se zahvalim ChS-u, koji je trenutno poznat kao SteelRat, pomogao mi je da razumem stvari koje verovatno nikada ne bih razumeo, kao i pomoć u pisanju pasusa: “ Zahtjevi za ključne informacije“, glavni dio ovog pasusa napisao je on. Takođe sam duboko zahvalan radniku KSTU. A.N. Tupoljev Anikin Igor Vjačeslavovič i bio bi greh ne spomenuti Krisa Kasperskog zbog onoga što jeste i Volodju / wasm.ru zbog njegovih uputstava. Oh, i ja to dobijam od njega. Takođe želim da pomenem Sega-Zero/Callipso jer su mi doveli na pamet malo matematičke džungle.

To je verovatno sve što bih želeo da vam kažem.

Bio bih zahvalan za kritike ili pitanja vezana za ovaj članak ili samo savjet. Moji kontakt detalji: [email protected], ICQ – 337310594.

Srdačan pozdrav, Evil`s Interrupt.

P.S.: Nisam pokušao nikoga nadmašiti ovim člankom. Napisano je sa namjerom da olakšam proučavanje GOST-a, a ako imate poteškoća, to ne znači da sam ja kriv za to. Budite razumni i strpljivi, svaka vam čast!



Učitavanje...
Top