Píšete o kryptovací funkci, ale myslíte funkci crypt() na unixových systémech (která je dostupná třeba i v PHP). Funkce crypt() ale není hashovací funkce, pouze hashování interně používá.
Funguje tak, že vezme heslo (nebo jeho část) a sůl (resp. její část), vytvoří hash, spojí sůl s hashem a to vrátí jako výsledek. Když pak chcete heslo ověřit, vezmete sůl z výsledku (ve skutečnosti můžete použít celý výsledek, protože se automaticky použije jenom část představující sůl) a heslo zadané uživatelem, znovu proženete funkcí crypt() a porovnáte s předchozím výsledkem. Pro stejnou sůl a stejné heslo musí ta funkce logicky dávat vždy stejný výsledek, jinak byste heslo nikdy neověřil. Pokud při prvním spuštění nezadáte žádnou sůl, funkce crypt() vygeneruje nějakou náhodnou. Díky tomu, že je sůl součástí výsledku, můžete příště heslo ověřit i s touto náhodnou solí.
Jinak výše uvedený popis platí pro standardní unixový crypt() s algoritmem DES, pro jiné implementace to může fungovat trochu jinak.
A neni to tak, ze se pri vynechani onoho parametru salt pridava nejaka implicitni hodnota, odvozena treba od aktualniho casu, jak tomu byvalo v /etc/passwd? Pokud by totiz davala stejna hesla ruzny hash, jakpak byste poznal, ktery je ten spravny? A jak se mohl radny uzivatel korektně prihlasit? Nehlede na to, ze by nefungovala zakladni teorie ;-).
omlouvam se za formulaci, ale pochopil jste to.
Prave tehdy, pokud se salt parametr vynecha u kryptovaci funkce maji pak dve stejna hesla ruzny hash.
Pokud se pridava sul a chce se dosahnout jineho hashe, tak se musi parametr salt menit podle nejakeho algoritmu, ktery jiz asi nebude prece kryptovaci...
A co je asi pak bezpecnejsi? Nechat kryptovaci funkci, aby sama delala hashe bez soli nebo ji rikat podle ceho je ma delat?
Nicmene jsem psal pravdu a odkaz na php funkci a priklad 3 to potvrzuje, ze kdyz se prida sul, ma to vzdy tendenci ovlivnovat vysledek a kdyz je sul staticka, tak ten vysledek je vzdy stejny.
Sorry, ale co věta, to blbost:
- "Osolena hesla maji vzdy stejny hash a neosolena maji ruzny. Rikate to naopak!" -- Blbost. Stejná hesla mají vždy stejný hash, naopak dvě různá hesla se stejným hashem sice zcela jistě existují, ale nedokážeme je najít*). Sůl (salt) může sloužit mimo jiné k tomu, aby při stejném hesle (které si zvolil uživatel) byly různé hashe, a to tak, že ke každému heslu se přidá jiná sůl.
- "Kdyz se kryptuje v PHP a prida se do hashe prave parametr salt, tak budou vzdy hesla stejna" -- Blbost, viz výše.
- "muzete si to zkusit treba zde: http://php.net/manual/en/function.crypt.php viz priklad #3" -- Blbost, pokud vám výstupy příkladu #3 připadají všechny stejné, tak nutně potřebujete k očnímu.
- "Zaverem, kdyz vytvarim hashe, tak bych nemel solit, neni to zdrave." -- Blbost. Hashování nemá se zdravím nic společného, a pokud zdravím myslíte bezpečnost, tak je to přesně naopak, než píšete.
- "Takze kdyz byla hesla u vsech uctu stejna, tak se asi solilo hodne" - Blbost. To by nastalo pouze za předpokladu, že by všechna hesla byla stejná a současně byla pro všechna použita stejná sůl. Pokud se pro každé heslo použije jiná sůl, tak sice víme, že existují kombinace se stejným hashem, ale nedokážeme je najít*).
- "utocnik ma tak jednodussi praci a nemusi ani louskat podle dvou stejnych, pokud mel taky na linkedln ucet a mezi ucty se najde." -- Blbost. Jednodušší práci by měl za uvedených podmínek pouze v případě, že by se nesolilo nebo solilo všechno stejně.
*) Myšleno pro bezpečné hashe.
citace: Tomu se dá snadno zabránit takzvaným solením, při němž se otisky počítají z hesel doplněných o nějakou další hodnotu (tedy právě takzvanou sůl), takže i když dva uživatelé budou mít stejné heslo, odpovídající otisky budou odlišné.
Osolena hesla maji vzdy stejny hash a neosolena maji ruzny. Rikate to naopak!
Kdyz se kryptuje v PHP a prida se do hashe prave parametr salt, tak budou vzdy hesla stejna a muzete si to zkusit treba zde: http://php.net/manual/en/function.crypt.php viz priklad #3
Zaverem, kdyz vytvarim hashe, tak bych nemel solit, neni to zdrave.
Takze kdyz byla hesla u vsech uctu stejna, tak se asi solilo hodne a utocnik ma tak jednodussi praci a nemusi ani louskat podle dvou stejnych, pokud mel taky na linkedln ucet a mezi ucty se najde.