2017-01-25 4 views
1

Wenn ein Benutzer sich auf unserer Website registriert, folgen wir einige gut definierte Sicherheitsstandards:Sammeln Passwort Topologien von den Benutzern in einer sicheren Weise

  • ein Salz
  • Hash erzeugen (Salz + Passwort)
  • Speichern Sie das Hash-Passwort und das Salz in der DB

Kürzlich ist ein heißes Thema "Passwort Topologien". Zum Beispiel sollten wir verhindern, dass Benutzer ein Passwort wie Ullllldd (Großbuchstaben, 5-mal Kleinbuchstaben, zwei Ziffern) erzeugen, weil sie so gebräuchlich sind und durch Brute-Force-Angriffe leichter zu knacken sind, wenn der Angreifer sich nur auf diese Topologie konzentriert. Wir möchten nun Informationen zu den häufigsten auf unserer Website verwendeten Topologien generieren. Natürlich können wir die gehashten Passwortinformationen in unserer Datenbank nicht verwenden - wir können die Passwortinformationen aus diesem Hash nicht wiederherstellen. Wir hatten die Idee, eine Topologietabelle beizubehalten, die immer dann gefüllt wird, wenn sich ein neuer Benutzer anmeldet. zum Beispiel:

Benutzer "Joe" registriert mit Passwort "pass". Wir sehen, ob die Topologie "uuuu" bereits existiert. Wenn dies nicht der Fall ist, fügen Sie es mit count = 1 zur Datenbanktabelle hinzu. Wenn dies der Fall ist, erhöhen Sie die Anzahl um 1. Das ist natürlich ein wenig riskant: Wenn unsere db kompromittiert wird, kennt unser Angreifer plötzlich unsere häufigsten Topologien!

Also meine Frage ist: Wie Topologie Informationen zu sammeln und zu speichern, ohne ein neues Sicherheitsrisiko zu schaffen?

Antwort

0

Ihre Datenbank sollte eine Zählung jeder verwendeten Topologie enthalten, ohne dass die Benutzer-ID an die Topologie angehängt wird. Speichern Sie in einer zweiten Tabelle, welche Benutzer-IDs in dieser Datenbank enthalten sind.

Der Trick kommt vom Auffüllen und Aktualisieren der Datenbank. Sammeln und speichern Sie Informationen zu Passwort-Topologien, wenn der Benutzer sein Passwort ändert. Hier können Sie die alte und die neue Topologie berechnen und die Anzahl verringern/erhöhen. Wenn der Benutzer nicht in der Datenbank vertreten ist, fügen Sie sie hinzu und fügen Sie einfach ihre neue Topologie zur Zählung hinzu.

Verwandte Themen