Konieczność ukrycia soli za hash

W pracy mamy dwie konkurencyjne teorie soli. Produkty, nad którymi pracuję, używają czegoś w rodzaju nazwy użytkownika lub numeru telefonu, aby zasolić hash. Zasadniczo coś, co jest różne dla każdego użytkownika, ale jest dla nas łatwo dostępne. Drugi produkt losowo generuje sól dla każdego użytkownika i zmienia się za każdym razem, gdy użytkownik zmienia hasło. Sól jest następnie szyfrowana w bazie danych.

Moje pytanie brzmi, czy drugie podejście jest naprawdę konieczne? Z czysto teoretycznego punktu widzenia rozumiem, że jest bezpieczniejszy niż pierwsze podejście, ale co z praktycznego punktu widzenia. Teraz, aby uwierzytelnić użytkownika, sól musi być niezaszyfrowana i zastosowana do danych logowania.

Po zastanowieniu się nad tym podejściem po prostu nie widzę prawdziwego zysku bezpieczeństwa. Zmiana soli z konta na konto nadal bardzo utrudnia komuś próbę brutalnego wymuszenia algorytmu mieszania, nawet jeśli atakujący był świadomy tego, jak szybko określić, co to było dla każdego konta. Zakłada się, że hasła są wystarczająco silne. (Oczywiście znalezienie poprawnego skrótu dla zestawu haseł, w których wszystkie są dwiema cyframi, jest znacznie łatwiejsze niż znalezienie właściwego skrótu haseł składających się z 8 cyfr). Czy jestem błędny w mojej logice, czy jest coś, czego brakuje?

EDYTOWAĆ: Dobra, oto powód, dla którego myślę, że szyfrowanie soli jest naprawdę dyskusyjne. (lemme wiem, czy jestem na dobrej drodze).

Dla poniższego wyjaśnienia założymy, że hasła mają zawsze 8 znaków, a sól 5, a wszystkie hasła składają się z małych liter (ułatwia to matematykę).

Posiadanie innej soli dla każdego wpisu oznacza, że ​​nie mogę użyć tej samej tabeli tęczy (właściwie technicznie mogę, jeśli mam taką o odpowiedniej wielkości, ale zignorujmy to na razie). To jest prawdziwy klucz do soli z tego, co rozumiem, ponieważ aby złamać każde konto, muszę wymyślić koło, żeby mówić za każdego. Teraz, jeśli wiem, jak zastosować poprawną sól do hasła w celu wygenerowania skrótu, zrobiłbym to, ponieważ sól naprawdę rozszerza długość / złożoność mieszanej frazy. Więc ograniczyłbym liczbę możliwych kombinacji, które musiałbym wygenerować, aby „wiedzieć”, że mam hasło + sól od 13 ^ 26 do 8 ^ 26, ponieważ wiem, czym jest sól. Teraz to ułatwia, ale wciąż jest bardzo trudne.

Więc na szyfrowanie soli. Jeśli wiem, że sól jest zaszyfrowana, nie próbowałbym jej najpierw odszyfrować (zakładając, że wiem, że ma wystarczający poziom szyfrowania). Zignorowałbym to. Zamiast próbować dowiedzieć się, jak go odszyfrować, wracając do poprzedniego przykładu, po prostu wygenerowałbym większą tabelę tęczy zawierającą wszystkie klucze dla 13 ^ 26. Nieznajomość soli na pewno by mnie spowolniła, ale nie sądzę, by dodało to monumentalnego zadania, jakim jest próba złamania szyfrowania soli. Dlatego nie sądzę, żeby było warto. Myśli?

Oto link opisujący, jak długo hasła będą się trzymać pod atakiem brutalnej siły:http://www.lockdown.co.uk/?pg=combi

questionAnswers(10)

yourAnswerToTheQuestion