Avatar
Michal Vašíček
Tým ITnetwork
Avatar
Michal Vašíček:

Hoj,
při nastavování mého MC serveru a házení všech dat do databáze jsem narazil na šifrování whirlpool. Co to je, a dá se do toho nějak zašifrovat text v php?

Odpovědět 15.12.2013 15:07
Příspěvek může obsahovat stopy arašídů, sarkasmu a sóji.
Avatar
Snorlax
Redaktor
Avatar
Snorlax:

http://www.php.net/…ion.hash.php
(ctrl + F - "whirlpool")

$myHash = hash( 'whirlpool', $salt . $password );

Ale netestoval jsem to...

Editováno 15.12.2013 16:03
Nahoru Odpovědět  +1 15.12.2013 16:02
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Avatar
Marek Z.
Redaktor
Avatar
Marek Z.:

Zde máš příklady hashů:

http://www.php.net/…ion.hash.php#…

Bohatě stačí 'sha512', md 2 až 5 už je prolomené.

Ještě ti doporučuji aby jsi hash osolil: http://www.php.net/…on.crypt.php#…

Editováno 15.12.2013 16:40
Nahoru Odpovědět  -2 15.12.2013 16:40
Chybami se člověk učí, běžte se učit jinam!
Avatar
Odpovídá na Marek Z.
Vojtěch Mašek (Woyta):

Prolomené to přímo není, ale existuje spousta databází různých řetězců a příslušných hashů, kde se dá dobře hledat a lámat zabezpečení hrubou silou.

Nahoru Odpovědět  +2 15.12.2013 17:04
Výraz "to nejde" není v mém slovníku
Avatar
Snorlax
Redaktor
Avatar
Odpovídá na Vojtěch Mašek (Woyta)
Snorlax:

se solí jsou ale podle mě neprolomitelné ne? kdy mám třeba nick a heslo.
heslo "osolím" (mě to vždy rozesměje :D ) nickem a to už je docela dost bezpečný ne?

Nahoru Odpovědět  +1 15.12.2013 17:06
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Snorlax
David Čápka:

A pak si změní nick a máš problém :) Sůl musí být vždy zvlášť.

Nahoru Odpovědět 15.12.2013 17:07
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Snorlax
Redaktor
Avatar
Odpovídá na David Čápka
Snorlax:

změní si nick? tak mu vygeneruju novej hash, to snad neni takovej problém ne? :D

Nahoru Odpovědět 15.12.2013 17:08
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Avatar
Odpovídá na Michal Vašíček
Vojtěch Mašek (Woyta):

Trochu jsme se odchýlili od původní otázky, je to hashovací algoritmus, což znamená, že už ze své podstaty nejde zpětně rozšifrovat, hashe se používají pro kontrolní součty, ukládání hesel apod... proto je pro předání zprávy nepoužitelný

Nahoru Odpovědět 15.12.2013 17:11
Výraz "to nejde" není v mém slovníku
Avatar
Odpovídá na Snorlax
Vojtěch Mašek (Woyta):

Pokud si k tomu vytvoříš ještě vlastní solící algoritmus tak by to asi nemělo být možné v nějakém rozumném čase zlomit (míň jak tři miliardy let :D )

Nahoru Odpovědět 15.12.2013 17:14
Výraz "to nejde" není v mém slovníku
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Snorlax
David Čápka:

Je to problém, když hash děláš z nicku a hesla. Ve chvíli změny nicku to ehslo už nemáš.

Nahoru Odpovědět 15.12.2013 17:19
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Bez znalosti hesla stejně ten nick nezměníš, takže je to jedno.

Nahoru Odpovědět  -1 15.12.2013 17:22
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Snorlax
Redaktor
Avatar
Snorlax:

Já v tom nevidím problém... Mám uživatele, jeho heslo je uložený jako hash, kde je heslo, a jako sůl mám nick... Mám tedy nějaký hash... Uživatel si změní nick... Na "potvrzení", že je účet jeho zadá i heslo... Pochopitelně zjistím jestli je heslo platné, a pokud ano, přepíšu mu nick. A jelikož vím jak nick, tak heslo, můžu mu vytvořit i nový hash.
Ale tak dál to tu řešit nebudem, diskuze neni o tomhle neni :D

Editováno 15.12.2013 17:23
Nahoru Odpovědět  +1 15.12.2013 17:22
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Není to jedno. Jako přihlášený si můžeš změnit nick aniž bys měnil nebo bezprostředně předtím zadával heslo.

Nahoru Odpovědět  +1 15.12.2013 17:37
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

To je chybné chování aplikace.

Nahoru Odpovědět 15.12.2013 17:39
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Snorlax
Redaktor
Avatar
Odpovídá na David Čápka
Snorlax:

A co je špatného na tom, že při změně nicku musíš zadat heslo? Hesla budou ve větším bezpečí díky originální soli u každého a uživatel bude mít pocit (a podle mě právoplatný), že mu to jen tak nikdo nezmění...

Nahoru Odpovědět  +1 15.12.2013 17:42
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Avatar
Odpovídá na Snorlax
Michael Olšavský:

Taková sůl mi nepřijde zrovna nejbezpečnější ;) měl by to být složitější systém. Takhle když ti na to přijdou...

 
Nahoru Odpovědět 15.12.2013 17:45
Avatar
Kit
Redaktor
Avatar
Odpovídá na Michael Olšavský
Kit:

K takové soli se přidává ještě permanentní sůl, která se v aplikaci nevyskytuje.

Nahoru Odpovědět 15.12.2013 17:47
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Snorlax
Redaktor
Avatar
Odpovídá na Michael Olšavský
Snorlax:

tak pokud to chceš mí über-super-mega-ultimate-bezpečný, tak jako sůl dáš hash spojení: "nick+mail+da­tum_registrace+tex­t(třeba název stránky)+id_u­živatele"... To už ti přijde dostatečně bezpečné? :D

Nahoru Odpovědět  ±0 15.12.2013 17:51
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Avatar
Marek Z.
Redaktor
Avatar
Marek Z.:

Např. v PHP fusionu má každý vygenerovaný originální sůl a na admin heslo také zvlášť nepletu-li se?

Nahoru Odpovědět 15.12.2013 17:53
Chybami se člověk učí, běžte se učit jinam!
Avatar
Kit
Redaktor
Avatar
Odpovídá na Snorlax
Kit:

Přitom jako sůl de facto stačí id uživatele...

Nahoru Odpovědět  +1 15.12.2013 17:53
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Michal Vašíček
Tým ITnetwork
Avatar
Michal Vašíček:

Takto. Jde mi o to, že autorizační plugin ukládá hesla "zašifrovaná" (hrozně rád tomu tak říkám) právě whirlpoolem. A já se na webu potřebuju přes to, co uložil plugin přihlásit do webu.
sdraco: já vím že ne, ale prostě tomu tak říkám...

Editováno 15.12.2013 17:58
Nahoru Odpovědět 15.12.2013 17:55
Příspěvek může obsahovat stopy arašídů, sarkasmu a sóji.
Avatar
David Čápka
Tým ITnetwork
Avatar
Nahoru Odpovědět 15.12.2013 17:57
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Michal Vašíček
Kit:

A v čem je problém? Při autentizaci zašifruješ zadané heslo a výsledný řetězec porovnáš se stejně zašifrovaným heslem v DB.

Nahoru Odpovědět 15.12.2013 17:59
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Zrovna na té stránce máš autentizační proces chybně. Heslo se z databáze vůbec nevytahuje, porovnává se přímo v ní.

Nahoru Odpovědět  +1 15.12.2013 18:01
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Michal Vašíček
Tým ITnetwork
Avatar
Odpovídá na Kit
Michal Vašíček:

Ano. Mě vlastně šlo o to, co ukrývá už druhý příspěvek :D
/EDIT Já to blbě napsal, já vím, že se porovnává a nevytahuje.

Editováno 15.12.2013 18:04
Nahoru Odpovědět  +1 15.12.2013 18:01
Příspěvek může obsahovat stopy arašídů, sarkasmu a sóji.
Avatar
Silvinios
Redaktor
Avatar
Odpovídá na Kit
Silvinios:

Co je chybně? Pokud jsou v databázi uloženy sůl i hash, musíš záznam nejprve načíst, abys byl vůbec schopen ze zadaného hesla hash spočítat. Jakmile je záznam už jednou načtený, je zbytečné se znovu dotazovat databáze a testovat shodu.

Pokud je uživatelské jméno neplatné, předejte se zbytečným výpočtům.

Souhlasím s sdracem, že používat jako sůl ID nebo jméno uživatele způsobuje problémy. Nevidím v tom žádnou výhodu, jen nevýhody.

Editováno 15.12.2013 18:25
 
Nahoru Odpovědět 15.12.2013 18:24
Avatar
Kit
Redaktor
Avatar
Odpovídá na Silvinios
Kit:

Nemusíš načítat vůbec nic. Stačí jediný SELECT, jehož výsledkem je id a další atributy hráče. Heslo ani sůl z databáze tahat nepotřebuji. Pokud heslo nesedí, nedostanu žádný výsledek, ušetřím tedy komunikaci.

Editováno 15.12.2013 18:38
Nahoru Odpovědět 15.12.2013 18:34
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Silvinios
Redaktor
Avatar
Odpovídá na Kit
Silvinios:

Můžeš prosím uvést příklad, jak by takový SELECT vypadal? Asi nerozumím.

 
Nahoru Odpovědět 15.12.2013 19:11
Avatar
Kit
Redaktor
Avatar
Odpovídá na Silvinios
Kit:

Posílám to i s kouskem PHP:

<?php
$auth = $pdo->prepare("SELECT id FROM user WHERE name=? AND password=SHA1(CONCAT(?, salt))");
$auth->execute($_POST["user"], $_POST["pass"]);
if ($dotaz->rowCount() == 0)
    throw new Exception("Chybné jméno nebo heslo");
$user = $auth->fetch(PDO::FETCH_ASSOC);
Nahoru Odpovědět 15.12.2013 19:35
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Silvinios
Redaktor
Avatar
Odpovídá na Kit
Silvinios:

Díky za příklad. Myslím, že algoritmus je stejný jako v článku, pouze jsi přesunul logiku do databáze. To samozřejmě udělat lze a někdy to může být i výhodné.

Článek byl míněn obecně a nepředpokládá použití databáze MySQL.

 
Nahoru Odpovědět 15.12.2013 20:09
Avatar
MrPabloz
Člen
Avatar
MrPabloz:

Nedávno jsem byl na přednášce o php a tam týpek ukazoval program který za dvě sekundy rozšifroval md5 heslo z malých a velkých písmen o min velikosti 5 :) takže nevidím tady nikde to, že by to nešlo rozšifrovat + povídal o tom, že takové heslo ještě se solí se dá taky docela rychle, že ted už je jak md5 tak sha512 rozšifrovatelne během chvíle. Nyní by se mělo používat bcrypt nebo tak něco :)

Nahoru Odpovědět  -2 15.12.2013 23:05
Harmonie těla a duše, to je to, oč se snažím! :)
Avatar
Kit
Redaktor
Avatar
Odpovídá na MrPabloz
Kit:

JPP. Kdyby to bylo tak jednoduché, byl by kolem toho mnohem větší poprask, než "tam týpek ukazoval".

Pokud si někdo zvolí slabé heslo, tak mu nepomůže ani bcrypt.

Editováno 16.12.2013 6:09
Nahoru Odpovědět 16.12.2013 6:07
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
MrPabloz
Člen
Avatar
MrPabloz:

Tu nejde o slabé heslo, tu jde o to že ta rychlost rozšifrování je vysoká když zadá min. 5 čísel a z malých a velkých písmen. mělo to něco přes 20M slov za sekundu. Jako ano, pokud má člověk slabě heslo tak jo, je to hned. Ale právě ukazoval na tom příkladu to, že md5 ani sha512 už se nedoporučuje z toho duvodu, že byly prolomeny a že pokud fakt bude někdo chtít bezpečný system bez děr, měl by používat něco, co ještě nebylo.

Nahoru Odpovědět  -1 16.12.2013 8:27
Harmonie těla a duše, to je to, oč se snažím! :)
Avatar
TomBen
Redaktor
Avatar
Odpovídá na MrPabloz
TomBen:

Je hrozně zavádějící označovat md5 jako šifru. Nahlížej na to
raději podobně jako na kontrolní součet. Když si budu myslet
tři čísla od 0 do 9 a oznámím ti jejich součet, poměrně málo
pokusů ti stačí na to, abys odhalil, jaká čísla jsem si myslel.
Když ti ale oznámím součet padesáti čísel, budeš mít mnohem
větší problém. Ale pořád to půjde, když tě nechám dělat tolik
pokusů, kolik budeš chtít. Když ti ale dám jen tři pokusy,
prakticky nebudeš mít šanci. A právě v tomto smyslu se md5
používají. K rychlému ověření shody. Pokud ti nějaký člověk
ukázal, že heslo o pěti znacích rychle prolomí, je to proto,
že měl libovolně mnoho pokusů. Nic víc.

Nahoru Odpovědět 16.12.2013 10:04
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
Ori
Člen
Avatar
Ori:

najlepsie je pouzivat hashovacie algoritmy, ktore su narocne na vypocty(bcrypt). Mozno spomalia prihlasovanie uzivatela, ale v pripade uniknutia DB (hashov) takmer znemoznia desifrovanie. Samozrejme pouzivanie SALTu tiez sa v tomto pripade silno odporuca :)

 
Nahoru Odpovědět 16.12.2013 10:22
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Ori
David Čápka:

Dá se také hashovat iterativně, spustíš třeba md5ku se solí v cyklu a výsledek dáš do SHA512 s další solí, řeší to ten samý problém.

Nahoru Odpovědět 16.12.2013 10:36
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
coells
Redaktor
Avatar
Odpovídá na David Čápka
coells:

Bohužel, neřeší, složitost problému SHA512(heslo) je úplně stejná jako složitost SHA512(for i in 0..100 x = MD5(x)).

 
Nahoru Odpovědět 16.12.2013 11:12
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na coells
David Čápka:

Asymptoticky je to sice stejné, ale prakticky to trvá mnohem, mnohem déle, když zvolíš konstantu v řádu stovek a útočníkovi velmi znepříjemníš život. Sehnat 300x výkonnější procesor přeci jen není tak snadné. Časovou složitost bcrypt neznám.

Nahoru Odpovědět 16.12.2013 11:17
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
coells
Redaktor
Avatar
Odpovídá na David Čápka
coells:

Zásadní rozdíl je v tom, že amatérismus do security nepatří :-)

  1. sehnat 300x výkonnější procesor je snadné
  2. představy amatérů se liší od představ specialistů
  3. znalosti amatérů se liší od znalostí specialistů
  4. bcrypt je navržený profesionály, aby byl bezpečný

Dále existuje několik předpokladů:

  1. útočník je váš nejlepší kamarád a ví minimálně to, co vy
  2. útočník má přístup k 3000x rychlejšímu hardwaru
  3. útočník je geniální matematik a kryptoanalytik

Libovolné řešení, které navrhnete, viz SHA512(for 0..1000 MD5(salt(pswd))) je stejně bezpečné jako základní řešení SHA512(salt(pswd)) z toho důvodu, že už SHA512 bylo navrženo jako bezpečné. Laický názor je, že když smícháme dvě bezpečná řešení, dostaneme bezpečné řešení na druhou, ale opak je pravdou.

Sorry, že to tak musím říct, ale v tomhle vláknu je spousta blábolů. Viz TomBenovo vysvětlení "kontrolní součtu" - mně by na jeho příklad stačil jeden tip a budu vědět řešení (a dokonce i optimální), protože jsem matematik. Nebo Snorlax, který si plete pojmy o dojmy a plácá pátou přes devátou.

Ze základů hashovacích funkcí:

  1. hledáme jednosměrnou funkci F(x) = H
  2. funkce musí být prostá
  3. funkce by měla být na
  4. range funkce je 2^K, kde K je zvolená konstanta
  5. nesmí existovat postup, který vede ke snížení K

Například MD5 a SHA1 byly zkompromitovány, nebyly rozbity. Rozdíl je v tom, že existuje důkaz pro porušení pravidel (b) a (e), ale není známý postup pro nalezení řešení jednosměrné funkce v čase lepším než O(2^x). V případě MD5 se povedlo drasticky snížit K a zmenšit doménu hledaných hodnot.

Jakákoliv vaše snaha o "vylepšení" takové funkce F vede zpravidla k porušení některého z pravidel. Všechny kryptografické algoritmy se navrhují s těmito ohledy a pečlivě se testují celé měsíce, než se dojde k uspokojivému výsledku.

Pokud použijete SHA(salt(heslo)), budete mít nejvyšší úroveň bezpečnosti, jakou sami dokážete dosáhnout.

Zájemci by si měli poslechnout přednášku od profesionálů, jak hackovali XBOX: http://www.youtube.com/watch?…

 
Nahoru Odpovědět  +1 16.12.2013 12:11
Avatar
coells
Redaktor
Avatar
Odpovídá na David Čápka
coells:

Napadl mě příklad, na kterém si můžeme hezky vysvětlit, proč se nemají dělat vlastní řešení.

Budu mít vlastní funkci F, která vezme vstup a zakóduje ho ve dvou fázích:

  1. prohodí prvky na sudých a lichých pozicích
  2. provede posunutí směrem doleva a první prvek dá nakonec

Jedná se o velice jednoduchou funkci pro ukázkový příklad, ale SHA a AES algoritmy fungují na velice podobném principu.

F(12345678):
1) 12345678 -> 21436587
2) 21436587 -> 14365872

F(12345678) = 14365872
F(14365872) = 16385274
F(16385274) = 18325476
F(18325476) = 12345678 ... ups

Takže platí, že F(F(F(F(x)))) = x, ale nevadí.

Co se stane, když udělám H = F(for i in 0..1001 F(x))? Platí H = F(x)!

Tohle je důvod, proč vlastní "vylepšení" algoritmů nezvyšují bezpečnost. Zvyšují pouze vlastní pocit o bezpečnosti.

 
Nahoru Odpovědět  +2 16.12.2013 12:48
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na coells
David Čápka:

Máš samozřejmě pravdu. Netvrdil jsem, že se zvýší bezpečnost toho hashe, ale doba jeho prolomení. Docela by mě zajímala časová složitost lepších algoritmů, jejichž implementace jsou běžně k použití.

Nahoru Odpovědět 16.12.2013 13:02
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
TomBen
Redaktor
Avatar
Odpovídá na coells
TomBen:

Myslím si tři čísla jejich součet je 13.
Jaká to jsou?
Máš jeden tip, použij ten svůj optimální. :-)

Nahoru Odpovědět 16.12.2013 13:04
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
TomBen
Redaktor
Avatar
TomBen:

Musím už jít.
Kdyby se to tu později nějak vyvíjelo
a bylo by na mě, aby něco odpověděl, tak po 22.hod.

Nahoru Odpovědět 16.12.2013 13:18
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
coells
Redaktor
Avatar
Odpovídá na TomBen
coells:

9 4 0 a je to ten, ktery sis myslel, protoze pracujeme s hashem a nikde nemas sva cisla ulozena, takze nemuzes dokazat, ze to neni pravda.

 
Nahoru Odpovědět 16.12.2013 15:57
Avatar
coells
Redaktor
Avatar
Odpovídá na David Čápka
coells:

Ani doba "prolomeni" se nezvysi, protoze funkce je jednosmerna a prolomit ji neumime. Jak jsem psal, dulezita je velikost range a domeny funkce a tenhle postup je nezvetsuje, pouze aplikuje urcitou transformaci. Takovy cyklus se uz deje uvnitr SHA a povazuje se za bezpecny, takze neni duvod ho jeste pridavat "ven". Pokud se najde postup pro rozbiti vnitrniho cyklu, pak vnejsi cyklus ztrati take na vyznamu.

 
Nahoru Odpovědět 16.12.2013 16:07
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na coells
David Čápka:

Tady jde o situaci, když ti někdo ukradne celý backend a začne dělat dictionary attacky na jednotlivá hesla. Obrany jsou dvě, hlavní je mít u každého hesla jinou sůl. Tím pádem pro zjištění n hesel musí začínat n krát od nuly. A tou druhou je docílit toho, aby takový útok trval co možná nejdéle. Když bude hash trvat pod milisekundy, tak to má velmi rychle. Jakým způsobem bys toto tedy řešil?

Nahoru Odpovědět 16.12.2013 16:11
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
coells
Redaktor
Avatar
Odpovídá na David Čápka
coells:
  1. snazit se, abys neprisel o cely backend naraz
  2. oddelene stroje, oddelene zalohovani
  3. sifrovani na urovni cele databaze
  4. sifrovani na urovni sloupcu

dale uz to, co pises

  1. solit hesla
  2. drzet algoritmus pro soleni v tajnosti
  3. SHA dle security specifikaci, zadna vlastni vylepseni

vetsinou dojde ke kradezi zaloh spise nez backendu, jeste casteji to byvaji primo zamestnanci, takze programatori nesmi byt admini, admini nesmi mit pristup ke zdrojakum

 
Nahoru Odpovědět  +1 16.12.2013 16:44
Avatar
Zdeněk Bauer
Redaktor
Avatar
Zdeněk Bauer:

Furt solit, ale čím když ne třeba nickem nebo IDčkem? Náhodným řetězcem který popřípadě ještě zahashujeme?

 
Nahoru Odpovědět 16.12.2013 17:06
Avatar
coells
Redaktor
Avatar
Odpovídá na Zdeněk Bauer
coells:

Popíšu ti způsob, jak lze zajistit trochu vyšší úroveň zabezpečení.

Optimálně použiješ dvě hodnoty:

  1. SALT-1 - 16 bytů vygenerovaných kryptograficky bezpečným algoritmem pro celou databázi
  2. SALT-2 - 16 bytů vygenerovaných kryptograficky bezpečným algoritmem pro každé heslo zvlášť
  • SALT-1 je natvrdo v kódu
  • SALT-2 se ukládá do databáze pro zpětné ověření

hash = SHA512(SALT-1 + heslo + SALT-2)

  1. postup pro solení je tajný
  2. SALT-1 je tajné, nejlépe uložené zvlášť a zašifrované pomocí OS

Pro útok, který popisuje David Čápka@, musí útočník:

  1. získat databázi obsahující hash a SALT-2
  2. získat kód a s ním tajný algoritmus na solení
  3. získat přístup k SALT-1, což znamená konfiguraci aplikace a fyzický přístup k backendu
 
Nahoru Odpovědět  +1 16.12.2013 18:12
Avatar
coells
Redaktor
Avatar
Odpovídá na David Čápka
coells:

Mimochodem, pokud by se útočníkovi podařilo projít všemi kroky, které popisuji výše, tak už je to ztracené a nemá smysl řešit hesla. V tuhle chvíli je volný přístup k libovolné (i šifrované) informaci v systému, jako jsou čísla kreditek, sociálního pojištění, bankovních účtů, atd.

 
Nahoru Odpovědět 16.12.2013 18:18
Avatar
Silvinios
Redaktor
Avatar
Odpovídá na coells
Silvinios:

Z přihrádkového principu plyne, že hashovací funkce být prostá nemůže.

 
Nahoru Odpovědět 16.12.2013 19:01
Avatar
coells
Redaktor
Avatar
Odpovídá na Silvinios
coells:

Matematicky nemůže, kryptograficky může. Kryptograficky prostá funkce je taková, pro kterou nelze nalézt kolizi, tedy f(x) == f(y) => x == y.

Jinak řečeno, MD5 přestala být prostá, což ji kompromitovalo. Ačkoliv je to matematický nesmysl, v kryptografii to smysl dává.

 
Nahoru Odpovědět 16.12.2013 19:04
Avatar
Silvinios
Redaktor
Avatar
Odpovídá na coells
Silvinios:

V tom případě bych raději používal termín bezkolizní (collission-free). Mohl bys prosím uvést zdroj, v kterém se hovoří o kryptograficky prostých funkcích?

 
Nahoru Odpovědět 16.12.2013 19:12
Avatar
coells
Redaktor
Avatar
Odpovídá na Silvinios
coells:

Mě to takhle učil šéf-architekt v bývalé firmě, takže aktuální zdroje, bohužel, nemám.

 
Nahoru Odpovědět 16.12.2013 19:18
Avatar
TomBen
Redaktor
Avatar
Odpovídá na coells
TomBen:

Proč jsi zvolil zrovna tuhle kombinaci?
Je sice špatně, ale mě víc zajímá důvod. To s tím dokazováním
je dost podivná věta. Skoro ses trefil. Kdybys trefil úplně,
klidně to přiznám. Dokazovat nepotřebuji nic, pokud ty
něco takového potřebuješ, můžem pokus zopakovat na jiných
číslech a já je někam uložím. Nicméně mi to přijde trapné.
Čísla byla správná, jen v jiném pořadí. Ovšem do pomyslného
trezoru by ses nedostal. Takže mám jen jeden dotaz.
Proč sis myslel, že je to optimální tip?

Nahoru Odpovědět 16.12.2013 23:28
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
coells
Redaktor
Avatar
Odpovídá na TomBen
coells:

Koukám, že to bereš osobně :-) Já mluvil v kontextu hashování.

Můj odkaz, že to nemůžeš dokázat vůbec není podivný, to je princip hashování. Jakmile jednou uděláš hash a uložíš ho, přijdeš o zdrojová data. Smyslem hashe je, abys nemohl prozradit to, co neznáš. Do trezoru jsem se dostal díky tomu, že součet mám správně, ne proto, že mám původní data a tím pádem nezáleží na tom, jestli něco přiznáš nebo ne. Nepleť si šifrování a hashování.

Můj tip je optimální, protože ho dokážu vytvořit rychleji, než jsi ty generoval hash.

 
Nahoru Odpovědět 16.12.2013 23:51
Avatar
TomBen
Redaktor
Avatar
Odpovídá na coells
TomBen:

Je docela těžké držet s tebou stejné téma. To, co tu všude okolo píšeš je pravda, ale ten způsob, jak s tím zacházíš ve slovním projevu, je zvláštní. V pokusu i dále jsme se zjevně minuli pochopením sebe navzájem a vzhledem k tomu, že rozdíl mezi hashem a šifrou chápu a chápal jsem už předtím, zřejmě nemělo smysl to vůbec dělat. Jako už i dřív to prostě vypadalo, že popíráš něco zcela zjevně pravdivého, ale byl to jen ten tvůj způsob vyjadřování, který mě čímsi mate.

Nahoru Odpovědět 17.12.2013 0:34
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
Silvinios
Redaktor
Avatar
Odpovídá na coells
Silvinios:

Banky a další instituce, pro které je bezpečnost opravdu důležitá, používají speciální (a také velmi drahý) hardware tzv. Hardware Security Module (HSM).

To se ale už bavíme o úplně jiném světě, než je provozování vlastního Minecraft serveru.

Vždy je třeba nejprve zvážit dopady případného útoku a protiopatření.

 
Nahoru Odpovědět  +1 17.12.2013 8:01
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 58 zpráv z 58.