- Sůl je náhodný řetězec, který se přidává k heslu před hash, aby se dosáhlo jedinečných hashů pro každého uživatele.
- Linux Ukládá hash, sůl a algoritmus do /etc/shadow, čímž posiluje zabezpečení proti slovníkovým útokům a duhovým tabulkám.
- Dobré postupy vyžadují dlouhé, náhodné a jedinečné soli spolu s robustními hašovacími algoritmy a databází dobře chráněný.
- Solení hesel by mělo být integrováno do širších bezpečnostních zásad, které zahrnují silná hesla, vícefaktorovou autentizaci (MFA) a správce hesel.

Pokud pracujete se systémy GNU/Linux nebo se jednoduše obáváte o bezpečnost svých účtů, pravděpodobně jste už slyšeli o sůl v haši heslaJe to jeden z těch konceptů, které se často zmiňují, ale často se jim rozumí jen z poloviny: zní to technicky, ale ve skutečnosti to rozhoduje o tom, zda se systém snadno prolomí, nebo zda je mnohem odolnější vůči útokům.
Stručně řečeno, sůl je klíčový prvek pro nepředvídatelnost hashů heselFunguje to tak, že před použitím hashovacího algoritmu se přidají náhodná data, takže i když mají dva uživatelé stejné heslo, výsledek uložený v databázi bude odlišný. Konkrétní implementace v Linuxu, její vztah k /etc/shadow, nástroje jako mkpasswd a moderní osvědčené postupy v oblasti zabezpečení představují samostatný svět, který si podrobně prozkoumáme.
Co přesně je sůl v hash hesla?

V kryptografii, a sůl (sůl) je náhodný řetězec znaků který se připojí k heslu uživatele před použitím hašovací funkce. Cílem je, aby výsledný hash byl jedinečný, i když je heslo v prostém textu stejné pro více uživatelů.
Když si uživatel vytvoří nebo změní heslo, systém vygeneruje náhodná sůlKombinuje ho s heslem (před, za nebo v určitém formátu v závislosti na schématu) a na tuto kombinaci aplikuje hashovací algoritmus, například SHA-256 o SHA-512Heslo není uloženo v databázi, ale spíše hash (heslo + sůl)a ve většině schémat je spolu s hashem uložena i samotná sůl.
Tato technika vykresluje mnoho z útočné techniky založené na předem vypočítaných haších, jako jsou duhové tabulky, a značně komplikuje slovníkové a hrubou silové útoky ve velkém měřítku. Útočník již nemůže zneužít skutečnost, že více uživatelů sdílí heslo, protože každý z nich bude mít jiný hash.
Je důležité si uvědomit, že sůl sama o sobě není tajemstvím: Není to heslo ani soukromý klíčJeho funkcí je zavést do hašovacího procesu náhodnost a jedinečnost. Bezpečnost stále závisí na použití silná hesla y vhodné hašovací algoritmy, nejlépe speciálně navržené pro hesla (jako například bcrypt, scrypt, Argon2), ačkoli mnoho klasických linuxových systémů používá varianty SHA-256 nebo SHA-512.
Jak funguje salování hesel krok za krokem

Proces solení lze shrnout do série poměrně jednoduchých kroků, ale s obrovský dopad na bezpečnost:
Zaprvé, když se uživatel zaregistruje nebo změní své heslo, systém vygeneruje unikátní a náhodná sůl pro dané přihlašovací údaje. Tato sůl má obvykle dostatečnou délku (například 16 bajtů nebo více) a je získána z kryptograficky zabezpečeného generátoru náhodných čísel.
Dále je heslo zvolené uživatelem zkombinováno s touto solí a vytvoří mezilehlý řetězecTato kombinace může být jednoduchá jako zřetězení salt + password, nebo může mít složitější formát definovaný hashovacím schématem. Důležité je, aby každý uživatel dostal jinou kombinaci.
Pak, a jednosměrný hašovací algoritmusVýsledkem je zdánlivě náhodný řetězec, hash, pevné délky, který bude uložen v databázi spolu se solí. V moderních systémech se hledají algoritmy, které produkují dlouhé a složité východyTo zvětšuje prostor pro vyhledávání a prodražuje útoky hrubou silou.
Nakonec, když se uživatel přihlásí, systém znovu načte zadané heslo. související sůl Z databáze opakuje přesně stejný proces kombinování a hashování a porovnává výsledek s uloženým hašem. Pokud se shodují, pozná, že heslo je správné, aniž by musel znát prostý text.
Tento mechanismus zajišťuje, že i v případě úniku databáze útočník uvidí pouze jednotlivé hashe s vlastními solemiMísto sady srovnatelných hashů není zastavení útoku magií, ale stává se výrazně výpočetně náročnějším.
Výhody použití soli v hashech hesel

Hlavním důvodem pro používání solení je, že posiluje zabezpečení uložených hesel proti široké škále útoků. Stojí však za to podrobněji popsat konkrétní výhody.
Za prvé, solení poskytuje odolnost vůči slovníkovým útokůmBez funkce „Salt“ si útočník může připravit obrovský seznam běžných hesel a jejich hashů a jednoduše je porovnat s ukradenou databází. S jedinečnou „Salt“ na uživatele se tyto předem vypočítané hashy stanou zbytečnými, protože každá kombinace hesla a „Salt“ generuje jinou hodnotu.
Za druhé, použití soli snižuje účinnost duhové stolyJedná se jednoduše o předem vypočítané databáze hashů pro populární hesla, které urychlují obnovu. Vzhledem k tomu, že výsledek závisí na konkrétní soli, stávají se tyto tabulky určené pro nesolené hashe nepoužitelnými nebo přinejmenším velmi neefektivními.
Další jasnou výhodou je, že zlepšuje soukromí v případě únikuI když útočník získá přístup k uživatelské tabulce s jejím hašem a saltem, nebude schopen rychle identifikovat, kdo má stejné heslo jako ostatní, ani snadno spustit hromadné útoky. Každý účet vyžaduje individuální pozornost, což je ve velkém měřítku obvykle nepraktické.
Solení navíc zvyšuje složitost útoky hrubou silouMísto toho, aby mohl útočník testovat kandidátské heslo proti všem hashům najednou, je nucen zvážit salt každého uživatele, čímž se celková pracovní zátěž vynásobí. Pokud je to zkombinováno s pomalým a parametrizovatelným hashovacím algoritmem (jako je bcrypt nebo Argon2), náklady na útok se ještě více zvýší.
Solení je technika, která se dobře přizpůsobuje technologickému vývoji. I když se počítačové vybavení zlepšuje a objevují se nové útoky, kombinace robustního hašiše a unikátní soli Udržuje si vysokou a škálovatelnou úroveň obtížnosti: můžete zvětšit délku soli, posílit algoritmus, zvýšit výpočetní náklady atd.
Jak Linux implementuje solení hesel (/etc/shadow)
V systémech Linux a dalších variantách *NIX se uživatelská hesla neukládají do souboru /etc/passwd, ale do souboru / etc / shadowTento soubor, přístupný pouze superuživateli, ukládá hashe hesel spolu s dalšími informacemi a je zde jasně vidět použití funkce Salt a hashovacího algoritmu.
Řádky v souboru /etc/shadow mají strukturu podobnou této:
uživatel:$id$sal$hash:další_pole…
Symbol $ Oddělte jednotlivé části. První část za uživatelským jménem označuje typ algoritmu používá se. Například, $ 1 $ obvykle představuje MD5, $ 5 $ SHA-256 a $ 6 $ SHA-512, což je nejběžnější algoritmus v moderních distribucích, protože nabízí větší bezpečnost než starší schémata založená na DES nebo MD5.
Poté, co se objeví identifikátor algoritmu sala pak výsledný hashTo vše se nachází v jednom poli. Po ověření hesla systém přečte tento identifikátor, tzv. „salt“, použije algoritmus odpovídající zadanému heslu a porovná vypočítaný hash s uloženým.
Pokud chcete rychle zkontrolovat, kteří uživatelé mají zašifrovaná hesla a jaký algoritmus se používá, můžete použít příkaz jako grep '\$' /etc/shadowV tomto kontextu se znak dolaru ($) používá k vyhledání řádků s hashem v moderním formátu. Symbol musí být ukončen zpětným lomítkem, protože v regulárních výrazech označuje „konec řádku“.
Účty bez hesla nebo uzamčené účty obvykle v tomto poli zobrazují hodnotu podobnou této. ! o * místo hash s dolary, což znamená, že jej nelze ověřit pomocí standardního hesla. Tato struktura jasně ukazuje jednu věc: Linux integruje solení do svého formátu skladování hesla nativně.
Rozdíl mezi hashováním hesel a saltingem
Je důležité jasně rozlišovat mezi dvěma pojmy, které se někdy zaměňují: hashování y soleníHašování hesla je proces, při kterém je heslo transformováno na nerozpoznatelnou hodnotu pomocí jednosměrného algoritmu. Server nikdy nepotřebuje znát původní heslo, pouze ověřuje, zda uživatel zná správné heslo, protože generuje stejný hash.
Problém je v tom, že pokud jsou dvě hesla shodná, Nesolený hash bude také identickýTo útočníkovi umožňuje porovnávat a seskupovat uživatele podle hesla nebo používat předem vypočítané tabulky. Navíc, pokud je hašovací algoritmus rychlý a navržený pro integritu dat (například jednoduchý SHA-256), stává se zranitelnějším vůči masivním útokům hrubou silou.
Solení přichází právě k řešení této slabiny: jde o přidat k heslu náhodná data před jeho hashováním. Výsledkem je, že i když si dva uživatelé zvolí jako heslo „casa“, hashe v databázi budou zcela odlišné, protože jeden bude mít například „casa+7Ko#“ a druhý „casa8p?M“ jako řetězec před hashováním.
Hašování a solení si tedy nekonkurují, ale spíše se vzájemně doplňují. Hašování poskytuje vlastnost jednosměrnosti a snadnost ověření; sůl poskytuje jedinečnost a odolnost vůči masivním útokůmBezpečná implementace úložiště hesel kombinuje obě techniky, ideálně s využitím algoritmu navrženého pro tento účel, s konfigurovatelnými náklady.
Použití funkce Salt v Linuxu s mkpasswd
V prostředí GNU/Linux a dalších systémech UnixVelmi praktickým způsobem, jak experimentovat se solením, je nástroj mkpasswdTento příkaz se používá ke generování šifrovaná hesla bezpečně a je běžně integrován do procesů vytváření uživatelů, administračních skriptů atd.
Základní syntaxe příkazu mkpasswd umožňuje zadat heslo, které se má zašifrovat, a řadu možností, jako je typ algoritmu (například des, md5, sha-256, sha-512), pomocí možnosti -mV moderních systémech je rozumné zvolit si SHA-512 minimálně, nebo ještě robustnějšími schématy, pokud je distribuce podporuje.
Obzvláště zajímavou možností v kontextu solení je -S, což umožňuje přidat sůl k heslu před jeho zašifrováním. Pokud není zadáno ručně, může mkpasswd vygenerovat náhodná sůl v každém spuštěnítakže i při použití stejného přihlašovacího hesla je výsledný hash pokaždé jiný.
Toto lze snadno ověřit: pokud zašifrujete „password123“ několikrát pomocí mkpasswd s použitím SHA-512 a náhodné salty, získáte zcela odlišné hashe. Pokud však předáte stejnou hodnotu saltu s parametrem -S, hash bude vždy stejný, protože kombinace heslo + salt se nemění.
Díky tomuto nástroji je to velmi snadné Připravte si hesla šifrovaná pomocí soli přidávat do konfiguračních souborů, ručně spravovat uživatele nebo testovat chování solení bez nutnosti cokoli programovat.
Vášnivý spisovatel o světě bytů a technologií obecně. Rád sdílím své znalosti prostřednictvím psaní, a to je to, co budu dělat v tomto blogu, ukážu vám všechny nejzajímavější věci o gadgetech, softwaru, hardwaru, technologických trendech a dalších. Mým cílem je pomoci vám orientovat se v digitálním světě jednoduchým a zábavným způsobem.