Contacte

Standardul intern de criptare GOST 28147 89. Etapa principală a transformării cripto

DES este un standard de criptare intern mai convenabil pentru implementarea software-ului.

Spre deosebire de DES american, standardul rus folosește o cheie mai lungă - 256 de biți. În plus, standardul rus propune utilizarea a 32 de runde de criptare, în timp ce DES - doar 16.

Astfel, parametrii principali ai algoritmului de conversie a datelor criptografice GOST 28147-89 sunt următorii: dimensiunea blocului este de 64 de biți, dimensiunea cheii este de 256 de biți și numărul de runde este de 32.

Algoritmul este rețea clasică Feistel. Blocul de date criptat este împărțit în două părți identice, dreapta R și stânga L. Partea dreaptă este adăugată la subcheia rotundă și criptează partea stângă prin intermediul unui algoritm. Înainte de runda următoare, părțile din stânga și din dreapta sunt schimbate. Această structură permite utilizarea aceluiași algoritm atât pentru criptarea, cât și pentru decriptarea blocului.

Algoritmul de criptare utilizează următoarele operații:

  • adăugarea de cuvinte modulo 2 32;
  • deplasarea ciclică a cuvântului la stânga cu numărul specificat de biți;
  • adaos pe biți modulo 2;
  • înlocuire conform tabelului.

La diferiți pași ai algoritmilor GOST, datele pe care aceștia operează sunt interpretate și utilizate în moduri diferite. În unele cazuri, elementele de date sunt tratate ca matrice de biți independenți, în alte cazuri ca un număr întreg nesemnat, iar în altele ca un element complex cu o structură, constând din mai multe elemente mai simple.

Structură rotundă GOST 28147-89

Structura unei runde de GOST 28147-89 este prezentată în Fig. 5.1.

Blocul de date criptat este împărțit în două părți, care sunt apoi procesate ca numere întregi nesemnate pe 32 de biți. În primul rând, jumătatea dreaptă a blocului și subcheia rundei sunt adăugate modulo 2 32. Apoi se efectuează înlocuirea bloc cu bloc. Valoarea de 32 de biți obținută în pasul anterior (să-i spunem S) este interpretată ca o matrice de opt blocuri de coduri de 4 biți: S = (S 0, S 1, S 2, S 3, S 4, S 5, S 6, S 7)... În plus, valoarea fiecăruia dintre cele opt blocuri este înlocuită cu una nouă, care este selectată în conformitate cu tabelul de substituție după cum urmează: valoarea blocului S i este înlocuită cu elementul S i în ordine (numerotare de la zero ) al i-lea nod de substituții (adică, tabelele de substituție al i-lea rând, numerotate tot de la zero). Cu alte cuvinte, un element cu un număr de rând egal cu numărul blocului înlocuit și un număr de coloană egal cu valoarea blocului înlocuit ca un întreg nenegativ pe 4 biți este selectat ca înlocuitor pentru valoarea blocului. Fiecare rând al tabelului de înlocuire conține numere de la 0 la 15 în ordine aleatorie, fără repetări. Valorile elementelor tabelului de substituție sunt luate de la 0 la 15, deoarece în cei patru biți care sunt substituiți, se poate scrie un întreg fără semn în intervalul de la 0 la 15. De exemplu, prima linie a unui S-box ar putea conține valori de genul acesta: 5, 8, 1, 13, 10, 3, 4, 2, 14, 15, 12, 7, 6, 0, 9, 11 ... În acest caz, valoarea blocului S 0 (cei patru biți cei mai puțin semnificativi ai numărului de 32 de biți S) va fi înlocuită cu numărul de la poziția al cărui număr este egal cu valoarea blocului înlocuit. Dacă S 0 = 0, atunci va fi înlocuit cu 5, dacă S 0 = 1, atunci va fi înlocuit cu 8 etc.


Orez. 5.1.

După ce înlocuirea este efectuată, toate blocurile de 4 biți sunt din nou combinate într-un singur cuvânt de 32 de biți, care este apoi deplasat ciclic cu 11 biți la stânga. În sfârșit, cu operațiunea pe biți "suma mod 2" rezultatul este combinat cu jumătatea stângă, rezultând o nouă jumătate dreaptă a lui R i. Noua parte stângă L i este luată egală cu partea cea mai puțin semnificativă a blocului transformat: L i = R i-1.

Valoarea rezultată a blocului convertit este considerată rezultatul unei runde a algoritmului de criptare.

Proceduri de criptare și decriptare

Prin urmare, GOST 28147-89 este un cifru bloc conversia datelor se desfășoară în blocuri în așa-numita cicluri de bază... Buclele de bază constau în mai multe execuții pentru blocul de date al rundei principale, pe care le-am considerat mai devreme, folosind diferite elemente cheie și diferă între ele în ordinea utilizării elementelor cheie. Fiecare rundă folosește una dintre cele opt subchei posibile pe 32 de biți.

Să luăm în considerare procesul de creare a rundelor de subcheie. În GOST, această procedură este foarte simplă, mai ales în comparație cu DES. Cheia de 256 de biți K este împărțită în opt subchei de 32 de biți, notate K 0, K 1, K 2, K 3, K 4, K 5, K 6, K 7. Algoritmul include 32 de runde, astfel încât fiecare subcheie este utilizată pentru criptare în patru runde în secvența prezentată în Tabelul 5.1.

Tabelul 5.1. Secvența utilizării subcheilor pentru criptare
Rundă 1 2 3 4 5 6 7 8
Construcție completă K 0 K 1 K 2 K 3 K 4 K 5 K 6 K 7
Rundă 9 10 11 12 13 14 15 16
Construcție completă K 0 K 1 K 2 K 3 K 4 K 5 K 6 K 7
Rundă 17 18 19 20 21 22 23 24
Construcție completă K 0 K 1 K 2 K 3 K 4 K 5 K 6 K 7
Rundă 25 26 27 28 29 30 31 32
Construcție completă K 7 K 6 K 5 K 4 K 3 K 2 K 1 K 0

Procesul de decriptare urmează același algoritm ca și criptarea. Singura diferență este ordinea în care sunt utilizate subcheile K i. La decriptare, cheile secundare trebuie utilizate în ordine inversă, și anume, așa cum se indică la

1 Schema structurala algoritm de transformare criptografică 1

2 Modul de schimb ușor 4

3 Modul Gamma 8

4 Modul Gamma cu părere 11

5 Mod de producere a insertului de imitație 14

Anexa 1 Termeni utilizați în acest standard și definițiile acestora 16

Anexa 2 Valorile constantelor C1, C2 18

Anexa 3 Scheme de implementare software a algoritmului criptografic

transformare. 19

Anexa 4 Reguli pentru însumarea modulo 2 32 și modulo (2 32 -I) 25

STANDARD DE STAT

UNION SSR

SISTEME DE PRELUCRARE A INFORMAȚIILOR. CRIPTOGRAFĂ PROTEJATĂ

Algoritmul de transformare criptografică

Data introducerii 01.07.90

Acest standard stabilește un algoritm de transformare criptografică unificată pentru sistemele de procesare a informațiilor din rețelele electronice. mașini de calcul(Computer), sisteme de calcul individuale și computere, care determină regulile pentru criptarea datelor și dezvoltarea unui insert imitație.

Algoritmul de transformare criptografică este destinat implementării hardware sau software, îndeplinește cerințele criptografice și, în ceea ce privește capacitățile sale, nu impune restricții cu privire la gradul de secretizare a informațiilor protejate.

Standardul este obligatoriu pentru organizațiile, întreprinderile și instituțiile care aplică protecție criptografică date stocate și transmise în rețele de calculatoare, în complexe informatice separate sau în calculatoare.

Termenii utilizați în acest standard și definițiile acestora sunt furnizați în anexa 1.

I. SCHEMA STRUCTURALĂ A ALGORITMULUI DE TRANSFORMARE CRIPTOGRAFICĂ

1.1. Diagrama bloc a algoritmului de transformare criptografică (criptoschema) conține (vezi Figura 1):

Ediție oficială ★

un dispozitiv de stocare a cheilor pe 256 de biți (KZU), format din opt unități pe 32 de biți (X 0, X t. X 2, A3 L4, X $, X 6, Xy); patru unități pe 32 de biți (/ V (, N 2, Nj, / V 4);

Retipărire interzisă

© Editura Standards, 1989 © Editura IPK Standards, 1996

două unități pe 32 de biți L / $,) cu umpleri constante C 2, C \\

două sumatoare pe 32 de biți modulo 32 (CM |, SL / 3);

Adder pe 32 de biți pentru însumarea biți modulo 2 (SL / 2);

sumator pe 32 de biți modulo (2 32 - 1) (SL / 4);

adunator modulo 2 (SL / 5), nu este impusă nicio limitare a lățimii de biți a sumatorului SL / $;

bloc de substituție (A);

un registru cu deplasare ciclică unsprezece trepte către bitul cel mai semnificativ (R).

1.2. Blocul de substituție A „constă din opt noduri de substituție A’j,

A 2, A “z, K 4, A5, A7, A 8 cu memorie pe 64 de biți fiecare. Post

Vectorul de 32 de biți aplicat blocului de substituție este împărțit în opt vectori consecutivi de 4 biți, fiecare dintre care este convertit într-un vector de 4 biți de către nodul de înlocuire corespunzător, care este un tabel de șaisprezece rânduri care conține patru biți de umplutură pe linie. . Vectorul de intrare definește adresa rândului din tabel, umplerea acestui rând este vectorul de ieșire. Vectorii de ieșire de 4 biți sunt apoi concatenați secvențial într-un vector de 32 de biți.

1.3. În timpul adunării și deplasării ciclice a vectorilor binari, cei mai semnificativi biți sunt considerați a fi biții unităților cu numere mari.

1.4. Când scrieți cheia (I ", W 2 ..., W q e (0,1), d = N256, în

Se introduce valoarea KZU W \ rangul i stocare Xq, valoarea W 2 este introdusă în al 2-lea bit al stocării L #, ..., valoarea W ^ 2 este introdusă în bitul 32 al stocării Xq; valoarea W33 este introdusă în primul bit al unității X \ y valoarea este introdusă în al 2-lea bit al X \ y ..., valoarea WM este introdusă în al 32-lea bit al valorii X \\ W 6 5 este introdusă în primul bit al unității X 2 etc., valoarea 1Y 2 5b este introdusă în al 32-lea bit al stocării Xy.

1.5. Când se rescrie informații, conținutul bitului p al unui acumulator (adunator) este rescris în rangul p o altă unitate (sumator).

1.6. Valorile umplerilor constante Cj, C 2 (constante) ale unităților / V 6, / V5 sunt date în Anexa 2.

1.7. Cheile care determină completarea CAM și tabelele blocului de substituție K sunt elemente secrete și sunt furnizate în modul prescris.

Completarea tabelelor blocului de substituție K este un element cheie pe termen lung comun rețelei de calculatoare.

Organizare tipuri diferite comunicarea se realizează prin construirea unui sistem cheie adecvat. În acest caz, se poate folosi posibilitatea generării cheilor (umplerea CCD-ului) în modul de înlocuire simplă și criptarea acestora în modul de înlocuire simplă cu asigurarea protecției la imitație pentru transmiterea prin canale de comunicație sau stocarea în memoria computerului.

1.8. Schema cripto prevede patru tipuri de lucru: criptarea (decriptarea) datelor într-un mod simplu de înlocuire; criptarea (decriptarea) datelor în modul gamma;

criptarea (decriptarea) datelor în modul gamma cu feedback;

modul de producere a unei inserții simulate.

Schemele de implementare software a algoritmului de transformare criptografică sunt prezentate în Anexa 3.

2. MOD SIMPLU DE ÎNLOCUIRE

2.1. Criptarea datelor deschise în modul ușor de înlocuit

2.1.1. Cryptocircuit „care implementează algoritmul de criptare în modul de înlocuire simplă, trebuie să aibă forma prezentată în Fig.2.

Datele deschise care trebuie criptate sunt împărțite în blocuri de 64 de biți fiecare. Intrarea oricărui bloc T () = (D | (0), ^ (O), ..., q 3 1 (0), x 32 (0), L | (0), b 2 (0) y . ., Z> 32 (0)) informație binarăîn unitățile N \ și N 2 este făcută astfel încât valoarea lui D | (0) să fie introdusă în primul bit al lui N |, valoarea a 2 (0) este introdusă în al 2-lea bit / Vj și așa mai departe, valoarea este 32 (0 ) este introdusă în al 32-lea bit al iVj; se introduce valoarea /> | (0).

Primul bit A / 2, valoarea b 2 (0) este introdusă în al 2-lea bit N 2 etc., valoarea f> 32 (0) este introdusă în al 32-lea bit N 2. Ca rezultat, se obține starea (i 32 (0), i 3 | (0), ... și 2 (0) y<7|(0)) накопителя yVj и состояние (/>32 (0), b 2 1 (0), ..., /> | (0)) de depozitare N 2.

2.1.2. 256 de biți ai cheii sunt introduși în RAM. Conținutul a opt unități pe 32 de biți Aq, X \ t ..., Xj este după cum urmează:

^0 = (^32^3.....

*1 =(^64^63, . ^34^33)

* 7 = (^ 56> ^ 255. ..., U / 226, ^ 225)

2.1.3. Algoritmul de criptare pentru un bloc de date deschise pe 64 de biți în modul de înlocuire simplă este format din 32 de cicluri.

În primul ciclu, umplerea inițială a acumulatorului este însumată modulo 2 32 în sumatorul CM \ cu umplerea acumulatorului Xq, în timp ce umplerea acumulatorului Nj se păstrează.

Rezultatul însumării este convertit în blocul de substituție K și vectorul rezultat este alimentat la intrarea registrului /?, unde este deplasat ciclic cu unsprezece pași către biții superiori. Rezultatul deplasării este însumat pe biți modulo 2 în sumatorul CM 2 cu umplerea pe 32 de biți a unității yV 2. Rezultatul obținut în CM 2 este înregistrat în N \% cu vechea umplutură N | suprascrie în N 2. Primul ciclu se încheie.

Ciclurile ulterioare sunt efectuate în același mod, în timp ce în

În al 2-lea ciclu se citește umplerea X \ de la CCD, în al 3-lea ciclu de la CCD

se citește umplutura X 2 etc., în al 8-lea ciclu se citește umplutura Xj din RAM. În ciclurile de la 9 la 16, precum și la ciclurile de la 17 la 24, umpluturile din CCD se citesc în aceeași ordine:

În ultimele opt cicluri, de la 25 la 32, ordinea citirii umpluturilor CCD este inversată:

naiba, naiba, naiba, naiba.

Astfel, la criptarea în 32 de cicluri, se efectuează următoarea ordine de selecție a umplerilor unității:

iad, ^ 2, ^), ^ 4> ^ 5, ^ 6 "^ 7, iad, ^ 2, ^ 3" ^ 4, ^ 5, - ^ 6, ^ 7, iad, iad, iad, iad, iad , la naiba, la naiba, la naiba.

În ciclul 32, rezultatul de la sumatorul SL / 2 este introdus în unitatea UU 2, iar umplutura veche este salvată în unitatea N \.

Obținut după al 32-lea nichel de criptare de umplere a unităților N | şi N2 este un bloc de date criptat corespunzător unui bloc de date deschis.

2.1 4 Ecuațiile de criptare în modul de înlocuire simplă sunt următoarele:

J * Cr> "(

I b (/) = a (/ ~ I)

când y = I -24;

G"

\ bO) - a O - O at / 8 * 25 -r 31; a (32) = a (31)

A (32) = (q (31) ffl X 0) KRG> b (31)

unde d (0) = (a 32 (0), «s | (0), ..., D | (0)) - umplerea inițială a N \ înainte de primul ciclu de criptare;

6 (0) = (632 (0), 63j (0), ..., 6j (0)) - umplere inițială / U 2 înainte de primul ciclu de criptare;

a (j) = (032 (7), 0z | (/) e ..., 0 | (/)) - umplerea CU, după al-lea ciclu de criptare;

b (j) = (6z 2 (/), 63j (/ "), ..., 6 | (/)) - umplere / V 2 după al-lea ciclu de criptare, y = 032.

Semnul φ înseamnă sumarea pe biți a vectorilor pe 32 de biți modulo 2.

Semnul W înseamnă însumarea vectorilor pe 32 de biți modulo 2 32. Regulile de însumare modulo 2 32 sunt date în Anexa 4;

/? - operația de deplasare ciclică cu unsprezece trepte către cifrele superioare, i.e.

^ (r 32 "O |> r 30> r 29> r 28> r 27> r 26" r 25> r 24> r 23 'G 22 "r 2b r 20>» r 2 * r |) ~

= (r 21 "r 20> -" r 2 * r 1 * Г 32> Г31 * ГзО »r 29 * r 28 *, 27e" 26e / "25>, 24> Г23", 22) *

2.1.5. Un bloc de date criptate Tw pe 64 de biți este scos de la unitățile L ^, UU 2 în următoarea ordine: de la biți 1, 2, ..., 32 ai L7 |, apoi de la 1, 2, . .., stocare pe 32 de biți W 2, adică

t w - (a,<32),0 2 (32),0 32 (32), 6,(32), 6 2 <32),6 32 <32».

Restul blocurilor de date deschise în modul de înlocuire simplă sunt criptate în același mod.

2.2. Decriptarea datelor criptate în modul de suprascriere ușoară

2.2.1. Criptocircuitul care implementează algoritmul de decriptare în modul de înlocuire simplă are aceeași formă (vezi pagina 2) ca și pentru criptare. 256 de biți ai aceleiași chei pe care a fost efectuată criptarea sunt introduși în RAM. Datele criptate care urmează să fie decriptate sunt împărțite în blocuri de 64 de biți fiecare intrare a oricărui bloc

T w - (0, (32), о 2 (32), ..., 0 32 (32), 6, (32), 6 2 (32), ..., 6 32 (32))

în dispozitivele de stocare L' și N 2 sunt produse astfel încât valoarea dj (32) să fie introdusă în primul bit / V, valoarea o 2 (32) este introdusă în al 2-lea bit / V etc., valoarea unui 32 (32) este injectată în al 32-lea bit / V ,; valoarea 6, (32) este introdusă în primul bit al lui N 2 și așa mai departe, valoarea 6 32 (32) este introdusă în al 32-lea bit al lui N 2.

2.2.2. Decriptarea se realizează conform aceluiași algoritm ca și criptarea datelor deschise, cu modificarea că umplerile unităților Xq, X \ y ..., Xj sunt citite din RAM în cicluri de decriptare în următoarea ordine:

iad, iad 3, iad, iad, iad, iad, iad, iad 0,

Iadul 6, Iadul 4, Iadul 2, Iadul, Iadul, Iadul, Iadul 2, Iadul.

2.2.3. Ecuațiile de decriptare sunt:

D d (32 - /) = (d (32 - / + 1) ShLG,.,) * LF6 (32- / + 1) b (32 - /) = d (32 - / + 1) la, / = 1 + 8;

I o (32- /) = (a (32- / M) SHDG (32 _ / )(tode8))KLFL(32./M) | 6 (32- /) = q (32 - / + 1)

la / = 9 + 31;

B (0) = (a (1) WDGo) OFi (1)

2.2.4. Obținut după 32 de cicluri de funcționare de umplere a unităților W, și N 2 constituie un bloc de date deschise.

To = (fli (O), a 2 (0), ..., Az 2 (0) »6, (0), 6 2 (0), ..., 6 32 (0)), corespunzător bloc de date criptate, în timp ce valoarea lui, (0) blocul 7o corespunde conținutului primului bit yV, valoarea 02 (0) corespunde

P. 8 GOST 28147-89

corespunde conținutului celei de-a 2-a cifre N \ etc., valoarea Dz2 (0) corespunde conținutului celei de-a 32-a cifre a lui N \; valoarea 6j (0) corespunde conținutului primei cifre, valoarea ^ (0) corespunde conținutului celei de-a doua cifre a lui N2 etc., valoarea £ zr (0) corespunde conținutului celei de-a 32-a cifre de N2-

Restul blocurilor de date criptate sunt decriptate în același mod.

2.3. Algoritmul de criptare în modul de înlocuire simplă a unui bloc de 64 de biți Г 0 este notat cu А у, adică.

A (T 0) = A (a (0), b (0)) = (a (32), b (32)) = T w.

2.4. Modul de înlocuire simplă poate fi utilizat pentru a cripta (decripta) datele numai în cazurile specificate în clauza 1.7.

3. MODUL DE JOC

3.1. Criptarea datelor deschise în modul gamma

3.1.1. Criptocircuitul care implementează algoritmul de criptare în modul gamma are forma prezentată în Fig. 3.

Datele deschise, împărțite în blocuri de 64 de serie T \) \ 7), 2) ..., 7)) m ", 1 7 [) M), sunt criptate în modul gamma prin însumarea pe biți modulo 2 în SL / 5 sumator cu scara cifrului G w, care este generat in blocuri de 64 de biti, i.e.

G _ / L1) L2) Lm-1) LM) \

"malv V 1 sh e * sh *" "Sh" "* * *" 111 / "

unde M este determinat de volumul de date criptate.

Tjj) este al-lea bloc de 64 de biți, / „numărul de cifre binare din blocul 7J) M) poate fi mai mic de 64, în timp ce partea din gama de criptare neutilizată pentru criptare din blocul T \ ^] este aruncat.

3.1.2. 256 de biți ai cheii sunt introduși în RAM. O secvență binară de 64 de biți (synchro-burst) S = (5 * 1, S 2, ..., 5 ^ 4) este introdusă în unitățile iVj, N 2, care este umplerea inițială a acestor unități pentru următoarele unități. generarea de blocuri MB ale cifrului gamma. Pachetul sincronizat este introdus în jV | și Л ^ astfel încât valoarea 5 [se introduce în primul bit al UU), valoarea lui S 2 este introdusă în al 2-lea bit al lui N \ etc., valoarea ^ este introdusă în al 32-lea bit 7V |; valoarea lui S33 este introdusă în primul bit al lui N 2, valoarea 4S34 este introdusă în al doilea bit al lui N 2 și așa mai departe, valoarea este introdusă în al 32-lea bit al lui N 2.

3.1.3. Umplerea inițială a unităților / Vj și N 2 (synchro-burst 5) este criptată în modul de înlocuire simplă în conformitate cu

Istoria acestui cifr este mult mai veche. Algoritmul, care a devenit ulterior baza standardului, s-a născut, probabil, în măruntaiele Direcției principale a opta a KGB-ului URSS (acum în structura FSB), cel mai probabil într-unul dintre institutele de cercetare închise. aflat sub jurisdicția sa, probabil încă în anii 1970, ca parte a proiectelor de creare a implementărilor software și hardware ale cifrului pentru diverse platforme informatice.

Din momentul publicării GOST, acesta avea ștampila restrictivă „Pentru uz oficial”, iar oficial codul a fost declarat „complet deschis” abia în mai 1994. Istoria creării cifrului și criteriile pentru dezvoltatori din 2010 nu au fost publicate.

Descriere

GOST 28147-89 - cifru bloc cu o cheie de 256 de biți și 32 de cicluri de conversie, care funcționează în blocuri de 64 de biți. Baza algoritmului de cifrare este rețeaua Feistel. Există patru moduri de operare ale GOST 28147-89:

  • mod de inserare imitație.

Mod de înlocuire ușoară

Pentru criptarea în acest mod, textul simplu este mai întâi împărțit în două jumătăți (biții mai puțin semnificativi - A, biții cei mai semnificativi - B). În ciclul i, se utilizează subcheia Ki:

(= binar "exclusiv sau")

Pentru a genera subchei, cheia originală de 256 de biți este împărțită în opt blocuri de 32 de biți: K 1 ... K 8.

Cheile K 9 ... K 24 sunt o repetare ciclică a tastelor K 1 ... K 8 (numerotate de la biții mai puțin semnificativi la cei mai semnificativi). Cheile K 25… K 32 sunt cheile K 8… K 1.

După finalizarea tuturor celor 32 de runde ale algoritmului, blocurile A 33 și B 33 sunt lipite împreună (rețineți că bitul cel mai semnificativ devine A 33, iar bitul cel mai puțin semnificativ este B 33) - rezultatul este rezultatul algoritmului.

Decriptarea se efectuează în același mod ca și criptarea, dar ordinea subcheilor K i este inversată.

Funcţie se calculează după cum urmează:

A i și Ki sunt adăugate modulo 2 32.

Rezultatul este împărțit în opt subsecvențe de 4 biți, fiecare dintre ele mergând la intrarea proprie nodul tabelului de înlocuire(în ordine crescătoare de prioritate a biților), numit mai jos S-bloc... Numărul total de cutii GOST S este de opt, adică același cu numărul de subsecvențe. Fiecare S-bloc este o permutare a numerelor de la 0 la 15. Prima subsecvență de 4 biți merge la intrarea primei casete S, a doua merge la intrarea celei de-a doua și așa mai departe.

Dacă S-bloc arata asa:

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

iar la intrarea blocului S 0, atunci ieșirea va fi 1, dacă 4, atunci ieșirea va fi 5, dacă intrarea este 12, atunci ieșirea va fi 6 etc.

Ieșirile tuturor celor opt casete S sunt concatenate într-un cuvânt de 32 de biți, apoi întregul cuvânt este deplasat ciclic la stânga (MSB) cu 11 biți.

Modul de înlocuire simplă are următoarele dezavantaje:

  • Poate fi folosit numai pentru a cripta text simplu cu o lungime care este un multiplu de 64 de biți
  • Când se criptează blocuri identice de text simplu, se obțin blocuri identice de text cifrat, care pot furniza anumite informații unui criptoanalist.

Textul standardului indică faptul că furnizarea de umplere a nodurilor de înlocuire (S-box) se face în modul prescris, adică de către dezvoltatorul algoritmului. Comunitatea dezvoltatorilor ruși ai CIPF a convenit asupra nodurilor de înlocuire utilizate pe Internet, vezi RFC 4357.

Avantajele GOST

  • inutilitatea unui atac de forță (atacurile XSL nu sunt luate în considerare, deoarece eficacitatea lor nu a fost pe deplin dovedită în acest moment);
  • eficienta implementarii si, in consecinta, performante ridicate pe computerele moderne.
  • prezența protecției împotriva impunerii de date false (dezvoltarea unei inserții de imitație) și același ciclu de criptare în toți cei patru algoritmi GOST.

Criptanaliză

Se crede (a se vedea, de exemplu, Vitaly V. Shorin, Vadim V. Jelezniakov și Ernst M. Gabidulin: Linear and Differential Cryptanalysis of Russian GOST) că GOST este rezistent la metode atât de utilizate pe scară largă precum criptoanaliza liniară și diferențială. Ordinea inversă de utilizare a tastelor în ultimele opt runde oferă protecție împotriva atacurilor de alunecare și a atacurilor de reflexie.

În mai 2011, cunoscutul criptoanalist Nicolas Courtois a dovedit existența unui atac asupra acestui cifr, care are o complexitate de 2 8 (256) ori mai mică decât complexitatea unei căutări directe prin forță brută, cu condiția să existe 2 64 deschise. -perechi text/text închis. Acest atac nu poate fi efectuat în practică din cauza complexității sale prea mari de calcul. Mai mult decât atât, cunoașterea a 264 de perechi text simplu/text închis permite în mod evident citirea textului cifrat fără măcar a calcula cheia. Cele mai multe alte lucrări descriu, de asemenea, atacuri care sunt aplicabile numai în anumite ipoteze, cum ar fi un anumit tip de chei sau tabele de înlocuire, unele modificări ale algoritmului original sau care necesită cantități încă de neatins de memorie sau de calcul. Întrebarea dacă există atacuri practice care nu exploatează slăbiciunea cheilor individuale sau a tabelelor de înlocuire rămâne deschisă.

Critica față de GOST

Principalele probleme ale GOST sunt legate de incompletitudinea standardului în ceea ce privește generarea de chei și tabele de înlocuire. Se crede că GOST are chei „slabe” și tabele de substituție, dar standardul nu descrie criteriile pentru selectarea și respingerea celor „slabe”. De asemenea, standardul nu specifică un algoritm pentru generarea tabelelor de substituție (S-boxes). Pe de o parte, acestea pot fi informații secrete suplimentare (în plus față de cheie) și, pe de altă parte, ridică o serie de probleme:

  • este imposibil să se determine puterea criptografică a algoritmului fără a cunoaște în prealabil tabelul de substituții;
  • Implementările de algoritm de la diferiți producători pot folosi tabele de înlocuire diferite și pot fi incompatibile între ele;
  • posibilitatea furnizării deliberate de tabele de substituție slabe de către autoritățile de acordare a licențelor din Federația Rusă;
  • potențialul (absența unei interdicții în standard) de utilizare a tabelelor de înlocuire în care nodurile nu sunt permutări, ceea ce poate duce la o scădere extremă a puterii cifrului.

În octombrie 2010, la o reuniune a Primului Comitet Tehnic Comun al Organizației Internaționale de Standardizare (ISO / IEC JTC 1 / SC 27), GOST a fost înaintat pentru includere în standardul internațional de coduri bloc ISO / IEC 18033-3. În acest sens, în ianuarie 2011, s-au format seturi fixe de noduri de înlocuire și au fost analizate proprietățile criptografice ale acestora. Cu toate acestea, GOST nu a fost adoptat ca standard și tabelele de înlocuire corespunzătoare nu au fost publicate.

Aplicații posibile

Note (editare)

Vezi si

Link-uri

  • GOST 28147-89 „Sisteme de procesare a informațiilor. Protecție criptografică. Algoritm pentru transformarea criptografică "
  • Serghei Panasenko Standard de criptare GOST 28147-89 (rusă) (15 august 2007). Preluat la 3 august 2012.
  • ... - un proiect criptografic al Cryptocom LLC pentru a adăuga algoritmi criptografici ruși la biblioteca OpenSSL. Arhivat din original pe 24 august 2011. Consultat la 16 noiembrie 2008.

Literatură

  • V. V. Melnikov Protecția informațiilor în sisteme informatice. - M .: Finanțe și Statistică, 1997.
  • Romanets Yu. V. Timofeev P. A., Shangin V. F. Protecția informațiilor în sisteme și rețele informatice. - M .: Radio și comunicare, 1999.
  • Kharin Yu.S., Bernik V.I., Matveev G.V. Bazele matematice ale criptologiei. - Mn. : BSU, 1999.
  • Gerasimenko V.A., Malyuk A.A. Bazele securității informațiilor. - M .: MGIFI, 1997.
  • Leonov A.P., Leonov K.P., Frolov G.V. Securitatea tehnologiilor bancare și de birou automatizate. - Mn. : Nat. carte Camera Belarusului, 1996.
  • Winter V. M .. Moldovyan A. A., Moldovyan N. A. Rețele de calculatoare și protecția informațiilor transmise. - SPb. : SPbGU, 1998.
  • Schneier B. 14.1 Algoritmul GOST 28147-89 // Criptografie aplicată. Protocoale, algoritmi, texte sursă în limbaj C = Criptografie aplicată. Protocoale, algoritmi și cod sursă în C. - M .: Triumph, 2002 .-- S. 373-377. - 816 p. - 3000 de exemplare. - ISBN 5-89392-055-4
  • Popov, V., Kurepkin, I. și S. Leontiev Algoritmi criptografici suplimentari pentru utilizare cu algoritmi GOST 28147-89, GOST R 34.10-94, GOST R 34.10-2001 și GOST R 34.11-94 // RFC 4357... - IETF, ianuarie 2006.

Fundația Wikimedia. 2010.

Algoritmul GOST 28147-89

GOST 28147-89 - Standardul sovietic și rus pentru criptarea simetrică, introdus în 1990, este, de asemenea, un standard CSI. Numele complet este „GOST 28147-89 Sisteme de procesare a informațiilor. Protecție criptografică. Algoritm pentru transformarea criptografică”.

Orez. 4.

Algoritm de blocare a cifrării. Când se folosește metoda de cifrare cu gamma, poate îndeplini funcțiile unui algoritm de cifrare în flux. GOST 28147-89 - cifru bloc cu o cheie de 256 de biți și 32 de cicluri de conversie, care funcționează în blocuri de 64 de biți. Baza algoritmului de cifrare este rețeaua Feistel. Există patru moduri de funcționare ale GOST 28147-89: înlocuire simplă, radiații gamma, radiații gamma cu feedback și modul de generare a unei inserții de imitație.

Avantajele algoritmului: inutilitatea unui atac de forță, eficiența implementării și, în consecință, performanța ridicată pe computerele moderne, prezența protecției împotriva impunerii de date false (generarea unei inserții de imitație) și același ciclu de criptare în toți cei patru algoritmi GOST, o cheie mai mare în comparație cu algoritmul DESX.

Dezavantajele algoritmului: Principalele probleme ale GOST sunt legate de incompletitudinea standardului în ceea ce privește generarea de chei și tabele de înlocuire. Se crede că GOST are chei „slabe” și tabele de substituție, dar standardul nu descrie criteriile pentru selectarea și respingerea celor „slabe”. De asemenea, standardul nu specifică un algoritm pentru generarea tabelelor de substituție (S-boxes). Pe de o parte, aceasta poate fi informații secrete suplimentare (pe lângă cheie) și, pe de altă parte, ridică o serie de probleme: este imposibil să se determine puterea criptografică a unui algoritm fără a cunoaște în prealabil tabelul de substituție. ; Implementările de algoritm de la diferiți producători pot folosi tabele de înlocuire diferite și pot fi incompatibile între ele; posibilitatea furnizării deliberate de tabele de substituție slabe de către autoritățile de licențiere ale Federației Ruse.

Avantajele IDEA față de analogi

În implementarea software-ului pe Intel486SX este de două ori mai rapid decât în ​​comparație cu DES IDEA, care reprezintă o creștere semnificativă a vitezei, lungimea cheii pentru IDEA este de 128 de biți, comparativ cu 56 de biți pentru DES, ceea ce reprezintă o bună îmbunătățire împotriva enumerării forței brute a tastelor. Probabilitatea de a folosi cheile slabe este foarte mică și este de 1/2 64. IDEA este mai rapidă decât algoritmul GOST 28147-89 (în implementarea software-ului pe Intel486SX). Utilizarea IDEA în moduri de criptare paralelă pe procesoarele Pentium III și Pentium MMX vă permite să obțineți viteze mari. Comparativ cu finaliștii AES, IDEA cu 4 căi este doar puțin mai lent decât RC6 și Rijndael pe Pentium II, dar mai rapid decât Twofish și MARS. Pentium III 4-way IDEA este chiar mai rapid decât RC6 și Rijndael. Avantajul este, de asemenea, cunoștințele bune și rezistența la instrumentele de criptoanaliza binecunoscute.

Algoritmul de criptare GOST 28147-89, utilizarea acestuia și implementarea software-ului pentru computere pe platforma Intel x86.


Andrei Vinokurov

Descrierea algoritmului.

Termeni și denumiri.

Descrierea standardului de criptare al Federației Ruse este conținută într-un document foarte interesant intitulat „Algoritmul de transformare criptografică GOST 28147-89”. Faptul că în numele său în loc de termenul „criptare” apare un concept mai general „ transformare criptografică „Nu este deloc întâmplător. În plus față de câteva proceduri de criptare strâns legate, documentul descrie un algoritm de generare imitatii ... Acesta din urmă nu este altceva decât o combinație de control criptografic, adică un cod generat din datele originale folosind o cheie secretă în acest scop imitoprotecție sau protejați-vă datele de modificări neautorizate.

La diferiți pași ai algoritmilor GOST, datele pe care aceștia operează sunt interpretate și utilizate în moduri diferite. În unele cazuri, elementele de date sunt tratate ca matrice de biți independenți, în alte cazuri ca un număr întreg nesemnat, iar în altele ca un element complex cu o structură, constând din mai multe elemente mai simple. Prin urmare, pentru a evita confuzia, este necesar să vă puneți de acord asupra notației utilizate.

Elementele de date din acest articol sunt desemnate cu majuscule cursive (de exemplu, X). Prin | X| indică dimensiunea articolului Xîn biți. Astfel, dacă interpretați elementul de date X ca un întreg nenegativ, puteți scrie următoarea inegalitate :.

Dacă un element de date constă din mai multe elemente de o dimensiune mai mică, atunci acest fapt este indicat după cum urmează: X=(X 0 ,X 1 ,…,X n –1)=X 0 ||X 1 ||…||X n-1 . Se numește procedura de combinare a mai multor elemente de date într-unul singur concatenare date și notate cu simbolul „||”. Desigur, pentru dimensiunile elementelor de date, trebuie îndeplinită următoarea relație: | X|=|X 0 |+|X 1 |+…+|X n-1 |. Atunci când se specifică elemente de date complexe și operațiuni de concatenare, elementele de date constitutive sunt listate în ordine crescătoare de prioritate. Cu alte cuvinte, dacă interpretați un element compozit și toate elementele de date incluse în el ca numere întregi fără semn, atunci puteți scrie următoarea egalitate:

În algoritm, un element de date poate fi interpretat ca o matrice de biți individuali, caz în care biții sunt notați cu aceeași literă ca matricea, dar într-o versiune cu litere mici, așa cum se arată în următorul exemplu:

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

Astfel, dacă ați acordat atenție, așa-numitul GOST a fost adoptat. Numerotarea biților „Little-endian”, adică în cadrul cuvintelor de date pe mai mulți biți, biții individuali și grupurile lor mai mici numerotate sunt mai puțin semnificative. Acest lucru este declarat direct în clauza 1.3 a standardului: „La adăugarea și deplasarea ciclică a vectorilor binari, cei mai semnificativi biți sunt biții unităților cu numere mari”. În plus, clauzele standardului 1.4, 2.1.1 și altele prescriu să se înceapă completarea registrelor de stocare ale dispozitivului virtual de criptare cu date din cele inferioare, de exemplu. deversari mai putin semnificative. Exact aceeași ordine de numerotare este adoptată în arhitectura microprocesorului Intel x86, motiv pentru care nu sunt necesare permutări suplimentare ale biților din cuvintele de date pentru implementarea software a cifrului pe această arhitectură.

Dacă o anumită operație care are semnificație logică este efectuată asupra elementelor de date, atunci se presupune că această operație se efectuează pe biții corespunzători ai elementelor. Cu alte cuvinte A B=(A 0 b 0 ,A 1 b 1 ,…,un n –1 b n–1), unde n=|A|=|B|, iar simbolul "" denotă o operație logică binară arbitrară; de obicei se referă la o operație exclusiv sau , este, de asemenea, operația de însumare modulo 2:

Logica construirii unui cifr și structura informațiilor cheie GOST.

Dacă studiați cu atenție GOST 28147–89 original, veți observa că acesta conține o descriere a algoritmilor de mai multe niveluri. În partea de sus sunt algoritmi practici concepuți pentru a cripta matrice de date și a genera o inserție imitativă pentru acestea. Toți se bazează pe trei algoritmi de nivel inferior, numiți în textul GOST cicluri ... Acești algoritmi fundamentali sunt denumiți în acest articol ca cicluri de bază pentru a le distinge de toate celelalte bucle. Au următoarele nume și denumiri, acestea din urmă sunt date între paranteze și semnificația lor va fi explicată mai târziu:

  • ciclu de criptare (32-З);
  • ciclu de decriptare (32-P);
  • ciclu de producție a insertului imitator (16-З).

La rândul său, fiecare dintre ciclurile de bază este o repetare multiplă a unei singure proceduri, cerută pentru definiție mai târziu în această lucrare. pasul principal al transformării cripto .

Astfel, pentru a înțelege GOST, trebuie să înțelegeți următoarele trei lucruri:

  • ce pasul principal transformări cripto;
  • modul în care ciclurile de bază sunt alcătuite din etapele de bază;
  • ca din trei cicluri de bază se adună toți algoritmii GOST practici.

Înainte de a trece la studiul acestor probleme, ar trebui să vorbiți despre informațiile cheie utilizate de algoritmii GOST. În conformitate cu principiul Kirchhoff, care este satisfăcut de toate cifrurile moderne cunoscute publicului larg, secretul acestuia este cel care asigură secretul mesajului criptat. În GOST, informațiile cheie constau din două structuri de date. Pe lângă real cheie necesar pentru toate cifrurile, conține și tabel de substituție ... Mai jos sunt principalele caracteristici ale structurilor cheie GOST.

Pasul principal al transformării cripto.

Pasul principal al unei cripto-transformări este în esență un operator care definește transformarea unui bloc de date pe 64 de biți. Un parametru suplimentar al acestui operator este un bloc de 32 de biți, care este folosit ca orice element cheie. Algoritmul pasului principal este prezentat în Figura 1.


Figura 1. Diagrama etapei principale a cripto-transformării algoritmului GOST 28147-89.

Mai jos sunt explicațiile pentru algoritmul pasului principal:

Pasul 0

  • N- blocul de date pe 64 de biți convertit, în timpul execuției pasului, cel mai puțin semnificativ ( N 1) și senior ( N 2) părțile sunt tratate ca numere întregi individuale fără semn pe 32 de biți. Astfel, se poate scrie N =(N 1 ,N 2).
  • X- element cheie pe 32 de biți;

Pasul 1

Adăugarea cheii. Jumătatea inferioară a blocului convertit este adăugată modulo 2 32 cu elementul cheie folosit la pas, rezultatul este trecut la pasul următor;

Pasul 2

Înlocuire bloc. Valoarea de 32 de biți obținută în pasul anterior este interpretată ca o matrice de opt blocuri de cod de 4 biți: S =(S 0 , S 1 , S 2 , S 3 , S 4 , S 5 , S 6 , S 7), și S 0 conține cele 4 cele mai puțin semnificative și S 7 - 4 biți cei mai semnificativi S.

În plus, valoarea fiecăruia dintre cele opt blocuri este înlocuită cu una nouă, care este selectată din tabelul de înlocuire după cum urmează: valoarea blocului S i schimbări la S i-alea element în ordine (numerotare de la zero) i al nodului de înlocuire (adică i-rândul al tabelului de substituții, numerotând tot de la zero). Cu alte cuvinte, un element din tabelul de substituție cu un număr de rând egal cu numărul blocului înlocuit și un număr de coloană egal cu valoarea blocului înlocuit ca un întreg nenegativ pe 4 biți este selectat ca înlocuitor pentru valoarea blocului. De aici, dimensiunea tabelului de înlocuire devine clară: numărul de rânduri din acesta este egal cu numărul de elemente de 4 biți dintr-un bloc de date de 32 de biți, adică opt, iar numărul de coloane este egal cu numărul de valori diferite ale unui bloc de date pe 4 biți, despre care se știe că este 2 4, șaisprezece.

Pasul 3

Deplasați ciclic 11 biți spre stânga. Rezultatul pasului anterior este deplasat ciclic cu 11 biți către cei mai semnificativi biți și transferat la pasul următor. În diagrama algoritmului, simbolul denotă funcția de deplasare ciclică a argumentului său cu 11 biți la stânga, i.e. spre cifrele superioare.

Pasul 4

Adunare pe biți: valoarea obținută în pasul 3 este adăugată pe biți modulo 2, jumătatea superioară a blocului fiind convertită.

Pasul 5

Schimbarea de-a lungul lanțului: partea inferioară a blocului convertit este deplasată în locul celui mai vechi, iar rezultatul pasului anterior este plasat în locul său.

Pasul 6

Valoarea rezultată a blocului transformat este returnată ca urmare a execuției algoritmului pasului principal al transformării cripto.

Cicluri de bază ale transformărilor criptografice.

După cum sa menționat la începutul acestui articol, GOST se referă la clasa de cifruri bloc, adică unitatea de procesare a informațiilor din ea este un bloc de date. Prin urmare, este destul de logic să ne așteptăm că va defini algoritmi pentru transformările criptografice, adică pentru criptare, decriptare și „contabilizare” în combinația de control a unui bloc de date. Acești algoritmi sunt numiți cicluri de bază GOST, care subliniază importanța lor fundamentală pentru construcția acestui cifr.

Buclele de bază sunt construite din pașii principali transformarea criptografică discutată în secțiunea anterioară. În etapa principală, se folosește doar un element cheie pe 32 de biți, în timp ce tasta GOST conține opt astfel de elemente. Prin urmare, pentru ca cheia să fie utilizată pe deplin, fiecare dintre buclele de bază trebuie să execute în mod repetat pasul principal cu diferitele sale elemente. În același timp, pare destul de natural ca în fiecare ciclu de bază toate elementele cheii să fie utilizate de același număr de ori; din motive de putere a cifrului, acest număr ar trebui să fie mai mult de unul.

Toate ipotezele făcute mai sus, bazate pur și simplu pe bunul simț, s-au dovedit a fi corecte. Buclele de bază constau din mai multe execuții pasul principal folosind elemente cheie diferite și diferă între ele doar prin numărul de repetări ale pasului și în ordinea în care sunt utilizate elementele cheie. Mai jos este ordinea diferitelor bucle.

Ciclul de criptare 32-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 ,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 .


Figura 2a. Diagrama ciclului de criptare 32-Z

Ciclul de decriptare 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 .


Figura 2b. Diagrama ciclului de decriptare 32-P

Ciclul de producție al insertului de imitație 16-З:

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


Figura 2c. Schema ciclului de producție al inserției imitative 16-З.

Fiecare dintre cicluri are propria sa denumire alfanumerica corespunzătoare modelului „ n-X ", unde primul element al notației ( n), specifică numărul de repetări ale pasului principal din ciclu și al doilea element al notației ( X), scrisoare, specifică ordinea criptării („Z”) sau a decriptării („P”) în utilizarea elementelor cheie. Această comandă necesită clarificări suplimentare:

Ciclul de decriptare ar trebui să fie inversul ciclului de criptare, adică aplicarea secvențială a acestor două cicluri la un bloc arbitrar ar trebui să se încheie cu blocul original, care este reflectat de următoarea relație: C 32-P ( C 32-Z ( T))= T, Unde T- un bloc de date arbitrar pe 64 de biți, C X ( T) - rezultatul buclei X deasupra blocului de date T... Pentru a îndeplini această condiție pentru algoritmi precum GOST, este necesar și suficient ca ordinea utilizării elementelor cheie de către ciclurile corespunzătoare să fie reciproc inversă. Este ușor de verificat validitatea condiției scrise pentru cazul în cauză, comparând secvențele de mai sus pentru ciclurile 32-З și 32-Р. O consecință interesantă rezultă din ceea ce s-a spus: proprietatea unui ciclu de a fi invers față de alt ciclu este reciprocă, adică ciclul 32-З este invers față de ciclul 32-Р. Cu alte cuvinte, criptarea blocului de date se poate face teoretic cu un ciclu de decriptare, caz în care decriptarea blocului de date trebuie efectuată cu un ciclu de criptare. Oricare dintre cele două cicluri inverse reciproc pot fi utilizate pentru criptare, apoi al doilea ar trebui folosit pentru a decripta datele, dar standardul GOST 28147-89 atribuie roluri ciclurilor și nu oferă utilizatorului dreptul de a alege în această chestiune.

Ciclul de generare a unei inserții simulate este de două ori mai scurt decât ciclurile de criptare, ordinea utilizării elementelor cheie în ea este aceeași ca în primii 16 pași ai ciclului de criptare, ceea ce este ușor de verificat luând în considerare secvențele de mai sus, prin urmare această ordine în denumirea ciclului este codificată cu aceeași literă „Z”.

Diagramele ciclului de bază sunt prezentate în figurile 2a-c. Fiecare dintre ele ia drept argument și returnează ca rezultat un bloc de date pe 64 de biți indicat în diagrame N... Simbolul pasului ( N,X) denotă executarea etapei principale a cripto-transformării pentru blocul de date N folosind elementul cheie X... Mai există o diferență între ciclurile de criptare și de imitare a inserției, nemenționate mai sus: la sfârșitul ciclurilor de criptare de bază, părțile superioare și inferioare ale blocului rezultat sunt schimbate, acest lucru este necesar pentru reversibilitatea lor reciprocă.

Moduri de criptare de bază.

GOST 28147-89 prevede următoarele trei moduri de criptare a datelor:

  • înlocuire simplă,
  • jocuri de noroc,
  • gamament cu feedback,

și un mod suplimentar pentru generarea unei inserții simulate.

În oricare dintre aceste moduri, datele sunt procesate în blocuri de 64 de biți, în care este împărțită matricea în curs de transformare criptografică, motiv pentru care GOST se referă la cifrurile bloc. Cu toate acestea, în două moduri gamma, este posibil să se proceseze un bloc de date incomplet mai mic de 8 octeți, ceea ce este esențial atunci când se criptează matrice de date cu o dimensiune arbitrară, care poate să nu fie un multiplu de 8 octeți.

Înainte de a trece la considerarea unor algoritmi specifici pentru transformările criptografice, este necesar să clarificăm notația folosită în diagramele din următoarele secțiuni:

T O, T w - matrice de date deschise și respectiv criptate;

, – i- blocuri de 64 de biți în ordinea datelor deschise și respectiv criptate: , , ultimul bloc poate fi incomplet :;

n- numărul de blocuri de 64 de biți din matricea de date;

C X - funcția de conversie a unui bloc de date pe 64 de biți conform algoritmului ciclului de bază „X”.

Acum să descriem principalele moduri de criptare:

Înlocuire ușoară.

Criptarea în acest mod constă în aplicarea ciclului 32-З la blocurile de date deschise, decriptare - ciclul 32-Р la blocurile de date criptate. Acesta este cel mai simplu dintre moduri, blocurile de date pe 64 de biți sunt procesate independent unul de celălalt. Diagramele algoritmilor de criptare și decriptare în modul de înlocuire simplă sunt prezentate în figurile 3a și, respectiv, sunt banale și nu au nevoie de comentarii.


Desen. 3a. Algoritm de criptare a datelor în modul de înlocuire ușoară


Desen. 3b. Algoritm de decriptare a datelor în modul de înlocuire simplă

Dimensiunea matricei de date deschise sau criptate, supuse criptării sau decriptării, trebuie să fie un multiplu de 64 de biți: | T o | = | T w | = 64 n , după ce operațiunea este finalizată, dimensiunea matricei de date primite nu se modifică.

Modul de criptare Simplu Swap are următoarele caracteristici:

  • Deoarece blocurile de date sunt criptate independent unul de celălalt și de poziția lor în matricea de date, criptarea a două blocuri de text simplu identice are ca rezultat blocuri de text cifrate identice și invers. Proprietatea menționată va permite criptoanalistului să facă o concluzie despre identitatea blocurilor de date inițiale, dacă blocuri identice sunt întâlnite în șirul de date criptate, ceea ce este inacceptabil pentru un cifru serios.
  • Dacă lungimea matricei de date criptate nu este un multiplu de 8 octeți sau 64 de biți, apare problema cum și cum să se completeze ultimul bloc de date incomplet al matricei la 64 de biți complet. Această sarcină nu este atât de ușoară pe cât pare la prima vedere. Soluții evidente, cum ar fi „suplimentarea unui bloc incomplet cu zero biți” sau, mai general, „suplimentarea unui bloc incomplet cu o combinație fixă ​​de zero și un biți” pot, în anumite condiții, să ofere unui criptoanalist capacitatea de a utiliza metode de enumerare pentru a determina conținutul acestui bloc cel mai incomplet, iar acest fapt înseamnă o scădere a puterii cifrului. În plus, lungimea textului cifrat se va modifica, crescând la cel mai apropiat multiplu întreg de 64 de biți, ceea ce este adesea nedorit.

La prima vedere, caracteristicile de mai sus fac aproape imposibilă utilizarea modului de înlocuire simplă, deoarece poate fi utilizată doar pentru a cripta matrice de date cu o dimensiune multiplă de 64 de biți care nu conțin blocuri repetate pe 64 de biți. Se pare că pentru orice date reale este imposibil să se garanteze îndeplinirea condițiilor specificate. Acesta este aproape cazul, dar există o excepție foarte importantă: amintiți-vă că dimensiunea cheii este de 32 de octeți, iar dimensiunea tabelului de înlocuire este de 64 de octeți. În plus, prezența blocurilor repetate de 8 octeți în cheia sau tabelul de înlocuire va indica calitatea lor foarte slabă, astfel încât nu poate exista o astfel de repetiție în elementele cheie reale. Astfel, am aflat că modul de înlocuire simplu este destul de potrivit pentru criptarea informațiilor cheie, mai ales că alte moduri sunt mai puțin convenabile în acest scop, deoarece necesită un element suplimentar de sincronizare a datelor - transmisie sincronizată (vezi secțiunea următoare). Presupunerea noastră este corectă, GOST prescrie utilizarea modului simplu de înlocuire exclusiv pentru criptarea datelor cheie.

Gumarea.

Cum puteți scăpa de neajunsurile modului Easy Swap? Pentru a face acest lucru, este necesar să se facă posibilă criptarea blocurilor cu o dimensiune mai mică de 64 de biți și să se asigure că blocul de text cifrat depinde de numărul său, cu alte cuvinte, randomizare procesul de criptare. În GOST, acest lucru se realizează în două moduri diferite în două moduri de criptare, oferind gamming . Gumarea - aceasta este impunerea (eliminarea) unei game criptografice asupra datelor deschise (criptate), adică o secvență de elemente de date generate folosind un algoritm criptografic pentru a obține date criptate (deschise). Pentru impunerea unei gamma în timpul criptării și eliminarea acesteia în timpul decriptării, ar trebui utilizate operații binare invers reciproce, de exemplu, adunarea și scăderea modulo 64 pentru blocurile de date pe 64 de biți. În GOST, în acest scop, este utilizată operația de adăugare pe biți modulo 2, deoarece este inversul ei însuși și, în plus, este cel mai ușor implementată în hardware. Gamma rezolvă ambele probleme de mai sus: în primul rând, toate elementele gamma sunt diferite pentru matricele criptate reale și, prin urmare, rezultatul criptării chiar și a două blocuri identice într-o matrice de date va fi diferit. În al doilea rând, deși elementele gamma sunt generate în porțiuni egale de 64 de biți, poate fi utilizată o parte a unui astfel de bloc cu o dimensiune egală cu dimensiunea blocului criptat.

Acum să trecem direct la descrierea modului gamma. Gama pentru acest mod se obține astfel: cu ajutorul unui anumit generator algoritmic de secvențe de numere recurente (RNG), sunt generate blocuri de date pe 64 de biți, care sunt apoi supuse conversiei într-un ciclu de 32-Z, adică criptare. în modul de înlocuire simplă, ca rezultat, se obțin blocuri gamma. Datorită faptului că impunerea și eliminarea gamma se efectuează folosind aceeași operațiune a exclusivului pe biți sau, algoritmii de criptare și decriptare în modul gamma sunt identici, schema lor generală este prezentată în Figura 4.

RGPC utilizat pentru generarea gamma este o funcție recurentă: - elemente ale unei secvențe recurente, f- functie de conversie. În consecință, se pune inevitabil întrebarea despre inițializarea sa, adică despre element. În realitate, acest element de date este un parametru de algoritm pentru modurile gamma, în diagrame este desemnat ca S, și se numește în criptografie sincron-pachet , și în GOST-ul nostru - umplerea inițială unul dintre registrele criptatorului. Din anumite motive, dezvoltatorii GOST au decis să folosească pentru inițializarea RGFC nu parcela sincronă în sine, ci rezultatul transformării sale pe parcursul ciclului de 32-З: ... Secvența elementelor generate de RGHR depinde în întregime de umplerea sa inițială, adică elementele acestei secvențe sunt o funcție de numărul lor și de umplerea inițială a RGHR: unde f i(X)=f(f i –1 (X)), f 0 (X)=X... Luând în considerare transformarea prin algoritmul de înlocuire simplă, se adaugă și o dependență de cheie:

Unde Г ii- al-lea element de gamă, K- cheie.

Astfel, secvența elementelor gamma care urmează să fie utilizate în modul gamma este determinată în mod unic de datele cheie și secvența de sincronizare. Bineînțeles, pentru reversibilitatea procedurii de criptare, același mesaj sincron trebuie utilizat în procesele de criptare și decriptare. Din cerința de unicitate a gamei, a cărei eșec duce la o scădere catastrofală a puterii cifrului, rezultă că pentru a cripta două matrice de date diferite pe aceeași cheie, este necesar să se asigure utilizarea de sincronizare diferită. -colete. Acest lucru duce la necesitatea stocării sau transmiterii unui mesaj de sincronizare pe canalele de comunicare împreună cu datele criptate, deși în unele cazuri speciale poate fi predefinit sau calculat într-un mod special dacă este exclusă criptarea a două matrice pe o cheie.

Acum să aruncăm o privire mai atentă la RGFC folosit în GOST pentru a genera elemente gamma. În primul rând, trebuie remarcat faptul că nu este necesar să se furnizeze nicio caracteristică statistică a secvenței de numere generate. RGPC a fost proiectat de dezvoltatorii GOST pe baza necesității de a îndeplini următoarele condiții:

  • perioada de repetare a secvenței de numere generate de RGFC nu trebuie să difere foarte mult (în procente) de valoarea maximă posibilă de 2 64 pentru o dimensiune de bloc dată;
  • valorile adiacente generate de RGPC trebuie să difere unele de altele în fiecare octet, altfel sarcina criptoanalistului va fi simplificată;
  • RGFC ar trebui să fie destul de ușor de implementat atât în ​​hardware cât și în software pe cele mai comune tipuri de procesoare, dintre care majoritatea sunt cunoscute a fi pe 32 de biți.

Pe baza principiilor enumerate, creatorii GOST au conceput un RGCH de mare succes, care are următoarele caracteristici:

Unde C 0 =1010101 16 ;

Unde C 1 =1010104 16 ;

Indicele din notația unui număr înseamnă sistemul său numeric, astfel încât constantele utilizate în acest pas sunt scrise în notație hexazecimală.

A doua expresie are nevoie de comentarii, deoarece textul GOST conține ceva diferit:, cu aceeași valoare constantă C 1 . Dar mai departe în textul standardului, este dat un comentariu că, se dovedește, în cadrul operației de a lua restul modulo 2 32 –1 Acolo nu înseamnă același lucru ca în matematică. Diferența este că conform GOST (2 32 -1) mod(2 32 –1) = (2 32 –1), nu 0. De fapt, acest lucru simplifică implementarea formulei, iar expresia corectă din punct de vedere matematic este dată mai sus.

  • perioada de repetare a secvenței pentru partea inferioară este 2 32, pentru partea superioară 2 32 –1, pentru întreaga secvență perioada este 2 32 (2 32 –1), dovada acestui fapt este destul de simplu, ia-l singur. Prima formulă a celor două este implementată într-o singură comandă, a doua, în ciuda aparentei sale greoaie, în două comenzi pe toate procesoarele moderne pe 32 de biți - prima comandă este adăugarea obișnuită modulo 32 cu stocarea bitului de transport, iar a doua comandă. adaugă bitul de transport la cel primit.

Schema algoritmului de criptare în modul gamma este prezentată în Figura 4, mai jos sunt explicațiile schemei:


Figura 4. Algoritmul de criptare a datelor (decriptare) în modul gamma.

Pasul 0

Definește datele inițiale pentru pasul principal al transformării criptografice:

  • T o (w) - un tablou de date deschise (criptate) de dimensiune arbitrară, supus procedurii de criptare (decriptare), în timpul procedurii matricea este transformată în porțiuni de 64 de biți;
  • S pachet de sincronizare , element de date pe 64 de biți necesar pentru a inițializa generatorul gamma;

Pasul 1

Transformarea inițială a sincron-mesajului, efectuată pentru a-l „randomiza”, adică pentru a elimina regularitățile statistice prezente în acesta, rezultatul este folosit ca umplere inițială a RGFC;

Pasul 2

Un pas din funcționarea RGPC, care implementează algoritmul său recurent. În timpul acestei etape, seniorul ( S 1) și mai tineri ( S 0) părți ale secvenței de date sunt generate independent unele de altele;

Pasul 3

Gumarea. Următorul element de 64 de biți, generat de RGPC, este supus procedurii de criptare într-un ciclu de 32-Z, rezultatul este utilizat ca element gamma pentru criptarea (decriptarea) următorului bloc de date deschise (criptate) ale aceeași mărime.

Pasul 4

Rezultatul algoritmului este o matrice de date criptate (decriptate).

Următoarele sunt caracteristicile gamapping-ului ca mod de criptare:

  1. Blocurile identice dintr-o matrice de date deschise vor da diferite blocuri de text cifrat în timpul criptării, ceea ce va ascunde identitatea lor.
  2. Deoarece suprapunerea gamma este realizată bit cu bit, criptarea unui bloc incomplet de date este ușor de realizat ca criptarea biților acelui bloc incomplet folosind biții corespunzători ai blocului gamma. Deci, pentru a cripta un bloc incomplet de 1 bit, conform standardului, trebuie utilizat cel mai puțin semnificativ bit din blocul gamma.
  3. Mesajul de sincronizare folosit în criptare trebuie să fie transmis cumva pentru a fi utilizat în decriptare. Acest lucru poate fi realizat în următoarele moduri:
  • stocarea sau transmiterea unui mesaj de sincronizare împreună cu o matrice de date criptată, ceea ce va duce la o creștere a dimensiunii matricei de date în timpul criptării cu dimensiunea mesajului de sincronizare, adică cu 8 octeți;
  • utilizați o valoare predeterminată a mesajului sincron sau generați-o sincron de către o sursă și un receptor conform unei anumite legi, în acest caz nu există nicio modificare a dimensiunii matricei de date transmise sau stocate;

Ambele metode se completează reciproc și, în acele rare cazuri în care prima, cea mai comună dintre ele nu funcționează, poate fi utilizată a doua, mai exotică. A doua metodă are mult mai puțină aplicație, deoarece este posibil ca transmisia sincronă să fie predefinită numai dacă nu mai mult de o matrice de date este în mod evident criptată pe un set dat de informații cheie, ceea ce nu este atât de des. De asemenea, nu este întotdeauna posibil să se genereze un mesaj sincron în mod sincron la sursa și destinația matricei de date, deoarece necesită legarea strictă la ceva din sistem. Deci, o idee aparent sensibilă de a folosi numărul mesajului transmis ca mesaj sincron în sistemul de transmitere a mesajelor criptate nu este potrivită, deoarece mesajul se poate pierde și nu ajunge la destinatar, caz în care criptarea sursei și a receptorului. sistemele vor deveni desincronizate. Prin urmare, în cazul luat în considerare, nu există nicio alternativă la transmiterea unui mesaj de sincronizare împreună cu un mesaj criptat.

Pe de altă parte, poate fi citat exemplul opus. Să presupunem că criptarea datelor este utilizată pentru a proteja informațiile de pe disc și că este implementată la un nivel scăzut, pentru a asigura accesul independent, datele fiind criptate pe sectoare. În acest caz, este imposibil să stocați mesajul de sincronizare împreună cu datele criptate, deoarece dimensiunea sectorului nu poate fi modificată, dar poate fi calculată în funcție de numărul capului de citire al discului, numărul pistei (cilindrului) și sectorul. numărul de pe pistă. În acest caz, mesajul de sincronizare este legat de poziția sectorului de pe disc, care cu greu se poate schimba fără reformatarea discului, adică fără distrugerea datelor de pe acesta.

Modul gamma are o altă caracteristică interesantă. În acest mod, biții matricei de date sunt criptați independent unul de celălalt. Astfel, fiecare bit al textului cifrat depinde de bitul corespunzător al textului simplu și, în mod natural, de numărul ordinal al bitului din matrice: ... De aici rezultă că schimbarea bitului de text cifrat la valoarea opusă va duce la o modificare similară a opusului bitului de text simplu:

unde denotă inversat în raport cu t valoarea biților ().

Această proprietate oferă unui atacator capacitatea, acționând asupra biților textului cifrat, de a face modificări previzibile și chiar țintite textului clar corespunzător obținut după ce acesta a fost decriptat fără a deține cheia secretă. Acest lucru ilustrează faptul bine-cunoscut în criptologie că secretul și autenticitatea sunt proprietăți diferite sisteme criptografice ... Cu alte cuvinte, proprietățile criptosistemului de a oferi protecție împotriva cunoașterii neautorizate a conținutului mesajului și împotriva modificării neautorizate a mesajului sunt independente și numai în unele cazuri se pot suprapune. Cele de mai sus înseamnă că există algoritmi criptografici care asigură o anumită secretizare a datelor criptate și în același timp nu protejează împotriva modificărilor și invers, asigură autenticitatea datelor și nu limitează în niciun fel posibilitatea de cunoaștere a acestora. Din acest motiv, proprietatea considerată a modului gamma nu trebuie considerată drept dezavantaj.

Gumând cu feedback.

Acest mod este foarte asemănător cu modul gamma și diferă de acesta numai prin metoda de generare a elementelor gamma - următorul element gamma este generat ca urmare a conversiei ciclului de 32 W a blocului anterior de date criptate și pentru criptarea primul bloc al matricei de date, elementul gamma este generat ca rezultat al conversiei conform aceluiași ciclu de transmisie sincronizată. Acest lucru realizează blocarea blocurilor - fiecare bloc de text cifrat în acest mod depinde de blocurile de text clar corespunzătoare și de toate anterioare. Prin urmare, acest mod este uneori numit gumă cu blocarea blocului ... Faptul de angajare a blocului nu are niciun efect asupra puterii cifrului.

Schema algoritmilor de decriptare și decriptare în modul gamma cu feedback este prezentată în Figura 5 și, datorită simplității sale, nu are nevoie de comentarii.


Figura 5. Algoritm pentru criptarea (decriptarea) datelor în modul gamma cu feedback.

Criptarea în modul gamma cu buclă închisă are aceleași caracteristici ca și criptarea în modul gamma normal, cu excepția efectului distorsiunilor textului cifrat asupra textului simplu corespunzător. Pentru comparație, să notăm funcțiile de decriptare a blocurilor pentru ambele moduri de mai sus:

Gumare;

Gum cu feedback;

Dacă, în modul gamma normal, modificările anumitor biți ai textului cifrat afectează doar biții corespunzători ai textului simplu, atunci în modul gamma în buclă închisă imaginea este oarecum mai complicată. După cum se poate vedea din ecuația corespunzătoare, atunci când se decriptează un bloc de date în modul gamma în buclă închisă, blocul de date deschis depinde de blocurile de date criptate corespunzătoare și anterioare. Prin urmare, dacă introduceți distorsiuni în blocul criptat, atunci după decriptare, două blocuri de date deschise vor fi distorsionate - cel corespunzătoare și următorul, iar distorsiunile în primul caz vor avea același caracter ca în modul gamma și în al doilea caz - ca în modul înlocuire simplă. Cu alte cuvinte, în blocul corespunzător de date deschise, aceiași biți vor fi corupți ca în blocul de date criptate, iar în următorul bloc de date deschise toți biții sunt independent unul de celălalt cu probabilitatea 1 / 2 își vor schimba valorile.

Dezvoltarea unei inserții simulate într-o matrice de date.

În secțiunile anterioare, am discutat impactul manipulării datelor criptate asupra datelor publice corespunzătoare. Am descoperit că atunci când decriptăm în modul simplu de suprascriere, blocul corespunzător de date deschise se dovedește a fi distorsionat într-un mod imprevizibil, iar la decriptarea unui bloc în modul gamma, modificările sunt previzibile. În modul gamma în buclă închisă, două blocuri sunt distorsionate, unul într-un mod previzibil și celălalt într-un mod imprevizibil. Înseamnă asta că din punct de vedere al protecției împotriva intruziunii de date false, modul gamma este prost, iar modurile gamma de înlocuire simplă și feedback sunt bune? - În niciun caz. Atunci când se analizează această situație, este necesar să se țină seama de faptul că modificările imprevizibile ale blocului de date decriptate pot fi detectate numai în cazul redundanței acestor date și, cu cât gradul de redundanță este mai mare, cu atât este mai probabil să detectează distorsiunea. Are loc o redundanță foarte mare, de exemplu, pentru textele în limbi naturale și artificiale; în acest caz, faptul denaturare este dezvăluit aproape inevitabil. Cu toate acestea, în alte cazuri, de exemplu, când imaginile sonore digitizate comprimate sunt distorsionate, obținem doar o imagine diferită pe care urechea noastră o poate percepe. Distorsiunea în acest caz va rămâne nedetectată, cu excepția cazului în care, desigur, nu există informații a priori despre natura sunetului. Concluzia aici este următoarea: deoarece capacitatea unor moduri de criptare de a detecta distorsiunile introduse în datele criptate se bazează în esență pe prezența și gradul de redundanță al datelor criptate, această capacitate nu este o proprietate inerentă a modurilor corespunzătoare și nu poate fi considerată. ca avantaj al acestora.

Pentru a rezolva problema detectării distorsiunilor într-o matrice de date criptate cu o probabilitate dată, GOST oferă un mod suplimentar de transformare criptografică - dezvoltarea unei inserții de imitație. Inserarea imitației este o combinație de control care depinde de datele deschise și informațiile cheie secrete. Scopul utilizării unei inserții simulate este de a detecta toate modificările accidentale sau deliberate ale matricei de informații. Problema menționată în paragraful anterior poate fi rezolvată cu succes prin adăugarea unei inserții simulate la datele criptate. Pentru un potențial atacator, următoarele două sarcini sunt practic insolubile dacă nu deține cheia:

  • calculul unei inserții simulate pentru o anumită matrice deschisă de informații;
  • selectarea datelor deschise pentru o anumită rată de imitație;

O diagramă a algoritmului pentru generarea unei inserții simulate este prezentată în Figura 6.


Figura 6. Algoritm pentru generarea unei inserții simulate pentru o matrice de date.

O parte a blocului primit la ieșire este luată ca o inserție imitativă, de obicei cei 32 de biți cei mai puțin semnificativi. Atunci când alegeți dimensiunea insertului de imitație, este necesar să se țină seama de faptul că probabilitatea de a impune cu succes a datelor false este egală cu 2 - | eu | pentru o încercare de forță brută, cu excepția cazului în care atacatorul are la dispoziție o metodă de forță brută mai eficientă decât simpla ghicire. Când utilizați o inserție de imitație de 32 de biți, această probabilitate este

Discuție despre algoritmii criptografici GOST.

Stabilitatea criptografică a GOST.

Atunci când alegeți un algoritm criptografic pentru utilizare într-o anumită dezvoltare, unul dintre factorii determinanți este puterea acestuia, adică rezistența la încercările inamicului de a-l dezvălui. La o examinare mai atentă, problema puterii cifrului se rezumă la două întrebări interdependente:

  • este posibil să dezvăluim acest cifru;
  • dacă da, cât de dificil este în practică;

Cifrele care nu pot fi dezvăluite deloc sunt numite absolut sau teoretic stabile. Existența unor astfel de cifruri este dovedită de teorema lui Shannon, dar prețul acestei forțe este nevoia de a folosi o cheie nu mai mică decât dimensiunea mesajului în sine pentru a cripta fiecare mesaj. În toate cazurile, cu excepția unui număr de altele speciale, acest preț este excesiv, prin urmare, în practică, se folosesc în principal cifrurile care nu au putere absolută. Astfel, cele mai comune scheme de criptare pot fi dezvăluite într-un timp finit sau, mai precis, într-un număr finit de pași, fiecare dintre acestea fiind o operațiune asupra numerelor. Pentru ei, cel mai important este conceptul de reziliență practică, care exprimă dificultatea practică a dezvăluirii lor. O măsură cantitativă a acestei dificultăți poate fi numărul de operații aritmetice și logice elementare care trebuie efectuate pentru a descoperi cifrul, adică pentru a determina textul simplu corespunzător pentru un anumit text cifrat cu o probabilitate nu mai mică decât o valoare dată. În același timp, pe lângă matricea de date decriptate, criptanalistul poate avea blocuri de date deschise și datele criptate corespunzătoare sau chiar capacitatea de a obține datele criptate corespunzătoare pentru orice date deschise pe care le alege - în funcție de lista și multe alte condiții nespecificate, se disting tipuri separate de criptoanaliza.

Toate criptosistemele moderne sunt construite pe principiul Kirchhoff, adică secretul mesajelor criptate este determinat de secretul cheii. Aceasta înseamnă că, chiar dacă algoritmul de criptare în sine este cunoscut de criptoanalist, acesta nu poate decripta mesajul dacă nu are cheia corespunzătoare. Un cifr este considerat bine conceput dacă nu există nicio modalitate de a-l sparge într-un mod mai eficient decât forța brută prin întreg spațiul cheie, de exemplu. peste toate valorile cheie posibile. GOST corespunde probabil acestui principiu - de-a lungul anilor de cercetare intensivă, nu a fost propusă o singură metodă eficientă a criptoanalizei sale. În ceea ce privește puterea, este cu multe ordine de mărime superior standardului de criptare american anterior, DES.

În GOST, este utilizată o cheie de 256 de biți, iar spațiul de cheie este 2 256. Niciunul dintre dispozitivele electronice existente sau care se preconizează a fi implementate în viitorul apropiat nu poate ridica o cheie într-un timp mai mic de multe sute de ani. Această valoare a devenit standardul de facto pentru dimensiunea cheii pentru criptoalgoritmi simetrici în zilele noastre - de exemplu, noul standard de criptare din SUA îl acceptă și el. Fostul standard american, DES, cu dimensiunea sa reală a cheii de 56 biți și un spațiu cheie de doar 2 56 nu mai este suficient de puternic în lumina capacităților facilităților moderne de calcul. Acest lucru a fost demonstrat la sfârșitul anilor 90 prin mai multe atacuri de succes în forță brută asupra DES. În plus, DES a fost expus la tehnici speciale de criptoanaliza, cum ar fi diferențială și liniară. În această privință, DES poate fi mai degrabă de interes cercetător sau științific decât practic. În 1998, slăbiciunea sa criptografică a fost recunoscută oficial - Institutul Național de Standarde din SUA a recomandat utilizarea criptării de trei ori peste DES. Și la sfârșitul anului 2001, un nou standard de criptare din SUA, AES, a fost aprobat oficial, construit pe principii diferite și lipsit de deficiențele predecesorului său.

Note despre arhitectura GOST.

Este bine cunoscut faptul că standardul intern de criptare este un reprezentant al unei întregi familii de cifruri, construite pe aceleași principii. Cea mai faimoasă „rudă” a sa este fostul standard american de criptare, algoritmul DES. Toate aceste cifruri, precum GOST, conțin algoritmi de trei niveluri. Se bazează întotdeauna pe un anumit „pas de bază”, pe baza căruia „ciclurile de bază” sunt construite într-un mod similar și deja pe baza lor sunt construite proceduri practice de criptare și dezvoltarea unei inserții de imitație. Astfel, specificitatea fiecăruia dintre cifrele acestei familii stă tocmai în pasul său principal, mai exact, chiar și în partea sa. Deși arhitectura cifrurilor clasice în bloc, căreia îi aparține GOST, depășește cu mult domeniul de aplicare al acestui articol, merită totuși să spunem câteva cuvinte despre aceasta.

Algoritmii pentru „etașii de bază ai cripto-transformării” pentru cifruri precum GOST sunt construiți într-un mod identic, iar această arhitectură se numește rețeaua Feistel echilibrată (rețeaua Feistel echilibrată) după persoana care a propus-o prima. Schema de transformare a datelor într-un ciclu sau, așa cum se numește în mod obișnuit, rundă , este prezentat în Figura 7.


Figura 7. Conținutul etapei principale de cripto-transformare pentru cifrurile bloc precum GOST.

Un bloc de dimensiuni egale este alimentat la intrarea pasului principal, ale cărui jumătăți superioare și inferioare sunt procesate separat una de cealaltă. În timpul transformării, jumătatea inferioară a blocului este plasată în locul celei superioare, iar jumătatea superioară, combinată folosind operația bit-bit " exclusiv sau »Cu rezultatul calculării unor funcții, în locul celei mai tinere. Această funcție, luând drept argument jumătatea inferioară a blocului și un element de informație cheie ( X), este o parte semnificativă a cifrului și se numește functie de criptare ... Din diverse motive, sa dovedit a fi avantajoasă împărțirea blocului criptat în două părți de aceeași dimensiune: | N 1 |=|N 2 | - acest fapt se reflectă în cuvântul „echilibrat” din numele arhitecturii. Cu toate acestea, rețelele de criptare dezechilibrate sunt folosite din când în când, deși nu la fel de des ca cele echilibrate. În plus, considerațiile privind puterea cifrului necesită ca dimensiunea elementului cheie să nu fie mai mică decât dimensiunea unei jumătate de bloc: în GOST, toate cele trei dimensiuni sunt egale cu 32 de biți .

Dacă aplicăm cele de mai sus schemei pasului principal al algoritmului GOST, va deveni evident că blocurile 1, 2, 3 ale algoritmului (vezi Fig. 1) determină calculul funcției de criptare a acestuia, iar blocurile 4 și 5 specificați formarea blocului de ieșire al pasului principal pe baza conținutului blocului de intrare și a valorilor funcției de criptare. Mai multe detalii despre arhitecturile cifrurilor bloc moderne cu cheie secretă pot fi găsite în lucrările clasice sau, într-o formă adaptată, în lucrările mele.

În secțiunea anterioară, am comparat deja DES și GOST în ceea ce privește securitatea, acum le vom compara în ceea ce privește conținutul funcțional și ușurința de implementare. În ciclurile de criptare GOST, pasul principal se repetă de 32 de ori, pentru DES această valoare este 16. Cu toate acestea, funcția de criptare GOST în sine este mult mai simplă decât funcția DES analogă, în care există multe permutări neregulate de biți. Aceste operațiuni sunt extrem de ineficiente la procesoarele moderne, nespecializate. GOST nu conține astfel de operațiuni, prin urmare este mult mai convenabil pentru implementarea software-ului.

Niciuna dintre implementările DES considerate de autor pentru platforma Intel x86 nu atinge nici măcar jumătate din performanța implementării GOST oferită atenției dumneavoastră în acest articol, în ciuda ciclului de două ori mai scurt. Toate cele de mai sus indică faptul că dezvoltatorii GOST au luat în considerare atât aspectele pozitive, cât și cele negative ale DES și, de asemenea, au evaluat mai realist posibilitățile actuale și promițătoare ale criptoanalizei. Cu toate acestea, nu mai este relevant să luăm DES ca bază atunci când comparăm performanța implementărilor de cifrare. Noul standard de criptare din SUA se descurcă mult mai bine în ceea ce privește eficiența - cu aceeași dimensiune a cheii de 256 de biți ca și în GOST, AES este cu aproximativ 14% mai rapid decât acesta - în comparație în ceea ce privește numărul de „operațiuni elementare”. În plus, GOST este practic imposibil de paralelizat, iar AES are mult mai multe capacități în acest sens. Pe unele arhitecturi, acest avantaj al AES poate fi mai mic, pe altele poate fi mai mult. Deci, pe un procesor Intel Pentium, ajunge la 28%. Detalii pot fi găsite în.

Cerințe de calitate pentru informațiile cheie și sursele cheie.

Nu toate cheile și tabelele de înlocuire oferă o rezistență maximă la cifrare. Fiecare algoritm de criptare are propriile criterii de evaluare a informațiilor cheie. Deci, pentru algoritmul DES, existența așa-numitului „ chei slabe ”, Atunci când utilizați conexiunea dintre datele deschise și criptate nu este mascat suficient, iar cifrul este relativ ușor de rupt.

Un răspuns exhaustiv la întrebarea despre criteriile de calitate ale cheilor și tabelelor de înlocuire GOST, dacă poate fi obținut oriunde, doar de la dezvoltatorii algoritmului. Datele relevante nu au fost publicate în presa deschisă. Cu toate acestea, conform procedurii stabilite, datele cheie primite de la o organizație autorizată trebuie utilizate pentru a cripta informațiile care au o ștampilă. Indirect, acest lucru poate indica existența unor metode de verificare a datelor cheie pentru „păduchi”. Dacă prezența cheilor slabe în GOST este o problemă discutabilă, atunci prezența nodurilor de înlocuire slabe este fără îndoială. Evident, tabelul „banal” al substituțiilor, conform căruia orice valoare este înlocuită prin ea însăși, este atât de slab încât atunci când o folosești, cifrul este pur și simplu rupt, indiferent care este cheia.

După cum sa menționat mai sus, criteriile de evaluare a informațiilor cheie nu sunt disponibile, dar unele considerații generale pot fi făcute în continuare cu privire la acestea.

Cheie

Cheia trebuie să fie o matrice de biți independenți din punct de vedere statistic, presupunând cu probabilitate egală valorile 0 și 1. Nu poate fi exclus complet ca anumite valori cheie specifice se pot dovedi a fi „slabe”, adică cifrul pot să nu ofere un anumit nivel de securitate dacă sunt utilizate. Cu toate acestea, probabil, ponderea unor astfel de valori în masa totală a tuturor cheilor posibile este neglijabilă. Cel puțin, studiile intensive ale cifrului nu au dezvăluit încă nicio astfel de cheie pentru niciuna dintre tabelele de înlocuire cunoscute (adică, propuse de FAPSI). Prin urmare, cheile generate cu ajutorul unui generator de numere cu adevărat aleatorii vor fi calitative cu o probabilitate care diferă de una cu o cantitate neglijabilă. Dacă cheile sunt generate folosind un generator de numere pseudo-aleatoare, atunci generatorul utilizat trebuie să ofere caracteristicile statistice de mai sus și, în plus, să aibă o putere criptografică ridicată, nu mai mică decât cea a GOST în sine. Cu alte cuvinte, problema determinării elementelor lipsă ale secvenței de elemente generate de generator nu ar trebui să fie mai ușoară decât problema spargerii cifrului. În plus, pot fi utilizate diverse criterii statistice pentru a respinge cheile cu caracteristici statistice slabe. În practică, două criterii sunt de obicei suficiente - pentru a verifica distribuția echiprobabilă a biților cheie între valorile 0 și 1, se utilizează de obicei testul Pearson ("chi pătrat") și pentru a verifica independența biților cheie, se folosește testul de rulare. Puteți citi despre criteriile menționate în manuale sau în cărți de referință despre statistici matematice.

Cea mai bună abordare pentru generarea cheilor ar fi folosirea senzorilor hardware midrange, dar acest lucru nu este întotdeauna acceptabil din motive economice. Atunci când se generează o matrice de volum mic de informații cheie, o alternativă rezonabilă la utilizarea unui astfel de senzor este și este utilizată pe scară largă în practică, metoda „ruletei electronice”, când următoarea porțiune generată de biți aleatori depinde de momentul în care operatorul apasă o tastă de pe tastatura computerului. În această schemă, sursa datelor aleatoare este utilizatorul computerului, mai precis, caracteristicile temporale ale reacției sale. În acest caz, doar câțiva biți de date aleatorii pot fi generați într-o singură apăsare de tastă, prin urmare, rata generală de generare a informațiilor cheie este scăzută, de până la câțiva biți pe secundă. Evident, această abordare nu este potrivită pentru obținerea unor matrice mari de chei.

În cazul în care este necesară generarea unui volum mare de informații cheie, este posibilă și foarte răspândită utilizarea diverșilor senzori software pentru numere pseudoaleatoare. Deoarece un astfel de senzor necesită o rezistență criptografică ridicată, este firesc să folosim cifrul în sine ca generator de gamma - pur și simplu „tăiem” gama generată de cifru în „bucăți” de dimensiunea necesară, pentru GOST - 32 de octeți fiecare. Desigur, pentru o astfel de abordare, avem nevoie de o „cheie master”, pe care o putem obține folosind metoda ruletei electronice descrisă mai sus și, cu ajutorul acesteia, folosind cifrul în modul generatorului gamma, obținem o matrice de chei informații despre volumul necesar. Deci aceste două moduri de generare a cheilor - „manual” și „algoritmic” - funcționează în tandem, completându-se reciproc. Schemele de generare a cheilor în sistemele de protecție a cripto-informației „cu buget redus” sunt construite aproape întotdeauna pe acest principiu.

Masa de inlocuire

Tabelul de înlocuire este un element cheie pe termen lung, adică este valabil pentru o perioadă mult mai lungă decât o singură cheie. Se presupune că este comun tuturor nodurilor de criptare din cadrul unui sistem de protecție criptografică. Chiar dacă confidențialitatea tabelului de înlocuire este încălcată, puterea cifrului rămâne extrem de mare și nu scade sub limita acceptabilă. Prin urmare, nu este nevoie în mod special de a păstra tabelul secret și, în majoritatea aplicațiilor comerciale ale GOST, așa se face. Pe de altă parte, tabelul de înlocuire este un element critic pentru a asigura puterea întregului cifr. Alegerea tabelului greșit poate duce la ruperea cu ușurință a cifrului prin tehnici cunoscute de criptoanaliza. Criteriile pentru dezvoltarea nodurilor de înlocuire sunt un secret în spatele a șapte sigilii și este puțin probabil ca FAPSI să le împărtășească publicului în viitorul apropiat. În cele din urmă, a decide dacă un anumit tabel de înlocuire este bun sau rău necesită o cantitate enormă de muncă - multe mii de ore de om și mașină. Odată selectat și utilizat, tabelul trebuie înlocuit dacă și numai dacă cifrul cu utilizarea sa s-a dovedit a fi vulnerabil la unul sau alt tip de criptanaliză. Prin urmare, cea mai bună alegere pentru utilizatorul obișnuit al cifrului ar fi să ia unul dintre mai multe tabele care au devenit publice. De exemplu, din standardul pentru funcția hash, este și „bancă centrală”; informații despre aceste tabele pot fi găsite în presa deschisă și chiar și pe Internet dacă căutați bine.

Pentru cei care nu sunt obișnuiți să meargă pe calea ușoară, mai jos este o schemă generală pentru obținerea de tabele de înaltă calitate:

  1. Folosind o metodă sau alta, dezvoltați un set de opt noduri de înlocuire cu caracteristici de neliniaritate garantate. Există mai multe astfel de tehnici, una dintre ele este utilizarea așa-numitelor funcții îndoite.
  2. Verificați dacă sunt îndeplinite cele mai simple „criterii de calitate”, cum ar fi cele publicate pentru nodurile de înlocuire DES. Iată câteva considerații mai generale: Fiecare nod de substituții poate fi descris de patru funcții logice din patru argumente logice. Dacă aceste funcții sunt scrise în formă minimă(adică, cu lungimea minimă posibilă a expresiei) nu sunt suficient de complexe, un astfel de nod de înlocuire este respins. În plus, funcțiile individuale din cadrul întregului tabel de substituție trebuie să fie suficient de diferite una de alta. În această etapă, multe mese în mod deliberat de calitate scăzută sunt eliminate.
  3. Pentru cifrarea cu tabelele la alegere, construiți diferite modele rotunde corespunzătoare diferitelor tipuri de criptanaliză și măsurați caracteristicile corespunzătoare „profilului”. Deci, pentru criptanaliză liniară, construiți un analog statistic liniar al rundei de criptare și calculați caracteristica „profil” - indicatorul de neliniaritate. Dacă se dovedește a fi insuficient, masa de înlocuire este respinsă.
  4. În cele din urmă, folosind rezultatele paragrafului anterior, supuneți cifrul cu tabelul la alegere unei cercetări intense - o încercare de criptoanaliza prin toate metodele cunoscute. Această etapă este cea mai dificilă și consumatoare de timp. Dar dacă este făcut cu înaltă calitate, atunci cu un grad mare de probabilitate se poate afirma că cifrul cu tabelele pe care le-ați ales nu va fi spart de simpli muritori și, poate, va fi prea greu pentru serviciile speciale. .

Cu toate acestea, puteți face mult mai ușor. Ideea este că, cu cât sunt mai multe runde în cifr, cu atât mai puțină influențează caracteristicile de rezistență ale unei runde asupra puterii întregului cifr. Există până la 32 de runde în GOST - mai mult decât în ​​aproape toate cifrurile cu o arhitectură similară. Prin urmare, pentru majoritatea aplicațiilor de uz casnic și comercial, este suficient să se obțină noduri de substituție ca permutări aleatorii independente ale numerelor de la 0 la 15. Acest lucru poate fi implementat practic, de exemplu, amestecând un pachet de șaisprezece cărți, fiecăruia fiindu-i atribuită câte una. a valorilor intervalului specificat.

Încă un fapt interesant trebuie remarcat în ceea ce privește tabelul de substituție. Pentru reversibilitatea ciclurilor de criptare „32-З” și „32-Р”, nu este necesar ca nodurile de înlocuire să fie permutări ale numerelor de la 0 la 15. Totul funcționează chiar dacă există elemente duplicate în nodul de înlocuire, iar înlocuire determinată de un astfel de nod , ireversibilă - cu toate acestea, în acest caz, puterea cifrului scade. De ce este așa nu este luat în considerare în acest articol, dar este ușor să fii convins de faptul în sine. Pentru a face acest lucru, este suficient să încercați mai întâi să criptați și apoi să decriptați blocul de date folosind un astfel de tabel de înlocuire „defect”, ale cărui noduri conțin valori duplicate.

Variații pe tema GOST

Foarte des, pentru utilizarea într-un sistem de protecție a datelor criptografice, este necesar un algoritm cu o viteză de implementare mai rapidă decât cea a GOST și, în același timp, nu este necesară o putere criptografică atât de mare. Un exemplu tipic de astfel de sarcini sunt diferitele tipuri de sisteme electronice de tranzacționare la bursă care gestionează sesiunile de tranzacționare în timp real. Aici, algoritmii de criptare utilizați sunt necesari astfel încât să fie imposibilă decriptarea datelor operaționale ale sistemului în timpul sesiunii (date despre comenzile transmise, despre tranzacțiile încheiate etc.), după expirarea acestuia, aceste date sunt de obicei deja inutile pentru intruși. . Cu alte cuvinte, sunt necesare doar câteva ore de durabilitate garantată - aceasta este durata tipică a unei sesiuni de tranzacționare. Este clar că utilizarea unui GOST cu drepturi depline în această situație ar fi tragerea cu un tun asupra vrăbiilor.

Ce să faceți în acest caz și în cazuri similare pentru a crește viteza de criptare? Răspunsul se află la suprafață - să utilizați o modificare a cifrului cu mai puțini pași de bază (runde) în ciclurile de bază. De câte ori reducem numărul de runde de criptare, de câte ori crește performanța. Modificarea indicată poate fi realizată în două moduri - prin scăderea lungimii cheii și prin scăderea numărului de „cicluri de scanare” ale cheii. Amintiți-vă că numărul de pași de bază în buclele de criptare de bază este N=n m, Unde n- numărul de elemente pe 32 de biți din cheie, m- numărul de cicluri de utilizare a elementelor cheie, în standard n=8, m= 4. Puteți reduce oricare dintre aceste numere, dar cea mai simplă opțiune este să micșorați lungimea cheii fără a afecta schema de utilizare a acesteia.

Este clar că prețul care trebuie plătit pentru accelerarea lucrărilor va fi o scădere a puterii cifrului. Principala dificultate constă în faptul că este destul de dificil să se estimeze mai mult sau mai puțin precis amploarea acestei scăderi. Evident, singura modalitate posibilă de a face acest lucru este efectuarea unui studiu al variantelor cifrului cu cicluri reduse de transformare criptografică „în întregime”. Este clar că, în primul rând, aceasta necesită utilizarea informațiilor închise, care sunt deținute numai de dezvoltatorii GOST și, în al doilea rând, este foarte laborioasă. Prin urmare, vom încerca acum să oferim o evaluare, foarte, foarte dură, bazată doar pe legi generale.

Cât privește rezistența cifrului la spargerea prin metode „extensive”, adică la un atac „exhaustiv”, totul este mai mult sau mai puțin clar aici: o cheie pe 64 de biți este undeva în pragul accesibilității la acest tip de atac. , un cifr cu o cheie de 96 de biți și mai mare (rețineți că cheia trebuie să conțină un număr întreg de elemente de 32 de biți) este destul de robust împotriva acestuia. Într-adevăr, în urmă cu câțiva ani, fostul standard de criptare din SUA, DES, a fost piratat în mod repetat în mod brute - mai întâi a fost piratat de o rețea de calculatoare organizată pe baza internetului global, iar apoi de una specializată, de exemplu. un computer special conceput pentru asta. Să presupunem că versiunea standard a GOST, atunci când este implementată în software pe procesoarele moderne, este de patru ori mai rapidă decât DES. Apoi, „GOST redus” din 8 runde va funcționa de 16 ori mai repede decât DES. Să presupunem, de asemenea, că în perioada de când DES a fost spart, performanța de calcul a crescut de patru ori în conformitate cu Legea lui Moore. Drept urmare, obținem că acum verificarea unei chei pe 64 de biți pentru „GOST redus” cu opt cicluri este efectuată de 64 de ori mai rapid decât a fost efectuată verificarea unei chei DES la timp. Astfel, avantajul acestei versiuni de GOST față de DES în ceea ce privește complexitatea atacului exhaustiv este redus de la 2 64-56 = 2 8 = 256 la 256 / 64 = de 4 ori. De acord, aceasta este o diferență foarte iluzorie, aproape nimic.

Este mult mai dificil să se evalueze rezistența modificărilor slăbite ale GOST la metodele „intensive” de criptoanaliza. Cu toate acestea, un model general poate fi urmărit și aici. Faptul este că caracteristicile de „profil” ale multor dintre cele mai puternice tipuri de criptoanaliza în prezent depind exponențial de numărul de runde de criptare. Deci, pentru criptoanaliza liniară (LCA) aceasta va fi caracteristica de liniaritate L :

Unde C și sunt constante, R este numărul de runde. O relație similară există pentru criptoanaliza diferențială. Conform „sensului fizic” al acestora, toate caracteristicile de acest fel sunt probabilități. De obicei, cantitatea de date inițiale necesare pentru criptoanaliza și intensitatea muncii acesteia sunt invers proporționale cu astfel de caracteristici. Rezultă că acești indicatori de intensitate a muncii cresc exponențial odată cu creșterea numărului de pași de criptare de bază. Prin urmare, cu o scădere a numărului de runde de mai multe ori, intensitatea forței de muncă a celor mai faimoase tipuri de analize se va schimba ca, - foarte aproximativ și aproximativ - rădăcina acestui grad din numărul inițial. Aceasta este o scădere foarte mare a rezistenței.

Pe de altă parte, GOST a fost proiectat cu o marjă mare de siguranță și astăzi este rezistent la toate tipurile cunoscute de criptoanaliza, inclusiv diferențială și liniară. În ceea ce privește LCA, aceasta înseamnă că pentru implementarea sa cu succes, sunt necesare mai multe perechi „bloc deschis - bloc criptat” decât „există în natură”, adică mai mult de 264. Ținând cont de cele de mai sus, aceasta înseamnă că pentru un LCA de succes cu 16 runde GOST va necesita cel puțin blocuri sau 2 35 octeți sau 32 GB de date, iar pentru unul cu 8 runde - cel puțin blocuri sau 2 19 octeți sau 0,5 MB .

Concluziile din tot ceea ce s-a spus mai sus sunt date în tabelul următor, care rezumă caracteristicile versiunilor reduse ale GOST.

Numărul de runde Dimensiunea cheii, bit Index de acțiune rapidă Caracteristicile probabile ale cifrului (estimare foarte aproximativă)
24 192 1,33 Rezistent la majoritatea tipurilor cunoscute de nave spațiale sau pentru a fi în pragul stabilității. Implementarea practică a navei spațiale este imposibilă din cauza cerințelor ridicate pentru datele inițiale și intensitatea muncii.
16 128 2 Teoretic instabil la unele tipuri de criptoanaliza, cu toate acestea, implementarea lor practică în majoritatea cazurilor este dificilă din cauza cerințelor ridicate pentru datele inițiale și intensitatea muncii.
12 95 2,67 Nu este rezistent la unele tipuri cunoscute de criptoanaliza, dar este potrivit pentru a asigura secretul unor cantități mici de date (până la zeci până la sute de KB) pentru o perioadă scurtă de timp.
8 64 4 Nu este rezistent la unele tipuri cunoscute de criptoanaliza, dar este potrivit pentru a asigura secretul unor cantități mici de date (până la zeci de KB) pentru o perioadă scurtă de timp.

Ultimele două opțiuni, cu 12 și 8 runde, sunt capabile să ofere protecție în timp foarte, foarte limitată. Utilizarea lor este justificată doar în sarcinile în care este necesară doar secretizarea pe termen scurt a datelor care se închid, de ordinul câtorva ore. Un posibil domeniu de aplicare pentru aceste opțiuni de criptare slabe este închiderea traficului UDP al sistemelor electronice de tranzacționare. În acest caz, fiecare pachet de date (datagrama, mijlocul „D” din abrevierea UDP) este criptat pe o cheie separată de 64 de biți, iar cheia în sine este criptată pe cheia de sesiune (o cheie al cărei scop este o sesiune de comunicare între două calculatoare) și se transmite împreună cu datele.

Înainte de a încheia cu versiunile reduse ale GOST, voi spune că toate considerentele de mai sus sunt de natură foarte speculativă. Standardul oferă durabilitate pentru o singură variantă de 32 de runde. Și nimeni nu vă poate oferi nicio garanție că rezistența variantelor reduse ale cifrului la fisurare se va schimba în modul indicat mai sus. Dacă totuși decideți să le utilizați în design-ul dvs., amintiți-vă că ați călcat pe un teren foarte tremurător, care poate dispărea de sub picioare în orice moment. Deoarece viteza de criptare este esențială pentru dvs., poate ar trebui să vă gândiți să utilizați un cifr mai rapid sau un computer mai puternic? Un alt aspect pentru care ar trebui făcut acest lucru este că versiunile slăbite ale GOST vor fi cât mai sensibile la calitatea nodurilor de înlocuire utilizate.

Problema examinată are un dezavantaj. Ce se întâmplă dacă viteza de criptare nu este critică și cerințele de securitate sunt foarte stricte? Există două moduri de a crește sustenabilitatea GOST - să le numim condiționat „extensive” și „intensive”. Primul nu este altceva decât o simplă creștere a numărului de runde de criptare. Nu îmi este complet clar de ce ar putea fi cu adevărat necesar, deoarece standardul intern oferă durabilitatea necesară fără el. Cu toate acestea, dacă suferiți de paranoia mai mult decât nivelul necesar (și toți „apărătorii informațiilor” sunt pur și simplu obligați să sufere de aceasta, aceasta este condiția adecvării profesionale, întrebarea este doar în severitatea cazului :), te va ajuta sa te calmezi putin. Dacă nu sunteți sigur de acest cifru KGB sau de tabelul de înlocuire pe care îl utilizați, pur și simplu dublu, cvadruplu etc. numărul de runde - selectați multiplicitatea în funcție de gravitatea cazului dvs. Această abordare vă permite să creșteți cu adevărat puterea cifrului - dacă criptoanaliza anterior era pur și simplu imposibilă, acum este imposibilă pătrat!

O întrebare mai dificilă și mai interesantă este dacă este posibil să creșteți puterea cifrului fără a modifica numărul și structura pașilor de criptare de bază. În mod surprinzător, răspunsul la acest lucru este da, deși pășim din nou pe terenul tremurat al speculațiilor. Cert este că în GOST, la etapa principală de conversie, se presupune că trebuie să înlocuiască 4 cu 4 biți, dar în practică (vom vorbi despre asta încă mai târziu) toate implementările software realizează înlocuirea octet cu octet, adică. 8 pe 8 biți - acest lucru se face din motive de eficiență. Dacă proiectăm imediat un astfel de înlocuitor ca unul pe 8 biți, atunci vom îmbunătăți semnificativ caracteristicile unei runde. În primul rând, caracteristica „difuzie” sau indicatorul „avalanșă” va crește - un bit din datele originale și/sau cheia vor afecta mai mulți biți din rezultat. În al doilea rând, pentru nodurile de înlocuire mari, este posibil să se obțină caracteristici diferențiale și liniare mai mici, reducând astfel susceptibilitatea cifrului la aceleași tipuri de criptoanaliza. Acest lucru este valabil mai ales pentru ciclurile GOST reduse, iar pentru opțiunile de 8 și 12 runde, un astfel de pas este pur și simplu necesar. Acest lucru va compensa oarecum pierderea rezistenței la ei din cauza scăderii numărului de runde. Ceea ce face dificilă utilizarea acestei tehnici este că va trebui să proiectați singuri astfel de unități de înlocuire „mărite”. Și, de asemenea, faptul că nodurile mai mari sunt în general mult mai dificil de proiectat decât cele mai mici.

Utilizarea non-standard a standardului.

Desigur, scopul principal al criptoalgoritmilor GOST este criptarea datelor și protecția împotriva imitațiilor. Totuși, pot găsi și alte utilizări, în mod firesc legate de securitatea informațiilor. Să vorbim pe scurt despre ele:

1. Pentru criptarea în modul gamma, GOST prevede dezvoltarea unei game criptografice - o secvență de biți cu caracteristici statistice bune și putere criptografică ridicată. În plus, această gamă este utilizată pentru a modifica datele deschise, rezultând date criptate. Cu toate acestea, aceasta nu este singura aplicație posibilă a gamei criptografice. Faptul este că algoritmul pentru generarea acestuia este un generator de secvențe de numere pseudo-aleatoare (PRNG) cu caracteristici excelente. Desigur, nu este foarte rezonabil să folosiți un astfel de GPPC unde este necesară doar obținerea caracteristicilor statistice ale secvenței generate, iar puterea criptografică nu este necesară, nu este foarte rezonabilă - pentru aceste cazuri, există generatoare mult mai eficiente. Dar pentru diverse aplicații legate de securitatea informațiilor, o astfel de sursă va fi foarte utilă:

  • După cum sa menționat mai sus, gama poate fi folosită ca „materie primă” pentru fabricarea cheilor. Pentru a face acest lucru, trebuie doar să obțineți un segment gamma de lungimea necesară - 32 de octeți. În acest fel, cheile pot fi produse după cum este necesar și nu trebuie să fie stocate - dacă este nevoie din nou de o astfel de cheie, va fi destul de ușor să o generați din nou. Va fi necesar doar să ne amintim pe ce cheie a fost dezvoltată inițial, ce mesaj de sincronizare a fost folosit și de la ce octet al scalei generate a început cheia. Toate informațiile, cu excepția cheii utilizate, sunt neclasificate. Această abordare va facilita controlul unui sistem de chei destul de complex și ramificat folosind o singură „cheie principală”.
  • Similar cu precedentul, gama poate fi folosită ca materie primă pentru generarea parolelor. Aici poate apărea întrebarea, de ce trebuie să le generați deloc, nu este mai ușor să le inventați după cum este necesar. Eșecul acestei abordări a fost amplu demonstrat de o serie de incidente pe rețelele de calculatoare, dintre care cel mai mare a fost paralizia Internetului de 24 de ore din noiembrie 1988, cauzată de viermele Morris. Unul dintre modurile în care un program rău intenționat a pătruns într-un computer a fost ghicirea parolelor: programul a încercat să intre în sistem, încercând secvențial parolele din lista sa internă de câteva sute și, într-o proporție semnificativă de cazuri, a putut să o facă. Fantezia bărbatului de a inventa parole s-a dovedit a fi foarte săracă. De aceea, în acele organizații în care securității li se acordă atenția cuvenită, parolele sunt generate și distribuite utilizatorilor de către administratorul sistemului de securitate. Generarea parolelor este puțin mai dificilă decât generarea cheilor, deoarece în acest caz, gama binară „brută” trebuie convertită în formă simbolică și nu doar „tăiată” în bucăți. În plus, este posibil ca valorile individuale să fie eliminate pentru a se asigura că toate caracterele alfabetului apar în mod egal în parolă.
  • O altă modalitate de a utiliza gama criptografică este de a asigura ștergerea datelor de pe suporturi magnetice. Faptul este că, chiar și atunci când rescrieți informații pe un suport magnetic, rămân urme ale datelor anterioare, care pot fi restaurate prin expertiza adecvată. Pentru a elimina aceste urme, o astfel de rescriere trebuie efectuată de mai multe ori. S-a dovedit că ar fi necesară rescrierea informațiilor de pe purtător de mai puține ori dacă, printr-o astfel de procedură, s-ar folosi date aleatoare sau pseudoaleatoare, care ar rămâne necunoscute experților care încearcă să recupereze informațiile șterse. Scara cifrului va fi foarte utilă aici.

2. Nu numai gama criptografică, ci și transformarea criptografică în sine, pot fi utilizate pentru nevoi care nu sunt direct legate de criptare:

  • Știm că una dintre aceste opțiuni pentru utilizarea GOST este dezvoltarea unui insert simulat pentru matrice de date. Cu toate acestea, pe baza oricărui cifru bloc, inclusiv GOST, este destul de ușor să construiți o schemă pentru calcularea unei funcții hash unidirecționale, numită și MDC în literatură, care în diferite surse reprezintă modificați codul de detectare / manipulări (M odificare / M anipulare D ecție C odă) sau rezumatul mesajului (M mesaj D igest C odă). Prima transcriere a apărut în literatură mult mai devreme, a doua, mai scurtă, cred, a fost inventată de cei care nu au putut să-și amintească de prima :) - a fost o glumă. MDC poate fi utilizat direct în sistemele de imitație de securitate ca analog al unei inserții de imitație, care, totuși, nu depinde de cheia secretă. În plus, MDC este utilizat pe scară largă în schemele de semnătură digitală electronică (EDS), deoarece majoritatea acestor scheme sunt concepute în așa fel încât să fie convenabil să semnați un bloc de date de o dimensiune fixă. După cum știți, pe baza standardului discutat GOST 28147-89, este construit standardul Federației Ruse pentru calcularea funcției hash unidirecționale GOST R34.11-94.
  • Este mai puțin cunoscut faptul că pe baza oricărui cifru bloc, inclusiv GOST, poate fi construită o schemă EDS complet funcțională, cu o cheie de semnătură secretă și o combinație de verificare deschisă. Din mai multe motive, această schemă nu a primit o utilizare practică largă, dar în unele cazuri poate fi considerată în continuare ca o alternativă foarte atractivă la schemele EDS „matematice” dominante în prezent în lume.

Literatură

Sisteme de prelucrare a informațiilor. Protecție criptografică. Algoritm pentru transformarea criptografică GOST 28147-89. Stat Com. URSS conform standardelor, M., 1989. ftp://ftp.wtc-ural.ru/pub/ru.crypt/GOST-28147
Shannon Claude. Teoria matematică a sistemelor secrete. În colecția „Lucrări despre teoria informației și cibernetică”, M., IL, 1963, p. 333-369. http://www.enlight.ru/crypto/articles/shannon/shann__i.htm
Se anunță aprobarea standardului federal de procesare a informațiilor (FIPS) 197, standard de criptare avansată (AES), Federal Register vol. 66, nr. 235 / Joi, 6 decembrie 2001 / Aviz, pp 63369-63371. http://csrc.nist.gov/encryption/aes/
Feistel Horst. Criptografie și securitate computerizată. Traducere de A. Vinokurov, publicată de Horst Feistel. Cryptography and Computer Privacy, Scientific American, mai 1973, voi. 228, nr. 5, pp. 15-23. http://www.enlight.ru/crypto/articles/feistel/feist_i.htm
Schneier Bruce. Criptografia aplicată. a 2-a ed. Protocoale, algoritmi și coduri sursă în limbajul C., M., "Triumph", 2002 http://www.ssl.stu.neva.ru/psw/crypto/appl_rus/appl_cryp.htm
Menezes Alfred, van Oorschot Paul, Vanstone Scott. Manual de criptografie aplicată. ttp: //www.cacr.math.uwaterloo.ca/hac/
Vinokurov Andrey. Cum funcționează un cifru bloc? Manuscris. http://www.enlight.ru/crypto/articles/vinokurov/blcyph_i.htm
Vinokurov Andrei. Probleme criptografice pentru iNFUSED BYTES online. http://www.enlight.ru/crypto/articles/ib/ib.htm
Vinokurov Andrey, Primenko Eduard. Textul raportului „Cu privire la implementarea software-ului standardelor de criptare în Federația Rusă și Statele Unite”, conferință despre informatizare, Moscova, MEPhI, 28-29 ianuarie 2001. Publicat în lucrările conferinței.
Tehnologia de informație. Protecția informațiilor criptografice. Funcția hash GOST R34.11-94, Gosstandart RF, M., 1994.



Ți-a plăcut articolul? Împărtășește-l