« 1 2 »
Autor Zpráva
Josef Tlapač
Profil *
Dobrý den, v čem je prosím nejlepší ukládat heslo do mysql? Děkuji
tiso
Profil
Josef Tlapač
1. pridáš k heslu salt (=náhodný reťazec, na začiatok, do stredu, ...)
2. z výsledného reťazca spravíš hash (pomocou funkcií md5(), sha1(), ...)
3. hash a salt uložíš do databázy.
Josef Tlapač
Profil *
Dobrý den, děkuji za info, takto nějak?

$salt = random(5);
$heslo = "wer54w6r46w5e";

k_ulozeni_do_db = md5($salt . $heslo);


a prosím v mysql mám zvolit jako TYP sloupce co?

děkuji
tiso
Profil
Josef Tlapač - pre md5 varchar(32) not null
Josef Tlapač
Profil *
a je lepsi tedy md5 nebo sha1 ?
srigi
Profil
tiso
Ukladat salt do DB nie je velmi napadite. Viem, ze utocnik nema ako zistit algorytmus, ale ak raz ziska pristup k DB, ziska ku kazdemu zaznamu aj jeho salt a to nie je chvalihodne.

Ja osobne salt ukladam ako string do PHP skriptu. Sice je pre kazdy zaznam rovnaky, ale nie je v databaze.
tiso
Profil
srigi - to je síce pekné, ale tým si práve zrušil dôvod prečo sa salt k heslu pridáva.
srigi
Profil
tiso
tým si práve zrušil dôvod prečo sa salt k heslu pridáva.

Preco si myslis, ze tym ze je salt staticky, saltovanie straca vyznam? Sry, toto si neviem zdovodnit. Ziskat salt z PHP skriptu je takmer nemozne, leda by admin webservara vypol PHP engine (prva volba v php.ini), co je uplne nepravdepodobne. Naopak, tym ze sa "criepky", z ktorych heslo pozostava, rozhodia do dvoch odlisnych technolgii, bezpecnost zvysuje (utocnik musi napdnut viac miest).
tiso
Profil
srigi - ach jaj, sladká nevedomosť... Ak prídeš na to aký dôvod som mal na mysli, tak sa máme o čom baviť ďalej. Google ti pomôže...
JanJanuska
Profil
srigi: a prečo tam ten salt teda vôbec pridávaš? :)
Nox
Profil
JanJanuska
Imho
1) V podstatě není šance na rozluštění původního hesla...ikdyby došel na řetězec, který odpovídá hashi (kolize), který našel, tak nebude odpovídat po přidání saltu...teoreticky by mohl zkusit brát postupně jen část toho řetězce, ale to by fungovalo jen tehdy, kdyby při tom hledání narazil na původní heslo, což jednak nezjistí, že to je zrovna ono a jednak ta šance je šíleně malá
2) Dva uživatelé se stejným hashem nemají stejné heslo, pokud je hash dynamický, ale šance na stejné heslo imho není velká, takže bych v tom asi neviděl zásadní význam
srigi
Profil
tiso
Dva uživatelé se stejným hashem mají stejné heslo

Jaj o toto ide. Toto by mi vadilo asi iba z 50%. Pre mna osobne je dolezitejsie, ze nad ukradnutou databazou hesiel nejdu vyuzit rainbowtables ci jak sa to vola a rozne tie webove "dehash" stranky.
tiso
Profil
srigi [#8] - to nie je tak celkom pravda. Stačí aby mal útočník prístup na ftp, alebo možnosť nahrať si tam skript -> dokáže získať prístup ku všetkému.
[#12] - ale to nejde ani pri tom spôsobe čo som uviedol. Stále ale funguje hrubá sila.
AM_
Profil
A proč tedy nevytáhnout salt nějakým způsobem z databáze (např. první, třetí a šesté písmeno přezdívky)? salt se pak nemusí nikam ukládat, pouze se algoritmem z něčeho vytvoří (pak je ale nutné jej aktualizovat při změně přezdívky)
nightfish
Profil
A proč tedy nevytáhnout salt nějakým způsobem z databáze (např. první, třetí a šesté písmeno přezdívky)? salt se pak nemusí nikam ukládat, pouze se algoritmem z něčeho vytvoří (pak je ale nutné jej aktualizovat při změně přezdívky)
při změně přezdívky se změní salt, a tedy i hash (který je na saltu založen)
jenomže pro výpočet hashe je kromě saltu potřeba i plaintext hesla, který nemáme... takže tudy cesta nevede
JanJanuska
Profil
Nox
No tak kolíziu 2 reťazcov by nájsť nemal, to by bola zrejme chyba (nedokonalosť?) hashovacej funkcie.

Skôr by som sa obával toho, že dva účty môžu mať rovnaké heslo a teda aj hash. Ak si nejaký "v práci nespokojný" zamestnanec s prístupom k DB "všimne", že má rovnaký hash dajme tomu šéf s rozsiahlymi právami a zamestnanec, stačí získať heslo od zamestnanca (pozvanie na pár pív? :)).

AM_
Veľmi dobrá idea (a jednoduchá)...
JanJanuska
Profil
nightfish
je kromě saltu potřeba i plaintext hesla, který nemáme...

Užívateľ zadá heslo, funkcia vytvorí salt, zahashuje sa salt spolu s pôvodným heslom...

edit
aha, asi som ťa zle pochopil... No ak si môže užívateľ meniť užívateľské meno, tak salt sa môže vygenerovať z iného (stáleho) údaja, napr. z ID.
amon
Profil
A co tak vytvorit salt z pouzivatelskeho mena? To by sa este mohlo prevratit naopak, alebo nahodne poprehadzovat, pripadne z neho urobit hash a pouzit napr. prvych 5 znakov hashu... Moznosti na upravu mena je vela...
Timy
Profil
AM_
Proč rovnou nevzít celou přezdívku?

nightfish
jenomže pro výpočet hashe je kromě saltu potřeba i plaintext hesla, který nemáme... takže tudy cesta nevede
Nemohli bychom to heslo nechat uživatele znova zadat? Bude to podle mě i bezpečnější, protože tak nebude moci změnit přezdívku (= případný login) někdo, kdo se zrovna jen na chvilku dostal k počítači, kde je nějaký uživatel přihlášený.
Nox
Profil
JanJanuska
1) Kolize je standardně u hashů nevyhnutelný jev, hashů je konstatní počet, zdrojů nekonečný, nedávno o tom bylo rozsáhlá diskuse
2) Jednak šance na stejné heslo je naprosto minimální a jednak tomuto právě má zabránit dynamické saltování
Timy
Profil
Nox
2) Jednak šance na stejné heslo je naprosto minimální
Nejsem si jistý, jestli to chápu správně, ale jestli to má být myšleno tak, že je nepravděpodobné, že by dva různí uživatelé měli stejné heslo, tak je to IMHO velice nesprávný předpoklad. Existují i statistiky nejpoužívanějších hesel.
Nox
Profil
Timy
J, tak jsem to myslel...no, to bylo asi naivní si myslet, že lidi používají u výběru hesla mozek :/ ... jen nechápu "blink182" (narozdíl od "password" třeba)
Timy
Profil
Nox
http://www.youtube.com/watch?v=cnBBsggBAxE :-)
JanJanuska
Profil
Nox
ad 1) Aj práve preto sa teraz vyberá nová hashovacia funkcia. Akonáhle sa začnú objavovať kolízie(čo sa v md5 aj začali), bezpečnosť ide dolu vodou.
ad 2) Predtým sme diskutovali o jednom salte pre všetky heslá, práve preto som so srigim nesúhlasil.
Nox
Profil
Timy
eh :)
díky

JanJanuska
1)
a)
podle mě to u ne-perfektního hashování bez saltu z principu bez kolizí nejde, nemůžeš unikátně spojit celou nekonečnou množinu s konečnou množinou
ale opravte mě, jestli se pletu

b)
je spousta hashovacích funkcí kromě md5, ta je jen nejobyklejší...tady jich máš kvanta http://en.wikipedia.org/wiki/List_of_hash_functions
Timy
Profil
JanJanuska
ad 1) Aj práve preto sa teraz vyberá nová hashovacia funkcia. Akonáhle sa začnú objavovať kolízie(čo sa v md5 aj začali), bezpečnosť ide dolu vodou.
Kolize jsou přirozenou součástí hashovacích algoritmů. Dával jsem tady příklad triviální hashovací funkce. Složitější postupují „podobně“, jen je těch daleko kolizí méně apod. Není možné zobrazit do 128 bitů všechny možné řetězce tak, aby nevznikla žádná kolize. Když máš k dispozici 128 bitů, můžeš z toho vytvořit celkem 2^128 různých hashů. Jenže řetězců je teoreticky nekonečně mnoho. I kdybychom brali třeba jen řetězce o délce 160 bitů, tak to máš celkem 2^160 variací, což už je desetkrát více, než kolik prostoru ti poskytuje MD5.

Ve chvíli, kdy probíhá zobrazení M -> N, kde M > N, tak není možné to udělat bez kolizí. V případě MD5 je M = všechny reálné řetězce světa, N = všechny řetězce o délce 128 bitů.
JanJanuska
Profil
Nox
Tak kolízie vždy existovali aj existovať budú, nech je to akákoľvek hashovacia funkcia. Myslím, že tam nie je viac o čom diskutovať, ale ide o to, aby bolo veľmi nepravdepodobné, až (takmer) nemožné nájsť takúto kolíziu. Skrátka musí (mala by) vydržať tak dlho, kým budú zahashované dáta na toľko dôležité, aby ich chcel potencionálny útočník získať.
Je mi jasné, že md5 nie je jediná hashovacia funkcia, to bol len príklad. A ani by som nepovedal, že md5ka je (bola) najobvyklejšia.
edit
Timy
No ak by bolo jednoduché nájsť kolíziu, potom by hashovacie funkcie nemali vôbec zmysel a práve o to ide. Môže to byť hoci aj 512 bitová, ale kolízie môžu byť oveľa častejšie ako v inej, 128 bitovej.
Nox
Profil
JanJanuska
Myslel jsem v tomto konkrétním kontextu, z ostatních ji v něm vídávám nejvíc, i když není nejlepší
nightfish
Profil
ad hashovací funkce - http://diskuse.jakpsatweb.cz/index.php?action=vthread&topic=94401&forum=3&page=-1#8 (sem to kopírovat nebudu)
Timy
Profil
JanJanuska
No ak by bolo jednoduché nájsť kolíziu, potom by hashovacie funkcie nemali vôbec zmysel a práve o to ide.
Nechápu na co reaguješ nebo kde říkám opak. Neříkal jsem nic o složitosti nalezení kolize, jen to, že není možné udělat hashovací funkci bez kolizí, když je M > N.
« 1 2 »

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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