Portál AbcLinuxu, 13. května 2025 23:12
Řešení dotazu:
ftp:$1$ng01N5FL$9zqReNr3Kz0blNZVEN83e/:14629:0:99999:7:::takze $1$ znamena je se jedna o MD5. osm znaku
ng01N5FLje podle meho teda ten salt. a zbyvajicich 22 znaku je hash meho MD5 (hesla zkombinovaneho se saltem)
9zqReNr3Kz0blNZVEN83e/. O ukladani hesla v linuxu vim nasledujici: Vezme se salt (napr jmeno uzivatele nebo nejaky retezec znaku ulozeny v kodu aplikace) smicha se urcitym algoritmem s heslem ktere zada uzivatel a udela se hash. ... Utocnik ktery ziska pristup k /etc/shadow a podari se mu napr bruteforce utokem ziskat z hashe retezec znaku tak vlastne ziska heslo smichane se saltem. On vsak potrebuje ciste jen heslo aby se dostal do systemu. Takze pokud nedokaze vypreparovat ciste heslo tak je mu ziskany retezec na nic. Tim ze utocnik ziska cisty salt tak ma vetsi sanci ho vypreparovat. Potom ale stale vidim jako slabinu ukladat salt jen tak. Chapu to uz spravne?
Chyba je v předpokladu, že salt je tajná informace. Jenže tak by to nemohlo fungovat, protože při ověřování hesla je potřeba hash spočítat a k tomu potřebujete salt znát (uživatel vám ho neřekne). Salt je proto veřejný a je v čisté (pouze zakódované) podobě uložen vedle hashe. Smysl salt je např. v tom, že:
passwd
/shadow
(někdy se tomuto triku říká slovníkový útok); s využitím salt by si musel udělat slovníky pro každou možnou hodnotu salt a těch je např. u MD5 2^48Pokud chcete zvýšit odolnost proti útoku hrubou silou, používejte delší hesla, širší abecedu nebo náročnější algoritmus (třeba blowfish), smysl salt je jiný - zajistit, aby danému heslu neodpovídal pokaždé stejný hash.
Vezme se salt (napr jmeno uzivatele nebo nejaky retezec znaku ulozeny v kodu aplikace) smicha se urcitym algoritmem s heslem ktere zada uzivatel a udela se hash.
To není úplně přesné. Za prvé salt není pevný, ale generuje se (pseudo)náhodně při změně hesla. Zkuste si párkrát změnit heslo a uvidíte, že i když budete dávat pořád stejné, všechny atributy uživatele budou stejné a použijete pokaždé stejný program, salt bude pokaždé jiný. Pevný salt (nebo i jen odvoditelný např. ze jména uživatele) by vzhledem k výše uvedenému neměl smysl. Za druhé to bývá spíš tak, že algoritmus výpočtu hashe má dva vstupy - heslo a salt - a z nich nějakým způsobem vyrobí výsledek.
Jak jste prisel na to cislo? Vychazite z toho ze salt ma 8 znaku a kazdy je kodovany 6 bity coz pak dava onech 48 (6x8)?
Myslím, že těch 48 bitů není úplně nezbytných, ale v praxi se to tak používá. Zkuste chvíli hledat, zdrojů na webu je dost.
Nasel bych hash ktery by odpovidal tomu v souboru shadow. Tzn. mam hash, mam salt, znam algoritmus jakym se sklada heslo+salt -> aby vznikl hash. Tzn. Mel bych heslo zkombinovane se salt, salt bych separoval a zbylo by mi ciste heslo. Pokud je moje dedukce spravna tak ten salt to az tak moc neztezuje...
Proč ignorujete poslední odstavec příspěvku, na který reagujete?
Kdyz to slouzi jen proto kdyby nahodou meli dva lide stejne heslo coz je mala pravdepodobnost pokud se budou drzet nejake prisne politiky tvorby hesel.
Uvedl jsem vám tři příklady důvodů. Proč dva ignorujete a chováte se, jako bych napsal jen jeden (shodou okolností ten nejméně podstatný)?
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.