Wiederverwendung von 5-unabhängigen Hash-Funktionen für die lineare Abtastung


14

In Hash-Tabellen, die Kollisionen durch lineares Abtasten auflösen , ist es sowohl erforderlich als auch ausreichend, dass die Hash-Funktion aus einer 5-unabhängigen Familie stammt, um die erwartete Leistung von sicherzustellen . (Suffizienz: "Lineares Testen mit konstanter Unabhängigkeit", Pagh et al. , Notwendigkeit: "Zur k-Unabhängigkeit, die für lineares Testen und min. Unabhängigkeit erforderlich ist", Pătraşcu und Thorup )Ö(1)

Nach meinem Verständnis verwenden die schnellsten bekannten fünf unabhängigen Familien die Tabellierung. Die Auswahl einer Funktion aus einer solchen Familie kann teuer sein. Daher möchte ich die Häufigkeit meiner Angriffe minimieren und dennoch Angriffe auf algorithmische Komplexität verhindern, wie in Crosby und Wallachs "Denial of Service via Algorithmic Complexity Attacks" beschrieben . Ich mache mir weniger Sorgen über Timing-Angriffe (dh Gegner mit Stoppuhren). Welche Konsequenzen hat die Wiederverwendung derselben Funktion:

  1. Wenn eine Hash-Tabelle wächst, die zu voll ist?
  2. Wenn Sie eine Hash-Tabelle verkleinern, die nicht voll genug ist?
  3. Beim Neuerstellen einer Hash-Tabelle, bei der zu viele "gelöschte" Bits gesetzt sind?
  4. In verschiedenen Hash-Tabellen, die einige gemeinsame Schlüssel enthalten können?k
  5. In verschiedenen Hash-Tabellen, die keine gemeinsamen Schlüssel enthalten?k

Wenn dies eine Frage der Praxis ist ... Ein plausibler pragmatischer Ansatz ist die Verwendung einer kryptografischen Hash-Funktion, bei der ein zufälliges Geheimnis in die Eingabe einbezogen wird, anstelle eines auf Tabellen basierenden Schemas. Dann ist der Druck geringer, dieselbe Hash-Funktion wiederzuverwenden. Sie können für jede Hash-Tabelle ein anderes Geheimnis verwenden (und das Geheimnis ändern und alles neu aufbereiten, wenn Sie die Hash-Tabelle verkleinern / vergrößern / neu erstellen).
DW

Ich denke, selbst schnelle kryptografische Hash-Funktionen für kurze Eingaben wie SipHash-2-4 sind im Vergleich zu 5-unabhängigen Familien, die Polynome verwenden, ziemlich langsam.
Jbapple

Antworten:


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.