Šta je "sol" u hešu lozinke za Linux i zašto je to važno?

Posljednje ažuriranje: 04/12/2025
Autor: Isaac
  • Sol je nasumični niz znakova koji se dodaje lozinki prije heša kako bi se postigli jedinstveni heševi po korisniku.
  • Linux Pohranjuje hash, salt i algoritam u /etc/shadow, jačajući sigurnost od napada rječnikom i rainbow tabela.
  • Dobre prakse zahtijevaju duge, nasumične i jedinstvene soli, zajedno s robusnim algoritmima za heširanje i baze podataka dobro zaštićen/a.
  • Saliranje lozinki trebalo bi biti integrirano u šire sigurnosne politike koje uključuju jake lozinke, višefaktorsku autentifikaciju (MFA) i upravitelje lozinki.

sol u hešu lozinke u Linuxu

Ako radite sa GNU/Linux sistemima ili ste jednostavno zabrinuti za sigurnost svojih računa, vjerovatno ste čuli za sol u hešu lozinkeTo je jedan od onih koncepata koji se mnogo spominje, ali se često samo djelimično razumije: zvuči tehnički, ali u stvarnosti pravi razliku između sistema koji je lako probiti i onog koji je mnogo otporniji na napade.

Ukratko, sol je ključni element za nepredvidljivost heševa lozinkiFunkcioniše tako što dodaje nasumične podatke prije primjene hash algoritma, tako da, čak i ako dva korisnika imaju istu lozinku, rezultat pohranjen u bazi podataka će biti drugačiji. Odatle, specifična implementacija u Linuxu, njen odnos sa /etc/shadow, alati poput mkpasswd i moderne najbolje sigurnosne prakse su čitav svijet za sebe, koji ćemo detaljno istražiti.

Šta je tačno "sol" u hešu lozinke?

definicija soli u hashu lozinke

U kriptografiji, a sol (sol) je slučajni niz znakova koji se dodaje korisničkoj lozinci prije primjene hash funkcije. Cilj je da rezultirajući hash bude jedinstven čak i ako je lozinka u običnom tekstu ista za više korisnika.

Kada korisnik kreira ili promijeni lozinku, sistem generira slučajna solKombinuje ga sa lozinkom (prije, poslije ili u određenom formatu, ovisno o shemi) i primjenjuje algoritam za heširanje na tu kombinaciju, kao što je SHA-256 o SHA-512Lozinka se ne pohranjuje u bazi podataka, već heš od (lozinka + sol), a u većini shema i sama sol se pohranjuje zajedno s hashom.

Ova tehnika omogućava mnoge od tehnike napada zasnovane na unaprijed izračunatim hešovima, poput duginih tabela, i uveliko komplikuje napade rječnikom i napade grubom silom velikih razmjera. Napadač više ne može iskoristiti činjenicu da više korisnika dijeli lozinku, jer će svaki od njih imati drugačiji hash.

Važno je shvatiti da sol sama po sebi nije tajna: To nije lozinka niti privatni ključNjegova funkcija je uvođenje slučajnosti i jedinstvenosti u proces heširanja. Sigurnost i dalje zavisi od korištenja jake lozinke y odgovarajući algoritmi za heširanje, po mogućnosti posebno dizajniran za lozinke (kao što su bcrypt, scrypt, Argon2), iako mnogi klasični Linux sistemi koriste varijante SHA-256 ili SHA-512.

Kako funkcioniše saljenje lozinki korak po korak

Kako funkcioniše saljenje lozinki

Proces soljenja može se sažeti u niz prilično jednostavnih koraka, ali sa ogroman utjecaj na sigurnost:

  Kako otkriti zlonamjerne procese pomoću Process Explorera i VirusTotala

Prvo, kada se korisnik registruje ili promijeni lozinku, sistem generiše jedinstvena i slučajna sol za tu vjerodajnicu. Ta sol je obično dovoljne dužine (na primjer, 16 bajtova ili više) i dobija se iz kriptografski sigurnog generatora slučajnih brojeva.

Zatim se lozinka koju je korisnik odabrao kombinira s tom soli kako bi se formirao međulanacOva kombinacija može biti jednostavna kao spajanje salt + password, ili može imati složeniji format definiran hash shemom. Važno je da svaki korisnik na kraju dobije drugačiju kombinaciju.

Zatim, a jednosmjerni algoritam heširanjaRezultat je naizgled slučajan niz, hash, fiksne dužine, koji će biti pohranjen u bazi podataka zajedno sa soli. U modernim sistemima, traže se algoritmi koji proizvode dugi i složeni izlaziOvo povećava prostor pretrage i čini napade grubom silom skupljim.

Konačno, kada se korisnik prijavi, sistem ponovo preuzima unesenu lozinku. povezana sol Iz baze podataka ponavlja potpuno isti proces kombinovanja i hashiranja i upoređuje rezultat sa sačuvanim hashom. Ako se podudaraju, zna da je lozinka ispravna bez potrebe za poznavanjem otvorenog teksta.

Ovaj mehanizam osigurava da čak i ako baza podataka procuri, napadač će vidjeti samo pojedinačni hašeovi sa svojim vlastitim solimaUmjesto skupa uporedivih heševa, zaustavljanje napada nije magija, ali postaje znatno računski skuplje.

Prednosti korištenja soli u hešovima lozinki

Prednosti korištenja soli u lozinkama

Glavni razlog za upotrebu soljenja je taj što jača sigurnost pohranjenih lozinki protiv širokog spektra napada. Ali vrijedi detaljno navesti specifične prednosti.

Prvo, soljenje omogućava otpornost na napade rječnikomBez soli, napadač može pripremiti ogromnu listu uobičajenih lozinki i njihovih hashova, te ih jednostavno uporediti s ukradenom bazom podataka. S jedinstvenom soli po korisniku, ti unaprijed izračunati hashovi postaju beskorisni, jer svaka kombinacija lozinke i soli generira drugačiju vrijednost.

Drugo, upotreba soli smanjuje efikasnost duginih stolovaOvo su jednostavno unaprijed izračunate baze podataka hešova za popularne lozinke kako bi se ubrzao oporavak. Opet, budući da rezultat ovisi o specifičnoj soli (salt), ove tabele dizajnirane za neslane hešove postaju beskorisne ili, u najmanju ruku, vrlo neefikasne.

Još jedna očigledna prednost je što poboljšava privatnost u slučaju curenjaČak i ako uljez dobije pristup korisničkoj tabeli s njenim hashom i salt parametrima, neće moći brzo identificirati ko ima istu lozinku kao i drugi niti lako pokrenuti masovne napade. Svaki račun zahtijeva individualnu pažnju, što je obično nepraktično u velikim razmjerima.

  Upozorenje na novu WhatsApp prevaru: Bizum i video pozivi za krađu računa i novca

Nadalje, soljenje dodaje složenost napadi grubom silomUmjesto da može testirati kandidatsku lozinku u odnosu na sve hešove odjednom, napadač je prisiljen uzeti u obzir "salt" svakog korisnika, množeći ukupno opterećenje. Ako se ovo kombinuje sa sporim i parametriziranim algoritmom za heširanje (kao što su bcrypt ili Argon2), cijena napada se dodatno povećava.

Konačno, soljenje je tehnika koja se dobro prilagođava tehnološkoj evoluciji. Čak i kako se računarska oprema poboljšava i pojavljuju novi napadi, kombinacija robusnog hašiša i jedinstvene soli Održava visok i skalabilan nivo težine: možete povećati dužinu soli, ojačati algoritam, povećati računarske troškove itd.

Kako Linux implementira "saljenje" lozinki (/etc/shadow)

U Linux sistemima i drugim *NIX varijantama, korisničke lozinke se ne pohranjuju u /etc/passwd, već u datoteci / etc / shadowOva datoteka, dostupna samo superkorisniku, pohranjuje hešove lozinki zajedno s dodatnim informacijama i tu se jasno vidi upotreba soli i algoritma heširanja.

Redovi u /etc/shadow imaju strukturu sličnu ovoj:

korisnik:$id$sal$hash:dodatna_polja…

Simbol $ Odvojite različite dijelove. Prvi dio nakon korisničkog imena označava tip algoritma koristi se. Na primjer, 1 $ obično predstavlja MD5, 5 $ SHA-256 i 6 $ SHA-512, koji je najčešći algoritam u modernim distribucijama jer nudi veću sigurnost od starijih shema zasnovanih na DES-u ili MD5.

Nakon što se pojavi identifikator algoritma, splava zatim rezultirajući hashSve se ovo nalazi unutar istog polja. Kada se lozinka potvrdi, sistem čita taj identifikator, tzv. "salt", primjenjuje algoritam koji odgovara unesenoj lozinci i upoređuje izračunati hash sa sačuvanim.

Ako želite brzo provjeriti koji korisnici imaju šifrirane lozinke i koji se algoritam koristi, možete koristiti naredbu poput grep '\$' /etc/shadowU ovom kontekstu, znak dolara ($) se koristi za lociranje linija sa hashovima u modernom formatu. Simbol mora biti označen obrnutom kosom crtom jer u regularnim izrazima označava "kraj linije".

Računi bez lozinke ili zaključani računi obično prikazuju ovakvu vrijednost u tom polju. ! o * umjesto heša s dolarima, što ukazuje da se ne može autentificirati pomoću standardne lozinke. Ova struktura jasno pokazuje jednu stvar: Linux integriše soljenje u svoj format skladištenje lozinke izvorno.

Razlika između heširanja i saltinga lozinki

Važno je jasno razlikovati dva koncepta koja se ponekad miješaju: raspršivanje y soljenjeHeširanje lozinke je proces kojim se lozinka transformiše u neprepoznatljivu vrijednost korištenjem jednosmjernog algoritma. Server nikada ne mora znati originalnu lozinku, već samo da provjeri da li korisnik zna ispravnu lozinku jer generiše isto heširanje.

  Šta je WINUX: Linux sa slobodnom dušom i izgledom i osjećajem Windowsa

Problem je u tome što ako su dvije lozinke identične, Neslani hašiš će također biti identičanOvo omogućava napadaču da upoređuje i grupiše korisnike po lozinki ili koristi unaprijed izračunate tabele. Nadalje, ako je algoritam za heširanje brz i dizajniran za integritet podataka (kao što je jednostavan SHA-256), postaje ranjiviji na masovne napade grubom silom.

Soljenje dolazi upravo da riješi tu slabost: radi se o dodajte nasumične podatke lozinki prije heširanja. Rezultat je da čak i ako dva korisnika odaberu „casa“ kao lozinku, heševi u bazi podataka će biti potpuno različiti, jer će jedan imati, na primjer, „casa+7Ko#“, a drugi „casa8p?M“ kao pre-hash string.

Dakle, heširanje i soljenje se ne takmiče, već se međusobno dopunjuju. Heširanje pruža svojstvo jednosmjernosti i jednostavnost provjere; sol pruža jedinstvenost i otpornost na masovne napadeSigurna implementacija pohrane lozinki kombinira obje tehnike, idealno koristeći algoritam dizajniran za tu svrhu, s konfigurabilnim troškovima.

Korištenje soli u Linuxu sa mkpasswd-om

U GNU/Linux okruženjima i drugim sistemima UnixVrlo praktičan način za eksperimentiranje sa soljenjem je alat mkpasswdOva naredba se koristi za generiranje šifrirane lozinke sigurno i obično je integriran u procese kreiranja korisnika, administrativne skripte itd.

Osnovna sintaksa mkpasswd komande vam omogućava da odredite lozinku koja će se šifrirati i niz opcija kao što je tip algoritma (na primjer, des, md5, sha-256, sha-512) koristeći opciju -mU modernim sistemima, razumna stvar koju treba uraditi je odlučiti se za SHA-512 barem, ili čak robusnijim shemama ako ih distribucija podržava.

Posebno zanimljiva opcija u kontekstu soljenja je -S, što dozvoljava dodajte sol lozinki prije šifriranja. Ako se ne navede ručno, mkpasswd može generirati slučajna sol u svakom izvršavanjutako da čak i korištenjem iste lozinke za prijavu, rezultirajući hash je svaki put drugačiji.

Ovo se može lako provjeriti: ako šifrirate "password123" nekoliko puta pomoću mkpasswd-a, koristeći SHA-512 i slučajnu "salt" vrijednost, dobit ćete potpuno različite heš vrijednosti. Međutim, ako proslijedite istu "salt" vrijednost koristeći -S, heš vrijednost će uvijek biti identična, jer se kombinacija "password + salt" ne mijenja.

Zahvaljujući ovom alatu, to je veoma jednostavno Pripremite lozinke šifrirane sa soli dodavati u konfiguracijske datoteke, ručno upravljati korisnicima ili testirati ponašanje slanja bez potrebe za programiranjem bilo čega.

Šta je digitalna higijena?
Vezani članak:
Digitalna higijena: sigurnost, blagostanje i red u vašem online životu