calc.pw: Sich selbst angreifen und besser werden

Gestern habe ich die neue Version 0.4.0 der Bibliothek cryptuino und damit auch eine neue Version von calc.pw selbst veröffentlicht. Hintergrund war eine Analyse, die ich an der Passwortgenerierung vorgenommen habe. Die Behebung war einfach, trotzdem wollte ich die Beweggründe gerne einmal (auch für mich) niederschreiben. Schließlich lernt man aus Fehlern. 🙂

Bei der Generierung der Passwörter gibt es im Grunde 4 Schritte:

  1. das temporäre Passwort erzeugen
  2. die temporäre Information erzeugen
  3. die temporäre Information mit dem temporären Passwort verschlüsseln
  4. das Ergebnis kürzen und Sonderzeichen behandeln

Beim zweiten Schritt wird unter anderem dafür gesorgt, dass aus der kurzen Information, die man eingibt, ein längerer Datenstrom wird, sodass Passwörter generiert werden können, die länger als die eigentliche Information sind. Diese Expansion erfolgte bisher durch initiales hashen der Information und anschließendem Berechnen von HMACs. Auf diese Weise war die temporäre Information ausschließlich abhängig von der eingegebenen Information.

Hier nun die Krux daran: Die im dritten Schritt verwendete Verschlüsselung Arc4 ist relativ einfach. Es wird ein pseudozufälliger Datenstrom aus dem Passwort erzeugt und die Information damit geXORt. Das kann gefährlich werden. Denn calc.pw soll es ja ermöglichen, einfache Dienstnamen als Informationen zu verwenden. Diese kann sich jedoch auch ein Angreifer überlegen. Wenn dieser nun also ein Passwort hat und zu diesem die korrekte Information herausfindet, findet er einen Teil des von Arc4 erzeugten, pseudozufälligen Datenstroms. Das ist noch lange nicht das eigentliche Masterpasswort (dazwischen liegen noch zwei weitere Hürden), aber es ist zumindest ein Anfang. Solche Angriffe auf die Informationen könnte man sogar beschleunigen, da sie unabhängig vom verwendeten Masterpasswort sind. Man könnte sich ein Wörterbuch anlegen, das für eine definierte Information (z.B. "twitter.com") bereits die temporäre, expandierte Information liefert.

Um den oben skizzierten Angriff zu verhindern, wurde in der neuen Version die Erzeugung der temporären Information modifiziert. Anstatt nun lediglich die Information zu hashen und durch HMACs zu expandieren, wird das temporäre Passwort gehasht und durch HMACs expandiert. Dieses temporäre Passwort ist bereits abhängig von der Information und dem Masterpasswort. Auf diese Weise reicht es nicht aus, die Information zu erraten. Man bräuchte zusätzlich das Masterpasswort, um an diese temporäre Information zu gelangen. Dadurch werden auch die eben angesprochenen Wörterbuch-Attacken verhindert.
Wörterbuch-wälzende Grüße, Kenny

Schreibe einen Kommentar

Um Ihnen beim weiteren Kommentieren auf dieser Webseite die erneute Eingabe Ihrer Daten zu ersparen, wird beim Absenden Ihres Kommentars ein Cookie an Ihren Browser gesendet und von diesem gespeichert. Mit dem Absenden eines Kommentars auf dieser Webseite stimmen Sie der Speicherung und Übertragung dieses Cookies explizit zu.

Pflichtfelder sind mit * markiert.