Tehnologii moderne pentru criptarea datelor electronice. Scopul și structura algoritmilor de criptare

Serghei Panasenko,
Șeful departamentului de dezvoltare software al companiei Ankad,
[email protected]

Noțiuni de bază

Procesul de conversie a datelor deschise în date criptate și invers se numește de obicei criptare, iar cele două componente ale acestui proces sunt numite criptare și, respectiv, decriptare. Matematic, această transformare este reprezentată de următoarele dependențe care descriu acțiuni cu informațiile inițiale:

С = Ek1(M)

M" = Dk2(C),

unde M (mesaj) este informație deschisă (deseori denumită „text sursă” în literatura privind securitatea informațiilor);
C (text cifrat) - textul cifrat (sau criptograma) obținut ca urmare a criptării;
E (criptare) - funcție de criptare care realizează transformări criptografice asupra textului sursă;
k1 (cheie) - parametrul de funcție E, numit cheie de criptare;
M" - informații obținute ca urmare a decriptării;
D (decriptare) - funcție de decriptare care realizează transformări criptografice inverse criptării peste textul cifrat;
k2 este cheia folosită pentru a decripta informațiile.

Conceptul de „cheie” din standardul GOST 28147-89 (algoritm de criptare simetrică) este definit după cum urmează: „o stare secretă specifică a unor parametri ai algoritmului de transformare criptografică, care asigură alegerea unei transformări din totalitatea transformărilor posibile. pentru un anumit algoritm”. Cu alte cuvinte, cheia este un element unic care poate fi folosit pentru a modifica rezultatele algoritmului de criptare: același text sursă va fi criptat diferit atunci când se utilizează chei diferite.

Pentru ca rezultatul decriptării să se potrivească cu mesajul original (adică, pentru M" = M), trebuie îndeplinite simultan două condiții. În primul rând, funcția de decriptare D trebuie să corespundă cu funcția de criptare E. În al doilea rând, cheia de decriptare k2 trebuie să corespundă la cheia de criptare k1.

Dacă pentru criptare a fost folosit un algoritm de criptare puternic din punct de vedere criptografic, atunci în absența cheii corecte k2, este imposibil să se obțină M" = M. Puterea criptografică este principala caracteristică a algoritmilor de criptare și indică, în primul rând, gradul de criptare. dificultate în obținerea textului original din criptat fără cheia k2.

Algoritmii de criptare pot fi împărțiți în două categorii: criptare simetrică și asimetrică. Pentru primul, raportul dintre cheile de criptare și de decriptare este definit ca k1 = k2 = k (adică, funcțiile E și D folosesc aceeași cheie de criptare). Cu criptarea asimetrică, cheia de criptare k1 este calculată din cheia k2 în așa fel încât transformarea inversă să fie imposibilă, de exemplu, prin formula k1 = ak2 mod p (a și p sunt parametrii algoritmului utilizat).

Criptare simetrică

Algoritmii de criptare simetrică datează din antichitate: această metodă de a ascunde informații a fost folosită de împăratul roman Gaius Julius Caesar în secolul I î.Hr. e., iar algoritmul pe care l-a inventat este cunoscut sub numele de „criptosistemul Caesar”.

În prezent, cel mai faimos algoritm de criptare simetrică este DES (Data Encryption Standard), dezvoltat în 1977. Până de curând, a fost „standardul SUA”, întrucât guvernul acestei țări recomanda utilizarea lui pentru implementarea diferitelor sisteme de criptare a datelor. În ciuda faptului că DES a fost inițial planificat să fie utilizat pentru cel mult 10-15 ani, încercările de a-l înlocui au început abia în 1997.

Nu vom lua în considerare DES în detaliu (aproape toate cărțile din lista de materiale suplimentare conțin descrierea sa cea mai detaliată), dar ne vom întoarce la algoritmi de criptare mai moderni. Este de remarcat doar faptul că principalul motiv pentru modificarea standardului de criptare este puterea sa criptografică relativ slabă, motiv pentru care lungimea cheii DES este de numai 56 de biți semnificativi. Se știe că orice algoritm criptorezistent poate fi spart prin sortarea tuturor opțiunilor posibile pentru cheile de criptare (așa-numita metodă brute force - brute force attack). Este ușor de calculat că un grup de 1 milion de procesoare, fiecare calculând 1 milion de chei pe secundă, va verifica 256 de variante de chei DES în aproape 20 de ore Și, deoarece o astfel de putere de calcul este destul de reală în conformitate cu standardele actuale, este clar că un Cheia pe 56 de biți este prea scurtă și algoritmul DES trebuie înlocuit cu unul mai „puternic”.

Astăzi, doi algoritmi moderni de criptare rezistenți la criptare sunt utilizați din ce în ce mai mult: standardul intern GOST 28147-89 și noul standard cripto-american - AES (Advanced Encryption Standard).

Standard GOST 28147-89

Algoritmul definit de GOST 28147-89 (Fig. 1) are o lungime a cheii de criptare de 256 de biți. Acesta criptează informațiile în blocuri de 64 de biți (astfel de algoritmi se numesc algoritmi bloc), care sunt apoi împărțiți în două subblocuri de 32 de biți (N1 și N2). Subblocul N1 este procesat într-un anumit mod, după care valoarea sa este adăugată la valoarea subblocului N2 (adăugarea se realizează modulo 2, adică se aplică operația XOR logică - „exclusiv sau”), iar apoi subblocurile sunt schimbate. Această transformare se efectuează de un anumit număr de ori ("runde"): 16 sau 32 în funcție de modul algoritmului. În fiecare rundă se efectuează două operații.

Primul este cheiatul. Conținutul subblocului N1 este adăugat modulo 2 la partea de 32 de biți a cheii Kx. Cheia de criptare completă este reprezentată ca o concatenare de subchei pe 32 de biți: K0, K1, K2, K3, K4, K5, K6, K7. Una dintre aceste subchei este utilizată în procesul de criptare, în funcție de numărul rotund și de modul de operare al algoritmului.

A doua operație este înlocuirea mesei. După introducere, subblocul N1 este împărțit în 8 părți a câte 4 biți, valoarea fiecăruia fiind înlocuită în conformitate cu tabelul de înlocuire pentru această parte a subblocului. Subblocul este apoi rotit la stânga cu 11 biți.

Înlocuirea mesei(Cutie de substituție - S-box) sunt adesea folosite în algoritmii moderni de criptare, așa că merită explicat cum este organizată o astfel de operațiune. Valorile de ieșire ale blocurilor sunt scrise în tabel. Un bloc de date de o anumită dimensiune (în cazul nostru, de 4 biți) are propria sa reprezentare numerică, care determină numărul valorii de ieșire. De exemplu, dacă S-box are forma 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1 și un bloc de 4 biți „0100 " a venit la intrare (valoarea 4), apoi, conform tabelului, valoarea de ieșire va fi 15, adică "1111" (0 a 4, 1 a 11, 2 a 2 ...).

Algoritmul definit de GOST 28147-89 prevede patru moduri de funcționare: înlocuire simplă, scalare, scalare cu feedback și generare de prefixe de imitație. Ei folosesc aceeași transformare de criptare descrisă mai sus, dar deoarece scopul modurilor este diferit, această transformare se realizează în fiecare dintre ele în mod diferit.

În modul înlocuire simplă pentru a cripta fiecare bloc de informații pe 64 de biți, sunt efectuate cele 32 de runde descrise mai sus. În acest caz, subcheile pe 32 de biți sunt utilizate în următoarea secvență:

K0, K1, K2, K3, K4, K5, K6, K7, K0, K1 etc. - în rundele 1 până la 24;

K7, K6, K5, K4, K3, K2, K1, K0 - în rundele 25 până la 32.

Decriptarea în acest mod se realizează exact în același mod, dar cu o secvență ușor diferită de utilizare a subcheilor:

K0, K1, K2, K3, K4, K5, K6, K7 - în rundele 1 până la 8;

K7, K6, K5, K4, K3, K2, K1, K0, K7, K6 etc. - în rundele 9 până la 32.

Toate blocurile sunt criptate independent unul de celălalt, adică rezultatul criptării fiecărui bloc depinde numai de conținutul acestuia (blocul sursă corespunzător). Dacă există mai multe blocuri identice ale textului original (plat), blocurile de text cifrat corespunzătoare vor fi, de asemenea, aceleași, ceea ce oferă informații utile suplimentare pentru un criptoanalist care încearcă să deschidă cifrul. Prin urmare, acest mod este utilizat în principal pentru a cripta cheile de criptare în sine (se implementează adesea scheme cu mai multe chei, în care, din mai multe motive, cheile sunt criptate una peste alta). Pentru a cripta informațiile în sine, sunt destinate alte două moduri de operare - gamma și gamma cu feedback.

ÎN modul gamma fiecare bloc de text simplu este adăugat pe biți modulo 2 la blocul gamma de 64 de biți. Cifrul gamma este o secvență specială, care se obține ca urmare a anumitor operații cu registrele N1 și N2 (vezi Fig. 1).

1. În registrele N1 și N2 se scrie umplerea lor inițială - o valoare de 64 de biți numită mesaj de sincronizare.

2. Criptarea conținutului registrelor N1 și N2 (în acest caz, mesaje sincronizate) se realizează în modul de înlocuire simplă.

3. Conținutul registrului N1 se adaugă modulo (232 - 1) cu constanta C1 = 224 + 216 + 28 + 24, iar rezultatul adunării se scrie în registrul N1.

4. Conținutul registrului N2 se adaugă modulo 232 cu constanta C2 = 224 + 216 + 28 + 1, iar rezultatul adunării se scrie în registrul N2.

5. Conținutul registrelor N1 și N2 este scos ca un bloc gamma de 64 de biți (în acest caz, N1 și N2 formează primul bloc gamma).

Dacă este necesar următorul bloc gamma (adică criptarea sau decriptarea trebuie să continue), reveniți la pasul 2.

Pentru decriptare, gamma este generată într-un mod similar, iar apoi textul cifrat și biții gamma sunt din nou XORed. Întrucât această operație este reversibilă, în cazul unui gamma corect dezvoltat, se obține textul original (tabelul).

Criptare și decriptare în modul gamma

Pentru a dezvolta intervalul de criptare necesar pentru decriptare, utilizatorul care decriptează criptograma trebuie să aibă aceeași cheie și aceeași valoare a mesajului de sincronizare care au fost utilizate când informația a fost criptată. În caz contrar, nu veți putea obține textul original din cel criptat.

În majoritatea implementărilor algoritmului GOST 28147-89, mesajul de sincronizare nu este secret, dar există sisteme în care mesajul de sincronizare este același element secret ca și cheia de criptare. Pentru astfel de sisteme, lungimea efectivă a cheii algoritmului (256 de biți) este mărită cu încă 64 de biți ai mesajului de sincronizare secretă, care poate fi considerat și ca element cheie.

În modul feedback gamma, pentru a umple registrele N1 și N2, începând cu al 2-lea bloc, nu se folosește blocul gamma anterior, ci rezultatul criptării blocului de text simplu anterior (Fig. 2). Primul bloc din acest mod este generat exact în același mod ca și cel anterior.

Orez. 2. Dezvoltarea cifrului gamma în modul gamma cu feedback.

Luând în considerare modul generarea de prefixe de imitaţie, este necesar să se definească conceptul de subiect al generației. O falsificare este o sumă de control criptografică calculată folosind o cheie de criptare și concepută pentru a verifica integritatea mesajelor. La generarea unui prefix, se efectuează următoarele operații: primul bloc de 64 de biți al matricei de informații, pentru care se calculează prefixul, este scris în registrele N1 și N2 și criptat în modul de înlocuire simplă redusă (primele 16 se efectuează runde din 32). Rezultatul obținut este însumat modulo 2 cu următorul bloc de informații, salvând rezultatul în N1 și N2.

Ciclul se repetă până la ultimul bloc de informații. Conținutul de 64 de biți al registrelor N1 și N2, sau o parte a acestuia, rezultată din aceste transformări, se numește prefix de imitație. Mărimea prefixului este aleasă în funcție de fiabilitatea necesară a mesajelor: cu o lungime a prefixului r biți, probabilitatea ca o modificare a mesajului să treacă neobservată este de 2-r. Cel mai adesea, un prefix de 32 de biți este utilizat, adică jumătate din conținutul registrelor. Acest lucru este suficient, deoarece, ca orice sumă de control, prefixul de imitație este destinat în primul rând să protejeze împotriva distorsiunii accidentale a informațiilor. Pentru a proteja împotriva modificării deliberate a datelor, sunt utilizate alte metode criptografice - în primul rând o semnătură digitală electronică.

La schimbul de informații, prefixul de imitație servește ca un fel de mijloc suplimentar de control. Este calculat pentru textul simplu atunci când unele informații sunt criptate și sunt trimise împreună cu textul cifrat. După decriptare, se calculează o nouă valoare a prefixului de imitație, care este comparată cu cea trimisă. Dacă valorile nu se potrivesc, înseamnă că textul cifrat a fost distorsionat în timpul transmiterii sau au fost folosite chei incorecte în timpul decriptării. Prefixul de imitație este util în special pentru verificarea decriptării corecte a informațiilor cheie atunci când se utilizează scheme cu mai multe chei.

Algoritmul GOST 28147-89 este considerat un algoritm foarte puternic - în prezent, nu au fost propuse metode mai eficiente pentru dezvăluirea sa decât metoda „forță brută” menționată mai sus. Securitatea sa ridicată este atinsă în primul rând datorită lungimii mari a cheii - 256 de biți. Când se utilizează un mesaj de sincronizare secretă, lungimea efectivă a cheii este mărită la 320 de biți, iar secretul tabelului de înlocuire adaugă biți suplimentari. În plus, puterea criptografică depinde de numărul de runde de transformări, care, conform GOST 28147-89, ar trebui să fie 32 (efectul complet al dispersării datelor de intrare este atins după 8 runde).

Standardul AES

Spre deosebire de algoritmul GOST 28147-89, care a rămas secret multă vreme, standardul american de criptare AES, conceput pentru a înlocui DES, a fost selectat printr-un concurs deschis, în care toate organizațiile și persoanele interesate au putut studia și comenta algoritmii solicitanților.

Un concurs pentru înlocuirea DES a fost anunțat în 1997 de către Institutul Național de Standarde și Tehnologie din SUA (NIST - Institutul Național de Standarde și Tehnologie). La concurs au fost supuși 15 algoritmi solicitanți, dezvoltați atât de organizații cunoscute în domeniul criptografiei (RSA Security, Counterpane etc.), cât și de persoane fizice. Rezultatele competiției au fost anunțate în octombrie 2000: câștigătorul a fost algoritmul Rijndael, dezvoltat de doi criptografi din Belgia, Vincent Rijmen și Joan Daemen.

Algoritmul Rijndael este spre deosebire de majoritatea algoritmilor de criptare simetrică bine-cunoscuți, a căror structură se numește „rețeaua Feistel” și este similară cu GOST rusesc 28147-89. O caracteristică a rețelei Feistel este că valoarea de intrare este împărțită în două sau mai multe subblocuri, dintre care unele sunt procesate conform unei anumite legi în fiecare rundă, după care este suprapusă subblocurilor neprocesate (vezi Fig. 1).

Spre deosebire de standardul de criptare autohton, algoritmul Rijndael reprezintă un bloc de date sub forma unei matrice bidimensionale de octeți cu dimensiunea 4X4, 4X6 sau 4X8 (sunt permise mai multe dimensiuni fixe ale blocului de informații criptate). Toate operațiunile sunt efectuate pe octeți individuali ai matricei, precum și pe coloane și rânduri independente.

Algoritmul Rijndael efectuează patru transformări: BS (ByteSub) - înlocuirea tabelului a fiecărui octet al matricei (Fig. 3); SR (ShiftRow) - deplasare rând de matrice (Fig. 4). Cu această operație, primul rând rămâne neschimbat, iar restul sunt deplasați ciclic octet cu octet la stânga cu un număr fix de octeți, în funcție de dimensiunea matricei. De exemplu, pentru o matrice 4X4, rândurile 2, 3 și 4 sunt deplasate cu 1, 2 și, respectiv, 3 octeți. Urmează MC (MixColumn) - o operație pe coloane matrice independente (Fig. 5), când fiecare coloană este înmulțită cu o matrice fixă ​​c(x) conform unei anumite reguli. Și, în sfârșit, AK (AddRoundKey) - adăugarea unei chei. Fiecare bit al matricei este adăugat modulo 2 la bitul corespunzător al cheii rotunde, care, la rândul său, este calculat într-un anumit mod din cheia de criptare (Fig. 6).


Orez. 3. Operare BS.

Orez. 4. Operațiunea SR.

Orez. 5. Funcționare MC.

Numărul de runde de criptare (R) în algoritmul Rijndael este variabil (10, 12 sau 14 runde) și depinde de dimensiunea blocului și a cheii de criptare (există și mai multe dimensiuni fixe pentru cheie).

Decriptarea se realizează folosind următoarele operații inverse. Tabelul este inversat și se efectuează o înlocuire a tabelului pe tabelul invers (față de cel utilizat în criptare). Operația inversă față de SR este o deplasare circulară a rândurilor la dreapta, nu la stânga. Operația inversă pentru MC este înmulțirea după aceleași reguli cu o altă matrice d(x) care îndeplinește condiția: c(x) * d(x) = 1. Adunarea cheii AK este inversul ei însăși, deoarece folosește numai operația XOR. Aceste operații inverse sunt aplicate la decriptare în ordinea inversă celei utilizate pentru criptare.

Rijndael a devenit noul standard de criptare a datelor datorită unui număr de avantaje față de alți algoritmi. În primul rând, oferă criptare de mare viteză pe toate platformele: atât în ​​software, cât și în implementarea hardware. Se remarcă prin posibilitățile incomparabil mai bune de paralelizare a calculelor în comparație cu alți algoritmi depusi la concurs. În plus, cerințele de resurse pentru funcționarea sa sunt minime, ceea ce este important atunci când este utilizat în dispozitive cu capacități de calcul limitate.

Dezavantajul algoritmului poate fi considerat doar schema sa netradițională inerentă. Cert este că proprietățile algoritmilor bazați pe rețeaua Feistel sunt bine studiate, iar Rijndael, spre deosebire de acestea, poate conține vulnerabilități ascunse care pot fi descoperite doar după ce a trecut ceva timp de la începutul distribuției sale largi.

Criptare asimetrică

Algoritmii de criptare asimetrici, așa cum sa menționat deja, folosesc două chei: k1 este cheia de criptare sau publică și k2 este cheia de decriptare sau secretă. Cheia publică se calculează din secretul: k1 = f(k2).

Algoritmii de criptare asimetrică se bazează pe utilizarea funcțiilor unidirecționale. Prin definiție, o funcție y = f(x) este unidirecțională dacă: este ușor de calculat pentru toate posibilele x și pentru cele mai multe valori posibile ale lui y este suficient de greu de calculat x astfel încât y = f(x) .

Un exemplu de funcție unidirecțională este înmulțirea a două numere mari: N = P*Q. În sine, o astfel de înmulțire este o operație simplă. Cu toate acestea, funcția inversă (descompunerea lui N în doi factori mari), numită factorizare, conform estimărilor timpului modern, este o problemă matematică destul de complicată. De exemplu, factorizarea N cu dimensiunea 664 biți la P ? Q va necesita aproximativ 1023 de operații, iar pentru a calcula x înapoi pentru exponentul modulo y = ax mod p cu a, p și y cunoscute (cu aceleași dimensiuni de a și p) trebuie să efectuați aproximativ 1026 de operații. Ultimul dintre aceste exemple se numește „Discrete Logarithm Problem” (DLP – Discrete Logarithm Problem), iar astfel de funcții sunt adesea folosite în algoritmii de criptare asimetrică, precum și în algoritmii utilizați pentru a crea o semnătură digitală electronică.

O altă clasă importantă de funcții utilizate în criptarea asimetrică sunt funcțiile backdoor unidirecționale. Definiția lor afirmă că o funcție este unidirecțională cu un pasaj secret dacă este unidirecțională și este posibil să se calculeze eficient funcția inversă x = f-1(y), adică dacă „pasajul secret” (un număr secret, așa cum se aplică la algoritmi de criptare asimetrică - valoarea cheii secrete).

Funcțiile backdoor unidirecționale sunt utilizate în algoritmul de criptare asimetrică RSA, utilizat pe scară largă.

algoritmul RSA

Dezvoltat în 1978 de trei autori (Rivest, Shamir, Adleman), și-a primit numele de la primele litere ale numelor dezvoltatorilor. Fiabilitatea algoritmului se bazează pe dificultatea factorizării numerelor mari și calculării logaritmilor discreti. Parametrul principal al algoritmului RSA este modulul sistemului N, care este utilizat pentru toate calculele din sistem, și N = P*Q (P și Q sunt numere prime mari aleatoare secrete, de obicei de aceeași dimensiune).

Cheia secretă k2 este aleasă aleatoriu și trebuie să îndeplinească următoarele condiții:

1

unde mcd este cel mai mare divizor comun, adică k1 trebuie să fie coprime cu valoarea funcției Euler F(N), aceasta din urmă fiind egală cu numărul de numere întregi pozitive din intervalul de la 1 la N care sunt coprime la N și este calculat ca F(N) = (P - 1)*(Q - 1).

Cheia publică k1 se calculează din relație (k2*k1) = 1 mod F(N), iar pentru aceasta se folosește algoritmul Euclid generalizat (un algoritm pentru calcularea celui mai mare divizor comun). Blocul de date M este criptat folosind algoritmul RSA, după cum urmează: C=M [la puterea k1] mod N. Rețineți că, deoarece într-un criptosistem real care utilizează RSA numărul k1 este foarte mare (în prezent, dimensiunea acestuia poate ajunge până la 2048 de biți), calculul direct al lui M [la puterea k1] ireal. Pentru a-l obține, se folosește o combinație de pătrare multiplă a lui M cu înmulțirea rezultatelor.

Inversarea acestei funcții la dimensiuni mari nu este fezabilă; cu alte cuvinte, este imposibil să găsim M din C, N și k1 cunoscute. Cu toate acestea, având o cheie secretă k2, cu ajutorul unor transformări simple, se poate calcula M = Ck2 mod N. Evident, pe lângă cheia secretă în sine, este necesar să se asigure secretul parametrilor P și Q. Dacă un atacatorul își obține valorile, apoi poate calcula și cheia secretă k2.

Care este cea mai bună criptare?

Principalul dezavantaj al criptării simetrice este necesitatea de a transfera cheile „din mână în mână”. Acest neajuns este foarte grav, deoarece face imposibilă utilizarea criptării simetrice în sistemele cu un număr nelimitat de participanți. Cu toate acestea, în alte privințe, criptarea simetrică are unele avantaje care sunt clar vizibile pe fundalul unor dezavantaje serioase ale criptării asimetrice.

Prima dintre ele este viteza redusă de efectuare a operațiunilor de criptare și decriptare, datorită prezenței operațiunilor care consumă intens resurse. Un alt dezavantaj este „teoretic” - din punct de vedere matematic, puterea criptografică a algoritmilor de criptare asimetrică nu a fost dovedită. Acest lucru se datorează în primul rând problemei logaritmului discret - până acum nu a fost posibil să se demonstreze că soluția sa într-un timp acceptabil este imposibilă. Dificultăți inutile sunt create și de necesitatea de a proteja cheile publice de înlocuire - prin înlocuirea cheii publice a unui utilizator legal, un atacator va putea cripta un mesaj important folosind cheia sa publică și, ulterior, îl va decripta cu ușurință cu cheia sa secretă.

Cu toate acestea, aceste neajunsuri nu împiedică utilizarea pe scară largă a algoritmilor de criptare asimetrică. Astăzi, există criptosisteme care acceptă certificarea cu chei publice, precum și combină algoritmi de criptare simetrici și asimetrici. Dar acesta este un subiect pentru un articol separat.

Surse suplimentare de informații

Pentru acei cititori care nu sunt interesați de criptare, autorul recomandă extinderea orizontului lor cu ajutorul cărților următoare.

  1. Brassard J. „Criptologie modernă”.
  2. Petrov A. A. „Securitatea computerelor: metode criptografice de protecție”.
  3. Romanets Yu. V., Timofeev PA, Shangin VF „Securitatea informațiilor în sistemele informatice moderne”.
  4. Sokolov A. V., Shangin V. F. „Protecția informațiilor în rețelele și sistemele corporative distribuite”.

O descriere completă a algoritmilor de criptare poate fi găsită în următoarele documente:

  1. GOST 28147-89. Sistem de prelucrare a informațiilor. Protecție criptografică. Algoritm de transformare criptografică. - M.: Gosstandart al URSS, 1989.
  2. Algoritmul AES: http://www.nist.gov/ae.
  3. Algoritm RSA: http://www.rsasecurity.com/rsalabs/pkcs/pkcs-1.

Datorită faptului că funcția principală a software-ului nostru este criptarea datelor, ni se pun adesea întrebări cu privire la anumite aspecte ale criptografiei. Am decis să colectăm cele mai frecvente întrebări într-un singur document și am încercat să le oferim cele mai detaliate, dar în același timp, nu supraîncărcate cu răspunsuri de informații inutile.

1. Ce este criptografia?

Criptografia este o disciplină științifică teoretică, o ramură a matematicii care studiază transformarea informațiilor pentru a o proteja de acțiunile rezonabile ale inamicului.

2. Ce este un algoritm de criptare?

Un algoritm de criptare este un set de reguli logice care determină procesul de conversie a informațiilor dintr-o stare deschisă într-o stare criptată (criptare) și, invers, dintr-o stare criptată într-o stare deschisă (decriptare).

Algoritmii de criptare apar ca rezultat al cercetărilor teoretice, atât de către oameni de știință individuali, cât și echipe de cercetare.

3. Cum sunt protejate datele prin criptare?

Principiul de bază al protecției datelor prin criptare este criptarea datelor. Pentru un străin, datele criptate arată ca „gunoaie de informații” - un set de caractere fără sens. Astfel, dacă informația în formă criptată ajunge la atacator, pur și simplu nu o va putea folosi.

4. Care este cel mai puternic algoritm de criptare?

În principiu, orice algoritm de criptare propus de un criptograf binecunoscut este considerat sigur până când se dovedește contrariul.

De regulă, toți algoritmii de criptare care apar recent sunt publicati pentru revizuire publică și sunt studiati cuprinzător în centre specializate de cercetare criptografică. Rezultatele unor astfel de studii sunt, de asemenea, publicate pentru revizuire publică.

5. Ce este o cheie de criptare?

O cheie de criptare este o secvență de biți aleatorie, pseudo-aleatorie sau special formată, care este un parametru variabil al algoritmului de criptare.

Cu alte cuvinte, dacă criptați aceleași informații cu același algoritm, dar cu chei diferite, rezultatele vor fi și ele diferite.

Cheia de criptare are o caracteristică esențială - lungimea, care este de obicei măsurată în biți.

6. Care sunt algoritmii de criptare?

Algoritmii de criptare sunt împărțiți în două clase mari - simetrice și asimetrice (sau asimetrice).

Algoritmii de criptare simetrică folosesc aceeași cheie pentru a cripta informațiile și pentru a le decripta. În acest caz, cheia de criptare trebuie să fie secretă.

Algoritmii de criptare simetrică, de regulă, sunt ușor de implementat și nu necesită multe resurse de calcul pentru munca lor. Cu toate acestea, inconvenientul unor astfel de algoritmi se manifestă în cazurile în care, de exemplu, doi utilizatori trebuie să facă schimb de chei. În acest caz, utilizatorii fie trebuie să se întâlnească direct, fie să aibă un fel de canal de încredere, inviolabil, pentru a trimite cheia, ceea ce nu este întotdeauna posibil.

Exemple de algoritmi de criptare simetrică sunt DES, RC4, RC5, AES, CAST.

Algoritmii de criptare asimetrică folosesc două chei, una pentru criptare și una pentru decriptare. În acest caz, se vorbește despre o pereche de chei. O cheie dintr-o pereche poate fi publică (accesabilă pentru toată lumea), cealaltă poate fi secretă.

Algoritmii de criptare asimetrică sunt mai greu de implementat și mai pretențioși la resursele de calcul decât cei simetrici, însă problema schimbului de chei între doi utilizatori este mai ușor de rezolvat.

Fiecare utilizator își poate crea propria pereche de chei și poate trimite cheia publică abonatului său. Această cheie poate cripta doar datele; decriptarea necesită o cheie secretă, care este stocată numai de proprietarul acesteia. Astfel, obținerea unei chei publice de către un atacator nu îi va oferi nimic, deoarece îi este imposibil să decripteze datele criptate.

Exemple de algoritmi de criptare asimetrică sunt RSA, El-Gamal.

7. Cum sunt sparți algoritmii de criptare?

În știința criptografică, există o subsecțiune - criptoanaliza, care studiază problemele ruperii algoritmilor de criptare, adică obținerea de informații deschise din informații criptate fără o cheie de criptare.

Există multe moduri și metode diferite de criptoanaliza, dintre care majoritatea sunt prea complexe și lungi pentru a fi reproduse aici.

Singura metodă care merită menționată este enumerarea directă a tuturor valorilor posibile ale cheii de criptare (numită și metoda forței brute sau forța brută). Esența acestei metode este de a enumera toate valorile posibile ale cheii de criptare până când este găsită cheia dorită.

8. Care ar trebui să fie lungimea cheii de criptare?

Astăzi, pentru algoritmii de criptare simetrică, 128 de biți (16 octeți) este considerată o lungime suficientă a cheii de criptare. Pentru o enumerare completă a tuturor cheilor posibile cu o lungime de 128 de biți (atac de forță brută) într-un an, aveți nevoie de procesoare 4.2x1022 cu o capacitate de 256 milioane de operațiuni de criptare pe secundă. Costul acestui număr de procesoare este de 3,5x1024 dolari SUA (conform lui Bruce Schneier, Applied Cryptography).

Există un proiect internațional distribuit.net, al cărui scop este de a uni utilizatorii de internet pentru a crea un supercomputer virtual distribuit care enumeră cheile de criptare. Cel mai recent proiect de cracare a cheilor pe 64 de biți a fost finalizat în 1757 de zile, implicând peste 300.000 de utilizatori, iar puterea de calcul a tuturor computerelor din proiect a fost echivalentă cu aproape 50.000 de procesoare AMD Athlon XP de 2 GHz.

În acest caz, trebuie luat în considerare faptul că mărirea lungimii cheii de criptare cu un bit dublează numărul valorilor cheii și, în consecință, timpul de enumerare. Adică, pe baza cifrelor de mai sus, în 1757 * 2 zile este posibil să spargeți nu o cheie de 128 de biți, așa cum ar părea la prima vedere, ci doar una de 65 de biți.

9. Am auzit despre chei de criptare de 1024 și chiar 2048 de biți și spui că 128 de biți este suficient. Ce înseamnă?

Așa este, cheile de criptare de 512, 1024 și 2048 de biți, și uneori chiar mai lungi, sunt folosite în algoritmii de criptare asimetrică. Ei folosesc principii care sunt complet diferite de algoritmii simetrici, astfel încât scarile cheilor de criptare sunt și ele diferite.

Răspunsul la această întrebare este cel mai păzit secret al serviciilor speciale ale oricărui stat. Din punct de vedere teoretic, este imposibil să citești date criptate folosind un algoritm cunoscut cu o cheie de lungime suficientă (vezi întrebările anterioare), totuși, cine știe ce se ascunde în spatele vălului secretelor de stat? Se poate dovedi că există câteva tehnologii extraterestre cunoscute de guvern, cu care poți sparge orice cifră 🙂

Singurul lucru care poate fi afirmat cu certitudine este că nici un singur stat, nici un singur serviciu special nu va dezvălui acest secret și, chiar dacă este posibil să decriptezi cumva datele, nu le va arăta niciodată în niciun fel.

Pentru a ilustra această afirmație, poate fi dat un exemplu istoric. În timpul celui de-al Doilea Război Mondial, premierul britanic Winston Churchill, ca urmare a interceptării și decriptării mesajelor germane, a luat cunoștință de viitorul bombardament asupra orașului Coventry. În ciuda acestui fapt, el nu a luat nicio măsură pentru a împiedica inamicul să afle că serviciile secrete britanice le-ar putea descifra mesajele. Drept urmare, în noaptea de 14-15 noiembrie 1940, Coventry a fost distrusă de aeronavele germane, ucigând un număr mare de civili. Astfel, pentru Churchill, prețul divulgării informațiilor pe care le putea descifra mesajele germane s-a dovedit a fi mai mare decât prețul a câteva mii de vieți umane.

Este evident că pentru politicienii moderni prețul unor astfel de informații este și mai mare, așa că nu vom afla nimic despre capacitățile serviciilor speciale moderne, nici explicit, nici indirect. Deci, chiar dacă răspunsul la această întrebare este da, această posibilitate, cel mai probabil, nu se va manifesta în niciun fel.

Sursa: SecurIT

^ reveni pentru a începe ^

De obicei, noi algoritmi de criptare sunt publicati pentru revizuire publică și studiati în centre de cercetare specializate. Rezultatele unor astfel de studii sunt, de asemenea, publicate pentru revizuire publică.

Algoritmi simetrici
Algoritmii de criptare sunt împărțiți în două clase mari: simetrice (AES, GOST, Blowfish, CAST, DES) și asimetrice (RSA, El-Gamal). Algoritmii de criptare simetrică folosesc aceeași cheie pentru a cripta informațiile și a le decripta, în timp ce algoritmii asimetrici folosesc două chei - una pentru a cripta și una pentru a decripta.

Dacă informațiile criptate trebuie transferate în alt loc, atunci și cheia de decriptare trebuie să fie transferată acolo. Punctul slab aici este canalul de transmisie a datelor - dacă nu este sigur sau este ascultat, atunci cheia de decriptare poate ajunge la atacator. Sistemele bazate pe algoritmi asimetrici nu au acest neajuns. Deoarece fiecare participant într-un astfel de sistem are o pereche de chei: cheie publică și cheie secretă.

Cheie de criptare
Aceasta este o secvență aleatorie sau special creată de biți conform parolei, care este un parametru variabil al algoritmului de criptare.
Dacă criptați aceleași date cu același algoritm, dar cu chei diferite, rezultatele vor fi și ele diferite.

De obicei, în Software-ul de criptare (WinRAR, Rohos etc.), cheia este creată dintr-o parolă pe care o specifică utilizatorul.

Cheia de criptare vine în lungimi diferite, care sunt de obicei măsurate în biți. Pe măsură ce lungimea cheii crește, securitatea teoretică a cifrului crește. În practică, acest lucru nu este întotdeauna adevărat.

În criptografie, se consideră că mecanismul de criptare este o valoare non-secretă, iar un atacator poate avea codul sursă complet al algoritmului de criptare, precum și textul cifrat (regula lui Kerckhoff). O altă presupunere care poate avea loc este că un atacator poate cunoaște o parte din textul necriptat (plat).

Puterea algoritmului de criptare.
Un algoritm de criptare este considerat puternic până când se dovedește contrariul. Astfel, dacă un algoritm de criptare a fost publicat, există de mai bine de 5 ani și nu au fost găsite vulnerabilități serioase pentru acesta, putem presupune că puterea lui este potrivită pentru protejarea informațiilor secrete.

Durabilitate teoretică și practică.
În 1949 K.E. Shannon a publicat un articol „Teoria comunicării în sistemele secrete”. Shannon a considerat puterea sistemelor criptografice ca fiind practică și teoretică. Concluzia privind securitatea teoretică este încă pesimistă: lungimea cheii ar trebui să fie egală cu lungimea textului simplu.
Prin urmare, Shannon a luat în considerare și problema puterii practice a sistemelor criptografice. Este sistemul fiabil dacă atacatorul are timp și resurse de calcul limitate pentru a analiza mesajele interceptate?

De obicei, vulnerabilitățile se găsesc în programele care criptează datele folosind un anumit algoritm. În acest caz, programatorii fac o greșeală în logica programului sau în protocolul criptografic, datorită căruia, după ce a studiat modul în care funcționează programul (la un nivel scăzut), se poate obține în cele din urmă acces la informații secrete.

Ruperea algoritmului de criptare
Se crede că criptosistemul a fost rezolvat dacă atacatorul poate calcula cheia secretă și, de asemenea, poate realiza un algoritm de conversie echivalent cu criptoalgoritmul original. Și că acest algoritm era fezabil în timp real.

În criptologie, există o subsecțiune numită criptoanaliza, care studiază problemele crackării sau falsificării mesajelor criptate. Există multe moduri și metode de criptoanaliza. Cea mai populară este metoda de enumerare directă a tuturor valorilor posibile ale cheii de criptare (așa-numita „forță brută” sau metoda forței brute). Esența acestei metode este de a enumera toate valorile posibile ale cheii de criptare până când este găsită cheia dorită.

În practică, aceasta înseamnă că un atacator trebuie:

  • Aveți la dispoziție un criptosistem (adică un program) și exemple de mesaje criptate.
  • Înțelegeți protocolul criptografic. Cu alte cuvinte, modul în care programul criptează datele.
  • Dezvoltați și implementați un algoritm pentru enumerarea cheilor pentru acest criptosistem.

Cum poți spune dacă o cheie este validă sau nu?
Totul depinde de programul specific și de implementarea protocolului de criptare. De obicei, dacă după decriptare s-a dovedit a fi „gunoi”, atunci aceasta este cheia greșită. Și dacă textul este mai mult sau mai puțin semnificativ (acest lucru poate fi verificat), atunci Cheia este corectă.

Algoritmi de criptare
AES (Rijndael). În prezent, este standardul federal de criptare din SUA.

Ce algoritm de criptare să alegeți pentru a proteja informațiile?

Aprobat ca standard de Departamentul de Comerț la 4 decembrie 2001. Decizia a intrat în vigoare din momentul publicării în registrul federal (06.12.01). O variantă de cifrare cu doar o dimensiune de bloc de 128 de biți este acceptată ca standard.

GOST 28147-8. Standard al Federației Ruse pentru criptarea datelor și protecția împotriva imitațiilor. Inițial, a avut un gât (OV sau SS - nu se știe exact), apoi gâtul a fost redus constant, iar până când algoritmul a fost realizat oficial prin Standardul de stat al URSS în 1989, a fost eliminat. Algoritmul a rămas DSP (după cum știți, DSP nu este considerat un gât). În 1989, a devenit standardul oficial al URSS, iar mai târziu, după prăbușirea URSS, standardul federal al Federației Ruse.

blowfish O schemă complexă pentru generarea elementelor cheie complică semnificativ un atac cu forță brută asupra algoritmului, dar îl face nepotrivit pentru utilizarea în sistemele în care cheia se schimbă frecvent și datele mici sunt criptate pe fiecare cheie.

Algoritmul este cel mai potrivit pentru sistemele în care cantități mari de date sunt criptate folosind aceeași cheie.

DES Standard federal de criptare din SUA 1977-2001. Adoptat ca standard federal al SUA în 1977. În decembrie 2001, și-a pierdut statutul din cauza introducerii unui nou standard.

CASTÎntr-un fel, un analog al DES.

www.codenet.ru/progr/alg/enc
Algoritmi de criptare, Prezentare generală, informații, comparație.

http://www.enlight.ru/crypto
Materiale privind criptarea asimetrică, semnătura digitală și alte sisteme criptografice „moderne”.

Alexandru Velikanov,
Olga Cheban,
Tesline Service S.R.L.

Fostul bancher din Abu Dhabi, Mohammad Ghaith bin Mahah Al Mazrui, a dezvoltat un cifr despre care el susține că este indestructibil. Cifrul numit „Codul Abu Dhabi” a fost creat pe baza unui grup de simboluri inventat de însuși Al Mazrui. În codul său, fiecare literă este înlocuită cu un simbol special inventat, iar aceste simboluri nu aparțin niciunei limbi cunoscute din lume.

Ce algoritmi de criptare a datelor sunt mai siguri

Dezvoltatorului i-a luat un an și jumătate să lucreze la cifrul, pe care Al Mazrui îl numește „absolut nou”.

Potrivit entuziastului, fiecare își poate crea propriul cod, iar complexitatea cifrului este determinată de lungimea cheii sale. Se crede că, în principiu, dacă există o dorință, anumite abilități și software adecvat, aproape fiecare, chiar și cel mai complex cifru poate fi spart.

Cu toate acestea, Al Mazrui asigură că creația sa este indestructibilă și este de departe cel mai fiabil cifr. „Este aproape imposibil să descifrezi un document codificat cu Codul Abu Dhabi”, este sigur Al Mazrui.

Pentru a-și dovedi cazul, bancherul i-a provocat pe toți criptografii, hackerii și criptografii remarcabili, îndemnându-i să încerce să-i spargă cifrul.

3. Kryptos este o sculptură pe care sculptorul american James Sanborn a instalat-o pe terenul sediului CIA din Langley, Virginia, în 1990. Mesajul criptat imprimat pe el încă nu poate fi dezlegat.

4. Cifrul imprimat pe lingot de aur chinezesc. Se presupune că șapte lingouri de aur au fost eliberate în 1933 generalului Wang în Shanghai. Sunt marcate cu imagini, litere chinezești și unele mesaje criptate, inclusiv cu litere latine. Acestea pot conține certificate de autenticitate ale metalului emise de una dintre băncile din SUA.

Ce algoritm de criptare să alegeți în TrueCrypt

5. Criptograme Bale Trei mesaje criptate despre care se crede că conțin detalii despre locația unui tezaur de două vagoane încărcate de aur, argint și pietre prețioase îngropate în anii 1820 lângă Lynchburg, în comitatul Bedford, Virginia, de un grup de mineri de aur condus de Thomas Jefferson Bale. Prețul unei comori negăsite până acum, în termeni de bani moderni, ar trebui să fie de aproximativ 30 de milioane de dolari. Enigma criptogramelor nu a fost rezolvată până acum, în special, întrebarea existenței reale a comorii rămâne controversată. Unul dintre mesaje a fost descifrat - descrie comoara în sine și oferă indicații generale despre locația sa. Literele rămase nedeschise pot conține locația exactă a semnului de carte și o listă a proprietarilor comorii. (informatii detaliate)

6. Manuscrisul Voynich adesea menționată drept cea mai misterioasă carte din lume. Manuscrisul folosește un alfabet unic, conține aproximativ 250 de pagini și desene înfățișând flori necunoscute, nimfe goale și simboluri astrologice. A apărut pentru prima dată la sfârșitul secolului al XVI-lea, când Sfântul Împărat Roman Rudolph al II-lea l-a cumpărat la Praga de la un comerciant necunoscut pentru 600 de ducați (aproximativ 3,5 kg de aur, astăzi peste 50 de mii de dolari). De la Rudolph al II-lea, cartea a trecut la nobili și oameni de știință și a dispărut la sfârșitul secolului al XVII-lea. Manuscrisul a reapărut în jurul anului 1912 când a fost cumpărat de librarul american Wilfried Voynich. După moartea sa, manuscrisul a fost donat Universității Yale. Savantul britanic Gordon Rugg crede că cartea este o păcăleală inteligentă. Textul are caracteristici care nu sunt caracteristice niciunei limbi. Pe de altă parte, unele caracteristici, cum ar fi lungimea cuvintelor, modul în care literele și silabele sunt conectate, sunt similare cu cele găsite în limbile reale. „Mulți oameni cred că toate acestea sunt prea complicate pentru o farsă pentru a construi un astfel de sistem, ar fi nevoie de niște ani nebuni de alchimist”, spune Rugg. Cu toate acestea, Rugg arată că această complexitate ar fi putut fi atinsă cu ușurință folosind un dispozitiv de cifrare inventat în jurul anului 1550 și numit grila Cardan. În acest tabel cu simboluri, cuvintele sunt create prin mutarea unei cărți cu găuri tăiate în ea. Datorită spațiilor rămase în tabel, cuvintele sunt de lungimi diferite. Prin impunerea unor astfel de grile pe tabelul de silabe a manuscrisului, Rugg a creat un limbaj care împărtășește multe, dacă nu toate, caracteristicile limbajului manuscrisului. Potrivit acestuia, trei luni ar fi suficiente pentru a crea întreaga carte. (informații detaliate, wikipedia)

7. Cifrul Dorabella, compusă în 1897 de compozitorul britanic Sir Edward William Elgar. În formă criptată, el a trimis o scrisoare în orașul Wolverhampton iubitei sale Dora Penny, fiica în vârstă de 22 de ani a lui Alfred Penny, rectorul Catedralei Sf. Petru. Acest cifru rămâne nerezolvat.

8. Până de curând, pe listă au participat Chaocipher, care nu a putut fi descoperit în timpul vieții creatorului său. Cifrul a fost inventat de John F. Byrne în 1918 și timp de aproape 40 de ani a încercat fără succes să intereseze autoritățile americane în el. Inventatorul a oferit o recompensă bănească oricui putea să-și rezolve cifra, dar, ca urmare, nimeni nu a cerut-o.

Dar în mai 2010, membrii familiei lui Byrne au predat toate documentele rămase ale lui Byrne Muzeului Criptografic Național din Maryland, ceea ce a dus la descoperirea algoritmului.

9. Cifrul D'Agapeyeff. În 1939, cartograful britanic de origine rusă, Alexander D'Agapeyeff, a publicat o carte despre elementele de bază ale criptografiei Codes and Ciphers, în prima ediție a căreia a citat un cifr din propria sa invenție. Acest cifru nu a fost inclus în edițiile ulterioare. Ulterior, D'Agapeyeff a recunoscut că a uitat algoritmul pentru decriptarea acestui cifr. Se bănuiește că eșecurile care s-au lovit de toți cei care au încercat să-i descifreze opera se datorează faptului că autorul a greșit la cifrarea textului.

Dar în timpul nostru, există speranța că cifrul poate fi rezolvat folosind metode moderne - de exemplu, un algoritm genetic.

10. Taman Shud. La 1 decembrie 1948, pe coasta Australiei, în Somerton, lângă Adelaide, a fost găsit cadavrul unui bărbat, îmbrăcat într-un pulover și o haină, în ciuda zilei caracteristice toride pentru clima australiană. Nu s-au găsit documente despre el. Încercările de a compara amprentele dinților și degetelor sale cu datele disponibile despre oamenii vii au fost, de asemenea, în zadar. O examinare post-mortem a scos la iveală un flux nenatural de sânge, care i-a umplut, în special, cavitatea abdominală, precum și o creștere a organelor interne, dar nu au fost găsite substanțe străine în corpul său. La gară au găsit simultan o valiză care ar fi putut aparține defunctului. În valiza conținea pantaloni cu un buzunar secret în care au găsit o bucată de hârtie ruptă dintr-o carte pe care erau imprimate cuvintele. Taman Shud. Ancheta a constatat că o bucată de hârtie a fost ruptă dintr-o copie foarte rară a colecției Rubaiyat a marelui poet persan Omar Khayyam. Cartea în sine a fost găsită pe bancheta din spate a unei mașini lăsate descuiate. Pe coperta din spate a cărții, cinci rânduri erau mâzgălite cu majuscule - sensul acestui mesaj nu a putut fi descifrat. Până astăzi, această poveste rămâne unul dintre cele mai misterioase mistere ale Australiei.

09.07.2003

Ce este criptarea?

Criptarea a fost folosită de omenire încă din momentul în care au apărut primele informații secrete, adică una la care accesul ar trebui limitat. A fost cu foarte mult timp în urmă - așa că, una dintre cele mai faimoase metode de criptare poartă numele lui Cezar, care, dacă nu a inventat-o ​​el însuși, a folosit-o în mod activ (vezi bara laterală).

Criptografia asigură ascunderea sensului mesajului și dezvăluirea decriptării acestuia folosind algoritmi și chei speciali. Cheia este înțeleasă de noi ca o stare secretă specifică a parametrilor algoritmilor de criptare și decriptare. Cunoașterea cheii face posibilă citirea mesajului secret. Cu toate acestea, după cum veți vedea mai jos, ignorarea cheii nu garantează întotdeauna că mesajul nu poate fi citit de un străin.

Procesul de spargere a unui cifr fără a cunoaște cheia se numește criptoanaliza. Timpul necesar pentru spargerea unui cifr este determinat de puterea sa criptografică. Cu cât este mai mare, cu atât algoritmul de criptare este mai „puternic”. Și mai bine, dacă inițial este imposibil să aflăm deloc dacă rezultatul hackingului este realizabil.

Metode moderne de criptare de bază

Dintre diferitele metode de criptare, se pot distinge următoarele metode principale:

  • Algoritmi de substituire sau substituire - caracterele textului sursă sunt înlocuite cu caractere ale altui (sau aceluiași) alfabet în conformitate cu o schemă prestabilită, care va fi cheia acestui cifr. Separat, această metodă practic nu este utilizată în criptosistemele moderne din cauza puterii criptografice extrem de scăzute.
  • Algoritmi de permutare - caracterele textului original sunt schimbate după un anumit principiu, care este cheia secretă. Algoritmul de permutare în sine are o putere criptografică scăzută, dar este inclus ca element în multe criptosisteme moderne.
  • Algoritmi gamma - caracterele textului sursă sunt adăugate la caracterele unei secvențe aleatorii. Cel mai comun exemplu este criptarea fișierelor „username.pwl”, în care sistemul de operare Microsoft Windows 95 stochează parole pentru resursele de rețea ale unui anumit utilizator (parole pentru autentificarea la serverele NT, parolele pentru acces la Internet DialUp etc.) .

Când un utilizator își introduce parola pentru a se conecta la Windows 95, acesta generează o gama (întotdeauna aceeași) folosită pentru a cripta parolele de rețea folosind algoritmul de criptare RC4. Simplitatea selectării parolei se datorează în acest caz faptului că Windows preferă întotdeauna aceeași gamă.

  • Algoritmi bazați pe transformări matematice complexe ale textului sursă după o anumită formulă. Mulți dintre ei folosesc probleme matematice nerezolvate. De exemplu, algoritmul de criptare RSA utilizat pe scară largă pe Internet se bazează pe proprietățile numerelor prime.

Criptosisteme simetrice și asimetrice

Înainte de a trece la algoritmi individuali, să luăm în considerare pe scurt conceptul de criptosisteme simetrice și asimetrice. Generarea unei chei secrete și criptarea unui mesaj cu ea reprezintă jumătate din luptă. Dar cum să trimiți o astfel de cheie cuiva care ar trebui să o folosească pentru a decripta mesajul original? Transmiterea cheii de criptare este considerată una dintre problemele majore ale criptografiei.

Rămânând în cadrul unui sistem simetric (cum este numit pentru că aceeași cheie este potrivită pentru criptare și decriptare), este necesar să existe un canal de comunicare fiabil pentru transmiterea unei chei secrete. Dar un astfel de canal nu este întotdeauna disponibil și, prin urmare, matematicienii americani Diffie, Hellman și Merkle au dezvoltat în 1976 conceptul de cheie publică și criptare asimetrică. În astfel de criptosisteme, doar cheia pentru procesul de criptare este disponibilă public, iar procedura de decriptare este cunoscută numai de proprietarul cheii secrete.

De exemplu, când vreau să mi se trimită un mesaj, generez o cheie publică și privată. Deschide Trimite-ți, criptezi un mesaj pentru ei și mi-l trimiți. Numai eu pot decripta mesajul, deoarece nu am dat cheia secretă nimănui. Desigur, ambele chei sunt legate într-un mod special (în fiecare criptosistem diferit), iar distribuția cheii publice nu distruge puterea criptografică a sistemului.

În sistemele asimetrice, trebuie îndeplinită următoarea cerință: nu există un astfel de algoritm (sau este încă necunoscut) care ar deriva textul original din criptotext și cheia publică. Un exemplu de astfel de sistem este binecunoscutul sistem criptografic RSA.

algoritmul RSA

Algoritmul RSA (conform primelor litere ale numelor creatorilor săi Rivest-Shamir-Adleman) se bazează pe proprietățile numerelor prime (și chiar și pe cele foarte mari). Numerele prime sunt acele numere care nu au alți divizori decât ele însele și unul. Numerele coprime sunt numere care nu au divizori comuni alții decât 1.

Mai întâi, să alegem două numere prime foarte mari (sunt necesare numere inițiale mari pentru a construi chei puternice mari. De exemplu, programul Unix ssh-keygen generează chei de 1024 de biți în mod implicit).

Să definim parametrul n ca urmare a înmulţirii pȘi q. Alegem un număr mare aleatoriu și îl numim d, și trebuie să fie coprime cu rezultatul înmulțirii (p-1)*(q-1).

Găsiți un număr e pentru care relația este adevărată

(e*d) mod ((p -1)*(q -1)) = 1

(mod- restul diviziunii, adică dacă e înmulțit cu d este împărțit cu ((p-1)*(q-1)), atunci restul este 1).

Cheia publică este o pereche de numere e și n, și închis - d și n.

La criptare, textul sursă este considerat ca o serie de numere, iar peste fiecare dintre numerele sale executăm operația

C(i)= (M(i) e) mod n.

Rezultatul este o secvență C(i), care va forma criptotextul. Informațiile sunt decodificate conform formulei

M(i) = (C(i) d) mod n.

După cum puteți vedea, decriptarea necesită cunoașterea cheii secrete.

Să încercăm cu numere mici.

Hai să instalăm p=3, q=7. Apoi n=p*q=21. Alege d ca 5. Din formula (e*5) mod 12=1 calculati e=17. cheie publică 17, 21 , secret - 5, 21 .

Să criptăm secvența „12345”:

C(1)= 1 17 mod 21= 1

C(2)=2 17 mod 21 =11

C(3)= 3 17 mod 21= 12

C(4)= 4 17 mod 21= 16

C(5)= 5 17 mod 21= 17

Criptotext - 1 11 12 16 17.

Să verificăm decriptarea:

M(1)= 1 5 mod 21= 1

M(2)= 11 5 mod 21= 2

M(3)= 12 5 mod 21= 3

M(4)= 16 5 mod 21= 4

M(5)= 17 5 mod 21= 5

După cum puteți vedea, rezultatul este același.

Criptosistemul RSA este utilizat pe scară largă pe Internet. Când vă conectați la un server securizat prin SSL, instalați un certificat WebMoney pe computer sau vă conectați la un server la distanță folosind Open SSH sau SecureShell, toate aceste programe folosesc criptarea cu chei publice folosind ideile algoritmului RSA. Este acest sistem cu adevărat atât de fiabil?

Concursuri RSA Hack

De la înființare, RSA a fost supus în mod constant la atacuri de forță brută. În 1978, autorii algoritmului au publicat un articol în care prezentau un șir criptat după metoda pe care tocmai o inventaseră. Prima persoană care a descifrat mesajul a primit o recompensă de 100 USD, dar aceasta a necesitat ca un număr de 129 de cifre să fie factorizat în două. Acesta a fost primul concurs care a spart RSA. Problema a fost rezolvată la numai 17 ani de la publicarea articolului.

Puterea RSA se bazează pe presupunerea că este extrem de dificil, dacă nu imposibil, să se determine o cheie privată dintr-o cheie publică. Pentru a face acest lucru, a fost necesar să se rezolve problema existenței divizorilor unui număr întreg imens. Până acum, nimeni nu a rezolvat-o cu metode analitice, iar algoritmul RSA poate fi spart doar prin enumerare exhaustivă. Strict vorbind, afirmația că problema factorizării este grea și că ruperea sistemului RSA este dificilă nu este, de asemenea, dovedită.

Numărul obținut în urma procesării textului mesajului de către funcția hash este criptat folosind algoritmul RSA cu cheia privată a utilizatorului și trimis destinatarului împreună cu scrisoarea și o copie a cheii publice. Destinatarul, folosind cheia publică a expeditorului, îndeplinește aceeași funcție hash pe mesajul primit. Dacă ambele numere sunt egale, înseamnă că mesajul este autentic, iar dacă cel puțin un caracter a fost modificat, atunci numerele nu se vor potrivi.

Unul dintre cei mai obișnuiți clienți de corespondență din Rusia, The Bat!, are capabilități încorporate de a adăuga semnături digitale la scrisori (acordați atenție elementului de meniu Confidențialitate atunci când editați o scrisoare). Citiți mai multe despre această tehnică în articol (vezi „PC World”, Nr. 3/02).

Orez. 3

Criptografie

Criptografia este știința principiilor, mijloacelor și metodelor de conversie a informațiilor pentru a le proteja de accesul neautorizat și denaturare. Recent, s-a dezvoltat foarte, foarte rapid. Aceasta este o cursă incitantă fără sfârșit, care necesită mult timp și efort: criptoanalistii sparg algoritmi care până de curând erau standarde și erau folosiți pe scară largă. Apropo, recent matematicienii Dan Goldston (SUA) și Kem Ildirim (Turcia) au dovedit prima regularitate în distribuția numerelor prime (până acum astfel de regularități nu au fost observate). Numerele prime sunt situate pe axa numerică în unele grupuri, ceea ce facilitează oarecum căutarea lor.

Cercetările matematice care se desfășoară peste tot în lume duc în mod constant la tot mai multe noi descoperiri. Cine știe, poate că suntem pe punctul de a sparge algoritmul RSA sau alte criptosisteme bazate pe probleme matematice nerezolvate.

Oleg Bunin- specialist în dezvoltare software pentru proiecte mari de internet, angajat al companiei Rambler, [email protected] .

Literatură
  1. Lukashov I. V. Criptografie? Fier! // Lumea PC-urilor. 2003. Nr. 3 (
  2. Nosov V. A. O scurtă schiță istorică a dezvoltării criptografiei // Actele conferinței „Universitatea din Moscova și dezvoltarea criptografiei în Rusia”, Universitatea de Stat din Moscova, 17-18 octombrie 2002
  3. Salomaa A. Criptografia cu cheie publică. M., 1996.
  4. Zimmerman F. PGP - criptare cu cheie publică pentru toată lumea.

Sistem de criptare Caesar

Un exemplu de algoritm de înlocuire este sistemul de criptare Caesar. Această metodă se bazează pe înlocuirea fiecărei litere a mesajului cu alta prin trecerea de la cea originală cu un număr fix de caractere. Încercați să descifrați catrenul lui Omar Khayyam (timp de finalizare - 10 minute).

RLZ YOMEYZ AVBZHU IYZAVLU, BZHSHLU ZHSHCHEZZHZ ZHUYOSHZHZ, EYSHCHAFO YYSCHYVESCH BSHCHIZEZHV EESH ZhCHRSCHCH: LF EMRSYU ЪZEZESCHG, RYUYO RLZ RLZ IZICHEVUSYUHZU, VUZKYZYUKYUZU, ZHCHEVZUKYU

Ai reușit? Iată o „ghicire”:

Pentru a trăi viața cu înțelepciune, trebuie să știi multe,

Două reguli importante de reținut pentru a începe:

Prefer să mori de foame decât să mănânci orice

Și e mai bine să fii singur decât cu oricine.

Cheie pentru decriptare: mutați șapte caractere (luați al șaptelea) la stânga în ordine alfabetică. Alfabetul este în buclă. Caracterele nu fac distincție între majuscule și minuscule.

Windows și parole

Cum criptează Windows parolele?

Sistemul ia parola, o convertește în majuscule, o taie la 14 caractere, apoi le împarte în două jumătăți de 7, le criptează pe fiecare separat și o stochează astfel, ceea ce face oarecum mai ușor de spart. Apropo, atunci când veniți cu o parolă, rețineți că o combinație mai lungă de 14 caractere nu are sens.

Concurență AES (Advanced Encryption Standard).

În anii 80. în SUA au adoptat un standard de criptare simetrică pentru uz intern - DES ((Data Encryption Standard, există un standard similar în Rusia). Dar în 1997, când a devenit clar că o cheie DES pe 56 de biți nu era suficientă pentru o cheie fiabilă. criptosistem, Institutul American de Standarde a anunțat Concurs pentru un nou algoritm standard Din 15 opțiuni, a fost aleasă cea mai bună: algoritmul belgian Rijndael (numele său este alcătuit din numele autorilor - Rijmen și Daemen, se citește ca „Reindal” . Acest algoritm este deja încorporat în diverse instrumente criptografice furnizate pieței) Alți finaliști ai competiției au fost MARS, RC6, Serpent, TwoFish.Toți acești algoritmi au fost recunoscuți ca fiind suficient de rezistenți și rezistând cu succes tuturor metodelor de criptoanaliza cunoscute pe scară largă.

Funcții hash criptografice

Funcțiile hash criptografice convertesc intrarea de orice dimensiune într-un șir de dimensiune fixă. Sunt extrem de greu de găsit:

  • două seturi de date diferite cu același rezultat al transformării (rezistența la coliziune); de exemplu, numărul de operații aritmetice necesare pentru a găsi un bloc de date care are și un mesaj scurt pentru funcția hash MD5 este de aproximativ 264;
  • valoarea de intrare prin rezultatul hash cunoscut (ireversibilitate); pentru MD5, numărul estimat de operații necesare pentru a calcula mesajul original este de 2.128.

Criptare distractivă

Aproape toate metodele criptografice utilizate implică împărțirea unui mesaj într-un număr mare de părți (sau caractere) de o dimensiune fixă, fiecare dintre acestea fiind criptată separat, dacă nu independent. Acest lucru simplifică foarte mult sarcina de criptare, deoarece mesajele au de obicei lungimi diferite.

Există trei metode principale de criptare: streaming, blocare și utilizarea feedback-ului.

Se disting următoarele patru trăsături caracteristice ale metodelor criptografice.

    Operații pe biți sau blocuri individuale.

    Dependența sau nedependența funcției de criptare de rezultatele criptării părților anterioare ale mesajului.

3. Dependența sau independența criptării caracterelor individuale ale mesajului de poziția lor în text. De exemplu, în criptarea în flux, diferitele caractere ale unui mesaj sunt criptate în funcție de poziția lor în mesaj. Această proprietate se numește dependență pozițională sau independență de cifrare.

4. Simetria sau asimetria funcției de criptare. Această proprietate importantă determină diferența esențială dintre criptosistemele obișnuite simetrice (cu o singură cheie) și asimetrice cu două chei (criptosistemele cu cheie publică). Principala diferență dintre cele două este că într-un criptosistem asimetric, cunoașterea cheii de criptare (sau decriptare) nu este suficientă pentru a dezvălui cheia de decriptare (sau de criptare) corespunzătoare.

Principalele caracteristici ale criptosistemelor

criptosisteme

Operațiuni cu

biți sau blocuri

Dependență / independență față de semne

mesaje

Dependență/independență pozițională

Simetrie/

asimetrie

în linie

criptare

nu depinde

simetric

bloc

criptare

nu depinde

nu depinde

simetric sau asimetric

Din revers

comunicare de la

text cifrat

biți sau blocuri

nu depinde

simetric

Într-un criptosistem care are proprietatea de dependență a funcției de criptare de caracterele mesajului, poate avea loc propagarea erorilor. Dacă, de exemplu, un bit de text cifrat este deranjat în timpul transmisiei, atunci textul simplu poate conține mai mulți biți denaturați după decriptare. Erorile de inserare și renunțare pot duce, de asemenea, la propagarea erorilor catastrofale în timpul decriptării.

Cifruri în flux. Criptarea fluxului constă în faptul că biții textului simplu sunt adăugați modulo 2 cu biții unei secvențe pseudoaleatoare.

La beneficii Cifrurile fluxului includ propagarea fără erori, implementare simplă și viteză mare de criptare.

dezavantaj este necesitatea de a trimite informații de sincronizare înainte de antetul mesajului, care trebuie să fie primit înainte ca orice mesaj să fie decriptat. Acest lucru se datorează faptului că, dacă două mesaje diferite sunt criptate cu aceeași cheie, atunci aceeași secvență pseudo-aleatorie trebuie utilizată pentru a decripta aceste mesaje. Această situație poate crea o amenințare periculoasă pentru puterea criptografică a sistemului și, prin urmare, este adesea folosită o cheie de mesaj suplimentară, aleasă aleatoriu, care este transmisă la începutul mesajului și este utilizată pentru a modifica cheia de criptare. Ca rezultat, mesajele diferite vor fi criptate folosind secvențe diferite.

Cifrurile de flux sunt utilizate pe scară largă în sistemele militare și în alte sisteme apropiate acestora în scopul lor, pentru a cripta datele și semnalele vocale digitizate. Până de curând, astfel de aplicații erau predominante pentru această metodă de criptare. Acest lucru se datorează, în special, simplității relative de construire și implementare a generatoarelor de secvențe de criptare bune. Dar factorul principal, desigur, este lipsa propagării erorilor în cifrul fluxului.

Deoarece canalele de calitate relativ scăzută sunt folosite pentru transmiterea de date și mesaje vocale în rețelele de comunicații tactice, orice sistem criptografic care crește rata de eroare deja ridicată nu este aplicabil. În astfel de cazuri, este obligatoriu să folosiți un criptosistem care să nu propage erori.

Cu toate acestea, multiplicarea erorilor poate fi un fenomen pozitiv. Să presupunem, de exemplu, că datele criptate trebuie transmise pe un canal cu o probabilitate de eroare foarte scăzută (de exemplu, 10 5) și este foarte important ca datele să fie primite cu absolut exactitate. Aceasta este o situație tipică pentru rețelele de calculatoare, în care o eroare într-un singur bit poate duce la consecințe catastrofale și, prin urmare, canalul de comunicare trebuie să fie foarte fiabil. Într-o astfel de situație, o greșeală este la fel de periculoasă ca 100 sau 1000 de greșeli. Dar 100 sau 1000 de bug-uri pot fi găsite mai ușor decât un singur bug. Prin urmare, în acest caz, propagarea erorilor nu mai reprezintă un dezavantaj al cifrului.

Metoda standard pentru generarea de secvențe pentru criptarea fluxului este metoda utilizată în standardul de criptare a datelor DES în modul feedback de la ieșire.

Cifre bloc. Pentru criptarea blocurilor, textul simplu este mai întâi împărțit în blocuri de lungime egală, apoi se aplică o funcție de criptare dependentă de cheie pentru a transforma blocul de text simplu de lungime T bit într-un bloc de text cifrat de aceeași lungime. O proprietate importantă a cifrurilor bloc este că fiecare bit al unui bloc de text cifrat este o funcție a tuturor (sau aproape toți) biții blocului de text simplu corespunzător și nici două blocuri de text simplu nu pot fi reprezentate de același bloc de text cifrat. Algoritmul de cifrare bloc poate fi utilizat în diferite moduri. Cele patru moduri de criptare din standardul DES sunt de fapt aplicabile oricărui cifru bloc.

Aceste moduri sunt denumite după cum urmează:

    modul de criptare directă sau criptare folosind o carte electronică de coduri ECB (Cartea de coduri electronice),

    criptare cu înlănțuirea blocurilor de text cifrat CBC (Cipher block chaining),

    criptare cu feedback din ciphertext CFB (Cipher feedback),

    criptare cu feedback de la ieșire OFB (Output feedback).

Avantajul principal Cifrarea directă a blocurilor (cartea de coduri electronice) este că într-un sistem de cifru bloc bine conceput, micile modificări ale textului cifrat vor cauza modificări mari și imprevizibile ale textului simplu corespunzător și invers.

Cu toate acestea, utilizarea unui cifru bloc în acest mod este asociată cu lipsuri grave. Prima dintre acestea este că, datorită naturii fixe a criptării, chiar și cu o lungime de bloc relativ mare, de exemplu 50-100 de biți, criptoanaliza „dicționar” este posibilă într-o formă limitată.

Este clar că un bloc de această dimensiune poate fi repetat într-un mesaj datorită redundanței mari într-un text tipic în limbaj natural. Acest lucru poate duce la blocuri de text clar identice de lungime T biții din mesaj vor fi reprezentați prin blocuri identice de text cifrat, ceea ce oferă criptoanalistului câteva informații despre conținutul mesajului.

Un alt dezavantaj potențial al acestui cifru este legat de propagarea erorilor (aceasta este una dintre problemele pentru toate tipurile de cifruri, cu excepția cifrurilor flux). Rezultatul modificării unui singur bit în blocul de text cifrat primit va fi decriptarea incorectă a întregului bloc. Aceasta, la rândul său, va avea ca rezultat 1 to T fragmente deformate în textul original recuperat.

Datorită deficiențelor observate, cifrurile bloc sunt rareori utilizate în acest mod pentru a cripta mesajele lungi. Cu toate acestea, în instituțiile financiare, unde mesajele constau adesea din unul sau două blocuri, cifrurile bloc (în special algoritmul DES) sunt utilizate pe scară largă în această variantă simplă. Deoarece o astfel de aplicație implică posibilitatea de a schimba frecvent cheia de criptare, probabilitatea de a cripta două blocuri identice de text simplu pe aceeași cheie este foarte mică. Cifrurile bloc sunt utilizate cel mai frecvent în sistemele de criptare cu feedback al textului cifrat.

Educația este de asemenea posibilă sisteme mixte (hibride) de criptare în flux și bloc folosind cele mai bune proprietăți ale fiecăruia dintre aceste cifruri. În astfel de sisteme, criptarea fluxului este combinată cu permutări pseudo-aleatoare. Textul simplu este mai întâi criptat ca în criptarea fluxului convențional, apoi textul cifrat rezultat este împărțit în blocuri de dimensiune fixă. În fiecare bloc, se realizează o permutare pseudo-aleatoare sub controlul cheii (se preferă diferite permutări pentru blocuri individuale).

Ordinea acestor două operații poate fi inversată fără a afecta proprietățile de bază ale sistemului. Rezultatul este un cifru care nu propaga erori, dar are o proprietate suplimentară pe care nu o are un cifr de flux. Această proprietate este că interceptorul nu știe care bit din textul clar corespunde unui bit din textul cifrat. Acest lucru face ca mesajul criptat să fie mai complex și mai greu de spart. Dar trebuie remarcat că acesta nu mai este un adevărat cifru bloc, în care fiecare bit al textului cifrat este o funcție a unui singur, și nu a tuturor, biților din textul simplu.

Un criptosistem cu cheie publică ar trebui să fie un sistem de criptare bloc care funcționează cu blocuri de lungimi destul de mari. Acest lucru se datorează faptului că un criptoanalist care cunoaște cheia publică de criptare ar putea precalcula și compila un tabel de corespondență între blocurile de text simplu și text cifrat. Dacă lungimea blocului este mică (de exemplu, 30 de biți), atunci numărul de blocuri posibile nu va fi prea mare (pentru o lungime de 30 de biți, aceasta este 2 30 -10 9) și poate fi compilat un tabel complet, făcând este posibil să decriptați instantaneu orice mesaj criptat folosind o cheie publică cunoscută.

Au fost propuse multe criptosisteme diferite cu cheie publică, dintre care cel mai faimos este sistemul RSA (Rivest, Shamir, Adleman). Puterea criptografică a acestui sistem se bazează pe dificultatea de a descompune numerele mari în factori primi și de a alege două numere prime mari pentru cheile de criptare și decriptare.

Se știe că algoritmul RSA nu poate fi utilizat pentru criptarea de mare viteză. Cea mai optimizată implementare software a acestui algoritm se dovedește a fi de viteză redusă, iar mai multe implementări hardware oferă viteze de criptare de la 10 la 100 Kbps (folosind numere prime de ordinul 2 7 , care pare a fi lungimea minimă pentru a asigura puterea criptografică). Aceasta înseamnă că utilizarea sistemului RSA pentru criptarea blocurilor este limitată, deși utilizarea lui pentru distribuirea cheilor, autentificare și generare de semnătură digitală prezintă posibilități interesante. Unii algoritmi criptografici cu cheie publică cunoscuți în prezent permit viteză de criptare mai mare decât algoritmul RSA. Cu toate acestea, ele nu sunt încă atât de populare.

Sisteme de criptare cu feedback. Sistemele de criptare a feedback-ului vin în diferite versiuni practice. Ca și în sistemele de criptare bloc, mesajele sunt împărțite într-un număr de blocuri, constând din T biți și pentru a converti aceste blocuri în blocuri de text cifrat, care constau și în T bit, sunt folosite funcții speciale. Totuși, în timp ce într-un cifru bloc o astfel de funcție depinde doar de cheie, în cifrurile de feedback depinde atât de cheie, cât și de unul sau mai multe blocuri de text cifrat precedente. Această definiție generală a criptării în buclă închisă include, ca cazuri speciale, un număr mare de tipuri diferite de sisteme în practică.

Utilizarea criptosistemelor de cifrare bloc cu feedback dă o serie de avantaje importante. În primul rând, este capacitatea de a le folosi pentru a detecta manipularea mesajelor de către interceptori activi. În acest caz, se folosește faptul de propagare a erorilor, precum și capacitatea unor astfel de sisteme de a genera cu ușurință un cod de autentificare a mesajelor (MAC). Al doilea avantaj este că cifrurile STAK utilizate în loc de cifrurile bloc nu necesită sincronizare inițială. Aceasta înseamnă că, dacă începutul mesajului este omis atunci când este primit, atunci restul poate fi decriptat cu succes (după ce ați primit cu succes următorul unul după altul t bit de text cifrat. De asemenea, rețineți că sistemele de criptare în buclă închisă sunt folosite nu numai pentru a cripta mesajele, ci și pentru a le autentifica.

Sistemele de criptare bloc cu feedback se caracterizează prin anumite neajunsuri. Principala este propagarea erorilor, adică. eroarea de un bit în timpul transmisiei poate cauza de la 1 la sm + i erori în textul decodat. Deci cerința de a crește t pentru a crește puterea criptografică, contrazice cerințele de sistem legate de propagarea erorilor. Un alt dezavantaj este că proiectarea și implementarea sistemelor de cifrare în buclă închisă este adesea mai dificilă decât pentru sistemele de cifrare în flux. Deși sistemele de criptare în buclă închisă de diferite tipuri au fost utilizate pe scară largă de mulți ani, există foarte puțini algoritmi dedicati acestor sisteme. În cele mai multe cazuri, algoritmii publicati sunt derivați din cifruri bloc care au fost convertite pentru aplicații speciale.

Prima concluzie care se poate trage din analiza efectuată este că majoritatea criptosistemelor practice utilizează algoritmi fie de criptare de flux, fie de criptare de feedback. Majoritatea criptosistemelor de criptare în flux folosesc algoritmi pentru sectorul comercial (inclusiv algoritmi proprietatea firmelor sau utilizatorilor individuali) sau algoritmi guvernamentali secreti. Această situație este probabil să continue și în următorii ani.

De asemenea, este posibil ca majoritatea sistemelor de criptare în buclă închisă să se bazeze pe utilizarea cifrurilor bloc într-o variantă specială, în special, cel mai faimos cifru bloc DES. În ceea ce privește alte metode de criptare, se poate spune că, în ciuda creșterii rapide a publicațiilor privind criptosistemele cu cheie publică, doar una dintre ele, sistemul RSA, a trecut testul timpului.

Dar algoritmul acestui sistem este asociat cu limitări serioase de implementare și, prin urmare, nu este potrivit pentru unele aplicații criptografice. Desigur, se poate spune cu siguranță că criptosistemele cu chei publice au avut un impact semnificativ asupra tehnicilor de criptare a datelor. Acestea sunt din ce în ce mai utilizate, în principal pentru generarea de semnături digitale sau pentru gestionarea cheilor în sistemele de criptare convenționale (cum ar fi o cheie de criptare a cheilor).

Utilizatorilor potențiali ai criptografiei li se oferă posibilitatea de a alege între cifrurile de flux și cifrurile de feedback (poate bazate pe utilizarea cifrurilor bloc). Cu toate acestea, există anumite domenii de aplicare, de exemplu, tranzacțiile financiare, în care este posibil să se utilizeze metode de criptare directă a blocurilor („carte de coduri electronice”). Alegerea criptoalgoritmului depinde în mare măsură de scopul său. Unele informații care pot fi folosite ca ghid atunci când alegeți tipul de criptare sunt prezentate în tabel.

Algoritmul de criptare a datelor DES (Standard de criptare a datelor) a fost publicat în 1977 și rămâne un algoritm comun simetric bloc utilizat în sistemele comerciale de protecție a informațiilor.

Algoritmul DES este construit în conformitate cu metodologia rețelei Feistel și constă dintr-o secvență alternantă de permutări și substituții. Algoritmul DES criptează blocuri de date pe 64 de biți folosind o cheie de 64 de biți, în care 56 de biți sunt semnificativi (cele 8 rămași sunt biți de verificare a parității).

Procesul de criptare constă dintr-o schimbare inițială de biți a unui bloc de 64 de biți, 16 cicluri de criptare (runde) și, în final, o schimbare finală de biți (Fig. 6.2).

Orez. 6.2.

Decriptarea în DES este operația inversă a criptării și se realizează prin repetarea operațiunilor de criptare în ordine inversă.

Principalele avantaje ale algoritmului DES:

  • este utilizată o singură cheie de 56 de biți;
  • simplitatea relativă a algoritmului asigură viteză mare de procesare;
  • după criptarea unui mesaj folosind un pachet software, orice alt pachet software care respectă algoritmul DES poate fi folosit pentru a-l decripta;
  • puterea criptografică a algoritmului este destul de suficientă pentru a asigura securitatea informațională a majorității aplicațiilor comerciale.

Tehnologia modernă de microprocesor face posibilă spargerea cifrurilor bloc simetrice cu o lungime a cheii de 40 de biți într-un timp destul de acceptabil. Pentru astfel de hacking, se folosește metoda forței brute - testarea totală a tuturor valorilor cheie posibile (metoda „forței brute”). Până de curând, DES era considerat un algoritm de criptare relativ sigur.

Există multe modalități de a combina algoritmi bloc pentru a obține algoritmi noi, mai robusti. Una dintre aceste moduri este criptare multiplă - folosind un algoritm de blocare de mai multe ori cu chei diferite pentru a cripta același bloc de text simplu. Cu criptare triplă, pot fi utilizate trei chei diferite.

Algoritmul 3-DES (Triple DES - triple DES) este utilizat în situațiile în care fiabilitatea algoritmului DES este considerată insuficientă.

Astăzi, doi algoritmi moderni de criptare rezistenți la criptare sunt din ce în ce mai utilizați: standardul de criptare intern GOST 28147-89 și noul standard cripto-american - AES (Advanced Encryption Standard).

Standardul de criptare GOST 28147-89 este destinat implementării hardware și software, satisface cerințele criptografice și nu impune restricții cu privire la gradul de secretizare a informațiilor protejate. Algoritmul de criptare a datelor definit de GOST 28147-89 este un algoritm de bloc de 64 de biți cu o cheie de 256 de biți.

Datele de criptat sunt împărțite în blocuri de 64 de biți. Aceste blocuri sunt împărțite în două subblocuri. N xȘi N 2 32 de biți fiecare (Fig. 6.3). Subbloc /V, procesat într-un anumit mod, după care valoarea acestuia se adaugă la valoarea subblocului N 2(adăugarea se efectuează modulo 2, adică se aplică operația logică XOR - „exclusiv sau”), apoi


Orez. 6.3.

subblocurile sunt schimbate. Această transformare se efectuează de un anumit număr de ori ("runde") - 16 sau 32, în funcție de modul de funcționare al algoritmului.

În fiecare rundă se efectuează două operații.

Prima operație este impunerea unei chei. Conținutul subblocului /V, modulo 2 32 cu partea de 32 de biți a cheii K x. Cheia de criptare completă este reprezentată ca o concatenare de subchei pe 32 de biți: K 0 , K ( , K 2 , K 3 , K 4 , K 5 , K 6 , K 7 . Una dintre aceste subchei este utilizată în procesul de criptare, în funcție de numărul rotund și de modul de operare al algoritmului.

A doua operație este înlocuirea mesei. După tastarea subunității N( este împărțit în 8 părți a câte 4 biți, valoarea fiecăruia fiind înlocuită în conformitate cu tabelul de înlocuire pentru această parte a subblocului. Subblocul este apoi rotit la stânga cu 11 biți.

Înlocuirea mesei. Cutia de înlocuire cu 5 casete este adesea folosită în algoritmii moderni de criptare, așa că merită explicat cum este organizată o astfel de operațiune.

Blocul de înlocuire 5-box este format din opt noduri de înlocuire (5-blocuri de înlocuire) 5, S2,..., 5 8 cu memorie de 64 de biți fiecare. Intrare în blocul de înlocuire S Vectorul de 32 de biți este împărțit în 8 vectori consecutivi de 4 biți, fiecare dintre care este convertit într-un vector de 4 biți de către nodul de înlocuire corespunzător. Fiecare nod de înlocuire poate fi reprezentat ca un tabel de permutare de 16 numere binare pe 4 biți în intervalul 0000... 1111. Vectorul de intrare specifică adresa unui rând din tabel, iar numărul din acel rând este vectorul de ieșire. Vectorii de ieșire de 4 biți sunt apoi combinați secvențial într-un vector de 32 de biți. Nodurile de înlocuire (tabelele de permutare) sunt elemente cheie care sunt comune unei rețele de calculatoare și se schimbă rar. Aceste noduri de înlocuire trebuie păstrate secrete.

Algoritmul definit de GOST 28147-89 prevede patru moduri de funcționare: înlocuire simplă, scalare, scalare cu feedbackȘi generarea de prefixe de imitaţie. Ei folosesc aceeași transformare de criptare descrisă mai sus, dar deoarece scopul modurilor este diferit, această transformare se realizează în fiecare dintre ele în mod diferit.

În modul înlocuire simplă pentru a cripta fiecare bloc de informații pe 64 de biți, sunt efectuate cele 32 de runde descrise mai sus. În acest caz, subcheile pe 32 de biți sunt utilizate în următoarea secvență:

K 0 , K ( , K 2 , K 3 , K 4 , K 5 , K 6 , K 7 , K 0 ,/G etc. - în runde de la 1 la 24;

K 7, K b, K 5, K 4, K 3, K 2, K x, K 0 -în rundele 25 până la 32.

Decriptarea în acest mod se realizează exact în același mod, dar cu o secvență ușor diferită de utilizare a subcheilor:

K 0 , AG, K 2, K 3, K 4, K 5, K b, K 7 -în rundele 1 până la 8;

K 7 , K 6 , K 5 , K 4 , K 3 , K 2 , K ( , K 0 , K 7 , K bși așa mai departe - în rundele 9 până la 32.

Toate blocurile sunt criptate independent unul de celălalt, adică rezultatul criptării fiecărui bloc depinde numai de conținutul acestuia (blocul sursă corespunzător). Dacă există mai multe blocuri identice ale textului original (plat), blocurile de text cifrat corespunzătoare vor fi, de asemenea, aceleași, ceea ce oferă informații utile suplimentare pentru un criptoanalist care încearcă să deschidă cifrul. Prin urmare, acest mod este utilizat în principal pentru a cripta cheile de criptare în sine (se implementează adesea scheme cu mai multe chei, în care, din mai multe motive, cheile sunt criptate una peste alta). Pentru a cripta informațiile în sine, sunt destinate alte două moduri de operare - gamma și gamma cu feedback.

ÎN modul gamma fiecare bloc de text simplu este adăugat pe biți modulo 2 la blocul gamma de 64 de biți. Cifru gamma - este o secvenţă specială care rezultă din anumite operaţii cu registre N1 Și S 2(Fig. 6.9):

  • 1. La înregistrări N^Și 1U 2 umplerea lor inițială este scrisă - o valoare de 64 de biți numită mesaj de sincronizare.
  • 2. Conținutul registrelor este criptat N1 Și M 2(în acest caz, sincronizați mesajele) în modul de înlocuire simplă.
  • 3. Înregistrați conținut N^ se adaugă modulo (2 32 - 1) cu constanta C, = 2 24 + 2 16 + 2 8 + 2 4 , iar rezultatul adunării se scrie în registru N1 .
  • 4. Conținutul registrului CU 2 se adaugă modulo 232 cu constanta C 2 = 2 24 + 2 16 + 2 8 + 1, iar rezultatul adunării se scrie în registrul CU 2.
  • 5. Conținutul registrelor N, Și S 2 este scos ca un bloc gamma de criptare pe 64 de biți (în acest caz N^ iar CU 2 formează primul bloc al scalei).

Dacă este necesar următorul bloc gamma (adică criptarea sau decriptarea trebuie să continue), reveniți la pasul 2.

Pentru decriptare, gamma este generată într-un mod similar, iar apoi se aplică din nou operația X (X) biților textului cifrat și gamma.Deoarece această operație este reversibilă, în cazul unui gamma generat corect, originalul se obţine text (Tabelul 6.1).

Tabelul 6.1. Criptare și decriptare în modul gamma

Pentru a dezvolta intervalul de criptare necesar pentru decriptare, utilizatorul care decriptează criptograma trebuie să aibă aceeași cheie și aceeași valoare a mesajului de sincronizare care au fost utilizate când informația a fost criptată. În caz contrar, nu veți putea obține textul original din cel criptat.

În majoritatea implementărilor algoritmului GOST 28147-89, mesajul de sincronizare nu este secret, dar există sisteme în care mesajul de sincronizare este același element secret ca și cheia de criptare. Pentru astfel de sisteme, lungimea efectivă a cheii algoritmului (256 de biți) este mărită cu încă 64 de biți ai mesajului de sincronizare secretă, care poate fi considerat și ca element cheie.

ÎN modul de feedback gamma pentru a umple registrele L", și ІУ 2, începând cu al 2-lea bloc, nu se folosește blocul gamma anterior, ci rezultatul criptării blocului de text simplu anterior (Fig. 6.4). Primul bloc în acest mod este generat complet similar cu cel precedent.

Luând în considerare modul generarea de prefixe de imitație, ar trebui definit conceptul de obiect al generaţiei. Prefix de imitație - este o sumă de control criptografică calculată folosind

Orez. 6.4.

cheie de criptare și concepută pentru a verifica integritatea mesajelor. La generarea unui prefix, se efectuează următoarele operații: primul bloc de 64 de biți al matricei de informații, pentru care se calculează prefixul, este scris în registrele ^ și A^ 2 și criptat în modul de înlocuire simplă scurtat ( se efectuează primele 16 runde din 32). Rezultatul obținut se însumează modulo 2 cu următorul bloc de informații, salvând rezultatul în A”, și S 2 .

Ciclul se repetă până la ultimul bloc de informații. Conținutul rezultat pe 64 de biți al registrelor A^ și A^ 2 sau o parte din ea și se numește rata de imitație. Mărimea prefixului de imitație este selectată în funcție de fiabilitatea necesară a mesajelor: cu lungimea prefixului de imitație G bit, probabilitatea ca o modificare a mesajului să treacă neobservată este 2~ y.

Cel mai adesea, se folosește un prefix de imitație de 32 de biți, adică jumătate din conținutul registrelor. Acest lucru este suficient, deoarece, ca orice sumă de control, prefixul de imitație este destinat în primul rând să protejeze împotriva distorsiunii accidentale a informațiilor. Pentru a proteja împotriva modificării deliberate a datelor, sunt utilizate alte metode criptografice - în primul rând o semnătură digitală electronică.

La schimbul de informații, prefixul de imitație servește ca un fel de mijloc suplimentar de control. Este calculat pentru textul simplu atunci când unele informații sunt criptate și sunt trimise împreună cu textul cifrat. După decriptare, se calculează o nouă valoare a prefixului de imitație, care este comparată cu cea trimisă. Dacă valorile nu se potrivesc, atunci textul cifrat a fost deformat în timpul transmiterii sau au fost folosite chei greșite în timpul decriptării. Prefixul de imitație este util în special pentru verificarea decriptării corecte a informațiilor cheie atunci când se utilizează scheme cu mai multe chei.

Algoritmul GOST 28147-89 este un algoritm foarte stabil - în prezent, nu au fost propuse metode mai eficiente pentru dezvăluirea sa decât metoda „forță brută” menționată mai sus. Securitatea sa ridicată este atinsă în primul rând datorită lungimii mari a cheii - 256 de biți. Când se utilizează un mesaj de sincronizare secretă, lungimea efectivă a cheii este mărită la 320 de biți, iar secretul tabelului de înlocuire adaugă biți suplimentari. În plus, puterea criptografică depinde de numărul de runde de transformări, care, conform GOST 28147-89, ar trebui să fie 32 (efectul complet al dispersării datelor de intrare este atins după 8 runde).

Standard de criptare AES. În 1997, Institutul American de Standarde NIST (Institutul Național de Standarde și Tehnologie) a anunțat un concurs pentru un nou standard pentru un algoritm criptografic simetric numit AES (Advanced Encryption Standard). Cele mai mari centre de criptologie din întreaga lume au fost legate de dezvoltarea sa. Câștigătorul acestei competiții a devenit de fapt standardul cripto global pentru următorii 10-20 de ani.

Următoarele cerințe au fost prezentate criptoalgoritmilor - candidați pentru noul standard AES:

  • algoritmul trebuie să fie simetric;
  • algoritmul trebuie să fie un cifru bloc;
  • algoritmul trebuie să aibă o lungime de bloc de 128 de biți și să suporte trei lungimi de cheie: 128, 192 și 256 de biți.

În plus, dezvoltatorilor de criptoalgoritmi li s-a recomandat:

  • utilizați operațiuni care sunt ușor de implementat atât în ​​hardware (în microcipuri) cât și în software (pe computere personale și servere);
  • concentrare pe procesoare pe 32 de biți;
  • nu complicați în mod inutil structura cifrului, astfel încât toate părțile interesate să poată efectua în mod independent o criptoanaliza independentă a algoritmului și să se asigure că acesta nu conține caracteristici nedocumentate.

Rezultatele competiției au fost rezumate în octombrie 2000 - algoritmul Rijndael, dezvoltat de doi criptografi din Belgia, Vincent Rijmen și Joan Daemen, a fost declarat câștigător. Algoritmul Rijndael a devenit noul standard de criptare a datelor AES.

Algoritmul AES este spre deosebire de majoritatea algoritmilor de criptare simetrică bine-cunoscuți, a căror structură se numește „rețea Feistel” și este similară cu GOST rusesc 28147-89. Spre deosebire de standardul de criptare autohton, algoritmul AES reprezintă fiecare bloc de date procesate ca o matrice bidimensională de octeți cu dimensiunea 4x4, 4x6 sau 4x8, în funcție de lungimea blocului setată (sunt permise mai multe dimensiuni fixe ale blocului de informații criptate). Mai mult, în etapele corespunzătoare, transformările sunt efectuate fie pe coloane independente, fie pe rânduri independente, fie în general pe octeți individuali.

Algoritmul AES constă dintr-un anumit număr de runde (de la 10 la 14 - depinde de dimensiunea blocului și lungimea cheii) și efectuează patru transformări:

BS (ByteSub) - înlocuirea tabelului pentru fiecare octet al matricei (Fig. 6.5);

SR (ShiftRow) - deplasare rând de matrice (Fig. 6.6). Cu această operație, primul rând rămâne neschimbat, iar restul sunt deplasați ciclic octet cu octet la stânga cu un număr fix de octeți, în funcție de dimensiunea matricei. De exemplu, pentru o matrice 4x4, rândurile 2, 3 și 4 sunt deplasate cu 1, 2 și, respectiv, 3 octeți;

MS (MixColumn) - o operație pe coloane matrice independente (Fig. 6.7), când fiecare coloană este înmulțită cu o matrice fixă ​​c (x) conform unei anumite reguli;

AK (AddRoundKey) - adăugarea unei chei. Fiecare bit al matricei este adăugat modulo 2 la bitul corespunzător al cheii rotunde, care la rândul său este calculat într-un anumit mod din cheia de criptare (Fig. 6.8).


Orez. 6.5.

pentru a procesa fiecare octet al matricei State

Orez. 6.6. Transformarea SR (ShiftRow) circulă prin ultimele trei

rânduri din tabloul State

d 2 j

la oz

la zz

Orez. 6.8. Transformarea AC (AddRoundKey) efectuează o adăugare XOR a fiecăruia

o coloană a matricei State cu un cuvânt din setul de chei

Aceste conversii acționează asupra matricei State, care este adresată de pointerul „state”. Transformarea AddRoundKey folosește un indicator suplimentar pentru a adresa cheia rotundă.

Transformarea BS (ByteSub) este o substituție neliniară de octeți care funcționează independent pe fiecare octet al matricei State folosind un tabel de substituție iS-box.

În fiecare rundă (cu unele excepții), următoarele sunt efectuate pe rând asupra datelor criptate.

transformări (Fig. 6.9). Se aplică excepții pentru prima și ultima rundă: înainte de prima rundă, se efectuează o operație suplimentară A K, iar în ultima rundă nu există MS.

Orez. 6.9.

Ca rezultat, secvența operațiunilor de criptare arată astfel:

AK, (BS, SR, MC, AK) (repetat R- 1 dată), BS, SR, AK.

Numărul de runde de criptare Rîn algoritmul AES este variabil (10, 12 sau 14 runde) și depinde de dimensiunea blocului și a cheii de criptare (există și mai multe dimensiuni fixe pentru cheie).

Decriptarea se realizează folosind următoarele operații inverse. Tabelul este inversat și se efectuează o înlocuire a tabelului pe tabelul invers (față de cel utilizat în criptare). Operația inversă față de SR este o deplasare circulară a rândurilor la dreapta, nu la stânga. Operația inversă pentru MS este înmulțirea cu aceleași reguli cu o altă matrice d(x), satisfacerea condiției c(x) d(x) = 1. Adăugarea tastei AK este inversă, deoarece folosește doar operația XOR. Aceste operații inverse sunt aplicate la decriptare în ordinea inversă celei utilizate pentru criptare.

Toate transformările din cifra AES au o justificare matematică strictă. Structura în sine și succesiunea operațiilor fac posibilă executarea eficientă a acestui algoritm atât pe procesoarele pe 8 biți, cât și pe 32 de biți. Structura algoritmului include posibilitatea executării în paralel a unor operații, care pot crește viteza de criptare pe stațiile de lucru multiprocesor de 4 ori.

Algoritmul AES a devenit noul standard de criptare a datelor datorită unui număr de avantaje față de alți algoritmi. În primul rând, oferă criptare de mare viteză pe toate platformele: atât în ​​software, cât și în implementarea hardware. În plus, cerințele de resurse pentru funcționarea sa sunt minime, ceea ce este important atunci când este utilizat în dispozitive cu capacități de calcul limitate.

Singurul dezavantaj al algoritmului AES este schema sa neconvențională. Faptul este că proprietățile algoritmilor bazați pe „rețeaua Feistel” sunt bine studiate, iar AES, în schimb, poate conține vulnerabilități ascunse care pot fi descoperite doar după ce a trecut ceva timp de la începutul distribuției sale largi.

Alți criptoalgoritmi bloc simetrici sunt, de asemenea, utilizați pentru a cripta datele.

Principalele moduri de funcționare ale blocului simetric

algoritm

Majoritatea algoritmilor cripto simetric bloc convertesc direct o intrare de text simplu de 64 de biți într-o ieșire de text cifrat de 64 de biți, dar datele sunt rareori limitate la 64 de biți.

Pentru a utiliza algoritmul bloc simetric pentru rezolvarea diferitelor probleme criptografice, au fost dezvoltate patru moduri de operare:

  • carte electronică de coduri EU B (Electronic Code Book);
  • înlănțuirea blocurilor de criptare CBC (Cipher Block Chaining);
  • feedback cu text cifrat CFB (Cipher Feed Back);
  • feedback la ieșirea OFB (Output Feed Back).

Aceste moduri de operare au fost dezvoltate inițial pentru algoritmul bloc DES, dar alți criptoalgoritmi bloc pot funcționa în oricare dintre aceste moduri.