Rola salt w szyfrowaniu haseł

2008-10-25 00:00:00 +0100


Salt (termin ten nie doczekał się ładnego tłumaczenia i chyba wszyscy się do niego przyzwyczaili) jest losowym modyfikatorem klucza lub tekstu jawnego wprowadzanym by ten sam tekst jawny szyfrowany wielokrotnie tym samym kluczem dawał zawsze inne kryptogramy. Zapewnia skuteczną ochronę m.in. przed atakami słownikowymi oraz atakami rainbow tables. Najprostszym sposobem wprowadzenia takiego modyfikatora jest wylosowanie jakiejś liczby $S$ o długości równej stosowanemu kluczowi $K$, dodanie ich za pomocą XOR i użycie wyniku ($K_{s}$) do szyfrowania. Przykład:

$K_{s} = K \oplus S$

Sam salt $S$ można bez przeszkód dołączyć do wiadomości w postaci jawnej - jego znajomość w niczym nie pomoże atakującemu. Odbiorca doda go do posiadanego przez siebie klucza i w ten sposób może poprawnie odszyfrować wiadomość.

Modyfikator ten można spotkać w wielu algorytmach i protokołach kryptograficznych. Prawdopodobnie najstarszy był 12-bitowy salt w uniksowej funkcji crypt używanej do szyfrowania haseł - to samo hasło mogło być zaszyfrowane na 4096 sposobów. Salt istnieje także w standardzie PKCS #5.