Czym jest Salt (kryptografia)?
Kryptograficzny salt to losowa wartość łączona z hasłem lub innym wejściem przed jego przetworzeniem przez funkcję haszującą lub funkcję wyprowadzania kluczy, zapewniająca, że identyczne wejścia dają różne wyjścia i uniemożliwiająca wstępnie obliczone tabele ataku.
Znane również jako: salt, cryptographic salt
Bez salt identyczne hasła zawsze dają identyczne hasze. Atakujący z wstępnie obliczoną tabelą mapującą popularne hasła na ich wartości haszujące (tęczowa tablica) może natychmiast odszukać pasujący hasz w skradzionej bazie danych. Salt udaremnia ten atak, mieszając unikalną losową wartość w każde hasło przed haszowaniem. Nawet jeśli dwóch użytkowników ma to samo hasło, różne salt zapewniają różne wyniki haszowania.
Salt nie musi być tajny — zazwyczaj jest przechowywany w postaci jawnej obok hasza lub wyprowadzonego klucza. Jego celem jest zmuszenie atakującego do obliczania każdego hasza osobno zamiast używania wstępnie obliczonych tabel. Losowy 16-bajtowy salt zapewnia 2^128 możliwych wariantów dla każdego hasła, czyniąc wstępne obliczenia całkowicie niepraktycznymi.
Salt są niezbędne w dwóch kontekstach: haszowaniu haseł (gdzie chronią przechowywane hasze w bazach danych) i wyprowadzaniu kluczy (gdzie zapewniają, że ta sama passphrase daje różne wyprowadzone klucze dla różnych operacji). W obu przypadkach salt musi być generowany przez kryptograficznie bezpieczny generator liczb losowych i być unikalny dla każdej operacji — nigdy nie ponownie używany między użytkownikami ani operacjami szyfrowania.
Jak Vaulted używa Salt (kryptografia)
Gdy do sekretu Vaulted dodawana jest passphrase, po stronie klienta generowany jest losowy 16-bajtowy salt za pośrednictwem Web Crypto API. Ten salt jest podawany do PBKDF2 razem z passphrase i 100 000 iteracjami, by wyprowadzić klucz opakowujący AES-KW. Salt jest następnie osadzany we fragmencie URL, by przeglądarka odbiorcy mogła ponownie wyprowadzić identyczny klucz opakowujący z passphrase. Każdy sekret z passphrase otrzymuje własny unikalny salt — zapewniając, że ta sama passphrase używana przy różnych sekretach daje różne klucze opakowujące.