Forum » Programiranje » Kako deluje Salt kriptiranje gesla?
Kako deluje Salt kriptiranje gesla?
dani-kr ::
Pozdravljeni,
Zanima me kako konkretno deluje kriptiranje gesla s pomočjo Salt. Kolikor razumem je proces takšen:
Brez Salt bi tabela z uporabniki zgledala takole (za lažjo predstavo sem dodal v stolpec še ne-kriptirana gesla):
Sedaj, če bi si recimo napadalec pridobil dostop do te tabele, bi uporabil "Rainbow" tabelo, s pomočjo katere bi izračunal gesla in si tako lahko pridobil vstop v uporabniške profile. Če pa uporabimo Salt za gesla, kolikor razumem se naredi sledeče:
1) Program (ki uporablja algoritem PBKDF2) naključno izbere "salt" algoritem.
2) S pomočjo tega algoritma nato kriptira geslo.
Potem bi tabela gesel imela takšen izgled:
Ko pa se uporabnik prijavlja, se po uporabniškem imenu program sprehodi po bazi, ko ga najde, izbere njegov "salt", nato na podlagi tega "salta" prekriptira geslo in primerja z vnesenim.
Torej prednosti Salt kriptiranega gesla so:
- preprečiti razbitje več gesel hkrati.
- pri tabeli gesel je redko, da se zgodi, da imata dva enaka gesla enako kriptirano geslo.
Hvala za pomoč
Zanima me kako konkretno deluje kriptiranje gesla s pomočjo Salt. Kolikor razumem je proces takšen:
Brez Salt bi tabela z uporabniki zgledala takole (za lažjo predstavo sem dodal v stolpec še ne-kriptirana gesla):
Sedaj, če bi si recimo napadalec pridobil dostop do te tabele, bi uporabil "Rainbow" tabelo, s pomočjo katere bi izračunal gesla in si tako lahko pridobil vstop v uporabniške profile. Če pa uporabimo Salt za gesla, kolikor razumem se naredi sledeče:
1) Program (ki uporablja algoritem PBKDF2) naključno izbere "salt" algoritem.
2) S pomočjo tega algoritma nato kriptira geslo.
Potem bi tabela gesel imela takšen izgled:
Ko pa se uporabnik prijavlja, se po uporabniškem imenu program sprehodi po bazi, ko ga najde, izbere njegov "salt", nato na podlagi tega "salta" prekriptira geslo in primerja z vnesenim.
Torej prednosti Salt kriptiranega gesla so:
- preprečiti razbitje več gesel hkrati.
- pri tabeli gesel je redko, da se zgodi, da imata dva enaka gesla enako kriptirano geslo.
Hvala za pomoč
dani-kr ::
Zgleda da je to to...
še nekaj sem našel -> http://stackoverflow.com/a/2677143/2674...
hvala, zelo zanimiv prispevek.
fireice ::
Ko pa se uporabnik prijavlja, se po uporabniškem imenu program sprehodi po bazi, ko ga najde, izbere njegov "salt", nato na podlagi tega "salta" prekriptira geslo in primerja z vnesenim.
Ne vem kaj tocno si mislil s prekriptira geslo. V bistvu, ko se uporabnik prijavi, se program sprehodi po bazi in ko ga najde, vzame vpisano geslo in njegov salt, izracuna hash ter ga primerja s shranjenim hashom.
dani-kr ::
Ko pa se uporabnik prijavlja, se po uporabniškem imenu program sprehodi po bazi, ko ga najde, izbere njegov "salt", nato na podlagi tega "salta" prekriptira geslo in primerja z vnesenim.
Ne vem kaj tocno si mislil s prekriptira geslo. V bistvu, ko se uporabnik prijavi, se program sprehodi po bazi in ko ga najde, vzame vpisano geslo in njegov salt, izracuna hash ter ga primerja s shranjenim hashom.
točno to kar si napisal, malo sem površno napisal
dani-kr ::
Zdaj me zanima še, zakaj pri kodi, se najprej geslo kriptira, šele nato se ustvari njegov salt?
userModel.User.password = crypto.Compute(userModel.User.password);
userModel.User.passwordSalt = crypto.Salt;
Ali to naredi, da najprej kriptira geslo (v hash obliko), nato pa prikaže kateri algoritem je uporabil za kriptiranje?
userModel.User.password = crypto.Compute(userModel.User.password);
userModel.User.passwordSalt = crypto.Salt;
Ali to naredi, da najprej kriptira geslo (v hash obliko), nato pa prikaže kateri algoritem je uporabil za kriptiranje?
sas084 ::
Salt je naklučna vrednost, ki se doda geslu pri računanju njegovega hasha in ni odvisno od gesla samega. Kako se to dela je odvisno od implementacije: Primer (+ je konkatenacija):
Geslo Salt Funkcija Hash dani 12ghi hash(geslo + salt) 5b2359f27e0b624b67552dbf721eddeb dani 12ghi hash(salt + geslo) 86a61c644c1d17adfa0decef5591b28b
dani-kr ::
Salt je naklučna vrednost, ki se doda geslu pri računanju njegovega hasha in ni odvisno od gesla samega. Kako se to dela je odvisno od implementacije: Primer (+ je konkatenacija):
Geslo Salt Funkcija Hash
dani 12ghi hash(geslo + salt) 5b2359f27e0b624b67552dbf721eddeb
dani 12ghi hash(salt + geslo) 86a61c644c1d17adfa0decef5591b28b
Super, najlepša hvala
arjan_t ::
Ne pozabi da mora salt biti dovolj dolg, drugace ni nobenega efekta. In za PBKDF2 mora biti iteration count tudi ustrezno nastavljen (~64k).
MrStein ::
Še nekaj dobrih linkov:
http://security.stackexchange.com/quest...
https://crackstation.net/hashing-securi...
http://security.stackexchange.com/quest...
https://crackstation.net/hashing-securi...
Motiti se je človeško.
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!
Motiti se pogosto je neumno.
Vztrajati pri zmoti je... oh, pozdravljen!
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [c#] program za kodiranje besedil, gesel,...Oddelek: Programiranje | 2863 (2475) | LightBit |
» | Sony PlayStation Network nazaj prihodnji teden, številke kreditnih kartic so bile šifOddelek: Novice / Zasebnost | 15458 (14118) | opeter |
» | Analiza slovenskih geselOddelek: Novice / Zasebnost | 12182 (10120) | BlueRunner |
» | PHP - Register formOddelek: Izdelava spletišč | 1988 (1616) | roli |
» | Skrivanje geselOddelek: Izdelava spletišč | 3171 (2411) | Tr0n |