Criptografie criptare simetrică. Protecția informațiilor criptografice de către Alexander Prokhorov. Un pic din viața reală

13 iunie 2017 la 13:37

Criptare simetrică și asimetrică. Analiza algoritmului de transmitere a datelor criptate între servere

  • algoritmi,
  • Securitatea informațiilor,
  • Criptografie

Să fim de acord că mașina care transmite date criptate este întotdeauna mașina A, iar mașina care le primește are simbol B.

Biblioteca rezolvă două cazuri posibile (dacă este necesar, voi adăuga funcționalitate):


2) Cazul în care există o mașină și trebuie să transfere date criptate către o altă mașină (B). În acest caz, inițiatorul transferului este prima mașină (A).

Biblioteca implementează ambele opțiuni, pentru fiecare dintre ele există un demo:

Pentru primul caz din folder server_b_1 există un scenariu testGetDataFromA.php
Pentru al doilea caz din dosar server_a_1 există un scenariu testPushDataToB.php

Biblioteca pentru ambele cazuri este aceeași Encode.php, dar pentru primul caz sunt necesare unele scripturi suplimentare, pentru al doilea caz altele, așa că pentru a evita confuziile, le-am împărțit funcțional în folderele server_a_1 și server_b_1 (poate versiuni ulterioare ale biblioteca va avea o structură diferită). Astfel, dacă ambele mașini trebuie să implementeze atât primul caz de transfer, cât și al doilea, fiecare astfel de mașină va avea ambele foldere.

Acum să vorbim despre cum sunt implementate ambele soluții:

Esența ambelor cazuri este că mașinile schimbă o cheie simetrică pentru a transmite text cifrat. Pentru acest schimb se folosește criptarea asimetrică și anume, una dintre mașini (X) generează o pereche de chei (publică și privată) și transmite cheia publică către cea de-a doua mașină. A doua mașină generează o cheie simetrică cu această cheie publică și o returnează la prima, care o decriptează cu cheia sa privată. Diferența constă în cine este inițiatorul transmisiei - dacă textul criptat trebuie primit o secvență de acțiuni, dacă este transmis - alta. Biblioteca considerată face și verificări suplimentare, care se rezumă la faptul că alături de cheia simetrică criptată cu cheia publică se transmit date pe care doar ambele mașini le cunosc și care pot fi modificate o dată pe an (sau chiar transmise în fiecare tranzacție dacă cineva vrea să se joace cu cod).

Înainte de a începe analiza implementării, voi sublinia doar că cheia simetrică este criptată folosind funcțiile de criptare php Mcrypt conform următoarei scheme:

$encrypted_data = urlencode(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $sinc_key, $notice_text, MCRYPT_MODE_ECB))); $test_decrypted = trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256,$sinc_key, base64_decode(urldecode($encrypted_data)),MCRYPT_MODE_ECB));
Criptarea asimetrică este gestionată folosind php OpenSSL

Asa de:

Voi lua în considerare mai întâi diagramele simplificate ale ambelor cazuri de transmisie indicate chiar la început și apoi mai detaliat.

1) Cazul în care există o mașină (B) care are nevoie de date de la mașina A (de exemplu, trebuie să obțină un token client) și aceste date trebuie să fie primite în siguranță. Acestea. Inițiatorul transferului este mașina B.

Mașina B generează o pereche de chei (privată și publică) și face o cerere către mașina A, trimițând cheia publică (păstrând-o pe cea privată). Mașina A generează o cheie simetrică și criptează informația secretă N necesară transmiterii. După aceasta, mașina A returnează cheia simetrică criptată cu cheia publică, precum și informația secretă N criptată cu cheia simetrică. Mașina B decriptează datele cu cheia sa privată. În datele decriptate, ea primește cheia simetrică și datele criptate de aceasta. Folosind o cheie simetrică, decriptează datele secrete.

Nu există nicio garanție că mașina A este mașina noastră și nu agentul FSB Anatoly. Prin urmare, implementarea acestui algoritm de către bibliotecă este ușor modificată printr-o verificare suplimentară:

(Demo script - server_b_1/testGetDataFromA.php)

Pe ambele mașini este înregistrată cheia secretă SIGNATURE_KEY, la care participă verificare suplimentară. Mașina B generează o pereche de chei (private și publice), cheia de conexiune curentă și face o cerere (http://.../server_a_1/getDataToB.php) către mașina A, trimițând cheia de conectare curentă și cheia publică ( păstrarea celui privat). Mașina A generează o cheie simetrică și criptează cu ea informațiile secrete N necesare transmiterii.Se generează și date suplimentare M, care sunt md5 din linia care conține SIGNATURE_KEY și cheia conexiunii curente. După aceasta, mașina A returnează un șir criptat cu cheia publică din cheia simetrică și date suplimentare M, precum și informații secrete N criptate cu cheia simetrică.Mașina B decriptează datele cu cheia simetrică cu cheia sa privată, generează un șir dat de M (deoarece se poate calcula cu ușurință md5 din șirul care conține SIGNATURE_KEY și cheia conexiunii curente). Dacă datele suplimentare se potrivesc (care este pur și simplu o verificare suplimentară pentru fiecare tranzacție pe care mașina A o cunoaște SIGNATURE_KEY și, prin urmare, mașina noastră), mașina B extrage o cheie simetrică cu care decriptează informațiile secrete ale lui N.

2) Cazul în care există o mașină și trebuie să transfere date criptate către o altă mașină (B). În acest caz, inițiatorul transferului este prima mașină (A).

Un algoritm simplificat pentru un astfel de transfer este următorul:

Înainte de a transfera la mașina B, mașina A are nevoie de cheia publică a mașinii B pentru a transfera informațiile. Pentru a face acest lucru, acesta (mașina A) face mai întâi o solicitare de a obține o cheie publică la mașina B. După ce o primește, mașina A generează o cheie simetrică, criptează informațiile necesare cu ea și criptează toate acestea cu cheia publică primită. Datele sunt trimise la mașina B, care decriptează pachetul cu cheia sa privată și decriptează datele cu o cheie simetrică.

Nu există nicio garanție că am primit cheia publică de la mașina B și nu de la agentul FSB Petrov. Prin urmare, implementarea acestui algoritm de către bibliotecă este ușor modificată prin verificări suplimentare:

(Demo script - server_a_1/testPushDataToB.php)

Cheia secretă SIGNATURE_KEY este înregistrată pe ambele mașini, care este implicată în verificarea suplimentară. Mașina A, după ce a generat md5 din cheia conexiunii curente și SIGNATURE_KEY trimite aceste date (împreună cu cheia necriptată a conexiunii curente) către mașina B (http://.../server_b_1/get_public_key.php), care generează o cheie publică numai dacă primește unul același md5 de la SIGNATURE_KEY și cheia primită a conexiunii curente. Acest lucru nu rezolvă problema că cheia publică va fi primită special de la mașina A și nu de la mașina agentului FSB Vasily, dar garantează mașinii B că generează o cheie publică special pentru mașina A (deși generează o cheie publică). este în general o chestiune arbitrară, dar chiar și aici este mai bine să fii în siguranță). Împreună cu cheia publică, md5 este generat din SIGNATURE_KEY și a doua cheie a conexiunii curente. A doua cheie a conexiunii curente este un hash arbitrar. Datele cheii publice, a doua cheie a unei conexiuni arbitrare și md5 specificat sunt returnate mașinii A. După ce a primit a doua cheie a unei conexiuni arbitrare, mașina A, cunoscând SIGNATURE_KEY, generează o verificare md5 și dacă se potrivește cu ce mașina primită, cheia publică este considerată a fi de la mașina B și nu de la Vasily.

Apoi, mașina A (aici schema este similară cu primul caz de transfer de date) generează o cheie simetrică și o verificare suplimentară, care este md5 de la SIGNATURE_KEY și cheia conexiunii curente. Aceste date sunt criptate cu cheia publică de la mașina B. În continuare, datele, împreună cu cheia de conectare curentă, sunt trimise la mașina B (http://.../server_b_1/pushDataFromA.php), care generează o conexiune curentă cheie și SIGNATURE_KEY md5 pe baza datelor obținute din aceste date, o verifică cu ceea ce a fost primit, ceea ce garantează că datele nu sunt de la agentul FSB Nikolai. Dacă totul este în ordine și verificarea este trecută, se extrage o cheie simetrică folosind cheia privată, care deja decriptează mesajul.

Mă voi bucura dacă aceste informații sunt utile cuiva.

În epoca noastră informatică, omenirea refuză tot mai mult să stocheze informații în formă scrisă de mână sau tipărită, preferând documentele. Și dacă mai devreme furau pur și simplu hârtii sau pergamente, acum piratau informatii electronice. Algoritmii de criptare a datelor în sine sunt cunoscuți din timpuri imemoriale. Multe civilizații au preferat să-și cripteze cunoștințele unice, astfel încât doar oamenii cunoscători să le poată obține. Dar să vedem cum se reflectă toate acestea în lumea noastră.

Ce este un sistem de criptare a datelor?

În primul rând, trebuie să decideți ce sisteme criptografice sunt în general. În linii mari, acesta este un algoritm special pentru înregistrarea informațiilor care ar fi de înțeles doar pentru un anumit cerc de oameni.

În acest sens, pentru un străin, tot ceea ce vede ar trebui (și, în principiu, face) să pară un set de simboluri fără sens. Doar cineva care cunoaște regulile aranjamentului lor poate citi o astfel de secvență. Ca cel mai mult exemplu simplu puteți defini un algoritm de criptare cu cuvinte scrise, să zicem, invers. Desigur, acesta este cel mai primitiv lucru cu care poți veni. Se înțelege că, dacă cunoașteți regulile de înregistrare, restaurarea textului original nu va fi dificilă.

De ce este necesar acest lucru?

Probabil că nu merită explicat de ce au fost inventate toate acestea. Uite, ce cantități de cunoștințe rămase de la civilizațiile antice sunt astăzi în formă criptată. Ori anticii nu doreau să știm asta, ori toate acestea s-au făcut astfel încât o persoană să le poată folosi doar când ajungea nivelul cerut dezvoltare - deocamdată putem doar ghici despre asta.

Cu toate acestea, dacă vorbim despre lumea de astăzi, securitatea informațiilor devine una dintre cele mai importante mari probleme. Judecati singuri, pentru ca sunt atatea documente in aceleasi arhive despre care guvernele unor tari nu ar vrea sa vorbeasca, cate evolutii secrete, cate tehnologii noi. Dar toate acestea, în general, sunt scopul principal al așa-numiților hackeri în sensul clasic al termenului.

Îmi vine în minte o singură frază, care a devenit un clasic al principiilor lui Nathan Rothschild: „Cine deține informațiile, deține lumea”. Și de aceea informațiile trebuie protejate de priviri indiscrete, pentru ca altcineva să nu-l folosească în propriile scopuri egoiste.

Criptografia: un punct de plecare

Acum, înainte de a lua în considerare însăși structura pe care o are orice algoritm de criptare, să ne aruncăm puțin în istorie, în acele vremuri îndepărtate când această știință era la început.

Se crede că arta de a ascunde datele a început să se dezvolte activ cu câteva mii de ani în urmă î.Hr. Primatul este atribuit vechilor sumerieni, regelui Solomon și preoților egipteni. Abia mult mai târziu au apărut aceleași semne și simboluri runice asemănătoare lor. Dar iată ce este interesant: uneori algoritmul de criptare a textelor (și la acea vreme ei erau cei care erau criptați) era de așa natură încât, în același simbol, un singur simbol putea însemna nu numai o literă, ci și un întreg cuvânt, concept sau chiar o propoziție. Din această cauză, descifrarea unor astfel de texte, chiar și cu sisteme criptografice moderne care fac posibilă restabilirea formei originale a oricărui text, devine absolut imposibilă. Dacă vorbim limbaj modern, acestea sunt destul de avansate, după cum se spune acum, algoritmi de criptare simetrică. Să le privim separat.

Lumea modernă: tipuri de algoritmi de criptare

În ceea ce privește protecția datelor confidențiale în lumea modernă, merită menționat vremurile în care computerele erau necunoscute omenirii. Ca să nu mai vorbim de câtă hârtie au tradus alchimiștii sau aceiași Templieri, încercând să ascundă textele adevărate despre cunoștințele cunoscute de ei, merită să ne amintim că de la apariția conexiunii, problema nu a făcut decât să se agraveze.

Și aici, poate, cel mai faimos dispozitiv poate fi numit o mașină de criptare germană din al Doilea Război Mondial numită „Enigma”, care înseamnă „ghicitoare” în engleză. Din nou, acesta este un exemplu al modului în care sunt utilizați algoritmii de criptare simetrică, a căror esență este că criptatorul și descifratorul cunosc cheia (algoritmul) folosit inițial pentru a ascunde datele.

Astăzi, astfel de criptosisteme sunt folosite peste tot. Cel mai frapant exemplu poate fi considerat, să zicem, un algoritm care este un standard internațional. Din punct de vedere terminologia informatică, permite utilizarea unei chei de 256 de biți. În general, algoritmii moderni de criptare sunt destul de diverși și pot fi împărțiți aproximativ în două: clasa mare: simetric si asimetric. Ele, în funcție de zona de destinație, sunt utilizate foarte larg astăzi. Iar alegerea algoritmului de criptare depinde direct de sarcinile atribuite și de metoda de recuperare a informațiilor în forma originala. Dar care este diferența dintre ele?

Algoritmi de criptare simetrici și asimetrici: care este diferența

Acum să vedem care este diferența fundamentală între astfel de sisteme și pe ce principii se bazează aplicarea lor în practică. După cum este deja clar, algoritmii de criptare sunt asociați concepte geometrice simetrie si asimetrie. Ce înseamnă aceasta va fi acum clarificat.

Algoritmul de criptare simetric DES, dezvoltat în 1977, implică o singură cheie care este probabil cunoscută de ambele părți. Cunoscând o astfel de cheie, nu este dificil să o aplici în practică pentru a citi același set de caractere fără sens, aducând-o, ca să spunem așa, într-o formă lizibilă.

Ce sunt algoritmii de criptare asimetrică? Aici se folosesc două chei, adică una este folosită pentru a codifica informațiile originale, iar alta este folosită pentru a decripta conținutul și nu este deloc necesar ca acestea să coincidă sau să fie deținute simultan de părțile de codificare și decodare. Unul este suficient pentru fiecare dintre ei. Acest lucru asigură că ambele chei nu cad în mâinile terților într-un grad foarte mare. Totuși, pe baza situației actuale, pentru mulți infractori acest tip de furt nu reprezintă o problemă deosebită. Un alt lucru este căutarea exactă a cheii (în general, parolă) care este potrivită pentru decriptarea datelor. Și aici pot exista atât de multe opțiuni încât chiar și cele mai multe calculator modern le va procesa timp de câteva decenii. După cum sa spus, niciun sistem informatic disponibil în lume nu poate pirata accesul la acesta și obține ceea ce se numește „interceptări telefonice” și nu va putea să o facă în deceniile următoare.

Cei mai faimoși și mai des utilizați algoritmi de criptare

Dar să revenim la lumea computerelor. Ce oferă astăzi principalii algoritmi de criptare, menționați să protejeze informațiile în stadiul actual de dezvoltare a tehnologiei informatice și mobile?

În majoritatea țărilor, standardul de facto este sistemul criptografic AES bazat pe o cheie de 128 de biți. Cu toate acestea, în paralel cu acesta, se folosește uneori un algoritm care, deși se referă la criptarea folosind o cheie deschisă (publică), este totuși unul dintre cele mai fiabile. Acest lucru, apropo, a fost dovedit de toți experții de top, deoarece sistemul în sine este determinat nu numai de gradul de criptare a datelor, ci și de menținerea integrității informațiilor. În ceea ce privește primele dezvoltări, care includ algoritmul de criptare DES, acesta este iremediabil depășit, iar încercările de a-l înlocui au început încă din 1997. Atunci, pe baza lui, a apărut un nou standard avansat de criptare AES (mai întâi cu o cheie de 128 de biți, apoi cu o cheie de 256 de biți).

Criptare RSA

Acum să ne concentrăm pe tehnologia RSA, care se referă la un sistem de criptare asimetric. Să presupunem că un abonat trimite o altă informație criptată folosind acest algoritm.

Pentru criptare se iau două numere suficient de mari X și Y, după care se calculează produsul lor Z, numit modul. În continuare, se selectează un număr străin A care îndeplinește condiția: 1< A < (X - 1) * (Y - 1). Оно обязательно должно быть простым, то есть не иметь общих делителей с произведением (X - 1) * (Y - 1), равным Z. Затем происходит вычисление числа B, но только так, что (A * B - 1) делится на (X - 1) * (Y - 1). В данном примере A - открытый показатель, B - секретный показатель, (Z; A) - открытый ключ, (Z; B) - секретный ключ.

Ce se întâmplă în timpul expedierii? Expeditorul creează un text cifrat, notat F, cu un mesaj inițial M, urmat de A și înmulțit cu mod Z: F = M**A*(mod Z). Destinatarul trebuie doar să calculeze un exemplu simplu: M = F**B*(mod Z). În linii mari, toate aceste acțiuni se reduc doar la exponențiere. Opțiunea de a crea semnatura digitala, dar ecuațiile de aici sunt ceva mai complicate. Pentru a nu deranja utilizatorul cu algebra, un astfel de material nu va fi prezentat.

Cât despre hacking, algoritmul de criptare RSA reprezintă o sarcină aproape imposibilă pentru un atacator: să calculeze cheia B. Acest lucru ar putea fi făcut teoretic folosind fonduri disponibile factorizarea (prin factorizarea numerelor originale X și Y), cu toate acestea, astăzi nu există astfel de mijloace, astfel încât sarcina în sine devine nu numai dificilă - este complet imposibilă.

Criptare DES

În fața noastră este un alt algoritm de criptare, în trecut, destul de eficient, cu o lungime maximă a blocului de 64 de biți (caractere), dintre care doar 56 sunt semnificativi. După cum am menționat mai sus, această tehnică este deja depășită, deși a durat destul de mult timp. ca standard pentru criptosistemele utilizate în SUA chiar și pentru industria de apărare.

Esența criptării sale simetrice este că pentru aceasta este utilizată o anumită secvență de 48 de biți. În acest caz, pentru operații sunt utilizate 16 cicluri dintr-un eșantion de cheie de 48 de biți. Dar! Prin urmare, toate ciclurile sunt similare în principiu de funcționare acest moment Nu este dificil să calculezi cheia necesară. De exemplu, una dintre cele mai multe calculatoare puterniceîn SUA, costând peste un milion de dolari, „rupe” criptarea în aproximativ trei ore și jumătate. Pentru mașinile de rang inferior, nu durează mai mult de 20 de ore pentru a calcula chiar și secvența în manifestarea sa maximă.

Criptare AES

În sfârșit, avem în fața noastră cel mai răspândit și, până de curând, invulnerabil sistem - algoritmul de criptare AES. Astăzi este prezentat în trei modificări - AES128, AES192 și AES256. Prima opțiune este folosită mai mult pentru a asigura securitatea informatiei dispozitive mobile, al doilea este implicat la un nivel superior. Ca standard, acest sistem a fost introdus oficial în 2002, iar suportul său a fost anunțat imediat de Intel Corporation, care produce cipuri de procesor.

Esența sa, spre deosebire de orice alt sistem de criptare simetrică, se rezumă la calcule bazate pe o reprezentare polinomială a codurilor și operații de calcul cu tablouri bidimensionale. Potrivit guvernului Statelor Unite, cracarea unei chei pe 128 de biți, chiar și cea mai modernă, ar dura aproximativ 149 de trilioane de ani. Vă rugăm să ne deosebim de o astfel de sursă competentă. În ultima sută de ani, tehnologia informatică a făcut un salt pe măsură, așa că nu este nevoie să vă amăgiți prea mult, mai ales că astăzi, după cum se dovedește, există sisteme de criptare chiar mai bune decât cele pe care Statele Unite le-au declarat complet rezistente. la hacking.

Probleme cu viruși și decriptare

Desigur, despre care vorbim despre viruși. ÎN În ultima vreme Au apărut viruși ransomware destul de specifici care criptează tot conținutul hard diskși partiții logice pe computerul infectat, după care victima primește o scrisoare prin care se anunță că toate fișierele sunt criptate și doar sursa specificată le poate decripta după ce a plătit o sumă ordonată.

În același timp, cel mai important, se indică faptul că sistemul AES1024 a fost folosit pentru a cripta datele, adică lungimea cheii este de patru ori mai mare decât AES256 actual, iar numărul de opțiuni la căutarea unui decriptor adecvat crește pur și simplu. incredibil.

Și pe baza declarației guvernului SUA despre timpul necesar pentru a decripta o cheie de 128 de biți, cum rămâne cu timpul necesar pentru a găsi o soluție pentru cazul unei chei de 1024 de biți și variantele acesteia? Aici Statele Unite au făcut o greșeală. Ei credeau că sistemul lor de criptare computerizată era perfect. Din păcate, au fost niște specialiști (aparent în spațiul post-sovietic) care au depășit postulatele „imuabile” americane din toate punctele de vedere.

Cu toate acestea, chiar și dezvoltatorii de top de software antivirus, inclusiv Kaspersky Lab, specialiștii care au creat Doctor Web, ESET Corporation și mulți alți lideri mondiali pur și simplu ridică din umeri, spun ei, pur și simplu nu există bani pentru a descifra un astfel de algoritm. , păstrând tăcerea în legătură cu faptul că nu este suficient timp. Desigur, atunci când contactați asistența, vi se cere să trimiteți fișierul criptat și, dacă este disponibil, de preferință originalul - în forma în care era înainte de a începe criptarea. Din păcate, nici măcar o analiză comparativă nu a produs încă rezultate tangibile.

Lumea pe care nu o cunoaștem

Ce putem spune dacă urmărim viitorul fără a putea descifra trecutul. Dacă te uiți la lumea mileniului nostru, vei observa că același împărat roman Gaius Iulius Caesar a folosit algoritmi de criptare simetrică în unele dintre mesajele sale. Ei bine, dacă te uiți la Leonardo da Vinci, în general te simți neliniștit doar din conștientizarea că în domeniul criptografiei acest om, a cărui viață este acoperită de un anumit văl de mister, și-a depășit contemporaneitatea de secole.

Până acum, mulți sunt bântuiți de așa-numitul „zâmbet al Giocondei”, în care există ceva atât de atractiv încât omul modern incapabil să înțeleagă. Apropo, relativ recent au fost găsite în pictură anumite simboluri (în ochi, pe rochie etc.), care indică clar că toate acestea conțin un fel de informații criptate de un mare geniu, pe care astăzi, din păcate, le putem extrage incapabil. Dar nici nu am pomenit diferite feluri structuri la scară mare care au fost capabile să revoluționeze înțelegerea fizicii din acea vreme.

Desigur, unele minți sunt înclinate exclusiv către faptul că, în cele mai multe cazuri, așa-numita „rație de aur” a fost folosită, cu toate acestea, aceasta nu oferă cheia întregului depozit uriaș de cunoștințe, despre care se crede că este fie de neînțeles pentru noi sau pierdut pentru totdeauna. Aparent, criptografii mai au de făcut o cantitate incredibilă de muncă pentru a înțelege că algoritmii moderni de criptare nu pot fi comparați uneori cu evoluțiile civilizațiilor antice. În plus, dacă astăzi există principii general acceptate de securitate a informațiilor, atunci cele care erau folosite în antichitate, din păcate, ne sunt complet inaccesibile și de neînțeles.

Inca un lucru. Există o credință nespusă că majoritatea textelor antice nu pot fi traduse pur și simplu pentru că cheile pentru descifrarea lor sunt păzite cu grijă de către societăți secrete precum masonii, Illuminati etc. Chiar și templierii și-au lăsat amprenta aici. Ce putem spune despre faptul că Biblioteca Vaticanului rămâne în continuare complet inaccesibilă? Nu este acolo unde se păstrează principalele chei pentru înțelegerea antichității? Mulți experți sunt înclinați către această versiune, considerând că Vaticanul ascunde în mod deliberat aceste informații de la societate. Dacă acest lucru este adevărat sau nu, nimeni nu știe încă. Dar un lucru poate fi spus absolut sigur - sistemele de criptografie antice nu erau în niciun fel inferioare (și poate chiar superioare) celor utilizate în lumea computerelor moderne.

În loc de o postfață

În sfârșit, merită spus că nu toate aspectele legate de sistemele criptografice actuale și tehnicile pe care le folosesc au fost luate în considerare aici. Faptul este că în majoritatea cazurilor ar fi necesar să se dea complex formule matematiceși să prezinte calcule care ar face ca majoritatea utilizatorilor să se învârtească. Trebuie doar să te uiți la exemplul care descrie algoritmul RSA pentru a realiza că totul în rest va părea mult mai complicat.

Principalul lucru aici este să înțelegeți și să vă adânciți, ca să spunem așa, în esența problemei. Ei bine, dacă vorbim despre ceea ce reprezintă ele sisteme moderne oferindu-se la depozitare informații confidențiale astfel încât să fie disponibil pentru un număr limitat de utilizatori, aici există puține opțiuni. În ciuda existenței multor sisteme criptografice, la fel algoritmi RSAși DES sunt în mod clar inferioare specificului AES. Cu toate acestea, majoritatea aplicatii moderne, conceput pentru complet diferit sisteme de operare, folosesc AES (desigur, în funcție de aplicație și dispozitiv). Dar evoluția „neautorizată” a acestui criptosistem, ca să spunem ușor, i-a șocat pe mulți, în special pe creatorii săi. Dar, în general, pe baza a ceea ce este disponibil astăzi, nu va fi dificil pentru mulți utilizatori să înțeleagă ce sunt sistemele de criptare a datelor criptografice, de ce sunt necesare și cum funcționează.

Departamentul de Tehnologii Informaţionale şi Comunicaţii

CRIPTOSISTME MODERNE SIMETRICE ȘI ASIMETRICE

Ghid pentru munca de laborator la rata

Moscova 2009


INTRODUCERE

Schimb de documente în în format electronic este posibilă numai dacă confidențialitatea acestora este asigurată, este asigurată o protecție fiabilă împotriva falsului sau modificării neautorizate, este garantată livrarea către destinatar și este posibilă soluționarea litigiilor legate de falsificarea mesajelor și de negare a dreptului de autor.

Sistemele criptografice s-au dezvoltat rapid în anii Primului și celui de-al Doilea Război Mondial. Din perioada postbelică și până în prezent, apariția computerului a accelerat dezvoltarea și îmbunătățirea metodelor criptografice.

În software-ul modern, algoritmii criptografici sunt utilizați pe scară largă nu numai pentru sarcinile de criptare a datelor, ci și pentru autentificare și verificarea integrității. Astăzi, există algoritmi criptografici bine cunoscuți și testați (atât cu chei simetrice, cât și asimetrice), a căror putere criptografică fie a fost dovedită matematic, fie se bazează pe necesitatea rezolvării matematice. sarcină dificilă(factorizare, logaritm discret etc.).

Scopul lucrării

Descrierea și implementarea software a unuia dintre algoritmii propuși.

Informații teoretice

Metode și mijloace de protecție a informațiilor

La prima etapă de dezvoltare a conceptului de securitate a informațiilor s-a acordat preferință software protecţie. Când practica a arătat că acest lucru nu era suficient pentru a asigura securitatea informațiilor, toate tipurile de dispozitive și sisteme au primit o dezvoltare intensivă. RoctsttsHHo, pe măsură ce s-a format o abordare sistematică a problemei asigurării securității informațiilor, a apărut necesitatea aplicării integrate a metodelor de protecție și a mijloacelor și mecanismelor de protecție create pe baza acestora.

Orez. 1. Clasificarea metodelor și mijloacelor de securitate a informațiilor

Să ne uităm pe scurt la principalele metode de securitate a informațiilor. Managementul este un impact direcționat asupra resurselor sistemului în cadrul ciclului tehnologic stabilit de prelucrare și transmitere a datelor, unde mijloacele tehnice, OS, programele, bazele de date, elementele de date etc. sunt considerate resurse.

Obstacolele blochează fizic calea atacatorului către datele protejate.

Mascarea este o metodă de protejare a datelor prin criptarea lor criptografică.

Reglementarea ca metodă de protecție constă în elaborarea și implementarea unor complexe de măsuri în timpul funcționării IVS care creează astfel de condiții pentru ciclul tehnologic de prelucrare a datelor care minimizează riscul accesului neautorizat la date. Regulamentul le acoperă pe ambele construcție structurală IVS, precum și tehnologia de prelucrare a datelor, organizarea muncii pentru utilizatori și personalul rețelei.

Motivația este crearea unui mediu și condiții în care regulile de manipulare a datelor protejate sunt guvernate de norme morale și morale.

Constrângerea include amenințarea cu răspunderea materială, administrativă și penală pentru încălcarea regulilor de prelucrare a datelor protejate. Pe baza metodelor enumerate, sunt create instrumente de protecție a datelor. Toate mijloacele de protecție a datelor pot fi împărțite în formale și informale.

Remedii formale

Mijloacele formale de protectie sunt cele care isi indeplinesc functiile dupa proceduri prestabilite fara interventie umana. Mijloacele formale de protecție includ hardware și software.

Mijloacele tehnice (protecția) includ toate dispozitivele care sunt concepute pentru a proteja securitatea.Mijloacele fizice de protecție sunt cele care creează obstacole fizice în calea datelor protejate și nu fac parte din echipamentul IVS, iar hardware înseamnă mijloace de protecție a datelor care sunt direct incluse în echipamente IVS.

Software-ul sunt instrumente de protecție a datelor care funcționează ca parte a software IVS.

Un grup separat de mijloace formale este format din mijloace criptografice, care sunt implementate sub formă de instrumente de protecție software, hardware și firmware.

Mijloace informale protecţie

Mijloacele informale de protecție sunt cele care sunt implementate ca urmare a activităților oamenilor sau reglementează aceste activități. Mijloacele informale includ măsuri și mijloace organizaționale, legislative și morale și etice.

Mijloacele organizatorice de protecție sunt înțelese ca măsuri organizatorice, tehnice și organizatorice și juridice efectuate în procesul de creare și operare a unui IVS pentru a asigura securitatea datelor.

Standardele morale și etice de protecție includ tot felul de norme care s-au dezvoltat sau se dezvoltă în mod tradițional pe măsură ce se dezvoltă informatizarea societății. Astfel de norme nu sunt obligatorii, dar nerespectarea lor duce de obicei la pierderea autorității și a prestigiului unei persoane, unui grup de oameni sau a unei întregi organizații. Se crede că Codul de etică are un impact pozitiv asupra personalului și utilizatorilor. Standardele morale și etice pot fi nescrise (de exemplu, norme general acceptate de onestitate, patriotism etc.) și formalizate ca un set de reguli și reglementări (coduri).


1. CONCEPTE ȘI DEFINIȚII DE BAZĂ

Majoritatea instrumentelor de securitate a informațiilor se bazează pe utilizarea cifrurilor criptografice și a procedurilor de criptare-decriptare. În conformitate cu standardul GOST 28147-89, un cifr este înțeles ca un set de transformări reversibile ale unui set de date deschise într-un set de date criptate, specificate de o cheie și un algoritm de transformare criptografică.

O cheie este o stare secretă specifică a unor parametri ai unui algoritm de transformare a datelor criptografice, asigurând alegerea unei singure opțiuni dintre toate posibilele pentru un algoritm dat.

Caracteristica principală a unui cifr este puterea criptografică, care determină rezistența acestuia la detectarea prin metode de criptoanaliza. De obicei, această caracteristică este determinată de intervalul de timp necesar pentru spargerea cifrului.

Există o serie de cerințe pentru cifrurile utilizate pentru protecția informațiilor criptografice:

· putere criptografică suficientă (fiabilitatea închiderii datelor);

· simplitatea procedurilor de criptare și decriptare;

· ușoară redundanță a informațiilor din cauza criptării;

· insensibilitate la mici erori de criptare etc.

Într-o măsură sau alta, aceste cerințe sunt îndeplinite de:

cifruri de permutare:

· cifruri de înlocuire;

· coduri de jocuri de noroc;

· cifruri bazate pe transformări analitice ale datelor criptate.

Criptarea transpunerii înseamnă că caracterele textului criptat sunt rearanjate conform unei anumite reguli în cadrul unui anumit bloc al acestui text. Cu o lungime suficientă a blocului și în limitele cărora se efectuează permutarea și o ordine complexă de permutare nerepetată, este posibil să se obțină o putere de cifrare acceptabilă pentru aplicații practice simple.

Criptarea de înlocuire (înlocuirea) implică înlocuirea caracterelor textului criptat cu caractere din același sau alt alfabet în conformitate cu o schemă de înlocuire predeterminată.

Criptarea gamma constă în faptul că simbolurile textului criptat se adaugă la simbolurile unei secvențe aleatorii, numite cifrul gamma. Puterea criptării este determinată în principal de lungimea (perioada) părții care nu se repetă a intervalului de criptare. Întrucât cu ajutorul unui computer este posibilă generarea unei game aproape infinite de cifruri, această metodă este una dintre principalele de criptare a informațiilor în sistemele automate.

Criptarea transformării analitice înseamnă că textul criptat este transformat conform unei reguli (formulă) analitică.

De exemplu, puteți folosi regula de multiplicare vector-matrice, unde matricea care se înmulțește este cheia de criptare (deci dimensiunea și conținutul acesteia trebuie păstrate secrete), iar simbolurile vectorului înmulțit sunt secvențial simbolurile textului criptat. Un alt exemplu este utilizarea așa-numitelor funcții unidirecționale pentru a construi criptosisteme cu cheie publică.

Procesele de criptare și decriptare sunt efectuate în cadrul unor criptosisteme.


1.1 Criptosisteme tradiționale simetrice. Principii de protecție a informațiilor criptografice

Criptografia este un set de tehnici de transformare a datelor menite să facă datele inutile unui adversar. Astfel de transformări rezolvă două probleme principale de protecție a datelor: problemele de confidențialitate (privarea unui adversar de capacitatea de a extrage informații dintr-un canal de comunicare) și probleme de integritate (privarea unui adversar de capacitatea de a schimba un mesaj astfel încât sensul acestuia să se schimbe, sau introduceți informații false într-un canal de comunicare). Problemele de confidențialitate și integritate a informațiilor sunt strâns legate, astfel încât metodele de rezolvare a uneia dintre ele sunt adesea aplicabile pentru rezolvarea celeilalte.

Schema generalizata sistem criptografic, oferind criptare informatiile transmise, este prezentat în Fig. 1. Expeditorul generează text simplu mesaj original

, care trebuie transmisă destinatarului legitim pe un canal nesigur. Canalul este monitorizat de un interceptor cu scopul de a intercepta și dezvăluie mesaj transmis. Pentru a împiedica un interceptator să învețe conținutul mesajului, expeditorul îl criptează folosind o transformare reversibilă și primește un text cifrat (sau criptogramă), pe care îl trimite destinatarului.

Întregul set de algoritmi este împărțit în două grupuri mari: blocȘi în linie. Diferența dintre ele este că algoritmii primului grup acceptă textul sursă în blocuri de mai multe caractere, în timp ce algoritmii celui de-al doilea grup transformă secvențial fluxul de text sursă caracter cu caracter sau chiar bit cu bit. Folosirea unui cifru bloc înseamnă că textul original este împărțit în blocuri de o anumită lungime și toate transformările sunt efectuate separat pe fiecare bloc. Uneori, transformările dintr-un bloc pot depinde de rezultatele transformărilor din blocurile anterioare.

Cu criptarea fluxului, fiecare caracter al textului sursă poate fi reprezentat sub formă de biți, adică în formă binară. În continuare, fiecare bit din secvența rezultată poate fi convertit conform unei anumite reguli. Ca o astfel de regulă de conversie, adăugarea pe biți a textului sursă cu o secvență secretă de biți este adesea folosită. Secvența de biți secretă joacă rolul cheii de criptare în cifrurile de flux simetrice. Operația de adăugare pe biți în sine, numită și operația de adăugare modulo doi, operația „SAU exclusivă” sau pur și simplu XOR, este foarte simplă. La adăugare, fiecare bit este înlocuit conform regulii:

0 + 0 = 0

0 + 1 = 1

1 + 0 = 1

1 + 1 = 0

Pentru a decripta, trebuie să efectuați procedura inversă. Convertiți criptograma în formă binară și adăugați-o bit cu bit cu aceeași secvență secretă care a fost folosită pentru criptare.

Baza majorității cifrurilor de flux este un fel de generator de secvențe pseudo-aleatorie. Sarcina unui astfel de generator este de a produce o secvență de biți bit cu bit, care este uneori numită și scara cheie a cifrului. Acest gamma este utilizat în operația de adăugare pe biți cu textul sursă. Cheia de criptare reală în acest caz este starea inițială (și, eventual, structura generatorului). Evident, oricine cunoaște algoritmul de generare a secvenței și datele inițiale de intrare pentru algoritm va putea produce întreaga gamă. Principala caracteristică a unor astfel de coduri de flux este puterea criptografică a generatorului de secvențe pseudo-aleatorie. Generatorul trebuie să ofere următoarele proprietăți importante:

- produce secvențe de biți care sunt apropiate de secvențe aleatorii în caracteristicile lor statistice;

- asigurarea producerii unor secvențe suficient de lungi, nerepetitive;

- au suficientă viteză pentru a lucra în timp real.

Prima dintre aceste proprietăți este necesară pentru a preveni un atacator să ghicească gama cheie a cifrului. A doua proprietate asigură că metoda de criptare este rezistentă la diferite atacuri. Ultima proprietate face posibilă utilizarea cifrurilor de flux în practică modul real timp.

Operațiune înlocuitori (transmutație), care se mai numește uneori și operație substituiri , constă în înlocuirea unor caractere din textul sursă cu alte caractere. Caracterele textului sursă și caracterele cu care sunt înlocuite pot aparține aceluiași alfabet (de exemplu, limba rusă) sau pot fi diferite.

Operațiune permutări constă în rearanjarea caracterelor textului sursă după o anumită regulă.

Cifrurile de substituție și permutare sunt printre cele mai vechi metode de criptare cunoscute. Metode similare sunt cunoscute din cele mai vechi timpuri. În timp, regulile de rearanjare și înlocuire au devenit mai complexe. Baza teoretică pentru construirea unor cifruri puternice a fost dezvoltată la mijlocul secolului trecut de celebrul om de știință american Claude Elwood Shannon (1916-2001), renumit și pentru lucrările sale fundamentale în domeniul teoriei informației. Odată cu apariția lucrării sale „Teoria comunicării în sistemele secrete”, criptografia se transformă într-o disciplină științifică strictă. S-a propus un aparat matematic pentru construirea de cifruri puternice și au fost formulate principiile de bază dispersieȘi agitând.


Difuzia – nivelarea influenței proprietăților statistice ale textului simplu asupra criptogramei. Scattering răspândește influența unui caracter text simplu număr mare caractere criptograme. Imprăștirea este de obicei realizată folosind tehnici de permutare.

Amestecarea – complicarea restabilirii relației dintre proprietățile statistice ale textului simplu și criptogramă, precum și dintre cheie și criptogramă. Amestecarea corespunde utilizării metodelor de înlocuire [Alf2001].

Folosind aceste principii, în a doua jumătate a secolului trecut a fost propusă o arhitectură pentru construirea cifrurilor bloc simetrice. Arhitectura a fost numită Rețele Feisthal(Rețeaua Feistal), numită după Horst Feistal, un angajat IBM. Această arhitectură a determinat mult timp direcția principală de dezvoltare a standardelor în domeniul criptării datelor.

În rețeaua Feistal, blocul de date original este transformat. Ieșirea rețelei este un bloc de date convertit. Blocul original este împărțit în două părți X1 și X2. Blocul de date de ieșire constă, de asemenea, din două părți Y1 și Y2. Partea Y1 este valoarea directă a lui X2. Valoarea lui Y2 este rezultatul adunării părții X1 și a rezultatului funcții de criptare F. Funcția de criptare aici se referă la o funcție a două argumente: bloc de intrare date și cheie secretă. Funcția în sine reprezintă o transformare nespecificată asupra datelor. În rețeaua Feistal, argumentele funcției de criptare F sunt blocul de date de intrare X2 și cheia secretă de criptare K.

Formulele analitice pentru transformările descrise sunt următoarele:

Y1 = X2

Y2 = X1  F(X2, K)

O proprietate importantă a rețelei Feistal este că transformările efectuate cu ajutorul acesteia sunt reversibile. Transformările sunt reversibile chiar dacă funcția de criptare F nu este reversibilă. Adică, este întotdeauna posibil să se obțină blocul de date original X din blocul de date Y

X1 = Y2  F(Y1, K)

X2 = Y1

Modern standarde deschise Criptarea datelor sunt cifruri bloc simetrice care utilizează transformări compuse (substituții, permutări și altele) pentru a cripta datele. Astfel de standarde sunt recomandate pentru protecția informațiilor comerciale și neclasificate. Recomandarea de utilizare a standardului pentru a proteja informațiile comerciale și neclasificate înseamnă că nu ar trebui să fie utilizat pentru a cripta informațiile care sunt secrete de stat sau care necesită o autorizare specială. Cu toate acestea, acest lucru nu înseamnă că algoritmul este instabil sau netestat. În marea majoritate a cazurilor, puterea algoritmului este suficientă pentru a preveni concurenții sau cei nedoritori să-l pirateze într-un timp acceptabil. Hackingul în acest caz înseamnă decriptarea criptogramelor, adică. dezvăluirea textului original al unui mesaj fără a cunoaște cheia secretă. Posibilitatea unui astfel de hack depinde foarte mult de resursele atacatorilor (financiare, de calcul, intelectuale și altele). Din acest punct de vedere, statele conducătoare au resurse totale care depășesc semnificativ potențialul celor mai mari corporații comerciale. Din acest motiv, pentru păstrarea secretelor de stat, este indicat să folosiți algoritmi mai persistenti și nepublicați. În plus, algoritmii mai robusti necesită, de obicei, mai multe resurse și funcționează mai lent. În același timp, în sistemele civile și comerciale, viteza operațiunilor este adesea una dintre cele mai multe criterii importante. În cele din urmă, utilizarea algoritmilor ultra-puternici poate deveni ineficientă din punct de vedere al costurilor pentru criptarea informațiilor cu un nivel foarte ridicat. timp scurt viaţă. Există puține motive pentru a folosi un cifr care va dura mulți ani pentru a sparge sau pentru a proteja mesajele care vor fi lipsite de valoare în câteva zile sau ore. Din motivele expuse mai sus, oficialul publicat standardele de stat criptarea au un anumit compromis între o serie de criterii, precum: puterea, viteza, ușurința de implementare, costul și altele.

DES- vechi standard de criptare federal din SUA;

GOST 28147-89- standard intern de criptare a datelor;

AES- noul standard federal de criptare din SUA.

Prezentarea este dată în ordinea cronologică a apariției acestor standarde. Funcționarea algoritmilor criptografici simetrici poate fi considerată ca funcționarea „cutiilor negre”. Intrarea este textul original și o cheie de criptare cu dimensiune fixă. Ieșirea este o criptogramă. Structura internă a unor astfel de algoritmi este de interes pentru dezvoltatori și criptoanalisti. Utilizatorii sunt interesați în primul rând de caracteristicile comparative ale algoritmilor, de rezultatele analizei rezistenței acestora și de domeniul de aplicare.

Standardul de criptare digitală (DES) a servit ca standard federal de criptare în Statele Unite de peste 20 de ani. Algoritmul a fost Algoritmul care stă la baza standardului a fost dezvoltat în 1974 la IBM. În 1977, standardul a fost publicat de Biroul Național de Standarde al SUA (NBS). A fost apoi aprobat de Institutul Național de Standarde și Tehnologie al SUA (NIST) în 1980 pentru a proteja informațiile comerciale și neclasificate. Din 1986, a devenit un standard internațional adoptat de ISO sub denumirea DEA-1.

Algoritmul care stă la baza DES aparține grupului de cifruri bloc simetrice. Lungimea cheii este de 64 de biți. Din care fiecare al optulea bit este folosit pentru verificarea parității. În consecință, cheia conține doar 56 de biți secreti. Blocul de date de intrare este, de asemenea, de 64 de biți.

Algoritmul se bazează pe arhitectura de rețea Feistal. Esența sa este de a efectua transformări în această rețea de mai multe ori la rând. Blocul de date de ieșire după o transformare este blocul de intrare pentru următoarea transformare. Fiecare astfel de transformare este numită runda de criptare. Uneori se mai numesc DES și alți algoritmi similari cifruri bloc iterative, unde o iterație înseamnă efectuarea unei transformări în rețeaua Feistal. DES are un total de șaisprezece runde de criptare.

Numărul de runde de criptare este o caracteristică importantă a unor astfel de cifruri iterative. Această valoare determină puterea cifrului împotriva metode moderne criptoanaliza, cum ar fi criptoanaliza diferențială și liniară. După cum sa menționat în [Var98], utilizarea acestor metode a dat cele mai bune rezultateîn domeniul analizei sistemelor de cifrare în bloc. Prezența a șaisprezece runde de criptare este minimul necesar pentru a se asigura că metodele de criptoanaliza de mai sus nu sunt mai ușoare decât o căutare exhaustivă a tuturor cheilor posibile. Trebuie spus că metodele de criptoanaliza diferențială și liniară au fost publicate în literatura deschisă relativ recent. În același timp, DES a fost dezvoltat și analizat încă din anii 70 ai secolului trecut. Acest lucru sugerează că capacitățile unor astfel de metode de spargere a codurilor erau cunoscute servicii speciale de ceva vreme acum.

Fiecare rundă de criptare din rețeaua Feistal folosește o cheie de criptare pentru a o transmite la intrarea funcției de criptare. Se numesc astfel de chei chei rotunde. În total, sunt utilizate șaisprezece chei rotunde diferite. Fiecare astfel de cheie rotundă este obținută din cheia originală O metodă de generare a acestor chei este publicată în descrierea DES.

Funcția de criptare în sine nu este complicată. Se bazează pe regula de transformare a blocului de date de intrare. Această transformare constă în adăugarea blocului de date de intrare cu o cheie rotundă și apoi transformarea rezultatului rezultat în așa-numita S-box. Un S-box în DES este o matrice de 4 rânduri și 16 coloane. Fiecare celulă a matricei conține un număr de la 0 la 15. Un total de 8 astfel de matrici sunt publicate și utilizate în standard.

De-a lungul existenței sale, DES a devenit un algoritm de criptare foarte comun, implementat în numeroase sisteme și aplicații. Cu toate acestea, astăzi este deja un algoritm învechit care nu poate oferi durabilitatea necesară. Acest lucru se datorează în primul rând lungimii insuficiente a cheii de criptare pe 56 de biți adoptată în standard. La sfârșitul anilor 90 ai secolului trecut, compania RSA Security a organizat o serie de competiții deschise pentru a-l pirata. Sarcina competiției a fost de a descifra o criptogramă publicată pe site-ul companiei. Toate opțiunile au fost rezolvate folosind un atac cu forță brută, adică prin căutarea exhaustivă a tuturor opțiuni posibile chei. Mai jos este un tabel cu o cronologie a hack-urilor DES în competițiile deschise desfășurate de RSA Security:

Data

Timp de hacking

Putere

18.06.1997

96 de zile

7 miliarde de chei/sec.

23.02.1998

39 de zile

34 de miliarde de chei/sec.

17.07.1998

3 zile

88 de miliarde de chei/sec.

19.01.1999

22 ore 15 minute

245 miliarde de chei/sec.

După cum puteți vedea din tabelul de mai jos, în timpul ultimei competiții, DES a fost spart în mai puțin de o zi. După aceasta, RSA Security a încetat să mai organizeze competiții de hacking DES. Cel mai recent hack a fost un efort comun între două organizații non-profit: Electronic Frontier Foundation (www.eff.org) și Distributed Computing Technologies, Inc. (www.distributed.net) Selectarea posibilelor opțiuni cheie a fost efectuată folosind un computer special numit Deep Cracker, care a costat 250.000 USD. În plus, în procesul de procesare a cheilor, a fost folosită puterea computerelor conectate la Internet.

Rezultatele obținute au demonstrat în mod elocvent necesitatea adoptării unui nou standard în domeniul criptării datelor și ușurării restricțiilor la exportul produselor criptografice care existau la acea vreme în Statele Unite. Noul standard a fost adoptat în 2001 și a fost numit Advanced Encryption Standard (AES). Acest standard și algoritmul de bază sunt discutate mai jos. De la sfârșitul anilor 90 ai secolului trecut, ca o consolidare a standardului existent, a fost utilizată modificarea acestuia, numită „Triple-DES” (Triple-DES).

Algoritmul GOST 28147-89 este un cifru bloc simetric și se bazează pe arhitectura de rețea Feistal. Lungimea cheii este de 256 de biți. Blocul de date de intrare este de 64 de biți. Algoritmul folosește 32 de runde de criptare. Fiecare rundă de criptare folosește o cheie rotundă, ale cărei valori sunt derivate din cheia secretă de criptare originală.

Funcțiile de criptare ale algoritmului GOST 28147-89, utilizate în fiecare rundă de criptare, au o structură simplă și constau în înlocuire simplă și operații de schimbare ciclică. Înlocuirile se fac în blocul S într-o matrice specială. Pentru algoritmul GOST 28147-89, nu este specificat un anumit tip de matrice de înlocuire. Fiecare dezvoltator și producător își poate crea propria matrice sau poate face o cerere către servicii speciale care pot ajuta la pregătirea unei matrice criptografice. Dacă doriți, puteți modifica matricea de înlocuire în timp. Datorită faptului că matricea nu este specificată, uneori este numită și element cheie înlocuibil. Matricea are opt rânduri, șaisprezece coloane și fiecare celulă stochează patru biți de informații. Dimensiunea matricei este de 512 biți. Dacă adăugăm la aceasta dimensiunea cheii de criptare, dimensiunea totală a informațiilor secrete va fi de 768 de biți. Acest lucru oferă 2.768 de opțiuni posibile pentru a încerca toate valorile informațiilor secrete. Căutarea unui astfel de număr de opțiuni depășește cu mult capacitățile anticipate tehnologia calculatoarelorși este complet inaccesibil în viitorul previzibil. Cu toate acestea, în mod corect, trebuie spus că doar cheia de criptare pe 256 de biți este o informație cu adevărat secretă. Structura matricelor chiar și nepublicate poate fi determinată teoretic prin analizarea funcționării software-ului sau hardware-ului. Sunt posibile și încercări de acces neautorizat la documentația tehnică privind implementarea algoritmului GOST 28147-89. Dar chiar și în acest caz, pentru a enumera complet toate cheile posibile, va fi necesar să efectuați 2256 de încercări. Acest număr de opțiuni rămâne încă gigantic și asigură că algoritmul este absolut rezistent la atacurile de forță brută.

În publicațiile deschise, nu a fost încă luată în considerare o singură metodă de succes de a pirata standardul național de criptare a datelor. Cu toate acestea, lucrarea [Mol02] pledează în favoarea înlocuirii standardului existent cu un nou algoritm. Potrivit autorilor, standardul existent, datorită arhitecturii sale, nu poate îndeplini cerințele moderne pentru viteza de conversie a datelor (mai mult de 2 Gbit/s). În plus, se observă că într-o serie de lucrări din ultimii câțiva ani, au fost descrise diferite atacuri potențiale legate de algoritmul GOST 28147-89.

Pentru standardul GOST 28147-89, sunt definite următoarele patru moduri de operare:

Înlocuire ușoară. Acesta este principalul și cel mai simplu mod de operare al algoritmului. Folosit pentru a cripta informațiile cheie.

Gumarea . În acest mod, este posibil să se genereze un gamma pseudo-aleatoriu cu proprietăți statistice foarte bune. De fapt, folosirea acestui mod vă permite să obțineți un cifr de flux dintr-un cifru bloc. Folosit pentru criptarea datelor.

Jocuri cu feedback . Acest mod diferă de precedentul prin felul în care produce gamma. Următorul element gamma este generată ca urmare a transformării blocului anterior de date criptate. Acest mod este uneori numit și modul gamma cu blocuri de blocare [Dom2000]. Fiecare bloc criptogramă depinde de toate blocurile anterioare de text simplu. Modurile Gamma pot procesa blocuri de date de intrare mai mici de 8 octeți. Această proprietate este utilizată pentru a cripta matrice de date de dimensiuni arbitrare.

Modul de generare a inserției de simulare . O inserție simulată este o valoare calculată folosind datele originale și cheia secretă. Folosind inserarea simulată, puteți determina dacă informațiile au fost aduse modificări în timpul transmiterii acesteia. Acest mod este utilizat pentru a detecta distorsiunile într-o matrice de date criptate cu o probabilitate specificată.

Standardul de criptare avansat (AES) a fost selectat printr-o competiție internațională deschisă organizată de NIST din SUA. Începutul competiției a fost anunțat pe 2 ianuarie 1997. Ca urmare a selecției inițiale din august 1998, au fost selectați cincisprezece algoritmi candidați. Apoi, un an mai târziu, în august 1999, cinci algoritmi au fost identificați ca finaliști ai competiției. Concursul s-a încheiat în octombrie 2000. Câștigătorul a fost algoritmul belgian RIJNDAEL dezvoltat de Vincent Rijmen și Joan Daemen. Acest algoritm a fost ales ca standard AES. Versiunea finală a standardului a fost publicată în noiembrie 2001. Algoritmul a fost aprobat ca un nou standard federal de criptare în Statele Unite sub codul FIPS-197 și este destinat procesării informațiilor comerciale și a informațiilor care nu conțin secrete de stat. Standardul a intrat în vigoare la 26 mai 2002 [Zen2002].

Standardul AES se bazează pe o arhitectură diferită de cea a rețelei Feisthal. Autorii algoritmului au numit această nouă arhitectură „Pătrat”. Esența sa constă în faptul că blocul de date original este scris octet cu octet în matrice. Procesul de criptare în sine constă în efectuarea în mod repetat a diferitelor transformări cu elementele unei astfel de matrice, precum și cu rândurile și coloanele acesteia. Arhitectura propusă are proprietăți bune de împrăștiere și amestecare Shannon.

Standardul AES oferă trei moduri de funcționare, în funcție de lungimea cheii utilizate. Lungimile cheilor posibile sunt 128, 192 și 256 de biți. Numărul de runde de criptare depinde de lungimea cheii utilizate; acestea sunt 10, 12 sau, respectiv, 14 runde. Dimensiunea blocului de date sursă de intrare și a blocului de text cifrat de ieșire sunt aceleași și sunt întotdeauna de 128 de biți.

În timpul analizei algoritmului ca parte a competiției în curs, nu au fost găsite puncte slabe în acesta. Pentru a fi corect, trebuie spus că acest lucru se aplică tuturor algoritmilor care au fost finaliști în competiție. Toți sunt algoritmi puternici. Cu toate acestea, pe baza caracteristicilor combinate de performanță, ușurință de implementare, intensitate a resurselor și altele, RIJNDAEL s-a dovedit a fi cel mai preferat ca standard de criptare universal.

Beneficiile standardului AES includ:

- eficiență ridicată a implementării pe orice platformă;

- durabilitate ridicată;

- cerințe reduse de memorie;

- posibilitate de implementare pe carduri inteligente;

- procedura de generare rapidă a cheilor;

- posibilitatea paralelismului operaţiilor.


Mai jos este dat masă rotativă cu caracteristicile standardelor considerate de criptare a datelor [Vin2001].

DES

GOST 28147-89

AES

Dimensiunea blocului de date (biți)

Dimensiunea cheii
(pic)

128, 192, 256

Arhitectură

Rețeaua Feistal

Rețeaua Feistal

"Pătrat"

Numărul de runde

10, 12, 14

Structură rotundă

Simplu

Simplu

Complex

Operații utilizate

Operații aditive, înlocuire, permutări, schimburi

Operații aditive, înlocuire, schimburi

Operații pe câmpuri finite

Pentru a enumera toate cheile posibile pentru algoritmul DES, trebuie să rulați aproximativ 7,2x1016 opțiuni. Dimensiune minima Cheia din algoritmul AES este de 128 de biți. Pentru a enumera toate cheile posibile în acest caz, va trebui să verificați aproximativ 3.4x1038 opțiuni. Aceasta este de aproximativ 1021 de ori mai mult decât în ​​cazul DES. Pentru a enumera toate cheile cu lungimea de 256 de biți, va trebui să verificați un număr astronomic de opțiuni - aproximativ 1,1x1077 chei. Puterea noului standard de criptare AES împotriva atacurilor cu forță brută a devenit abia acum egală cu standardul intern GOST 28147-89.

Algoritmul GOST 28147-89 face extrem de ușoară generarea cheilor de criptare rotunde. Ele sunt considerate componente ale cheii secrete inițiale de criptare. În același timp, DES și AES folosesc algoritmi mult mai complexi pentru calcularea cheilor rotunde.

În comparație cu DES, algoritmul GOST 28147-89 este mai rapid. De exemplu, pe procesoarele Intel x86 implementarea GOST 28147-89 este de peste două ori mai rapidă decât implementarea DES. Pe procesorul Pention Pro-200 MHz, limita de performanță a algoritmului GOST 28147-89 este de 8 MB/sec. Tabelul de mai jos arată cifre comparative standardele de performanță GOST 28147-89 și AES

GOST 28147-89

AES

Pentium 166 MHz

2,04 MB/s

2,46 MB/s

Pentium III 433 MHz

8,30 MB/s

9,36 MB/s

Algoritmul GOST 28147-89 este mai convenabil pentru implementarea hardware și software decât DES, dar mai puțin convenabil decât AES. Standardele GOST 28147-89 și AES au valori comparabile pentru principalele caracteristici.

Pentru algoritmii de criptare simetrică în bloc (AS), sunt definite mai multe moduri principale de utilizare a acestora. Aceste moduri au fost inițial specifice utilizării algoritmului DES, dar de fapt pot fi aplicate oricărui algoritm bloc. De exemplu, unele dintre aceste moduri sunt analoge ale modurilor de operare definite pentru algoritmul GOST 28147-89. Modul selectat determină domeniul de aplicare al algoritmului de criptare bloc. Fiecare mod de operare are propriile sale avantaje și dezavantaje.

Modul electronic de coduri .

Cartea electronică de coduri (ECB)

Textul sursă este împărțit în blocuri. În acest mod, fiecare bloc este introdus în algoritmul de criptare și este convertit independent unul de celălalt. Fiecare bloc este, de asemenea, decriptat independent.

Avantaje:

- ușurința de implementare;

- capacitatea de a cripta mai multe mesaje cu o singură cheie fără a reduce securitatea;

- posibilitatea de paralel.

Defecte:

- corespondență unu-la-unu între blocuri de text simplu și criptograme;

- capacitatea de a repeta blocuri și de a înlocui blocuri în pachetul de informații;

- propagarea erorilor de text cifrat.


Zona de aplicare:

- criptarea altor chei și, în general, informații aleatorii;

- criptarea stocurilor de date cu acces aleatoriu.

Modul de înlănțuire a blocurilor de text cifrat .

Cipher Block Chaining (CBC)

Textul sursă este împărțit în blocuri. Asa numitul vector de inițializare– o secvență nesecretă și aleatorie de biți, de lungime egală cu un bloc de date primite. Primul bloc de date inițiale este adăugat la vectorul de inițializare. Rezultatul adăugării este introdus în algoritmul de criptare. Criptograma rezultată este adăugată la următorul bloc de text sursă. Rezultatul adăugării este transmis la intrarea algoritmului de criptare și așa mai departe.


Avantaje:

- este dificil de manipulat textul simplu (înlocuire și înlocuire);

- Puteți cripta mai multe mesaje cu o singură cheie;

- decriptarea poate fi efectuată în paralel.

Defecte:

- textul cifrat este cu un bloc mai lung decât textul simplu;

- o eroare de sincronizare este fatală;

- propagarea erorilor de text cifrat;

- criptarea nu poate fi efectuată în paralel.

Zona de aplicare:

- criptarea fișierelor și mesajelor.


Modul părere prin text cifrat.

Cipher Feed Back (CFB)

La început, vectorul de inițializare este alimentat direct la intrarea algoritmului de criptare. Textul sursă este format din blocuri de k biți și k n, Unde n- lungimea blocului de date de intrare. Fiecare bloc de text sursă este adăugat la o parte a secvenței de lungime k biți obținuți ca rezultat al algoritmului de criptare. Rezultatul adunării este un bloc de text cifrat. Valoarea secvenței obținute la ieșirea algoritmului de criptare este deplasată cu k biți la stânga. Cea mai corectă k biți ai secvenței sunt ocupați de biți ai criptogramei. Secvența de date de intrare nou formată este alimentată la intrarea algoritmului de criptare și așa mai departe.


Avantaje:

- dimensiunea blocului de date poate diferi de dimensiunea standard;

- este dificil să manipulezi textul simplu;

- capacitatea de a cripta mai multe mesaje cu o singură cheie.

Defecte:

- unicitatea obligatorie (dar nu secretul) vectorului de inițializare;

- propagarea rapidă a erorilor de text cifrat.

Zona de aplicare:

- criptarea caracter cu caracter a fluxului de date (transferul de date între server și client în timpul procesului de autentificare).


Modul feedback de ieșire .

Feedback de ieșire (OFB)

Acest mod diferă de cel anterior prin aceea că partea din secvența de intrare nou generată este completată k biți nu ai criptogramei, ci ai secvenței de ieșire obținute la pasul anterior. Această diferență vă permite să formulați complet intervalul de cifrare în avans. Acest gamma poate fi apoi folosit pentru a cripta textul simplu, de exemplu, așa cum se întâmplă în cifrurile de flux.


Avantaje:

- erorile de text cifrat nu sunt propagate;

- posibilitatea pregătirii prealabile a scalei;

- Dimensiunea blocului de date poate diferi de dimensiunea standard.

Defecte:

- eroarea de sincronizare este fatală;

- ușor de manipulat text simplu;

- unicitatea obligatorie (dar nu secretul) vectorului de inițializare.

Zona de aplicare:

- sisteme sincrone de mare viteză (comunicații prin satelit);

- în general, în sistemele care funcționează într-un mediu cu o mare probabilitate de erori în timpul transmiterii informațiilor.


Moduri suplimentare de criptare

Există, de asemenea, o serie de moduri de criptare suplimentare:

· Modul Propagation Block Chaining (PCBC).

· Modul de concatenare a blocurilor de text cifrat cu suma de control(CBCC).

· Mod feedback neliniar de ieșire (OFBNLF).

· Plaintext Block Chaining (PBC).

· Modul Plaintext Feedback (PFB).

· Înlănțuirea blocurilor de text prin diferențe de text simplu (CBCPD).

Criptosisteme simetrice

Criptosistemele simetrice (de asemenea criptarea simetrică, cifrurile simetrice) sunt o metodă de criptare în care aceeași cheie criptografică este utilizată pentru criptare și decriptare. Înainte de inventarea schemei de criptare asimetrică, singura metodă care exista a fost criptarea simetrică. Cheia algoritmului trebuie ținută secretă de ambele părți. Cheia algoritmului este aleasă de părți înainte de începerea schimbului de mesaje.

În prezent, cifrurile simetrice sunt:

1. Cifre bloc - procesează informații în blocuri de o anumită lungime (de obicei 64, 128 de biți), aplicând o cheie blocului într-o ordine prescrisă, de obicei prin mai multe cicluri de amestecare și înlocuire, numite runde. Rezultatul repetării rundelor este un efect de avalanșă - o pierdere tot mai mare a corespondenței biților între blocurile de date deschise și criptate.

2. Cifruri în flux - în care criptarea este efectuată pe fiecare bit sau octet al textului original (plat) folosind gamma. Un cifr de flux poate fi creat cu ușurință pe baza unui cifru bloc (de exemplu, GOST 28147-89 în modul gamma), lansat într-un mod special.

Sistem criptografic cu cheie publică

Un sistem criptografic cu cheie publică (sau Criptare asimetrică, Cifrare asimetrică) este un sistem de criptare a informațiilor în care cheia cu care este criptat mesajul și mesajul criptat în sine sunt transmise pe un canal deschis (adică neprotejat, observabil). Destinatarul folosește o cheie privată pentru a genera cheia publică și pentru a citi mesajul criptat. Sistemele criptografice cu cheie publică sunt în prezent utilizate pe scară largă în diverse protocoale de rețea, în special în Protocolul SSLși protocoale bazate pe acesta nivelul de aplicare HTTPS, SSH etc.

Orez. 7.

1. Destinatarul generează o cheie. Cheia este împărțită într-o parte deschisă și închisă. În acest caz, cheia publică nu ar trebui să fie transmisă prin canal deschis. Sau autenticitatea acestuia trebuie să fie garantată de o autoritate de certificare.

2. Expeditorul criptează mesajul folosind cheia publică.

3. Destinatarul decriptează mesajul utilizând cheia privată.

Dezavantajul metodei: Deși mesajul este criptat în siguranță, destinatarul și expeditorul sunt expuși prin însuși faptul de a trimite un mesaj criptat.

Ideea generală a unui sistem criptografic cu cheie publică este de a utiliza, atunci când se criptează un mesaj, o astfel de funcție din cheia publică și mesajul (funcția de criptare), care din punct de vedere algoritmic este foarte greu de inversat, adică să-și calculeze argumentul. din valoarea funcției, chiar cunoscând valoarea cheii.

Caracteristicile sistemului

Avantaj Avantajul cifrurilor asimetrice față de cifrurile simetrice este că nu este nevoie să transmiteți o cheie secretă. Partea care dorește să primească texte cifrate, în conformitate cu algoritmul utilizat, generează o pereche „cheie publică - cheie privată" Valorile cheie sunt legate, dar calcularea unei valori din alta nu ar trebui să fie posibilă punct practic viziune. Cheia publică este publicată în directoare deschise și este folosită pentru a cripta informațiile de către contraparte. Cheia privată este păstrată secretă și este folosită pentru a decripta mesajul trimis proprietarului perechii de chei. Cifrurile asimetrice au fost introduse în 1976 de Whitfield Diffie și Martin Hellman, New Directions in Modern Cryptography. Ei au propus un sistem partajat de schimb de chei secrete bazat pe problema logaritmului discret. În general, baza criptosistemelor asimetrice cunoscute este una dintre problemele matematice complexe, care permite construirea funcțiilor unidirecționale și a funcțiilor capcană. De exemplu, criptosistemul Rivest-Shamir-Adelman folosește problema factorizării numerelor mari, iar criptosistemele Merkle-Hellman și Hoare-Rivest se bazează pe așa-numita problemă a rucsacului.

Defecte- criptosistemele asimetrice necesită resurse de calcul semnificativ mai mari. În plus, este necesar să se asigure autenticitatea (autenticitatea) a chei publice, pentru care se folosesc de obicei certificate.

Un criptosistem hibrid (sau combinat) este un sistem de criptare care are toate avantajele unui criptosistem cu cheie publică, dar fără principalul său dezavantaj - viteza scăzută de criptare.

Principiu: Sistemele criptografice profită de două criptosisteme principale: criptografie simetrică și asimetrică. Programele precum PGP și GnuPG sunt construite pe acest principiu.

Principalul dezavantaj criptografia asimetrică are viteză mică datorită calcule complexe cerute de algoritmii săi, în timp ce criptografia simetrică a demonstrat în mod tradițional performanțe strălucitoare. Cu toate acestea, criptosistemele simetrice au un dezavantaj semnificativ - utilizarea lor necesită prezența unui canal securizat pentru transmiterea cheilor. Pentru a depăși acest dezavantaj, ei recurg la criptosisteme asimetrice care folosesc o pereche de chei: publică și privată.

Criptare: Majoritatea sistemelor de criptare funcționează după cum urmează. Pentru un algoritm simetric (3DES, IDEA, AES sau orice altul), este generată o cheie aleatorie. O astfel de cheie are de obicei o dimensiune de la 128 la 512 biți (în funcție de algoritm). Un algoritm simetric este apoi utilizat pentru a cripta mesajul. În cazul cifrurilor bloc, este necesar să se folosească un mod de criptare (de exemplu, CBC), care va permite criptarea mesajului cu o lungime mai mare decât lungimea blocului. În ceea ce privește cheia aleatorie în sine, aceasta trebuie criptată cu cheia publică a destinatarului mesajului și tocmai în această etapă se aplică un criptosistem cu cheie publică (RSA sau Diffie-Hellman Algorithm). Deoarece cheia aleatorie este scurtă, criptarea necesită puțin timp. Criptarea unui set de mesaje folosind un algoritm asimetric este o sarcină mai complexă din punct de vedere computațional, deci este de preferat să folosiți criptarea simetrică. Apoi trimiteți mesajul criptat algoritm simetric, precum și cheia corespunzătoare în formă criptată. Destinatarul decriptează mai întâi cheia folosind cheia sa privată, apoi folosește cheia rezultată pentru a primi întregul mesaj.

O semnătură digitală oferă:

* Identificarea sursei documentului. În funcție de detaliile definiției documentului, pot fi semnate câmpuri precum „autor”, „modificări efectuate”, „ștampilă de timp”, etc.

* Protecție împotriva modificărilor documentelor. Orice modificare accidentală sau intenționată a documentului (sau semnăturii) va schimba cifrul, prin urmare, semnătura va deveni invalidă.

Sunt posibile următoarele amenințări de semnătură digitală:

*Un atacator poate încerca să falsească o semnătură pentru un document la alegerea sa.

*Un atacator poate încerca să potrivească un document cu o anumită semnătură, astfel încât semnătura să se potrivească.

Atunci când utilizați o funcție de criptare puternică, este dificil din punct de vedere computațional să creați un document contrafăcut cu același cifru ca și cel autentic. Cu toate acestea, aceste amenințări pot fi realizate din cauza slăbiciunilor anumitor algoritmi de stocare în cache, semnături sau erori în implementările lor. Cu toate acestea, sunt posibile și următoarele amenințări la adresa sistemelor de semnătură digitală:

*Un atacator care fură o cheie privată poate semna orice document în numele proprietarului cheii.

*Un atacator poate păcăli proprietarul să semneze un document, de exemplu folosind un protocol de semnătură oarbă.

*Un atacator poate înlocui cheia publică a proprietarului cu a sa, uzurpandu-i identitatea.

  • Serghei Savenkov

    un fel de recenzie „scurtă”... de parcă s-ar grăbi undeva