Algoritam kriptografske pretvorbe prema GOST 28147 89. Domaći standard šifriranja podataka. Zahtjevi za ključne informacije

U društvu dobro poznati izraz "performanse procesora" je objektivan, izračunati parametar koji se mjeri u flopovima. Međutim, većina to mjeri u gigahercima, naivno vjerujući da je to isto. Nitko ne poznaje pojam "izvedba koda", a odmah ću objasniti i zašto.

Razlog je taj što sam se toga tek nedavno dosjetio i još nikome nisam rekao za to. Međutim, performanse koda, kao i performanse procesora, imaju objektivne karakteristike koje se mogu mjeriti. Ovaj se članak posebno odnosi na izvedbu koda koji izvršava jezgra procesora.

Kako se mjeri izvedba koda? Budući da sam ja prvi govorio o tome, onda ću s pravom otkrivača to mjeriti u RTT-ljestvicama;).

Sad ozbiljno. U modernim procesorima glavne transformacije su operacije na 32-bitnim brojevima, sve ostalo je uglavnom egzotično. Stoga ćemo uzeti u obzir glavnu stvar - operacije s 32-bitnim brojevima. Koliko 32-bitnih operacija mislite da jezgra modernog procesora može istovremeno izvršiti?

Učenik će odgovoriti - jedan, učitelj će pomisliti i reći da četiri, profesionalac - da je do sada samo dvanaest operacija.

Dakle, programski kod koji učitava sve izvršne uređaje procesora istovremeno tijekom cijelog vremena izvođenja koda imat će izvedbu od 12 RTT NIS. Maksimum! Da budem iskren, nikada prije nisam napisao takav kod, ali u ovom ću se članku pokušati potruditi.

Dokazat ću da je moguć kod s simultanim izvođenjem dvanaest 32-bitnih operacija

Programski kod koji koristi jednu izvršnu jedinicu u jezgri procesora prirodno će imati izvedbu od 1 RTT. Programi koje generiraju prevoditelji jezika visoke razine i interpreteri virtualnih strojeva mogu se "pohvaliti" takvim performansama koda. Ne treba pretpostaviti da pokazatelj korištenja CPU-a, koji se može vidjeti u upravitelju zadataka OS-a, može poslužiti kao objektivan kriterij za učinkovitost koda. Opterećenje jezgre procesora može biti 100%, ali će programski kod u sebi koristiti jedan izvršni uređaj (izvedba 1 RTT). U ovom slučaju, pri 100% opterećenja, jezgra procesora će raditi na 1/12 svoje maksimalne performanse. Drugim riječima, kada Windows Task Manager pokazuje maksimalnu upotrebu CPU-a, njegova stvarna izvedba može varirati od 1 do 12 RTT. Gledajući u prozoru performansi 100% opterećenje bilo koje procesorske jezgre, pogrešno je pretpostaviti da svi izvršni uređaji rade u ovoj jezgri, nikako!

Jedini neizravni kriterij za procjenu maksimalnih performansi procesorske jezgre je njegova potrošnja energije i, kao rezultat toga, buka hladnjaka. Sada, ako je hladnjak bučan, onda da - opterećenje je otišlo do maksimuma. Međutim, vrijeme je da završimo s općim konceptima i prijeđemo na oštru praksu.

Tradicionalna provedba GOST 28147-89

Nisam profesionalac u području informacijske sigurnosti, ali sam ipak upoznat s temom enkripcije. Moji razgovori s profesionalnim kriptografom kojeg duboko poštujem nadahnuli su me da se upustim u specifično simetrično šifriranje toka. I, uzevši ovu temu, pokušao sam to učiniti dobro, i ne samo dobro, već i brzo, izvodeći maksimalan broj operacija u jedinici vremena. Drugim riječima, suočio sam se sa zadatkom da napišem programski kod s maksimalnom RTT vrijednošću.

Kriptografska pretvorba prema GOST 28147-89 koristi se za strujanje šifriranja informacija u komunikacijskim kanalima i na diskovnim pogonima.

Trenutno se široko koristi softverska implementacija ovog GOST-a na RON središnjeg procesora. U dobro poznatim metodama implementacije GOST-a, sve tajne informacije (ključevi za šifriranje, zamjenski blokovi) smještene su u RAM. To smanjuje pouzdanost enkripcije, budući da je uz RAM dump moguće u potpunosti otkriti sve tajne elemente kripto transformacije. Osim toga, metoda ima ograničenja brzine zbog lokacije glavnih objekata kripto-transformacije u OP-u i nepotpunog učitavanja ALU izvršnih uređaja. Moderni procesori, implementirajući kriptoproceduru koristeći dobro poznatu metodu, mogu osigurati brzinu šifriranja od 40-60 megabajta u sekundi. A ako to stvarno shvatite do kraja, onda je razlog niske performanse i slabe sigurnosti kripto konverzije softverska implementacija zamjenskog bloka. Pogledajte njegov opis u GOST-u na sl. 1.

Prema klauzuli 1.2 GOST-a, ovaj blok implementira permutacije tetrada (četiri bita) u 32-bitnoj riječi, ali arhitektura procesora x86 / 64 i njegov skup instrukcija nisu sposobni učinkovito manipulirati tetradima.

Za programsku implementaciju supstitucijskog bloka koriste se posebne tablice u RAM-u koje se pripremaju u fazi inicijalizacije kriptofunkcije. Ove tablice kombiniraju supstitucijske čvorove susjednih tetrada u tablice 8 × 8 bajtova, tako da postoje četiri 256-bajtne tablice u RAM-u.

U naprednijim implementacijama, ove tablice su veličine 1024 bajta (256 riječi od četiri bajta). To je učinjeno kako bi se u tablicama implementirao dodatni ciklički pomak za 11 pozicija 32-bitne riječi dobivene kao rezultat zamjene (sljedeća operacija algoritma konverzije prema GOST-u). Primjer implementacije GOST-a prema ovoj metodi prikazan je u Dodatku 1 (na disku).

Informacije supstitucijskog bloka su tajna komponenta kriptofunkcije (kako je formulirana u GOST-u, vidi sliku 2).

Postavljanje ovih tablica s ključevima zamjenskog bloka u OP proturječi zahtjevima GOST-a (klauzula 1.7), jer tajne informacije postaju dostupne programima trećih strana koji se pokreću na računalnoj instalaciji. FSB, koji također certificira softverske implementacije enkripcije prema GOST-u, gleda na ovo kršenje, blago rečeno, snishodljivo. Ako za postavljanje ključeva u OP, FSB i dalje zahtijeva "smokvin list" - maskiranje ključeva operacijom XOR, tada ništa nije potrebno za zamjenske blokove u OP-u, oni su pohranjeni u čistom tekstu.

Ukratko, FSB preskače takve softverske implementacije kriptoprocedure, unatoč očitom smanjenju snage takvog rješenja i izravnom kršenju vlastitih zahtjeva prema GOST-u (klauzula 1.7). I to usprkos dobro poznatim metodama razbijanja šifara uklanjanjem deponije memorije ...

Vratit ćemo se na pitanje pohranjivanja ključeva i zamjenskih blokova u internim registrima procesora malo kasnije (postoji lijepo i brzo rješenje), ali za sada ćemo ključeve šifriranja pohranjivati ​​samo u MMX registre, to je pouzdanije.

Ali dosta teksta, važno je u okviru teme koja se razmatra da ovaj programski kod ima izvedbu 1 RTT-shku. Sada napišimo kod s performansama od 2 RTT-a.

Višenitna implementacija GOST 28147-89

Jedini način da se ubrzaju kriptoprocedure u poznatom algoritmu je uvođenje multithreadinga. Smisao takve promjene u implementaciji algoritma je paralelno izračunavanje nekoliko blokova podataka odjednom.

Većina programera pod paralelnim procesiranjem podrazumijeva samo rad nekoliko procesorskih jezgri, sinkroniziranih prekidima i semaforima u memoriji.

Međutim, postoji još jedna varijanta paralelne obrade podataka na jednoj jezgri procesora. Dopustite mi da objasnim ovu neočitu ideju.

Moderni procesori uključuju najmanje dvije, pa čak i tri do šest aritmetičko-logičkih jedinica. Ovi ALU-ovi (FPU-ovi, adresne aritmetičke jedinice i tako dalje) mogu raditi neovisno jedan o drugom, jedini uvjet za njihov paralelni rad je nepreklapanje softverskih objekata na kojima rade. Drugim riječima, u uputama koje istovremeno izvršavaju ALU, memorijske adrese i brojevi registara moraju biti različiti. Ili, operacije pisanja ne bi trebale biti izvedene u zajedničke registre i memorijske adrese kojima pristupaju različiti izvršni uređaji procesora.

Učitavanje rada svih ALU-ova kontrolira poseban hardverski blok unutar jezgre procesora - planer, koji gleda kroz izvršni kod naprijed, do dubine od 32–64 bajta. Ako planer pronađe naredbe koje se mogu pokrenuti na ALU bez sukoba, tada ih pokreće istovremeno na različitim izvršnim jedinicama. U ovom slučaju brojač izvršenih naredbi pokazuje na izvršnu naredbu (u takvoj shemi ih ima nekoliko), nakon čega su sve naredbe već izvršene.

Većina programskih sekvenci generiranih automatski (od strane prevoditelja) ne mogu učitati sve ALU-ove i FPU-ove koji se nalaze u jezgri procesora. U ovom slučaju hardver procesora je u stanju mirovanja, što značajno smanjuje njegove rezultirajuće performanse. Programeri procesora to razumiju i uvode načine za povećanje frekvencije jezgre kada se oprema ne koristi u potpunosti. Hyper trading sustavi su također dizajnirani za to, a ja ću koristiti ovaj sustav za "stisnuti" kod do maksimuma u budućnosti.

Kompajleri, čak i oni najoptimiziraniji, a još više - motori virtualnih strojeva, ne mogu generirati optimizirani kod u smislu brzine. Ovako optimizirani kod može napisati samo programer s inženjerskim znanjem, a alat za pisanje je isključivo asembler.

Karakteristična ilustracija mogućnosti izvođenja nekoliko neovisnih programskih dretvi na jednoj procesorskoj jezgri je GOST implementacija, koja se izvodi u dvije dretve na jednoj procesorskoj jezgri. Ideja koda je jednostavna: postoje dva bloka podataka za šifriranje/dešifriranje, ali jedna procesorska jezgra koja će izvršiti konverziju. Moguće je izvršiti transformaciju za ova dva bloka podataka sekvencijalno, što je do sada i učinjeno. U tom se slučaju vrijeme potrebno za izvođenje transformacija udvostručuje.

Ali možete učiniti drugačije: alternativne naredbe povezane s obradom različitih blokova podataka. Grafički su ove opcije prikazane na sl. 3.


Na slici, gornji primjer prikazuje uobičajeni redoslijed kojim se obrađuju dva neovisna bloka podataka. Prvo se obrađuje prvi blok, a zatim procesor prelazi na obradu drugog bloka. Naravno, rezultirajuće vrijeme jednako je dvostrukom vremenu potrebnom za obradu jednog bloka, a izvršne jedinice procesorske jezgre nisu u potpunosti učitane.

Sljedeće prikazuje primjer s ispreplitanjem naredbi iz različitih niti za obradu. U ovom slučaju, naredbe koje se odnose na različite blokove podataka su isprepletene. Planer odabire instrukcije koje su neovisne jedna o drugoj i prosljeđuje ih ALU1 i ALU2 na izvršenje. Grupiranje naredbi prve i druge dretve na tim ALU-ima se provodi automatski, budući da algoritam rada raspoređivača uključuje grupiranje naredbi s prijenosom prema zajedničkim podacima na istom izvršnom uređaju.

Da bi takav programski kod radio bez mirovanja ALU-a, potrebno je da svaka programska nit radi sa svojim skupom registara. Predmemorija u ovoj shemi postaje usko grlo (ima samo dva ulaza za izlaz podataka), pa ključeve spremamo u MMX registre. Budući da su u ovom slučaju čvorovi zamjene (i pomaka) samo za čitanje u memoriji, mogu ih dijeliti obje programske niti.

Ovo je, naravno, vrlo pojednostavljeno objašnjenje principa paralelnog izvođenja programskih niti na jednoj jezgri, u stvarnosti je sve puno kompliciranije. U praksi je potrebno uzeti u obzir arhitekturu cjevovoda izvršnih jedinica, ograničenja istovremenog pristupa predmemoriji i bloku RON registara, prisutnost adresnih aritmetičkih čvorova, prekidača i još mnogo toga ... Dakle, ovo je tema za profesionalce koji se mogu nabrojati na prste ... jedne ruke.

Metoda paralelne enkripcije učinkovito se provodi samo za 64-bitni način rada procesora, budući da u ovom načinu rada postoji dovoljna količina RON-a (čak 16 komada!). Primjer implementacije GOST-a prema ovoj metodi prikazan je u Dodatku 2 (na disku).

Jasno je da ova implementacija GOST-a ima izvedbu koda od 2 RTT-a. Sada da vidimo kako to utječe na vrijeme izvršenja.

Ciklus šifriranja za jedan tok (Dodatak 1) iznosi 352 ciklusa, a za to vrijeme izračunava se 8 bajtova podataka, za implementaciju GOST-a s dva toka (Dodatak 2) potrebno je 416 procesorskih ciklusa, ali se izračunava 16 bajtova. Tako se rezultirajuća brzina pretvorbe povećava s 80 na 144 megabajta za procesor od 3,6 GHz.

Dobiva se zanimljiva slika: kod sadrži točno dvostruko više uputa, a traje samo 15% duže, ali mislim da su čitatelji već shvatili razlog ove pojave ...

Teoretski, kod iz drugog primjera trebao bi se izvršiti u jednakom broju ciklusa kao kod iz prvog primjera, ali iako planer čvor razvijaju Intelovi inženjeri, oni su također ljudi, a svi smo daleko od savršenstva. Dakle, postoji prilika za procjenu učinkovitosti njihovog stvaranja. Ovaj kod će raditi i na AMD procesoru, a možete usporediti njihove rezultate.

Ako mi netko ne vjeruje na riječ, onda su na disku za takve nevjernike priloženi testni programi sa brojačima taktova. Programi u izvornim kodovima, naravno, u asembleru, tako da postoji prilika da provjerite moje riječi, au isto vrijeme i zavirite u neke trikove profesionalnog kodiranja.

Korištenje SSE-registra i AVX-naredbi modernih procesora za implementaciju GOST 28147-89

Moderni procesori x86/64 arhitekture uključuju skup 16-bajtnih SSE registara i specijaliziranih FPU-ova (najmanje dva) za izvođenje raznih operacija na tim registrima. Moguće je implementirati GOST na ovu opremu, au ovom slučaju zamjenski čvorovi mogu se postaviti ne u obliku tablica u RAM-u, već izravno na namjenske SSE registre.

Na jedan SSE-registar možete smjestiti dvije tablice od 16 redaka odjednom. Tako će četiri SSE registra u potpunosti primiti sve zamjenske tablice. Jedini uvjet za takvo postavljanje je zahtjev za isprepletanjem, prema kojem se tetradi istog bajta moraju smjestiti u različite SSE registre. Dodatno, preporučljivo je nisku i visoku tetradu ulaznih bajtova smjestiti u nisku i visoku tetradu SSE registara.

Ovi zahtjevi su određeni optimizacijom za postojeći skup AVX naredbi. Tako će svaki bajt SSE registra sadržavati dvije tetrade koje odgovaraju različitim bajtovima ulaznog registra supstitucijskog bloka, dok položaj bajta u SSE registru jedinstveno odgovara indeksu u zamjenskoj tablici supstitucijskog bloka.

Dijagram jednog od mogućih smještaja zamjenskih čvorova na SSE registrima prikazan je na sl. 4.


Postavljanje tajnih informacija supstitucijskih čvorova u SSE registre povećava sigurnost kriptoprocedure, ali potpuna izolacija tih tajnih informacija moguća je pod sljedećim uvjetima:

  • Jezgra procesora stavljena je u način rada hosta hipervizora, a blok prekida (APIC) je prisilno onemogućen. U tom je slučaju jezgra procesora potpuno izolirana od operativnog sustava i aplikacija koje se izvode na računalnoj instalaciji.
  • Učitavanje SSE registara i izolacija računalne jezgre izvodi se prije pokretanja OS-a; optimalno je izvršiti te postupke iz pouzdanog modula za pokretanje (TDM).
  • Programi kriptoprocedura prema GOST-u smješteni su u neizmjenjivo memorijsko područje računalne jedinice (bilo BIOS ili flash memorija MDZ).

Usklađenost s ovim zahtjevima osigurat će potpunu izolaciju i nepromjenjivost programskog koda kriptoprocedura i tajnih informacija koje se u njima koriste.

Za učinkovito uzorkovanje iz SSE registara tetrada, koriste se prekidači s više ulaza dostupnih u FPU jedinicama. Ove sklopke omogućuju prijenose iz bilo kojeg bajta izvora u bilo koji bajt odredišta, pomoću indeksa koji se nalaze u posebnom registru SSE indeksa. Štoviše, prijenos se izvodi paralelno za svih 16 bajtova SSE-registra-prijemnika.

Imajući zamjenske čvorove za pohranu na SSE registrima i višeulazni prekidač u FPU jedinicama, moguće je organizirati sljedeću transformaciju u supstitucijskoj jedinici (slika 5).

U ovoj shemi, ulazni registar u svakoj tetradi postavlja adresu za odgovarajuću sklopku, koja prenosi informacije iz pogona zamjenskog čvora u izlazni registar putem sabirnice podataka. Takva se shema može organizirati na tri načina:

  • Napravite odgovarajući dizajn čipa, ali to je za nas fantastično.
  • Reprogramiranje mikrokoda i kreiranje vlastite procesorske instrukcije za implementaciju ove funkcije na postojeće procesore više nije fantazija, ali je, nažalost, nerealno u sadašnjim uvjetima.
  • Napišite program koristeći službene AVX naredbe. Opcija, iako ne baš učinkovita, ali možemo je implementirati "ovdje i sada". To je ono što ćemo sljedeće učiniti.

Prekidačima se upravlja posebnom troadresnom naredbom AVX VPSHUFB. Njegov prvi operand je primatelj informacija od prekidača, drugi je izvor na koji su spojeni ulazi prekidača. Treći operand je kontrolni registar za prekidače, čiji je svaki bajt pridružen odgovarajućem prekidaču; vrijednost u njemu specificira broj smjera iz kojeg prekidač čita informacije. Za opis ove naredbe iz službene Intelove dokumentacije pogledajte sl. 5. Na sl. Slika 6 prikazuje rad ove naredbe - prikazana je samo polovica SSE registara, za drugu polovicu je sve slično.


Prekidač koristi samo četiri najmanje značajna bita za određivanje smjera prebacivanja, zadnji bit u svakom bajtu koristi se za prisiljavanje odgovarajućeg prijemnog bajta na nulu, ali ova funkcija preklopnika još nije potrebna u našem slučaju.

Napisan je program s odabirom prijenosnih računala putem FPU prekidača, ali nisam ga ni stavio u aplikaciju - preslabo je. Imati 128-bitni registar i koristiti samo 32 bita u njemu je neprofesionalno.

Kako se kaže “Naš cilj je horizont” pa ga tako iscijedite...prešat ćemo ga i staviti u vreće!

Ovo nije igra riječi, već surova FPU realnost - SSE registri se mogu podijeliti na jednake dijelove i na tim dijelovima jednom naredbom izvršiti iste transformacije. Da bi procesor to razumio, postoji čarobno slovo "P" - paket koji se nalazi ispred mnemotehnike naredbe, i ništa manje čarobna slova "Q", "D", "W", "B", koja nalaze se na kraju i deklariraju na koje su dijelove SSE registri podijeljeni u ovoj naredbi.

Zanima nas burst mod sa SSE registrom podijeljenim u četiri 32-bitna bloka; sukladno tome, sve će naredbe imati prefiks "P" i završavati simbolom "D". To omogućuje paralelnu obradu četiri bloka od 32 bita jednom procesorskom instrukcijom, odnosno paralelno izračunavanje četiri bloka podataka.

Program koji implementira ovu metodu je dostupan u Dodatku 3, tu su sva objašnjenja.

Međutim, pritisnite pa pritisnite! Moderni procesori imaju najmanje dva FPU-a, a dva neovisna toka instrukcija mogu se koristiti za njihovo potpuno učitavanje. Ako ispravno ispreplićete naredbe iz nezavisnih tokova, tada možete potpuno učitati oba FPU-a i dobiti osam paralelno obrađenih tokova podataka odjednom. Takav program je napisan i možete ga vidjeti u Dodatku 4, ali morate pažljivo pogledati - možete poludjeti. To je ono što se zove, "šifra nije za svakoga ...".

Cijena izdavanja

Upotreba SSE registara za pohranu zamjenskih čvorova je razumljiva - daje određeno jamstvo izolacije tajnih informacija, ali značenje izračuna same kriptofunkcije na FPU nije očito. Stoga su provedena mjerenja vremena izvršenja standardnih postupaka metodom izravne zamjene u skladu s GOST-om za četiri i osam tokova.

Za četiri niti dobivena je brzina izvršenja od 472 procesorska ciklusa. Dakle, za procesor s frekvencijom od 3,6 GHz, jedna nit se smatra brzinom od 59 megabajta u sekundi, a četiri niti, odnosno, brzinom od 236 megabajta u sekundi.

Za osam niti dobivena je brzina izvršenja od 580 procesorskih ciklusa. Tako se za procesor od 3,6 GHz smatra jedna dretva pri brzini od 49 megabajta u sekundi, a osam dretvi pri brzini od 392 megabajta u sekundi.

Kao što čitatelj može primijetiti, kod u primjeru #3 ima propusnost od 4 RTT, dok kod u primjeru #4 ima propusnost od 8 RTT. U ovim primjerima, na SSE registrima, uzorci su isti kao kod korištenja RON-a, samo što je planer smanjio svoju učinkovitost. Sada pruža 20% povećanje trajanja za 2x povećanje duljine koda.

Štoviše, ovi su rezultati dobiveni uporabom univerzalnih AVX naredbi dostupnih u Intelovim i AMD procesorima. Ako optimizirate za AMD procesor, rezultat će biti puno bolji. Zvuči suprotno od trenda, ali je ipak istina, a evo i zašto: AMD procesori imaju dodatni skup instrukcija, tzv. XOP ekstenziju, au tom dodatnom setu instrukcija nalaze se one koje uvelike pojednostavljuju implementaciju GOST algoritam.

Ovo se odnosi na naredbe logičkog paketnog pomaka bajtova i paketnog cikličkog pomaka dvostrukih riječi. Primjeri navedeni u Dodacima 3 i 4 koriste sekvence univerzalnih naredbi koje provode potrebnu transformaciju: u prvom slučaju jedna "extra" naredba, au drugom slučaju četiri dodatne naredbe odjednom. Dakle, optimizacijske rezerve postoje, i to znatne.

Ako govorimo o daljnjoj optimizaciji, vrijedi se sjetiti prisutnosti 256-bitnih registara (YMM-registra), pomoću kojih teoretski možete udvostručiti brzinu izračuna. Ali za sada je to samo perspektiva, trenutno procesori dosta usporavaju prilikom izvršavanja 256-bitnih instrukcija (FPU-ovi imaju širinu putanje od 128 bita). Eksperimenti su pokazali da na modernim procesorima broj od 16 niti na YMM registrima ne daje nikakav dobitak. Ali to je samo za sada, na novim modelima procesora brzina 256-bitnih instrukcija će se nedvojbeno povećati, a zatim će korištenje 16 paralelnih niti postati svrsishodno i dovesti do još većeg povećanja brzine kriptoprocedure.

Teoretski, možete računati na brzinu od 600-700 megabajta u sekundi ako procesor ima dva FPU-a sa širinom radnog puta od 256 bita svaki. U ovom slučaju možemo govoriti o pisanju koda s učinkovitošću od 16 RTT, a to nije fantazija, već bliska budućnost.

mješoviti način rada

Opet se postavlja pitanje broja registara, oni nisu dovoljni za promicanje ovakvog algoritma. Ali hiper način trgovanja će nam pomoći. Jezgra procesora ima drugi skup registara dostupnih u načinu rada logičkog procesora. Stoga ćemo izvršiti isti kod na dva logička procesora odjednom. U ovom načinu rada, naravno, nećemo imati više izvršnih uređaja, ali zbog alternacije možemo dobiti puno opterećenje svih izvršnih uređaja.

Ovdje ne možete računati na povećanje od 50%, usko grlo je cache memorija u kojoj su pohranjene tehnološke maske, ali ipak možete dobiti povećanje od dodatnih 100 megabajta. Ova opcija nije navedena u dodacima (makronaredbe su iste kao one korištene u 8 RTT kodu), ali je dostupna u programskim datotekama. Pa ako netko ne vjeruje u mogućnost enkripcije pri brzini od 500 megabajta u sekundi na jednoj jezgri procesora, neka pusti testne datoteke. Tu su i tekstovi s komentarima da netko ne pomisli da sam lukav.

Ovaj fokus je moguć samo na Intelovim procesorima, AMD ima samo dva FPU-a po dva procesorska modula (analogno načinu hiper-trgovanja). Ali postoje još četiri ALU-a, koje je grijeh ne koristiti.

Možete prebaciti procesorske module Buldožera u način rada sličan načinu hiper trgovanja, ali pokrenite konverziju u RON na različitim modulima u jednoj niti, a u SSE registre u drugoj niti i dobijete isti 12 RTT. Nisam testirao ovu opciju, ali mislim da će kod u 12 RTT raditi učinkovitije na AMD-u. Oni koji žele mogu isprobati, programi za testiranje mogu se vrlo lako prilagoditi za rad na "Buldožerima".

Kome to treba?

Ozbiljno pitanje, ali s jednostavnim odgovorom - svima treba. Uskoro ćemo svi sjesti na oblake, tamo ćemo čuvati i podatke i programe, a tamo, oh, kako želite opremiti svoj, privatni kutak. Da biste to učinili, morat ćete šifrirati promet, a brzina kripto konverzije bit će glavni odlučujući čimbenik za udoban rad u oblaku. Naš izbor algoritama šifriranja je mali - ili GOST ili AES.

Štoviše, čudno, enkripcija AES algoritma ugrađena u procesore pokazala se mnogo sporijom, testovi pokazuju brzinu od 100-150 megabajta u sekundi, a to je s hardverskom implementacijom algoritma! Problem leži u jednonitnom brojanju i zamjenskom bloku koji radi na bajtovima (tablica od 256 redaka). Dakle, GOST se pokazao učinkovitijim u implementaciji na x86 / 64 arhitekturi, tko bi pomislio ...

To je ako govorimo o postignutoj razini brzine enkripcije. A ako imamo na umu teorijska usavršavanja u području poboljšanja učinkovitosti koda, onda najvjerojatnije nikome ne treba. Praktično nema stručnjaka razine 3–6 RTT, prevoditelji općenito generiraju kod na razini 1–2,5 RTT, a većina programera ne poznaje asembler, a ako znaju njegov pravopis, ne razumiju uređaj moderan procesor. A bez ovog znanja, što je asembler, što je nekakav SI-sharp - nije bitno.

Ali nije sve tako tužno: u "donjem redu" nakon tjedan dana besanih noći postoji novi algoritam za implementaciju GOST-a, koji je grijeh ne patentirati. A prijave za patente (čak tri) već su sastavljene i predane, pa gospodo poslovni ljudi u red - žene i djeca imaju popust.

). U isto vrijeme raste broj bilješki o ovom algoritmu u ruskim medijima i blogovima ruskih korisnika: oba pokrivaju rezultate napada na ruski standard s različitim stupnjevima pouzdanosti i sadrže mišljenja o njegovim operativnim karakteristikama. Autori (a samim tim i čitatelji) ovih bilješki često stječu dojam da je domaći algoritam za šifriranje zastario, spor i ima ranjivosti koje ga čine mnogo podložnijim napadima od stranih algoritama za šifriranje slične duljine ključa. Ovim nizom bilješki želimo u pristupačnom obliku ispričati o trenutnom stanju stvari s ruskim standardom. Prvi dio će pokriti sve napade na GOST 28147-89 poznate međunarodnoj kriptografskoj zajednici, trenutne procjene njegove snage. U budućim publikacijama također ćemo detaljno razmotriti svojstva standarda sa stajališta mogućnosti izgradnje učinkovitih implementacija.

Nicolas Courtois - "Veliki i strašni"

Počnimo s pričom o aktivnostima Nicolasa Courtoisa, koji je autor čitavog niza radova o ruskom standardu šifriranja blokova ().

U listopadu 2010. godine započet je proces razmatranja uključivanja algoritma GOST 28147-89 u međunarodnu normu ISO/IEC 18033-3. Već u svibnju 2011. na elektroničkom arhivu ePrint pojavio se članak poznatog kriptografa Nicolasa Courtoisa, obilježen vrlo dvosmislenim stavom svjetske kriptografske zajednice prema njemu. Courtoisove publikacije tužan su primjer manipulacije pojmovima, koja ne otkriva nikakva nova svojstva predmetnog predmeta, već s pretenzijom na senzaciju izaziva širenje pogrešnih mišljenja o njegovim stvarnim svojstvima u nekompetentnoj sredini.

Algebarska metoda

Courtoisovo razmišljanje izgrađeno je oko dvije klase metoda kriptoanalize: algebarskih metoda i diferencijalnih metoda. Razmotrimo prvu klasu metoda.

Pojednostavljeno, metoda algebarske kriptoanalize može se opisati kao sastavljanje i rješavanje velikog sustava jednadžbi, od kojih svako rješenje odgovara cilju kriptoanalitičara (na primjer, ako je sustav sastavljen pomoću jednog para otvorenog teksta i šifriranog teksta, tada sva rješenja ovog sustava odgovaraju ključevima pod kojima se taj otvoreni tekst pretvara u zadani šifrirani). Odnosno, u slučaju problema kriptoanalize blokovne šifre, bit algebarske metode kriptoanalize je da se ključ nalazi kao rezultat rješavanja sustava polinomskih jednadžbi. Glavna poteškoća je sastaviti što jednostavniji sustav, uzimajući u obzir karakteristike pojedine šifre, tako da proces rješavanja traje što je moguće manje vremena. Ovdje ključnu ulogu igraju značajke svake pojedine analizirane šifre.

Algebarska metoda koju je koristio Courtois može se ukratko opisati na sljedeći način. U prvoj fazi koriste se takva svojstva GOST 28147-89 kao postojanje fiksne točke za dio transformacije šifriranja, kao i takozvana točka refleksije. Zbog ovih svojstava, nekoliko parova se odabire iz dovoljno velikog broja parova otvorenog šifriranog teksta, što nam omogućuje da razmotrimo transformacije ne u 32, već samo u 8 rundi. Druga faza sastoji se u činjenici da se na temelju rezultata transformacija od 8 krugova dobivenih u prvoj fazi konstruira sustav nelinearnih jednadžbi u kojem su nepoznanice ključni bitovi. Taj se sustav zatim rješava (ovo zvuči jednostavno, ali je zapravo najdugotrajniji dio metode, jer se sustav sastoji od nelinearnih jednadžbi).

Kao što je već navedeno, nigdje u radu nema detaljnog opisa i analize složenosti druge i glavne faze određivanja ključa. Složenost druge faze određuje složenost cijele metode u cjelini. Umjesto toga, autor iznosi notorne "činjenice", na temelju kojih donosi procjene intenziteta rada. Kaže se da se te "činjenice" temelje na eksperimentalnim rezultatima. Analiza "činjenica" iz opusa Courtoisa u cjelini data je u radovima domaćih autora. Autori ovog rada napominju da su se mnoge Courtoisove "činjenice" iznesene bez ikakvih dokaza tijekom eksperimentalne provjere pokazale lažnima. Autori članka otišli su dalje i, za Courtoisa, analizirali složenost druge faze koristeći dobro utemeljene algoritme i procjene. Dobivene procjene složenosti pokazuju potpunu neprimjenjivost prikazanog napada. Osim domaćih autora, veliki problemi koje Courtois ima s procjenama i opravdanjem svojih metoda također su uočeni, primjerice, u radu.

Diferencijalna metoda

Razmotrimo drugu Courtoisovu metodu, koja se temelji na diferencijalnoj kriptoanalizi.

Opća metoda diferencijalne kriptoanalize temelji se na iskorištavanju svojstava nelinearnih preslikavanja koja se koriste u kriptografskim primitivima u vezi s utjecajem vrijednosti ključa na ovisnosti između razlika između parova ulaznih i parova izlaznih vrijednosti ovih preslikavanja. Opišimo glavnu ideju diferencijalne metode kriptografske analize blok šifre. Obično blokovne šifre transformiraju ulazne podatke u fazama koristeći brojne takozvane okrugle transformacije, a svaka kružna transformacija ne koristi cijeli ključ, već samo dio njega. Razmotrimo malo "skraćenu" šifru, koja se od originalne razlikuje po tome što nema zadnji krug. Pretpostavimo da je utvrđeno da se kao rezultat šifriranja dvaju otvorenih tekstova koji se razlikuju u nekim fiksnim pozicijama pomoću takve "krnje" šifre s velikom vjerojatnošću dobivaju šifrirani tekstovi koji se također razlikuju u nekim fiksnim pozicijama. Ovo svojstvo ukazuje na to da će "skraćena" šifra vrlo vjerojatno ostaviti ovisnost između nekih otvorenih tekstova i rezultata njihove enkripcije. Kako bismo vratili dio ključa korištenjem ove prividne greške, potrebno je biti u mogućnosti šifrirati unaprijed odabrane otvorene tekstove ključem koji želimo vratiti (tzv. "napad odabranog otvorenog teksta"). Na početku postupka "otvaranja ključem", nasumično se generira niz parova otvorenih tekstova koji se razlikuju u istim fiksnim pozicijama. Svi tekstovi su šifrirani korištenjem "pune" šifre. Rezultirajući parovi šifriranog teksta koriste se za obnavljanje onih bitova ključa koji se koriste u posljednjoj rundi transformacije, kako slijedi. Uz pomoć neke nasumično odabrane vrijednosti potrebnih bitova ključa, transformacija se primjenjuje na sve šifrirane tekstove, obrnuto od posljednje runde transformacije. Naime, ako smo pogodili željenu vrijednost bitova ključa, dobit ćemo rezultat "krnje" šifre, a ako nismo pogodili, zapravo ćemo "još više šifrirati podatke", što će samo smanjiti ovisnost između gore navedenih blokova (razlika u nekim fiksnim položajima). Drugim riječima, ako je među rezultatima takve „dodatne obrade“ šifriranih tekstova bilo dosta parova koji se razlikuju u nama poznatim fiksnim pozicijama, to znači da smo pogodili potrebne bitove ključa. Inače, takvih je parova znatno manje. Budući da se samo dio ključa koristi u svakoj rundi, bitovi koji se traže (tj. bitovi ključa korišteni u zadnjoj rundi) nisu onoliko koliko bitova u punom ključu i mogu se jednostavno ponoviti ponavljanjem iznad koraka. U ovom slučaju, sigurno ćemo jednog dana naići na točnu vrijednost.

Iz gornjeg opisa proizlazi da je najvažnija stvar u metodi diferencijalne analize upravo broj onih pozicija u otvorenim tekstovima i šifriranim tekstovima, čije razlike igraju ključnu ulogu u vraćanju ključnih bitova. Temeljna prisutnost tih pozicija, kao i skup njihovih brojeva, izravno ovisi o svojstvima onih nelinearnih transformacija koje se koriste u bilo kojoj blok šifri (obično je sva "nelinearnost" koncentrirana u tzv. S -kutije ili supstitucijski čvorovi).

Courtois koristi malo modificiranu verziju diferencijalne metode. Odmah napominjemo da Courtois provodi svoju analizu za S-kutije koje se razlikuju od trenutnih i od onih predloženih u ISO-u. U radu su prikazane diferencijalne karakteristike (sami brojevi u kojima bi se blokovi trebali razlikovati) za mali broj krugova. Obrazloženje za proširenje statistike za više rundi je, kao i obično, temeljeno na "činjenicama". Courtois izražava, opet, samo sa svojim autoritetom, neutemeljenu pretpostavku da promjena S-kutija neće utjecati na otpornost GOST 28147-89 na njegov napad (u isto vrijeme, iz nepoznatih razloga, S-kutije iz 1. radnog nacrt dopune norme ISO/IEC 18033-3 nisu razmatrani). Analiza koju su proveli autori članka pokazuje da čak i ako uzmemo na vjeru Courtoisove neutemeljene "činjenice" i analiziramo GOST 28147-89 s drugim S-kutijama, tada se napad opet ne pokazuje ništa boljim od potpunog nabrajanja.

Detaljna analiza radova Courtoisa s detaljnim obrazloženjem neutemeljenosti svih izjava o smanjenju stabilnosti ruskog standarda provedena je u [,].

U isto vrijeme, čak i sam Courtois prepoznaje apsolutni nedostatak točnosti u izračunima! Sljedeći slajd preuzet je iz Courtoisove prezentacije u odjeljku s kratkim najavama FSE 2012.

Valja napomenuti da su radove Courtoisa više puta kritizirali i strani istraživači. Na primjer, njegov rad na izgradnji napada na algoritam blokovne šifre AES koristeći XSL metodu sadržavao je iste temeljne nedostatke kao i rad na analizi ruskog standarda: većina procjena intenziteta rada pojavljuje se u tekstu potpuno neutemeljeno i nepotkrijepljeno - detaljna kritika može se naći npr. u radu . Osim toga, sam Courtois priznaje široko rasprostranjeno odbijanje objavljivanja svog rada na velikim kriptografskim konferencijama iu etabliranim recenziranim časopisima, ostavljajući mu često samo priliku da govori u odjeljku s kratkim najavama. To se, primjerice, može pročitati u 3. odjeljku djela. Evo nekoliko citata koje je citirao sam Courtois, a koji se odnose na njegov rad:

  • "Mislim da publika Asiacrypta neće osjetiti da je zanimljiv." Recenzent Asiacrypt 2011.
  • “… postoji veliki, veliki, veliki problem: ovaj napad, koji je glavni doprinos rada, već je objavljen na FSE’11 (bio je čak i najbolji rad),…”. Kripto recenzent 2011.

Dakle, profesionalni dio međunarodne kriptografske zajednice ne tretira kvalitetu Courtoisovog rada s ništa manje sumnje nego, recimo, izjave nekih ruskih stručnjaka o njihovoj sposobnosti da provale AES za 2.100, ili sljedeće "dokaze" za dvije stranice hipoteza, koje nisu potvrđene nikakvim dosljednim izračunima o nejednakosti klasa složenosti P i NP.

Napadi Isobe i Dinur-Dunkelman-Shamir

Opća ideja Isobe napada () i Dinur-Dankelman-Shamir (u daljnjem tekstu: DDSH napad) () je konstruirati za određeni (ovisni o ključu) uski skup otvorenih tekstova transformacijski ekvivalent na ovom skupu, koji ima jednostavnija struktura od same transformacije enkripcije. U slučaju Isobe metode, ovo je skup 64-bitnih blokova x tako da je F 8 -1 (Swap(F 8 (z))) = z, gdje je z = F 16 (x), do F 8 ( x) i F 16 (x) su prvih 8 i prvih 16 krugova enkripcije GOST 28147-89, redom, kroz Swap - operaciju zamjene polovica riječi od 64 bajta. Kada otvoreni tekst dospije u ovaj skup, rezultat pune 32-kružne transformacije GOST 28147-89 poklapa se s rezultatom 16-kružne transformacije, koju iskorištava autor napada. U slučaju DDS metode, to je skup od x takav da je F 8 (x) = x (fiksna točka transformacije F 8). Za bilo koji otvoreni tekst iz ovog skupa, transformacija GOST 28147-89 radi potpuno isto kao i zadnjih 8 krugova, što pojednostavljuje analizu.

Složenost Isobe napada je 2224 operacije šifriranja, LDS napada je 2192. Međutim, sva pitanja o tome slijedi li to da napadi Isobe i DDSH uvode nova ograničenja na uvjete korištenja našeg algoritma uklanjaju se procjenom zahtjeva za količinom materijala potrebnog za izvođenje svakog od napada: metoda Isobe zahtijeva 2 32 para otvorenih i šifriranih tekstova, a za metodu DDSH - 2 64 . Obrada takvih količina materijala bez promjene ključa a priori je neprihvatljiva za bilo koju blokovnu šifru s duljinom bloka od 64: na materijalu s volumenom od 2 32 , uzimajući u obzir problem rođendana (vidi, na primjer, uljezu sposobnost donošenja određenih zaključaka o otvorenim tekstovima iz šifriranih tekstova bez određivanja ključa. Prisutnost 264 para otvorenih i šifriranih tekstova dobivenih na istom ključu zapravo omogućuje protivniku izvođenje operacija šifriranja i dešifriranja bez da uopće zna ovaj ključ. To je zbog čisto kombinatornog svojstva: protivnik u ovom slučaju ima cijelu tablicu transformacije šifriranja. Ova situacija je apsolutno neprihvatljiva pod bilo kojim razumnim operativnim zahtjevima. Na primjer, u CryptoPro CSP postoji tehničko ograničenje količine šifriranog (bez pretvorbe ključa) materijala od 4 MB (vidi). Dakle, stroga zabrana korištenja ključa na materijalu takvog volumena svojstvena je bilo kojoj blok šifri s duljinom bloka od 64 bita, pa stoga Isobe i DDSH napadi ni na koji način ne sužavaju područje uporabe algoritma GOST 28147-89 uz zadržavanje najveće moguće sigurnosti 2256 .

Naravno, treba napomenuti da su istraživači (Isobe i Dinur-Dankelman-Shamir) pokazali da neka svojstva algoritma GOST 28147-89 omogućuju pronalaženje putova analize koje tvorci algoritma nisu uzeli u obzir. Jednostavan oblik rasporeda ključeva, koji uvelike pojednostavljuje zadatak konstruiranja učinkovitih implementacija, također omogućuje konstruiranje jednostavnijih opisa transformacija koje izvodi algoritam za neke rijetke slučajeve ključeva i otvorenih tekstova.

U radu je pokazano da se ovo negativno svojstvo algoritma može lako eliminirati uz potpuno očuvanje operativnih karakteristika, ali je, nažalost, sastavni dio algoritma u uobičajenom obliku.

Napominjemo da su određene nemarnosti u procjenama prosječnog uloženog rada prisutne iu radu Dinura, Dankelmana i Shamira. Dakle, kada se konstruira napad, ne obraća se dužna pažnja na sljedeću točku: za značajan udio ključeva, skup otvorenih tekstova x, takav da je F 8 (x) = x, je prazan: 8 rundi transformacije možda jednostavno neće imaju fiksne točke. Postojanje fiksnih točaka također ovisi o izboru zamjenskih čvorova. Stoga je napad primjenjiv samo na određene zamjenske čvorove i ključeve.

Također je vrijedno spomenuti još jedan rad s napadom na GOST 28147-89. U veljači 2012. ažurirana verzija članka (iz studenog 2011.) pojavila se u elektroničkoj arhivi ePrint međunarodne kriptografske udruge, koja je sadržavala novi napad na GOST 28147-89. Karakteristike prikazanog napada su sljedeće: volumen materijala je 232 (kao kod Isobe), a intenzitet rada je 2192 (kao kod DDSh). Stoga je ovaj napad poboljšao rekordni napad LDS-a u smislu količine materijala s 2 64 na 2 32 . Posebno napominjemo da su autori pošteno prikazali sve izračune uz obrazloženje složenosti i volumena materijala. Nakon 9 mjeseci pronađena je temeljna pogreška u gornjim izračunima, a od studenog 2012. ažurirana verzija članka u elektroničkoj arhivi više ne sadrži nikakve rezultate u vezi s domaćim algoritmom.

Napadi temeljeni na pretpostavci da napadač zna "nešto" o ključevima

Na kraju, napominjemo da postoji i niz radova u literaturi (vidi, na primjer, i ) posvećenih napadima na GOST 28147-89 u takozvanom modelu s povezanim ključevima. Ovaj model u osnovi sadrži pretpostavku o mogućnosti da uljez dobije pristup za analizu ne samo parovima otvorenih i šifriranih tekstova koristeći željeni ključ, već i parovima otvorenih i šifriranih tekstova dobivenih pomoću (također nepoznatih) ključeva koji se razlikuju od traženi poznati uobičajeni način (na primjer, u fiksnim položajima bitova). U ovom modelu doista je moguće dobiti zanimljive rezultate o GOST 28147-89, međutim, u ovom modelu ne mogu se dobiti ništa manje jaki rezultati o, na primjer, AES standardu koji je postao najrašireniji u modernim javnim mrežama (vidi , na primjer,). Imajte na umu da uvjeti za izvođenje takvih napada nastaju kada se u određenom protokolu koristi šifra. Treba napomenuti da rezultati ove vrste, iako su od nedvojbenog akademskog interesa sa stajališta proučavanja svojstava kriptografskih transformacija, zapravo nisu primjenjivi u praksi. Na primjer, svi alati za kriptografsku zaštitu podataka certificirani od strane FSB-a Rusije ispunjavaju najstrože zahtjeve za sheme generiranja ključeva šifriranja (vidi, na primjer,). Kao što je navedeno u rezultatima analize, u prisutnosti 18 povezanih ključeva i 2 10 para otvorenih i šifriranih tekstualnih blokova, složenost potpunog otvaranja privatnog ključa, s vjerojatnošću uspjeha od 1-10 -4, doista je 2 26 . Međutim, ako su gore navedeni zahtjevi za razvoj ključnog materijala ispunjeni, vjerojatnost pronalaska takvih ključeva je 2 -4352, odnosno 24096 puta manja nego ako samo pokušate pogoditi tajni ključ iz prvog pokušaja.

Radovi koji se odnose na model s povezanim ključevima također uključuju rad koji je 2010. napravio mnogo buke u ruskim elektroničkim publikacijama koje ne pate od navike pažljivog provjeravanja materijala u procesu jurnjave za senzacijama. Rezultati predstavljeni u njemu nisu bili potkrijepljeni nikakvim rigoroznim opravdanjem, ali su sadržavali glasne izjave o mogućnosti hakiranja državnog standarda Ruske Federacije na slabom prijenosnom računalu u nekoliko sekundi - općenito, članak je napisan u najboljim tradicijama Nicolasa Courtoisa. No, usprkos potpuno očitoj čitatelju, koliko-toliko poznatom u osnovnim načelima znanstvenih publikacija, neutemeljenosti članka, Rudski je upravo da bi umirio rusku javnost nakon rada napisao detaljan i detaljan tekst koji je sadržavao sveobuhvatnu analizu ovog nedostatka. Članak znakovitog naslova "O nultom praktičnom značaju rada "Key recovery attack on full GOST block cipher with zero time and memory"" opravdava činjenicu da prosječna složenost metode navedene u metodi nije manja od složenost potpunog nabrajanja.

Suhi ostatak: kolika je otpornost u praksi?

Zaključno, predstavljamo tablicu koja sadrži podatke o svim rezultatima strogo opisanih i opravdanih napada na GOST 28147-89 poznatih međunarodnoj kriptografskoj zajednici. Imajte na umu da je složenost navedena u operacijama šifriranja algoritma GOST 28147-89, a memorija i materijal navedeni su u blokovima algoritma (64 bita = 8 bajtova).

Napad Intenzitet rada Memorija Potreban materijal
Isobe 2 224 2 64 2 32
Dinur-Dunkelman-Shamir, FP, 2DMitM 2 192 2 36 2 64
Dinur-Dunkelman-Shamir, FP, slabo pamćenje 2 204 2 19 2 64
2 224 2 36 2 32
Dinur-Dunkelman-Shamir, Odraz, 2DMitM 2 236 2 19 2 32
sirova snaga 2 256 1 4
Broj nanosekundi od postanka svemira 2 89

Unatoč prilično opsežnom istraživačkom ciklusu u području sigurnosti algoritma GOST 28147-89, trenutno nije poznat niti jedan napad za čiju bi se provedbu mogli ostvariti uvjeti s pripadajućom duljinom bloka od 64 bita. operativnih zahtjeva. Ograničenja količine materijala koji se može obraditi na jednom ključu, a koja proizlaze iz parametara šifre (bitna duljina ključa, bitna duljina bloka), znatno su stroža od minimalne količine koja je potrebna za provedbu bilo koje trenutno poznatih napada. Stoga, kada su ispunjeni postojeći operativni zahtjevi, nijedna od do sada predloženih metoda kriptoanalize GOST 28147-89 ne dopušta vam da odredite ključ uz napor manje od iscrpnog pretraživanja.

U nas je jedinstveni algoritam za kriptografski prikaz podataka za sustave obrade informacija u računalnim mrežama, pojedinačnim računalnim sustavima i računalima, koji je određen GOST 28147-89.

Ovaj algoritam za pretvorbu kriptografskih podataka je 64-bitni blok algoritam s 256-bitnim ključem, dizajniran za hardversku i softversku implementaciju, zadovoljava kriptografske zahtjeve i ne nameće ograničenja na stupanj tajnosti informacija koje se štite.

U opisu algoritma koristi se sljedeća oznaka:

L i R su nizovi bitova;
LR je ulančavanje nizova L i R, u kojem bitovi niza R slijede bitove niza L;
(+) - zbrajanje po bitovima modulo 2 (operacija "isključivo ILI");
[+] - zbrajanje 32-bitnih brojeva po modulu 2 32 ;
(+) - zbrajanje 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 omogućuje četiri načina rada:

U svakom slučaju, 256-bitni ključ K koristi se za šifriranje podataka, 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 s istim ključem kao i enkripcija, ali ovaj je proces obrnut od procesa enkripcije podataka.

Način jednostavnog mijenjanja

Prvi i najlakši način - zamjena. Podaci koji se šifriraju podijeljeni su u 64-bitne blokove. Postupak š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 najvažniji bitovi, A(0) su desni ili najmanje značajni bitovi.

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

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

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

Funkcija f naziva se funkcija šifriranja. Njegov argument je zbroj po modulu 2 32 broja A(i) dobivenog u prethodnom koraku iteracije i broja X(j) ključa (dimenzija svakog od ovih brojeva je 32 znamenke).

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

Ulazni vektor specificira adresu retka u tablici čiji je broj izlazni vektor. 4-bitni izlazni vektori se zatim sekvencijalno kombiniraju u 32-bitni vektor. Tablica supstitucijskog bloka K sadrži ključne elemente zajedničke računalne mreže i rijetko se mijenjaju.

Druga operacija je ciklički pomak ulijevo 32-bitnog vektora dobivenog zamjenom K. 64-bitni šifrirani podatkovni blok T w predstavljen je kao T w =A(32)B(32).

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

Imajte na umu da se način jednostavne zamjene može koristiti za šifriranje podataka samo u ograničenim slučajevima. Ti slučajevi uključuju generiranje ključa i njegovu enkripciju uz osiguranje zaštite od imitacije (zaštita od nametanja lažnih podataka) za prijenos komunikacijskim kanalima ili pohranu u memoriju računala.

Gama način rada

Otvoreni podaci, podijeljeni u 64-bitne blokove T(i) (i=1, 2,..., m, gdje je m određeno količinom šifriranih podataka), šifriraju se u gama modu bitovnim zbrajanjem modula 2 s šifra gama Gw, koja se proizvodi u blokovima od 64 bita, tj. Gw = (G(1),G(2),...,G(i),...,G(m)).

Jednadžba šifriranja podataka u gama načinu rada može se predstaviti na sljedeći način:

W(i) = A (Y(i-1) [+] C2, Z(i-1) (+) C1) (+) T(i) = G(i) (+) T(i) .
Ovdje je W(i) 64-bitni blok šifriranog teksta,
A - funkcija šifriranja u jednostavnom načinu zamjene (argumenti ovoj funkciji su dva 32-bitna broja),
C1 i C2 - konstante navedene u GOST 28147-89,
Y(i) i Z(i) su veličine koje se određuju iterativno jer se gama formira na sljedeći način:
(Y(0), Z(0)) = A(S), gdje je S 64-bitna binarna sekvenca (sinkronizirana 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 ako postoji sinkronizirana poruka, koja nije tajni element šifre i može se pohraniti u memoriju računala ili prenijeti komunikacijskim kanalima zajedno s šifriranim podacima.

Gama način povratne informacije

Način rada skaliranje s povratnom spregom vrlo je sličan gama modu. Kao u gama modu, otvoreni podaci podijeljeni u 64-bitne blokove T(i) (i=1, 2,..., m, gdje je m određeno količinom šifriranih podataka), šifrirani su zbrajanjem po bitovima modulo 2 sa šifrom gama G sh, koja se proizvodi u blokovima od 64 bita:

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

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

Jednadžba šifriranja podataka u gama modu s povratnom spregom može se predstaviti na sljedeći način:


Ovdje je W(i) 64-bitni blok šifriranog teksta,
A - funkcija šifriranja u jednostavnom načinu zamjene. Argument funkcije u prvom koraku iterativnog algoritma je 64-bitna sinkronizacija, au svim sljedećim koracima - prethodni blok kriptiranih podataka W(i-1).

Imitacija umetaka

Razvojni proces imitacija hrpe je jedinstven za bilo koji od načina šifriranja podataka.

Imitacija umetanja je blok od p bitova (imitacija umetanja Ip), koji se proizvodi ili prije šifriranja cijele poruke, ili paralelno s blok-po-blok enkripcijom. Prvi blokovi otvorenih podataka koji su uključeni u razvoj simulacije umetanja mogu sadržavati servisne informacije (na primjer, adresni dio, vrijeme, sinkroniznu poruku) i ne moraju biti šifrirani. Vrijednost parametra p (broj binarnih znamenki u simuliranom umetku) određena je kriptografskim zahtjevima, uzimajući u obzir činjenicu da je vjerojatnost nametanja lažnih smetnji 1/2^p.

Da bi se dobila imitacija umetanja, otvoreni podaci se predstavljaju kao 64-bitni blokovi T(i) (i = 1, 2,..., m, gdje je m određen količinom šifriranih podataka). Prvi blok otvorenih podataka T(1) podvrgava se transformaciji koja odgovara prvih 16 ciklusa algoritma enkripcije u načinu jednostavne zamjene. Štoviše, ključ koji se koristi za šifriranje podataka koristi se kao ključ za generiranje umetanja imitacije.

64-bitni broj dobiven nakon 16 ciklusa rada zbraja se modulo 2 s drugim blokom otvorenih podataka T(2). Rezultat zbrajanja ponovno se podvrgava transformaciji koja odgovara prvih 16 ciklusa algoritma šifriranja u načinu jednostavne zamjene. Rezultirajući 64-bitni broj dodaje se modulo 2 trećem bloku otvorenih podataka T(3), i tako dalje. Posljednji blok T(m), ako je potrebno, dopunjen do punog 64-bitnog bloka s nulama, zbraja se modulo 2 s rezultatom rada u koraku m-1, nakon čega se šifrira u načinu jednostavne zamjene preko prvog 16 ciklusa algoritma. Iz primljenog 64-bitnog broja odabire se segment Ip duljine p bitova.

Imitacijski umetak Ip prenosi se komunikacijskim kanalom ili u memoriju računala nakon šifriranih podataka. Pristigli šifrirani podaci se dešifriraju, a iz primljenih blokova otvorenih podataka T(i) generira se imitacijski umetak Ip koji se zatim uspoređuje s imitacijskim umetkom IR primljenim iz komunikacijskog kanala ili iz memorije računala. ne podudaraju se, svi dešifrirani podaci smatraju se netočnima.

Algoritam šifriranja GOST 28147-89, njegova uporaba i implementacija softvera za računala Intel x86 platforme.


Andrej Vinokurov

Opis algoritma.

Termini i oznake.

Opis standarda šifriranja Ruske Federacije sadržan je u vrlo zanimljivom dokumentu pod naslovom "GOST 28147-89 Algoritam kriptografske transformacije". Činjenica da je u svom naslovu, umjesto pojma "šifriranje", općenitiji pojam " kriptografska transformacija ' nije slučajnost. Uz nekoliko blisko povezanih postupaka šifriranja, dokument opisuje jedan algoritam za generiranje imitacija umetaka . Potonji nije ništa drugo do kombinacija kriptografske kontrole, odnosno koda generiranog iz izvornih podataka pomoću tajnog ključa kako bi se zaštita od imitacije ili zaštititi podatke od neovlaštenih promjena.

U različitim koracima GOST algoritama, podaci na kojima rade tumače se i koriste na različite načine. U nekim se slučajevima podatkovni elementi tretiraju kao nizovi neovisnih bitova, u drugim slučajevima kao cijeli broj bez predznaka, u trećima kao složeni element koji ima strukturu koja se sastoji od nekoliko jednostavnijih elemenata. Stoga, kako bi se izbjegle zabune, potrebno je dogovoriti korištenu notaciju.

Elementi podataka u ovom članku označeni su velikim latiničnim slovima s kurzivom (npr. x). Kroz | x| označava veličinu elementa podataka x u bitovima. Dakle, ako interpretiramo element podataka x kao nenegativan cijeli broj možemo napisati sljedeću nejednakost:

Ako se podatkovni element sastoji od nekoliko elemenata manje veličine, ta se činjenica označava na sljedeći način: x=(x 0 ,x 1 ,…,X n –1)=x 0 ||x 1 ||…||X n-1 . Postupak spajanja više podatkovnih elemenata u jedan naziva se ulančavanje podataka i označava se simbolom "||". Naravno, za veličine elemenata podataka mora vrijediti sljedeća relacija: | x|=|x 0 |+|x 1 |+…+|X n-1 |. Prilikom određivanja složenih podatkovnih elemenata i operacije ulančavanja, sastavni podatkovni elementi navedeni su uzlaznim redoslijedom prednosti. Drugim riječima, ako složeni element i sve elemente podataka koji su u njemu uključeni tumačimo kao cijele brojeve bez predznaka, tada možemo napisati sljedeću jednakost:

U algoritmu se podatkovni element može interpretirati kao niz pojedinačnih bitova, u kojem slučaju su bitovi označeni istim slovom kao i niz, ali malim slovima, kao što je prikazano u sljedećem primjeru:

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

Tako, ako ste obratili pozornost, tzv. "little-endian" numeriranje znamenki, tj. unutar višebitnih podatkovnih riječi manje su značajne pojedinačne binarne znamenke i njihove skupine s manjim brojevima. To je izričito navedeno u stavku 1.3 standarda: "Pri zbrajanju i cikličkom pomicanju binarnih vektora, najviši bitovi su bitovi akumulatora s velikim brojevima." Nadalje, paragrafi standarda 1.4, 2.1.1 i drugi propisuju početak punjenja registara za pohranu virtualnog uređaja za šifriranje podacima iz nižih, tj. manje značajnih činova. Potpuno isti redoslijed numeriranja usvojen je u arhitekturi mikroprocesora Intel x86, zbog čega softverska implementacija šifre na ovoj arhitekturi ne zahtijeva nikakve dodatne permutacije bitova unutar podatkovnih riječi.

Ako se na elementima podataka izvodi neka operacija koja ima logičko značenje, tada se pretpostavlja da se ta operacija izvodi na odgovarajućim bitovima elemenata. Drugim riječima A B=(a 0 b 0 ,a 1 b 1 ,…,a n –1 b n–1), gdje n=|A|=|B|, a simbol " " označava proizvoljnu binarnu logičku operaciju; obično se odnosi na operaciju ekskluzivni ili , što je također operacija zbrajanja po modulu 2:

Logika konstrukcije šifre i struktura ključnih informacija GOST-a.

Ako pažljivo proučite izvorni GOST 28147–89, primijetit ćete da sadrži opis algoritama nekoliko razina. Na samom vrhu su praktični algoritmi dizajnirani za šifriranje nizova podataka i razvoj lažnih umetaka za njih. Svi se temelje na tri algoritma niže razine, koji se u tekstu nazivaju GOST ciklusi . Ovi temeljni algoritmi se u ovom članku nazivaju osnovni ciklusi kako bi ih razlikovali od svih ostalih petlji. Imaju sljedeće nazive i oznake, potonje su navedene u zagradama, a njihovo značenje će biti objašnjeno kasnije:

  • ciklus šifriranja (32-3);
  • ciklus dešifriranja (32-P);
  • ciklus generiranja imitacije umetka (16-Z).

S druge strane, svaki od temeljnih ciklusa je višestruko ponavljanje jednog postupka, koji će se dalje u ovom radu pozvati na određenost. glavni korak kripto transformacije .

Dakle, da biste razumjeli GOST, morate razumjeti sljedeće tri stvari:

  • što se dogodilo osnovni korak kripto transformacije;
  • kako nastaju osnovni ciklusi iz glavnih koraka;
  • kao od tri osnovni ciklusi zbrojite sve praktične algoritme GOST-a.

Prije nego što pređemo na proučavanje ovih pitanja, trebali bismo razgovarati o ključnim informacijama koje koriste GOST algoritmi. U skladu s Kirchhoffovim načelom, koje zadovoljavaju sve moderne šifre poznate široj javnosti, upravo svojom tajnošću osigurava tajnost šifrirane poruke. U GOST-u se ključne informacije sastoje od dvije strukture podataka. Osim toga ključ potreban za sve šifre, također sadrži tablica zamjene . Ispod su glavne karakteristike ključnih struktura GOST-a.

Glavni korak kripto transformacije.

Glavni korak kripto konverzije je u biti operator koji definira konverziju 64-bitnog bloka podataka. Dodatni parametar ovog operatora je 32-bitni blok, koji se koristi kao bilo koji element ključa. Shema algoritma glavnog koraka prikazana je na slici 1.


Slika 1. Shema glavnog koraka kripto-transformacije algoritma GOST 28147-89.

U nastavku su objašnjenja algoritma glavnog koraka:

Korak 0

  • N– 64-bitni podatkovni blok koji treba pretvoriti, tijekom izvođenja koraka najmanje značajan ( N 1) i starije ( N 2) dijelovi se tretiraju kao zasebni 32-bitni cijeli brojevi bez predznaka. Dakle, može se pisati N=(N 1 ,N 2).
  • x– 32-bitni ključni element;

Korak 1

Dodatak s ključem. Donja polovica konvertiranog bloka dodaje se modulo 2 32 s ključnim elementom korištenim u koraku, rezultat se prosljeđuje u sljedeći korak;

Korak 2

Zamjena bloka. 32-bitna vrijednost dobivena u prethodnom koraku tumači se kao niz od osam 4-bitnih kodnih blokova: S=(S 0 , S 1 , S 2 , S 3 , S 4 , S 5 , S 6 , S 7), i S 0 sadrži 4 najmanja, i S 7 - 4 najznačajnija bita S.

Zatim se vrijednost svakog od osam blokova zamjenjuje novom, koja se bira iz tablice zamjene na sljedeći način: vrijednost bloka Si promjene u Si-ti element u nizu (numeriranje od nule) ja- tog zamjenskog čvora (tj. ja-ti redak tablice zamjena, numeriranje također od nule). Drugim riječima, kao zamjena za vrijednost bloka, odabire se element iz zamjenske tablice s brojem retka koji je jednak broju zamjenskog bloka i brojem stupca koji je jednak vrijednosti zamjenskog bloka kao 4-bitni nenegativan cijeli broj. Iz ovoga postaje jasna veličina supstitucijske tablice: broj redaka u njoj jednak je broju 4-bitnih elemenata u 32-bitnom podatkovnom bloku, odnosno osam, a broj stupaca jednak je broj različitih vrijednosti 4-bitnog podatkovnog bloka, za koji se zna da je 2 4, šesnaest.

3. korak

Zakreni ulijevo 11 bitova. Rezultat prethodnog koraka ciklički se pomiče za 11 bitova prema višim bitovima i prenosi na sljedeći korak. U dijagramu algoritma simbol označava funkciju cikličkog pomaka njegovog argumenta za 11 bita ulijevo, tj. prema višim razinama.

Korak 4

Bitno zbrajanje: Vrijednost dobivena u koraku 3 dodaje se modulo 2 bit po bit višoj polovici bloka koji se pretvara.

Korak 5

Pomak duž lanca: donji dio pretvorenog bloka pomiče se na mjesto starijeg, a rezultat prethodnog koraka postavlja se na njegovo mjesto.

Korak 6

Rezultirajuća vrijednost bloka koji se pretvara vraća se kao rezultat izvršenja algoritma glavnog koraka kripto-transformacije.

Osnovni ciklusi kriptografskih transformacija.

Kao što je navedeno na početku ovog članka, GOST pripada klasi blok šifri, odnosno jedinica obrade informacija u njemu je blok podataka. Stoga je sasvim logično očekivati ​​da će definirati algoritme za kriptografske transformacije, odnosno za šifriranje, dešifriranje i "račun" u upravljačkoj kombinaciji jednog bloka podataka. Ovi algoritmi se nazivaju osnovni ciklusi GOST, koji naglašava njihovu temeljnu važnost za konstrukciju ove šifre.

Osnovni ciklusi izgrađeni su od osnovni koraci kriptografska transformacija o kojoj je bilo riječi u prethodnom odjeljku. Tijekom izvođenja glavnog koraka koristi se samo jedan 32-bitni ključni element, dok GOST ključ sadrži osam takvih elemenata. Dakle, da bi ključ bio u potpunosti iskorišten, svaka od osnovnih petlji mora više puta izvesti glavni korak sa svojim različitim elementima. Pritom se čini sasvim prirodnim da se u svakom osnovnom ciklusu svi elementi ključa koriste isti broj puta, a zbog sigurnosti šifre taj broj treba biti veći od jedan.

Sve gore navedene pretpostavke, utemeljene jednostavno na zdravom razumu, pokazale su se točnima. Osnovne petlje se ponavljaju glavni korak koristeći različite elemente ključa i međusobno se razlikuju samo po broju ponavljanja koraka i redoslijedu korištenja ključnih elemenata. Ovaj redoslijed je dan u nastavku za različite cikluse.

Ciklus šifriranja 32-3:

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


Slika 2a. Shema ciklusa šifriranja 32-Z

Ciklus dešifriranja 32-P:

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


Slika 2b. 32-P Dijagram petlje dešifriranja

Ciklus za izradu imitacije umetka 16-Z:

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


Slika 2c. Shema proizvodnog ciklusa imitacije umetka 16-Z.

Svaki od ciklusa ima svoju alfanumeričku oznaku, koja odgovara uzorku " n-X", gdje je prvi element oznake ( n), određuje broj ponavljanja glavnog koraka u ciklusu, a drugi element notacije ( x), slovo, određuje redoslijed šifriranja ("Z") ili dešifriranja ("R") u korištenju ključnih elemenata. Ova narudžba zahtijeva dodatno objašnjenje:

Ciklus dešifriranja trebao bi biti obrnut od ciklusa šifriranja, to jest, sekvencijalna primjena ova dva ciklusa na proizvoljni blok trebala bi rezultirati izvornim blokom, što se odražava sljedećim odnosom: C 32-R ( C 32-Z ( T))=T, Gdje T– proizvoljni 64-bitni blok podataka, C X( T) rezultat je petlje x iznad podatkovnog bloka T. Da bi se ispunio ovaj uvjet za algoritme slične GOST-u, potrebno je i dovoljno da redoslijed kojim se ključni elementi koriste u odgovarajućim ciklusima bude međusobno inverzan. Lako je provjeriti valjanost pisanog uvjeta za slučaj koji se razmatra usporedbom gornjih nizova za cikluse 32-3 i 32-P. Iz navedenog proizlazi jedna zanimljiva posljedica: svojstvo ciklusa da bude inverzan drugom ciklusu je obostrano, odnosno ciklus 32-3 je inverzan u odnosu na ciklus 32-P. Drugim riječima, enkripcija podatkovnog bloka teoretski bi se mogla izvršiti petljom za dešifriranje, u kojem slučaju bi se dešifriranje bloka podataka moralo izvršiti petljom šifriranja. Od dva međusobno obrnuta ciklusa, bilo koji se može koristiti za šifriranje, zatim se drugi mora koristiti za dešifriranje podataka, međutim, standard GOST28147-89 dodjeljuje uloge ciklusima i ne daje korisniku pravo izbora po ovom pitanju .

Ciklus generiranja imitacije umetanja je upola kraći od ciklusa enkripcije, redoslijed korištenja ključnih elemenata u njemu je isti kao u prvih 16 koraka ciklusa enkripcije, što je lako vidjeti razmatranjem gornjih sekvenci, stoga je ovaj redoslijed u oznaci ciklusa kodiran istim slovom "Z".

Sheme osnovnih ciklusa prikazane su na slikama 2a-c. Svaki od njih uzima kao argument i kao rezultat vraća 64-bitni blok podataka, naznačen na dijagramima N. Korak simbola ( N,x) označava izvršenje glavnog koraka kripto-transformacije za blok podataka N pomoću ključnog elementa x. Postoji još jedna razlika između ciklusa enkripcije i izračuna oponašanja umetanja, koja nije gore spomenuta: na kraju osnovnih ciklusa enkripcije, visoki i niski dijelovi bloka rezultata se zamjenjuju, to je neophodno za njihovu međusobnu reverzibilnost. .

Osnovni načini šifriranja.

GOST 28147-89 predviđa sljedeća tri načina šifriranja podataka:

  • jednostavna zamjena,
  • kockanje,
  • povratna gama,

i jedan dodatni način generiranja umetanja imitacije.

U bilo kojem od ovih načina, podaci se obrađuju u blokovima od 64 bita, u koje je niz podijeljen, podvrgnut kriptografskoj transformaciji, zbog čega se GOST odnosi na blok šifre. Međutim, u dva načina igranja moguće je obraditi nepotpuni blok podataka manji od 8 bajtova, što je bitno kod šifriranja nizova podataka proizvoljne veličine, koja ne smije biti višekratnik 8 bajtova.

Prije nego što prijeđemo na razmatranje specifičnih algoritama za kriptografske transformacije, potrebno je razjasniti notaciju korištenu u dijagramima u sljedećim odjeljcima:

T o, T w nizovi otvorenih odnosno šifriranih podataka;

, – ja- 64-bitni blokovi otvorenih odnosno šifriranih podataka: , , posljednji blok može biti nepotpun: ;

n– broj 64-bitnih blokova u nizu podataka;

C X je funkcija pretvaranja 64-bitnog bloka podataka prema algoritmu osnovnog ciklusa "X".

Sada ćemo opisati glavne načine šifriranja:

Jednostavna zamjena.

Šifriranje u ovom načinu rada sastoji se od primjene ciklusa 32-3 na otvorene blokove podataka, dešifriranje - ciklusa 32-P na šifrirane blokove podataka. Ovo je najjednostavniji način rada, u njemu se obrađuju 64-bitni blokovi podataka neovisno jedan o drugom. Sheme algoritama šifriranja i dešifriranja u načinu jednostavne zamjene prikazane su na slikama 3a i b, trivijalne su i ne trebaju komentare.


Crtanje. 3a. Algoritam šifriranja podataka u jednostavnom načinu zamjene


Crtanje. 3b. Algoritam za dešifriranje podataka u načinu jednostavne zamjene

Veličina niza otvorenih ili šifriranih podataka, koji podliježu enkripciji odnosno dešifriranju, mora biti višekratnik 64 bita: | T o |=| T w |=64 n , nakon izvršenja operacije veličina primljenog niza podataka se ne mijenja.

Način jednostavnog zamjenskog šifriranja ima sljedeće značajke:

  • Budući da su podatkovni blokovi šifrirani neovisno jedan o drugome i o svom položaju u nizu podataka, kada su dva identična bloka otvorenog teksta šifrirana, dobivaju se identični blokovi šifriranog teksta i obrnuto. Navedeno svojstvo će omogućiti kriptoanalitičaru da zaključi da su blokovi izvornih podataka identični ako naiđe na identične blokove u nizu šifriranih podataka, što je neprihvatljivo za ozbiljnu šifru.
  • Ako duljina kriptiranog niza podataka nije višekratnik 8 bajtova ili 64 bita, javlja se problem kako i kako dopuniti posljednji nepotpuni podatkovni blok niza do punih 64 bita. Ovaj zadatak nije tako jednostavan kao što se čini na prvi pogled. Očigledna rješenja kao što su "dopunjavanje nepotpunog bloka s nula bitova" ili, općenitije, "dopunjavanje nepotpunog bloka s fiksnom kombinacijom nula i jedan bitova" mogu, pod određenim uvjetima, dati kriptoanalitičaru priliku da odredi sadržaj ovog vrlo nepotpuni blok metodama enumeracije, a ta činjenica znači smanjenje sigurnosne šifre. Osim toga, promijenit će se duljina šifriranog teksta, povećavajući se do najbližeg višekratnika cijelog broja od 64 bita, što je često nepoželjno.

Na prvi pogled, gore navedene značajke čine praktički nemogućim korištenje načina jednostavne zamjene, jer se može koristiti samo za šifriranje podatkovnih nizova veličine koja je višekratnik 64 bita i ne sadrži ponovljene 64-bitne blokove. Čini se da je za bilo kakve stvarne podatke nemoguće jamčiti ispunjenje ovih uvjeta. To je gotovo točno, ali postoji jedna vrlo važna iznimka: zapamtite da je veličina ključa 32 bajta, a veličina zamjenske tablice 64 bajta. Osim toga, prisutnost ponovljenih 8-bajtnih blokova u ključu ili tablici zamjene će ukazivati ​​na njihovu vrlo lošu kvalitetu, tako da ne može biti takvog ponavljanja u stvarnim ključnim elementima. Tako smo saznali da je jednostavni način zamjene sasvim prikladan za šifriranje ključnih informacija, pogotovo zato što su drugi načini manje prikladni za ovu svrhu, budući da zahtijevaju dodatni podatkovni element za sinkronizaciju - sinkroniznu poruku (vidi sljedeći odjeljak). Naša pretpostavka je točna, GOST propisuje korištenje jednostavnog načina zamjene isključivo za šifriranje ključnih podataka.

Kockanje.

Kako se možete riješiti nedostataka jednostavnog načina zamjene? Da bi se to postiglo, potrebno je omogućiti šifriranje blokova veličine manje od 64 bita i osigurati da blok šifriranog teksta ovisi o njegovom broju, drugim riječima, randomizirati proces šifriranja. U GOST-u se to postiže na dva različita načina u dva načina šifriranja, pružajući skaliranje . Kockanje - ovo je nametanje (uklanjanje) kriptografskog raspona na otvorenim (kriptiranim) podacima, odnosno nizu podatkovnih elemenata generiranih pomoću nekog kriptografskog algoritma za dobivanje kriptiranih (otvorenih) podataka. Recipročne inverzne binarne operacije moraju se koristiti za preklapanje gama tijekom enkripcije i uklanjanje tijekom dešifriranja, na primjer, zbrajanje i oduzimanje modulo 2 64 za 64-bitne blokove podataka. U GOST-u se u tu svrhu koristi operacija zbrajanja po bitovima po modulu 2, budući da je inverzna sama sebi i, štoviše, najjednostavnije je implementirana u hardveru. Gamming rješava oba navedena problema: prvo, svi gama elementi su različiti za prave šifrirane nizove i stoga će rezultat enkripcije čak i dva identična bloka u jednom podatkovnom nizu biti drugačiji. Drugo, iako se gama elementi proizvode u jednakim dijelovima od 64 bita, također se može koristiti dio takvog bloka veličine jednake veličini šifriranog bloka.

Sada idemo izravno na opis gama načina. Gama za ovaj način dobiva se na sljedeći način: pomoću nekog algoritamskog generatora rekurentnog niza brojeva (RGCH), generiraju se 64-bitni podatkovni blokovi, koji se zatim podvrgavaju 32-3 konverziji, to jest, enkripciji u jednostavnom načinu zamjene, što rezultira u gama blokovima. Zbog činjenice da se preklapanje i uklanjanje gama provodi korištenjem iste operacije XOR po bitovima, algoritmi šifriranja i dešifriranja u gama načinu su identični, njihova opća shema prikazana je na slici 4.

RGHR koji se koristi za generiranje ljestvice je rekurentna funkcija: – elementi rekurentnog niza, f je funkcija pretvorbe. Stoga se neizbježno postavlja pitanje o njegovoj inicijalizaciji, odnosno o elementu.U stvari, ovaj element podataka je parametar algoritma za gama modove, na dijagramima je označen kao S, a naziva se u kriptografiji sinkronizirati poruku , au našem GOST-u - početno punjenje jedan od registara kodera. Iz određenih razloga, programeri GOST-a odlučili su koristiti za inicijalizaciju RGHR-a ne izravno poruku sinkronizacije, već rezultat njezine transformacije prema ciklusu 32-3: . Niz elemenata koje generira RGHR u potpunosti ovisi o njegovom početnom popunjavanju, odnosno elementi ovog niza su funkcija njihovog broja i početnog popunjavanja RGHR: gdje fi(x)=f(fi –1 (x)), f 0 (x)=x. Uzimajući u obzir transformaciju prema jednostavnom algoritmu zamjene, također se dodaje ovisnost o ključu:

Gdje G ija-ti element ljestvice, K- ključ.

Stoga je slijed gama elemenata koji će se koristiti u gama modu jedinstveno određen ključnim podacima i sinkroniziranom porukom. Naravno, da bi postupak šifriranja bio reverzibilan, ista poruka sinkronizacije mora se koristiti u procesima dešifriranja i dešifriranja. Iz zahtjeva jedinstvenosti gama, čiji neuspjeh dovodi do katastrofalnog smanjenja snage šifre, slijedi da je za šifriranje dva različita niza podataka na istom ključu potrebno osigurati korištenje različite poruke sinkronizacije. To dovodi do potrebe za pohranjivanjem ili prijenosom sinkronizirane poruke duž komunikacijskih kanala zajedno s šifriranim podacima, iako se u nekim posebnim slučajevima može unaprijed definirati ili izračunati na poseban način ako je isključena enkripcija dva niza na istom ključu.

Sada pogledajmo pobliže RGHR koji se koristi u GOST-u za generiranje gama elemenata. Prije svega, treba napomenuti da nije potrebno dati nikakve statističke karakteristike generiranog niza brojeva. RGHR su dizajnirali GOST programeri na temelju potrebe za ispunjavanjem sljedećih uvjeta:

  • razdoblje ponavljanja niza brojeva koje generira RGHR ne bi se trebalo jako razlikovati (u postotku) od najveće moguće vrijednosti od 2 64 za danu veličinu bloka;
  • susjedne vrijednosti koje proizvodi RGHR moraju se razlikovati jedna od druge u svakom bajtu, inače će zadatak kriptoanalitičara biti pojednostavljen;
  • RGHR bi trebao biti prilično jednostavan za implementaciju iu hardveru iu softveru na najčešćim tipovima procesora, od kojih većina, kao što znate, ima 32-bitni kapacitet.

Na temelju ovih načela, tvorci GOST-a dizajnirali su vrlo uspješan RGHR, koji ima sljedeće karakteristike:

Gdje C 0 =1010101 16 ;

Gdje C 1 =1010104 16 ;

Indeks u zapisu broja označava njegov brojevni sustav, pa se konstante koje se koriste u ovom koraku pišu u heksadecimalnom brojevnom sustavu.

Drugi izraz treba komentirati, budući da je u tekstu GOST-a navedeno nešto drugo: , s istom vrijednošću konstante C 1 . Ali dalje u tekstu standarda dan je komentar da, ispada, pod operacijom uzimanja ostatka modulo 2 32 -1 tamo shvaća se ne isto kao u matematici. Razlika je u činjenici da prema GOST (2 32 -1) mod(2 32 –1)=(2 32 –1), a ne 0. Zapravo, ovo pojednostavljuje implementaciju formule, a matematički točan izraz za nju dan je gore.

  • period ponavljanja niza za mlađi dio je 2 32, za stariji dio 2 32 -1, za cijeli niz period je 2 32 (2 32 -1), dokaz ove činjenice, vrlo jednostavan, ćete dobiti sebe. Prva formula od ove dvije implementirana je u jednoj instrukciji, druga, unatoč prividnoj glomaznosti, u dvije instrukcije na svim modernim 32-bitnim procesorima - prva je instrukcija uobičajeno zbrajanje po modulu 2 32 s pohranjivanjem bita prijenosa, a druga instrukcija dodaje prijenosni bit primljenoj vrijednosti.

Shema algoritma enkripcije u gama modu je prikazana na slici 4, ispod su objašnjenja sheme:


Slika 4. Algoritam šifriranja (dešifriranja) podataka u gama modu.

Korak 0

Definira početne podatke za glavni korak kripto transformacije:

  • T o(w) - niz otvorenih (kriptiranih) podataka proizvoljne veličine, podvrgnut postupku enkripcije (dešifriranja), tijekom postupka niz se pretvara u dijelovima od 64 bita;
  • S sinkronizirati poruku , 64-bitni podatkovni element potreban za inicijalizaciju gama generatora;

Korak 1

Početna transformacija sinkronističke poruke, izvedena da bi se "randomizirala", to jest, da bi se eliminirali statistički obrasci prisutni u njoj, rezultat se koristi kao početno punjenje RGHR-a;

Korak 2

Jedan korak u radu RGHR-a, koji implementira svoj rekurentni algoritam. Tijekom ovog koraka, stariji ( S 1) i mlađi ( S 0) dijelovi niza podataka generiraju se neovisno jedan o drugome;

3. korak

Kockanje. Sljedeći 64-bitni element koji proizvodi RGHR podvrgava se proceduri enkripcije u ciklusu 32-3, rezultat se koristi kao gama element za šifriranje (dekriptiranje) sljedećeg bloka otvorenih (kriptiranih) podataka iste veličine.

Korak 4

Rezultat algoritma je kriptirano (dekriptirano) polje podataka.

Sljedeće su značajke gama kao načina šifriranja:

  1. Identični blokovi u otvorenom polju podataka dat će različite blokove šifriranog teksta kada su šifrirani, što će omogućiti skrivanje činjenice o njihovom identitetu.
  2. Budući da se gama izvodi bit po bit, enkripcija nepotpunog bloka podataka se lako izvodi kao šifriranje bitova ovog nepotpunog bloka, za što se koriste odgovarajući bitovi gama bloka. Dakle, za šifriranje nepotpunog bloka od 1 bita, prema standardu, treba koristiti najmanje značajan bit iz gama bloka.
  3. Poruka sinkronizacije koja se koristi u enkripciji mora se nekako prenijeti da bi se koristila u dešifriranju. To se može postići na sljedeće načine:
  • pohranjuju ili prenose sinkronizaciju zajedno s šifriranim nizom podataka, što će povećati veličinu podatkovnog niza tijekom enkripcije za veličinu sinkronizirajuće poruke, odnosno za 8 bajtova;
  • koristiti unaprijed definiranu vrijednost sinkronizirane poruke ili je generirati sinkrono od strane izvora i primatelja prema određenom zakonu, u ovom slučaju nema promjene u veličini odaslanog ili pohranjenog niza podataka;

Obje metode se nadopunjuju, au onim rijetkim slučajevima kada prva, najčešća od njih ne djeluje, može se koristiti druga, egzotičnija. Druga metoda ima mnogo manju primjenu, budući da je moguće napraviti sinkronizaciju unaprijed definiranom samo ako više od jednog niza podataka nije očito šifrirano na danom skupu ključnih informacija, što se ne događa tako često. Također nije uvijek moguće sinkronizirano generirati poruku za sinkronizaciju na izvoru i primatelju niza podataka, budući da zahtijeva čvrstu vezu s nečim u sustavu. Dakle, naizgled zdrava ideja da se broj poslane poruke koristi kao sinkronizirana poruka u sustavu za prijenos šifriranih poruka nije prikladna, budući da se poruka može izgubiti i ne doći do primatelja, u kojem slučaju sustavi šifriranja izvora i prijemnik neće biti sinkroniziran. Stoga, u razmatranom slučaju, ne postoji alternativa prijenosu sinkronizirane poruke zajedno s šifriranom porukom.

S druge strane, može se navesti i suprotan primjer. Pretpostavimo da se šifriranje podataka koristi za zaštitu informacija na disku, a implementirano je na niskoj razini, podaci su šifrirani po sektorima kako bi se osigurao neovisan pristup. U tom slučaju nemoguće je pohraniti sinkroniziranu poruku zajedno s šifriranim podacima, budući da se veličina sektora ne može promijeniti, ali se može izračunati kao funkcija broja glave za čitanje diska, broja staze (cilindra), i broj sektora na stazi. Sinkronizacija je u ovom slučaju vezana uz položaj sektora na disku koji se teško može promijeniti bez ponovnog formatiranja diska, odnosno bez uništavanja podataka na njemu.

Gama način ima još jednu zanimljivu značajku. U ovom načinu, bitovi podatkovnog niza su šifrirani neovisno jedan o drugom. Dakle, svaki bit šifriranog teksta ovisi o odgovarajućem bitu otvorenog teksta i, naravno, o rednom broju bita u nizu: . Iz ovoga slijedi da će promjena bita šifriranog teksta u suprotnu vrijednost dovesti do slične promjene bita otvorenog teksta u suprotnost:

gdje označava obrnuto u odnosu na t vrijednost bita ().

Ovo svojstvo daje napadaču mogućnost utjecaja na bitove šifriranog teksta kako bi napravio predvidljive, pa čak i ciljane promjene odgovarajućeg otvorenog teksta dobivenog nakon njegove dešifriranja, bez posjedovanja tajnog ključa. Ovo ilustrira dobro poznatu činjenicu u kriptologiji da tajnost i autentičnost su različita svojstva kriptografski sustavi . Drugim riječima, svojstva kriptosustava da osiguraju zaštitu od neovlaštenog pristupa sadržaju poruke i od neovlaštenih promjena poruke su neovisna i mogu se presijecati samo u nekim slučajevima. Prethodno navedeno znači da postoje kriptografski algoritmi koji osiguravaju određenu tajnost kriptiranih podataka, a istovremeno ne štite od promjena, i obrnuto, osiguravaju autentičnost podataka i ne ograničavaju mogućnost upoznavanja s njima. Iz tog razloga razmatrano svojstvo gama moda ne treba smatrati njegovim nedostatkom.

Kockanje s povratnom informacijom.

Ovaj način je vrlo sličan gama načinu rada i razlikuje se od njega samo u načinu generiranja gama elemenata - sljedeći gama element generira se kao rezultat transformacije duž 32-3 ciklusa prethodnog bloka šifriranih podataka, a na enkriptirati prvi blok podatkovnog niza, gama element se generira kao rezultat transformacije prema istom ciklusu sinkronizacije. Time se postiže povezivanje blokova - svaki blok šifriranog teksta u ovom načinu ovisi o odgovarajućem i svim prethodnim blokovima otvorenog teksta. Stoga se ovaj način ponekad naziva skaliranje s meshing blokovima . Činjenica da su blokovi povezani nema utjecaja na sigurnost šifre.

Shema algoritama za dekodiranje i dešifriranje u gama modu povratne sprege prikazana je na slici 5. i zbog svoje jednostavnosti ne treba komentar.


Slika 5. Algoritam za šifriranje (dešifriranje) podataka u gama modu s povratnom spregom.

Šifriranje u gama načinu zatvorene petlje ima iste značajke kao i šifriranje u normalnom gama načinu, osim učinka oštećenja šifriranog teksta na odgovarajući otvoreni tekst. Za usporedbu, napišimo funkcije dešifriranja blokova za oba navedena načina:

igre na sreću;

Igranje s povratnim informacijama;

Dok u normalnom načinu skaliranja promjene u određenim bitovima šifriranog teksta utječu samo na odgovarajuće bitove otvorenog teksta, u načinu skaliranja s povratnom vezom slika je nešto kompliciranija. Kao što se može vidjeti iz odgovarajuće jednadžbe, kod dešifriranja bloka podataka u gama modu zatvorene petlje, blok otvorenih podataka ovisi o odgovarajućim i prethodnim šifriranim blokovima podataka. Stoga, ako unesemo izobličenja u šifrirani blok, tada će nakon dešifriranja biti iskrivljena dva bloka otvorenih podataka - odgovarajući i onaj koji slijedi, a izobličenja će u prvom slučaju biti iste prirode kao u gama način, au drugom slučaju - kao u načinu jednostavna zamjena. Drugim riječima, u odgovarajućem bloku otvorenih podataka bit će oštećeni isti bitovi kao u bloku šifriranih podataka, au sljedećem bloku otvorenih podataka svi bitovi će biti neovisni jedan o drugome s vjerojatnošću 1 / 2 će promijeniti svoje vrijednosti.

Razvoj simulacije umetanja u niz podataka.

U prethodnim odjeljcima raspravljali smo o utjecaju oštećenja šifriranih podataka na odgovarajuće jasne podatke. Otkrili smo da se kod dešifriranja u načinu jednostavne zamjene odgovarajući blok otvorenih podataka iskrivljuje na nepredvidiv način, a kod dešifriranja bloka u gama načinu rada promjene su predvidljive. U modu skaliranja zatvorene petlje, dva bloka su iskrivljena, jedan na predvidljiv način, a drugi na nepredvidiv način. Znači li to da je sa stajališta zaštite od nametanja lažnih podataka gama način rada loš, dok su načini jednostavne zamjene i povratne gama dobri? - Ni u kom slučaju. Pri analizi ove situacije potrebno je uzeti u obzir činjenicu da se nepredvidive promjene u dešifriranom bloku podataka mogu detektirati samo u slučaju redundantnosti istih podataka, a što je stupanj redundantnosti veći, to je veća vjerojatnost otkriti izobličenje. Vrlo velika redundancija se događa, na primjer, za tekstove na prirodnim i umjetnim jezicima, u kojem slučaju je činjenica iskrivljenja gotovo neizbježna. Međutim, u drugim slučajevima, na primjer, kod izobličenja komprimirane digitalizirane zvučne slike, jednostavno ćemo dobiti drugačiju sliku koju naše uho može percipirati. Izobličenje će u ovom slučaju ostati neotkriveno, osim ako, naravno, ne postoji a priori informacija o prirodi zvuka. Zaključak je sljedeći: budući da sposobnost nekih načina šifriranja da otkriju izobličenja unesena u šifrirane podatke uvelike ovisi o prisutnosti i stupnju redundantnosti šifriranih podataka, ta sposobnost nije imanentno svojstvo odgovarajućih načina i ne može se smatrati njihova prednost.

Kako bi se riješio problem otkrivanja izobličenja u šifriranom nizu podataka s određenom vjerojatnošću, GOST predviđa dodatni način kriptografske transformacije - stvaranje imitiranog umetanja. Lažni umetak je kombinacija kontrole koja ovisi o otvorenim podacima i informacijama o tajnom ključu. Svrha korištenja oponašanja umetanja je otkrivanje svih slučajnih ili namjernih promjena u nizu informacija. Problem naveden u prethodnom paragrafu može se uspješno riješiti dodavanjem lažnog umetka u šifrirane podatke. Za potencijalnog napadača sljedeća dva zadatka su praktički nerješiva ​​ako ne posjeduje ključ:

  • proračun simulacije umetanja za dani otvoreni niz informacija;
  • odabir otvorenih podataka za određeni simulacijski umetak;

Shema algoritma za generiranje simuliranog umetka prikazana je na slici 6.


Slika 6. Algoritam za generiranje simuliranog umetka za niz podataka.

Dio bloka primljen na izlazu uzima se kao umetak imitacije, obično njegova 32 najmanje značajna bita. Pri odabiru veličine simuliranog umetaka treba uzeti u obzir da je vjerojatnost uspješnog nametanja lažnih podataka jednaka 2 –| ja | po pokušaju brute-force-a, osim ako napadač nema učinkovitiju metodu brute-force-a od jednostavnog pogađanja. Kada koristite 32-bitni lažni umetak, ova vjerojatnost je

Rasprava o GOST kriptografskim algoritmima.

Kriptografska snaga GOST-a.

Prilikom odabira kriptografskog algoritma za korištenje u određenom razvoju, jedan od odlučujućih faktora je njegova snaga, odnosno otpornost na pokušaje protivnika da ga otkrije. Pitanje jačine šifre, pomnije ispitivanje, svodi se na dva međusobno povezana pitanja:

  • je li uopće moguće otvoriti ovu šifru;
  • ako da, koliko je to teško u praksi;

Šifre koje se uopće ne mogu razbiti nazivaju se apsolutno ili teoretski sigurnima. Postojanje takvih šifara dokazuje Shannonov teorem, ali cijena ove snage je potreba za korištenjem ključa koji nije manji od veličine same poruke za šifriranje svake poruke. U svim slučajevima, osim niza posebnih, ova cijena je previsoka, pa se u praksi uglavnom koriste šifre koje nemaju apsolutnu sigurnost. Dakle, najčešće korištene sheme šifriranja mogu se riješiti u konačnom vremenu, točnije u konačnom broju koraka od kojih je svaki neka operacija nad brojevima. Za njih je najvažniji pojam praktične stabilnosti, koji izražava praktičnu težinu njihova razotkrivanja. Kvantitativna mjera ove poteškoće može biti broj elementarnih aritmetičkih i logičkih operacija koje se moraju izvršiti da bi se riješila šifra, odnosno da bi se odredio odgovarajući otvoreni tekst za dani šifrat s vjerojatnošću koja nije manja od zadane vrijednosti. Istodobno, uz niz dekriptiranih podataka, kriptoanalitičar može imati blokove otvorenih podataka i odgovarajuće šifrirane podatke ili čak mogućnost dobivanja odgovarajućih šifriranih podataka za bilo koje otvorene podatke koje odabere - ovisno o navedenim i mnogim drugih neodređenih uvjeta, razlikuju se zasebne vrste kriptoanalize.

Svi moderni kriptosustavi izgrađeni su prema Kirchhoffovom principu, odnosno tajnost šifriranih poruka određena je tajnošću ključa. To znači da čak i ako je sam algoritam šifriranja poznat kriptoanalitičaru, on i dalje ne može dešifrirati poruku ako nema odgovarajući ključ. Šifra se smatra dobro osmišljenom ako ne postoji način da se razbije učinkovitije nego brutalnim pretraživanjem cijelog prostora ključa, tj. preko svih mogućih ključnih vrijednosti. GOST vjerojatno odgovara ovom principu - tijekom godina intenzivnih istraživanja nije predložena niti jedna učinkovita metoda za njegovu kriptoanalizu. Što se tiče snage, mnogo je redova veličine superiorniji od bivšeg američkog standarda šifriranja, DES-a.

GOST koristi 256-bitni ključ, a veličina ključeva je 2256. Nijedan od elektroničkih uređaja koji trenutačno postoje ili se očekuju u bliskoj budućnosti ne može pokupiti ključ za manje od mnogo stotina godina. Ova je vrijednost ovih dana postala de facto standard veličine ključa za simetrične kriptografske algoritme, a podržava je i novi američki standard šifriranja. Bivši američki standard, DES, sa svojom stvarnom veličinom ključa od 56 bita i veličinom prostora ključa od samo 256, više nije dovoljno jak u svjetlu mogućnosti modernih računalnih alata. To se pokazalo kasnih 1990-ih nekoliko uspješnih brute-force napada na DES. Osim toga, DES je bio predmet posebnih metoda kriptoanalize, kao što su diferencijalna i linearna. U tom smislu, DES može biti od više istraživačkog ili znanstvenog interesa nego od praktičnog interesa. Godine 1998. službeno je prepoznata njegova kriptografska slabost - Nacionalni institut za standarde SAD-a preporučio je korištenje trostruke DES enkripcije. A krajem 2001. službeno je odobren novi američki standard šifriranja, AES, izgrađen na drugačijim načelima i bez nedostataka svog prethodnika.

Bilješke o arhitekturi GOST-a.

Dobro je poznato da je domaći standard šifriranja predstavnik cijele obitelji šifara izgrađenih na istim principima. Njegov najpoznatiji "rođak" je bivši američki standard šifriranja, DES algoritam. Sve ove šifre, poput GOST-a, sadrže algoritme od tri razine. Osnova je uvijek određeni “osnovni korak”, na temelju kojeg se na sličan način grade “osnovni ciklusi”, a na njihovoj osnovi već se grade praktični postupci za šifriranje i razvoj umetanja imitacije. Dakle, specifičnost svake od šifara ove obitelji leži upravo u njenom glavnom koraku, odnosno čak u njegovom dijelu. Iako je arhitektura klasičnih blok šifri, kojima GOST pripada, daleko izvan okvira ovog članka, ipak vrijedi reći nekoliko riječi o njoj.

Algoritmi za "osnovne korake kripto-transformacije" za šifre poput GOST-a izgrađeni su na identičan način, a ta se arhitektura naziva uravnotežena Feistelova mreža (uravnotežena Feistelova mreža) nazvana po osobi koja ju je prva predložila. Shema transformacije podataka u jednom ciklusu ili, kako se to obično naziva, krug , prikazano na slici 7.


Slika 7. Sadržaj glavnog koraka kripto-transformacije za blok šifre slične GOST-u.

Blok jednake veličine dovodi se na ulaz glavnog koraka, čija se gornja i donja polovica obrađuju odvojeno jedna od druge. Tijekom transformacije, donja polovica bloka postavlja se na mjesto starijeg, a starija se kombinira korištenjem bit-wise “ ekskluzivni ili » s rezultatom izračuna neke funkcije, umjesto mla. Ova funkcija, koja kao argument uzima donju polovicu bloka i element ključnih informacija ( x), sadržajni je dio šifre i naziva se funkcija šifriranja . Iz različitih razloga, pokazalo se korisnim podijeliti šifrirani blok na dva dijela iste veličine: | N 1 |=|N 2 | - to je činjenica koja odražava riječ "uravnotežen" u nazivu arhitekture. Međutim, mreže s neuravnoteženim šifriranjem također se koriste s vremena na vrijeme, iako ne tako često kao uravnotežene. Osim toga, razmatranja o snazi ​​šifre zahtijevaju da veličina ključnog elementa ne bude manja od veličine polovice bloka: u GOST-u sve tri veličine su 32 bita. .

Ako gore navedeno primijenimo na shemu glavnog koraka GOST algoritma, postaje očito da blokovi 1,2,3 algoritma (vidi sliku 1) određuju izračun njegove funkcije šifriranja, a blokovi 4 i 5 postavljaju formiranje izlaznog bloka glavnog koraka na temelju sadržaja ulaznog bloka i vrijednosti funkcije šifriranja. Više detalja o arhitekturi suvremenih blok šifri s tajnim ključem može se pronaći u klasičnim radovima, ili u prilagođenom obliku u mojim radovima.

U prethodnom odjeljku već smo usporedili DES i GOST u smislu trajnosti, sada ćemo ih usporediti u smislu funkcionalnog sadržaja i jednostavnosti implementacije. U GOST enkripcijskim ciklusima, glavni korak se ponavlja 32 puta, za DES ta vrijednost je 16. Međutim, sama GOST enkripcijska funkcija mnogo je jednostavnija od slične DES funkcije, u kojoj postoji mnogo nepravilnih bitnih permutacija. Ove su operacije iznimno neučinkovito implementirane na modernim nespecijaliziranim procesorima. GOST ne sadrži takve operacije, pa je mnogo prikladniji za implementaciju softvera.

Nijedna od implementacija DES-a koje je autor razmotrio za platformu Intel x86 ne postiže čak ni polovicu performansi implementacije GOST-a koja vam je ponuđena u ovom članku, unatoč dvostruko kraćem ciklusu. Sve gore navedeno ukazuje da su GOST programeri uzeli u obzir i pozitivne i negativne aspekte DES-a, te da su realnije procijenili sadašnje i buduće mogućnosti kriptoanalize. Međutim, uzimanje DES-a kao osnove pri usporedbi performansi implementacija šifre više nije relevantno. Novi američki standard enkripcije radi mnogo bolje s učinkovitošću - s istom veličinom ključa kao GOST od 256 bita, AES radi brže od njega za oko 14% - to je u usporedbi s brojem "elementarnih operacija". Osim toga, GOST je praktički nemoguće paralelizirati, dok AES ima mnogo više mogućnosti u tom pogledu. Na nekim arhitekturama ova prednost AES-a može biti manja, na drugima može biti veća. Dakle, na Intel Pentium procesoru doseže 28%. Pojedinosti se mogu pronaći u.

Zahtjevi za kvalitetu ključnih informacija i ključni izvori.

Ne pružaju svi ključevi i zamjenske tablice maksimalnu snagu šifre. Svaki algoritam šifriranja ima svoje kriterije za procjenu ključnih informacija. Dakle, za DES algoritam postojanje tzv. slabe tipke ”, u kojem veza između otvorenih i kriptiranih podataka nije dovoljno maskirana, a šifru je relativno lako razbiti.

Iscrpan odgovor na pitanje o kriterijima kvalitete za ključeve i tablice zamjene GOST-a, ako ga uopće možete dobiti bilo gdje, samo je od programera algoritma. Relevantni podaci nisu objavljeni u javnom tisku. Međutim, prema utvrđenoj proceduri, ključni podaci dobiveni od ovlaštene organizacije moraju se koristiti za šifriranje informacija koje imaju pečat. Neizravno, to može ukazivati ​​na postojanje metoda za provjeru ključnih podataka za "uši". Ako je prisutnost slabih ključeva u GOST-u diskutabilno pitanje, tada je prisutnost slabih zamjenskih čvorova nesumnjiva. Očito je da je "trivijalna" supstitucijska tablica, prema kojoj se svaka vrijednost zamjenjuje sama sobom, toliko slaba da se kod njezine uporabe šifra jednostavno razbija, bez obzira koji je ključ.

Kao što je gore navedeno, kriteriji za procjenu ključnih informacija nisu dostupni, ali o njima se još uvijek mogu uzeti neka opća razmatranja.

Ključ

Ključ mora biti niz statistički neovisnih bitova koji s jednakom vjerojatnošću poprimaju vrijednosti 0 i 1. Ne može se potpuno isključiti mogućnost da se neke specifične vrijednosti ključa mogu pokazati "slabima", tj. šifra možda neće pružiti određenu razinu sigurnosti ako se koriste. Međutim, vjerojatno je udio takvih vrijednosti u ukupnoj masi svih mogućih ključeva zanemariv. Barem, intenzivno istraživanje šifri još nije otkrilo nijedan takav ključ ni za jednu od poznatih (tj. predloženih od strane FAPSI-ja) supstitucijskih tablica. Stoga će ključevi generirani uz pomoć određenog generatora stvarno slučajnih brojeva biti visoke kvalitete s vjerojatnošću koja se zanemarivo malo razlikuje od jedinice. Ako se ključevi generiraju pomoću generatora pseudo-slučajnih brojeva, tada upotrijebljeni generator mora pružiti gornje statističke karakteristike i, osim toga, imati visoku kriptografsku snagu, ne manju od one samog GOST-a. Drugim riječima, zadatak određivanja članova koji nedostaju u nizu elemenata koje je generirao generator ne bi trebao biti lakši od zadatka razbijanja šifre. Osim toga, različiti statistički kriteriji mogu se koristiti za odbijanje ključeva s lošim statističkim performansama. U praksi su obično dovoljna dva kriterija - za provjeru jednakovjerojatnog rasporeda ključnih bitova između vrijednosti 0 i 1 obično se koristi Pearsonov kriterij ("hi kvadrat"), a za provjeru neovisnosti ključnih bitova kriterij serije je koristi se. O navedenim kriterijima možete pročitati u udžbenicima ili priručnicima matematičke statistike.

Najbolji pristup za generiranje ključeva bio bi korištenje hardverskih MF senzora, ali to nije uvijek prihvatljivo iz ekonomskih razloga. Prilikom generiranja malog niza ključnih informacija, razumna alternativa korištenju takvog senzora je i naširoko se koristi u praksi metodom "elektroničkog ruleta", kada sljedeći generirani dio slučajnih bitova ovisi o trenutku kada operater pritisne određenu tipku na tipkovnici računala. U ovoj shemi izvor slučajnih podataka je korisnik računala, točnije, vremenske karakteristike njegove reakcije. U ovom slučaju, samo nekoliko bitova nasumičnih podataka može se generirati po pritisku tipke, tako da je ukupna brzina generiranja ključnih informacija mala - do nekoliko bitova u sekundi. Očito, ovaj pristup nije prikladan za dobivanje velikih nizova ključeva.

U slučaju kada je potrebno razviti veliki niz ključnih informacija, moguće je i vrlo rašireno koristiti razne softverske senzore pseudoslučajnih brojeva. Budući da takav senzor zahtijeva visoku kriptografsku snagu, prirodno je koristiti sam generator gama šifre kao njega - gamu koju generira šifra jednostavno "izrežemo" na "komade" željene veličine, za GOST - 32 bajta svaki. Naravno, za ovaj pristup potreban nam je „glavni ključ“ koji možemo dobiti gore opisanom metodom elektroničkog ruleta i uz njegovu pomoć pomoću šifre u modu gama generatora dobiti niz ključnih informacija volumen koji nam je potreban. Dakle, ova dva načina generiranja ključeva - "ručni" i "algoritamski" - rade u tandemu, nadopunjujući jedan drugog. Sheme generiranja ključeva u "niskobudžetnim" informacijskim kriptografskim sustavima zaštite gotovo su uvijek izgrađene prema ovom principu.

Tablica zamjene

Zamjenska tablica je dugotrajni ključni element, odnosno vrijedi mnogo dulje nego pojedinačni ključ. Pretpostavlja se da je zajednička svim kriptografskim čvorovima unutar jednog sustava kriptografske zaštite. Čak i ako se povrijedi povjerljivost zamjenske tablice, snaga šifre ostaje iznimno visoka i ne pada ispod dopuštene granice. Stoga nema posebne potrebe čuvati tablicu u tajnosti, au većini komercijalnih primjena GOST-a to se radi na ovaj način. S druge strane, supstitucijska tablica je kritičan element za osiguranje snage cijele šifre. Odabir pogrešne tablice može dovesti do toga da se šifra lako razbije poznatim metodama kriptoanalize. Kriteriji za razvoj supstitucijskih čvorova su tajna sa sedam pečata i FAPSI ih vjerojatno neće podijeliti s javnošću u bliskoj doglednoj budućnosti. U konačnici, da biste rekli je li ova konkretna zamjenska tablica dobra ili loša, morate uložiti ogromnu količinu rada - mnogo tisuća radnih sati i radnih sati. Nakon što je odabrana i korištena, tablica je podložna zamjeni ako i samo ako se šifra s njezinom upotrebom pokazala ranjivom na jednu ili drugu vrstu kriptoanalize. Stoga je najbolji izbor za prosječnog korisnika šifre uzeti jednu od nekoliko tablica koje su postale javne. Na primjer, iz standarda hash funkcije, to je također "centralno bankarstvo"; informacije o ovim tablicama mogu se pronaći u javnom tisku, pa čak i na internetu, ako dobro tražite.

Za one koji nisu navikli ići jednostavnim putem, u nastavku je opća shema za dobivanje kvalitetnih tablica:

  1. Koristeći jednu ili drugu metodu, razvijate skup od osam zamjenskih čvorova sa zajamčenim karakteristikama nelinearnosti. Postoji nekoliko takvih metoda, a jedna od njih je korištenje tzv. savijenih funkcija.
  2. Provjeravate implementaciju najjednostavnijih "kriterija kvalitete" - na primjer, onih objavljenih za DES zamjenske čvorove. Evo još nekih općenitih razmatranja o ovom rezultatu: Svaki supstitucijski čvor može se opisati s četiri logičke funkcije iz četiri logička argumenta. Ako ove funkcije, napisane u minimalni oblik(tj. s minimalnom mogućom duljinom izraza) nisu dovoljno složeni, takav zamjenski čvor se odbija. Osim toga, pojedine funkcije unutar cijele supstitucijske tablice moraju se međusobno u dovoljnoj mjeri razlikovati. U ovoj fazi eliminiraju se mnoge tablice namjerno niske kvalitete.
  3. Za šifru s tablicama po vašem izboru, izgradite različite okrugle modele koji odgovaraju različitim vrstama kriptoanalize i izmjerite odgovarajuće karakteristike "profila". Dakle, za linearnu kriptoanalizu, izgradite linearni statistički analog kruga šifriranja i izračunajte karakteristiku "profila" - indeks nelinearnosti. Ako se pokaže nedostatnim, supstitucijska tablica se odbacuje.
  4. Na kraju, koristeći rezultate prethodnog odlomka, šifru s tablicom po izboru podvrgnite intenzivnom istraživanju – pokušaju kriptoanalize svim poznatim metodama. Ova faza je najteža i dugotrajna. Ali ako se to radi kvalitetno, tada se s velikom vjerojatnošću može reći da šifru s tablicama koje ste odabrali neće otvoriti obični smrtnici, a moguće je da će biti preteška za posebne usluge.

Moguće je, međutim, učiniti mnogo lakše. Stvar je u tome što što je više rundi u šifri, to su sigurnosne karakteristike jedne runde manji utjecaj na sigurnost cijele šifre. U GOST-u postoje čak 32 kruga - više nego u gotovo svim šiframa slične arhitekture. Stoga je za većinu domaćih i komercijalnih primjena dovoljno dobiti zamjenske čvorove kao neovisne nasumične permutacije brojeva od 0 do 15. To se može praktično provesti, na primjer, miješanjem špila od šesnaest karata, od kojih je svakoj dodijeljena jedna vrijednosti navedenog raspona.

Što se tiče tablice zamjena potrebno je uočiti još jednu zanimljivost. Reverzibilnost ciklusa enkripcije 32-3 i 32-R ne zahtijeva da zamjenski čvorovi budu permutacije brojeva od 0 do 15. Sve funkcionira čak i ako postoje dupli elementi u zamjenskom čvoru, a zamjena je određena takvim čvorom , je nepovratan - međutim, u ovom slučaju, snaga šifre je smanjena. Zašto je to tako ne razmatramo u ovom članku, ali samu činjenicu nije teško provjeriti. Da biste to učinili, dovoljno je prvo pokušati šifrirati, a zatim dešifrirati blok podataka koristeći takvu "inferiornu" tablicu zamjene, čiji čvorovi sadrže duplicirane vrijednosti.

Varijacije na temu GOST-a

Vrlo često je za korištenje u kriptografskom sustavu zaštite podataka potreban algoritam s većom brzinom implementacije od GOST-a, a nije potrebna tako visoka kriptografska snaga. Tipičan primjer takvih zadataka su razne vrste elektroničkih burzovnih sustava trgovanja koji upravljaju trgovinskim sesijama u stvarnom vremenu. Ovdje su korišteni algoritmi enkripcije potrebni da onemoguće dešifriranje operativnih podataka sustava tijekom sesije (podaci o postavljenim narudžbama, sklopljenim poslovima itd.), nakon čega su ti podaci u pravilu već beskorisni za napadače . Drugim riječima, potrebno je samo nekoliko sati zajamčene ustrajnosti, što je tipična duljina sesije trgovanja. Jasno je da bi korištenje punopravnog GOST-a u ovoj situaciji bilo pucanje iz topa u vrapce.

Kako postupiti u ovom i sličnim slučajevima kako bi se povećala brzina enkripcije? Odgovor leži na površini - koristite modifikaciju šifre s manje osnovnih koraka (rundi) u osnovnim ciklusima. Koliko puta smanjimo broj rundi enkripcije, performanse se povećavaju za isti iznos. Ova se promjena može postići na dva načina - smanjenjem duljine ključa i smanjenjem broja "ciklusa pretraživanja" ključa. Podsjetimo se da je broj osnovnih koraka u osnovnim ciklusima enkripcije N=n m, Gdje n je broj 32-bitnih elemenata u ključu, m- broj ciklusa korištenja ključnih elemenata, u standardu n=8, m=4. Možete smanjiti bilo koji od ovih brojeva, ali najjednostavnija opcija je smanjiti duljinu ključa bez utjecaja na shemu njegove upotrebe.

Jasno je da će cijena za ubrzanje rada biti smanjenje snage šifre. Glavna poteškoća leži u činjenici da je prilično teško koliko-toliko točno procijeniti veličinu tog smanjenja. Očito, jedini mogući način da se to učini jest provesti studiju varijanti šifre sa smanjenim ciklusima kriptografske transformacije "u potpunosti". Jasno je da, prvo, to zahtijeva korištenje povjerljivih podataka, koje posjeduju samo programeri GOST-a, i, drugo, vrlo je naporno. Stoga ćemo sada pokušati dati vrlo, vrlo grubu procjenu, temeljenu samo na općim obrascima.

Što se tiče otpornosti šifre na probijanje “ekstenzivnim” metodama, odnosno na napad “grubom silom”, tu je sve više-manje jasno: 64-bitni ključ je negdje na rubu dostupnosti ovoj vrsti napada, šifra s ključem od 96 bita i višim (upamtite da ključ mora sadržavati cijeli broj 32-bitnih elemenata) prilično je otporna protiv njega. Doista, prije nekoliko godina bivši američki standard šifriranja, DES, više je puta bio hakiran brutalnom silom - prvo ga je hakirala računalna mreža organizirana na temelju globalnog interneta, a zatim specijalizirana, tj. računalo dizajnirano posebno za ovu svrhu. Pretpostavimo da standardna verzija GOST-a, kada se implementira u softver na modernim procesorima, radi četiri puta brže od DES-a. Tada će 8-kružni "smanjeni GOST" raditi 16 puta brže od DES-a. Pretpostavimo također da se tijekom vremena od hakiranja DES-a performanse računalne tehnologije, prema Mooreovom zakonu, učetverostručile. Kao rezultat toga dobivamo da je sada provjera jednog 64-bitnog ključa za "smanjeni GOST" s osam ciklusa 64 puta brža nego što je nekada bila obavljena provjera jednog DES ključa. Dakle, prednost ove verzije GOST-a u odnosu na DES u smislu složenosti napada grubom silom smanjena je s 2 64–56 = 2 8 = 256 na 256 / 64 = 4 puta. Slažem se, ovo je vrlo iluzorna razlika, gotovo nikakva.

Mnogo je teže procijeniti otpornost oslabljenih modifikacija GOST-a na "intenzivne" metode kriptoanalize. Međutim, opći obrazac se može pratiti i ovdje. Činjenica je da karakteristike "profila" mnogih trenutno najjačih tipova kriptoanalize eksponencijalno ovise o broju krugova šifriranja. Dakle, za linearnu kriptoanalizu (LCA) ovo će biti karakteristika linearnosti L :

Gdje C i su konstante, R je broj krugova. Sličan odnos postoji za diferencijalnu kriptoanalizu. Prema svom "fizičkom značenju" sve karakteristike ove vrste su vjerojatnosti. Obično su količina početnih podataka potrebnih za kriptoanalizu i njihova složenost obrnuto proporcionalne takvim karakteristikama. Iz toga slijedi da ovi pokazatelji radnog intenziteta eksponencijalno rastu s porastom broja osnovnih koraka enkripcije. Dakle, kada se broj krugova smanji za nekoliko puta, složenost najpoznatijih tipova analiza će se promijeniti kao, vrlo približno i grubo, korijen ove snage iz početnog iznosa. Ovo je vrlo veliki pad u izdržljivosti.

S druge strane, GOST je dizajniran s velikom marginom sigurnosti i danas je otporan na sve poznate vrste kriptoanalize, uključujući diferencijalnu i linearnu. Što se tiče LCA, to znači da je za njegovu uspješnu implementaciju potrebno više parova „otvoreni blok – šifrirani blok” nego što ih „postoji u prirodi”, odnosno više od 2 64 . S obzirom na gore navedeno, to znači da će za uspješan LCA GOST-a od 16 krugova biti potrebni najmanje blokovi ili 235 bajtova ili 32 GB podataka, a za GOST od 8 krugova najmanje blokovi ili 219 bajtova ili 0,5 MB.

Zaključci iz svega što je gore rečeno dani su u sljedećoj tablici, koja sažima karakteristike smanjenih verzija GOST-a.

Broj rundi Veličina ključa, bit Indeks brzog djelovanja Vjerojatne karakteristike šifre (vrlo gruba procjena)
24 192 1,33 Otporan na većinu poznatih vrsta KA, ili biti na rubu otpora. Praktična implementacija CA je nemoguća zbog visokih zahtjeva za početnim podacima i intenzitetom rada.
16 128 2 Teoretski je nestabilan za neke vrste kriptoanalize, ali njihova praktična implementacija u većini slučajeva je teška zbog visokih zahtjeva za početnim podacima i intenziteta rada.
12 95 2,67 Nije otporan na neke poznate vrste kriptoanalize, no prikladan je za kratkotrajno osiguranje tajnosti malih količina podataka (do desetaka ili stotina KB).
8 64 4 Nije otporan na neke poznate vrste kriptoanalize, ali je prikladan za kratkotrajno osiguranje tajnosti malih količina podataka (do nekoliko desetaka Kbajta).

Posljednje dvije opcije, s 12 i 8 krugova, mogu pružiti vrlo, vrlo ograničenu zaštitu u vremenu. Njihova je uporaba opravdana samo u zadacima gdje se zahtijeva samo kratkotrajna tajnost zatvorenih podataka, reda veličine nekoliko sati. Moguće područje primjene ovih slabih šifara je zatvaranje UDP prometa elektroničkih sustava trgovanja burzom. U ovom slučaju svaki paket podataka (datagram, srednje "D" od UDP kratice) je kriptiran zasebnim 64-bitnim ključem, a sam ključ je kriptiran sesijskim ključem (ključ čiji je opseg jedna komunikacijska sesija između dva računala ) i prenosi se zajedno s podacima.

Prije nego završim sa smanjenim verzijama GOST-a, reći ću da su sva gore navedena razmatranja vrlo spekulativna. Standard osigurava izdržljivost za samo jednu opciju od 32 metka. I nitko vam ne može dati jamstva da će se otpornost smanjenih varijanti šifre na razbijanje promijeniti na gore naveden način. Ako se ipak odlučite koristiti ih u svom razvoju, sjetite se da ste kročili na vrlo klimavo tlo, koje vam u svakom trenutku može izmaknuti ispod nogu. Budući da vam je brzina enkripcije ključna, možda biste trebali razmisliti o korištenju brže šifre ili snažnijeg računala? Još jedno razmatranje zbog kojeg se ovo isplati učiniti je da će oslabljene verzije GOST-a biti što osjetljivije na kvalitetu korištenih zamjenskih jedinica.

Problem o kojem se radi ima i lošu stranu. Što ako brzina enkripcije nije kritična, a zahtjevi za snagom su vrlo strogi? Postoje dva načina za povećanje otpora GOST-a - uvjetno ćemo ih nazvati "ekstenzivnim" i "intenzivnim". Prvi od njih nije ništa više od jednostavnog povećanja broja rundi enkripcije. Nije mi sasvim jasno zašto bi to uopće trebalo, jer domaći standard već i bez toga daje potrebnu stabilnost. Međutim, ako patite od paranoje iznad potrebne razine (a svi "branitelji informacija" jednostavno su dužni patiti od nje, to je uvjet za profesionalnu podobnost, pitanje je samo težine slučaja :), ovo će vam pomoći smiri se malo. Ako niste sigurni u ovu KGB šifru ili tablicu zamjene koju koristite, samo udvostručite, učetverite itd. broj krugova - odaberite višestrukost na temelju ozbiljnosti vašeg slučaja. Ovaj vam pristup omogućuje stvarno povećanje snage šifre - ako je ranije kriptoanaliza bila jednostavno nemoguća, sada je nemoguće na kvadrat!

Zamršenije i zanimljivije je pitanje je li moguće povećati snagu šifre bez promjene broja i strukture glavnih koraka šifriranja. Začudo, odgovor na ovo pitanje je potvrdan, iako ponovno gazimo na klimavom tlu nagađanja. Činjenica je da u GOST-u, u glavnom koraku pretvorbe, treba zamijeniti 4 bita za 4 bita, ali u praksi (o tome ćemo govoriti kasnije), sve implementacije softvera izvode zamjenu bajt po bajt, tj. 8 x 8 bita - ovo je učinjeno iz razloga učinkovitosti. Ako odmah dizajniramo takvu zamjenu kao 8-bitnu, tada ćemo značajno poboljšati karakteristike jedne runde. Prvo, karakteristika "difuzije" ili indikator "lavine" će se povećati - jedan bit izvornih podataka i/ili ključ će utjecati na više bitova rezultata. Drugo, za veće supstitucijske čvorove mogu se dobiti niže diferencijalne i linearne karakteristike, čime se smanjuje osjetljivost šifre na slične vrste kriptoanalize. To se posebno odnosi na smanjene GOST cikluse, a za opcije od 8 i 12 krugova takav je korak jednostavno neophodan. To donekle nadoknađuje gubitak izdržljivosti kod njih zbog smanjenja broja rundi. Ono što otežava korištenje ove tehnike je to što ćete takve "povećane" zamjenske čvorove morati dizajnirati sami. A također i činjenica da je veće čvorove općenito primjetno teže dizajnirati od manjih.

Nestandardna uporaba standarda.

Naravno, glavna svrha GOST kripto algoritama je šifriranje podataka i zaštita od imitacije. No, mogu se naći iu drugim aplikacijama, naravno vezanim uz zaštitu informacija. Razgovarajmo ukratko o njima:

1. Za enkripciju u gama načinu, GOST predviđa generiranje kriptografske gama - niz bitova s ​​dobrim statističkim karakteristikama i visokom kriptografskom snagom. Nadalje, ova se gama koristi za modificiranje otvorenih podataka, što rezultira šifriranim podacima. Međutim, ovo nije jedina moguća primjena kriptografske gama. Činjenica je da je algoritam za njegov razvoj generator sekvenci pseudoslučajnih brojeva (PRNG) izvrsnih karakteristika. Naravno, nije baš razumno koristiti takav PRNG gdje se zahtijeva samo dobivanje statističkih karakteristika generirane sekvence, a kriptografska snaga nije potrebna, nije baš razumno - za te slučajeve postoje mnogo učinkovitiji generatori. Ali za razne aplikacije povezane sa sigurnošću informacija, takav će izvor biti vrlo koristan:

  • Kao što je gore navedeno, gama se može koristiti kao "sirovina" za generiranje ključeva. Da biste to učinili, samo trebate dobiti gama segment željene duljine - 32 bajta. Na taj se način ključevi mogu izraditi prema potrebi i ne moraju se pohranjivati ​​- ako takav ključ bude ponovno potreban, bit će ga dovoljno jednostavno ponovno generirati. Bit će potrebno samo zapamtiti na kojem je ključu izvorno generiran, koja je sinkronizirana poruka korištena i od kojeg bajta generirane gama ključ počinje. Svi podaci, osim korištenog ključa, nisu tajni. Ovaj pristup će olakšati kontrolu prilično složenog i razgranatog sustava ključeva, koristeći samo jedan "glavni ključ".
  • Slično prethodnom, gama se može koristiti kao početna "sirovina" za generiranje lozinki. Ovdje se može postaviti pitanje zašto ih je uopće potrebno generirati, nije li ih lakše jednostavno izmisliti po potrebi. Neuspjeh ovog pristupa jasno je pokazao niz incidenata u računalnim mrežama, od kojih je najveći bila dnevna paraliza Interneta u studenom 1988. koju je prouzročio "crv Morris". Jedan od načina na koji je maliciozni program ušao u računalo bilo je pogađanje lozinke: program je pokušao ući u sustav uzastopnim sortiranjem nekoliko stotina lozinki sa svog internog popisa, au značajnom dijelu slučajeva to mu je i pošlo za rukom. Fantazija čovjeka u izmišljanju lozinki pokazala se vrlo siromašnom. Zato u onim organizacijama gdje se sigurnosti posvećuje dužna pažnja, lozinke generira i korisnicima distribuira administrator sigurnosnog sustava. Generiranje lozinki malo je kompliciranije od generiranja ključa, budući da se u ovom slučaju "sirova" binarna gama mora pretvoriti u oblik znakova, a ne samo "izrezati" na dijelove. Osim toga, možda će trebati odbaciti pojedinačne vrijednosti kako bi se osiguralo da će se svi znakovi abecede jednako vjerojatno pojaviti u lozinci.
  • Drugi način korištenja kriptografskog raspona je zajamčeno brisanje podataka na magnetskim medijima. Činjenica je da i kod prepisivanja informacija na magnetskom mediju ostaju tragovi prijašnjih podataka, koji se mogu povratiti odgovarajućim pregledom. Da bi se ti tragovi uništili, takvo prepisivanje mora se izvesti mnogo puta. Pokazalo se da bi bilo potrebno manje puta prepisivati ​​informacije u medije ako se u takvom postupku koriste slučajni ili pseudoslučajni podaci koji će ostati nepoznati stručnjacima koji pokušavaju obnoviti prepisanu informaciju. Ovdje će vam dobro doći gama šifra.

2. Ne samo kriptografska gama, već i sama kriptografska transformacija, može se koristiti za potrebe koje nisu izravno povezane s enkripcijom:

  • Znamo da je jedna od takvih opcija za korištenje GOST-a razvoj simuliranog umetka za podatkovne nizove. Međutim, na temelju bilo koje blok šifre, uključujući GOST, prilično je lako izgraditi shemu za izračun jednosmjerne hash funkcije, koja se u literaturi naziva i MDC, što u različitim izvorima označava promjena koda za otkrivanje / manipulacija (M modifikacija/ M anipulacija D etekcija C oda) ili sažetak poruke (M esej D igest C oda). Prvo dešifriranje pojavilo se u literaturi puno ranije, drugo, kraće, mislim da su izmislili oni koji se nisu mogli sjetiti prvog :) - bila je šala. MDC se može izravno koristiti u sustavima zaštite od imitacije kao analog umetanja imitacije, koji međutim ne ovisi o tajnom ključu. Osim toga, MDC se široko koristi u shemama elektroničkog digitalnog potpisa (EDS), jer je većina tih shema dizajnirana na takav način da je pogodno potpisati blok podataka fiksne veličine. Kao što znate, na temelju razmatranog standarda GOST 28147-89 izgrađen je standard Ruske Federacije za izračunavanje jednosmjerne hash funkcije GOST R34.11-94.
  • Manje je poznato da se na temelju bilo koje blok šifre, pa tako i GOST-a, može izgraditi potpuno funkcionalna EDS shema, s ključem tajnog potpisa i otvorenom kombinacijom provjere. Iz više razloga ova shema nije dobila široku praktičnu distribuciju, ali se u nekim slučajevima još uvijek može smatrati vrlo atraktivnom alternativom "matematičkim" EDS shemama koje su trenutno dominantne u svijetu.

Književnost

Sustavi za obradu informacija. Kriptografska zaštita. Algoritam kriptografske pretvorbe GOST 28147-89. Država. Kom. SSSR prema standardima, M., 1989. ftp://ftp.wtc-ural.ru/pub/ru.crypt/GOST-28147
Shannon Claude. Matematička teorija tajnih sustava. U zbirci "Radovi o teoriji informacija i kibernetici", M., IL, 1963, str. 333-369 (prikaz, ostalo). http://www.enlight.ru/crypto/articles/shannon/shann__i.htm
Najava odobrenja Federalnog standarda za obradu informacija (FIPS) 197, Advanced Encryption Standard (AES), Federal Register Vol. 66, br. 235 / četvrtak, 6. prosinca 2001. / Obavijesti, str. 63369–63371. http://csrc.nist.gov/encryption/aes/
Feistel Horst. Kriptografija i računalna sigurnost. Prijevod A. Vinokurova, izdanje Horsta Feistela. Kriptografija i računalna privatnost, Scientific American, svibanj 1973., sv. 228, br. 5, str. 15-23 (prikaz, ostalo). http://www.enlight.ru/crypto/articles/feistel/feist_i.htm
Schneier Bruce. Primijenjena kriptografija. 2. izd. Protokoli, algoritmi i izvorni tekstovi na jeziku C., M., "Triumph", 2002 http://www.ssl.stu.neva.ru/psw/crypto/appl_rus/appl_cryp.htm
Menezes Alfred, van Oorschot Paul, Vanstone Scott. Priručnik primijenjene kriptografije. http://www.cacr.math.uwaterloo.ca/hac/
Vinokurov Andrej. Kako je strukturirana blok šifra? Rukopis. http://www.enlight.ru/crypto/articles/vinokurov/blcyph_i.htm
Vinokurov Andrej. Pitanja o kriptografiji za elektronički časopis iNFUSED BYTES online. http://www.enlight.ru/crypto/articles/ib/ib.htm
Vinokurov Andrej, Primenko Eduard. Tekst izvješća "O programskoj implementaciji standarda šifriranja Ruske Federacije i SAD-a", konferencija o informatizaciji, Moskva, MEPhI, 28.-29. siječnja 2001. Objavljeno u zborniku radova sa skupa.
Informacijska tehnologija. Kriptografska zaštita informacija. Hash funkcija GOST R34.11-94, Gosstandart RF, M., 1994.

Ovaj algoritam je obvezan za korištenje kao algoritam šifriranja u državnim organizacijama Ruske Federacije i nizu komercijalnih.

Opis algoritma

Shema algoritma je prikazana na sl. 3.1. Kao što vidite, shema ovog algoritma je prilično jednostavna, što nedvosmisleno pojednostavljuje njegovu softversku ili hardversku implementaciju.

Algoritam GOST 28147-89 š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 dodaje njegova vrijednost

s vrijednošću podbloka N2 (zbrajanje se izvodi modulo 2), tada se podblokovi mijenjaju. Takva se transformacija provodi za određeni broj krugova: 16 ili 32, ovisno o načinu rada algoritma (opisano u nastavku). U svakom krugu izvode se sljedeće operacije:

1. Prekrivanje tipki. Sadržaj /VI podbloka dodaje se modulo 2 32 Kx dijelu ključa.

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 predstavljen je kao spoj 32-bitnih podključeva (slika 3.2):

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

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

Riža. 3.1. Shema algoritma GOST 28147-

Riža. 3.2. Ključ šifriranja algoritma GOST 28147-89

2. Tabularna zamjena. Nakon preklapanja ključa, /VI podblok se dijeli na 8 dijelova od po 4 bita, od kojih se vrijednost svakog pojedinačno zamjenjuje u skladu sa zamjenskom tablicom za ovaj dio podbloka. Zamjene tablica (Substitution box, S-box) često se koriste u modernim algoritmima šifriranja, pa ih vrijedi detaljnije razmotriti.

Zamjena tablice se koristi na ovaj način: na ulaz se dovodi podatkovni blok određene dimenzije (u ovom slučaju 4-bitni), č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”, tj. vrijednost je 4. Prema tablici, izlazna vrijednost će biti 15, tj. "1111" (0 se zamjenjuje s 4, 1 se zamjenjuje s 11, vrijednost 2 se ne mijenja itd.).

Kao što vidite, shema algoritma je vrlo jednostavna, što znači da najveći teret šifriranja podataka pada na zamjenske tablice. Nažalost, algoritam ima svojstvo da postoje "slabe" supstitucijske tablice pomoću kojih se algoritam može otkriti 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. Bitno ciklički pomak ulijevo za 11 bita.

Modovi algoritma

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

□ jednostavan način zamjene;

□ gama način rada;

P igraći način rada s povratnom informacijom;

□ način proizvodnje imitacijskih dodataka.

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 enkripcije opisanu gore.

Način jednostavnog mijenjanja

U jednostavnom načinu zamjene, 32 runde opisane gore jednostavno se izvode za šifriranje svakog 64-bitnog bloka informacija. 32-bitni podključevi koriste se u sljedećem nizu:

□ KO, Kl, K2, K3, K4, K5, Kb, AG7, KO, ATI itd. - u rundama od 1 do 24;

□ K1, Kb, K5, K4, K3, K2, K\, KO - u 25. do 32. rundi.

Dešifriranje u načinu jednostavne zamjene vrši se na potpuno isti način, ali s nešto drugačijim slijedom korištenja podključeva:

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

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

Slično standardnom ECB načinu rada, zbog odvojene enkripcije blokova, način jednostavne zamjene strogo se ne preporučuje za šifriranje stvarnih podataka; trebao bi se koristiti samo za šifriranje drugih ključeva šifriranja u shemama s više ključeva.

Gama način rada

U gama modu (Sl. 3.3), svaki blok otvorenog teksta dodaje se bit po bit modulo 2 gama bloku šifre veličine 64 bita. Šifra gama je poseban niz koji se generira pomoću transformacija opisanih gore kako slijedi:

1. U registrima N1 i N2 zapisano je njihovo početno punjenje - 64-bitna vrijednost, nazvana "sinkronizacija" (sinkronizacija je zapravo analog vektora inicijalizacije u CBC, CFB i OFB modovima ).

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

3. Sadržaji N1 zbrajaju se modulo (2 32 - 1) uz konstantu CI = 2 24 + 2 16 + 2 8 + 4 , rezultat zbrajanja upisuje se u /VI registar.

4. Sadržaj N2 zbraja se modulo 2 s konstantom C2 = 2 24 + 2 16 + 2 8 +1, rezultat zbrajanja upisuje se u registar N2.

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

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

Za dešifriranje, gama se generira na isti način, zatim se operacija XOR ponovno primjenjuje na šifrirani tekst i gama bitove.

Za generiranje iste gama šifre, korisnik koji dešifrira kriptogram mora imati isti ključ i istu vrijednost sinkronizacijske poruke koji su korišteni za šifriranje informacija. U suprotnom, nećete moći dobiti izvorni tekst iz šifriranog.

U većini implementacija algoritma GOST 28147-89 sinkronizacija nije tajni element, ali sinkronizacija može biti tajna kao i ključ za šifriranje. U ovom slučaju možemo smatrati da je efektivna duljina ključa algoritma (256 bita) povećana za još 64 bita sinkronističke poruke, što se može smatrati dodatnim ključnim elementom.

Gama način povratne informacije

U povratnom gama modu, počevši od 2. bloka, /VI i L/2 registri se ne popunjavaju prethodnim gama blokom, već rezultatom enkripcije prethodnog bloka otvorenog teksta (slika 3.4). Prvi blok u ovom načinu rada generira se na potpuno isti način kao i prethodni.

Riža. 3.4. Generiranje gama šifre u gama modu s povratnom spregom

Način generiranja imitatora

Spoof je kriptografski kontrolni zbroj izračunat pomoću ključa za šifriranje i dizajniran za provjeru integriteta poruka. Da biste ga izračunali, 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 imitator, upisuje se u registre N1 i N2 i šifrira u modu reducirane jednostavne zamjene, u kojem se izvodi prvih 16 krugova od 32.

2. Dobiveni rezultat se zbraja modulo 2 sa sljedećim blokom informacija, spremajući rezultat u N1 i N2.

3. M i N2 se ponovno šifriraju u smanjenom načinu jednostavne zamjene, i tako dalje do zadnjeg bloka informacija.

Prefiksom se smatra 64-bitni rezultirajući sadržaj registara N1 i N2 ili njihov dio. Najčešće se koristi 32-bitni prefiks imitacije, odnosno polovica sadržaja registara. Ovo je dovoljno, jer, kao i svaki kontrolni zbroj, prefiks imitacije prvenstveno je namijenjen zaštiti od slučajnog iskrivljavanja informacija. Za zaštitu od namjerne izmjene podataka koriste se druge kriptografske metode - prvenstveno elektronički digitalni potpis (vidi odjeljak 1.1).

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

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

2. Nakon dekodiranja, prefiks imitacije ponovno se izračunava i uspoređuje s poslanim.

3. Ako se izračunati i poslani prefiksi imitacije ne podudaraju, šifrirani tekst je iskrivljen tijekom prijenosa ili su korišteni netočni ključevi tijekom dešifriranja.

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

Prefiks imitacije je neki analog koda za provjeru autentičnosti MAC poruke izračunatog u CBC načinu rada; razlika je u tome što izračun prefiksa ne koristi sinkronizaciju, dok izračun MAC-a koristi inicijalizacijski vektor.

Kriptografska snaga algoritma

Godine 1994. opis algoritma GOST 28147-89 preveden je na engleski i objavljen; nakon toga su se počeli pojavljivati ​​rezultati njegovih analiza koje su obavili strani stručnjaci; međutim, nikakvi napadi koji se približavaju izvedivim nisu pronađeni kroz značajno vrijeme.

□ velika duljina ključa - 256 bita; zajedno s porukom tajne sinkronizacije efektivna duljina ključa povećava se na 320 bita;

□ 32 kruga transformacija; već nakon 8 krugova postiže se puni učinak disperzije ulaznih podataka: promjena jednog bita bloka otvorenog teksta utjecat će na sve bitove bloka šifriranog teksta, i obrnuto, tj. postoji višestruka sigurnosna margina.

Razmotrite rezultate kriptoanalize algoritma GOST 28147-89.

Analiza supstitucijskih tablica

Budući da tablice zamjene nisu navedene u standardu, brojni radovi (na primjer, u) sugeriraju da "nadležna organizacija" može izdati i "dobre" i "loše" tablice zamjene. No, poznati stručnjak Bruce Schneier takve pretpostavke naziva "glasinama". Jasno je da kriptografska snaga algoritma uvelike ovisi o svojstvima korištenih zamjenskih tablica, odnosno postoje slabe zamjenske tablice (vidi gore za primjer), čija upotreba može pojednostaviti napad algoritma. Unatoč tome, mogućnost korištenja različitih tablica zamjene čini se vrlo vrijednom idejom, potkrijepljenom sljedećim dvjema činjenicama iz povijesti standarda šifriranja DES (pogledajte odjeljak 3.15 za detalje):

□ napadi koji koriste i linearnu i diferencijalnu kriptoanalizu DES algoritma koriste specifične značajke supstitucijskih tablica; kada koristite druge tablice, kriptoanaliza će morati početi ispočetka;

□ Pokušalo se ojačati DES u odnosu na linearnu i diferencijalnu kriptoanalizu korištenjem jačih supstitucijskih tablica; takve tablice, koje su doista stabilnije, predložene su, na primjer, u algoritmu s 5 DES; ali, nažalost, bilo je nemoguće zamijeniti DES sa s 5 DES, budući da su zamjenske tablice strogo definirane u standardu, odnosno implementacije algoritma vjerojatno ne podržavaju mogućnost promjene tablica u druge.

U nizu radova (na primjer, i ) pogrešno je zaključeno da tajne tablice zamjene algoritma GOST 28147-89 mogu biti dio ključa i povećati njegovu efektivnu duljinu (što nije značajno, budući da algoritam ima vrlo veliki 256-bitni ključ). Međutim, rad dokazuje da se tajne tablice zamjene mogu izračunati pomoću sljedećeg napada, koji se može primijeniti u praksi:

1. Postavite nulti ključ i potražite "nulti vektor", tj. vrijednost z = /(0), gdje je /() okrugla funkcija algoritma. Ova faza traje oko 2 operacije šifriranja.

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

Modifikacije algoritama i njihova analiza

U radu je provedena kriptoanaliza modifikacija algoritma GOST 28147-89:

□ GOST-H algoritam, u kojem je u odnosu na izvorni algoritam promijenjen redoslijed korištenja potključeva, naime u krugovima od 25. do 32. potključevi se koriste izravnim redoslijedom, tj. na isti način kao u prethodnom krugovi algoritma;

□ 20-kružni GOST® algoritam koji koristi XOR umjesto modulo 2 32 za preklapanje ključa.

Na temelju rezultata analize zaključeno je da su GOST-H i GOST© slabiji od izvornog algoritma GOST 28147-89, budući da oba imaju klase slabih ključeva. Vrijedno je napomenuti da u smislu kriptoanalize GOST© rad ponavlja od riječi do riječi odjeljak o kriptoanalizi algoritma GOST 28147-89, objavljen 2000. u dobro poznatom djelu (bez ikakvog pozivanja na izvornik). Time se dovodi u pitanje profesionalnost autora rada i njegovi drugi rezultati.

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

U radu je dana još jedna modifikacija koja se odnosi na supstitucijske tablice, u kojoj se analizira jedna od mogućih metoda za izračunavanje supstitucijskih tablica na temelju ključa za šifriranje. Autori rada zaključili su da takva ovisnost slabi algoritam, budući da dovodi do prisutnosti slabih ključeva i do nekih potencijalnih ranjivosti algoritma.

Kompletna analiza algoritma

Također postoje napadi na cijeli GOST 28147-89 bez ikakvih izmjena. Jedan od prvih otvorenih radova u kojima je provedena analiza algoritma, poznati rad, posvećen je napadima koji iskorištavaju slabosti u postupku proširenja ključa niza poznatih algoritama za šifriranje. Konkretno, cjeloviti algoritam GOST 28147-89 može se razbiti pomoću diferencijalne kriptoanalize na povezanim ključevima, ali samo ako se koriste slabe supstitucijske tablice. Verzija algoritma s 24 runde (kojoj nedostaje prvih 8 rundi) otvara se na isti način za sve tablice zamjene, ali jake tablice zamjene (na primjer, dane u ) čine takav napad apsolutno nepraktičnim.

Domaći znanstvenici A. G. Rostovtsev i E. B. Makhovenko 2001. godine predložili su temeljno novu metodu kriptoanalize (prema autorima, znatno je učinkovitija od linearne i diferencijalne kriptoanalize) formiranjem objektivne funkcije iz poznatog otvorenog teksta koji mu odgovara šifrirani tekst i željenu vrijednost ključa i pronalaženje njegovog ekstrema koji odgovara pravoj vrijednosti ključa. Također su pronašli veliku klasu slabih ključeva algoritma GOST 28147-89, koji vam omogućuju da otvorite algoritam koristeći samo 4 odabrana otvorena teksta i njihove odgovarajuće šifrirane tekstove s prilično niskom složenošću. U radu se nastavlja kriptoanaliza algoritma.

Godine 2004. skupina stručnjaka iz Koreje predložila je napad kojim je pomoću diferencijalne kriptoanalize na pridruženim ključevima moguće s vjerojatnošću od 91,7% dobiti 12 bita tajnog ključa. Napad zahtijeva 235 odabranih otvorenih tekstova i 236 operacija šifriranja. Kao što vidite, ovaj napad je praktički beskoristan za stvarno otvaranje algoritma.