Dies ist wirklich eher ein Nachtrag zu @ Brians kluger Antwort. Hats off auch an @Martijn Pieters für das Hinzufügen von Details darüber, wie man die alten Passwörter basierend auf dem aktuellen brutal erzwingt, und an @ratchet freak für "Hamming Distance". Ich lösche meine Antwort nicht, weil ich denke, dass sie einen interessanten Hintergrund für die Sicherung bietet.
Für die Speicherung von Kennwörtern nach dem neuesten Stand der Technik müssen mehrere Runden eines starken kryptografischen Einweg-Hashs (SHA-512 +) mit eindeutigem Salt (128-Bit +) für jeden Benutzer verwendet werden. Sie sollten jedoch nicht versucht sein, zusätzliche Informationen zu jedem Kennwort zu speichern. Je mehr Informationen Sie zu jedem Kennwort speichern, desto mehr gefährden Sie die Sicherheit Ihres Hashing-Algorithmus.
Beispiel
Überlegen Sie, wie einfach es wird, ein Kennwort zu erzwingen, wenn Sie Folgendes wissen:
- Es ist 7 Zeichen lang
- Die Zeichen 3 bis 5 sind in Großbuchstaben geschrieben (4 ist in Kleinbuchstaben).
- 1 und 7 sind Zahlen
- 6 ist ein Symbol
Eine US-Tastatur hat 95 druckbare Zeichen. Wenn Sie also wissen, dass das Kennwort 7 Zeichen lang ist, erhalten Sie 95 ^ 7 = 69.833.729.610.000 = 7x10 ^ 13 Permutationen. Wenn es wirklich zufällig wäre, könnte es ein Jahr dauern, bis dies auf einem einzelnen 3 GHz-Prozessor geknackt ist. Aber:
- Es gibt nur 26 Groß- und 26 Kleinbuchstaben
- Es gibt nur 10 Ziffern, die 100 Möglichkeiten für diese beiden Zahlen ergeben
- Es gibt nur 32 Symbole
Also (korrigiert dank @Hellion):
26^4 (charcters 2-5 are known upper or lower-case)
x 100 (characters 1 & 7 are digits)
x 32 (character 6 is a symbol)
====
1,462,323,200 possible passwords.
Das ist 50.000 Mal einfacher zu knacken! Das Speichern guter Informationen, um in diesem Fall ähnliche Passwörter zu vermeiden, hat Ihre Zeit für ein 7-stelliges Passwort von einem Jahr auf ein paar Stunden verkürzt. Das Entschlüsseln all Ihrer Passwörter mit einem leistungsstarken Multiprozessor-Desktop mit einer guten Grafikkarte und ein wenig Geduld ist jetzt sehr realisierbar. Ich hoffe, dieses einfache Beispiel zeigt, dass Ihr Hashing umso weniger sicher ist, je aussagekräftiger Sie ähnliche Passwörter vergleichen können.
Wichtigkeit von starkem Hashing
Datenbanken mit Passwörtern werden regelmäßig gestohlen, und es kommt jeden Monat zu gewaltigen Einbrüchen in die Nachrichten. Mist, erst letzten Monat hat der Staat SC alle Sozialversicherungsnummern verloren - hoppla! Wie viele dieser Verstöße sind noch vertuscht?
Schlussgedanke
Das Beängstigendste für mich ist, wenn Benutzer dasselbe oder ein ähnliches Passwort für mehrere Websites auswählen, damit der Angreifer auf alle zugreifen kann. Ich würde gerne eine bewährte Methode zur Verhinderung dieser Situation sehen, obwohl ich denke, dass das Verhindern der häufigsten falschen Kennwörter mehr hilft als zu verhindern, dass ein einzelner Benutzer sein falsches Kennwort auf derselben Site erneut verwendet. Das Beste, was ich vorschlagen kann, ist eine unternehmensweite Richtlinie für die Verwendung eines sicheren Passwort-Managers, der höchst zufällige Passwörter für jeden Ihrer Benutzer generiert und diese sicher speichert.