Die Cracklib Bibliothek

Mit der Cracklib Bibliothek kann man die Stärke (Sicherheit) von Passwörtern testen. Cracklib führt bei der Überprüfung eine Wörterbuch Attacke auf das Passwort aus und prüft die Verteilung der Zeichen bzw. die Länge der Zeichenkette, auch wird die Groß- und Kleinschreibung überprüft und verglichen.

Als Rückgabe erhält man dann verschiedene (englische) Satzteile, wie z.B.: „it is too short“ oder „strong password“. Um diese Funktionen nutzen zu können muss PHP mit der Option –with-crack=/pfad/zu/cracklib kompiliert worden sein. Ausserdem müssen sie aus einer Wörterliste eine binäre Wörterbuchdatei erstellen, dazu liefert cracklib aber schon eine fertige Funktion mit, die sie nur noch über die Kommandozeile ausführen müssen!

Hier mal ein Beispiel für die Anwendung in PHP:

<?php
 // Laden des Wörterbuches
 $dictionary = crack_opendict("/pfad/zur/cracklibdict/cracklib_dict");
 // Prüfen des Passwortes ($password)
 $check = crack_check($dictionary, $password);
 // Rückgabe holen
 $diag = crack_getlastmessage();
 // Rückgabe ausgeben
 echo $diag;
 // Wörterbuch wieder schliessen
 crack_closedict($dictionary);
 ?>

Mögliche Rückgabewerte von crack_getlastmessage() bei Verwendung der cracklib 2.7 sind:

  • it is based on a dictionary word*
  • it is based on a (reversed) dictionary word
  • it’s WAY too short
  • it is too short
  • it does not contain enough DIFFERENT characters
  • it is all whitespace
  • it is too simplistic/systematic
  • it looks like a National Insurance number

Es ist also ganz einfach, die Funktionen der cracklib in seine eigene Anwendung einzubinden. Sie sollte überall dort verwandt werden, wo der Benutzer sein Passwort selbst festlegen kann und sie ihn bei der Passwortwahl unterstützen möchten.

3 Kommentare zu „Die Cracklib Bibliothek

  1. Sehr cool, ich glaube ich bastel mal ein pw-check tool damit :) . Weisst du ob es so eine lib auch für Java gibt?

    Mfg Daniel

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert