Criptare, degajare, sărare – care este diferența?

Criptare, degajare, sărare - care este diferența

Criptarea, spălarea și sărarea sunt toate tehnici înrudite, dar fiecare dintre aceste procese are proprietăți care le împrumută în scopuri diferite.

Pe scurt, criptarea implică codificarea datelor, astfel încât acestea să poată fi accesate numai de cei care au cheia. Acest lucru îl protejează împotriva părților neautorizate.

Hățirea criptografică presupune calcule care nu pot fi inversate. Aceste funcții au unele proprietăți speciale care le fac utile pentru semnături digitale și alte forme de autentificare.

Saltarea implică adăugarea de date aleatorii înainte de a fi trecută printr-o funcție de hash criptografic. Este folosit mai ales pentru a păstra parolele în siguranță în timpul stocării, dar poate fi utilizat și cu alte tipuri de date.

Ce este criptarea?

Să-l puneți pur și simplu, criptarea este procesul de utilizare a unui cod pentru a opri alte părți să acceseze informații. Când datele au fost criptate, pot accesa doar cei care au cheia. Atâta timp cât se folosește un sistem suficient de complicat și este utilizat corect, atunci atacatorii sunt împiedicați să vadă datele.

Datele sunt criptate cu algoritmi de criptare, care sunt cunoscuți și ca cifre. Una dintre cele mai importante distincții între criptare și hashing (la care vom ajunge mai târziu) este că criptarea este concepută pentru a merge pe ambele sensuri. Acest lucru înseamnă că, odată ce ceva a fost criptat cu o cheie, acesta poate fi, de asemenea, decriptat.

Acest lucru face ca criptarea să fie utilă într-o serie de situații, cum ar fi stocarea sau transferul informațiilor în siguranță. După ce datele au fost criptate în mod corespunzător, acestea sunt considerate sigure și pot fi accesate numai de către cei care au cheia. Cel mai cunoscut tip este criptarea cu cheie simetrică, care implică utilizarea aceleiași chei atât în ​​procesele de criptare cât și de decriptare..

Criptarea cu chei publice este puțin mai complicată, deoarece o cheie disponibilă publică este utilizată pentru criptarea datelor, în timp ce cheia sa potrivită este folosită pentru a decripta. Această caracteristică permite persoanelor care nu s-au cunoscut niciodată să comunice în siguranță. Criptarea cu chei publice este, de asemenea, o parte importantă a semnăturilor digitale, care sunt utilizate pentru a valida autenticitatea și integritatea datelor și a mesajelor.

Vezi si: Tipuri de criptare comune explicate

Algoritmi de criptare comuni

  • Criptare Cezar - Acesta este un cod simplu care implică schimbarea fiecărei litere a unui număr fix de locuri. Dacă un cifru Cezar are o schimbare de trei, fiecare „a” va deveni o „d”, fiecare „b” va deveni o „e”, fiecare „c” va deveni „f” și așa mai departe. Se numește Julius Caesar, care a fost prima persoană înregistrată care a folosit schema.
  • AES - Standardul avansat de criptare este un algoritm complex de chei simetrice care asigură o parte semnificativă a comunicațiilor noastre moderne. Aceasta implică o serie de pași sofisticați și este adesea utilizată pentru criptarea datelor în TLS, aplicații de mesagerie, în repaus și în multe alte situații. Aici vom face o scufundare mai profundă la criptarea AES.
  • 3DES - Triple DES se bazează pe algoritmul DES. Când creșterea puterii computerului a făcut ca DES să fie nesigură, 3DES a fost dezvoltat ca un algoritm consolidat. În 3DES, datele sunt rulate prin algoritmul DES de trei ori în loc de o singură dată, ceea ce face mai dificilă fisurarea. 3DES poate fi utilizat pentru multe dintre aceleași lucruri ca AES, dar numai anumite implementări sunt considerate sigure.
  • RSA - Criptarea Rivest-Shamir-Adleman a fost prima formă de criptografie cu cheie publică pe scară largă. Permite entităților să comunice în siguranță, chiar dacă nu s-au întâlnit sau nu au avut șansa de a schimba cheile. Poate fi utilizat într-o serie de protocoale de securitate diferite, cum ar fi PGP și TLS. Avem aici un ghid aprofundat pentru criptarea RSA.
  • ECDSA - Algoritmul semnăturii digitale cu curbă eliptică este o variantă a DSA care folosește criptografia curburilor eliptice. Ca algoritm cu cheie publică, acesta poate fi aplicat în situații similare cu RSA, deși este implementat mai puțin din cauza unor probleme de securitate.

Criptarea în acțiune

Pentru a vă face o idee despre modul în care funcționează criptarea în practică, vom folosi ca exemplu criptarea Cezar. Dacă am fi dorit să criptăm un mesaj din "Hai sa mancam”Cu o schimbare de trei,„L”Ar deveni un„O”,„e”Ar deveni un„h" si asa mai departe. Acest lucru ne oferă un mesaj criptat de:

Ohwd hdw

Pentru a decripta mesajul, destinatarul ar trebui să știe că algoritmul de criptare a implicat o schimbare de trei, apoi arunca înapoi fiecare literă prin trei locuri. Dacă am dori, am putea varia codul schimbând fiecare literă cu un număr diferit. Am putea folosi chiar și un algoritm mult mai sofisticat.

Un exemplu este AES. Dacă utilizăm un calculator online AES pe 128 de biți pentru a cripta „Hai sa mancam”Cu o cheie a„1234”, Ne oferă:

FeiUVFnIpb9d0cbXP / Ybrw ==

Acest text de text poate fi decriptat doar cu tasta „1234“. Dacă ar fi să folosim o cheie mai complexă și să o păstrăm în mod privat, atunci am putea considera datele securizate de atacatori.

Ce este hashing?

Funcțiile hash criptografice sunt un tip special de calcul unidirecțional. Ei iau un șir de date de orice dimensiune și dau întotdeauna o ieșire de o lungime predeterminată. Această ieșire se numește hașiș, valoarea hash sau digera mesaj. Deoarece aceste funcții nu folosesc tastele, rezultatul pentru o intrare dată este întotdeauna același.

Nu contează dacă intrarea dvs. este integrală Razboi si pace sau pur și simplu două litere, rezultatul unei funcții hash va fi întotdeauna aceeași lungime. Funcțiile Hash au mai multe proprietăți diferite care le fac utile:

  • Sunt funcții unidirecționale - Aceasta înseamnă că nu există nici o modalitate practică de a înțelege care a fost intrarea inițială dintr-o valoare de hash dată.
  • Este puțin probabil ca două intrări să aibă aceeași valoare de hash - Deși este posibil ca două inputuri diferite să obțină aceeași valoare de hash, șansele ca acest lucru să se întâmple sunt atât de mici încât să nu ne facem griji cu adevărat. În scopuri practice, valorile hash pot fi considerate unice.
  • Aceeași intrare oferă întotdeauna același rezultat - De fiecare dată când introduceți aceleași informații într-o funcție hash dată, aceasta va oferi întotdeauna aceeași ieșire.
  • Chiar și cea mai mică schimbare dă un rezultat complet diferit - Dacă chiar și un singur caracter este modificat, valoarea hash va fi mult diferită.

Pentru ce sunt utilizate hashurile?

Funcțiile Hash pot avea unele proprietăți interesante, dar ce putem face cu ele? A fi capabil să scuipe o ieșire unică, de dimensiuni fixe, pentru o intrare de orice lungime, poate părea nimic altceva decât un truc obscur al partidului, dar funcțiile de hash au de fapt o serie de utilizări.

Ele sunt o componentă de bază a semnături digitale, care reprezintă un aspect important al verificării autenticității și integrității pe internet. Coduri de autentificare a mesajelor Hash (HMAC) folosesc, de asemenea, funcții hash pentru a obține rezultate similare.

Funcțiile hash criptografice pot fi utilizate și ca funcții hash normale. În aceste scenarii, ele pot acționa ca sume de verificare pentru a verifica integritatea datelor, ca algoritmi de amprentare care elimină datele duplicate sau pentru a crea tabele de hash pentru a indexa datele.

Funcții comune de hash criptografic

  • MD5 - Aceasta este o funcție hash care a fost publicată pentru prima dată în 1991 de Ron Rivest. Acum se consideră nesigur și nu trebuie utilizat în scopuri criptografice. În ciuda acestui fapt, acesta poate fi utilizat în continuare pentru a verifica integritatea datelor.
  • SHA-1 - Algoritmul Secure Hash 1 a fost folosit din 1995, dar nu a fost considerat sigur din 2005, când au avut loc o serie de atacuri de coliziune reușite. Acum este recomandat să implementați SHA-2 sau SHA-3.
  • SHA-2 - Aceasta este o familie de funcții hash care acționează ca succesori ai SHA-1. Aceste funcții conțin numeroase îmbunătățiri, ceea ce le face sigure într-o mare varietate de aplicații. În ciuda acestui fapt, SHA-256 și SHA-512 sunt vulnerabile atacurilor de prelungire a lungimii, astfel încât există anumite situații în care este mai bine să implementați SHA-3.
  • SHA-3 - SHA-3 este cel mai nou membru al familiei Secure Hash Algorithm, dar este construit diferit de predecesorii săi. În această etapă, încă nu a înlocuit SHA-2, ci oferă pur și simplu criptografilor o altă opțiune care poate oferi o securitate îmbunătățită în anumite situații.
  • RIPEMD - RIPEMD este o altă familie de funcții care a fost dezvoltată de comunitatea academică. Se bazează pe multe dintre ideile din MD4 (predecesorul MD5) și nu este restricționat de niciun fel de brevete. RIPEMD-160 este încă considerat relativ sigur, dar nu a cunoscut o adoptare prea răspândită.
  • sorb - Whirlpool este o funcție de hash din familia de cifre bloc bloc. Se bazează pe o modificare a AES și nu este supusă niciunei brevete. Este considerat sigur, dar ceva mai lent decât unele dintre alternativele sale, ceea ce a dus la adoptarea limitată.

Funcțiile de zgomot în acțiune

După ce înțelegeți care sunt funcțiile de hașaj, este timpul să le puneți în practică. Dacă punem același text din „Hai sa mancam”Într-un calculator online SHA-256, ne oferă:

5c79ab8b36c4c0f8566cee2c8e47135f2536d4f715a22c99fa099a04edbbb6f2

Dacă schimbăm chiar și un singur caracter printr-o singură poziție, acesta schimbă drastic întregul hash. O dactilografie de genul „Met a mâncat”Dă un rezultat complet diferit:

4be9316a71efc7c152f4856261efb3836d09f611726783bd1fef085bc81b1342

Spre deosebire de criptare, nu putem pune această valoare hash prin funcția inversă pentru a obține din nou introducerea noastră. Deși aceste funcții hash nu pot fi utilizate în același mod ca criptarea, proprietățile lor le fac o parte valoroasă a semnăturilor digitale și a multor alte aplicații.

Funcții Hash și parole

Funcțiile Hash au o altă utilizare comună despre care nu am discutat încă. Ele sunt, de asemenea, o componentă cheie a păstrarea parolelor noastre în siguranță în timpul stocării.

Probabil aveți zeci de conturi online cu parole. Pentru fiecare din aceste conturi, parola dvs. trebuie să fie stocată undeva. Cum ar putea fi verificată autentificarea dvs. dacă site-ul web nu avea propria sa copie a parolei?

Companii precum Facebook sau Google stochează miliarde de parole de utilizator. Dacă aceste companii păstrau parolele ca text complet, atunci orice atacator care și-ar putea merge în baza de date cu parole ar putea accesa fiecare cont pe care îl găsesc..

Acesta ar fi un dezastru de securitate grav, atât pentru companie cât și pentru utilizatorii acesteia. Dacă fiecare parolă ar fi fost expusă atacatorilor, atunci toate conturile și datele utilizatorilor lor ar fi în pericol.

Cel mai bun mod de a preveni acest lucru se întâmplă pentru a nu stoca parolele în sine, dar valorile hash pentru parolele în schimb. Așa cum am discutat în secțiunea precedentă, funcțiile hash criptografice funcționează într-o direcție, producând o ieșire de dimensiuni fixe care nu este posibil să fie inversată.

Dacă o organizație stochează hash-ul unei parole în loc de parola în sine, poate verifica dacă cele două hașe se potrivesc atunci când un utilizator se conectează. Utilizatorii introduc parolele lor, care sunt apoi hașate. Acest hash este apoi comparat cu hash-ul de parolă stocat în baza de date. Dacă cele două hașe se potrivesc, atunci parola corectă a fost introdusă și utilizatorului i se oferă acces.

Această configurare înseamnă că parola nu trebuie niciodată stocată. Dacă un atacator își croiește drum în baza de date, atunci tot ce vor găsi sunt hașe de parolă, mai degrabă decât parolele.

Cu toate că parolele care conțin pentru stocare nu împiedică atacatorii să folosească hașa pentru a-și da seama de parole, aceasta face ca munca lor să devină semnificativ mai dificilă și consumatoare de timp. Acest lucru aduce subiectul nostru final, sărarea.

Ce este sărat?

Sărarea este în esență adăugarea de date aleatorii înainte de a fi trecută printr-o funcție hash, și sunt utilizate cel mai frecvent cu parolele.

Cel mai bun mod de a explica utilizarea sărurilor este să discutăm de ce avem nevoie în primul rând de ele. Poate v-ați gândit că stocarea hashes-urilor de parole ar fi rezolvat toate problemele noastre, dar, din păcate, lucrurile sunt puțin mai complexe decât asta.

Parole slabe

Mulți oameni au parole cu adevărat proaste, poate și tu. Problema este că oamenii tind să gândească în tipare previzibile și să aleagă parole ușor de reținut. Aceste parole sunt vulnerabile la atacurile de dicționar, care parcurg mii sau milioane dintre cele mai comune combinații de parole în fiecare secundă, în încercarea de a găsi parola corectă pentru un cont.

Dacă în loc de stocare parolă sunt stocate, lucrurile diferă puțin. Atunci când un atacator întâlnește o bază de date cu hashes-uri de parolă, poate utiliza tabele de hash sau mese curcubeu să caute hașe potrivite pe care le pot utiliza pentru a afla parolele.

Un tabel hash este o listă pre-calculată de hash pentru parolele comune care este stocată într-o bază de date. Acestea necesită mai multă muncă înainte de timp, dar odată ce tabelul a fost finalizat, este mult mai rapid să căutați hașii din tabel decât să calculați hașa pentru fiecare parolă posibilă. Un alt avantaj este că aceste tabele pot fi utilizate în mod repetat.

Mesele curcubeu sunt similare cu cele cu hash, cu excepția faptului că ocupă mai puțin spațiu cu costul mai multor puteri de calcul.

Ambele metode de atac devin mult mai practice dacă se folosesc parole slabe. Dacă un utilizator are o parolă comună, atunci este probabil ca hașa pentru parolă să se afle în tabelul hash sau în curcubeu. Dacă acesta este cazul, atunci doar un atacator are acces la parola utilizatorului.

Utilizatorii pot ajuta la eliminarea acestor atacuri alegând parole mai lungi și mai complexe, care sunt mult mai puțin susceptibile să fie stocate în tabele. În practică, acest lucru nu se întâmplă nicăieri aproape cât ar trebui, deoarece utilizatorii tind să aleagă parole ușor de reținut. Ca o regulă liberă, lucrurile ușor de reținut sunt adesea ușor de găsit pentru atacatori.

Sărurile oferă o altă modalitate de a preveni această problemă. Adăugând un șir de date aleatoriu la o parolă înainte de a fi spălată, în esență o face mai complexă, ceea ce împiedică șansele ca aceste atacuri să reușească..

Cum funcționează sărarea în practică

Ca exemplu, să spunem că aveți un cont de e-mail și parola dvs. este „1234“. Când utilizăm un calculator online SHA-256, obținem următoarele ca valoare de hașă:

03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4

Acest hash este ceea ce ar fi stocat în baza de date pentru contul dvs. Când introduceți parola „1234”, Este hashed și apoi valoarea este comparată cu valoarea stocată. Deoarece cele două valori sunt aceleași, vi se va acorda acces.

Dacă un atacator intră în baza de date, va avea acces la această valoare, precum și la toate celelalte hashuri de parolă care existau. Atacatorul ar lua apoi această valoare de hașă și ar privi-o în masa de hașa sau în curcubeul lor precomputat. De cand „1234”Este una dintre cele mai comune parole, aceștia ar găsi rapid hash-ul potrivit.

Tabelul cu hash le-ar spune că:

03ac674216f3e15c761ee1a5e255f067953623c8b388b4459e13f978d7c846f4

Corespunde la:

1234

Atacatorul va ști atunci că parola dvs. este „1234“. Atunci pot utiliza această parolă pentru a vă autentifica în contul dvs..

După cum puteți vedea, aceasta nu a fost o muncă multă pentru atacator. Pentru a face lucrurile mai dificile, adăugăm o sare de date aleatorii la parola înainte de a fi spălate. Sărarea ajută la reducerea semnificativă a șanselor de a avea mesele de hași și de curcubeu de a reveni la un rezultat pozitiv.

Să luăm o sare de 16 caractere de date aleatorii:

H82BV63KG9SBD93B

O adăugăm la simpla noastră parolă de „1234" ca astfel:

1234H82BV63KG9SBD93B

Doar acum, după ce am sărat-o, am trecut prin aceeași funcție de hash pe care am făcut-o înainte, care se întoarce:

91147f7666dc80ab5902bde8b426aecdb1cbebf8603a58d79182b750c10f1303

Sigur, această valoare a hașei nu este mai lungă sau mai complexă decât cea anterioară, dar nu este ideea. Deși ambele au aceeași lungime, „1234H82BV63KG9SBD93B”Este o parolă mult mai puțin obișnuită, așa că este mult mai puțin probabil ca hașa sa să fie stocată în tabelul hash.

Cu cât este mai puțin probabil ca o parolă să fie stocată într-o tabelă de hash, cu atât mai puțin probabil ca un atac să aibă succes. În felul acesta, adăugarea de săruri ajută la creșterea siguranței hashurilor de parole.

Hacking baze de date întregi

Când un atacator are acces la o bază de date întreagă de hașe de parolă, nu trebuie să testeze fiecare haș pentru fiecare intrare. În schimb, pot căuta în întreaga bază de date meciurile care coincid cu tabelul lor de hash. Dacă baza de date este suficient de mare, un atacator poate compromite un număr imens de conturi, chiar dacă au o rată de succes de cinci procente.

Dacă parolele li se oferă săruri unice înainte de spălare, atunci procesul face mult mai complex. Dacă sărurile sunt suficient de lungi, șansele de reușită devin mult mai mici, ceea ce ar necesita mesele de hash și curcubeele să fie prohibitiv de mari pentru a putea găsi hașe potrivite.

Un alt avantaj al sărurilor vine atunci când mai mulți utilizatori din aceeași bază de date au aceeași parolă sau dacă un singur utilizator are aceeași parolă pentru mai multe conturi. Dacă hașurile de parolă nu au fost sărate în prealabil, atunci atacatorii pot compara hașele și pot stabili că orice conturi cu aceeași valoare de hash partajează și aceeași parolă.

Acest lucru face mai ușor pentru hackeri să vizeze cele mai comune valori de hash care le vor oferi cele mai mari recompense. Dacă parolele sunt sărate în prealabil, atunci valorile hash vor fi diferite chiar și atunci când sunt utilizate aceleași parole.

Puncte slabe potențiale de sare

Sărarea își pierde eficacitatea dacă se face incorect. Cele mai frecvente două probleme apar atunci când sărurile sunt prea scurte sau dacă nu sunt unice pentru fiecare parolă. Sărurile mai scurte sunt încă vulnerabile la atacurile de masă curcubeu, deoarece acestea nu fac suficient de rară hașia rezultată.

Dacă sărurile sunt reutilizate pentru fiecare parolă hashed, iar sarea este descoperită, este mult mai simplu să-ți dai seama de fiecare parolă din baza de date. Folosirea aceleiași sare înseamnă, de asemenea, că oricine are aceeași parolă va avea același hash.

Algoritmi comuni de sărare

Nu este recomandat să folosiți funcții normale de salvare pentru stocarea parolelor. În schimb, o serie de funcții au fost proiectate cu caracteristici specifice care ajută la creșterea securității. Acestea includ Argon2, scrypt, bcrypt și PBKDF2.

Argon2

Argon2 a fost câștigătorul competiției de anulare a parolelor din 2015. Este încă relativ nouă în ceea ce privește algoritmii, dar a devenit repede una dintre cele mai de încredere funcții pentru parolele hashing.

În ciuda tinereții sale, până în prezent, și-a păstrat propriul număr într-o serie de lucrări de cercetare care l-au sondat pentru deficiențe. Argon2 este mai flexibil decât alți algoritmi de modificare a parolei și poate fi implementat în mai multe moduri diferite.

scrypt

Pronunțată „cripta es”, Acesta este al doilea cel mai tânăr algoritm de hashing de parolă care este în uz obișnuit. Proiectat în 2009, Scrypt folosește o cantitate mare, dar reglabilă de memorie în calculele sale. Natura sa reglabilă înseamnă că poate fi în continuare rezistentă la atacuri chiar dacă puterea de calcul crește în timp.

bcrypt

bcrypt a fost dezvoltat în 1999 și se bazează pe cifra Blowfish. A fost unul dintre cei mai utilizați în algoritmii utilizați în hashing-ul de mai mulți ani, dar acum este mai vulnerabil la matricile de poartă programabile pe câmp (FPGA). Acesta este motivul pentru care Argon2 este deseori preferat în implementări mai noi.

PKFD2

Această funcție de derivare a cheilor a fost dezvoltată pentru a înlocui PBKDF1, care a avut o lungime mai scurtă și mai puțin sigură a cheii. Liniile directoare NIST din 2017 recomandă încă PKFD2 pentru parolele care conțin date, dar Argon2 abordează unele dintre problemele sale de securitate și poate fi o opțiune mai bună în multe situații.

Criptare, spălare și sărare: o recapitulare

Acum că am trecut prin detaliile de criptare, reținere și sărare, este timpul să trecem repede peste diferențele cheie, astfel încât acestea să se afle..

Criptarea este procesul de codificare a informațiilor pentru protejarea acesteia. Când datele sunt criptate, acestea pot fi decriptate și accesate doar de către cei care au cheia corectă. Algoritmii de criptare sunt reversibili, ceea ce ne oferă o modalitate de a ne ține datele departe de atacatori, dar totuși să le putem accesa atunci când avem nevoie. Este utilizat pe scară largă pentru a ne menține în siguranță online, îndeplinind un rol crucial în multe dintre protocoalele noastre de securitate care ne păstrează datele în siguranță atunci când sunt stocate și în tranzit.

În contrast, hashing este un proces unidirecțional. Când avem ceva, nu dorim să-l putem readuce la forma sa inițială. Funcțiile hash criptografice au o serie de proprietăți unice care ne permite să dovedim autenticitatea și integritatea datelor, cum ar fi prin semnături digitale și coduri de autentificare a mesajelor.

Tipuri specifice de funcții hash criptografice sunt, de asemenea, utilizate pentru a stoca parolele noastre. Stocarea hash-ului unei parole în loc de parola în sine oferă un nivel suplimentar de securitate. Înseamnă că dacă un atacator câștigă intrarea într-o bază de date, nu poate accesa imediat parolele.

În timp ce hashing-ul parolei face viața mai dificilă pentru hackeri, acesta poate fi totuși evitat. Aici intervine sărarea. Saltarea adaugă date suplimentare la parolele înainte de a fi spălate, ceea ce face ca atacurile să consume mai mult timp și să reziste mai mult la resurse. Dacă sărurile și parolele sunt utilizate în mod corect, acestea fac ca tabelele de hash și tabelele curcubeu să nu fie practic mijloace de atac.

Împreună, criptarea, spălarea și sărarea sunt toate aspectele importante ale păstrării noastre în siguranță online. Dacă aceste procese nu ar fi fost implementate, atacatorii ar putea beneficia gratuit de toate conturile și datele dvs., lăsându-vă fără siguranță pe internet.

Tehnologie-1 de tec_estromberg sub CC0

Brayan Jackson
Brayan Jackson Administrator
Sorry! The Author has not filled his profile.
follow me

About the author

Leave a Reply

Your email address will not be published. Required fields are marked *

42 − 33 =

Adblock
detector