UPDATE: Ich habe kürzlich aus dieser Frage gelernt , dass ich (und ich bin sicher, dass andere dies auch getan haben) in der gesamten folgenden Diskussion etwas verwirrend war: Was ich immer wieder als Regenbogentabelle bezeichne, wird tatsächlich als Hash-Tabelle bezeichnet. Regenbogentabellen sind komplexere Kreaturen und tatsächlich eine Variante von Hellman Hash Chains. Obwohl ich glaube, dass die Antwort immer noch dieselbe ist (da es sich nicht um eine Kryptoanalyse handelt), könnte ein Teil der Diskussion etwas verzerrt sein.
Die Frage: " Was sind Regenbogentische und wie werden sie verwendet? "
Normalerweise empfehle ich immer, einen kryptografisch starken Zufallswert als Salt zu verwenden, um ihn mit Hash-Funktionen (z. B. für Passwörter) zu verwenden, z. B. zum Schutz vor Rainbow Table-Angriffen.
Aber ist es tatsächlich kryptografisch notwendig, dass das Salz zufällig ist? Würde ein eindeutiger Wert (eindeutig pro Benutzer, z. B. Benutzer-ID) in dieser Hinsicht ausreichen? Es würde in der Tat verhindern, dass eine einzige Regenbogentabelle verwendet wird, um alle (oder die meisten) Passwörter im System zu knacken ...
Aber schwächt mangelnde Entropie wirklich die kryptografische Stärke der Hash-Funktionen?
Hinweis: Ich frage nicht, warum ich Salz verwenden soll, wie ich es schützen soll (muss es nicht sein), einen einzelnen konstanten Hash verwenden (nicht) oder welche Art von Hash-Funktion ich verwenden soll.
Nur ob Salz Entropie braucht oder nicht.
Vielen Dank für die bisherigen Antworten, aber ich möchte mich auf die Bereiche konzentrieren, mit denen ich (ein wenig) weniger vertraut bin. Hauptsächlich Implikationen für die Kryptoanalyse - Ich würde mich am meisten freuen, wenn jemand einen Beitrag vom krypto-mathematischen PoV hat.
Wenn es zusätzliche Vektoren gibt, die nicht berücksichtigt wurden, ist dies ebenfalls eine großartige Eingabe (siehe @ Dave Sherohman-Punkt auf mehreren Systemen).
Wenn Sie darüber hinaus eine Theorie, Idee oder Best Practice haben, stützen Sie diese bitte entweder mit Beweisen, Angriffsszenarien oder empirischen Beweisen. Oder sogar gültige Überlegungen für akzeptable Kompromisse ... Ich bin mit Best Practice (Kapital B Kapital P) zu diesem Thema vertraut. Ich möchte beweisen, welchen Wert dies tatsächlich bietet.
EDIT: Einige wirklich gute Antworten hier, aber ich denke, wie @Dave sagt, kommt es auf Rainbow Tables für gebräuchliche Benutzernamen an ... und möglicherweise auch weniger gebräuchliche Namen. Was ist jedoch, wenn meine Benutzernamen global eindeutig sind? Nicht unbedingt eindeutig für mein System, sondern für jeden Benutzer - z. B. E-Mail-Adresse.
Es würde keinen Anreiz geben, eine RT für einen einzelnen Benutzer zu erstellen (wie @ Dave betont hat, wird das Salz nicht geheim gehalten), und dies würde immer noch das Clustering verhindern. Das einzige Problem wäre, dass ich möglicherweise dieselbe E-Mail-Adresse und dasselbe Passwort auf einer anderen Site habe - aber Salt würde das sowieso nicht verhindern.
Es kommt also wieder auf die Kryptoanalyse an - IST die Entropie notwendig oder nicht? (Mein derzeitiges Denken ist, dass es aus Sicht der Kryptoanalyse nicht notwendig ist, aber aus anderen praktischen Gründen.)