Tanneks site of Life

'baun, schrauben, wiegen und schmieden Platinen, Kabelsalat, programmieren Maschinen..

Sicherheit von LUKS

Ich stolpere mit der Tuer mal direkt ins Haus:


Bruteforce auf der GPU ist schnell & Cryptcontainer erstellt auf langsamen CPUs sind unsicherer.


 Das unter Linux weit verbreitete Harddrive-verschluesselstool cryptsetup nutzt um aus einem Password ein Schluessel zu machen die aufwendige Hashfunktion PBKDF2.
Auf dem gleichen Hashverfahren basieren auch viele andere Sachen wie 1Password, WPA oder auch TrueCrypt. Und genau zu letzterem hat der Programmierer hinter ocl-hashcat jetzt Zahlen zu GPU-basierten Bruteforce Angriff veroeffentlicht:



  • PBKDF2-HMAC-RipeMD160 / AES: 223 kHash/s

  • PBKDF2-HMAC-SHA512 / AES: 95 kHash/s


Damit ist TrueCrypt im worstcase bei 8-stelligen Kleinbuchstaben-Passwoertern in wenigen Tagen geknackt.


Auf LUKS (dm-crypt/cryptsetup) ist dies uebertragbar:



  1. Die Schwierigkeit und damit die Geschwindigkeit von PBKDF2 wird durch die Anzahl der Runden/Iterationen festgelegt.

    TrueCrypt hat (nach meiner Recherche) fest 1000 Iterationen.

    Bei LUKS ist dies is laut Wikieintrag bei Default=10, wird aber von cryptsetup beim erzeugen des Containers von der CPU-Geschwindigkeit abhaengig festgelegt. Ein schneller Rechner erzeugt also ein sicheren Container, als ein langsamer. Mein DualCore Notebook erzeugt 63758 Iterations; auf einem P4 komm ich nur auf 45212. Selbst auszulesen ist dies durch:

    # cryptsetup luksDump /dev/sda

    Und dann auf die Zeile: "Iterations:" achten.



  2. Das von LUKS bei PBKDF2 eingesetzte Hash-Verfahren kann laut Wikieintrag RipeMD160 oder SHA1 sein.
    Alle meine Container nutzen SHA1. Ebenfalls durch oben erwaehnten Befehl selbst nachschlagbar.
    Da von atom nur SHA512 implementiert wurde, kommen fuer eine Umrechnung von SHA512 Hashs/s nach SHA1 Hashs/s der PC3 (der wohl auch fuer die TrueCrypt-Benchmarks benutzt wurde) aus der Tabelle von Hashcat selbst. 3081/152 ist ungefaehr 20. Was bedeutet, dass SHA1 20x so schnell wie SHA512 berechnet werden kann.


Fuer den Container auf meinem Notebook kann man nun folgende Geschwindigkeit abschaetzen:


1000/63758 x 20 x 95k Hashs /s  = 29,8 k Hashs/s


Was fuer ein 8-stelliges Kleinbuchstaben-password 80Tage bedeutet.



Bei der Default-Einstellung von 10-Iterationen hingegen:


1000/10 x 20 x 95k Hashs /s = 190 000 k Hashs/s


 Was fuer 8-stellige Kleinbuchstaben 18 Minuten, fuer 8-stellige Klein/Gross/Zahlen/Sonderzeichen 1,2 Jahre bedeutet.


Da ich leider keine alten Cryptcontainer zur Hand habe, kann ich nicht beurteilen welche Werte realistisch da drin stehen. Kann aber nur davon abraten kurze Passwoerter zu benutzten. Denn der Entwickler von ocl-hashcat nutzt auch Linux. Es ist also nur eine Frage der Zeit, bis das Tool auch LUKS angreifen kann.

Wer billig kauft, kauft zweimal

Seit fast einem Jahr haengt zwischen meinem Standrechner und meinem Router ein GB/s-Switch den ich mal fuer 12Euro wo mitbestellt hatte. Gestern ist es aber zum  Eklat gekommen:


Kurz nachdem ich eine GIGAntische Menge an nichtweiter-zu-spezifizierenden Daten zwischen PC und Notebook ausgetauscht habe war das Internet am PC kaputt.
Ping PC->router zeigte einen Verlust von knapp 30%, ping PC->Notebook(wlan-nic) ebenfalls und im tcpdump am Notebook tauchte auch nicht jedes pingpaket auf. Da ich keine doppelt vergebenen IPs/MACs finden konnte habe ich, mehr aus einer Not an mangelnden Ideen, den Switch am Schreibtisch gepowercycled und siehe da: Alles geht wieder.


Im Nachinein betrachtet musste ich auch feststellen, das die Geschwindigkeit des Eingangs erwaehnten Datentransfers doch beachtlich abgenommen haben muss. So hatte ich am Anfang noch 30MB/s beobachtet, eine Ueberschlagsrechnung von der Gesamtmenge / Zeit  bringt es aber auf unter 5MB/s.


Wenn sich das haeuft, werd ich mir wohl einen neuen Switch besorgen muessen... Hat da wer gute Erfahrung und eine Empfehlung?

Serendipity Blogsoftware, PHP 5 und Strict-mode

Meine Blogsoftware warf nachdem update auf Wheezy einen Haufen an PHP-Warnings.


Die Fehlerquelle war schnell gefunden (die meisten plugins benutzten die Blog-API nicht ganz nach PHP-spezifikation), die Loesung war auch schon in naehe: Ein update auf 1.7_rc3 mit automatischen update der plugins.


Leider verlief das dann doch nicht so wie im updateguide angegeben... /: Hier aber im schnellen meine Loesungen zum Erfolg:





  • baseURL braucht jetzt ein trailing '/'

  • serendipityHTTPPath muss stimmen (per weboberflaeche aendern!! nicht in der mysqldb, weil da noch ein paar hooks dranhaengen)

  • Einen anderen Style auswaehlen, damit das neugenerieren des Styles neu angeschmissen wird

  • aus der .htaccess multiview auskommentieren (das liegt wohl an der lokalen Serverconfig hier)