Die Art des Passworts, das Sie erstellen sollten, hängt stark davon ab, wie das Passwort gespeichert wird.
Vor Jahren waren zufällige Passwörter mit acht Zeichen, bestehend aus Groß- und Kleinbuchstaben, Symbolen und Zahlen, wirklich schwer zu knacken. In einigen Fällen dauerte es Jahre, ein solches Passwort zu knacken.
Dank der heutigen sich ändernden Technologie und mietbaren Maschinen konnte diese Zeit auf Stunden reduziert werden. Doch wie werden diese Passwörter überhaupt gespeichert?
Wie Passwörter online gespeichert werden
Systeme speichern Benutzerkennwörter nicht direkt in Dateien oder Datenbanken, da Angreifer die Datenbank übernehmen können, in der die Systeme die Kennwörter aufbewahren. Stattdessen verschlüsseln Systeme Benutzerkennwörter und Angreifer stoßen auf eine verschlüsselte Version jedes Kennworts.
Es gibt einige Algorithmen, die Systeme zum Verschlüsseln von Passwörtern verwenden. Einer dieser Algorithmen ist der symmetrische Algorithmus. Der symmetrische Algorithmus ist eine Art Verschlüsselung
Dabei können Sie denselben Schlüssel sowohl für die Verschlüsselung als auch für die Entschlüsselung verwenden. Der Schlüssel, den Sie zum Verschlüsseln der Daten verwenden, ist sowohl für die Verschlüsselung als auch für die Entschlüsselung derselbe. Die Sicherheit symmetrischer Algorithmen birgt einige Risiken, da es nur einen Schlüssel zur Entschlüsselung gibt. Aus diesem Grund verwenden Systeme in der Regel keine symmetrischen Algorithmen zur Passwortverschlüsselung.Im Allgemeinen verwenden Systeme zur Verschlüsselung Hash-Algorithmen. Hash-Algorithmen dienen der Überprüfung und Darstellung der Integrität von Daten und nicht der Verschlüsselung von Daten. Hash-Algorithmen konvertieren Daten in einen Hash fester Größe. Diese Hashes stellen normalerweise einen eindeutigen Daten-Hash dar.
Dank des Hash-Algorithmus kann ein Angreifer, wenn er die Passwortdatenbank übernommen hat, von hier aus nicht rückwärts auf das Passwort zugreifen. Es gibt eine sehr wichtige Nuance, auf die Sie hier achten sollten. Theoretisch kann ein Angreifer, der ein System kompromittiert, das für alle Passwortkombinationen denselben Hash-Algorithmus verwendet, die erhaltenen Ergebnisse vergleichen. Ergibt der Angreifer als Ergebnis dieser Vergleiche den gleichen Wert, hat er herausgefunden, wie die offene Version des Passworts lautet. Bei dieser Methode dreht sich alles um Versuch und Irrtum, und diese Form des Angriffs ist es auch wird im Allgemeinen als Brute-Force-Angriff bezeichnet.
Zu Beginn der 2000er Jahre konnte es Hunderte von Jahren dauern, alle Kombinationen für 8-stellige Passwörter auszuprobieren, die mit gängigen Hashing-Algorithmen verschlüsselt wurden. Sehr einfache Kombinationen wie „123456“ oder „mein Passwort“ sind in diesem Set natürlich nicht enthalten. Mit der Entwicklung der heutigen Software- und Hardwaretechnologien hat sich auch die Methode zum Knacken von Passwörtern stark verändert.
Die Auswirkungen neuer GPUs
Die parallelen Datenverarbeitungsfunktionen von Grafikprozessoren (GPUs) haben sich im Laufe der Zeit verbessert. GPUs sind nicht in der Lage, vielseitige Vorgänge wie Allzweck-CPUs auszuführen. Also obwohl es welche gibt So viele Kerne und parallele Rechenleistung, dass es keinen Sinn macht, sie für fast jedes Problem zu verwenden ZENTRALPROZESSOR.
Dennoch ist es möglich, einige für Passwörter verwendete Hash-Algorithmen recht effizient auf der GPU auszuführen. Die berechenbaren Hashes pro Sekunde, die Sie mit herkömmlichen CPUs erreichen können, sind mit neuen GPU-Plattformen enorm gestiegen.
Um eine Vorstellung zu bekommen, untersuchen Sie die Hashing-Zahlen pro Sekunde von Hash-Algorithmen wie NTLM, MD5 und SHA1 in der folgenden Tabelle. Zunächst reicht es zu wissen, dass es sich bei diesen Algorithmen lediglich um Hash-Algorithmen handelt. Um diese Tabelle zu erstellen, habe ich ein Clustersystem bestehend aus 25 AMD Radeon GPUs verwendet.
Algorithmus |
Hashings pro Sekunde |
NTLM |
350.000.000.000 |
MD5 |
180.000.000.000 |
SHA1 |
63.000.000.000 |
SHA512Crypt |
364.000 |
Bcrypt |
71.000 |
Verschlüsseln |
33.000 |
Wie Sie sehen, können Sie mit einem solchen System 350 Milliarden Mal pro Sekunde NTLM-Hashes generieren. Das bedeutet, dass Sie alle Kombinationen eines 8-stelligen Passworts in weniger als 6 Stunden ausprobieren können. Darüber hinaus ist die Hardware in diesem Beispiel Jahre alt. Stellen Sie sich die heutigen Fähigkeiten zum Knacken von Passwörtern vor.
Was sollten Softwareentwickler tun?
Der Weg, den Programmierer gehen sollten, ist ganz einfach: Sie sollten bei der Verschlüsselung von Passwörtern Algorithmen bevorzugen, die länger für die Berechnung von Hash-Werten benötigen. Entwickler müssen nicht nur etwas über die Leistung des Algorithmus lernen, den sie auf der CPU verwenden, sondern auch darüber, wie widerstandsfähig er gegenüber der GPU-Welt ist.
Wenn Entwickler mit einem Software-Framework arbeiten, das auch Passwortverschlüsselungsverfahren wie Django, Ruby anspricht Rails und Spring Security sollten sie prüfen, ob innerhalb des Frameworks die richtigen Entscheidungen getroffen wurden Sicherheit.
Zum Beispiel, Entwickeln, eine der am häufigsten verwendeten Bibliotheken für Benutzeroperationen in Ruby on Rails, verwendet Bcrypt als Standard-Hash-Algorithmus. Sie können damit auch eine andere Methode als Hash-Algorithmus verwenden. Der Bcrypt-Algorithmus ist zuverlässig, da es immer noch sehr lange dauert, bis die GPU kaputt geht.
Zusammenfassend gilt: Je länger die Berechnung des Hashwerts dauert, desto sicherer sind Sie.
Wie viele Zeichen sollte Ihr Passwort haben?
Jedes zusätzliche Zeichen, das Sie verwenden, erhöht geometrisch die Anzahl der Versuche und Irrtümer, die zum Knacken Ihres Passworts erforderlich sind, und macht Ihr Passwort sicherer.
Betrachten wir diese Situation anhand zweier verschiedener Szenarien. Betrachten Sie die Werte in der obigen Tabelle für den NTLM-Hash-Algorithmus und stellen Sie sich vor, Sie würden versuchen, das Passwort zu knacken. Stellen Sie sich vor, Sie zielen auf Passwörter mit acht oder mehr Zeichen ab.
Anzahl von Charakteren |
Groß-/Kleinbuchstaben und Zahlen |
Groß-/Kleinbuchstaben, Zahlen und Sonderzeichen |
8 |
weniger als 1 Minute |
2 Minuten |
9 |
2 Minuten |
2 Stunden |
10 |
2 Stunden |
1 Woche |
11 |
6 Tage |
2 Jahre |
12 |
1 Jahr |
200 Jahre |
13 |
mehr als 100 Jahre |
mehr als 1000 Jahre |
Wenn Sie sich die Tabelle ansehen, können Sie erkennen, dass die Verwendung eines Passworts mit mindestens 12 Zeichen sicher ist, wenn Sie alle Kombinationen aus Groß-/Kleinbuchstaben, Zahlen und Sonderzeichen verwenden. Wenn Sie keine Sonderzeichen verwenden, müssen Sie als sicheres Passwort eine Länge von 13 Zeichen verwenden. Wenn Sie in diesem System die Bcrypt-Hash-Methode anstelle des NTLM-Hashs verwenden würden, wären 8 Zeichen ausreichend. Sie haben jedoch nicht die Möglichkeit zu erfahren, mit welcher Hash-Methode ein System, auf das Sie über das Internet zugreifen, Ihr Passwort speichert. Deshalb sollten Sie alle Möglichkeiten in Betracht ziehen.
Das Hauptproblem für Softwareentwickler besteht darin, dass es nahezu unmöglich ist, Benutzer davon zu überzeugen, ein Passwort mit mindestens 12 Zeichen zu haben. Man kann heute davon ausgehen, dass die Nutzungsrate von Passwörtern dieser Länge gering ist. Daher muss je nach Nutzungsszenario des entwickelten Systems ein Mittelweg gefunden werden, der von den Benutzern akzeptiert wird um ihre Passwortsicherheit zu verbessern.
Ein letzter Vorschlag für Entwickler besteht darin, nicht nur die Mindestlänge, sondern auch die Maximallänge der Eingaben zu überprüfen, die über die Formulare eingehen, die Sie dem Benutzer präsentiert haben. Vor allem, wenn Sie aus Sicherheitsgründen die Verwendung eines langsam zu berechnenden Hash-Algorithmus wie Bcrypt aktivieren Wenn Sie die maximale Länge des von Ihnen eingegebenen Passworts nicht kontrollieren, kann es zu Risiken kommen der Benutzer. Angreifer können beispielsweise Angriffe durchführen, indem sie mit einigen speziell vorbereiteten Anfragen Dutzende Passwörter mit 100.000 Zeichen gleichzeitig ausprobieren. In einem solchen Fall ist es sehr wahrscheinlich, dass Ihr System nicht mehr auf andere Benutzer reagiert.
Hinweise für Endbenutzer
Stellen Sie sicher, dass Ihr Passwort mindestens 12 Zeichen lang ist und dass es Groß- und Kleinbuchstabenkombinationen, Zahlen und Symbole enthält. Vergessen Sie nie, dass die Systeme, in denen Ihr Passwort gespeichert ist, gehackt werden können und Ihre Daten missbraucht werden können. Sie können nicht wissen, welche Algorithmen ein System zum Verschlüsseln Ihres Passworts verwendet. Daher liegt es ganz bei Ihnen, Vorsichtsmaßnahmen zu treffen und sichere Passwörter zu erstellen.