ugrás a tartalomhoz

PHP crypt által visszaadott érték

Kérésre törölve 11. · 2011. Május. 15. (V), 17.15
Nézegetem pár órája a doksit, de nem értem: miért adja vissza a crypt függvény a "salt" értékét a kimeneten? Ha nem nekem kellene megadni, akkor érteném, de így, hogy én töltöm ki...
És ehhez kapcsolódva: nem gáz, ha az adatbázisban, a kódolt infó (pl. jelszó) mellé lerakom a létrehozásakor használt "só"-t? (tehát pl. az SHA256-tal használt crypt kimenetét 1:1-ben beírom a jelszó mezőbe)
 
1

Belekódolva

janoszen · 2011. Május. 15. (V), 18.13
A só bele van kódolva a hashbe, így ha a hashelt jelszót adod meg sónak, jó lesz összehasonlításra.
2

Na jó, de a só értékét én

Kérésre törölve 11. · 2011. Május. 15. (V), 19.25
Na jó, de a só értékét én tudom anélkül is, hogy ő visszaadná! Hiszen én írtam oda a paraméterei közé, nem ő generálta.
Ráadásul azzal, hogy hozzáfűzi plain textben a hash-hez, plusz munkát ad, mert
- ha nem akarom berakni a hash részeként mondjuk a user táblám jelszó mezőjébe, akkor le kell választani az eredményről
- ha úgy rakom bele a jelszó mezőbe, hogy a sót is tartalmazza, akkor ha valaki hozzájut a mező tartalmához, megkönnyítettem a betöréssel kísérletező dolgát, mert a kezébe adom a sót.

Valamit rosszul értelmezek?
3

Így működik

janoszen · 2011. Május. 15. (V), 23.50
A crypt() sokkal régebbre nyúlik vissza, mint a PHP, ezért annak megfelelő működést produkál. A cél az volt, hogy a sót és a hasht egy mezőben lehessen tárolni (mivel a plain text jelszavak kiváltására szolgált) és benne legyen az is, hogy milyen függvénnyel van hashelve a jelszó, hogy lehessen per felhasználó más és más hash algoritmust alkalmazni.

Kriptográfiailag a só értéke nem számít titkos adatnak, hiszem csak a szivárványtáblás jelszó törés ellen véd meg. Ennek felhasználónként egyedinek kell lennie és ismertnek kell lennie a jelszó sikeres ellenőrzéséhez. Ha az egész rendszerben egy sót használsz, akkor akár ne is használj sót, mivel szivárvány táblát egy adott sóra generálni nem sok meló.
4

Ezekszerint a

Kérésre törölve 11. · 2011. Május. 16. (H), 06.55
Ezekszerint a szivárványtáblákról hiányosak az ismereteim.
Úgy gondoltam, ezek bármikor újragyárthatóak _viszonylag_ gyorsan.

Titkosítás terén gyakorlatilag 0 ismerettel rendelkezem, csak valahogy úgy képzeltem, ha egy titkosított adatot védeni akarok, akkor a kódolásról igyekszem minél kevesebb információt elárulni a kíváncsiskodóknak.

Nem úgy terveztem, hogy azonos "só"-t használok minden jelszóhoz, pusztán az előállításuk algoritmusa lenne azonos. Például a jelszó módosításának időpontja, esetleg a felhasználó nevének pár karaktere, ilyesmi.
Szóval olyan karakterek, amik egyébként ott vannak a kódolt mező mellett, de úgy, hogy a forráskód nélkül nem lehet egykönnyen kitalálni. Ezért értetlenkedtem.

Köszi.
5

a szivarvanytabla egy elore

Tyrael · 2011. Május. 16. (H), 17.27
a szivarvanytabla egy elore eloallitott "jelszo -> hash" adatbazis, ahol a -> az adott hash algoritmus altal a jelszobol eloallitott ertek.

ezzel nagysagrendileg gyorsitani lehet a brute-force/dictionary attack tipusu tamadasokat, mert nem minden jelszora kell az osszes kombinaciot kigeneralnod, hanem gyakorlatilag csak egy B-tree-ben keresel, jo esetben a memoriaban.

ehhez kepest ha megsozod a jelszot, akkor (ha megfeleloen eros/hosszu a jelszo,) akkor:
- ha nem ismered a so-t, akkor nagysagrendileg nagyobb rainbow tabla kell, hogy megtalald a plain alakokat, es mivel nem tudsz semmit a so-rol, ezert nem biztos, hogy rajosz, hogy a plain alak melyik resze volt az eredeti jelszo, mi volt a so(ha csak konkatenaltad a jelszot, meg a sot, akkor azert ki lehet talalni)
- ha mar ismered a sot (akar azert mert ott van a db dumpodban, akar mert az elozo modszerrel visszafejtettel parat), es azt is, hogy hogyan kell a sot a plain jelszohoz adni, akkor kigeneralhatsz egy kifejezetten ilyen algoritmushoz tartozo rainbow tablat, amiben mar megint gyorsan tudsz keresni.
- ha viszont minden jelszohoz eltero salt tartozik, akkor hiaba ismered a salt-ot, minden egyes jelszohoz ki kellene generalnod a rainbow tablat, ami gyakorlatilag azt jelenti, hogy nincs ertelme rainbow tablat hasznalni.


http://en.wikipedia.org/wiki/Salt_(cryptography)

Tyrael
6

Köszi

Kérésre törölve 11. · 2011. Május. 17. (K), 07.19
Köszi!
Tehát a sózás elsősorban nem egy-egy hash védelmére való, hanem arra, hogy a jelszó hash-eket tartalmazó adatbázisból nehezebb legyen kiválogatni a szivárványtáblákban megtalálható mintákat.
Hm. Kicsit másképp képzeltem.
7

vegso soron 1-1 jelszot is

Tyrael · 2011. Május. 17. (K), 09.12
vegso soron 1-1 jelszot is vedessz azzal, hogy a sozott alakbol kepzett hash-t csak egyesevel tudod brute-force-olni.
de nagyjabol errol van szo, igen.

Tyrael