Miért?

Mert a tudományt a kérdések viszik előre

Miért nem tudják megmondani az elfelejtett internetes jelszavakat a honlapok?

2010.08.25 15:54:02, j_attila

Egyszerű válasz:
Azért, mert a jelszó megadásakor azt egy visszafejthetetlen algoritmussal, programmal kódolják. A kódból később nem lehet előállítani a jelszót és csak ezt a kódot tárolják.

Részletes válasz:
Szinte mindenhol a megadott jelszót (pl.: jelszavam) egyből átalakítják egy visszafejthetetlen algoritmussal [hash] és kapnak egy kódot (pl.: de9b3e83ffca6405b29abb4aad444822). Majd ezt az adatot tárolják el az adatbázisban (pl.: regisztráció során). Ha belépünk az adott oldalra, akkor a beírt jelszóból (pl.: jelszavam) ismét egy hash kód (pl.: de9b3e83ffca6405b29abb4aad444822) keletkezik, amit összehasonlítanak az adatbázisban már tárolt hash kóddal. Ha a kettő megegyezik, akkor a megfelelő jelszót írtuk be.
Ez azért működik így, hogy a jelszó és ezen keresztül a felhasználó és jogosultság kezelés minél biztonságosabb legyen.
A hash működését általában egy húsdarálóhoz szokták hasonlítani. Ha egy disznó lapockáját ledaráljuk akkor darált húst kapunk. Ez egy egyirányú folyamat, mivel a darált húsból nem tudunk újra disznó lapockát készíteni. (Vagy élő disznót.) Több különböző hash algoritmus létezik. Ezek a következő feltételnek felelnek meg: egy adatból mindig ugyanaz a hash kód készül, mindenhol ugyanúgy működik, nem lehet a kódból előállítani a kiindulási adatot. Azért adatot írtam, mert nemcsak jelszót, hanem dokumentumot is lehet hash-elni, amiből következtetni lehet a dokumentum sértetlenségére.
Így aki hozzáfér az adatbázishoz, az se tudja megmondani a jelszót, mivel csak a hash kódot látja. Ezért szoktak új jelszót beállítani a jelszó elárulása helyett.

Megjegyzés:
A fenti magyarázatban szereplő jelszó kódját md5 hash generátorral készítettem. A kódot nem lehet visszafejteni, de ha tudják melyik algoritmust használjuk, akkor elég hosszú idő alatt van rá lehetőség, hogy kitalálják.
Ha a támadók nagyon sok jelszójelölt karaktersort ledarálnak, akkor kapnak egy hash szótárt. {Az interneten több helyen található ilyen hash szótár is, ami csökkenti a időt.} Ha hozzáférnek a hash kódhoz és összehasonlíthatják a hash szótárral, akkor egyezés esetén megtalálják a jelszót. Ennek a feltörési technikának a neve a nyers erő [brute force] a szisztematikus végigpróbálgatás miatt.
Ezt úgy próbálják kiküszöbölni, hogy minden jelszóhoz hozzátesznek valamilyen saját szöveget [karakterláncot]. {Ezt sózásnak hívják.} Például legyen ez a só szó, akkor a jelszó jelszavamsó lesz, ennek a hash kódja már ad45eff0ba650ee0a15f16d944be1d55.
{Ha ezt a kódot látják a támadok és visszafejtik, akkor megkapják, hogy a jelszó jelszavamsó. De ezzel nem tudnak belépni, mert nem tudják, hogy a só nem a jelszó része és belépéskor a rendszer ennek a jelszónak a végéhez is hozzáteszi a só szót. Így a jelszavamsósó hash-e megint nem lesz megfelelő.}

2010.10.30 23:12:19, j_attila
Weblabor

Szeptember 3-án megjelent a Weblaboron blogmarkként ez a kérdés.
http://weblabor.hu/blogmarkok/106126

2013.09.20 23:12:28, dedi_
megjegyzés

még talán annyit hozzá kell tenni, hogy a fix hosszúságú kódot előállító hash algoritmusoknál fellép az a "hiba", hogy két különböző adatot ugyan arra a hash kódra fordítják, ez alapvetően a fix hosszúságukból következik pl md5-nél is (ez triviális, mivel a hash kódok lehetséges variációja (kimenet) kevesebb mint a kódolható adatok variációja (bemenet))

A hozzászóláshoz lépj be, ha rendelkezel felhasználói névvel.