- Saltul este un șir aleatoriu care este adăugat la parolă înainte de hash pentru a obține hash-uri unice per utilizator.
- Linux Stochează hash, salt și algoritm în /etc/shadow, consolidând securitatea împotriva atacurilor de dicționar și a tabelelor curcubeu.
- Bunele practici necesită săruri lungi, aleatorii și unice, împreună cu algoritmi hash robuști și baze de date bine protejat.
- Saltarea parolelor ar trebui integrată în politici de securitate mai ample, care includ parole puternice, MFA și manageri de parole.

Dacă lucrați cu sisteme GNU/Linux sau pur și simplu sunteți preocupat de securitatea conturilor dvs., probabil ați auzit de sare în hash-ul paroleiEste unul dintre acele concepte care sunt menționate mult, dar adesea înțelese doar pe jumătate: pare tehnic, dar în realitate face diferența dintre un sistem ușor de spart și unul mult mai rezistent la atacuri.
Pe scurt, sarea este o element cheie pentru a face hash-urile parolelor imprevizibileFuncționează prin adăugarea de date aleatorii înainte de aplicarea algoritmului hash, astfel încât, chiar dacă doi utilizatori au aceeași parolă, rezultatul stocat în baza de date va fi diferit. Pornind de aici, implementarea specifică în Linux, relația sa cu /etc/shadow, instrumente precum mkpasswd și cele mai bune practici moderne de securitate reprezintă o lume în sine, pe care o vom explora în detaliu.
Ce este mai exact sarea dintr-un hash de parolă?

În criptografie, o sare (sarea) este o șir aleatoriu de caractere care este adăugat la parola unui utilizator înainte de aplicarea unei funcții hash. Scopul este ca hash-ul rezultat să fie unic chiar dacă parola în text simplu este aceeași pentru mai mulți utilizatori.
Când un utilizator își creează sau își modifică parola, sistemul generează o sare aleatorieO combină cu parola (înainte, după sau într-un format specific, în funcție de schemă) și aplică un algoritm hash acelei combinații, cum ar fi SHA-256 o SHA-512Parola nu este stocată în baza de date, ci mai degrabă hash al (parolei + sare)...iar în majoritatea schemelor, sarea în sine este stocată împreună cu hash-ul.
Această tehnică redă multe dintre tehnici de atac bazate pe hash-uri precalculate, la fel ca tabelele curcubeu, și complică foarte mult atacurile de tip dicționar și atacurile de tip forță brută la scară largă. Un atacator nu mai poate exploata faptul că mai mulți utilizatori partajează o parolă, deoarece fiecare va avea un hash diferit.
Este important să înțelegem că sarea nu este un secret în sine: Nu este o parolă sau o cheie privatăFuncția sa este de a introduce caracter aleatoriu și unic în procesul de hashing. Securitatea depinde în continuare de utilizarea parole puternice y algoritmi hash adecvați, de preferință conceput special pentru parole (cum ar fi bcrypt, scrypt, Argon2), deși multe sisteme Linux clasice folosesc variante de SHA-256 sau SHA-512.
Cum funcționează sărarea parolelor pas cu pas

Procesul de sărare poate fi rezumat într-o serie de etape destul de simple, dar cu un impact uriaș asupra securității:
În primul rând, când un utilizator se înregistrează sau își schimbă parola, sistemul generează o sare unică și aleatorie pentru acea acreditare. Această salt are de obicei o lungime suficientă (de exemplu, 16 octeți sau mai mult) și este obținută dintr-un generator de numere aleatorii securizat criptografic.
Apoi, parola aleasă de utilizator este combinată cu acea sare pentru a forma un lanț intermediarAceastă combinație poate fi la fel de simplă ca concatenarea lui salt + password sau poate avea un format mai complex definit de schema hash. Important este ca fiecare utilizator să ajungă la o combinație diferită.
Apoi, o algoritm hash unidirecționalRezultatul este un șir aparent aleatoriu, hash-ul, de lungime fixă, care va fi stocat în baza de date împreună cu sarea. În sistemele moderne, se caută algoritmi care produc ieșiri lungi și complexeAcest lucru mărește spațiul de căutare și face ca atacurile de forță brută să fie mai scumpe.
În final, când utilizatorul se conectează, sistemul recuperează din nou parola introdusă. sare asociată Din baza de date, repetă exact același proces de combinare și hashing și compară rezultatul cu hash-ul stocat. Dacă se potrivesc, știe că parola este corectă fără a fi nevoie să cunoască textul în clar.
Acest mecanism asigură că, chiar dacă baza de date este scursă, atacatorul va vedea doar hash-uri individuale cu propriile săruriÎn loc de un set de hash-uri comparabile, oprirea unui atac nu este magică, dar devine semnificativ mai costisitoare din punct de vedere computațional.
Avantajele utilizării saltului în hash-urile parolelor

Principalul motiv pentru utilizarea sărării este că consolidează securitatea parolelor stocate împotriva unei game largi de atacuri. Dar merită să detaliem beneficiile specifice.
În primul rând, sărarea oferă rezistență la atacurile de dicționarFără o parolă salt (valoare hash), un atacator poate pregăti o listă imensă de parole comune și hash-urile aferente și pur și simplu le poate compara cu baza de date furată. Cu o parolă salt unică per utilizator, acele hash-uri precalculate devin inutile, deoarece fiecare combinație parolă + salt generează o valoare diferită.
În al doilea rând, utilizarea sării diminuează eficacitatea mese curcubeuAcestea sunt pur și simplu baze de date precalculate cu hash-uri pentru parole populare, pentru a accelera recuperarea. Din nou, deoarece rezultatul depinde de saltul specific, aceste tabele concepute pentru hash-uri nesărate devin inutile sau, cel puțin, extrem de ineficiente.
Un alt avantaj clar este acela că îmbunătățește confidențialitate în caz de scurgereChiar dacă un intrus obține acces la tabela de utilizatori cu hash-ul și saltul acesteia, nu va putea identifica rapid cine are aceeași parolă ca ceilalți sau nu va putea lansa cu ușurință atacuri în masă. Fiecare cont necesită atenție individuală, ceea ce este de obicei impracticabil la scară largă.
În plus, sărarea adaugă complexitate atacuri de forță brutăÎn loc să poată testa o parolă candidată împotriva tuturor hash-urilor simultan, atacatorul este forțat să ia în considerare saltul fiecărui utilizator, înmulțind volumul total de lucru. Dacă acest lucru este combinat cu un algoritm de hashing lent și parametrizabil (cum ar fi bcrypt sau Argon2), costul atacului crește și mai mult.
În cele din urmă, sărarea este o tehnică care se adaptează bine evoluției tehnologice. Chiar și pe măsură ce echipamentele informatice se îmbunătățesc și apar noi atacuri, combinația de hașiș robust și sare unică Menține un nivel de dificultate ridicat și scalabil: poți mări lungimea sării, poți consolida algoritmul, poți crește costul computațional etc.
Cum implementează Linux saltarea parolelor (/etc/shadow)
În sistemele Linux și alte variante *NIX, parolele utilizatorilor nu sunt stocate în /etc/passwd, ci în fișierul / etc / shadowAcest fișier, accesibil doar superutilizatorului, stochează hash-urile parolei împreună cu informații suplimentare și este locul unde se observă clar utilizarea salt și a algoritmului hash.
Liniile din /etc/shadow au o structură similară cu:
utilizator:$id$sal$hash:câmpuri_additionale…
Simbolul $ Separați diferitele părți. Prima parte după numele de utilizator indică tip de algoritm folosit. De exemplu, 1 USD reprezintă de obicei MD5, 5 USD SHA-256 și 6 USD SHA-512, care este cel mai comun algoritm în distribuțiile moderne, deoarece oferă o securitate mai mare decât schemele mai vechi bazate pe DES sau MD5.
După ce apare identificatorul algoritmului sareși apoi hash rezultatToate acestea se află în același câmp. Când o parolă este validată, sistemul citește identificatorul respectiv, saltul, aplică algoritmul corespunzător parolei introduse și compară hash-ul calculat cu cel stocat.
Dacă doriți să verificați rapid ce utilizatori au parole criptate și ce algoritm este utilizat, puteți utiliza o comandă precum grep '\$' /etc/shadowÎn acest context, semnul dolar ($) este folosit pentru a localiza liniile cu hash-uri în format modern. Simbolul trebuie să fie marcat cu o bară oblică inversată, deoarece în expresiile regulate semnifică „sfârșit de linie”.
Conturile fără parolă sau conturile blocate afișează de obicei o valoare ca aceasta în câmpul respectiv. ! o * în loc de un hash cu dolari, indicând faptul că nu poate fi autentificat folosind o parolă standard. Această structură clarifică un lucru: Linux integrează salting în formatul său de depozitare a parolelor nativ.
Diferența dintre hashing-ul parolei și salting
Este important să se facă o distincție clară între două concepte care uneori sunt confundate: hashing y sărareHashing-ul parolei este procesul prin care o parolă este transformată într-o valoare nerecunoscută folosind un algoritm unidirecțional. Serverul nu trebuie niciodată să cunoască parola originală, ci doar să verifice dacă utilizatorul cunoaște parola corectă, deoarece produce același hash.
Problema este că, dacă două parole sunt identice, Hașișul nesărat va fi, de asemenea, identicAcest lucru permite unui atacator să compare și să grupeze utilizatorii după parolă sau să utilizeze tabele precalculate. În plus, dacă algoritmul hash este rapid și conceput pentru integritatea datelor (cum ar fi SHA-256 simplu), acesta devine mai vulnerabil la atacuri masive de tip brute-force.
Sărarea intervine tocmai pentru a rezolva această slăbiciune: este vorba despre adăugați date aleatorii la parolă înainte de a o hasha. Rezultatul este că, chiar dacă doi utilizatori aleg „casa” ca parolă, hash-urile din baza de date vor fi complet diferite, deoarece unul va avea, de exemplu, „casa+7Ko#”, iar celălalt „casa8p?M” ca șir de caractere pre-hash.
Prin urmare, hashing-ul și salting-ul nu concurează, ci se completează reciproc. Hashing-ul oferă proprietatea de unidirecționalitate și ușurința verificării; sarea oferă unicitate și rezistență împotriva atacurilor masiveO implementare securizată de stocare a parolelor combină ambele tehnici, în mod ideal utilizând un algoritm conceput în acest scop, cu un cost configurabil.
Utilizarea comenzii sare în Linux cu mkpasswd
În mediile GNU/Linux și alte sisteme UnixO modalitate foarte practică de a experimenta cu sărarea este instrumentul mkpasswdAceastă comandă este utilizată pentru a genera parole criptate în siguranță și este integrat în mod obișnuit în procesele de creare a utilizatorilor, scripturile de administrare etc.
Sintaxa de bază a comenzii mkpasswd vă permite să specificați parola care va fi criptată și o serie de opțiuni, cum ar fi tipul de algoritm (de exemplu, des, md5, sha-256, sha-512) folosind opțiunea -mÎn sistemele moderne, lucrul sensibil de făcut este să optați pentru SHA-512 cel puțin, sau prin scheme chiar mai robuste dacă distribuția le acceptă.
Opțiunea deosebit de interesantă în contextul sărării este -S, ceea ce permite adăugați o sare la parolă înainte de a o cripta. Dacă nu este specificată manual, mkpasswd poate genera o sare aleatorie în fiecare execuțieastfel încât, chiar folosind aceeași parolă de conectare, hash-ul rezultat este diferit de fiecare dată.
Acest lucru poate fi ușor verificat: dacă criptați „password123” de mai multe ori cu mkpasswd, folosind SHA-512 și o valoare salt aleatorie, veți obține hash-uri complet diferite. Totuși, dacă transmiteți aceeași valoare salt folosind -S, hash-ul va fi întotdeauna identic, deoarece combinația parolă + salt nu se schimbă.
Datorită acestui instrument, este foarte ușor Pregătiți parolele criptate cu sare (salt) pentru a adăuga modificări la fișierele de configurare, a gestiona manual utilizatorii sau a testa comportamentul la salting fără a fi nevoie să programați nimic.
Scriitor pasionat despre lumea octeților și a tehnologiei în general. Îmi place să îmi împărtășesc cunoștințele prin scriere și asta voi face în acest blog, să vă arăt toate cele mai interesante lucruri despre gadgeturi, software, hardware, tendințe tehnologice și multe altele. Scopul meu este să vă ajut să navigați în lumea digitală într-un mod simplu și distractiv.