Hash-Flooding Attacke



  • Tach auch!

    Ich habe neulich was gelernt [1,2], was den einen oder anderen hier auch interessieren könnte. Und zwar geht es um Hash-Tabellen, bei denen ein Angreifer die Schlüssel wählen kann und mit der Kenntnis der Hash-Funktion dafür sorgen kann, dass die Hash-Tabelle zu einer verketteten Liste degeneriert. In diesem Fall arbeitet die Tabelle sehr langsam, was sich dann für DoS-Attacken nutzen ließe.

    Perl, Python und Ruby hatten dieses Problem bei ihren im Sprachkern eingebauten Hash-Tabellen. Die sind dann aber auf die von D. J. Bernstein und J-P. Aumasson entwickelte Hash-Funktion SipHash umgestiegen, die man über einen zufällig gewählten 128-Bit-Schlüssel parametrisieren kann. Wenn der Angreifer diesen Schlüssen nicht kennt, funktioniert diese Hashflooding Attacke nicht mehr. Dazu ist SipHash auch fast genauso schnell wie seine nichtkryptographischen Vorgänger.

    Wenn ihr also z.B. in C++ eine unordered_map verwendet, bei der ein Angreifer irgendwie Schlüssel-Wert-Paare hinzufügen kann, dann könnte man SipHash mit einem zufällig gewählten Schlüssel verwenden. Von SipHash gibt es schon relativ viele Implementierungen. Das muss man also auch nicht selbst bauen. Vielleicht findet sich so etwas auch bald in Boost. 🙂

    [1] http://events.ccc.de/congress/2012/Fahrplan/events/5152.en.html
    [2] http://www.youtube.com/watch?v=Vdrab3sB7MU



  • Danke für den Hinweis, definitiv interessant. 👍



  • Einer der Entwickler hat das hier gestern getweetet.

    Es gibt also neben den 99 verschiedenen C-Versionen jetzt auch eine C++ Version, die gar nicht mal so übel aussieht.



  • Muss in den Standart rein. Denn das braucht jeder der die unordered_map verwendet.


Anmelden zum Antworten