[OFF]
Huhh... :D
Ez nem 3 soros téma, de azért megpróbálom röviden elmagyarázni.
Általában ''salt''-nak nevezik a kriptográfiában azokat a véletlenszerű (és jellemzően kicsi) adatcsomagokat (byte-okat, sztringeket), amelyeket valamilyen titkosítandó adathoz fűznek hozzá.
Tehát: [ titkosítandó adat + ''salt'' ] együtt titkosítva => titkosított adat
Akkor lehet szükség ilyesmire, ha (mint pl. az előbbi példában) azt akarjuk megakadályozni, hogy két (vagy több) titkosított adatcsomagot összehasonlítva eldöndhető legyen, hogy a titkosítatlan információ megegyezik-e.
Az előbbi példában, ha nem használnák ezt a módszert, akkor egy adott gép adott (konstans) azonosítója a nyilvános kulccsal kódolva mindig ugyanazt a kódolt adatcsomagot eredményezné, ezeket összehasonlítva tehát egy támadó meg tudná határozni, hogy az egyes gépek hogyan ''mozognak'', illetve, bármelyik konkrét gépet meg tudná találni, amelyiknek a ''hazaüzenő'' forgalmát legalább egyszer már volt lehetősége lehallgatni. (És természetesen nem lenne ehhez szüksége arra, hogy feltörje a kódolást.)
Ezzel szemben, ha egy véletlenszerű ''salt'' értéket hozzáfűzünk a gép azonosítójához, akkor a generált kódolt adatcsomag minden esetben más lesz, és - mivel asszimetrikus (azaz nyilvános és titkos kulcsokon alapuló) kódolást használunk - a támadó még a ''salt'' érték ismeretével sem tudná eldönteni, hogy az általa keresett gép üzent-e haza, vagy egy másik. (Az előbbi példámban a salt érték kódolatlanul is megjelenik, de egyébként ez nem feltétlenül szükséges, ha a gép azonosítója és a ''salt'' egyértelműen szétválasztható, amit nem nehéz megoldani.)
A ''salt'' módszert tipikusan jelszavak tárolásánál használják még:
[ kódolatlan (plaintext) jelszó + véletlenszerű salt ] egyirányú hash függvénnyel ''megkavarva'' => a jelszónak a tárolt hash értéke (amely mellé tárolni kell a felhasznált ''salt'' értéket is)
Ezzel a módszerrel megakadályozható, hogy a támadó a gyakran használt jelszavak hash értékeiből egy nagy adatbázist építve könnyen kutathasson gyenge jelszavak után. Ha ugyanis nem használnánk salt értékeket, akkor, ha a támadó kezébe kerül a jelszóhasheket tartalmazó lista, egyszerűen (azaz nagyon gyorsan) ellenőrizni tudná, hogy valamelyik hash érték megegyezik-e az adatbázisában található értékekkel, és ha egyezést talált, akkor már meg is van a jelszó. Ha ''sózzuk'' a jelszavakat, akkor minden egyes jelszóhoz külön salt érték tartozik, ezért az adatbázist minden egyes jelszóra külön fel kellene építeni, ami a gyakorlatban nem kivitelezhető, tehát a támadónak csak a brute-force (minden lehetséges vagy valószínű jelszó kipróbálása) marad, mint lehetőség. (Ide tartozik még talán, hogy a brute-force ellen azt a módszert szokás alkalmazni, hogy a hash függvényt sokszor (akár sok ezerszer) iterálják, tehát a kapott hash érték hash értékét veszik, és így tovább. Így egy jelszó ellenőrzése továbbra is viszonylag gyorsan megtörténhet, de mivel a támadónak sok (ezer, millió, stb.) jelszót kellene ellenőriznie, a munkáját nagyon megnehezítik ezzel.)
Na, remélem, érthető voltam... Ennyit dióhéjban a ''salt''-ról. :)
[/OFF]
''... we as consumers, want our content free (as in Freedom) and if we don't get it, we'll take our content free (as in beer).''











