Contacte

Algoritmul de criptare GOST 28147 89 C. GOST Architecture Comentarii

Scurta descriere Cipher.

GOST 28147-89 - Standardul sovietic și rus de criptare simetrică introdus în 1990, este, de asemenea, standardul CSI. Numele complet - "GOST 28147-89 Sistem de procesare a informațiilor. Protecție criptografică. Algoritmul transformării criptografice ". Blocați algoritmul Cipher. Când utilizați metoda de criptare cu gamme, puteți efectua un flux al unui algoritm de debit.

GOST 28147-89 - Blocați cifrul cu o cheie de 256 de biți și 32 de cicluri de conversie care funcționează cu blocuri de 64 de biți. Baza algoritmului de cifru este un lanț al FAISTEL. Modul de criptare de bază conform GOST 28147-89 este un mod simplu de înlocuire (se determină și moduri mai complexe, gamme cu părere și modul imitava).

Principiul funcționării algoritmului

Algoritmul nu este fundamental diferit de des. De asemenea, apare în ciclurile de criptare (prin urmare 32) în conformitate cu schema FAISTEL (figura 2.9).

Smochin. 2.9. Rounds Algoritmul de criptare GOST 28147-89.

Pentru a genera un conector, cheia sursă pe 256 de biți este împărțită în opt blocuri pe 32 de biți: K 1 ... K 8. Keys K 9 ... K 24 sunt repetarea ciclică a cheilor K 1 ... K 8 (numere de la biți mai tineri la bătrâni). Keys K 25 ... K 32 sunt cheile K 1 ... K 8, revenind în ordine inversă.

După efectuarea tuturor celor 32 de runde ale algoritmului, blocurile A 33 și B 33 sunt lipite (trebuie acordată atenție faptului că bitul mai vechi devine A 33, iar cel mai tânăr - B 33) - rezultatul este rezultatul funcționarea algoritmului.

Funcţie f.(A. i. ,K. i.) Calculează după cum urmează: A I și K i sunt pliate cu modulul 2 32, apoi rezultatul este împărțit în opt subsecvențe pe 4 biți, fiecare dintre acestea intră în intrarea sa Înlocuirea tabelului nodului (în ordinea marjei de biți), numită mai jos S-bloc. Numărul total al blocurilor S ale GOST - opt, adică, la fel de mult ca și subsecvențele. Toata lumea S-bloc Este o permutare a numerelor de la 0 la 15. Prima subsecvență pe 4 biți cade pe intrarea primului bloc S, cea de-a doua - pe a doua intrare etc. Rezultatele tuturor celor opt blocuri S sunt combinate într-o Cuvântul pe 32 de biți, atunci cuvântul este mutat ciclic stâng (la descărcare senior) cu 11 biți. Toate cele opt blocuri S pot fi diferite. De fapt, ele pot fi un material-cheie suplimentar, dar sunt mai des un parametru al schemei pentru un anumit grup de utilizatori. Textul standard indică faptul că alimentarea de umplere a nodurilor de înlocuire (blocuri S) se efectuează în modul prescris, adică. Dezvoltator al algoritmului. Comunitatea dezvoltatorilor ruși SKU coordonează nodurile de înlocuire utilizate pe Internet.

Decripția se efectuează în același mod ca și criptarea, dar ordinea conexiunii K i este inversată.

Moduri de operare algoritm GOST 28147-89

Algoritmul GOST 28147-89 are patru moduri de funcționare.

1. Mod.Înlocuirea simplă Preia datele de intrare, a căror dimensiune este scurtată de 64 de biți. Rezultatul criptării este textul de introducere convertit de 64 de biți în cazul criptare prin ciclul "32-S" și în cazul decriptării - ciclul "32-P".

2. Mod.hamming preia datele de intrare de orice dimensiune, precum și un parametru suplimentar de 64 de biți - syncopyower.. În timpul lucrării, sincopierul este transformat în ciclul "32-S", rezultatul este împărțit în două părți. Prima parte este formată din modulul 2 32 cu o valoare constantă de 1010101 16. Dacă cea de-a doua parte este de 2 32 -1, atunci valoarea sa nu se schimbă, altfel constă în modulul 2 32-1 cu o valoare constantă de 1010104 16. Valoarea obținută prin combinarea atât a părților transformate, numită Cipher Gamma, intră în ciclul "32-S", rezultatul este pliat pe scurt de modulul 2 cu un bloc de intrare pe 64 de biți. Dacă acesta din urmă este mai mic de 64 de cifre, atunci descărcările suplimentare ale valorii obținute sunt aruncate. Valoarea rezultată este furnizată la ieșire. Dacă există mai multe date primite, acțiunea se repetă: Unitatea este convertită din părți pe 32 de biți în părți și așa mai departe.

3. Mod.feedback Gamming. De asemenea, preia datele de intrare de orice dimensiune și sincoputere. Unitatea de date de intrare este pliată pe modulul 2 cu rezultatul conversiei în ciclul "32-з" al sincopicatorilor. Valoarea rezultată este furnizată la ieșire. Valoarea de picurare a sincronizării este înlocuită în cazul criptării de către unitatea de ieșire, iar în cazul decriptării - intrarea, adică criptată. Dacă ultimul bloc de date primite este mai mic de 64 de descărcări, atunci dimensiunile suplimentare ale gammei (ieșirea ciclului "32-s") sunt eliminate. Dacă există mai multe date primite, se repetă acțiunea: Din rezultatele criptării valorii înlocuite, se formează cifrul gamma, etc.

4. Modul de dezvoltareimitovka. Preia datele de intrare, a căror dimensiune este cel puțin două blocuri complete de 64 de biți și returnează un bloc de date pe 64 de biți, numit Imitavka. Valoarea temporabilă pe 64 de biți este setată la 0, denumită în continuare, în timp ce există date de intrare, este pliată pe modulul 2 cu rezultatul executării ciclului "16-S", blocul de intrare este dat la intrare. După finalizarea datelor de intrare, valoarea temporară este returnată ca rezultat.

Cifher Cryptoanaliza

Cifra GOST 28147-89 utilizează o tastă de 256 de biți, iar dimensiunea spațiului cheie este de 2 256. Niciuna dintre aplicațiile generale actuale nu aleg în prezent o cheie în perioada mai mică de multe sute de ani. Standardul rus al GOST 28147-89 a fost proiectat cu o marjă mare și rezistența la multe ordine de mărime depășește standardul american DES cu dimensiunea reală a 56 de biți și un spațiu-cheie de numai 2 56.

Există atacuri și GOST pe termen lung 28147-89 fără modificări. Una dintre primele lucrări deschise în care a fost efectuată analiza algoritmului, utilizează deficiențe pentru a extinde cheia unui număr de algoritmi de criptare cunoscuți. În particular, algoritmul GOST 28147-89 poate fi deschis utilizând criptanaliză diferențială pe tastele conectate, dar numai în cazul utilizării tabelelor slabe de înlocuire. Versiunea cu 24 rotundă a algoritmului (în care lipsește primele 8 runde) este deschisă într-un mod similar cu orice tabele de substituție, cu toate acestea, tabelele de înlocuire puternice fac ca un astfel de atac să fie absolut nepractic.

Oamenii de știință interni a.g. Rostovtsev și de exemplu. În 2001, Makhovenko a propus o metodă fundamentală nouă de criptanaliză prin formarea unei funcții țintă dintr-un text bine cunoscut, care corespunde vrăjitorului și valoarea cheie dorită și găsirea extremumului corespunzător valorii adevăratei cheie. Ei au găsit, de asemenea, o clasă mare de chei slabe ale algoritmului GOST 28147-89, care vă permit să deschideți algoritmul cu ajutorul a doar 4 texte deschise selectate și corespunzătoare ciphertsului cu o complexitate suficient de scăzută.

În 2004, un grup de specialiști din Coreea a propus un atac cu care, folosind criptoanaliză diferențială pe tastele conectate, este posibil să se obțină o probabilitate de 91,7% 12 biți ai cheii secrete. Pentru atacul aveți nevoie de 2 35 de texte deschise selectate și 2 36 de operațiuni de criptare. După cum se poate observa, acest atac este practic inutil pentru autopsia reală a algoritmului.

Tabelul de înlocuire este un element cheie pe termen lung, adică acționează cu o perioadă mult mai lungă decât o cheie separată. Se presupune că este comun tuturor site-urilor de criptare într-un sistem de protecție criptografică. Calitatea cifrei depinde de calitatea acestui tabel. Atunci când tabelul de substituție "puternic", durabilitatea cifrului nu scade sub o limită admisă chiar și în cazul dezvăluirii acestuia. În schimb, utilizarea unei mese "slabe" poate reduce rezistența la cifră la o limită redusă inacceptabilă. Nu au fost publicate informații despre calitatea tabelului de înlocuire în tabelul de imprimare deschis, totuși, existența unor mese "slabe" nu provoacă îndoieli - un exemplu este tabelul de substituție "trivial", conform căruia fiecare valoare este înlocuită de ea el însuși. Într-o serie de lucrări, este de concluzia eronată că tabelele secrete ale algoritmului de înlocuire GOST 28147-89 pot face parte din cheie și pot crește lungimea efectivă (care este nesemnificativă, deoarece algoritmul are o cheie foarte mare de 256 de biți).

GOST 28147-89 prevede următoarele moduri de criptare a datelor: înlocuirea simplă, jocul, feedback și unul mod suplimentar Dezvoltarea imitava.

În oricare dintre aceste moduri, datele sunt prelucrate de 64 de biți blocuri la care se împarte matricea criptată, motiv pentru care GOST 28147-89 se referă la blocarea blocurilor. În modurile de gammă, este posibil să se proceseze un bloc incomplet de dimensiuni de date mai mici de 8 octeți, ceea ce este esențial atunci când criptarea matricei de date cu o dimensiune arbitrară, care nu poate fi mai mare de 8 octeți.

Mod simplu de înlocuire. Acest mod de utilizare a cifrului bloc este similar cu regimul de înlocuire a blocului simplu (BCE) luat în considerare în prelegere. În acest mod, fiecare bloc de date sursă este criptat independent de celelalte blocuri care utilizează aceeași cheie de criptare. O caracteristică a acestui regim este că aceleași blocuri sursă sunt transformate în același ciphertext. Prin urmare, GOST 28147-89 recomandă utilizarea unui mod simplu de înlocuire numai pentru criptarea tastelor.

Modurile de gammation și gammă de feedback pot fi utilizate pentru criptarea datelor de dimensiuni arbitrare.

ÎN mod de haming. Biturile textului sursă sunt formate din modulul 2 cu o gamma, care este produsă utilizând un algoritm de criptare conform GOST 28147-89. Adică, algoritmul de criptare conform GOST 28147-89 în acest mod este utilizat ca generatoare de blocuri gamma de 64 de biți. Când este criptat fiecare nou bloc de date Gamma utilizat în etapa anterioară, este criptat și utilizat deja ca un "nou" gamma. Ca o gamă inițială de date criptate pentru a obține prima gamă, așa-numitul este utilizat. syncopyushka. - Bloc de date inițiale pe 64 de biți, care ar trebui să fie același pe partea de criptare și decriptare. Datorită faptului că impunerea și îndepărtarea gammei se efectuează utilizând aceeași operație de adăugare a modulului 2, algoritmii de criptare și decriptare în intervalul de gammming coincid.

Deoarece toate elementele gamma sunt diferite pentru realele criptate, rezultatul criptare este chiar două blocuri identice într-o matrice de date vor fi diferite. În plus, deși elementele gammei sunt produse prin aceleași porțiuni de 64 de biți, poate fi utilizată o parte a unui astfel de bloc cu o dimensiune egală cu dimensiunea blocului criptat. Aceasta este ceea ce face posibilă criptarea blocurilor de date incomplete.

Mod. feedback Gamming. Arată ca o gamă de gammation și diferă de ea numai prin metoda de producere a elementelor gamma. Când jocul cu feedback, următorul element pe 64 de biți al gammei este produs ca urmare a conversiei prin ciclul de bază al algoritmului GOST 28147-89 al blocului anterior al datelor criptate. Pentru a cripta primul bloc al masivului de date, elementul gamma este produs ca urmare a conversiei de-a lungul aceluiași ciclu de picurare de sincronizare. Aceasta ajunge la angajamentul blocurilor - fiecare bloc al criptării în acest mod depinde de blocurile corespunzătoare și de toate textele deschise. Prin urmare, acest mod este numit uneori gamming cu blocuri de logodnă. În ceea ce privește durabilitatea cifrului, implicarea blocurilor nu are nicio influență.

Pentru a rezolva problema detectării distorsiunii într-o matrice de date criptate în Gut 28147-89, este furnizat un mod suplimentar de transformare criptografic - dezvoltarea imitava. Imitovstavka. - Aceasta este o combinație de control care depinde de datele deschise și de informațiile cheie secrete. Scopul utilizării imitovka este de a detecta toate schimbările aleatorii sau deliberate în gama de informații. În modul de procesare a imitare a textului de intrare este procesată de blocuri după cum urmează:

unde f este ciclul de bază conform GOST 28147-89; X i - textul sursă de 64 de biți; K este cheia.

O porțiune din Y N, obținută la ieșire, este luată ca imitamentare, de obicei 32 de biți mai tineri.

Astfel, un atacator, care nu deține cheia de criptare, nu poate calcula simplificarea unei anumite o serie de informații deschise de informații, precum și selectați datele deschise către simplistul specificat.

Diferențele de algoritmii de criptare conform GOST 28147-89 și des

În ciuda faptului că algoritmul prezentat în GOST 28147-89 a fost conceput pentru o lungă perioadă de timp, a fost pus un stoc suficient pentru fiabilitate. Acest lucru se datorează în primul rând, cu o lungime mare de cheia de criptare.

După cum știți, dezvoltatorii de criptosisteme moderne aderă la principiul că secretul mesajelor criptate ar trebui determinat de secretul-cheie. Aceasta înseamnă că, chiar dacă algoritmul de criptare este cunoscut pentru criptoanalitică, el, totuși, nu ar trebui să poată decripta mesajul dacă nu are cheia corespunzătoare. Toate cifrele clasice de blocare, inclusiv DES și GOST 28147-89, respectă acest principiu și sunt concepute astfel încât să nu existe nici o modalitate de a le deschide într-un mod mai eficient decât complet copleșitor prin intermediul întregului spațiu cheie, adică. Pentru toate cheile posibile. Este clar că rezistența unor astfel de cifre este determinată de dimensiunea cheii folosite în ele.

În cifrul implementat în GOST 28147-89, se utilizează o cheie cu 25 de biți, iar volumul spațiului cheie este 2 256. Chiar dacă, ca și în "algoritmii de criptare a des și AES", sugerează că toate forțele complexului de calcul cu abilitatea de a exuda 10 12 sunt aruncate pe ruperea cifrului (acesta este de aproximativ 2 40) din taste Într-o secundă, atunci pe căutarea completă a tuturor celor 2.56 de taste va dura 2 216 de secunde (de această dată este mai mult de un miliard de ani).

De asemenea, puteți adăuga următoarele la diferențele dintre des Algoritmii de des și GOST 28147. În runda principală, se utilizează rearanjarea neregulată a mesajului sursă, GOST 28147 utilizează o trecere ciclică pe 11 biți spre stânga. Ultima operație este mult mai convenabilă pentru implementarea software-ului. Cu toate acestea, permutarea de des crește efectul avalanșelor. În GOST 28147, o modificare a unui biți de intrare afectează o unitate pe 4 biți atunci când este înlocuită într-o rundă, ceea ce afectează apoi cele două blocuri pe 4 biți ale următoarei runde, trei blocuri ale următoarelor etc. GOST 28147 necesită 8 runde înainte de a schimba un pic de intrare va afecta fiecare lot de rezultat; Des necesită doar 5 runde.

De asemenea, trebuie remarcat faptul că, spre deosebire de des, GOST 28147-89, tabelul de substituție pentru efectuarea operațiunii de substituție poate fi modificat în mod arbitrar, adică tabelul de înlocuire este o cheie opțională de 512 de biți.

Termeni cheie

GOST 28147-89. - standardul rusesc pentru bloc algoritmul de criptare simetrică.

Scurt rezultate

În Rusia, GOST 28147-89 este adoptată, recomandată pentru utilizarea pentru protecția datelor criptografice. GOST 28147-89 este un cifru bloc cu tasta închisă. Parametrii principali ai algoritmului GOST 28147-89 sunt după cum urmează: dimensiunea blocului este de 64 de biți, dimensiunea cheii este de 256 de biți, numărul de runde este 32. Algoritmul este o rețea de lanț clasic.

Setat pentru practică

Întrebări pentru auto-test

  1. În ce scopuri pot fi utilizate algoritmul de transformare criptografică pentru GOST 28147-89?
  2. Listează parametrii principali ai algoritmului pentru criptarea simetrică conform GOST 28147-89.
  3. Ce operațiuni sunt utilizate în algoritmul bloc pentru criptare conform GOST 28147-89?
  4. Care sunt principalele diferențe în algoritmul de criptare conform GOST 28147-89 de la algoritmul des?
  5. Ce informații, în plus față de cheia secretă, sub rezerva utilizării standardului algoritmi GOST 28147.-89 trebuie să decripteze mesajul?
  6. În ce moduri pot fi criptate folosind algoritmul de transformare criptografic conform GOST 28147-89?
  7. Ce este un Simtor? În ce scop pot folosi simtorul?

Exerciții pentru auto-testare

  1. Fie ca fiecare trei biți ai mesajelor de intrare să fie înlocuite cu următorul tabel de înlocuire:

Algoritmul de criptare GOST 28147-89, utilizarea și implementarea acestuia pentru computere intel platforme X86.


Andrei Vinokurov.

Descrierea algoritmului.

Termeni și denumiri.

Descrierea standardului de criptare Federația Rusă Conținut într-un document foarte interesant intitulat "Algoritmul pentru transformarea criptografică GOST 28147-89". Faptul că în titlul său în locul termenului "criptare" pare mai mult concept general " transformarea criptografică "Nu este deloc întâmplător. În plus față de câteva proceduri strâns legate de criptare, documentul descrie unul construit pe principiile generale cu ele pentru a dezvolta algoritmi. imitovka. . Acesta din urmă nu este altceva decât o combinație de control criptografic, adică codul generat de datele sursă utilizând cheia secretă la imitovashchy. , sau protecția datelor de la efectuarea unor schimbări neautorizate.

La diferite etape ale algoritmilor GOST, datele pe care le operează sunt interpretate și sunt utilizate în moduri diferite. În unele cazuri, elementele de date sunt procesate ca o serie de biți independenți, în alte cazuri - ca un număr întreg, fără un semn, în al treilea rând, având un element complex de structură constând din mai multe elemente mai simple. Prin urmare, pentru a evita confuzia, ar trebui să se convină un acord.

Elementele de date din acest articol sunt indicate prin litere latine de capital cu desen înclinat (de exemplu, X.). Prin intermediul | X.| denotă dimensiunea elementului de date X. în biți. Astfel, dacă interpretați elementul de date X.ca un număr întreg non-negativ, puteți înregistra următoarele inegalitate :.

Dacă elementul de date constă din mai multe elemente mai mici, acest fapt este indicat după cum urmează: X.=(X. 0 ,X. 1 ,…,X N. –1)=X. 0 ||X. 1 ||…||X N. -unu . Procedura de combinare a mai multor elemente de date la una este chemată conjunctură date și denotă simbolul "||". Bineînțeles, trebuie efectuat următorul raport pentru dimensiunile elementelor de date: X.|=|X. 0 |+|X. 1 |+…+|X N. -1 |. La specificarea elementelor complexe de date și a operațiunilor de concatenare, componentele elementelor de date sunt enumerate în ordinea ascendentă a vechimii. Cu alte cuvinte, dacă interpretați elementul compozit și toate elementele de date incluse în ea ca întregi fără un semn, puteți înregistra următoarea egalitate:

În algoritm, elementul de date poate fi interpretat ca o serie de biți individuali, în acest caz biții indică aceeași literă ca o matrice, dar în litere mici, după cum se arată în următorul exemplu:

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

Astfel, dacă ați acordat atenție GOST, a adoptat așa-numitul. "Little-endian" numerotare de descărcări, adică În interiorul cuvintelor multi-cifre ale acestor, descărcările binare individuale și grupurile lor cu numere mai mici sunt mai puțin semnificative. Aceasta este menționată la punctul 1.3 din Standard: "Atunci când se adaugă și trecerea ciclică a vectorilor binar cu descărcări mai vechi, se iau în considerare descărcarea de acționare cu numere mari." Mai mult, elementele de standard 1.4, 2.1.1 și altele prescriu pentru a începe completarea registrelor de stocare ale unui dispozitiv de criptare virtuală cu tineri, adică Descărcări mai puțin semnificative. Exact aceeași procedură de numerotare este acceptată în arhitectura Microprocesorului Intel X86, motiv pentru care, cu implementarea software a cifrei de pe această arhitectură, nu există permutări suplimentare de descărcări în cadrul datelor Word.

Dacă o anumită operațiune care are un sens logic este efectuată deasupra elementelor de date, se presupune că această operație este efectuată deasupra biților 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 "" este notat printr-o operațiune logică binară arbitrară; De regulă, se referă la operațiune excluzând sau , Este, de asemenea, o operațiune de sumare 2:

Logica construirii cifrelor și a structurii informațiilor cheie ale GOST.

Dacă examinați cu atenție GOST originală 28147-89, se poate observa că conține o descriere a algoritmilor mai multor niveluri. În partea de sus a vârfului există algoritmi practici concepuți pentru a cripta matrice de date și a dezvolta imitava pentru ei. Toate acestea se bazează pe algoritmul de trei niveluri scăzute, numit textul GOST. cicluri . Acești algoritmi fundamentali sunt menționați în acest articol ca cicluri de bază Pentru a le distinge de toate celelalte cicluri. Ei au următoarele nume și denumiri, acestea din urmă sunt în paranteze, iar semnificația va fi explicată mai târziu:

  • criptarea ciclului (32-s);
  • ciclul de decriptare (32-P);
  • ciclul de dezvoltare al imitației (16-S).

La rândul său, fiecare dintre ciclurile de bază este o repetare multiplă a unei singure proceduri numită certitudine în continuare în lucrarea actuală. pasul principal al cripocremiei .

Deci, pentru a afla oaspetele, trebuie să înțelegeți următoarele lucruri:

  • ce pasul principal formarea criptoprera;
  • pe măsură ce pașii de bază sunt ciclurile de bază;
  • ca trei cicluri de bază toate algoritmii practici de GOST sunt expediate.

Înainte de a începe studiul acestor probleme, trebuie să discutați despre informațiile cheie utilizate de algoritmii GOST. În conformitate cu principiul lui Kirchhoff, care este mulțumit de toate cipurile sociale bine cunoscute, este secretul său care oferă secretul mesajului criptat. În invitat, informațiile cheie sunt formate din două structuri de date. În plus față de fapt cheie necesare pentru toți cifrele, acesta conține, de asemenea Înlocuirea tabelului . Mai jos sunt principalele caracteristici ale structurilor-cheie ale GOST.

Etapa principală a criptocremiei.

Pasul principal al cripocremiei este în mod inerent operator care determină conversia unui bloc de date pe 64 de biți. Un parametru suplimentar al acestui operator este o unitate pe 32 de biți, care este utilizată de orice element cheie. Schema algoritmului principal al etapei este prezentată în figura 1.


Figura 1. Schema principală a etapei de algoritm de formare Cryptoprera GOST 28147-89.

Mai jos sunt explicate algoritmului pasului principal:

Pasul 0.

  • N. - blocul de date transformat pe 64 de biți, în timpul executării pasului mai mic ( N. 1) și cel mai mare ( N. 2) Părțile sunt procesate ca numere de 32 de biți separate fără un semn. Astfel încât să puteți înregistra N \u003d(N. 1 ,N. 2).
  • X. - element cheie pe 32 de biți;

Pasul 1

Finalizarea cu cheia. Cea mai tânără jumătate a blocului convertit este pliată cu modulul 2 32 cu elementul cheie utilizat în curs, rezultatul este transmis la etapa următoare;

Pasul 2.

Înlocuirea patch-urilor. Valoarea pe 32 de biți obținută în etapa anterioară este interpretată ca o gamă de opt blocuri de coduri pe 4 biți: S \u003d.(S. 0 , S. 1 , S. 2 , S. 3 , S. 4 , S. 5 , S. 6 , S. 7), și S. 0 conține 4 dintre cele mai tinere și S. 7 - 4 biți cei mai înalți S..

Apoi, valoarea fiecăruia dintre cele opt blocuri este înlocuită de cea nouă, care este selectată de tabelul de înlocuire după cum urmează: valoarea blocului S I.schimbarea lui S I.- în ordine (numerotarea de la zero) i.Nodul de înlocuire (adică i.- Rândul tabelului de înlocuire, numerotarea de asemenea din zero). Cu alte cuvinte, este selectat ca înlocuitor pentru valoarea blocului a unității de la linia numărului de înlocuire, egală cu numărul blocului înlocuit, iar numărul coloanei este egal cu valoarea blocului înlocuit ca 4 -Primiți un număr non-negativ al depozitului. De aici devine clar dimensiunea tabelului de înlocuire: numărul de rânduri din acesta este egal cu numărul de elemente pe 4 biți într-un bloc de date pe 32 de biți, care este opt, iar numărul de coloane este egal cu Numărul de valori diferite ale blocului de date pe 4 biți egal cu 2 4, șaisprezece.

Pasul 3.

Shift ciclic cu 11 biți rămase. Rezultatul pasului anterior este deplasat ciclic cu 11 biți în direcția de evacuări la nivel înalt și este transmisă la pasul următor. Diagrama simbolului algoritmului indică funcția schimbării ciclice a argumentului său cu 11 biți la stânga, adică. în direcția descărcărilor superioare.

Pasul 4.

Adăugare îmbuteliată: Valoarea obținută în etapa 3 este blocată de modulul 2 cu o jumătate superioară a unității convertite.

Pasul 5.

Shift de lanț: Cea mai tânără parte a blocului convertit este deplasată în locul vârstnicului, iar rezultatul pasului anterior este plasat în locul său.

Pasul 6.

Valoarea obținută a blocului transformat este returnată ca rezultat al implementării algoritmului pasului principal al cripocremiei.

Cicluri de transformare criptografică de bază.

După cum sa menționat la începutul acestui articol, GOST se referă la clasa de cipuri de blocuri, adică unitatea de procesare a informațiilor din acesta este un bloc de date. Prin urmare, este logic să se aștepte ca algoritmii de transformări criptografice să fie definite, adică să cripteze, să decripteze și să "contabilizeze" în combinația de control a unui bloc de date. Acești algoritmi sunt chemați cicluri de bază GOST, care subliniază importanța lor fundamentală de a construi acest cifru.

Ciclurile de bază sunt construite din pașii de bază transformarea criptografică luată în considerare în secțiunea anterioară. În procesul de efectuare a pasului principal, se utilizează un singur element cheie pe 32 de biți, în timp ce tasta GOST conține opt astfel de elemente. Prin urmare, că cheia este utilizată complet, fiecare dintre ciclurile de bază trebuie să efectueze în mod repetat pasul principal cu elemente diferite. În același timp, se pare destul de natural că, în fiecare ciclu de bază, toate elementele cheie ar trebui utilizate același număr de ori, pentru considerații de rezistență la cifră, acest număr ar trebui să fie mai mare decât unul.

Toate ipotezele de mai sus, bazându-se doar pentru bunul simț, erau adevărate. Ciclurile de bază sunt încheiate în mai multe execuții. pasul principal utilizarea diferitelor elemente-cheie și diferă unul de celălalt numai prin numărul de repetare pas și ordinea utilizării elementelor cheie. Mai jos este această comandă pentru diferite cicluri.

Ciclarea ciclului 32-S:

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. Circuitul ciclului 32-S

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 Decriptare 32-P

Ciclul de dezvoltare al imitației 16-S:

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 2b. Schema ciclului de dezvoltare al imitației de 16 s.

Fiecare dintre cicluri are propria desemnare alfanumerică corespunzătoare șablonului " n-x "unde primul element de desemnare ( n.), stabilește numărul de repetări ale pasului principal în ciclu și al doilea element al desemnării ( X.), Scrisoare, stabilește ordinea criptării ("S") sau decriptarea ("P") pentru a utiliza elementele cheie. Această comandă are nevoie de o explicație suplimentară:

Ciclul de decriptare trebuie să fie un ciclu de criptare inversă, adică utilizarea secvențială a acestor două cicluri la un bloc arbitrar, ar trebui să fie ca urmare a blocului inițial, care se reflectă în raportul următor: C. 32-P ( C. 32-s ( T.))\u003d T.Unde T.- bloc de date arbitrare pe 64 de biți, C. X ( T.) - rezultatul executării ciclului X. deasupra blocului de date T.. Pentru a efectua această condiție pentru algoritmi similar cu GOST, este necesar ca comanda de a utiliza elementele cheie de către ciclurile corespunzătoare, a fost inversă reciprocă. În justiția condiției înregistrate pentru cazul în cauză, este ușor să se asigure că comparați secvențele de mai sus pentru ciclurile de 32 s și 32-p. O consecință interesantă implică din cele de mai sus: proprietatea ciclului de a fi un alt ciclu invers este reciproc, adică ciclul 32-S este invers față de ciclul 32-p. Cu alte cuvinte, criptarea blocului de date poate fi realizată teoretic utilizând ciclul de decriptare, în acest caz decriptarea blocului de date trebuie efectuată de ciclul de criptare. Din cele două cicluri inverse reciproc, oricine poate fi folosit pentru a cripta, atunci al doilea trebuie utilizat pentru a decripta datele, dar standardul GOST28147-89 fixează rolurile din spatele ciclurilor și nu oferă utilizatorului dreptul de a alege în această chestiune .

Ciclul de dezvoltare al imitavarului este de două ori ciclurile de criptare, ordinea utilizării elementelor cheie în acesta este aceeași ca în primele 16 etape ale ciclului de criptare, ceea ce nu este dificil de verificat, luând în considerare secvențele de mai sus, astfel încât această comandă Desemnarea ciclului este codificată de aceeași literă ".

Schemele ciclurilor de bază sunt prezentate în figurile 2A-b. Fiecare dintre ele acceptă ca argument și returnează un bloc de date pe 64 de biți, ca rezultat, indicat în diagrame. N.. Simbol etapa ( N.,X.) Indică executarea etapei principale a formării criptoprera pentru blocul de date N. Utilizarea unui element cheie X.. Există o diferență mai mare între criptarea și ciclurile de calcul, care nu este menționată mai sus: la sfârșitul ciclurilor de criptare de bază, cea mai veche și cea mai tânără parte a locurilor de schimbare a blocului, este necesar pentru reversibilitatea lor reciprocă.

Principalele moduri de criptare.

GOST 28147-89 oferă trei moduri de criptare a datelor:

  • Înlocuirea simplă
  • gamming
  • feedback Gamming,

Și un mod suplimentar de producție de imitație.

În oricare dintre aceste moduri, datele sunt prelucrate de 64 de biți blocuri, care sunt împărțite printr-o matrice supusă transformării criptografice, motiv pentru care GOST se referă la blocarea blocurilor. Cu toate acestea, în două moduri de gammation, este posibil să se proceseze un bloc incomplet de dimensiuni de date mai mici de 8 octeți, ceea ce este esențial atunci când criptarea matricei de date cu o dimensiune arbitrară, care nu poate fi mai mare de 8 octeți.

Înainte de a trece la luarea în considerare a algoritmilor de transformare criptografică specific, este necesar să se explice denumirile utilizate în diagramele din următoarele secțiuni:

T. despre, T. W - Arrays de date deschise și criptate;

, – i.În ordinea blocurilor de 64 de biți ale datelor deschise și criptate: , , ultimul bloc poate fi incomplet:;

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

C. X este funcția de a transforma un bloc de date pe 64 de biți pentru algoritmul ciclului de bază "X".

Acum descriem principalele moduri de criptare:

Înlocuire simplă.

Criptarea în acest mod este de a utiliza ciclul 32-S la blocurile de date deschise, decriptare - ciclul de 32-P la blocurile de date criptate. Acesta este cel mai simplu dintre moduri, blocurile de date pe 64 de biți sunt procesate în ea independent unul de celălalt. Schemele de algoritmi de criptare și decriptare în modul simplu de înlocuire sunt prezentate în Figurile 3A și, respectiv, ele sunt triviale și nu au nevoie de comentarii.


Imagine. 3a. Algoritmul pentru criptarea datelor în modul simplu de înlocuire


Imagine. 3b. Algoritmul de decriptare a datelor în modul simplu de înlocuire

Dimensiunea unei game de date deschise sau criptate supuse criptării sau decriptării trebuie să fie Katten 64 biți: T. o | \u003d | T. W | \u003d 64 · n. După efectuarea operațiunii, dimensiunea matricei de date rezultată nu se schimbă.

Modul de criptare este înlocuirea simplă are următoarele caracteristici:

  • Deoarece blocurile de date sunt criptate independent unul de celălalt și din poziția lor în matricea de date, atunci când cele două blocuri de text identice sunt criptate, sunt obținute aceleași blocuri de ciphertext și invers. Proprietatea marcată va permite criptoanaliticii să facă o concluzie cu privire la identitatea blocurilor de date sursă, dacă într-o serie de date criptate, a fost îndeplinită de blocuri identice, care sunt nevalide pentru un cifru serios.
  • Dacă lungimea matricei de date criptate nu este multiplă 8 octeți sau 64 de biți, problema apare decât și cum se completează ultimul bloc de date incomplet al matricei la 64 de biți. Această sarcină nu este atât de simplă, deoarece pare la prima vedere. Soluții evidente precum "Adăugați un bloc incomplet de biți zero" sau, în general, "Adăugați un bloc incomplet de combinație fixă \u200b\u200bde biți zero și unități" poate fi administrat în mâinile criptanalitice posibilitatea unor metode interactive pentru a determina conținutul Acest bloc incomplet, și acest fapt înseamnă un cifru de rezistență redusă. În plus, lungimea ciphertextului se va schimba, fiind crescută la cel mai apropiat între 64 de biți, care este adesea nedorit.

La prima vedere, caracteristicile de mai sus fac aproape imposibil să se utilizeze un mod simplu de înlocuire, deoarece poate fi utilizat numai pentru criptarea matricelor de date cu o dimensiune a mai multor 64 de biți care nu conțin blocuri de 64 de biți duplicat. Se pare că pentru orice date reale, este imposibil să se asigure executarea acestor condiții. 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 de 8 octeți repetate în cheia sau tabelul de înlocuire va vorbi despre calitatea lor foarte slabă, astfel încât nu poate exista o astfel de repetare în elementele cheie reale. Astfel, am aflat că modul simplu de înlocuire este destul de potrivit pentru criptarea informațiilor cheie, mai ales că alte moduri în acest scop sunt mai puțin convenabile, deoarece acestea necesită un element de date suplimentar de sincronizare - Syncropters (vezi următoarea secțiune). Ghestul nostru este adevărat, GOST prescrie folosind un mod simplu de înlocuire exclusiv pentru a cripta datele cheie.

Haming.

Cum puteți scăpa de deficiențele unui simplu mod de înlocuire? Pentru a face acest lucru, este necesar să se facă posibilă criptarea blocurilor cu o dimensiune mai mică de 64 de biți și asigurarea dependenței blocului de ciphertext de la numărul său, cu alte cuvinte, randomize procesul de criptare. În oaspete, acest lucru se realizează în două moduri diferite în două moduri de criptare care implică hamming . Hamming - Aceasta este o suprapunere (eliminare) pentru a deschide datele (criptate) ale domeniului criptografic, adică secvențele elementelor de date produse utilizând un anumit algoritm criptografic pentru a obține date criptate (deschise). Pentru a suprapune gamma la criptarea și scoaterea acestuia, ar trebui utilizate operațiuni binare inverse reciproc, de exemplu, adăugarea și scăderea modulului 2 64 pentru blocurile de date pe 64 de biți. În intestin, în acest scop, se utilizează funcționarea adăugării bătute a modulului 2, deoarece este partea din spate a acestuia și, în plus, cea mai simplă implementată de hardware. Hamming rezolvă atât problemele menționate: În primul rând, toate elementele gamma sunt diferite pentru rețelele criptate și, prin urmare, rezultatul criptării chiar și două blocuri identice într-o serie de date vor fi diferite. În al doilea rând, deși elementele gammei și sunt produse prin aceleași porțiuni de 64 de biți, pot fi utilizate o parte dintr-un astfel de bloc cu o dimensiune egală cu dimensiunea blocului criptat.

Acum ne întoarcem direct la descrierea gamei de gamme. Gamma pentru acest mod se obține după cum urmează: cu un anumit generator recurent algoritmic al secvenței de numere (RGPH), blocurile de date pe 64 de biți sunt produse, care sunt în continuare convertite printr-un ciclu de 32 de s, care este, criptarea într-o Modul simplu de înlocuire, rezultatul blocurilor gamma sunt obținute. Datorită faptului că impunerea și îndepărtarea gammei se efectuează utilizând aceeași operație a algoritmilor exclusivi sau, criptarea și decriptarea în modul Gamm Imaging sunt identice, schema generală este prezentată în Figura 4.

RGPH utilizat pentru a genera o gamma este o funcție recurentă: - elemente ale secvenței recurente, f. - Funcția de conversie. Prin urmare, problema inițializării sale apare în mod inevitabil, adică despre elementul în realitate, acest element de date este parametrul algoritmului pentru modurile de gamme, în diagramele pe care le este indicată ca S.și numită criptografie syncopusil. , și în oaspeții noștri - umplere primară unul dintre registrele de criptare. Din anumite motive, dezvoltatorii GOST au decis să utilizeze RGPH pentru a inițializa nu direct sincoputerea, ci rezultatul conversiei sale de-a lungul ciclului 32-S: . Secvența elementelor produse de RGPH depinde în întregime de umplerea inițială, adică elementele acestei secvențe sunt funcția numărului său și umplerea inițială a RGPH: unde f I.(X.)=f.(f I. –1 (X.)), f. 0 (X.)=X.. Luând în considerare transformarea conform algoritmului simplu de înlocuire, se adaugă dependența-cheie:

unde G I.i.un element gamma, K. - Cheie.

Astfel, secvența elementelor gamma pentru utilizare în modul Gammation este determinată în mod unic de datele cheie și sincopusca. În mod natural, una și aceeași sincoputer ar trebui să fie utilizate pentru procedurile de criptare reversibile în procese și decriptare. Din cerința de unicitate a gamma, a cărei neîndepliniri conduce la o scădere catastrofică a rezistenței la cifre, rezultă că pentru a cripta două matrice diferite de date într-o singură cheie, este necesar să se asigure utilizarea diferitelor sincopiocone. Acest lucru duce la necesitatea de a stoca sau de a transmite sincoputeri prin canale de comunicare împreună cu datele criptate, deși în unele cazuri speciale poate fi predeterminată sau calculată într-un mod special dacă criptarea a două matrice este exclusă pe o singură venă.

Acum, luați în considerare RGPH în detaliu utilizat la oaspete pentru a genera elemente ale gammei. În primul rând, trebuie remarcat faptul că nu implică cerințele pentru asigurarea oricărei caracteristici statistice ale secvenței produse de secvență. RGPH este proiectat de dezvoltatorii GOST pe baza necesității de a îndeplini următoarele condiții:

  • perioada de repetare a secvenței numerelor generate de RGPH nu trebuie să fie puternic (în procent) diferă de valoarea maximă posibilă a valorii blocului de 2 64;
  • valorile învecinate produse de RGPH ar trebui să difere una de cealaltă în fiecare pate, în caz contrar, sarcina de cristanalitică va fi simplificată;
  • RGPH trebuie să fie pur și simplu implementat atât hardware cât și software pe cele mai frecvente tipuri de procesoare, dintre care majoritatea sunt cunoscute că au un pic de 32 de biți.

Pe baza principiilor enumerate, creatorii GOST au proiectat un RGPH foarte reușit, care are următoarele caracteristici:

Unde C. 0 =1010101 16 ;

Unde C. 1 =1010104 16 ;

Indicele inferior din numărul de numere înseamnă sistemul său numeric, astfel încât constantele utilizate în acest pas sunt înregistrate într-un sistem de 16 RICHE.

A doua expresie are nevoie de comentarii, ca în textul GOST, este dat altceva:, cu aceeași valoare a constantei C. unu . Dar mai departe în textul standardului este dat un comentariu, care se dovedește a fi sub operația rămășiței modulului 2 32 -1 acolo Se înțelege că nu este aceeași ca și în matematică. Diferența este că, conform GOST (2 32 -1) mod.(2 32 -1) \u003d (2 32 -1) și nu 0. De fapt, simplifică implementarea formulei și o expresie corectă matematic pentru aceasta este dată mai sus.

  • perioada de secvență repetată pentru partea mai mică este de 2 32, pentru partea mai veche 2 32 -1, pentru întreaga secvență, perioada este de 2 32 (2 32 -1), dovada acestui fapt este destul de simplă, să se facă. Prima formulă a două este implementată pentru o echipă, a doua, în ciuda viziei sale aparente, pentru două comenzi pe toate procesoarele moderne pe 32 de biți - prima comandă este adăugarea obișnuită a modulului 2 32 cu memorarea bitului de transfer și A doua comandă adaugă bitul de transfer la valoarea rezultată.

Schema algoritmului de criptare în modul Gammation este prezentată în Figura 4, mai jos sunt explicate schemei:


Figura 4. Algoritmul pentru criptare (decriptare) de date în intervalul de rău.

Pasul 0.

Definește datele sursă pentru etapa principală a cripocremiei:

  • T. o (w) - o serie de date arbitrare deschise (criptate), supusă procedurii de criptare (decriptare), în cursul procedurii, matricea este supusă conversiei a 64 de biți în porțiuni;
  • S. syncopyushka. , Elementul de date pe 64 de biți necesară pentru inițializarea generatorului gamma;

Pasul 1

Transformarea inițială a sincopicilor efectuată pentru "randomizarea" sa, adică eliminarea modelelor statistice prezente în acesta, rezultatul este utilizat ca umplere inițială a RGPH;

Pasul 2.

Un pas al lucrării RGPH, implementarea algoritmului său recurent. În cursul acest pas mai in varsta ( S. 1) și cel mai tânăr ( S. 0) Părțile secvenței de date sunt produse independent unul de celălalt;

Pasul 3.

Haming. Următorul element pe 64 de biți dezvoltat de RGPH este expus la procedura de criptare pe ciclul 32-S, rezultatul este utilizat ca element gamma pentru criptare (decriptare) a următorului bloc de date deschise (criptate) de aceeași dimensiune .

Pasul 4.

Rezultatul funcționării algoritmului este o matrice criptată (decriptată) de date.

Următoarele sunt caracteristicile Gamming ca mod de criptare:

  1. Aceleași blocuri în gama deschisă a datelor vor fi date la criptate diferite blocuri ciphertice, care vor permite ascunderea identității lor.
  2. Deoarece suprapunerea gamma este procesată, criptarea blocului incomplet al datelor este ușor de făcut ca criptarea biților acestui bloc incomplet, pentru care sunt utilizați biții corespunzători ai blocului gamma. Deci, pentru a cripta un bloc incomplet în 1 biți în conformitate cu standardul ar trebui să utilizați cel mai tânăr bit de la blocul gamma.
  3. Syncocrust, utilizat atunci când este criptat, cumva trebuie transmis pentru utilizare la decodare. Acest lucru poate fi realizat în următoarele moduri:
  • depozitați sau transmite sincopyer împreună cu o matrice de date criptată, care va duce la o creștere a dimensiunii matricei de date atunci când este criptată pe dimensiunea sincopionerii, adică 8 octeți;
  • utilizați valoarea predefinită de sincronizare sau pentru ao produce sincron cu o sursă și un receptor pe o lege specifică, în acest caz nu există nicio modificare a dimensiunii matricei de date transmise sau stocate;

Ambele metode se completează reciproc, cât și în acele cazuri rare în care primul nu funcționează, cel de-al doilea, mai exotic poate fi utilizat. A doua metodă are o aplicare mult mai mică, deoarece este posibilă efectuarea unui sincopionel un predeterminat în cazul în care acest set de informații cheie este criptat cu o serie evident, nu mai mult decât o serie de date, care nu este atât de des. Generați sincronizarea sincronă la sursă, iar destinatarul matricei de date nu este, de asemenea, întotdeauna posibil, deoarece necesită o legare tare la nimic din sistem. Deci, forțând la prima vedere, ideea este folosită ca o picurare de sincronizare în sistemul de transmitere a mesajelor criptate, numărul mesajului transmis nu este potrivit, deoarece mesajul poate fi pierdut și nu mai ajunge la destinatar, în acest caz Va exista o vedere la sistemele de criptare sursă și receptor. Prin urmare, în cazul considerat, nu există nici o alternativă la transmiterea sincropropterelor împreună cu un mesaj criptat.

Pe de altă parte, puteți da, de asemenea, un exemplu invers. Să presupunem că criptarea datelor este utilizată pentru a proteja informațiile de pe disc și este implementat la un nivel scăzut, pentru a asigura accesul independent, datele sunt criptate de sectoare. În acest caz, este imposibil să se păstreze pulberea de sincronizare cu date criptate, deoarece dimensiunea sectorului nu poate fi modificată, dar poate fi calculată ca o funcție din numărul capului discului, numerele de cale (cilindru) și numerele sectorului pe pistă. În acest caz, sincopierul este atașat la poziția sectorului de pe disc, care nu se poate schimba cu greu fără reformatarea discului, care este, fără a distruge datele pe ea.

Modul Hamming are o altă caracteristică interesantă. În acest mod, biții de date de date sunt criptați independent unul de celălalt. Astfel, fiecare bit de ciphertext depinde de bitul corespunzător de text deschis și, desigur, numărul de secvență al bitului în matrice: . Aceasta implică faptul că schimbarea bitului de ciphertext la valoarea opusă va duce la o schimbare similară a textului deschis la opusul:

În cazul în care denotă inversat cu privire la t. Valoarea biților ().

Această proprietate oferă un atacator posibilitatea de a afecta biții de ciphertext pentru a face schimbări previzibile și chiar orientate către textul deschis corespunzător, obținut după decriptarea IT, fără a avea o cheie secretă. Aceasta ilustrează bine cunoscută în criptologie secretul și autenticitatea Estate Diverse Proprietăți sisteme criptografice . Cu alte cuvinte, proprietățile criptosistemului oferă protecție împotriva familiarizării neautorizate cu conținutul mesajului și de amendamentele neautorizate ale mesajului sunt independente și numai în unele cazuri se pot intersecta. Aceasta înseamnă că există algoritmi criptografici care asigură un anumit secret al datelor criptate și, în același timp, care nu protejează împotriva schimbărilor și invers, oferind autenticitatea datelor și, în nici un caz, limitarea posibilității de familiarizare cu acestea. Din acest motiv, proprietatea în cauză nu este considerată dezavantajul său.

Feedback Gaming.

Acest mod este foarte asemănător cu gama de gammation și diferă de ea numai prin metoda de producere a elementelor gamma - următorul element al gammei este produs ca rezultat al conversiei în ciclul de 32 s. Ciclul sincopian. Aceasta implică angajarea blocurilor - fiecare bloc de ciphertext în acest mod depinde de blocurile corespunzătoare și de toate textul deschis. Prin urmare, acest mod este numit uneori gamming cu blocuri de logodnă . În ceea ce privește durabilitatea cifrului, implicarea blocurilor nu are nicio influență.

Diagrama algoritmilor și decriptarea în intervalul de feedback este prezentată în figura 5 și datorită simplității sale în comentariile nu au nevoie.


Figura 5. Algoritmul pentru criptare (decriptare) de date într-un mod de joc de feedback.

Criptarea în modul de joc feedback are aceleași caracteristici ca criptarea în intervalul normal, cu excepția efectului distorsiunilor cu ciphertext la textul deschis corespunzător. Pentru a compara, scrieți funcțiile de decriptare bloc pentru ambele moduri menționate:

Hamming;

Feedback Gamling;

Dacă în intervalul normal de modificări ale anumitor biți de ciphertext afectează numai biții corespunzători ai textului deschis, apoi în modul de joc cu feedback, imaginea este oarecum mai complicată. Așa cum se poate observa din ecuația corespunzătoare, atunci când decodificați blocul de date în modul de joc feedback, unitatea de date deschisă depinde de blocurile corespunzătoare și anterioare ale datelor criptate. Prin urmare, dacă faceți distorsiuni într-un bloc criptat, atunci după decripție, vor fi distorsionate două blocuri de date deschise - corespunzătoare și de lângă el, iar distorsiunea în primul caz va fi același caracter ca în modul de joc de joc , și în cel de-al doilea caz - ca în modul de înlocuire simplă. Cu alte cuvinte, în unitatea de date deschisă corespunzătoare, aceleași biți vor fi distorsionate ca în blocul de date criptate, iar în următoarea unitate de date deschise toate biții independent unul de celălalt cu probabilitatea 1 / 2 Schimbați valorile.

Dezvoltarea imitației la matricea de date.

În secțiunile anterioare, am discutat impactul denaturării datelor criptate asupra datelor deschise corespunzătoare. Am constatat că atunci când este decriptat într-un mod simplu de înlocuire, unitatea de date deschisă corespunzătoare se dovedește a fi distorsionată în mod imprevizibil, iar atunci când decriptați unitatea în modul de joc, modificările sunt previzibile. În modul Gammation Feedback, două blocuri sunt distorsionate, una previzibilă și altă mod imprevizibilă. Acest lucru înseamnă că, din punctul de vedere al protecției împotriva impunerii unor date false, gama de jocuri este rea, iar modurile de înlocuire simplă și de joc cu 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 decodificate pot fi detectate numai în cazul redundanței acestor date, cu atât este mai mare gradul de redundanță, cu atât este mai probabil ca detecția distorsiunii. Foarte multă redundanță apare, de exemplu, pentru textele privind limbile naturale și artificiale, în acest caz, faptul că distorsiunea este detectată aproape inevitabil. Cu toate acestea, în alte cazuri, de exemplu, atunci când distorsionarea imaginilor de sunet digital comprimat, vom obține pur și simplu o altă imagine care să poată percepe urechea noastră. Distorsiunea în acest caz va rămâne de neegalat dacă, desigur, nu există informații priori despre caracterul sunetului. Ieșirea aici este: deoarece capacitatea unor moduri de criptare pentru detectarea distorsiunilor făcute la datele criptate se bazează în mod semnificativ pe prezența și redundanța datelor criptate, această abilitate nu este o proprietate imanentă a modurilor corespunzătoare și nu poate fi considerată ca fiind avantaj.

Pentru a rezolva problema detectării distorsiunii într-o matrice de date criptate cu o probabilitate dată în GOST, este furnizat un mod suplimentar de transformare criptografică - producția de imitava. Simpling este o combinație de control care depinde de datele deschise și de informațiile cheie secrete. Scopul utilizării imitovka este de a detecta toate schimbările aleatorii sau deliberate în gama de informații. Problema prezentată în paragraful anterior poate fi rezolvată cu succes prin adăugarea la datele IMITAVA criptate. Pentru un potențial atacator, următoarele două sarcini sunt practic nerezolvate dacă nu deține cheia:

  • calculând imitava pentru o anumită gamă deschisă de informații;
  • selectarea datelor deschise pentru o anumită imitava;

Schema algoritmului pentru producerea de imitavin este prezentată în figura 6.


Figura 6. Algoritmul de generare a imitației pentru matrice de date.

O parte din blocul obținut la ieșire este luată ca imitava, de obicei 32 de biți mai mic. La alegerea dimensiunii imitavei, este necesar să se țină seama de faptul că probabilitatea de a impune succesul de date false este egală cu 2 - | I. | Pentru o încercare de selecție, dacă un atacator nu are o metodă de selecție mai eficientă decât o simplă ghicire. Când utilizați imitația de 32 de biți în dimensiune, această probabilitate este egală cu

Discutarea algoritmilor criptografici ai GOST.

Cryptographic este rezistența GOST.

Atunci când alegeți un algoritm criptografic pentru utilizarea într-o anumită dezvoltare, unul dintre factorii de definire este durabilitatea acestuia, adică rezistență la încercările adversarului de ao dezvălui. Întrebarea de rigidizare a cifrului se uită mai aproape de două aspecte interdependente:

  • este posibil să dezvăluie complet acest cifru;
  • dacă da, cât de greu este greu de făcut practic;

Cipurile care sunt în general imposibil de dezvăluit sunt numite rezistente absolut sau teoretic. Existența unor astfel de cifre este dovedită de teorema Shannon, cu toate acestea, prețul acestei rezistențe este nevoia de a utiliza pentru a cripta fiecare mesaj cheie care nu este mai mic de dimensiunea mesajului în sine. În toate cazurile, cu excepția unui număr special, acest preț este excesiv, prin urmare, în practică, cifrele care nu au rezistență absolută sunt utilizate în principal. Astfel, cele mai comune sisteme de criptare pot fi dezvăluite pentru un timp finit sau, mai precis, pentru un număr finit de pași, fiecare dintre acestea fiind unele operațiuni peste numere. Pentru ei, conceptul de rezistență practică, exprimând dificultatea practică a dezvăluirii lor, este de cel mai important lucru. O măsură cantitativă a acestei dificultăți este numărul de aritmetică elementară și operații logiceAcest lucru trebuie să fie efectuat pentru a dezvălui cifrul, adică pentru o anumită ciphertext, cu o probabilitate care nu este mai mică decât valoarea specificată, definiți textul deschis corespunzător. În același timp, în plus față de matricea de date decodificată, criptanaltica poate fi localizată blocuri de date deschise și datele criptate corespunzătoare criptate sau chiar posibilitatea de a obține datele criptate corespunzătoare pentru orice date deschise date selectate - în funcție de enumerate și Multe alte condiții nespecificate disting tipurile individuale de criptoanaliză.

Toate criptosystemurile moderne sunt construite pe principiul Kirchoff, adică secretul mesajelor criptate este determinat de secretul-cheie. Aceasta înseamnă că, chiar dacă algoritmul de criptare în sine este cunoscut pentru criptanalitică, unul, totuși, nu este capabil să decripteze mesajul dacă nu are cheia corespunzătoare. Ciporul este considerat bine conceput dacă nu există nicio metodă de ao deschide într-un mod mai eficient decât plin de busting pe tot parcursul spațiului cheie, adică. Pentru toate cheile posibile. Este probabil ca GOST să îndeplinească acest principiu - în anii de cercetare intensivă, nu a fost propusă nicio modalitate eficientă de criptanaliză. În ceea ce privește perseverența, el este o mare parte din ordinele de mărime care depășesc fostul standard american de criptare, DES.

Vizitatorii utilizează o cheie de 256 de biți, iar volumul spațiului cheie este 2 256. Nici unul dintre viitorul curent sau presupus în viitorul curent dispozitiv electronic Nu puteți ridica cheia pentru timpul mai mic de sute de ani. Această valoare a devenit standardul real al dimensiunii cheie pentru criptoalgoritmii simetrici în aceste zile ", astfel încât noul standard de criptare din SUA o suportă, de asemenea. Fostul standard american, DES cu dimensiunea reală de 56 de biți și volumul spațiului-cheie este de numai 2 56 nu mai este destul de persistentă în lumina posibilităților de calcul modern. Acest lucru a fost demonstrat la sfârșitul anilor 90 de mai multe încercări de succes de hacking des prin suprapunerea. În plus, DES a fost susceptibil la modalități speciale de criptanaliză, cum ar fi diferențial și liniar. În acest sens, DES poate fi reprezentată mai degrabă o cercetare sau un interes științific decât practic. În 1998, slăbiciunea sa criptografică a fost recunoscută oficial, Institutul Național al Standardelor SUA a recomandat utilizarea criptării triple pe des. Și la sfârșitul anului 2001, un nou standard american de criptare a fost aprobat oficial, AES, construit pe alte principii și liber de dezavantajele predecesorului său.

Note privind arhitectura GOST.

Este bine cunoscut faptul că standardul de criptare internă este un reprezentant al unei întregi familii de cipuri construite pe aceleași principii. Cea mai faimoasă "relativă" este fostul standard american de criptare, algoritmul des. Toate aceste cifre, cum ar fi GOST, conțin trei algoritmi de nivel. Există întotdeauna un anumit "pas de bază", pe baza cărora "ciclurile de bază" sunt similare, iar pe ele sunt construite proceduri practice pentru criptare și dezvoltare imitovka. Astfel, specificul fiecăruia dintre cifrele acestei familii au încheiat în etapa sa principală, mai precis, chiar și în partea sa. Deși arhitectura grupurilor de blocuri clasice, la care aparține Gost, este departe în afara subiectului acestui articol, merită să spunem câteva cuvinte despre ocazia ei.

Algoritmi "Pașii de bază ai criptopreformării" pentru cipuri precum GOST, construite în mod identic, iar această arhitectură se numește rețeaua de protecție echilibrată (Rețeaua Balanced Feistel) cu numele unei persoane care i-a oferit pentru prima dată. Circuit de conversie a datelor pe un singur ciclu sau, cum să-l numiți, rundă prezentat în figura 7.


Figura 7. Conținutul pasului principal de criptoprement pentru blocarea blocurilor ca GOST.

Intrarea pasului principal servește un bloc de dimensiuni uniforme, dintre care jumătate mai vechi și mai tineri sunt procesate separat unul de celălalt. În timpul convertirii, jumătatea mai mică a blocului este plasată în locul vârstnicului, iar cel mai mare, combinat cu funcționarea ruptă " excluzând sau »Cu rezultatul calculării unei anumite funcții, în locul mai mic. Această caracteristică care ia un argument este o jumătate scăzută a elementului de informații bloc și cheie ( X.) este o parte semnificativă a cifrului și se numește caracteristică de criptare . Din diferite motive, sa dovedit a fi benefică pentru a împărți blocul criptat în două caractere în dimensiune: N. 1 |=|N. 2 | - Acest fapt reflectă cuvântul "echilibrat" în titlul de arhitectură. Cu toate acestea, rețelele de criptare dezechilibrate sunt de asemenea folosite din când în când, deși nu atât de des ca fiind echilibrate. În plus, consistența consistenței cifrului necesită ca mărimea elementului-cheie să nu fie mai mică de jumătate din bloc: în intestin, toate cele trei dimensiuni sunt de 32 de biți .

Dacă este aplicată în schema de etapă principală a algoritmului GOST, devine evident că blochează algoritmi 1,2,3 (vezi figura 1) determină calculul funcției sale de criptare și blocurile 4 și 5 setați formarea ieșirii blocul pasului principal pe baza conținutului unității de intrare și a funcțiilor de criptare. În detaliu despre arhitecturile grupurilor de blocuri moderne, cu o cheie secretă, puteți citi în munca clasică sau, în formă adaptată, în munca mea.

În secțiunea anterioară, am comparat deja des și GOST prin durabilitate, acum le vom compara cu privire la conținutul funcțional și comoditatea implementării. În ciclurile de criptare GOST, etapa principală este repetată de 32 de ori, pentru des, această valoare este 16. Cu toate acestea, funcția de criptare GOST este mult mai ușoară pentru funcția similară AR, în care există multe permutări de biți neregulate. Aceste operațiuni sunt implementate extrem de ineficient pe procesoare moderne nespecializate. GOST nu conține astfel de operațiuni, deci este mult mai convenabil pentru implementarea software-ului.

Niciunul dintre proiectele Intel X86 examinate de autorul implementărilor pentru platforma Intel X86, chiar și jumătate din performanța propusă în atenția dvs. în acest articol despre implementarea GOST în ciuda ciclului cel mai scurt. Toate cele de mai sus sugerează că dezvoltatorii GOST au învățat atât aspecte pozitive, cât și negative ale DESA, iar posibilitățile actuale și promițătoare ale criptanasalisului sunt mai realizate. Cu toate acestea, pentru a lua DES ca bază la compararea performanței implementărilor cipicelor nu mai este relevantă. Noul standard european de criptare este mult mai bun în același timp - cu aceeași dimensiune GOST a cheii în 256 de biți, AES funcționează mai repede cu aproximativ 14% - aceasta trebuie comparată cu numărul de "operațiuni elementare". În plus, GOST este practic în măsură să paralel, iar AES are posibilitatea în acest sens mult mai mult. La unele arhitecturi, acest avantaj al AES poate fi mai puțin pe alții - mai mult. Deci, pe procesorul Intel Pentium ajunge la 28%. Detaliile pot fi găsite în.

Cerințe de calitate și surse-cheie.

Nu toate tastele și tabelele de înlocuire oferă durabilitate maximă de cifrare. Pentru fiecare algoritm de criptare, există criterii de evaluare pentru informații cheie. Deci, pentru algoritmul des, existența așa-numitei " chei slabe. "Când se utilizează conexiunea dintre datele deschise și criptate nu este mascată ca suficient, și cifrul este relativ pur și simplu deschis.

Un răspuns cuprinzător la întrebarea criteriilor de calitate a cheilor și a tabelelor de substrat GOST, dacă puteți ajunge oriunde în monoterapie, atunci numai dezvoltatorii algoritmului. Datele corespunzătoare nu au fost publicate în imprimare deschisă. Cu toate acestea, în conformitate cu procedura stabilită, datele cheie obținute de la o organizație autorizată ar trebui utilizate pentru criptarea informațiilor referitoare la organizarea marginală. Indirect Acest lucru poate indica prezența tehnicilor cheie de verificare a datelor pentru "cusături". Dacă prezența cheilor slabe în oaspete este o întrebare de discuție, atunci prezența nodurilor slabe de înlocuire nu este nicio îndoială. Evident, tabelul de substituție "trivial", conform căruia orice valoare este înlocuită de el însuși, este atât de slabă încât, atunci când o folosesc, cifrul este trezit elementar, indiferent de cheia.

După cum sa menționat deja mai sus, criteriile de evaluare a informațiilor cheie nu sunt disponibile, dar unele considerente generale pot fi exprimate în contul lor.

Cheie

Cheia trebuie să fie o serie de biți independenți din punct de vedere statistic acceptând egal cu probabilitatea de valoare de 0 și 1. Este imposibil să excludă complet faptul că unele valori cheie specifice pot fi "slabe", adică cifrul nu poate oferi un anumit nivel de rezistență în cazul utilizării lor. Cu toate acestea, probabil, proporția acestor valori în masa totală a tuturor cheilor posibile este neglijabilă. În momentul în care studiile intensive ale cifrei nu au dezvăluit încă o singură cheie pentru niciun fel de tabelele de înlocuire cunoscute (adică FAPSI). Prin urmare, cheile produse folosind un anumit senzor de numere cu adevărat aleatorii vor fi calitative cu o probabilitate care diferă de la unitate la o valoare neglijabilă. Dacă cheile sunt generate utilizând un generator de număr pseudo-aleatoare, generatorul utilizat trebuie să furnizeze caracteristicile statistice de mai sus și, în plus, au o rezistență criptică ridicată, nu mai mică decât cea a GOST însuși. Cu alte cuvinte, sarcina de a determina elementul absent generat de generatorul de secvențe a elementelor nu ar trebui să fie mai ușor decât sarcina de a deschide cifrul. În plus, pot fi utilizate diferite criterii statistice pentru a rejunga cheile cu caracteristici statistice proaste. În practică, două criterii sunt de obicei suficiente - pentru a verifica distribuția echilibrată a biților-cheie între valorile 0 și 1, criteriul Pearson ("pătratul Hee") este de obicei utilizat și pentru a verifica independența biților-cheie, criteriile seriei. Putem citi despre criteriile menționate în manuale sau cărți de referință privind statisticile matematice.

Cea mai bună abordare a dezvoltării cheilor ar fi utilizarea senzorilor hardware MC, dar acest lucru nu este întotdeauna acceptabil pentru considerente economice. Atunci când generați o gamă mică de informații cheie, o alternativă rezonabilă la utilizarea unui astfel de senzor este și este utilizată pe scară largă în practică metoda "ruletă electronică", când următoarea porțiune generată a biților aleatorii depinde de timpul de presare a cheii operatorului pe tastatura computerului. În această schemă, sursa datelor aleatorii este un utilizator de computer, mai precis - caracteristicile de timp ale reacției sale. În această presă, numai câțiva biți de date aleatorii pot fi dezvoltate în același timp, astfel încât viteza totală a informațiilor cheie este mică - până la mai mulți biți pe secundă. Evident, această abordare nu este potrivită pentru margini mari de chei.

În cazul în care este necesar să se elaboreze o cantitate mare de informații cheie, este posibilă utilizarea diferitelor senzori software de numere pseudo-aleatoare și este foarte răspândită. Deoarece există criptoscopie ridicată, utilizarea cifrei în sine, deoarece este folosirea schemei în sine ca ea, este pur și simplu "tăierea" dimensiunilor amestecate în "bucăți" de dimensiunea dorită, pentru GOST - 32 octeți . Desigur, pentru această abordare, vom avea nevoie de o "cheie principală", pe care o putem obține metoda electronică de ruletă descrisă mai sus, iar cu el utilizând cifrul în modul Gamma Generator, obținem o serie de informații cheie de care avem nevoie. Deci, aceste două moduri de a dezvolta cheile, "manual" și "algoritmic", lucrează în tandem, complementalându-se reciproc. Schemele de generare cheie din sistemele criptografice "bugetare redusă" sunt aproape întotdeauna construite pe acest principiu.

Înlocuirea tabelului

Tabelul de înlocuire este un element cheie pe termen lung, adică acționează cu o perioadă mult mai lungă decât o cheie separată. Se presupune că este comun tuturor site-urilor de criptare într-un sistem de protecție criptografică. Chiar și cu o încălcare a vieții private a mesei, durabilitatea cifră rămâne extrem de ridicată și nu scade sub limita admisă. Prin urmare, nu există nevoie specială de păstrare a secretului de masă, iar în majoritatea aplicațiilor comerciale ale GOST se face. Pe de altă parte, tabelul de substituție este un element critic pentru a asigura durabilitatea întregului cifru. Alegerea unui tabel necorespunzător poate duce la faptul că cifrul va fi ușor de deschis prin metode cunoscute de criptoanaliză. Criterii pentru dezvoltarea nodurilor de înlocuire - Misterul pentru șapte sigilii și Fapsi este puțin probabil să îl împărtășească cu un public în cel mai apropiat viitor previzibil. În cele din urmă, pentru a spune dacă acest tabel special de substituții este bun sau rău, este necesar să se efectueze o cantitate imensă de lucru - multe mii de oameni și ore auto. Odată ce tabelul selectat și utilizat este supus înlocuirii în acel și numai dacă cifrul cu ajutorul său sa dovedit a fi vulnerabil la unul sau la alt tip de criptanaliză. prin urmare cea mai buna alegere Pentru un utilizator obișnuit, cifrul va lua una din mai multe mese care au devenit domeniu public. De exemplu, de la standardul pentru funcția Hash, este "Centrobankovskaya"; Informațiile despre aceste tabele pot fi găsite în imprimare deschisă și chiar pe internet, dacă arătați bine.

Pentru cei care nu sunt folosiți pentru a merge ușor, schema generală de obținere a tabelelor de înaltă calitate este mai jos:

  1. Folosind o tehnică, producem un set de opt noduri de înlocuire cu caracteristicile garantate de neliniaritate. Există câteva astfel de tehnici, una dintre ele este utilizarea așa-numitelor funcții îndoite.
  2. Verificați îndeplinirea celei mai simple "criterii de calitate" - de exemplu, cele publicate pentru nodurile de înlocuire des. Iată câteva considerații mai generale în ceea ce privește acest lucru: Fiecare nod de substituție poate fi descris de patru funcții logice din patru argumente logice. Dacă aceste funcții înregistrate forma minimă (adică cu o lungime minimă posibilă de exprimare) nu va fi suficient de suficientă, un astfel de nod de înlocuire este respins. În plus, funcțiile individuale din întreaga masă de substituție ar trebui să difere unul de celălalt pentru a fi suficient. În această etapă, multe mese cu valoare de joasă în cunoștință de cauză sunt eclipsate.
  3. Pentru cifre cu tabelele selectate diverse modele Rundă, corespunzătoare diferitelor tipuri de criptoanaliză și măsura caracteristicile corespunzătoare "profilului". Deci, pentru criptoanaliza liniară, construirea unui analog statistic liniar al rundei de criptare și calculați caracteristica "profilul" - indicatorul de neliniaritate. Dacă se dovedește a fi insuficientă, tabelul de înlocuire este respins.
  4. În cele din urmă, folosind rezultatele paragrafului anterior, expuneți cifrul cu ajutorul cercetării intensive pe care le-ați ales - încercați să criptanya prin toate metodele cunoscute. Această etapă este cea mai dificilă și mai consumatoare de timp. Dar dacă se face calitativ, atunci cu un grad ridicat de probabilitate, se poate afirma că cifrul cu mesele pe care le alegeți nu va fi deschis cu muritori simpli și nu este exclus, nu va fi pe dinții speciali Servicii.

Este posibil, totuși, este mult mai ușor de făcut. Lucrul este că cele mai mari runde din cifru, efectul mai puțin asupra durabilității întregului cifru au caracteristicile rezistenței unei runde. Guest Ahm 32 Runda este mai mult decât aproape toți cifrele cu arhitectură similară. Prin urmare, pentru majoritatea aplicațiilor casnice și comerciale, este suficient să se obțină noduri de substituții ca rearanjamente aleatorii independente de numere de la 0 la 15. Acest lucru poate fi implementat practic, de exemplu, amestecând o punte de la șaisprezece cărți, fiecare dintre acestea fiind fixată una dintre valorile intervalului specificat.

În ceea ce privește tabelul de înlocuire, este necesar să se observe un alt fapt interesant. La ciclurile reversibile de criptare "32-s" și "32-p", nu este necesar ca nodurile înlocuirilor să fie permutări de numere de la 0 la 15. Totul funcționează chiar dacă există elemente repetate în nodul de substituție și Înlocuirea, ireversibilă, dar în acest caz rezistența la cifră este redusă. De ce acest lucru este exact cazul, nu este luat în considerare în acest articol, dar este ușor să vă asigurați în acest fapt. Pentru a face acest lucru, este suficient să încercați mai întâi criptarea, apoi decriptați blocul de date utilizând o astfel de tabelă de substituție "defectă", a cărei noduri conțin valori repetate.

Variații pe subiectul GOST

Foarte adesea, pentru utilizarea în sistemul criptografic de protecție a datelor, un algoritm este necesar mai mare decât cel al performanței GOST a implementării și acest lucru nu necesită o astfel de rezistență criptică ridicată. Un exemplu tipic al acestor sarcini sunt diferite tipuri de sisteme de tranzacționare electronice, gestionând sesiunile comerciale în timp real. Aici, din algoritmii de criptare utilizat, este necesar să descifrați datele operaționale ale sistemului (datele privind aplicațiile cererilor, despre tranzacții etc.), pentru expirarea acesteia, aceste date sunt de obicei deja inutil pentru intruși. Cu alte cuvinte, persistența garantată este necesară doar pentru câteva ore - aceasta este durata tipică a sesiunii de tranzacționare. Este clar că utilizarea unui GOST cu drepturi depline în această situație ar fi împușcat de la arme pe vrăbii.

Cum se face acest lucru și cazuri similare pentru a crește viteza de criptare? Răspunsul se află pe suprafață - utilizați modificarea cifrei cu un număr mai mic de pași principali (runde) în ciclurile de bază. De câte ori reducem numărul de runde de criptare, viteza crește în același timp. Schimbarea specificată poate fi realizată în două moduri - o scădere a lungimii cheii și o scădere a numărului de "a ciclurilor de vizualizare" ale cheii. Amintiți-vă că numărul de pași fixați în ciclurile de criptare de bază este egal N.=n · M.Unde n. - numărul elementelor pe 32 de biți din cheie, m. - numărul de cicluri care utilizează elemente cheie în standard n.=8, m.\u003d 4. Puteți reduce oricare dintre aceste numere, dar cea mai simplă opțiune - Reduceți lungimea cheii, nu atingerea schemelor de utilizare.

Este clar că plata pentru accelerare va fi redusă rezistența la cifră. Principala dificultate constă în faptul că este destul de dificil să evalueze mai mult sau mai puțin cu precizie amploarea acestei reduceri. Evident, singurul metoda posibilă Faceți-o - pentru a studia opțiunile de cifre cu cicluri de conversie criptografice reduse "de către programul complet" Este clar că, în primul rând, este nevoie de utilizarea informațiilor închise, pe care numai dezvoltatorii GOST, și, în al doilea rând, sunt foarte laborioși. Prin urmare, vom încerca acum să evaluăm, foarte și foarte nepoliticos, procedând numai de la modelele generale.

În ceea ce privește stabilitatea cipului la metodele "extinse" hacking, adică la atacul "Overhead", că aici este mai mult sau mai puțin clar: cheia a 64 de biți este undeva pe punctul de acces la acest tip de atac, Cifra cu o cheie de 96 de biți și mai mare (amintiți-vă că cheia trebuie să conțină un număr întreg de elemente pe 32 de biți) este destul de rezistent la acesta. Într-adevăr, acum câțiva ani, fostul standard de criptare a SUA, des, a fost hacked în mod repetat de copleșitoare, - la început a fost hacked de o rețea de calcul, organizată pe baza rețelei globale de Internet și apoi specializată, adică. Concepute special pentru această mașină de calcul. Vom aproba faptul că versiunea standard a GOST pentru implementarea software-ului pentru procesoarele moderne este de 5wimes mai rapid des. Apoi, "GOST redus" de 8 rotunde va funcționa de 16 ori mai rapid decât DES. De asemenea, luăm acest lucru, pentru trecut de la momentul hacking des, performanța tehnologiei de calcul conform legii lui Moore a crescut patru dintre ele. Obținem, în consecință, verificând acum o cheie de 64 de biți pentru "GOST redusă" cu opt cicluri, este de 64 de ori mai rapidă decât într-o singură dată, testul unei chei des a fost efectuată. Astfel, avantajul acestei opțiuni a GOST înainte de DES prin complexitatea atacului transversal este redus de la 2 64-56 \u003d 2 8 \u003d 256 până la 256 / 64 \u003d de 4 ori. Sunt de acord, aceasta este o diferență foarte iluzorie, aproape nimic.

Este mult mai dificil să se evalueze stabilitatea modificărilor statului slăbit la metodele "intense" ale criptanalizei. Cu toate acestea, modelul general poate fi urmărit aici. Faptul este că caracteristicile "profilului" ale multor specii cele mai puternice de criptanaliză depind exponențial de la numărul de runde de criptare. Deci, pentru criptoanaliza liniară (LKA) va fi o caracteristică liniară L. :

unde C. Și - Constanți, R este numărul de runde. Există o dependență similară pentru criptanalizarea diferențială. În "sensul fizic", toate caracteristicile acestui tip - probabilitatea. De obicei, cantitatea de date sursă necesare pentru criptanaliză și complexitatea acestuia este invers proporțională cu astfel de caracteristici. Rezultă că aceste rate de intensitate a forței de muncă cresc exponențial cu o creștere a numărului de etape de criptare de bază. Prin urmare, cu o scădere a numărului de runde, complexitatea celor mai cunoscute tipuri de analize se va schimba ca, - foarte aproximativ și aproximativ, este rădăcina acestui grad de la suma 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 rezistență și astăzi este rezistentă la toate speciile cunoscute de criptanaliză, inclusiv diferențiale și liniare. În ceea ce privește LKA, aceasta înseamnă că, pentru comportamentul său de succes, sunt necesare mai multe perechi "blocul deschis este un bloc criptat" decât "există în natură", adică mai mult de 2,64. Având în vedere cele de mai sus, acest lucru înseamnă că pentru o LCA de succes a GOST-ului de 16 rotunde, nu veți avea nevoie de mai puține blocuri sau 25 de octeți sau 32 GB de date și pentru cel puțin 8 blocuri sau 2 19 octeți sau 0,5 octeți sau 0.5 Mb.

Concluziile din toate cele de mai sus sunt date în tabelul următor, care generalizează caracteristicile opțiunilor GROA reduse.

Numărul rotundului Dimensiunea cheii, biți Indexul de acțiune rapidă Caracteristici de cifre probabile (estimare foarte brută)
24 192 1,33 Durabil la cele mai renumite tipuri de ka sau să fie pe punctul de a stabili stabilitatea. Implementarea practică a CA este imposibilă datorită cerințelor ridicate pentru datele inițiale și complexitatea.
16 128 2 Teoretic instabil de anumite tipuri de criptoanaliză, dar implementarea lor practică în majoritatea cazurilor este dificilă datorită cerințelor mari pentru datele inițiale și intensitatea forței de muncă.
12 95 2,67 Instabili față de unele tipuri celebre de criptoanaliză, dar este potrivit pentru secretul unor cantități mici de date (până la zece sute de krib) pentru o perioadă scurtă de timp.
8 64 4 Instabili față de unele tipuri renumite de criptoanaliză, dar este potrivit pentru secretul unor cantități mici de date (până la zeii kb) pentru o perioadă scurtă de timp.

Ultimele două opțiuni, cu 12 și 8 runde, sunt capabile să ofere o protecție foarte limitată în timp. Utilizarea lor este justificată numai în sarcini, unde este necesară numai secretul pe termen scurt al datelor închise, aproximativ câteva ore. O posibilă zonă de aplicare a acestor opțiuni slabe de cifre este închiderea traficului UDP de sisteme electronice de tranzacționare stoc. În acest caz, fiecare pachet de date (datagram, media "d" din abrevierea UDP) este criptată pe o tastă separată pe 64 de biți, iar cheia însăși este criptată pe o cheie de sesiune (cheie a cărei zonă este o sesiune de comunicare între două computere) și este transmisă cu date.

Înainte de a completa variantele de GOST reduse, voi spune că toate considerațiile de mai sus sunt extrem de speculative. Standardul oferă persistență numai pentru o opțiune de 32 de rotunde. Și nimeni nu vă poate oferi garanții că stabilitatea variantelor reduse ale cifrei de a sparge va fi schimbată mai sus. Dacă încă ați decis să le folosiți în evoluțiile dvs., amintiți-vă că ați pășit pe un pământ foarte moale, care poate veni din picioare în orice moment. Dacă întrebările cu viteză de criptare sunt în curând critice pentru dvs., poate că merită să ne gândim să utilizați un cip mai rapid sau mai puternic? O altă considerație pentru care ar trebui făcută este că variantele de gost slabe vor fi la fel de susceptibile la calitatea nodurilor de înlocuire utilizate.

Întrebarea luată în considerare are o parte inversă. Ce se întâmplă dacă rata de criptare este non-critică, iar cerințele pentru rezistență sunt foarte strânse? Puteți crește rezistența GOST în două moduri - îl numiți în mod convențional "extins" și "intens". Primul nu este nimic mai mult decât o creștere simplă a numărului de runde de criptare. Nu este cu totul clar pentru mine de ce poate avea nevoie de ea, deoarece standardul intern și fără acest lucru oferă rezistența necesară. Cu toate acestea, dacă suferiți de paranoia mai multe niveluri necesare (și toți "avocații de informații" pur și simplu obligați să sufere, această condiție de profesionalitate este, întrebarea este doar în gradul de cazuri :), acest lucru vă va ajuta să vă liniștiți oarecum. Dacă nu sunteți sigur de această KGB-Shifra sau de tabelul de înlocuire pe care îl utilizați, doar dublu, configurat, etc. Numărul de runde - Selectați multiplicitatea bazată pe severitatea cazului dvs. Această abordare vă permite să măriți cu adevărat durabilitatea cifrului, - dacă criptanalizarea anterioară a fost pur și simplu imposibilă, acum este imposibil în piață!

Mai dificil și interesant este întrebarea și dacă este posibilă creșterea durabilității cifrei, fără a schimba numărul și structura etapelor principale de criptare. Indiferent cât de surprinzător, răspunsul la acest lucru este pozitiv, deși mergem din nou pe solul de speculații. Faptul este că, în oaspete, în etapa principală a transformării, se presupune că este înlocuită cu 4 de 4 biți, iar în practică (aceasta este mai mult în față) Toate implementările software îndeplinesc toaletele de schimb, adică 8-8 biți - acest lucru se face pentru considerații de eficiență. Dacă proiectați imediat un astfel de înlocuitor ca pe 8 biți, atunci vom îmbunătăți semnificativ caracteristicile unei runde. În primul rând, caracteristica sau indicatorul "Diffusion" a "Avalanche" va crește - un bit al datelor sursă și / sau cheia va afecta numărul mai mare de biți de rezultat. În al doilea rând, pentru noduri mari de substituție, puteți obține caracteristici diferențiale și liniare mai mici, reducând astfel expunerea la cifrul de același nume de criptanaliză. Mai ales relevante pentru ciclurile de GOST reduse, iar pentru 8 și 12 opțiuni rotunde, un astfel de pas este pur și simplu necesar. Acest lucru compensează oarecum pierderea perseverenței în ele din reducerea numărului de runde. Ceea ce face dificilă utilizarea acestei recepții - aceasta este proiectarea unor astfel de noduri de înlocuire "mărită" va trebui să fie independent. Și, de asemenea, faptul că nodurile mai mari sunt în general concepute considerabil mai dificile decât dimensiunea mai mică.

Utilizarea non-standard a standardului.

Desigur, scopul principal al Cryptoalgoritm Gost este criptarea și datele imitivore. Cu toate acestea, ei pot găsi și alte aplicații legate, în mod natural, cu protecție a informațiilor. Spuneți pe scurt despre ei:

1. Pentru criptarea în modul Gammation, GOST prevede dezvoltarea unei gamme criptografice - o secvență de biți cu caracteristici statistice bune cu rezistență criptică ridicată. În plus, această gamma este utilizată pentru a modifica datele deschise, rezultând date criptate de date. Cu toate acestea, aceasta nu este singura aplicare posibilă a intervalului criptografic. Faptul este că algoritmul producției sale este un generator de secvență al numerelor pseudo-aleatoare (GPPSH) cu caracteristici excelente. Desigur, nu este necesar să se utilizeze un astfel de GPPSH unde sunt necesare numai caracteristicile statistice ale secvenței produse, iar criptoscopul nu este necesar, nu foarte rezonabil - există generatoare mult mai eficiente pentru aceste cazuri. Dar pentru diferite aplicații legate de protecția informațiilor, o astfel de sursă va fi în mod corespunzător:

  • După cum sa menționat mai sus, gamma poate fi folosită ca "materii prime" pentru a genera taste. Pentru aceasta trebuie doar să obțineți un segment al gamma a lungimii dorite - 32 de octeți. În acest fel, cheile pot fi făcute după cum este necesar și nu vor trebui să fie stocate - dacă este nevoie de o astfel de cheie, va fi suficientă pentru a lucra suficient. Acesta va fi necesar doar să ne amintim cum a fost inițial cheia care a fost dezvoltată, care a folosit sincronul și de la care octetul gamma produs a început cheia. Toate informațiile, cu excepția cheii, nu sunt necesare. Această abordare vă va permite să controlați cu ușurință un sistem cheie destul de complicat și ramificat folosind o singură "cheie principală".
  • Similar cu cele anterioare, gama poate fi utilizată ca sursă "materii prime" pentru a genera parole. Este posibil să existe o întrebare, de ce trebuie să le generați, nu este mai ușor cum trebuie să le inventați. Eșecul unei astfel de abordări a fost demonstrat în mod clar de o serie de incidente din rețelele de calculatoare, cea mai mare din care a fost paralizia zilnică de internet în noiembrie 1988, cauzată de "viermele lui Morris". O modalitate de a pătrunde în programul rău intenționat la computer a fost selectarea parolelor: Programul a încercat să intre în sistem, să se ocupe în mod constant de parolele din lista sa internă de câteva sute și într-o proporție semnificativă a reușit să o facă. Fantezia unei persoane pentru a inventa parolele a fost foarte slabă. De aceea, în acele organizații în care securitatea este plătită atenția, parolele generează și distribuie utilizatorii administrator de sistem Siguranță. Dezvoltarea parolelor este ușor complicată decât dezvoltarea cheilor, deoarece gama binară "brută" trebuie transformată într-o formă de simbol și nu doar "tăiat" în bucăți. În plus, pot fi eliminate valorile individuale pentru a asigura o probabilitate egală de apariție a tuturor caracterelor alfabet în parolă.
  • O altă modalitate de a utiliza Gama Cryptografică este garantată pentru a consolida datele pe medii magnetice. Faptul este că, chiar și atunci când se suprascrie informații despre transportatorul magnetic, rămân urme de date anterioare, ceea ce poate restabili examinarea relevantă. Pentru a distruge aceste urme, această suprascriere trebuie efectuată în mod repetat. Sa dovedit că ar fi necesară suprascrierea informațiilor cu privire la transportator mai puțin de ori, dacă cu o astfel de procedură de utilizare a datelor aleatorie sau pseudo-aleatoare, care vor rămâne experți necunoscuți care încearcă să restabilească informațiile încălzite. Gamma Cipher aici va fi la fel de imposibil.

2. Nu numai gamma criptografică, ci și transformarea criptografică în sine, poate fi utilizată pentru nevoile care nu sunt direct legate de criptare:

  • Știm că una dintre aceste opțiuni pentru utilizarea GOST este dezvoltarea imitavavelor pentru matrice de date. Cu toate acestea, pe baza oricărui cifră bloc și GOST, inclusiv, este destul de ușor să se construiască o schemă de calculare a unei funcții hash cu o singură cale, numită și MDC în literatură, care în diferite surse este descifrate ca codul de detectare a modificărilor / manipulări (M.odificare / M.anipulare. D.etecție. C.oDE) Sau mesajul digest (M.esesage. D.iGEST. C.oDĂ). Primul decodare a apărut în literatură mult mai devreme, al doilea, mai scurt, cred că am venit cu cei care nu au reușit să-și amintească primul :) - a fost o glumă. MDC poate fi utilizat direct în sistemele de imitagator ca un analog al imitavantajului, nu, de la cheia secretă. În plus, MDC este utilizat pe scară largă în schemele de semnături digitale electronice (EDS), deoarece majoritatea acestor scheme sunt proiectate astfel încât să semneze un bloc de date convenabil de dimensiuni fixe. După cum este bine cunoscut, standardul Federației Ruse pentru calcularea funcției hash hasilated GOST P34.11-94 este construit pe baza standardului GOST 28147-89.
  • Este mai puțin cunoscută că, pe baza oricărui cifră bloc, iar GOST include, o schemă EDS complet funcțională poate fi construită, cu o semnătură cheie secretă și o combinație de inspecție deschisă. Din mai multe motive, această schemă nu a primit o distribuție practică pe scară largă, dar în unele cazuri este încă considerată o alternativă foarte atractivă la schemele dominante "matematice" ale EDS.

Literatură

Sisteme de procesare a informațiilor. Protecție criptografică. Algoritmul pentru transformarea criptografică GOST 28147-89. Stat Com. URSS conform standardelor, M., 1989. FTP://ftp.wtc-aral.ru/pub/en.crypt/gost-28147
Shannon Claude. Teoria matematică a sistemelor secrete. În colecția de "lucrări la teoria informațiilor și cibernetice", M., IL, 1963, p. 333-369. http://www.enlight.ru/crypto/articles/shannon/shann__i.htm.
Anunțând aprobarea standardului federal de procesare a informațiilor (FIPS) 197, standard de criptare avansată (AES), Registrul Federal Vol. 66, Nu. 235 / Joi, 6 decembrie 2001 / Notificări, PP 63369-63371. http://csrc.nist.gov/encryption/aes/
Fayastel Horst. Criptografia și securitatea computerului. Traducerea A. rinokuburov de Horst Feistel. Criptografia și confidențialitatea calculatorului, americanul științific, mai 1973, voi. 228, Nu. 5, pp. 15-23. http://www.enlight.ru/crypto/articles/feistel/feist_i.htm.
Schnayer Bruce. Criptografie aplicată. A doua ed. Protocoale, algoritmi și texte sursă în limba C., M., "Triumf", 2002 http://www.ssl.stu.neva.ru/psw/crypto/appl_rus/appl_cryp.htm
Meneze Alfred, Van Oorschot Paul, Vanstone Scott. Manual de criptografie aplicată. TTP: //www.cacr.math.uwaterloo.ca/hac/
Vinokurov Andrei. Cum este cifrul blocului? Manuscris. http://www.enlight.ru/crypto/articles/vinokurov/blcyph_i.htm.
Vinokurov Andrey. Probleme de criptografie pentru e-mailurile online de bytes Infualizate. http://www.enlight.ru/crypto/articles/ib/ib.htm.
Andrey Vinokurov, Aplică Eduard. Textul raportului "privind implementarea software a standardelor de criptare a Federației Ruse și a Statelor Unite", Conferința privind informatizarea, Moscova, Mephi, 28-29 ianuarie 2001. Publicat în materiale de conferințe.
Tehnologia de informație. Protecția informațiilor criptografice. Funcția Hatch GOST R34.11-94, Gosstandart RF, M., 1994.

Termenul "performanță procesor" este cunoscut în societate reprezintă un parametru obiectiv, calculat care este măsurat în flops. Cu toate acestea, majoritatea măsoară-o în Gigaherții, în nimic, crezând că acest lucru este același. Termenul "performanță de cod" nu cunoaște pe nimeni, și explicați imediat de ce.

Motivul este că tocmai am venit cu el și până nu am spus nimănui. Cu toate acestea, productivitatea codului, precum și performanța procesorului, are caracteristici obiective care pot fi măsurate. Acest articol este că productivitatea codului efectuat de miezul procesorului.

Care este măsurarea performanței codului? De când am vorbit primul care vorbește despre asta, atunci o voi măsura în RTT nave din dreapta recorderii;).

Acum serios. În procesoarele moderne, principalele transformări sunt acțiuni pe numere pe 32 de biți, orice altceva și exotic mare. Prin urmare, vom lua în considerare principalele lucruri - operațiuni cu numere pe 32 de biți. Ce credeți că, câte operații pe 32 de biți pot efectua în același timp miezul procesorului modern?

Studentul va răspunde la unul, profesorul său va gândi și va spune că patru profesioniști - că, în timp ce doar douăsprezece operațiuni.

Deci, codul programului care încarcă toate servomotoarele procesorului simultan pe întregul cod al codului, va avea o capacitate de 12 RTT-sho. Maxim! Sincer, mărturisesc, nu am scris un astfel de cod, dar în acest articol voi încerca să fac un efort pentru mine.

Voi dovedi că codul cu execuția simultană a celor douăsprezece operațiuni pe 32 de biți este posibil

Codul programului care utilizează un dispozitiv de acționare în kernelul procesorului va avea în mod natural performanță în 1 RTT-SCI. O astfel de productivitate a codului poate "lăuda" programe generate de compilatoarele de limbi nivel inalt, și interpreții virtuali ai mașinii. Nu este necesar să presupunem că indicatorul de încărcare a procesorului care poate fi văzut în Managerul de sarcini OS poate servi drept criteriu obiectiv pentru eficiența codului. Sarcina de kernel procesor poate fi de 100%, dar codul programului va folosi un dispozitiv de acționare în IT (1 performanță RTT). În acest caz, la încărcarea de 100%, kernelul procesorului va funcționa în 1/12 din performanța maximă. Cu alte cuvinte, când încărcarea maximă a procesorului este afișată în sarcinile OS Windows. performanță reală Poate varia de la 1 la 12 RTT. Văzând 100% în fereastra ferestrei de performanță pe un miez de procesor, este greșit să presupunem că toate dispozitivele executive funcționează în acest nucleu, în nici un caz!

Singurul criteriu pentru o evaluare indirectă a activității kernelului procesor cu performanțe maxime poate fi consumul său de energie și, ca rezultat, zgomotul răcitorului. Dacă răcitorul este incisiv, atunci da - descărcarea a mers la maxim. Cu toate acestea, este timpul să terminăm concepte comune Și treceți la o practică aspru.

Vânzări tradiționale de GOST 28147-89

Nu sunt un profesionist în domeniul securității informațiilor, dar încă familiarizat cu subiectul criptării. Criptarea în mod specific simetrică am fost suspendată cu o conversație cu un criptograf profesionist, pe care îl respect profund. Și, angajat în acest subiect, am încercat să fac exact bine și nu doar bun, ci și rapid, efectuând numărul maxim de operațiuni pe unitate de timp. Cu alte cuvinte, în fața mea, sarcina de a scrie un cod de program cu valoarea maximă a RTT.

Transformarea criptografică conform GOST 28147-89 este utilizată pentru criptarea simplificată a informațiilor în canalele de comunicare și pe unitățile de disc.

În prezent, implementarea programului a acestui GOST pe RON a circuitului central este utilizată universal. În metodele de implementare a GOST bine cunoscute, toate informațiile secrete (tastele de criptare, blocurile de schimbare) sunt plasate în memoria RAM. Acest lucru reduce fiabilitatea criptării, deoarece având o dumpă de memorie RAM, puteți identifica complet toate elementele secrete ale criptocremiei. În plus, metoda are limitări la viteză, datorită amplasării obiectelor principale de criptocreformare în PO și încărcarea incompletă a servomotoarelor ALU. Procesoarele moderne, implementarea unui criptoprocesor la o metodă bine cunoscută, pot furniza viteza de criptare la 40-60 megaocteți pe secundă. Și dacă înțelegeți până la sfârșit, motivul pentru protecția scăzută a vitezei și a cripocreformării slabe este implementarea software-ului blocului de substituție. Pentru o descriere a acestuia în oaspete, vezi fig. unu.

În conformitate cu punctul 1.2 din GOST, această unitate implementează notebook-urile (patru biți) de permutare într-un cuvânt pe 32 de biți, dar arhitectura procesorului X86 / 64 și sistemul său de comandă nu este în măsură să manipuleze efectiv tetrad.

Pentru implementarea software-ului blocului de substituție, tabelele speciale sunt utilizate în memoria RAM, pregătite la etapa de inițializare a criptofuncției. Aceste tabele combină nodurile tetradului de înlocuire la mesele octeților cu o dimensiune de 8 × 8 biți, astfel că patru mese de 256 de spike sunt adaptate în memoria RAM.

În implementări mai avansate, aceste tabele au o dimensiune de 1024 octeți (256 de cuvinte de patru octeți). Acest lucru se face pentru a implementa în tabele, o deplasare ciclică suplimentară la 11 poziții obținute ca rezultat al unei substituții cu 32 de biți (următoarea funcționare a algoritmului de conversie conform GOST). Un exemplu de implementare a GOST pentru această metodă este prezentat în apendicele 1 (pe disc).

Informațiile despre unitatea de substituție reprezintă o componentă secretă a criptofuncției (așa cum este formulată în oaspeți, a se vedea figura 2).

Plasarea acestor tabele cu cheile blocului de substituție în PO contrar cerințelor GOST (clauza 1.7), deoarece informațiile secrete devin disponibile pentru programele terților care operează pe instalația de calcul. FSB, certificarea, inclusiv implementarea software-ului de criptare în GOST, privește la această încălcare, pentru ao pune ușor, condescendentă. Dacă este încă nevoie de o "frunză de smochină" care urmează să fie instalată în PO FSB, tastele se maschează operația XOR, apoi nu este necesară blocurile de înlocuire din OP, acestea sunt stocate în forma deschisă.

Pe scurt, FSB implică astfel de implementări software ale criptoproceselor, în ciuda reducerii explicite a persistenței unei astfel de decizii și a încălcării directe a cerințelor proprii pentru GOST (punctul 1.7). Și acest lucru, în ciuda metodelor bine cunoscute de hacking-uri prin halda de memorie reciprocă ...

La problema de stocare a cheilor și a blocurilor de înlocuiri în registrele interne ale procesorului, vom reveni puțin mai târziu (există o frumoasă și frumoasă decizia rapidă), Între timp, numai cheile de criptare vom stoca în registre MMX, este mai fiabilă.

Dar există suficiente versuri, este important în cadrul subiectului având în vedere că acest cod de program are performanțe în 1 RTT-SCI. Acum scrie cod cu o capacitate de 2 RTT-Shki.

Implementarea multi-filetată GOST 28147-89

Singura posibilitate de a accelera criptoprocesoarele în algoritmul binecunoscut este introducerea multithreading-ului. Semnificația unei astfel de schimbări în implementarea algoritmului este de a calcula mai multe blocuri de date imediat în paralel.

Majoritatea programatilor implică sub procesarea paralelă numai pentru a lucra mai multe nuclee de procesor sincronizate prin întreruperi și semaphores în memorie.

Cu toate acestea, există o altă variantă a procesării paralele pe un singur kernel de procesor. Voi explica acest gând non-evident.

Procesoarele moderne au în compoziția lor cel puțin două și apoi trei sau șase dispozitive aritmetice și logice. Aceste Alu (FPU, blocurile aritmetice și așa mai departe) pot funcționa independent unul de celălalt, singura condiție pentru funcționarea lor paralelă este obiectele programului non-ciclu cu care operează. Cu alte cuvinte, în comenzile care efectuează simultan ALU, adresele de memorie și numerele de înregistrare trebuie să fie diferite. Fie în registre generale, cât și adresele de memorie la care sunt abordate diferite actuatoare de procesoare, operațiunile de înregistrare nu ar trebui efectuate.

Încărcarea activității tuturor comentează blocul hardware special din interiorul kernelului de procesor - planificatorul care navighează codul executabil este îngrozitor, la o adâncime de 32-64 octeți. Dacă planificatorul detectează comenzile care pot fi lansate pe Allu fără conflict, le pornește simultan pe diferite actuatoare. În același timp, contorul de comenzi executate indică comanda executabilă (există mai multe dintre ele într-o astfel de schemă), după care toate comenzile au fost deja executate.

Majoritatea secvențelor de program generate automat (compilatoare) nu pot încărca toate ALU și FPUS situate în kernelul CPU. În acest caz, echipamentul procesorului este inactiv, ceea ce reduce în mod semnificativ performanța rezultată. Dezvoltatorii procesorilor înțeleg acest lucru și introduc modurile de creștere a frecvenței de bază atunci când echipamentul nu este utilizat pe deplin. De asemenea, sistemul de hipertremare este, de asemenea, destinat acestui lucru și voi folosi acest sistem pentru a "apăsați" codul la maxim în viitor.

Compilatorii, chiar și cele mai optimizate și chiar mai multe motoare ale mașinilor virtuale, nu pot forma cod optimizat din punctul de vedere al vitezei. Numai un programator cu cunoștințe de inginerie poate scrie un astfel de cod optimizat, iar instrumentul de scriere este exclusiv de asamblare.

O ilustrare caracteristică a posibilității de a efectua mai multe fluxuri de software independente pe un nucleu al procesorului este implementarea GOST, efectuată în două fluxuri pe singurul nucleu al procesorului. Ideea codului este simplă: există două blocuri de date bloc pentru criptare / decriptare, dar un nucleu al procesorului care se va transforma. Puteți efectua conversia acestor două blocuri de date secvențial și se face până acum. În acest caz, timpul necesar transformării este dublat.

Dar puteți merge și altfel: comenzi alternative legate de prelucrarea diferitelor blocuri de date. Din punct de vedere grefic, aceste opțiuni sunt prezentate în fig. 3.


În figură, exemplul de vârf arată procedura obișnuită pentru efectuarea procesării a două blocuri de date independente. În primul rând, primul bloc este procesat, apoi procesorul procesează prelucrarea celui de-al doilea bloc. Firește, timpul rezultat este egal cu dublu-timp, ceea ce este necesar pentru procesarea unui bloc, iar dispozitivele de acționare ale kernelului procesor nu sunt încărcate complet.

Următorul este un exemplu cu comenzi alternante din diferite fire de procesare. În acest caz, comenzile referitoare la diferite blocuri de date alternative. Planificatorul alege echipa independentă unul de celălalt și îi transmite să le efectueze în ALU1 și Allu2. Gruparea primelor și a celei de-a doua echipe de flux de pe aceste ALU este implementată automat, deoarece în algoritmul de lucru al planificatorului, se pune gruparea de comenzi cu un angrenaj pe date generale pe același dispozitiv executiv.

Pentru ca un astfel de cod de program să funcționeze fără doptime de către ALU, este necesar ca fiecare fir de program să funcționeze cu setul de registre. Cache-ul din această schemă devine un blocaj (are doar două porturi de emitere a datelor), astfel încât cheile sunt stocate în registre MMX. Deoarece în acest caz, nodurile de înlocuire (și schimbarea) sunt citite numai în memorie, ele pot fi comune pentru ambele fluxuri de software.

Acest lucru, desigur, o explicație foarte simplificată a principiului fluxurilor de software performante paralele pe singurul nucleu, este într-adevăr totul mult mai dificil. În practică, este necesar să se țină seama de arhitectura transportorului de dispozitive executive, restricții privind accesul simultan la memoria cache și blocul de registru RON, prezența nodurilor aritmetice de adresă, comutatoare și mult mai mult ... deci acest lucru este a Subiect pentru profesioniști care pot fi numărați pe degete ... o mână.

Metoda de criptare paralelă este implementată efectiv numai pentru modul de funcționare pe 64 de biți a procesorului, deoarece în acest mod există o cantitate suficientă de RON (până la 16 bucăți!). Un exemplu de implementare a GOST pentru această metodă este prezentat în apendicele 2 (pe disc).

Este clar că această implementare a GOST are performanța de 2 cod RTT-ShKi. Și acum să vedem cum afectează timpul de execuție.

Ciclul de criptare pentru un curent (Anexa 1) este de 352 tact, iar în acest timp se calculează 8 octeți de date, pentru implementarea pe două pagini a GOST (apendicele 2), sunt necesare 416 cicluri de procesor, dar sunt calculate 16 octeți . Astfel, rata de transformare rezultată crește de la 80 la 144 megaocteți pentru un procesor cu o frecvență de 3,6 GHz.

Se obține o pictură interesantă: codul conține exact două ori mai multe echipe și se efectuează doar cu 15% mai mult, dar cred că cititorii au înțeles deja motivul pentru acest fenomen ...

Teoretic, codul din al doilea exemplu trebuie efectuat pentru același număr de ceasuri ca codul din primul exemplu, dar adunarea planificatorului se dezvoltă în inginerii Intel, dar și în oameni și suntem cu toții de departe de perfectă. Deci, este posibil să se evalueze eficacitatea creației lor. Acest cod va funcționa la un procesor AMD și puteți compara rezultatele acestora.

Dacă cineva nu mă crede, atunci pentru astfel de necredincioși pe disc atașat programe de testare Cu contoare de ceas. Programe B. codurile sursăFirește pe asamblare, deci este posibil să-mi verificăm cuvintele și, în același timp, să vărsăm niște trucuri de codificare profesională.

Folosind registrele SSE și echipele AVX ale procesatorilor moderni pentru implementarea GOST 28147-89

Procesoarele moderne ale arhitecturii X86 / 64 sunt în compoziția lor un set de registre SSE de 16 octeți și FPU-uri specializate (cel puțin două) pentru a efectua diverse operațiuni cu privire la aceste registre. Este posibilă implementarea GOST pe acest echipament și, în acest caz, nodurile de înlocuire nu pot fi plasate sub formă de tabele în memoria RAM, dar direct pe registrele SSE selectate.

Pe un registru SSE, două tabele din 16 linii pot fi plasate simultan. Astfel, patru registre SSE vă vor permite să găzduiți pe deplin toate tabelele de înlocuire. Singura condiție pentru această plasare este cerința de alternanță, conform căreia o byte tetrade ar trebui plasată în diferite registre SSE. În plus, este recomandabil să plasați teradiile tinere și senior de intrare, respectiv, în octeții mai tineri și senior-registre SSE.

Aceste cerințe sunt determinate prin optimizarea sub setul de comandă AVX disponibil. Astfel, fiecare octet de înregistrare a SSE va conține două tetrade legate de diferiți octeți ai registrului de intrare al blocului de substituție, iar poziția octetului din registrul SSE corespunde unic indicele din tabelul de înlocuire a blocului de substituție.

Schema uneia dintre posibilele destinații a nodurilor de înlocuire pe registrele SSE este prezentată în fig. patru.


Plasarea informațiilor secrete ale registrelor SSE ale nodurilor de înlocuire crește protecția criptoprocesoarelor, dar este posibilă o izolare completă a acestor informații secrete, în conformitate cu următoarele condiții:

  • Miezul procesorului este tradus în gazda hipervisorului, iar blocul de întrerupere este dezactivat forțat (APIC). În acest caz, miezul procesorului este complet izolat din sistemul de operare și aplicații care funcționează pe o instalație de calcul.
  • Încărcarea registrelor SSE și izolarea kernel-ului de calcul este efectuată înainte de începerea pornirii sistemului de operare, optimă este executarea acestor proceduri de la modulul de încărcare de încredere (MDZ).
  • Programele de criptoproceedur pentru GOST sunt plasate în zona nemodificabilă a memoriei instalației de calcul (fie BIOS, fie în memoria Flash MDZ).

Îndeplinirea acestor cerințe va permite asigurarea unei izolații complete și a imuabilității codului de program al criptoprocesorului și a informațiilor secrete utilizate în ele.

Pentru un eșantion eficient de registre SSE, comutatoarele curente ale octeților sunt utilizate ca parte a blocurilor FPU. Aceste comutatoare vă permit să transferați de la orice octet sursă la orice octet de recepție, în conformitate cu indici într-un registru SSE de indice special. În plus, în paralel, transmiterea tuturor celor 16 octeți ai receptorului SSE.

Având noduri de depozitare în registrele SSE și un comutator multi-canal în blocuri FPU, puteți organiza următoarea transformare în blocul de substituție (figura 5).

În acest circuit, registrul de intrare din fiecare tetradă stabilește adresa pentru comutatorul corespunzător, care depășește datele transferurilor de date de date la registrul de ieșire din unitățile nodurilor de înlocuire. O astfel de schemă poate fi organizată în trei moduri:

  • Creați un design adecvat de cip, dar acesta este fantastic pentru noi.
  • Reprogramați microcodul și creați propria comandă a procesorului pentru a implementa această funcție pe procesoarele existente - aceasta nu mai este ficțiune, dar, din păcate, ireală în condițiile actuale.
  • Scrieți programul pe comenzile oficiale AVX. Opțiuni și nu foarte eficiente, dar vom implementa "aici și acum". Deci, acest lucru va veni în continuare.

Activitatea comutatoarelor este gestionată de o echipă specială Trekhadres AVX VPSHUFB. Primul său operand este un receptor de informații din comutatoare, al doilea - sursa la care sunt conectate intrările de comutatoare. Al treilea operand este registrul de control pentru comutatoare, fiecare octet este asociat cu comutatorul corespunzător; Valoarea în ea specifică numărul de direcție din care comutatorul citește informațiile. Descrierea acestei comenzi din documentația oficială Intel, vezi fig. 5. În fig. 6 Afișează schema de lucru a acestei comenzi - doar jumătate din registrele SSE sunt descrise, pentru a doua jumătate, totul este similar.


Comutatorul utilizează numai cei patru biți mai tineri pentru a determina direcția de comutare, ultimul bit din fiecare carte este utilizat pentru a reseta cu forța octetul receptorului corespunzător, dar această funcție a comutatorului în cazul nostru nu este încă în cerere.

Programul cu selecția TETRAD prin intermediul comutatoarelor FPU a fost scris, dar nici măcar nu l-am pus în aplicație - prea sacrificare. Aveți un registru de 128 de biți și utilizați doar 32 de biți în IT - neprofesional.

După cum se spune, "Finisajul nostru este orizontul", atât de stoarceți atât de stoarceți ... vom apăsa și pliam în pachete!

Acesta nu este jocul de cuvinte și realitatea HARSH FPUE - registrele SSE pot fi rupte în părți egale și pot efectua aceleași transformări asupra acestor părți printr-o singură comandă. Pentru ca procesorul să înțeleagă acest lucru, există un cioc magic "P" - un pachet care este pus în fața echipei mnemonice și nu mai puțin boi magice "Q", "D", "W", "B", care sunt plasate în cele din urmă și declară ce părți ale registrelor SSE sunt împărțite în această comandă.


Suntem interesați de regimul lotului cu un registru SSE pentru patru blocuri pe 32 de biți; În consecință, toate comenzile vor avea prefixul "p", iar la sfârșit - simbolul "D". Acest lucru permite o comandă de procesor paralelă să se ocupe de patru blocuri de 32 de biți, adică să numărați patru blocuri de date în paralel.

Programul de punere în aplicare a acestei metode este disponibil în apendicele 3, ibid - toate explicațiile.

Cu toate acestea, apăsați astfel Apăsați! În procesoarele moderne există cel puțin două unități FPU, iar două fire de comenzi independente pot fi utilizate pentru a descărca complet. Dacă vă alternați corect comenzile din fluxuri independente, puteți descărca complet blocurile FPU și obțineți imediat opt \u200b\u200bfluxuri de date paralele imediat. Un astfel de program a fost scris și poate fi vizualizat în apendicele 4, trebuie doar să arătați cu atenție - puteți zbura de la bobine. Acesta este ceea ce se numește "codul nu este pentru toată lumea ...".

Prețul întrebării

Utilizarea registrelor SSE pentru a stoca nodurile de înlocuire este clară - oferă o anumită garanție a izolării informațiilor secrete, dar semnificația calculului criptofuncției în sine este non-evidentă. Prin urmare, măsurătorile au fost măsurate prin implementarea procedurilor standard prin metoda de înlocuire directă, în conformitate cu GOST pentru patru și pentru opt fluxuri.

Pentru patru fluxuri, a fost obținută viteza ceasului de procesor 472. Astfel, pentru un procesor cu o frecvență de 3,6 GHz, un flux este considerat la o viteză de 59 megaocteți pe secundă și patru curenți, respectiv la o viteză de 236 megaocteți pe secundă.

Pentru opt fluxuri, a fost obținută rata de execuție a ceasurilor de procesor 580. Astfel, pentru un procesor cu o frecvență de 3,6 GHz, un flux este considerat la o viteză de 49 megaocteți pe secundă și opt fluxuri la o viteză de 392 megaocteți pe secundă.

După cum poate observa cititorul, codul din exemplul nr. 3 are 4 performanțe RTT, iar codul din exemplul nr. 4 are 8 performanțe RTT. În aceste exemple, registrele SSE sunt aceleași ca și atunci când se utilizează RON, numai planificatorul și-a redus eficiența. Acum oferă o creștere de 20% a duratei cu o creștere de două ori a lungimii codului.

Mai mult, aceste rezultate au fost obținute utilizând comenzi AVX universale disponibile în procesoarele Intel și în procesoare AMD. Dacă optimizați procesorul AMD, rezultatul va fi semnificativ mai bun. Sună peste tendință, dar totuși este adevărat, și de aceea: procesoare AMD Există un set suplimentar de comenzi, așa-numita expansiune XOP și în acest set suplimentar de comenzi există cele care simplifică foarte mult implementarea algoritmului GOST.

Aceasta se referă la comenzile schimbării logice a bytes și a schimbării ciclice a cuvintelor duble. În exemplele prezentate în apendicele 3 și 4, se utilizează secvențele de comenzi universale care implementează transformarea necesară: în primul caz o comandă "inutilă" și, într-un alt caz, patru comenzi inutile imediat. Astfel încât rezervele de optimizare sunt, și considerabile.

Dacă vine vorba de o optimizare ulterioară, nu este să vă amintiți prezența registrelor de 25 de biți (registre YMM), folosind care vă puteți teoretic de două ori viteza calculelor. Dar, în timp ce aceasta este doar o perspectivă, procesoarele lente în prezent sunt foarte lente atunci când sunt efectuate instrucțiuni de 256 de biți (FPU-urile au o lățime a căii de 128 de biți). Experimentele au arătat că, pe procesoare moderne, contul din 16 fire pe registrele YMM nu oferă o victorie. Dar acest lucru este atâta timp cât noile modele de procesor vor fi, fără îndoială, crescute cu viteza comenzilor de 25 de biți, iar utilizarea a 16 fluxuri paralele va deveni adecvată și va duce la o creștere și mai mare a vitezei criptoprocesorului.

Teoretic, puteți conta pe viteza de 600-700 megaocteți pe secundă în prezența a două FPU-uri în procesor cu o lățime a căii de lucru 256 de biți fiecare. În acest caz, putem vorbi despre scrierea codului cu eficacitatea de 16 RTT, iar aceasta nu este ficțiune, ci cea mai apropiată perspectivă.

Mod mixt

Din nou, problema numărului de registre lipsește, lipsesc să promoveze un astfel de algoritm. Dar modul de hipertremare ne va ajuta. Kernel-ul procesorului are un al doilea set de registre disponibile în procesoare logice. Prin urmare, vom efectua același cod simultan pe două procesoare logice. În acest mod de dispozitive executive, noi, desigur, nu vom adăuga, dar prin alternanță puteți obține încărcarea completă a tuturor dispozitivelor executive.

Nu este necesar să se bazeze pe o creștere de 50% aici, un punct îngust devine memorie cache, unde sunt stocate măști tehnologice, dar puteți obține o creștere a megaocteților suplimentari. Această opțiune nu este dată în aplicații (macrocomenzile sunt similare cu cele utilizate în cod cu 8 RTT), dar este disponibil în fișierele programului. Deci, dacă cineva nu crede în posibilitatea de criptare la o viteză de 500 megaocteți pe secundă pe un miez de procesor, lăsați fișierele de testare să înceapă. Există, de asemenea, texte cu comentarii, astfel încât nimeni să nu crească că sunt un custodie.

O astfel de concentrare este posibilă numai pe procesoarele Intel, AMD are doar două blocuri FPU în două module de procesor (analogul modului hipertreaking). Dar mai sunt încă patru, care nu folosesc păcatul.

Puteți să conduceți modulele procesorului "Buldozer" pentru modul, similar cu modul Hypertrajding, dar pentru a rula pe diferite module într-o singură conversie a firului la RON și într-un alt flux pe registrele SSE și obțineți același 12 RTT. Nu am verificat această opțiune, dar cred că, pe codul AMD la 12 RTT va funcționa mai eficient. Cei care doresc pot încerca, programele de testare pot fi corectate pentru a lucra la "buldozere" destul de ușor.

Cine are nevoie de ea?

O întrebare serioasă, dar cu un răspuns simplu - este necesar pentru toată lumea. În curând vom subdeda toți norii, vom stoca, iar datele și programele de acolo și acolo cum doriți să vă dotați propriul colț privat. Pentru a face acest lucru, va trebui să criptați traficul, iar viteza de criptocreformă va fi principalul factor definitoriu într-o lucrare confortabilă în nor. Alegerea algoritmului de criptare de la noi este mic - fie GOST, fie AES.

Mai mult, destul de ciudat, criptarea internă din algoritmul AES se dovedește a fi mult mai lent, testele arată viteza la nivelul de 100-150 megaocteți pe secundă, iar atunci algoritmul este hardware! Problema se află într-un cont cu un singur fir și o unitate de înlocuire care funcționează prin octeți (tabel din 256 de linii). Deci, GOST se dovedește a fi mai eficient în implementarea arhitecturii X86 / 64, care ar fi crezut ...

Acest lucru este dacă vorbim despre nivelul obținut de viteză de criptare. Și dacă țineți cont de deliciile teoretice în domeniul creșterii eficienței codului, este cel mai probabil necesar pentru nimeni. 3-6 Specialiștii RTT sunt practic nu, compilatoarele generează în general cod la nivelul de 1-2.5 RTT, iar principala masa de programatori nu cunoaște asamblorul și, dacă știe ortografia, nu înțelege dispozitivele moderne procesor. Și fără aceste cunoștințe că asamblarea, că unele Si-Sharp este acolo - nici o diferență.

Dar nu totul este atât de trist: în "reziduul uscat" după o săptămână de nopți nedormite există un nou algoritm pentru implementarea GOST, care este păcat să nu brevete. Și aplicațiile pentru brevete (până la trei) sunt deja decorate și depuse, deci, Domnul Kommersant, construi o coadă - femei și copii cu discount.

Algoritmul GOST 28147-89 și Magma Cipher (GOST R 34.12-2015)

Schema generală a algoritmului. Algoritmul descris de sistemul de procesare a informațiilor GOST 28147-89 ". Protecție criptografică. Algoritmul de transformare a criptului "este standardul intern Criptare simetrică (până la 1 ianuarie 2016) și este necesară pentru punerea în aplicare în instrumente certificate pentru protecția criptografică a informațiilor utilizate în sistemele informatice de stat și, în unele cazuri, în sistemele comerciale. Certificarea informațiilor privind protecția informațiilor criptografice este necesară pentru a proteja informațiile care alcătuiesc secretul de stat al Federației Ruse, iar confidențialitatea informațiilor este obligată să fie furnizată în conformitate cu legislația aplicabilă. De asemenea, în Federația Rusă, utilizarea algoritmului GOST 28147-89 este recomandată pentru a proteja sistemele informaționale bancare.

Algoritmul GOST 28147-89 (figura 2.21) se bazează pe circuitul Faistetel și criptează informațiile prin blocuri de 64 de biți, care sunt împărțite în două sub-blocuri de 32 de biți (I și și R). bloc R, Acesta este procesat de funcția conversiei rotunde, după care valoarea sa este pliată cu valoarea sub-blocului LJ, atunci sublocurile sunt schimbate în locuri. Algoritmul are 16 sau 32 de runde în funcție de modul de criptare (imit calculul imaginat sau alte moduri de criptare).

Smochin. 2.21.

În fiecare rundă a algoritmului se efectuează următoarele transformări.

1. Suprapunerea roților. Cuprins sub-bloc R I. Modulul îndoit 2 32 cu cheie rotundă K. KJ. - Aceasta este o parte pe 32 de biți din cheia sursă utilizată ca o rundă. Algoritmul GOST 28147-89 NS utilizează procedura de expansiune cheie, cheia de criptare pe 256 de biți sursă este reprezentată ca o concatenare (ambreiaj) de opt conexiuni pe 32 de biți (figura 2.22): K 0, K (, K T K, K A, K 5, la 6, la 7.

În procesul de criptare, se utilizează unul dintre aceste prize. LA

De la prima până la a 24-a - în secvența directă:

Din 25, dar cel de-al 32-lea rotund - în ordine inversă:

Smochin. 2.22. Clădire de criptare a algoritmului de criptare GOST 28147-89

2. Înlocuirea filelor. După suprapunerea cheii de lacăt R I. Este împărțită în opt părți, dar 4 biți, valoarea fiecăruia este înlocuită separat în conformitate cu tabelul său de înlocuire (bloc). Se utilizează un total de opt blocuri S 0, S, S 2, S 3, S 4, S 5, S 6, S 7. Fiecare bloc S al algoritmului GOST 28147-89 este un vector (o matrice unidimensională) cu elemente ^ numerotate de la 0 la 15. Valorile blocului S sunt numere pe 4 biți, adică. numere întregi de la 0 la 15.

Elementul este preluat din tabelul S-bloc, numărul de secvență coincide cu valoarea care a venit la intrarea substituției.

Exemplul 2.6.

Să existe un bloc S al următoarei formular:

Să presupunem că la intrarea acestui bloc, valoarea de 0100 2 \u003d 4. Elementul 4 al mesei de substituție va fi umplut cu ieșirea blocului S, adică. 15 \u003d 1111 2 (numerotarea elementelor începe cu zero).

fațele de înlocuire nu sunt definite de standard, așa cum se face, de exemplu, în Sifre Des. Valorile înlocuibile ale tabelelor de substituție fac dificilă algoritmul de criptoanaliza. În același timp, rezistența algoritmului depinde în mod semnificativ de alegerea corectă a acestora.

Din păcate, algoritmul GOST 28147-89 are substituții "slabe", atunci când se utilizează care algoritmul poate fi destul de ușor descoperit cu metode criptanalitice. "Slab" se referă, de exemplu, o masă de substituție trivială, în care intrarea este egală cu ieșirea (Tabelul 2.16).

Tabelul 2.16.

Exemplu de un bloc slab

Se crede că valorile specifice ale tabelelor de înlocuire trebuie depozitate în secret și sunt un element cheie pe termen lung, adică. Acționați pentru o perioadă mult mai lungă decât tastele separate. Cu toate acestea, valorile secrete ale tabelelor de înlocuire nu fac parte din cheia și nu pot crește lungimea efectivă.

Într-adevăr, tabelele de înlocuire secrete pot fi calculate utilizând următorul atac care este practicat în practică:

  • Instalat Key zero și căutați "zero vector", adică Valori z. = F (0) Unde F - Algoritmul funcției de conversie rotundă. Acest lucru necesită aproximativ 2 32 de operațiuni de criptare a testelor;
  • Folosind un vector zero, se calculează valorile tabelelor de înlocuire, ceea ce nu durează mai mult de 2 11 operații.

Cu toate acestea, chiar dacă confidențialitatea tabelelor de înlocuire sunt încălcate, cifrul rămâne extrem de ridicat și nu devine mai scăzut decât limita admisă.

De asemenea, se presupune că tabelele de substituție sunt comune tuturor site-urilor de criptare într-un sistem de protecție criptografică.

Îmbunătățirea structurii blocurilor S este una dintre problemele cele mai intens studiate din domeniul cipurilor de blocuri simetrice. În esență, este necesar ca orice modificare a intrărilor blocurilor S să fie turnată în aleatoriu pe tipul de schimbare a ieșirii. Pe de o parte, cu cât sunt mai mari blocurile S, algoritmul mai stabil până la metodele de criptanaliză liniară și diferențială. Pe de altă parte, un tabel de substrat mare este mai complicat pentru proiectare.

În algoritmii moderni, blocurile S sunt de obicei un vector (matrice unidimensionale) care conține 2 "t-elemente de biți. Intrarea blocului determină numărul elementului a cărui valoare este ieșirea blocului S.

Pentru proiectarea blocurilor S, au fost prezentate o serie de criterii. Tabelul de înlocuire trebuie să satisfacă:

  • criteriul de avalanșă strictă;
  • Criteriul independenței biților;
  • Cerința de neliniaritate din valorile de intrare.

Pentru a îndeplini ultima cerință, sa propus să se stabilească o combinație liniară i. biți ( i \u003d. 1, ..., t) Valorile tabelului de înlocuire bentfunctions (Eng, Îndoit - Dejecții, în acest caz, din funcții liniare). Funcțiile îndoite formează o clasă specială de funcții booleene caracterizate de cea mai înaltă clasă de neliniaritate și de corespondența unui criteriu de avalanșă strictă.

În unele lucrări pentru blocurile S, se propune verificarea executării unui efect de avalantaj garantat în - când o modificare a unui bit de intrare se schimbă, cel puțin biții de ieșire al modificărilor blocului S. Proprietatea efectului de avalantaj garantat de ordin de la 2 la 5 oferă caracteristici de difuzie suficient de bune ale blocurilor S pentru orice algoritm de criptare.

La proiectarea unor substituții suficient de mari, pot fi utilizate următoarele abordări:

  • selecția aleatorie (pentru blocurile S de dimensiuni mici poate duce la crearea de substituții slabe);
  • selecție aleatorie cu un test ulterior pentru respectarea diferitelor criterii și respingerea blocurilor slabe;
  • selecția manuală (pentru blocurile de dimensiuni mari este prea consumatoare de timp);
  • O abordare matematică, cum ar fi generarea folosind funcții îndoite (această abordare este aplicată în algoritmul turnat).

Puteți propune următoarea procedură pentru proiectarea blocurilor individuale a algoritmului GOST 28147-89:

  • Fiecare bloc S poate fi descris de patru funcții logice, fiecare dintre funcții ar trebui să aibă patru argumente logice;
  • Este necesar ca aceste funcții să fie destul de complicate. Această cerință de dificultate nu poate fi exprimată în mod oficial, cu toate acestea, poate fi necesară ca condiția necesară ca funcțiile logice corespunzătoare înregistrate în forma minimă (adică cu o lungime minimă posibilă) utilizând operații logice de bază, nu au fost mai scurte decât o valoare necesară ;
  • Funcții separate, chiar utilizate în diferite tabele de înlocuire, ar trebui să fie în mod suficient de suficient.

În 2011, a fost propusă o nouă atac "Întâlnire reflectorizantă în mijloc", o persistență ușor redusă a GOST 28147-89 (de la 2256 la 2225). Cele mai bune rezultate ale criptanalizei algoritmului din 2012 reduce rezistența la 2 192, necesitând o dimensiune relativ mare a ciphertextului și cantitatea de date preformate. În ciuda atacurilor propuse, la nivelul actual de dezvoltare a echipamentului de calcul, GOST 28147-89 reține rezistența practică.

Cipher "Magma" (GOST R 34.12-2015).GOST standardul 28147-89 a acționat în Rusia pentru mai mult de 25 de ani. În acest timp, el a arătat o rezistență suficientă și o bună eficacitate a implementărilor software și hardware, inclusiv pe dispozitivele cu trecere joasă. Deși au fost propuse atacuri criptanalitice, care reduc estimările sale de durabilitate (cele mai bune până la 2 192), acestea sunt departe de posibilitatea implementării practice. Prin urmare, sa decis să se includă algoritmul GOST 28147-89 într-un standard de criptare simetric nou dezvoltat.

În magazinul 2015, au fost adoptate două noi standarde criptografice naționale: GOST R 34.12-2015 "Tehnologia informației. Protecția informațiilor criptografice. Blocați cifrele "și GOST R 34.13-2015" Tehnologia informației. Protecția informațiilor criptografice. Modurile de funcționare a cipurilor de bloc ", care intră în vigoare la 1 ianuarie 2016

GOST standardul R 34.12-2015 conține o descriere a două cifre bloc cu o lungime bloc 128 și 64 de biți. Sifr GOST 28147-89 cu blocuri fixe de substituție neliniară este inclus în noul GOST R 34.12-2015 ca un cifru de 64 de biți numit "Magma" ("Magma").

Mai jos sunt blocurile de înlocuire consacrate în standard:

Blocurile S conținute în standard furnizează cele mai bune caracteristicideterminarea persistenței unui criptoalgoritm la criptanalizarea diferențială și liniară.

Potrivit Comitetului tehnic privind standardizarea protecției criptografice a informațiilor (TC 26), fixarea blocurilor de substituție neliniară va face ca algoritmul GOST 28147-89 să fie mai unificat și va contribui la excluderea utilizării blocurilor "slabe" substituție neliniară. În plus, fixarea în standardul tuturor parametrilor pe termen lung a cifrei răspunde acceptată practica internațională. Noul standard GOST R 34.12-2015 este asociat termicologic și conceptual cu standardele internaționale ISO / IEC 10116 "Tehnologii informaționale. Metode de securitate. Moduri de operare pentru "cifre bloc de bloc" (ISO / IEC 10116: 2006 Tehnologia informației - Tehnici de securitate - Moduri de operare pentru un cifru bloc de n-biți) și ISO / IEC 18033 Series "Tehnologii informaționale. Metode și instrumente de securitate. Algoritmi de criptare ": ISO / IEC 18033-1: 2005" Partea 1. General "(ISO / IEC 18033-1: 2005 Tehnologia informației - Tehnici de securitate - Algoritmi de criptare - Partea 1: Generalități) și ISO / IEC 18033-3: 2010 "PARTEA 3. BLOCK CIPHERS" (ISO / IEC 18033-3: 2010 (Tehnologia informației - Algoritmii de criptare - Partea 3: Blochete)).

Standardul GOST P 34.12-2015 include, de asemenea, un nou cifru bloc ("lăcustă") cu o dimensiune bloc de 128 de biți. Este de așteptat ca acest cifru să fie rezistent la toate atacurile la atacurile de astăzi asupra blocărilor blocului.

Modurile de funcționare a cifrelor de blocare (înlocuire simplă, jocuri de jocuri, feedback, feedback, joc de feedback siprotext, înlocuind simplu cu angajamentul și producerea de imitana) sunt îndepărtate într-un standard separat GOST R 34.13-2015, care corespunde celor internaționale adoptate la nivel internațional practică. Aceste moduri sunt aplicabile atât la "magma" cuibului cât și la noul covor "lăcustă".

  • Se efectuează o trecere ciclică bitime în stânga a 11 biți. Decripția se desfășoară în aceeași schemă, dar cu o altă cale de utilizare a cheilor: de la prima până la a 8-a rundă a decriptării - în linie: de la cea de-a 9-a la cea de-a 32-a rundă a decriptării - în ordine inversă: comparativ la SIPHER DE LA GOST 28147-89 Există următoarele avantaje: o cheie semnificativ mai lungă (256 de biți față de 56 în Sifra des), atacul asupra căruia, prin integritatea completă a cheii set de amomant este imposibilă; Un program simplu de utilizare cheie, care simplifică punerea în aplicare a algoritmului și crește viteza de calcul. Design S-blocuri GOST 28147-89. Evident, schema algoritmului GOST 28147-89 este destul de simplu. Aceasta înseamnă că cea mai mare sarcină de criptare cade pe tabelul de înlocuire. Valorile tabelor
  • Panasepko S. P. Algoritmi de criptare: director special. SPB: Bhv-Peter-Burg, 2009.
  • Kara O. Atacurile de reflecție asupra cipurilor de produse. URL: http://print.iactor.org/2007/043.pdf.
  • Standardul de criptare rusesc: Rezistența redusă. URL: http://cryptofaq.ru/index.php/2010-12-23-18-20-2-21-20-01-20-20-07-07-07-07-0-07-07- 27.
  • Achekseyev E. K., Schdslyaev S. V. GOST 28147-89: "Nu vă grăbiți să-l îngropați".


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