- Soľ je náhodný reťazec, ktorý sa pridá k heslu pred hash, aby sa dosiahli jedinečné hash hodnoty pre každého používateľa.
- Linux Ukladá hash, soľ a algoritmus do súboru /etc/shadow, čím posilňuje bezpečnosť proti slovníkovým útokom a dúhovým tabuľkám.
- Dobré postupy vyžadujú dlhé, náhodné a jedinečné soli spolu s robustnými hašovacími algoritmami a databázy dobre chránené.
- Solenie hesiel by malo byť integrované do širších bezpečnostných politík, ktoré zahŕňajú silné heslá, viacfaktorovú autentifikáciu (MFA) a správcov hesiel.

Ak pracujete so systémami GNU/Linux alebo sa jednoducho obávate o bezpečnosť svojich účtov, pravdepodobne ste už počuli o soľ v haši heslaJe to jeden z tých konceptov, ktoré sa spomínajú často, ale často sa im rozumie len čiastočne: znie to technicky, ale v skutočnosti to robí rozdiel medzi systémom, ktorý sa dá ľahko prelomiť, a systémom, ktorý je oveľa odolnejší voči útokom.
Stručne povedané, soľ je kľúčový prvok pre nepredvídateľnosť hashov hesielFunguje to tak, že pred použitím hašovacieho algoritmu sa pridajú náhodné údaje, takže aj keď majú dvaja používatelia rovnaké heslo, výsledok uložený v databáze bude odlišný. Ďalej podrobne preskúmame konkrétnu implementáciu v Linuxe, jej vzťah k /etc/shadow, nástroje ako mkpasswd a moderné osvedčené postupy v oblasti bezpečnosti.
Čo presne je soľ v haši hesla?

V kryptografii, a soľ (soľ) je náhodný reťazec znakov ktorý sa pridá k heslu používateľa pred použitím hašovacej funkcie. Cieľom je, aby výsledný hash bol jedinečný, aj keď je heslo v otvorenom texte rovnaké pre viacerých používateľov.
Keď si používateľ vytvorí alebo zmení heslo, systém vygeneruje náhodná soľKombinuje ho s heslom (pred, za alebo v konkrétnom formáte v závislosti od schémy) a na túto kombináciu aplikuje hašovací algoritmus, napríklad SHA-256 o SHA-512Heslo nie je uložené v databáze, ale skôr hash (heslo + soľ)a vo väčšine schém sa spolu s hashom ukladá aj samotná soľ.
Táto technika vykresľuje mnohé z útočné techniky založené na vopred vypočítaných hašoch, podobne ako dúhové tabuľky, a výrazne komplikuje slovníkové a hrubosilové útoky vo veľkom meradle. Útočník už nemôže zneužiť skutočnosť, že viacero používateľov zdieľa heslo, pretože každý z nich bude mať iný hash.
Je dôležité pochopiť, že soľ sama o sebe nie je tajomstvom: Nie je to heslo ani súkromný kľúčJeho funkciou je zaviesť do procesu hashovania náhodnosť a jedinečnosť. Bezpečnosť stále závisí od použitia silné heslá y vhodné hašovacie algoritmy, najlepšie špeciálne navrhnuté pre heslá (ako napríklad bcrypt, scrypt, Argon2), hoci mnoho klasických linuxových systémov používa varianty SHA-256 alebo SHA-512.
Ako funguje solenie hesiel krok za krokom

Proces solenia možno zhrnúť do série pomerne jednoduchých krokov, ale s obrovský vplyv na bezpečnosť:
Po prvé, keď sa používateľ zaregistruje alebo zmení svoje heslo, systém vygeneruje jedinečná a náhodná soľ pre dané poverenie. Táto soľ má zvyčajne dostatočnú dĺžku (napríklad 16 bajtov alebo viac) a získava sa z kryptograficky zabezpečeného generátora náhodných čísel.
Následne sa heslo zvolené používateľom skombinuje s touto soľou a vytvorí sa medziľahlý reťazecTáto kombinácia môže byť jednoduchá ako zreťazenie salt + password, alebo môže mať zložitejší formát definovaný hašovacou schémou. Dôležité je, aby každý používateľ dostal inú kombináciu.
Potom, a jednosmerný hašovací algoritmusVýsledkom je zdanlivo náhodný reťazec, hash, s pevnou dĺžkou, ktorý bude uložený v databáze spolu so soľou. V moderných systémoch sa hľadajú algoritmy, ktoré produkujú dlhé a zložité východyTo zväčšuje priestor pre vyhľadávanie a zvyšuje náklady na útoky hrubou silou.
Nakoniec, keď sa používateľ prihlási, systém opäť načíta zadané heslo. pridružená soľ Z databázy zopakuje presne ten istý proces kombinovania a hashovania a výsledok porovná s uloženým hashom. Ak sa zhodujú, vie, že heslo je správne bez toho, aby musel poznať otvorený text.
Tento mechanizmus zabezpečuje, že aj v prípade úniku databázy útočník uvidí iba jednotlivé haše s vlastnými soľamiNamiesto sady porovnateľných hashov nie je zastavenie útoku zázrakom, ale stáva sa výrazne výpočtovo náročnejším.
Výhody použitia soli v hašoch hesiel

Hlavným dôvodom používania solenia je, že posilňuje bezpečnosť uložených hesiel proti širokej škále útokov. Stojí však za to podrobnejšie uviesť konkrétne výhody.
Po prvé, solenie poskytuje odolnosť voči slovníkovým útokomBez funkcie Salt si útočník môže pripraviť obrovský zoznam bežných hesiel a ich hashov a jednoducho ich porovnať s ukradnutou databázou. S jedinečnou kombináciou Salt na používateľa sa tieto vopred vypočítané hashy stanú zbytočnými, pretože každá kombinácia hesla a Salt generuje inú hodnotu.
Po druhé, používanie soli znižuje účinnosť dúhové stolyIde jednoducho o vopred vypočítané databázy hashov pre populárne heslá, ktoré urýchľujú obnovu. Keďže výsledok závisí od konkrétnej soli, tieto tabuľky určené pre nesolené hashy sa stávajú zbytočnými alebo prinajmenšom veľmi neefektívnymi.
Ďalšou jasnou výhodou je, že zlepšuje súkromie v prípade únikuAj keď útočník získa prístup k tabuľke používateľov s jej hashom a soľou, nebude schopný rýchlo identifikovať, kto má rovnaké heslo ako ostatní, ani ľahko spustiť hromadné útoky. Každý účet si vyžaduje individuálnu pozornosť, čo je vo veľkom meradle zvyčajne nepraktické.
Okrem toho, solenie pridáva komplikácie útoky hrubou silouNamiesto toho, aby mohol útočník otestovať kandidátske heslo proti všetkým hašom naraz, je nútený zvážiť salt každého používateľa, čím sa celková záťaž vynásobí. Ak sa to skombinuje s pomalým a parametrizovateľným hašovacím algoritmom (ako napríklad bcrypt alebo Argon2), náklady na útok sa ešte viac zvýšia.
Nakoniec, solenie je technika, ktorá sa dobre prispôsobuje technologickému vývoju. Aj keď sa počítačové vybavenie zlepšuje a objavujú sa nové útoky, kombinácia silného hashu a unikátnej soli Udržiava si vysokú a škálovateľnú úroveň obtiažnosti: môžete zväčšiť dĺžku soli, posilniť algoritmus, zvýšiť výpočtové náklady atď.
Ako Linux implementuje solenie hesiel (/etc/shadow)
V systémoch Linux a iných variantoch *NIX nie sú heslá používateľov uložené v súbore /etc/passwd, ale v súbore / Etc / shadowTento súbor, prístupný iba superpoužívateľovi, ukladá hash hesiel spolu s ďalšími informáciami a je miestom, kde je jasne vidieť použitie funkcie Salt a hash algoritmu.
Riadky v súbore /etc/shadow majú štruktúru podobnú tejto:
používateľ:$id$sal$hash:ďalšie_polia…
Symbol $ Oddeľte jednotlivé časti. Prvá časť za používateľským menom označuje typ algoritmu používané. Napríklad, 1 $ zvyčajne predstavuje MD5, 5 $ SHA-256 a 6 $ SHA-512, čo je najbežnejší algoritmus v moderných distribúciách, pretože ponúka väčšiu bezpečnosť ako staršie schémy založené na DES alebo MD5.
Po zobrazení identifikátora algoritmu sala potom výsledný hashToto všetko sa nachádza v tom istom poli. Keď je heslo overené, systém prečíta tento identifikátor, tzv. soľ, použije algoritmus zodpovedajúci zadanému heslu a porovná vypočítaný hash s uloženým.
Ak chcete rýchlo skontrolovať, ktorí používatelia majú zašifrované heslá a aký algoritmus sa používa, môžete použiť príkaz ako grep '\$' /etc/shadowV tomto kontexte sa znak dolára ($) používa na vyhľadanie riadkov s hashmi v modernom formáte. Symbol musí byť ukončený spätným lomítkom, pretože v regulárnych výrazoch označuje „koniec riadku“.
Účty bez hesla alebo uzamknuté účty zvyčajne zobrazujú v tomto poli hodnotu, ako je táto. ! o * namiesto hashu s dolármi, čo naznačuje, že ho nemožno overiť pomocou štandardného hesla. Táto štruktúra jasne hovorí o jednej veci: Linux integruje solenie do svojho formátu skladovanie heslá natívne.
Rozdiel medzi hašovaním hesla a solením
Je dôležité jasne rozlišovať medzi dvoma pojmami, ktoré sa niekedy zamieňajú: zatrieďovanie y solenieHašovanie hesla je proces, pri ktorom sa heslo transformuje na nerozpoznateľnú hodnotu pomocou jednosmerného algoritmu. Server nikdy nepotrebuje poznať pôvodné heslo, iba overiť, či používateľ pozná správne heslo, pretože generuje rovnaký haš.
Problém je v tom, že ak sú dve heslá rovnaké, Nesolený hash bude tiež identickýTo umožňuje útočníkovi porovnávať a zoskupovať používateľov podľa hesla alebo použiť vopred vypočítané tabuľky. Okrem toho, ak je hašovací algoritmus rýchly a navrhnutý pre integritu údajov (napríklad jednoduchý SHA-256), stáva sa zraniteľnejším voči masívnym útokom hrubou silou.
Solenie prichádza práve na to, aby vyriešilo túto slabinu: ide o pridať k heslu náhodné údaje pred jeho hašovaním. Výsledkom je, že aj keď si dvaja používatelia zvolia ako heslo „casa“, haše v databáze budú úplne odlišné, pretože jeden bude mať napríklad „casa+7Ko#“ a druhý „casa8p?M“ ako reťazec pred hašovaním.
Hašovanie a solenie si teda nekonkurujú, ale skôr sa navzájom dopĺňajú. Hašovanie poskytuje vlastnosť jednosmernosti a jednoduchosť overenia; soľ poskytuje jedinečnosť a odolnosť voči masívnym útokomBezpečná implementácia úložiska hesiel kombinuje obe techniky, ideálne s použitím algoritmu určeného na tento účel, s konfigurovateľnými nákladmi.
Používanie funkcie Salt v Linuxe s mkpasswd
V prostrediach GNU/Linux a iných systémoch unixVeľmi praktickým spôsobom experimentovania so solením je nástroj mkpasswdTento príkaz sa používa na generovanie šifrované heslá bezpečne a je bežne integrovaný do procesov vytvárania používateľov, administračných skriptov atď.
Základná syntax príkazu mkpasswd umožňuje zadať heslo, ktoré sa má zašifrovať, a sériu možností, ako napríklad typ algoritmu (napríklad des, md5, sha-256, sha-512) pomocou možnosti -mV moderných systémoch je rozumné zvoliť si SHA-512 minimálne, alebo ešte robustnejšími schémami, ak ich distribúcia podporuje.
Obzvlášť zaujímavou možnosťou v kontexte solenia je -S, čo umožňuje pridať soľ k heslu pred jeho zašifrovaním. Ak nie je zadané manuálne, mkpasswd môže vygenerovať náhodná soľ v každom spustenítakže aj pri použití rovnakého prihlasovacieho hesla je výsledný hash zakaždým iný.
Toto sa dá ľahko overiť: ak zašifrujete „password123“ niekoľkokrát pomocou mkpasswd s použitím SHA-512 a náhodnej hodnoty salt, získate úplne odlišné hash hodnoty. Ak však zadáte rovnakú hodnotu salt pomocou -S, hash hodnota bude vždy identická, pretože kombinácia password + salt sa nemení.
Vďaka tomuto nástroju je to veľmi jednoduché Pripravte si heslá šifrované pomocou soli pridávať do konfiguračných súborov, manuálne spravovať používateľov alebo testovať správanie pri solení bez nutnosti čohokoľvek programovať.
Vášnivý spisovateľ o svete bajtov a technológií všeobecne. Milujem zdieľanie svojich vedomostí prostredníctvom písania, a to je to, čo urobím v tomto blogu, ukážem vám všetko najzaujímavejšie o gadgetoch, softvéri, hardvéri, technologických trendoch a ďalších. Mojím cieľom je pomôcť vám orientovať sa v digitálnom svete jednoduchým a zábavným spôsobom.