Miért van szükség egy hash függvény, és hogyan kell tartani a jelszavakat titokban
Időről időre tetszik, akár nem, de a betörés fordul elő az adatbázis-kiszolgálók. Ezt szem előtt tartva, fontos, hogy biztos, hogy a bizalmas adatokat, például jelszavakat, nem hozzák nyilvánosságra. Ma fedezi a téma a jelszó hash és védelmi intézkedések a webes alkalmazás.
Cryptology egy meglehetősen összetett téma, amit én egyáltalán nem egy szakértő. A mai napig, a különböző egyetemek és biztonsági szervezetek foglalkozó kutatásokat ezen a területen.
Ebben a cikkben megpróbálom meghatározza a lehető legegyszerűbb legyen, és szilárd jelszó tárolási mód a webes alkalmazások
Hashing átalakítja az adatokat egy sor karakterlánc és integer elemek.
Ez annak köszönhető, hogy az egyirányú hash. „Egyoldalú”, hogy a termék inverz transzformációs nagyon jól, túl nehéz, vagy akár lehetetlen.
A leggyakoribb hash függvény az MD5 ():
Az md5 (), akkor mindig kap eredményeként 32 karakter hosszúságú. De ezek a karakterek hexadecimális; technikailag hash lehet egy 128-bites egész. Tudod, hogy az md5 () függvény és a sorok száma tetszőleges hosszúságú, de a kimenet mindig az eredményt 32 karakter. Már ez a tény önmagában is jó bizonyíték arra, hogy ez a „egyirányú” funkciót.
Normál regisztrációs folyamat:
- A felhasználó kitölti a regisztrációs űrlapot, beleértve a „Jelszó” mezőbe.
- A szkript felvezető helyezi az adatokat az adatbázisba.
- Felvétel előtt az adatbázis, a jelszó hash függvény feldolgozása.
- Az eredeti érték a jelszó nem használható.
Bejelentkezési folyamat:
- A felhasználó megadja a felhasználónevét és jelszavát.
- A szkript felvezető hash a jelszót, amelyet a felhasználó által bevitt.
- A szkript egy rekordot az adatbázisban, és elolvassa az érték a jelszót tárolja azt.
- Jelszó az adatbázis és a jelszó a felhasználó által beírt összehasonlítjuk, és ha azok megegyeznek (titkosított formában), a felhasználó engednek be a rendszerbe.
Jelszó hash folyamat később magyarázzuk ezt a cikket.
Figyeljük meg, hogy az eredeti értékének a jelszó nem tárolja sehol. Ha az adatbázis lesz a támadók, akkor nem lehet látni a jelszavakat, nem igaz? De nem egészen. Nézzük meg a lehetséges „lyukak”.
„Ütközés” merülnek fel, amikor tördeljük a két különböző típusú adatokat ugyanazt az eredményt. Tulajdonképpen ez attól függ, milyen működnek használ.
Hogyan kell használni?
Például, láttam néhány régebbi szkriptek ahol crc32 () függvényt hash a jelszót. Ez a függvény az eredményt, mint a 32-bites egész. Ez azt jelenti, hogy a kimenet lehet csak 2 ^ 32 (vagy 4294967296) opciók.
Let zaheshiruem jelszó:
Most játszunk egy gazember, aki ellopta az adatbázis együtt kivonatolt jelszót. Nem vagyunk képesek átalakítani 323322056 át „supersecretpassword” azonban, hála egy egyszerű script, akkor válasszon másik jelszót, amely hashelt lesz pontosan ugyanaz, mint az egyik, hogy az adatbázisban:
Ez a szkript természetesen időt vesz igénybe, de a végén visszatér a húr. Most már tudjuk használni a húr, amely megkapta - ahelyett, hogy „supersecretpassword” -, amely lehetővé teszi számunkra, hogy adja meg a rendszer, mint a felhasználót, hogy volt a jelszó.
Például itt van a script vissza néhány perc múlva megpillantom „MTIxMjY5MTAwNg ==”. Nézzük teszt:
Hogyan lehet ezt megelőzni?
Ma még a legalapvetőbb otthoni számítógép, akkor a több milliárd hash függvények a második. Ezért van szükség egy hash függvény, amely létrehozta a lehető legnagyobb értéket.
Például lehet használni MD5 (), amely létrehozza a 128-bites hash. Így választási lehetőségek egyre inkább 340.282.366.920.938.463.463.374.607.431.768.211.456. Futott minden iteráció nem lehet találni egy ütközés. Azonban néhány ember még mindig sikerül megtalálni a „lyuk” többet erről itt).
Sha1 () a legjobb alternatíva, mert visszatér egy 160 bites hash.
Még ha foglalkozott ütközések, ez nem jelenti azt, hogy megvédjék magukat a minden oldalról.
Rainbow táblák vannak felépítve, hogy kiszámítjuk a hash értékét a leggyakrabban használt szavakat és kifejezéseket.
Egy ilyen táblázat tartalmazhat több millió vagy akár milliárd soros.
Például akkor séta a szótárban, és hozzon létre egy hash minden szavára, hogy hozzon létre egy táblázatot. Ön is létrehozhat hash a szavak kombinációja. De ez még nem minden; Azt is beszúrni számjegy előtti / utáni / szavak között, és azt is, hogy rögzítse az értéke hash tábla.
Ez egy ilyen hatalmas szivárvány táblázatok lehet összeállítani és használni.
Hogyan kell használni:
Képzeljük el, hogy van egy alap a kezében több tízezer jelszavakat. Nem sok erőfeszítést összehasonlítani őket az értékeket a szivárvány táblázatok. Természetesen nem az összes jelszó egyezik, de végül nem lesz egy pár!
Hogyan lehet védekezni:
Csak add „só”:
Mindössze annyit kell tennie, hogy skonkatenirovat „só” és a jelszót, mielőtt tördeljük. Alig a szivárvány asztal, létezik egy értéket. De még mindig veszélyben van!
Ne felejtsük el, Rainbow táblázatok képezhetők után már a bázis lesz lopott.
Hogyan kell használni?
Ha létrehozott egy só, ellopják azt bázis esik illetéktelen kezekbe. Mindössze annyit kell tennie, hogy hozzon létre egy új szivárvány tábla a „só”, hogy megkapták az adatbázisból.
Például a Rainbow hash tábla sorainak „easypassword”. Az új szivárvány táblázatok helyett a korábbi értékek azok tartalmazzák a vonal „f @ # V) Hu ^% Hgfdseasypassword”. Amikor fut a script, akkor visszanyerheti némi átfedés.
Hogyan védheti meg magát?
Tudjuk használni az „egyedi só”, amely más lesz minden felhasználó számára.
Amellett, hogy a só, annak érdekében, hogy legyen egy egyedi felhasználói azonosítóval lehet:
Ez önmagában azt jelenti, hogy a felhasználói azonosító soha nem fog megváltozni.
Azt is generál egy véletlenszerű karakterlánc minden olyan felhasználó számára, mint hogy a „különleges só”. Ezt a sót kell tárolni, ugyanazon a helyen, ahol a felhasználó bejegyzést.
Ez a módszer megvéd bennünket a szivárvány táblázatok óta mindegyiknek megvan a saját egyedi jelszót sót. A támadónak, hogy hozzon létre 10 millió egyedi szivárvány táblázatok, amelyek a gyakorlatban nem megvalósítható.
A legtöbb hash függvények fejlődött, mivel ezek gyakran kiszámításához használt ellenőrző egyes értékek vagy fájlok ellenőrzés az adatok integritását.
Hogyan kell használni?
Amint azt már említettük, a számítógép egy erős grafikus kártyával lehet számítani milliárd hash másodpercenként. A támadók használhatnak „brute force”, ellenőrzése minden egyes lehetséges jelszót (lefolytatása kimerítő keresés a lehetséges opciókat).
Ha úgy gondolja, hogy egy jelszót 8 karakter tud ellenállni a „brute támadás”, kérjük adja meg:
- Ha a jelszó tartalmaz kisbetű, nagybetű betűk és számok, csak 62 (26 + 26 + 10) A lehetséges karakterek.
- Egy sor 8 karakter tartalmaz 62 ^ 8 különböző kombinációi. Ez egy kicsit több, mint 218000000000000.
- Ha a fogantyút 1 milliárd hash másodpercenként, a jelszó lesz felvette számított 60 órán keresztül.
A jelszó hossza 6 karakter, az azonos működése hosszabb ideig tart, mint 1 perc.
Ne habozzon, hogy szükség jelszavak hossza 9 vagy 10 karakter, bár lesz irritálja őket.
Hogyan védje?
Egy lassú hash függvény
Képzeld el, hogy egy hash függvény generálja 1 millió hash per másodperc helyett 1 milliárd. Predetsya támadó 1000-szer hosszabb, hogy vegye fel a jelszavakat. 60 órán vált 7 éves!
Az első lehetőség az, hogy hozzon létre egy függvényt:
Vagy használhatja egy algoritmust, amely a „költségtényező”, mint például BLOWFISH. A PHP, ez úgy valósítható meg, kripta () módszer.
A második paraméter a kriptában () metódus tartalmazza elválasztva értékeket dollár jeleket ($).
Az első érték a „$ 2a”, amely megmondja, hogy mi lesz a BLOWFISH algoritmus.
A második jelentése „10 $”. Ebben az esetben ez a „költség lehetőség.” Ez a paraméter jelenti az iterációk számát kell végrehajtani (10 => 2 ^ 10 = 1024 iteráció.) Az érték lehet 04-31.
Fussunk egy példát:
Ennek eredményeként már kiderült hash algoritmus, amely ($ 2a), költség paraméter ($ 10), és a sót 22 karakter hosszú lehet. Minden más hash. Mi tesztelünk:
Ha futunk, megkapjuk az üzenetet: „A hozzáférés engedélyezve!”
Mivel minden, amit megtanultunk, írunk egy osztály:
Által nyújtott információk útján két csatorna (látás és hallás) a képzés hatékonyságának sokkal jobb tanulás könyvekből. A házi feladatok és online tesztek lehetővé teszi, hogy folyamatosan úgy gondolja, a célnyelven, és azonnal ellenőrizze tudását!
Ha azt szeretnénk, hosszú ideig, hogy tanulmányozzák, hogyan lehet HTML-t, akkor engem, mert van jó hír!
Ha már megtanulta a HTML és tovább szeretne lépni, a következő lépés az lesz, hogy tanulmányozza a CSS technológiával.
Ha azt szeretnénk, hogy megértsék a fogalmak domain és tárhely, megtanulják, hogyan kell létrehozni egy adatbázist, feltölteni a fájlokat a honlapon keresztül FTP szerver, hozzon létre aldomain konfigurálja a postaládákat a helyszínen, és ellenőrzi a részvétel, a tanfolyam kifejezetten az Ön számára!