• Komolytalan
    #27
    Nem (csak) az SHA-1 avult el, hanem a felhasználó által adott jelszó is. A sózás meg jellemzően szart se ér, mert ha már a db szervert felnyomták, akkor meglesz nekik a sózás kódja is.
    Jelenleg ami tény, hogy ami felhasználók által megadott jelszó jelentős részben megtalálható 30 USD-ért kapható MD5 (SHA-1, tökmind1 mi) adatbázisokban. Ezért van az hogy "ezek egyik fele az eredeti SHA-1 hash formájában, míg a másik már a visszafejtett, mindenki által olvasható változatban."
    Az a fele visszafejtett, ami:
    - túl rövid volt (8 karakter alatt),
    - megtalálható jelszó adatbázisban (pl weben 1x már valaki legenerálta a hashét.
    - Brute force-al azóta feltörték. Azért ha csak angol ABC kis/nagybetűk+számokat keresünk, akkor ez 8 karakteres jelszó esetén 62^8, azaz kurvasok. Ha 1 milliót tudunk ellenőrizni másodpercenként 1 gépen, és van egy 100ezer gépes zombi hálózatunk erre a célra, akkor is 2183 másodperc, ami több mint másfél nap. 1 jelszóért. Nem éri meg gépidőben.
    Szóval alapvetően random generált, legalább 8 karakteres jelszavakat kell használni, amiben van kis és nagybetű és szám. Mivel ezek jó eséllyel nincsenek meg táblázatban, a visszafejtésük meg sok-sok idő.

    Persze a tokenes/SMS-es azonosítás is ad plusz biztonsági szintet, de ez ma még jellemzően csak bankoknál elérhető, meg olyan helyen, ahol tényleg sokat veszíthet az ember (pl WoW-nál van tokenes azonosításra lehetőség). Azonban ezekben sem lehet 1000 százalékig megbízni, mert a token ugyanolyan pszeudorandom mint mondjuk az MD5, tokenenként változó kezdőértékkel, szóval onnan kezdve hogy a tokenes authentikáció elérhető mondjuk iPhone app-ként, már ismert az algoritmus, ezért törhető. SMS-nél meg ugye az adatfolyam lehallgatható.

    Egyébként a legjobb védekezés még mindig az lenne, ha normális fejlesztők készítenék ezeket az oldalakat. A legtöbb webes fejlesztő még ma is direktben nyúlják táblákhoz, ami eleve odabasz a biztonságnak. Normális helyen a webszerver egy olyan felhasználóval kapcsolódik az adatbázishoz, amelynek csak bizonyos tárolt eljárások futtatására van joga. Ezzel ugyebár kiküszöbölhető, hogy az "users" tábla olvasható legyen, így le se lehet menteni a felhasználói adatokat. Persze ehhez nem mysql kell, ami minden 256. logint automatikusan elfogad...