- Salt je slučajni niz znakova koji se dodaje lozinki prije hash-a kako bi se postigli jedinstveni hash-ovi po korisniku.
- Linux Pohranjuje hash, salt i algoritam u /etc/shadow, jačajući sigurnost od napada rječnikom i rainbow tablica.
- Dobre prakse zahtijevaju duge, nasumične i jedinstvene soli, zajedno s robusnim algoritmima za hashiranje i baza podataka dobro zaštićen.
- Zaslađivanje lozinki trebalo bi biti integrirano u šire sigurnosne politike koje uključuju snažne lozinke, višefaktorsku autentifikaciju (MFA) i upravitelje lozinki.

Ako radite s GNU/Linux sustavima ili ste jednostavno zabrinuti za sigurnost svojih računa, vjerojatno ste čuli za sol u hashu lozinkeTo je jedan od onih koncepata koji se često spominje, ali se često samo napola razumije: zvuči tehnički, ali u stvarnosti čini razliku između sustava koji je lako probiti i onog koji je puno otporniji na napade.
Ukratko, sol je ključni element za nepredvidljivost hashova lozinkiRadi tako da dodaje nasumične podatke prije primjene algoritma hashiranja, tako da će, čak i ako dva korisnika imaju istu lozinku, rezultat pohranjen u bazi podataka biti drugačiji. Odatle, specifična implementacija u Linuxu, njezin odnos s /etc/shadow, alati poput mkpasswd i moderne najbolje sigurnosne prakse čine cijeli svijet za sebe, koji ćemo detaljno istražiti.
Što je točno sol 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, sustav generira slučajna solKombinira ga s lozinkom (prije, poslije ili u određenom formatu, ovisno o shemi) i na tu kombinaciju primjenjuje algoritam za hashiranje, kao što je SHA-256 o SHA-512Lozinka se ne pohranjuje u bazi podataka, već hash od (lozinka + sol), a u većini shema i sama sol se pohranjuje zajedno s hashom.
Ova tehnika čini mnoge od tehnike napada temeljene na unaprijed izračunatim hashovima, poput duginih tablica, i uvelike komplicira rječničke i brute-force napade velikih razmjera. Napadač više ne može iskoristiti činjenicu da više korisnika dijeli lozinku, jer će svaki imati drugačiji hash.
Važno je shvatiti da sol sama po sebi nije tajna: To nije lozinka niti privatni ključNjegova je funkcija uvesti slučajnost i jedinstvenost u proces hashiranja. Sigurnost i dalje ovisi o korištenju jake lozinke y prikladni algoritmi za hashiranje, po mogućnosti posebno dizajniran za lozinke (kao što su bcrypt, scrypt, Argon2), iako mnogi klasični Linux sustavi koriste varijante SHA-256 ili SHA-512.
Kako funkcionira saljenje lozinki korak po korak

Proces soljenja može se sažeti u niz prilično jednostavnih koraka, ali s ogroman utjecaj na sigurnost:
Prvo, kada se korisnik registrira ili promijeni lozinku, sustav generira jedinstvena i slučajna sol za tu vjerodajnicu. Ta sol je obično dovoljne duljine (na primjer, 16 bajtova ili više) i dobiva se iz kriptografski sigurnog generatora slučajnih brojeva.
Zatim se lozinka koju je odabrao korisnik 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 hashiranjaRezultat je naizgled slučajan niz, hash, fiksne duljine, koji će biti pohranjen u bazi podataka zajedno sa soli. U modernim sustavima traže se algoritmi koji proizvode dugi i složeni izlaziTo povećava prostor pretraživanja i čini napade grubom silom skupljima.
Konačno, kada se korisnik prijavi, sustav ponovno dohvaća unesenu lozinku. povezana sol Iz baze podataka ponavlja potpuno isti postupak kombiniranja i hashiranja te uspoređuje rezultat s pohranjenim 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 hashevi s vlastitim solimaUmjesto skupa usporedivih hashova, zaustavljanje napada nije magija, ali postaje znatno računalno skuplje.
Prednosti korištenja soli u hashovima lozinki

Glavni razlog za korištenje soljenja je taj što jača sigurnost pohranjenih lozinki protiv širokog spektra napada. Ali vrijedi detaljno opisati specifične prednosti.
Prvo, soljenje osigurava otpornost na napade rječnikomBez soli, napadač može pripremiti ogroman popis uobičajenih lozinki i njihovih hashova te ih jednostavno usporediti 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 učinkovitost duginih stolovaTo su jednostavno unaprijed izračunate baze podataka hashova za popularne lozinke kako bi se ubrzao oporavak. Opet, budući da rezultat ovisi o specifičnoj soli, ove tablice dizajnirane za neslane hashove postaju beskorisne ili, u najmanju ruku, vrlo neučinkovite.
Još jedna jasna prednost je što poboljšava privatnost u slučaju curenjaČak i ako uljez dobije pristup korisničkoj tablici s njezinim hashom i salt vrijednostima, neće moći brzo prepoznati tko 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.
Nadalje, soljenje dodaje složenost napadi grubom silomUmjesto da može testirati kandidatsku lozinku na svim hashovima odjednom, napadač je prisiljen uzeti u obzir salt svakog korisnika, množeći ukupno opterećenje. Ako se to kombinira sa sporim i parametriziranim algoritmom za hashiranje (poput bcrypta ili Argon2), cijena napada dodatno se povećava.
Konačno, soljenje je tehnika koja se dobro prilagođava tehnološkoj evoluciji. Čak i kako se računalna oprema poboljšava i pojavljuju novi napadi, kombinacija robusnog hašiša i jedinstvene soli Održava visoku i skalabilnu razinu težine: možete povećati duljinu soli, ojačati algoritam, povećati računalne troškove itd.
Kako Linux implementira salting lozinki (/etc/shadow)
U Linux sustavima i drugim *NIX varijantama, korisničke lozinke se ne pohranjuju u /etc/passwd, već u datoteci / etc / shadowOva datoteka, dostupna samo superkorisniku, pohranjuje hashove lozinki zajedno s dodatnim informacijama i tu se jasno vidi upotreba soli i hash algoritma.
Redci 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 vrsta algoritma koristi se. Na primjer, 1 USD obično predstavlja MD5, 5 USD SHA-256 i 6 USD SHA-512, koji je najčešći algoritam u modernim distribucijama jer nudi veću sigurnost od starijih shema temeljenih na DES-u ili MD5.
Nakon što se pojavi identifikator algoritma, sala zatim rezultirajući hashSve se to nalazi unutar istog polja. Kada se lozinka potvrdi, sustav čita taj identifikator, sol, primjenjuje algoritam koji odgovara unesenoj lozinci i uspoređuje izračunati hash s pohranjenim.
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 redaka s hashovima u modernom formatu. Simbol se mora zamijeniti obrnutom kosom crtom jer u regularnim izrazima označava "kraj retka".
Računi bez lozinke ili zaključani računi obično prikazuju vrijednost poput ove u tom polju. ! o * umjesto hash-a s dolarima, što ukazuje da se ne može autentificirati standardnom lozinkom. Ova struktura jasno pokazuje jednu stvar: Linux integrira soljenje u svoj format skladištenje lozinke zavičajno.
Razlika između hashiranja i saltinga lozinki
Važno je jasno razlikovati dva koncepta koja se ponekad miješaju: raspršivanja y usoljavanjeHashiranje lozinke je proces kojim se lozinka pretvara u neprepoznatljivu vrijednost pomoću jednosmjernog algoritma. Poslužitelj nikada ne treba znati izvornu lozinku, već samo provjeriti da korisnik zna ispravnu lozinku jer generira isto hashiranje.
Problem je u tome što ako su dvije lozinke identične, Neslani hašiš će također biti identičanTo omogućuje napadaču usporedbu i grupiranje korisnika prema lozinki ili korištenje unaprijed izračunatih tablica. Nadalje, ako je algoritam za hashiranje brz i dizajniran za integritet podataka (kao što je jednostavan SHA-256), postaje ranjiviji na masovne napade grubom silom.
Soljenje dolazi upravo kako bi riješilo tu slabost: radi se o dodajte nasumične podatke lozinki prije hashiranja. Rezultat je da čak i ako dva korisnika odaberu „casa“ kao lozinku, hashovi u bazi podataka bit će potpuno različiti, jer će jedan imati, na primjer, „casa+7Ko#“, a drugi „casa8p?M“ kao niz prije hashiranja.
Dakle, hashiranje i salting se ne natječu, već se međusobno nadopunjuju. Hashiranje 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 s mkpasswd-om
U GNU/Linux okruženjima i drugim sustavima UnixVrlo praktičan način eksperimentiranja sa soljenjem je alat mkpasswdOva naredba se koristi za generiranje šifrirane lozinke sigurno i obično je integriran u procese stvaranja korisnika, administrativne skripte itd.
Osnovna sintaksa mkpasswd-a omogućuje vam da odredite lozinku koja će se šifrirati i niz opcija kao što je vrsta algoritma (na primjer, des, md5, sha-256, sha-512) pomoću opcije -mU modernim sustavima, razumno 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 omogućuje 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.
To se može lako provjeriti: ako nekoliko puta šifrirate "password123" pomoću mkpasswd-a, koristeći SHA-512 i slučajnu sol, dobit ćete potpuno različite hashove. Međutim, ako proslijedite istu vrijednost soli koristeći -S, hash će uvijek biti identičan, jer se kombinacija lozinke i soli ne mijenja.
Zahvaljujući ovom alatu, vrlo je jednostavno Pripremite lozinke šifrirane sa soli dodavati u konfiguracijske datoteke, ručno upravljati korisnicima ili testirati ponašanje slanja bez potrebe za programiranjem.
Strastveni pisac o svijetu bajtova i tehnologije općenito. Volim dijeliti svoje znanje pisanjem, a to je ono što ću učiniti na ovom blogu, pokazati vam sve najzanimljivije stvari o gadgetima, softveru, hardveru, tehnološkim trendovima i još mnogo toga. Moj cilj je pomoći vam da se snađete u digitalnom svijetu na jednostavan i zabavan način.