Autor Zpráva
pepan
Profil
čím je podle vás nejlepší šifrovat hesla,myslím si,že MD5($heslo) není zrovna moc bezpečné. Děkuji za odpověď.
Timy
Profil
Hesla se nešifrují, ale hashují. Proč si myslíš, že je MD5 není bezpečná? Můžeš zkusit třeba sha1(md5($heslo));, jestli ti jedna hashovací funkce nestačí.
Joker
Profil
MD5 není šifra, což souvisí s tím, že v PHP se hesla obvykle nešifrují.
Bezpečnější než samotná MD5 může být tzv. solený hash (salted hash), tam útočníkovi nalezení kolizního řetězce k danému hashi bude na nic.

Další možnost je použít SHA-1, která by měla být bezpečnější, než MD5.

Jinak bych ale řekl, že pro běžné použití, kdy se stejně primárně spoléhá na to, že se útočník nedostane k databázi, je MD5 vcelku dostatečná.
tiso
Profil
Na slabé heslo ani MD5 nepomôže...
pepan
Profil
omlouvám se za chybně zvolenou frázi a děkuji za odpovědi
Joker
Profil
dodatek- co je to solený hash:
normální: heslo bude $heslo, uložím md5($heslo), kontrola: md5($zadane_heslo) == $ulozene_heslo
solený: heslo bude $heslo, uložím md5($heslo."bla"), kontrola: md5($zadane_heslo."bla") == $ulozene_heslo
Řetězec "bla" je v tomto případě tzv. sůl. Pokud útočník získá hash a najde kolizní řetězec, bude mu to na nic, protože se k němu na serveru přidá sůl- to "bla" a výsledek nebude odpovídat. A i kdyby útočník získal i hash i sůl, pořád má složitější úkol, nestačí jakýkoliv kolizní řetězec, ale jen kolizní řetězec končící "bla".

Sůl lze samozřejmě pro každé heslo použít jinou a uložit třeba jako zvláštní sloupec do databáze.
Petanekxp
Profil
Ahoj, mám problem. Já sem zapoměl heslo na muj email (seznam) a chci se dostat zpátky na email, ale nejak jako hecker :) Prej se to dá dělat přes příkazový řádek... V životě sem nic podobného nedělal...
Muj provizorni email je f.o.x@centrum.cz Dík za odpovědi...Petr
Tomáš Hanus
Profil
Petanekxp
To je nesmysl. Musíš heslo znát.

Prej se to dá dělat přes příkazový řádek
Možná myslíš telnet, zkoušet heslo s pokusem připojení se na pop3, třeba.

Asi nejsnadnější způsob je napsat, popřípadě zavolat na helpdesk mail centra. Při zakládání schránky se vkládá kontrolní otázka (a na ní kontrolní odpověď) právě z důvodů ztráty hesla.
Leinad
Profil
Petanekxp - jako hacker?
A nebylo by lepší se kolizi vyhnout třeba uložením md5($heslo) a sha1($heslo) vedle sebe a vždy kontrolovat obojí? Dobré by také mohlo být zajištění aby se útočník nedostal do databáze.
Timy
Profil
Tomáš Hanus
Nejsem si úplně jistý, jestli mu na helpdesku centra poradí, jak získat ztracené heslo na Seznamácký email ;-).

Petanekxp
Tohle jsi zkoušel? Přes příkazový řádek můžeš možná vyzkoušet všechny možné kombinace slov a pokud tě neodříznou, za pár let se snad do toho hesla trefíš.
Aleš Janda
Profil
Leinad
A nebylo by lepší se kolizi vyhnout třeba uložením md5($heslo) a sha1($heslo) vedle sebe a vždy kontrolovat obojí?

Ne, tím bys útočníkovi naopak pomohl. Lépe by pak mohl s pomocí matematických znalostí vysledovat závislosti a dekódovat vstupní heslo (lepším způsobem než hrubou silou).
Petanekxp
Profil
Jj, dik za pomoc..Neco zkusim a dam vedet. Dik
Petanekxp
Profil
Jo, tak sem toho zkusil hodne.... :-D :-D
A dostal jsem se tam Zapomenute heslo a zkousel jsem se odpoved na kontrolni otazku, ale musel jsem si udelat jiny email kam mi prislo heslo.... Uz to mam. Dik za napady...

Hledam program ICQsniper..... Nemuzu ho zanic najit na netu...

Jaky program je nejjednodussi na tvorbu jednoducheho webu....
Dik..
Leinad
Profil
Petanekxp na co ICQ sniper, chceš dělat bordel? Ohledně editorů by mohlo vzniknout velké flame, takže si založ vlastní téma. Každému se líbí jiný editor. Dělal jsi někdy web, máš nějaké představy či návyky?
joe
Profil
Joker
Jen se zeptám trochu mimo...

Pokud útočník získá hash a najde kolizní řetězec
Když získá hash, pak může získat i salt ne? :-) Takže není to stejný, jen navíc jeden sloupec se salty v db? I když taky to tak dělám, jen se ptám :-)

pepan
Myslim, že md5 je dostačující.
Aleš Janda
Profil
joe
Když získá hash, pak může získat i salt ne? :-)

To sice získá, ale je výrazně těžší najít kolizní řetězec, který obsahuje zadaný salt, než libovolný kolizní řetězec.
A mimochodem md5 už se nepovažuje za příliš bezpečnou, lze najít více řetězců, které se mapují do stejného hashe. Pro nové věci použij sha1 nebo silnější.
BetaCam
Profil
joe
Když získá hash, pak může získat i salt ne? :-) Takže není to stejný, jen navíc jeden sloupec se salty v db? I když taky to tak dělám, jen se ptám :-)

salt není tajný. Jediné co by se mělo utajit je jeho způsob použití a úloha při generování hashe.
Mike8748_work
Profil *
Aleš Janda
to u sha1 taky, vzhledem k tomu že z libovolného množství dat ti vždy vznikne hash pevné délky. i u sha1 mužeš najít kolizi

BetaCam
nikdo neřiká že salt musíš ukládat do databáze. můžeš ho mít natvrdo v kódu aplikace.

Joker
A i kdyby útočník získal i hash i sůl, pořád má složitější úkol, nestačí jakýkoliv kolizní řetězec, ale jen kolizní řetězec končící "bla".
neni pravda. v okamžiku kdy útočník zná hash i sůl tak je to to samý jako když žádná sůl neni. a to že by kolizní řetězec musel končit solí ("bla") taky není třeba
Aleš Janda
Profil
Mike8748_work
i u sha1 mužeš najít kolizi
To samozřejmě ano, ale trvá to výrazně déle než minutu u MD5.

neni pravda. v okamžiku kdy útočník zná hash i sůl tak je to to samý jako když žádná sůl neni. a to že by kolizní řetězec musel končit solí ("bla") taky není třeba
Je to potřeba pro přihlášení. Najdeš kolizní řetězec bez "bla" na konci, ale je ti na nic, protože když ho zadáš, aplikace přidá to "bla" a vyjde úplně jiný hash.
BetaCam
Profil
Mike8748_work
nikdo neřiká že salt musíš ukládat do databáze. můžeš ho mít natvrdo v kódu aplikace.

To se nepoužívá protože salt by měl být pro každého uživatele rozdílný.

neni pravda. v okamžiku kdy útočník zná hash i sůl tak je to to samý jako když žádná sůl neni. a to že by kolizní řetězec musel končit solí ("bla") taky není třeba

Salt i hash je ti k ničemu pokud nevíš jakou úlohu salt hraje na úrovni aplikaci.
imploder
Profil
- najdu kolizní řetězec stejný jako při přihlášení uživatele, tj. jeho heslo + sůl
- protože sůl je známá, odstraním z toho řetězce sůl
- přihlásím se do jeho účtu
Tady teda sůl nepomůže. Asi je to myšleno pro případy, kdy kolizní řetězec je jiný než u uživatelova přihlášení a jenom dává stejný hash. Normálně (při hashování jen samotného hesla, bez soli) bych mohl takový řetězec použít místo jeho hesla k nabourání se do účtu, ale vzhledem k tomu, že v něm není sůl jako v kolizním řetězci co používá uživatel při přihlášení se správným heslem, tak nemůžu jednoduše odstranit sůl a přihlásit se. Kdybych použil řetězec celý jako u nesoleného hesla, tak by to nešlo, protože by mi program ten řetězec osolil a výsledný hash by neodpovídal.

Když je u každého uživatele jiná sůl (to by správně měla být, aspoň tak jsem to pochopil), tak i když má víc uživatelů stejné heslo, tak nemají stejný hash. Útočník tak nemůže jednoduše podle stejného hashe najít uživatele se stejným heslem.
BetaCam
Profil
imploder
- najdu kolizní řetězec stejný jako při přihlášení uživatele, tj. jeho heslo + sůl
- protože sůl je známá, odstraním z toho řetězce sůl
- přihlásím se do jeho účtu


Nelze dost dobře provédst když útočník nezná generovací rutinu pro výsledný hash.

Generovací rutina je to zásadní. Samotný salt je v podstatě věc, která není nutná tajit jeho znalost útočníkovi nijak zásadně nepomůže.
Mastodont
Profil
solený: heslo bude $heslo, uložím md5($heslo."bla")

Nebylo by lepší odesílat z prohlížeče md5(md5($heslo)."bla") ?? Pak by znalost soli neměla útočníkovi nijak pomoci ...
BetaCam
Profil
Mastodont
Nebylo by lepší odesílat z prohlížeče md5(md5($heslo)."bla") ?? Pak by znalost soli neměla útočníkovi nijak pomoci ...

Ano jistě to spadá do kolonky "generovací rutina výsledného hashe".

Velkej problém je to, že většina lidí si myslí, že jediná možnost jak použít salt je tato rutina :

md5($heslo.$salt)
imploder
Profil
Když už někdo získá přístup do databáze, tak má dost pravděpodobně taky přístup ke zdrojákům a tam si tu rutinu může zjistit.
BetaCam
Profil
imploder
Když už někdo získá přístup do databáze, tak má dost pravděpodobně taky přístup ke zdrojákům a tam si tu rutinu může zjistit.

Když má přístup do databáze tak už nepotřebuje znát heslo. Všechny informace už má přímo před sebou.

Toto sou opatření proti informacím zjištěným například pomocí SQL injection. Kdy člověk zjistí jen omezenou sadu dat, ale aby mohl aplikaci plně ovládnout musí se dostat do administrace. Pokud má plnej přístup do databáze nepotřebuje administraci pouze by ho zbytečně omezovala.
Pan Mrkvička
Profil *
Jak silný je hash php fcí crypt()?

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: