AKTUALIZACJA: Niedawno dowiedziałem się z tego pytania, że w całej dyskusji poniżej ja (i jestem pewien, że inni też) byłem nieco zagmatwany: to, co wciąż nazywam tęczowym stołem, tak naprawdę nazywa się tablicą mieszającą. Tęczowe stoły są bardziej złożonymi stworzeniami i są w rzeczywistości wariantem Hellman Hash Chains. Chociaż uważam, że odpowiedź jest nadal taka sama (ponieważ nie sprowadza się ona do kryptoanalizy), część dyskusji może być nieco wypaczona.
Pytanie: „ Co to są tęczowe tablice i jak są używane? ”
Zwykle zawsze zalecam użycie silnej kryptograficznie wartości losowej jako soli, która ma być używana z funkcjami skrótu (np. Do haseł), na przykład w celu ochrony przed atakami Rainbow Table.
Ale czy rzeczywiście kryptograficznie konieczne jest, aby sól była losowa? Czy jakakolwiek unikalna wartość (unikalna dla użytkownika, np. UserId) byłaby wystarczająca w tym zakresie? W rzeczywistości uniemożliwiłoby to użycie jednej Rainbow Table do złamania wszystkich (lub większości) haseł w systemie ...
Ale czy brak entropii naprawdę osłabia siłę kryptograficzną funkcji skrótu?
Uwaga, nie pytam o to, dlaczego używać soli, jak ją chronić (nie musi), używając pojedynczego stałego skrótu (nie), ani jakiego rodzaju funkcji skrótu użyć.
Tylko czy sól potrzebuje entropii, czy nie.
Dziękuję wszystkim za dotychczasowe odpowiedzi, ale chciałbym skupić się na obszarach, które (trochę) mniej znam. Głównie implikacje dla kryptoanalizy - byłbym wdzięczny najbardziej, gdyby ktoś miał jakiś wkład z krypto-matematycznego punktu widzenia.
Ponadto, jeśli istnieją dodatkowe wektory, które nie były brane pod uwagę, to również jest świetny wkład (patrz punkt @Dave Sherohman na temat wielu systemów).
Poza tym, jeśli masz jakąkolwiek teorię, pomysł lub najlepszą praktykę - poprzyj to dowodem, scenariuszem ataku lub dowodami empirycznymi. Lub nawet ważne rozważania na temat akceptowalnych kompromisów ... Znam najlepsze praktyki (duże B, duże P) w tym temacie, chciałbym udowodnić, jaką wartość to faktycznie zapewnia.
EDYCJA: Kilka naprawdę dobrych odpowiedzi, ale myślę, że jak mówi @Dave, sprowadza się to do Rainbow Tables dla typowych nazw użytkowników ... i prawdopodobnie mniej popularnych nazw. A co, jeśli moje nazwy użytkownika są unikalne w skali globalnej? Niekoniecznie unikalne dla mojego systemu, ale dla każdego użytkownika - np. Adres e-mail.
Nie byłoby zachęty do budowania RT dla pojedynczego użytkownika (jak podkreślił @Dave, sól nie jest utrzymywana w tajemnicy), a to nadal zapobiegałoby tworzeniu się klastrów. Jedynym problemem byłoby to, że mógłbym mieć ten sam adres e-mail i hasło na innej stronie - ale sól i tak by temu nie zapobiegła.
Wracamy więc do kryptoanalizy - czy entropia jest konieczna, czy nie? (Obecnie sądzę, że nie jest to konieczne z punktu widzenia kryptoanalizy, ale wynika to z innych praktycznych powodów).