Miért segít a biztonságon az, hogy a jelszóval együtt tárolja az őt kódoló algoritmusra egyértelműen utaló karaktereket?
Mondjuk tanulságos volt a cikk abból a szempontból, hogy nekem nem jutott eszembe a hashfüggvény sebességének kihatása a biztonság kérdésére.
Ha minden egyes jelszót más karakterlánccal sózol, akkor minden egyes jelszó feltöréséhez másik szivárványtáblát kellene építenie a tolvajnak (ez pedig nem kis idő).
Míg ha csak egy fajta karakterlácot használsz sózáshoz, és ahhoz is hozzájut, akkor elég csak egy szivárványtáblát generálnia, és megtalálja benne az egyszerű jelszavak többségét.
Azt hiszem nem fejeztem ki magam eléggé jól az első körben. A sózás részével semmi problémám nincs. Engem az zavar a cikkben, hogy direkt hozzáfűzi a hash-hez a BLOWFISH-hez tartozó $2a karaktereket, ami engem kicsit zavar, ugyanis ha valaki megszerzi a hash-t, így tudja, hogy milyen algoritmus állította őt elő.
Idézem:
The resulting hash contains the algorithm ($2a), the cost parameter ($10), and the 22 character salt that was used. The rest of it is the calculated hash.
Valóban. Mondjuk annyival már nem nehéz kiegészíteni, hogy levegye az első 7 karaktert tárolás előtt, és akkor kevésbé árulkodó az adatbázis egyedül.
[szerk]
Ugyanakkor ha kellően lassúra állítjuk be az algoritmusunkat, és minden jelszót külön sózunk, a használt algoritmus ismeretében sem lesz kifizetődő a jelszavak feltörésére fordított idő, erőforrás.
[/szerk]
Egyrészt így működik az autentikáció szinte minden rendszerben és legjobb tudomásom szerint nem ez volt a biztonsági probléma sosem.
A másik oldalról ha ezt lehagyod, elveszted azt a lehetőséget, hogy esetleges hash algoritmus kompromittálódás esetén fájdalom mentesen átállj másra. Ez biztonsági szempontból szerintem sokkal nagyobb érv, mint az, hogy meg lehet tudni, hogy ahhoz az egy jelszóhoz milyen algoritmust használtál.
Ez nekem még mindig ködös egy kicsit. Attól még, hogy lecsapom a sztringből ezt a kulcsot, nyugodtan hozzáfűzhetem, esetleg ha nem tudom valami miatt pontosan, végigpróbálom az összes támogatott algoritmust és össze tudom vetni vele az eredményt. Nem értem, miért nehezítené 3, alapvetően fix karakter az átállást más algoritmusra.
De ezt tudjuk be a szűklátókörűségemnek.
Viszont a cikk alatt egy kommentelő megmondta a frankót. Aki megszerzi az adatbázist, illetve hozzáfér a szerverhez, beszúr egy naplózó kódot, ami eljuttatja hozzá a használt jelszavakat szövegesen, nem fog visszakereséssel bajlódni, csak ha direkt jelszavakra és nem egyéb személyes adatokra hajt.
A collisiont keveri a szerző a preimage-dzsel - collosion az, amikor tudsz generálni két olyan sztringet, aminek ugyanaz a hash-e. Jelszótöréshez ez eléggé hasznavehetetlen, preimage támadás meg nem ismert az md5 ellen.
Miért van az, hogy minél kevésbé ért valaki valamihez, annál magabiztosabb? A collision attack azt jelenti, hogy meg tudsz adni egy olyan algoritmust, aminek nincs bemenete, és a kimenete két string, amiknek ugyanaz a hash-e. Ezt fel lehet használni pl. digitális aláírás elleni támadásokra, de jelszótörésnél legfeljebb arra jó, hogy létrehozz egy olyan acoountot, amibe két különböző jelszóval lehet bejelentkezni (ettől a kilátástól a legtöbb website-üzemeltető nem fakad sírva). A tényleges jelszótöréshez olyan algoritmusra lenne szükség, ami bemenetként megkap egy jelszó hash-et, és kimenetként kiad egy stringet, aminek ugyanaz a hash-e. Ezt first preimage attack-nak hívják, és az MD5 ellen nem ismert ilyen támadás. Az egyetlen probléma vele, hogy túl gyors.
Azt hiszem öregszem, úgyhogy most eltekintek a további vitrioltól. Csak, hogy átlásd:
A hash “collision” occurs when two different data inputs generate the same resulting hash. The likelihood of this happening depends on which function you use.
Írja a cikk szerzője, bevezetve a collision fogalmát, majd bemutat egy preimage támadást a crc32() ellen. Ezt követően megállapítja, hogy egy kellően nagy értékkészletű függvényre van szükség, mint amilyen az MD5.
Remélem feltűnt, hogy még csak szó sem esett collision attackról.
Mindezek után előrukkolsz azzal, hogy a szerző összekeveri a collisiont a preimage-dzsel, én jelzem, hogy nem, bár még nem teljesen értem, hogy mi a problémád.
Erre te lekezelő hangon, – és ha már lovagolunk a fogalmakon, javítva az előzőleg amúgy pontatlan meghatározást – további magyarázat nélkül leírod ugyanazt, a mellesleg még mindig nem teljesen egyértelmű dolgot.
Jelzem, hogy még mindig nem nyert, erre írsz egy hozzászólást adekvát terminológiával és meghatározásokkal, amikből végre kiderül, hogy mi volt a problémád. Persze már beláttuk, hogy a szerző nem keverte a két fogalmat, lévén az egyiket nem is használta, te keverted ide.
A lekezelő megjegyzés nélkül mondjuk lehetett volna rögtön ez az első hozzászólás, és sokkal kevesebb karakter után kell fizetni a számlát.
For example, md5() might be suitable, as it generates 128-bit hashes. This translates into 340,282,366,920,938,463,463,374,607,431,768,211,456 possible outcomes. It is impossible to run through so many iterations to find collisions. However some people have still found ways to do this (see here).
... és a (see here) az md5 elleni collision támadásra linkel, ami a szerző állításával szemben teljesen alkalmatlan egy adott jelszóval ütköző sztring előállítására.
Amire a cikk nem tér ki: az, hogy mi számít kellően lassú algoritmusnak, a processzorok fejlődésével folyamatosan változik, tehát arra is gondolni kell, hogyan tudsz később áttérni lassabb jelszóra. Ha pl. a lassítás abból áll, hogy sima md5 helyett a jelszó+só 10000 md5 iterációját végzed el, és valamikor a jövőben át akarsz térni 100000 iterációra, akkor egyszerűen csak át kell futtatnod a meglévő hasheket 90000 iteráción. A bcryptnél ilyen lehetőség nincs, ha megváltoztatod a lassító faktort, szükséged lesz az eredeti jelszóra az új hash kiszámításához, a régi hash nem elég. Ez nem katasztrófa, mert lehet az áttérést a user bejelentkezésére időzíteni, amikor tudjuk a jelszót, de a rendszer bonyolultabb lesz tőle, többféle jelszó sémát kell tudnia kezelni egyidőben.
Miért segít a biztonságon az,
Mondjuk tanulságos volt a cikk abból a szempontból, hogy nekem nem jutott eszembe a hashfüggvény sebességének kihatása a biztonság kérdésére.
Több idő
Míg ha csak egy fajta karakterlácot használsz sózáshoz, és ahhoz is hozzájut, akkor elég csak egy szivárványtáblát generálnia, és megtalálja benne az egyszerű jelszavak többségét.
Azt hiszem nem fejeztem ki
Idézem:
Ebben van valami
[szerk]
Ugyanakkor ha kellően lassúra állítjuk be az algoritmusunkat, és minden jelszót külön sózunk, a használt algoritmus ismeretében sem lesz kifizetődő a jelszavak feltörésére fordított idő, erőforrás.
[/szerk]
Kell
A másik oldalról ha ezt lehagyod, elveszted azt a lehetőséget, hogy esetleges hash algoritmus kompromittálódás esetén fájdalom mentesen átállj másra. Ez biztonsági szempontból szerintem sokkal nagyobb érv, mint az, hogy meg lehet tudni, hogy ahhoz az egy jelszóhoz milyen algoritmust használtál.
Ez nekem még mindig ködös egy
De ezt tudjuk be a szűklátókörűségemnek.
Viszont a cikk alatt egy kommentelő megmondta a frankót. Aki megszerzi az adatbázist, illetve hozzáfér a szerverhez, beszúr egy naplózó kódot, ami eljuttatja hozzá a használt jelszavakat szövegesen, nem fog visszakereséssel bajlódni, csak ha direkt jelszavakra és nem egyéb személyes adatokra hajt.
A collisiont keveri a szerző
Nem keveri
Még egyszer, lassan:
Lassan
Miért van az, hogy minél
Sóhaj
Írja a cikk szerzője, bevezetve a collision fogalmát, majd bemutat egy preimage támadást a
crc32()
ellen. Ezt követően megállapítja, hogy egy kellően nagy értékkészletű függvényre van szükség, mint amilyen az MD5.Remélem feltűnt, hogy még csak szó sem esett collision attackról.
Mindezek után előrukkolsz azzal, hogy a szerző összekeveri a collisiont a preimage-dzsel, én jelzem, hogy nem, bár még nem teljesen értem, hogy mi a problémád.
Erre te lekezelő hangon, – és ha már lovagolunk a fogalmakon, javítva az előzőleg amúgy pontatlan meghatározást – további magyarázat nélkül leírod ugyanazt, a mellesleg még mindig nem teljesen egyértelmű dolgot.
Jelzem, hogy még mindig nem nyert, erre írsz egy hozzászólást adekvát terminológiával és meghatározásokkal, amikből végre kiderül, hogy mi volt a problémád. Persze már beláttuk, hogy a szerző nem keverte a két fogalmat, lévén az egyiket nem is használta, te keverted ide.
A lekezelő megjegyzés nélkül mondjuk lehetett volna rögtön ez az első hozzászólás, és sokkal kevesebb karakter után kell fizetni a számlát.
A szerző ezt írja: For
... és a (see here) az md5 elleni collision támadásra linkel, ami a szerző állításával szemben teljesen alkalmatlan egy adott jelszóval ütköző sztring előállítására.
Mit is ír
Azt állítja, hogy ennyi iteráción nem lehetséges végigmenni, hogy ütközéseket találjunk. Habár, van akinek mégiscsak sikerült.
Szerencsétlen fogalmazás, de nem állítja.
Amire a cikk nem tér ki: az,