Módszerek tárolására jelszavakat - az egészet, és a programozás

Három megközelítések tárolására jelszavakat ismertetjük példákkal.

Ma szinte minden honlapon kell tartani egy listát a felhasználóneveket és jelszavakat. Sok többfelhasználós alkalmazás igényel felhasználói hitelesítési módszer, jelszavak és normálisnak tűnnek.







A legegyszerűbb - egyszerűen tárolhatja

A legegyszerűbb megközelítés irányításához felhasználónevek és jelszavak - az összes tárolt szöveges formában (nincs titkosítás és permutációja elem) egy fájlba vagy adatbázisba. Az eredmény a következő lenne:

Pluses tárolja a jelszavakat titkosítatlan formában

1. hitelességének ellenőrzése (ellenőrizze, hogy a felhasználónév és jelszó páros egybeesik a párt a táblázatban) nagyon egyszerű - összehasonlítja húrok!
2. Elfelejtett jelszó lehet állítani - a kód könnyen elérhető, ha megadja a felhasználónevét.

Cons tárolására jelszavakat titkosítatlan formában

1. Először is, bárki, aki hozzáfér a fájlhoz (vagy valószínű, hogy a mintát a táblázatot) kap azonnali hozzáférést biztosít az összes a jelszavakat! A munkavállaló jogos iratbetekintési lehet nyomtatni a fájlt, vagy küldje el az adatokat e-mailben, és - íme! - Az összes jelszó veszélybe.

2. A második probléma az, hogy a csere során hitelesítési információt lásd a jelszót a hálózaton. Ha minden nem használ biztonságos kommunikációt, a jelszó látható lesz, amikor áthalad a hálózaton. Például, ha a webes alkalmazás az SSL (Secure Sockets Layer szinten), hogy küldjön egy jelszót, a jelszó még mindig látható, ha a webes alkalmazás szerver választja információkat a távoli adatbázisban. A lekérdezés eredménye a hálózaton keresztül küldött titkosítatlan.

Megengedhető, hogy tárolja a jelszavakat egyszerű szövegként?

Akkor igen, tárolja a jelszavakat titkosítatlan formában rendesen.

Jelszó titkosítás - egy kicsit biztonságosabb

A legjobb megközelítés tárolására jelszavakat (és az egyetlen ésszerű alternatív, ha a felhasználóknak szükségük van ahhoz, hogy visszaszerezze a jelszavakat) - jelszavak titkosításához tárolás előtt.

Ez a megközelítés a birtokában egy rejtély. Titok a titkosító algoritmus és a kulcs együtt használják a fejlett titkosítási algoritmus.

Jelszó titkosítás - visszafordítható műveletet. A rejtély a használt jelszót a torzítás, és ugyanaz a misztérium lehet használni, hogy visszaszerezze az eredeti jelszót. Amikor a felhasználó beállítja a jelszót, a tárolt jelszót visszafejteni a titkot, és a jelszavakat hasonlítjuk össze. Egy alternatív megközelítés -, hogy titkosítja a jelszót, melyet a titkos és összehasonlítani a két torzított változatai - véletlen azt jelenti, hogy mivel a megfelelő jelszót.

Ha a felhasználóknak meg kell letölteni a jelszót, a tárolt jelszót visszafejteni, és szállítják a felhasználó (általában e-mailben).

Előnye enkriptálás titkok

1. Az elveszett vagy elfelejtett jelszavak lehet visszaállítani.
2. Csak egy titkos (vagy kulcs algoritmus) kell biztonságosan tárolható.
3. Ha több felhasználó elosztott alkalmazások kódolási kell továbbítani a nem titkosított jelszó (ellenőrzés), vagy át kell adni a titkos hitelesítés végrehajtásához az ügyfél.

Hátrányok jelszó titkosítás

1. Ha a titok kitudódik, jelszavak veszélybe. Ha valaki hozzáfér a titkos és tárolja a jelszavakat, jelszavakat lehet visszafejteni!
2. A hozzáférés csak a tároló jelszavak elég, hogy információt nyújtson a jelszavakat, mint az összes jelszavak titkosítva vannak ugyanazt az algoritmust. Ha két felhasználó azonos titkosított jelszó, akkor is kell ugyanazt a jelszót. Ravasz hackerek hozzáférést adattár jelszavakat is létrehozhat felhasználókat ismert jelszavak és hogy ellenőrizze a többi felhasználó számára ugyanazzal a jelszóval. Ez a fajta támadás egy olyan támadás ismert nyílt szöveg. Az ilyen támadás lehet állítani útján sót (lásd alább).
3. Amikor egy tömbrejtjelezésnél jelszót kell tárolni egy része a titkosított jelszó. Meg kell tartani a hossza, mert a blokk titkosításokat mindig ad egy fix méretű blokk kódolt szöveg. Ha a jelszó nem titkosított (pl tárolva egy oszlop a táblázatban), az információ nagyon hasznos a betörők jelszavakat. Pontos ismerete jelszó hossza nagyban leegyszerűsíti jelszó találgatás.

Ez elfogadható jelszó tárolási megoldás?

Ha a helyreállítási az elvesztett jelszó szükséges, igen - ez az egyetlen elfogadható megoldás. Néhány javaslat:

Tárolása kivonatolt jelszavak - visszafordíthatatlan döntés

A kriptográfiai hash függvény egy visszafordíthatatlan funkciót. A hash függvény a bemeneti adatok bármilyen hosszúságú és generál egyedi fix hosszúságú kimeneti adatok. Például, ha a jelszó (bármilyen hosszúságú) van tördeljük, MD5 kriptográfiai hash függvény, az eredmény 128-bites szám egyedileg megfelelő jelszót. A kriptográfiai hash dolgoznak nemcsak a jelszavakat - ha egy kriptográfiai hash a két fájl azonos, a két fájl megegyezik.

Az elmúlt években, a megnövekedett számítási teljesítmény, néhány kriptográfiai hash függvény már nem ajánlott (MD4, MD5, SHA1). Ugyanakkor alkalmazásuk elfogadható a hash jelszavakat. Vagy módosítsa a kódot úgy, hogy használja a SHA2.

Amikor tároljuk a kivonatolt jelszavak kivonatolt jelszót (átnyomjuk a hash algoritmus), és a kapott hash tárolják jelszó helyett. Összehasonlítani a jelszavak zaheshiruyte megadott jelszó segítségével ugyanazt a hash függvény, és hasonlítsa össze az eredményeket. Ha az összeg egyezik, a jelszavak egyeznek.

A szépség visszafordíthatatlan funkció abban a tényben rejlik, hogy lehetetlen kiszámítani a jelszó alapján a hash. Hashed jelszavak nem ellenálló brute-force támadással - ha a jelszó hash és szótár támadó képes kiszámítani a hash összes szavak szótára összehasonlítani szót hash a jelszót, és találja meg a jelszót. Erős jelszó (amely betűket, számokat és speciális karaktereket) elleni védekezés brute force támadások ellen.







Előnye áruház kivonatolt jelszavak

1. Az eredeti titkosítatlan jelszó nem tárolja egyáltalán. Még ha egy jelszót sérül, akkor csak azokat hash nyilvánosan hozzáférhetők.
2. A jelszó nem tároljuk, és nem állapítható meg, ami nagyon megnehezíti a jelszót hacker.
3. Nem kell a rejtély, mert nem titok nem használják hash a jelszót.
4. többfelhasználós elosztott jelszó hash alkalmazásokat lehet használni a hitelesítéshez. Ha titkosítást kell adni a nem titkosított jelszó (ellenőrzés), vagy át kell adni a titkos hitelesítés végrehajtásához az ügyfél.

Hátrányok tárolására kivonatolt jelszavak

1. Elveszett jelszó nem lehet visszaállítani (de a nyers erő módszerek). Az új jelszó létrehozására van szükség, és elküldi a felhasználónak.
2. Ami a titkosított jelszó, ha nem használja só (lásd alább), a felhasználók ugyanazt a jelszót ugyanaz lesz hash jelszót.

Ez elfogadható jelszó tárolási megoldás?

Igen, de a következő irányelveket:

Tárolása a jelszó hossza - miért és hogyan

Miért van szükség, hogy tárolja a jelszó hossza?

hossza a jelszó szükséges csak kódolására és dekódolására a jelszó használatával blokkrejtjel. Sok blokk titkosításokat van egy blokk mérete 64 bit - a méret a titkosított adatokat is többszöröse 8 bájt. 12 bájt titkosítási jelszó kiadási 16 bájt. Amikor megfejtése a 16 bájtos eredmény egy 16 byte string szemetet az utolsó 4 bájt. Ha a tárolt jelszó hossza, a felesleges lehet eltávolítani hozzáadásával dekódolás jelszót. Eltávolítása nélkül kísérletet, hogy összehasonlítsuk a primitív vonalhibát - 12 karakteres jelszót nem esik egybe a 16 karakteres jelszó kódolva. Próbálják összehasonlítani a titkosított jelszavakat, hogy ellenőrizze a mérkőzés miatt leállhat a plusz 4 byte kiegészítései eltérhetnek titkosítás titkosítás.

Hash nem igényel jelszó hossza - 12 karakteres jelszót hash segítségével SHA2 mindig kimenő jelet állít elő 320 bit, és a hash-t a ugyanazt a jelszót mindig ad a kimenetén ugyanaz 320 bit.

Ha az algoritmust, mint ROT13 (nem ajánlott), a hossza a titkosított jelszó egybeesik a jelszót az eredeti hosszát. Bárki, aki hozzáfér tárolására jelszavakat, majd kap a jelszó hosszát. Ha úgy dönt, hogy használja a titkosítási algoritmus vagy rejtjelfolyam (szemben a tömbrejtjelezésnél), biztos, hogy kiegészítse a kimenő adatok, hogy elrejtse a jelszó hosszát.

Hogyan tároljuk a jelszó hossza?

Egy megoldás -, hogy a hossza a jelszó, mint egy oszlop a táblázatban. A hátránya ennek a módszernek, hogy ha egy hacker kap hozzáférést az adatokhoz, az érték a jelszó hossza jelentősen megkönnyíti brute force támadás. Tudva, hogy a jelszót tartalmaz, összesen 5 karakter, amely lehetővé teszi a támadók számára, hogy korlátozza a száma jelszó találgatás kísérletek szükségesek, hogy kiváló a jelszót.

Egy jobb megoldás -, hogy tartsa a hossza a jelszó részeként titkosított szöveg. hossza a jelszó adhatunk az elején a jelszó karaktersorozatot (például az első két karakter). Megfejteni a jelszót az első két karakter visszaállította a hosszát és a jelszó biztonságosan levágva. Tárolás hossza, titkosított jelszó biztosítja, hogy senki ne férhessen hozzá az a jelszó hossza ismerete nélkül a titkok titkosításához használt jelszót.

Példa - Tárolás hossza és jelszavak körülmetélés

üzenet tárolására, amelynek teljes hossza:

Helyreállítás üzenetek bináris tömb:

A sózás - Só javítja az ízét minden

Tördeljük (vagy titkosítás) a ugyanazt a jelszót két felhasználó ugyanazt az eredményt. Ismétlődő információ felhasználható rosszindulatú megszerezni jelszavakat. A felhasználó számára elérhetővé teszik tárolására jelszavakat saját jelszó egy szótári szó, majd olvassa tárolására jelszavakat jelenlétében egy másik felhasználó ugyanazzal kivonatolt vagy titkosított jelszó. Ha egyezést talál a felhasználó jelszava sérül.

Egy egyszerű sózás - ezeket a további adatok darab

Annak elkerülése érdekében, a fenti probléma lehet bevezetni néhány variáció a tördelő (vagy titkosítási algoritmus). Például, ha az elején, hogy csatlakozzon jelszavát, hashelt vagy titkosított eredmény nem lesz ugyanaz többé.

Persze, Bob és Éva is ugyanazt a jelszót. Még rosszabb, ha a támadó, így a jelszót tárolja, a hacker képes lesz előre kiszámítani a hash az egész szótárt keresni mérkőzések tárolására jelszavakat, jelentősen felgyorsítja a folyamatot a törés.

Ha hozzá a bejelentkezési kombinációban:

Most Bob és Éva különböző jelszó hash. Ha egy hacker megszerzi a jelszót boltozat, és most a hacker volna számítani a hash minden jelszó kifejezetten minden felhasználó számára. A hacker volna előre kiszámítani a hash a szótár előtaggal „Bob.” Bob és előtaggal „Éva”. Ahhoz, hogy Eve - nem könnyű feladat.

Részletes sózás - használata véletlen információk

Véletlenszerű jelszavak sók nagymértékben növeli a titkosítás erősségét és nagyban megnehezíti törés felsorolás.

Ahhoz, hogy a véletlen sója számítani egy véletlen számot és a véletlen számot használja, mint egy komponens kiszámítására hash vagy titkosítást. Tárolja véletlen számot egy adatbázis-oszlop számát később rendelkezésre jelszó ellenőrzés.

Amikor először menteni jelszót Bob:

1. Számítsuk ki a véletlen számok (egy erős kriptográfiai véletlen generátor, például System.Security.Cryptography).
2. Adjon hozzá egy véletlen számot jelszókéréskor.
3. Hash számítás és titkosítja az így kapott szöveget.
4. Mentse hash vagy titkosítási eredmény és a véletlen számot a jelszó tárolására.

Ha összehasonlítjuk a jelszavakat, hogy ugyanezt az algoritmust:

1. Kap egy véletlen számot a jelszót tárolja.
2. Adjon hozzá egy véletlen számot jelszókéréskor.
3. Hash számítás és titkosítja az így kapott szöveget.
4. Hasonlítsa össze az eredményt a tárolt hash vagy titkosított jelszó megfelelő jelenti illő jelszavakat.

Egy véletlen szám helyett használat bejelentkezést. Bejelentkezések nem véletlen -, hogy rendkívül szigorú szabályokat. Véletlen számok (származó megbízható kriptográfiai véletlenszám-generátor) bevezetésére nagyobb véletlenszerűséget a hash vagy titkosított kimenő adatok. Megjegyezzük, hogy ha az alkalmazott só belépés, a belépés nem változott. Ha megváltoztatja a bejelentkezési hash érvénytelenné válik.

Kódoló bináris kimeneti adatok szöveges formában

Kimenő adatok a hash függvények és titkosító algoritmusok bináris. Tárolni bináris adatok formájában szöveges karakterláncok lehet kódolt adatokat.

Két népszerű kódolási sémát - UUENCODE (népszerű a Unix világban) és Base64 (népszerű mindenhol). Base64 - kódoló használt rendszer átalakítására bináris mellékleteket e-mailt küldeni SMTP (Simple Mail Transfer Protocol).

Példa - kódoló bináris string tömb

Példa - dekódolására egy bináris string array

Titkosítási algoritmusok és példák

.NET Framework (System.Security.Cryptography) natív módon támogatja a több titkosító algoritmusok:

• DES - egy régi, használaton kívüli.
• TripleDES - régi, de még mindig tartós.
• RC2 - régi, de még mindig hasznos.
• Rijndael (AES) - a modern.

Példa - vonali kódolás:

Példa - dekódolás vonalak:

Hash algoritmusok és példák

.NET Framework (System.Security.Cryptography) natív módon támogatja a több kriptográfiai hash függvény:

Példa - hashing a húr:

Példa - összehasonlítása két hash egyenlőség:

következtetés

Már elég információt, hogy tájékozott döntést tárolására jelszavakat.

• Ha vissza kell állítani a jelszavakat, titkosítást használni.
• Ha nem kell visszaállítani jelszavak hash (biztonságosabb).
• Mit tennél, sózzuk jelszavakat.

• Letöltés demóprojektet - 5.26 Kb • forrás letöltése - 12.2 Kb Bevezetés Érdemes megjegyezni, hogy a bemutatott módszer szerint kibővíthető több lehetőséget állandó akadályokat. Tanulmányozása után egy egyszerű példát, lépni a bonyolultabb lehetőségek idővel változnak.

• Letöltés forráskód - 251 KB • Letöltés demóprojektet - 181 Kb Bevezetés A történelem neurális hálózatok kezdődik a 1950-es. amikor az építészet, a legegyszerűbb neurális hálózat került bemutatásra. Miután a kezdeti munka ötlete neurális hálózatok vált igen népszerűvé. De aztán a környéken.