Articles

Sól (kryptografia)

Aby zrozumieć różnicę między złamaniem pojedynczego hasła a ich zestawem, rozważmy plik z użytkownikami i ich hasłami. Powiedzmy, że plik jest niesolony. Wtedy atakujący mógłby wybrać jakiś ciąg znaków, nazwać go attempt, a następnie obliczyć hash(attempt). Ponieważ funkcje haszujące są jeden do jednego, wynika z tego, że każdy użytkownik, którego hash jest hash(próba) musi mieć jako swoje hasło próbę. W ten sposób, każde dopasowanie łamie hasło użytkownika, a szansa na dopasowanie wzrasta wraz z liczbą haseł w pliku. W przeciwieństwie do tego, jeśli używane są sole, atakujący musiałby obliczyć hash(próba || sól), porównać z hasłem A, następnie hash(próba || sól), porównać z hasłem B, i tak dalej. Zapobiega to złamaniu wielu haseł przy jednej próbie (tylko wtedy, gdy unika się wielokrotnego użycia soli).

Sole zwalczają również używanie tabel prekompilowanych do łamania haseł. Taka tabela może po prostu odwzorowywać wspólne hasła na ich hashe, lub może robić coś bardziej złożonego, np. przechowywać punkty początkowe i końcowe zestawu wstępnie obliczonych łańcuchów hash. W obu przypadkach, solenie może bronić przed użyciem wstępnie obliczonych tabel poprzez wydłużanie haszy i pobieranie ich z większych zestawów znaków, co zmniejsza prawdopodobieństwo, że tabela pokryje wynikowe hashe. W szczególności, wstępnie obliczona tabela musiałaby pokryć ciąg znaków, a nie tylko .

Nowoczesny system shadow password, w którym hashe haseł i inne dane bezpieczeństwa są przechowywane w niepublicznym pliku, nieco łagodzi te obawy. Pozostają one jednak istotne w instalacjach wieloserwerowych, które wykorzystują scentralizowane systemy zarządzania hasłami do przesyłania haseł lub ich skrótów do wielu systemów. W takich instalacjach, konto root w każdym systemie może być traktowane jako mniej zaufane niż administratorzy scentralizowanego systemu haseł, więc warto upewnić się, że bezpieczeństwo algorytmu haszowania haseł, w tym generowanie unikalnych wartości soli, jest odpowiednie.

Inna (mniejsza) korzyść z zastosowania soli jest następująca: dwóch użytkowników może wybrać ten sam ciąg znaków jako swoje hasło, lub ten sam użytkownik może użyć tego samego hasła na dwóch maszynach. Bez soli, hasło to byłoby przechowywane jako ten sam ciąg hash w pliku haseł. To ujawniłoby fakt, że oba konta mają to samo hasło, pozwalając każdemu, kto zna hasło jednego z nich, na dostęp do drugiego. Poprzez solenie haseł dwoma losowymi znakami, nawet jeśli dwa konta używają tego samego hasła, nikt nie może tego odkryć tylko poprzez czytanie haszy.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *