Qualität eines gegeben Passworts prüfen

Als Entwickler steht man in der Pflicht die Logins von Benutzer der Software abzusichern. Ein wesentlicher Baustein ist das Forcieren einer Kennwortrichtlinie, um die Qualität eines Passworts sicherzustellen.
Das folgende C#-Snippet bietet eine rudimentäre, für die meisten Anwendungen ausreichende Bewertung des Kennworts. Im Snippet verwende ich ein enum, um einen Passwort Score zu repräsentieren:

  • Blank – 0 Punkte
  • VeryWeak – 1 Punkt
  • Weak – 2 Punkte
  • Medium – 3 Punkte
  • Strong – 4 Punkte
  • VeryStrong – 5 Punkte

Bei der Prüfung des Passworts verwende ich folgendes Regelwerk:

Das Passwort ist eine Zeichenkette mit 0 Zeichen
Es wird der enum-Wert von Blank, also 0 Punkte zurückgegeben.
Das Passwort umfasst weniger als 4 Zeichen
Das Passwort ist als sehr schwach einzustufen, demnach wird der enum-Wert VeryWeak zurückgegeben. Selbst wenn das Passwort die nachfolgenden Kriterien hinsichtlich Sonderzeichen, Zahlen oder gemischter Groß- und Kleinschreibung erfüllen würde, wäre es aufgrund seiner Länge als unsicher einzustufen.
Das Passwort umfasst mindestens 8 Zeichen
Das Scoring wird um einen Punkt erhöht und die Prüfung fortgesetzt.
Das Passwort umfasst mindestens 12 Zeichen
Das Scoring wird um einen Punkt erhöht und die Prüfung fortgesetzt. Da hier bereits die Bediendung „mindestens 8 Zeichen“ erfüllt ist, beträgt das Scoring2 und das Passwort wäre als schwach einzustufen.
Das Passwort enthält mindestens eine Ziffer
Ein weiterer Punkt wird hinzuaddiert und die Prüfung fortgesetzt.
Das Passwort enthält sowohl Klein, als auch Großbuchstaben
Das Scoring wird um einen Punkt erhöht und die Prüfung fortgesetzt.
Das Passwort enthält mindestens 1 Sonderzeichen
Das Scoring wird in dieser letzten Prüfung um eins erhöht. Das Scoring kann nun maximal 5 Punkte betragen. Das Passwort stufe ich somit als sehr stark ein.

Ich möchte betonen, dass die Bewertung nur als grobe Richtlinie betrachtet werden kann. Das Passwort „rush2112“ wird von meinem Bewertungsschema als „medium“ eingestuft, ist jedoch in der von Symantec veröffentlichten Liste der 500 schlechtesten Passwörter enthalten und somit hochgradig unsicher.
Mögliche Ausbaustufen der Richtlinie bestünden darin solche Listen sowie generell Wörterbücher zu berücksichtigen.