NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar

Člen
Avatar
:15.12.2013 15:07

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
Avatar
Snorlax
Tvůrce
Avatar
Snorlax:15.12.2013 16:02

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
15.12.2013 16:02
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Avatar
Uživatel sítě :15.12.2013 16:40

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
15.12.2013 16:40
Chybami se člověk učí, běžte se učit jinam!
Avatar
Odpovídá na Uživatel sítě
Vojtěch Mašek (Woyta):15.12.2013 17:04

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
15.12.2013 17:04
Výraz "to nejde" není v mém slovníku
Avatar
Snorlax
Tvůrce
Avatar
Odpovídá na Vojtěch Mašek (Woyta)
Snorlax:15.12.2013 17:06

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
15.12.2013 17:06
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Snorlax
David Hartinger:15.12.2013 17:07

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
New kid back on the block with a R.I.P
Avatar
Snorlax
Tvůrce
Avatar
Odpovídá na David Hartinger
Snorlax:15.12.2013 17:08

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
Vojtěch Mašek (Woyta):15.12.2013 17:11

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):15.12.2013 17:14

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 Hartinger
Vlastník
Avatar
Odpovídá na Snorlax
David Hartinger:15.12.2013 17:19

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
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:15.12.2013 17:22

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

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

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
15.12.2013 17:22
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:15.12.2013 17:37

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
15.12.2013 17:37
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:15.12.2013 17:39

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
Tvůrce
Avatar
Odpovídá na David Hartinger
Snorlax:15.12.2013 17:42

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
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ý:15.12.2013 17:45

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
Tvůrce
Avatar
Odpovídá na Michael Olšavský
Kit:15.12.2013 17:47

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
Tvůrce
Avatar
Odpovídá na Michael Olšavský
Snorlax:15.12.2013 17:51

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
15.12.2013 17:51
Kdo chce pochopit, pochopí. Kdo dělá že chce pochopit, může pouze dělat, že pochopil...
Avatar
Uživatel sítě :15.12.2013 17:53

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
Tvůrce
Avatar
Odpovídá na Snorlax
Kit:15.12.2013 17:53

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

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

Člen
Avatar
:15.12.2013 17:55

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
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na
David Hartinger:15.12.2013 17:57

Hash není šifra, přečti si tohle: http://www.itnetwork.cz/…ladani-hesel

Nahoru Odpovědět
15.12.2013 17:57
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na
Kit:15.12.2013 17:59

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
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:15.12.2013 18:01

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
15.12.2013 18:01
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar

Člen
Avatar
Odpovídá na Kit
:15.12.2013 18:01

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
15.12.2013 18:01
Avatar
Silvinios
Tvůrce
Avatar
Odpovídá na Kit
Silvinios:15.12.2013 18:24

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
Tvůrce
Avatar
Odpovídá na Silvinios
Kit:15.12.2013 18:34

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
Tvůrce
Avatar
Odpovídá na Kit
Silvinios:15.12.2013 19:11

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
Tvůrce
Avatar
Odpovídá na Silvinios
Kit:15.12.2013 19:35

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
Tvůrce
Avatar
Odpovídá na Kit
Silvinios:15.12.2013 20:09

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:15.12.2013 23:05

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
15.12.2013 23:05
Harmonie těla a duše, to je to, oč se snažím! :)
Avatar
Kit
Tvůrce
Avatar
Odpovídá na MrPabloz
Kit:16.12.2013 6:07

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:16.12.2013 8:27

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
16.12.2013 8:27
Harmonie těla a duše, to je to, oč se snažím! :)
Avatar
TomBen
Tvůrce
Avatar
Odpovídá na MrPabloz
TomBen:16.12.2013 10:04

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 I
Člen
Avatar
Ori I:16.12.2013 10:22

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 Hartinger
Vlastník
Avatar
Odpovídá na Ori I
David Hartinger:16.12.2013 10:36

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
New kid back on the block with a R.I.P
Avatar
coells
Tvůrce
Avatar
Odpovídá na David Hartinger
coells:16.12.2013 11:12

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 Hartinger
Vlastník
Avatar
Odpovídá na coells
David Hartinger:16.12.2013 11:17

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
New kid back on the block with a R.I.P
Avatar
coells
Tvůrce
Avatar
Odpovídá na David Hartinger
coells:16.12.2013 12:11

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
16.12.2013 12:11
Avatar
coells
Tvůrce
Avatar
Odpovídá na David Hartinger
coells:16.12.2013 12:48

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
16.12.2013 12:48
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na coells
David Hartinger:16.12.2013 13:02

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
New kid back on the block with a R.I.P
Avatar
TomBen
Tvůrce
Avatar
Odpovídá na coells
TomBen:16.12.2013 13:04

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
Tvůrce
Avatar
TomBen:16.12.2013 13:18

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
Tvůrce
Avatar
Odpovídá na TomBen
coells:16.12.2013 15:57

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
Tvůrce
Avatar
Odpovídá na David Hartinger
coells:16.12.2013 16:07

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 Hartinger
Vlastník
Avatar
Odpovídá na coells
David Hartinger:16.12.2013 16:11

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
New kid back on the block with a R.I.P
Avatar
coells
Tvůrce
Avatar
Odpovídá na David Hartinger
coells:16.12.2013 16:44
  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
16.12.2013 16:44
Avatar
Zdeněk Bauer
Tvůrce
Avatar
Zdeněk Bauer:16.12.2013 17:06

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
Tvůrce
Avatar
Odpovídá na Zdeněk Bauer
coells:16.12.2013 18:12

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 Hartinger@, 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
16.12.2013 18:12
Avatar
coells
Tvůrce
Avatar
Odpovídá na David Hartinger
coells:16.12.2013 18:18

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
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 50 zpráv z 58.