Einzelnen Beitrag anzeigen

Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#20

AW: Passwort-Stärke ermitteln (Code und Prüflogik)

  Alt 19. Sep 2010, 09:01
Auf StackOverFlow gibt es auch Anregungen.
Ja, da hab' ich mich für den mittleren Prüfteil insperieren lassen:
Zitat:
* At least one uppercase and one lowercase letter
* At least one number
* At least one special character
wobei ich das in der Schleife im Case-Block prüfe.

Dezeit wird ja geprüft:
  • Eventuell ein Datum? -> auf Zahlen reduzieren (da nur Zahlen sowieso ein schlechtes Ergebnis bringen)
  • Wiederholdende Zeichen? -> nur das erste bewerten (da das scheinbar kein großen Vorteil bringt)
  • Mindestens je ein Groß/KleinBuchstabe, Zahl, Sonderzeichen vorhanden?
  • Anzahl unterschiedlicher Zeichen im Passwort (Entropie)
  • Länge des Passwortes
Punkt 1/2 passen nur das zu prüfende Passwort (intern) an, also schneiden Punkte bzw. Zeichenwiederholungen aus.

Punkt 3 vergibt pro Zeichengruppe einen Multiplikator-Anteil, der später aufaddiert wird. Sind aber nur Groß/Klein-Buchstaben vorhanden, dann wird abgewertet.

Punkt 4 ergibt je nach Anzahl unterschiedlicher Zeichen zu Länge einen Multiplikator

Punkt 5 Bewertet die Länge expentionel, allerdings etwas abgemildert durch die Log2 Funktion

Am Ende steht ein Entropie-Wert (aus Punkt 3/4) und ein Längen-Wert (aus Punkt 4), die miteinander multipliziert das Ergebnis bilden.

Grundsätzlich sind alle in Tutorials vorgeschlagenen Prüfmethoden drin. Ebenso kann man durch etwas probieren, die Anteile der einzelnen Methoden am Gesamtergebnis verschieben. Wer also auf Entropie einen riesen Wert legt, kann das mit "DiffCharsMaxMulti = 100" machen. Was noch fehlt sind erweiterte Prüfungen wie Keybord-Layout-Check, TopTen-Passwörter-Check und wohl zu aufwändig, ein Wörterbuch-Check.

***

Zum Thema Entropie und Passwortlänge:

Kein Mensch/Hacker setzt sich an den PC und probiert manuell zig Tausend Kombinationen an der Tastatur. Es ist entweder ein wissensbasierter Angriff (Geburtstag/Name des Hundes/Passwort-TopTen), der dann einen Glückstreffer bringt oder ein maschineller Angriff auf den Hashcode.

Beim Angriff mit Hashcode wird wohl erst eine Wörterbuch-Attacke (einzelne/kombinierte Wörter einer Sprache) erfolgen und danach simples BruteForce... also alle Zeichenkombinationen/Längen durchprobiert. Da bin ich davon überzeugt, das leichte Entropie und breite Nutzung des Zeichensatzes und vor allem Länge den maximalen Schwierigkeitsgrad bringen. Eine maximale Entropie ist garnicht nötig, es werden sowieso maschinell alle Zeichen durchgetestet, also die Schleifen für jede Zeichenposition immer komplett durchlaufen.

***

Ich lasse mal das ganze etwas ruhen, ich denke es wurde so ziemlich alles zum Thema angesprochen. Für mich arbeitet die Prüfmethode gut und ich werde die (Logik) ins Projekt übernehmen.

Wenn ich mit dem Hauptprojekt weiter bin, werde ich dann hier noch die resultierenden Komponenten anhängen.

Geändert von Satty67 (19. Sep 2010 um 09:35 Uhr)
  Mit Zitat antworten Zitat