WikiDer > Brute Force (Methode)
rohe Gewalt (Englisch für "brute force") ist der Einsatz von Rechenleistung zur Lösung eines Problems mit a Computer ohne zu benutzen Algorithmen oder Heuristiken um die Berechnung zu beschleunigen. rohe Gewalt wird verwendet, wenn es keine gibt Algorithmus bekanntermaßen schneller oder effizienter zu einer Lösung führt. Die Methode besteht darin, alle möglichen Optionen unverblümt zu testen, bis eine gefunden wird, die der gewünschten Eingabe entspricht.
Passwörter knacken mit rohe Gewalt
rohe Gewalt wird oft verwendet für Riss von Passwörter oder stellen Sie verlorene oder vergessene Passwörter wieder her, die mit Strong verschlüsselt sind Verschlüsselung. Es probiert alle möglichen Kombinationen verfügbarer Zeichen aus. Dies ist aufgrund der sehr langen Dauer eine sehr ineffiziente Methode, aber 100% genau.
Die Formel zur Schätzung der maximalen Zeit zum Auffinden eines Passworts (basierend auf drei Millionen Passwörtern pro Sekunde) lautet:
- Sekunden = ZeichenPositionen/3000000
Beispiel: Wir haben die Möglichkeit, in einem Passwort nur Zahlen und alle Kleinbuchstaben des Alphabets zu verwenden (also 26 10 = 36 verschiedene Zeichen) und das Passwort ist maximal 6 Zeichen lang. Dann dauert es ungefähr 366/3000000 = 725,6 Sekunden, bevor dieses Passwort erraten wird. Beginnt man mit der 95 (alle Zeichen auf der Tastatur) dann dauert es schon 956/3000000 = 245.030 Sekunden, was 68 Stunden entspricht. Wenn Sie das Passwort 7 statt 6 Zeichen lang machen, dauert es jetzt 957/3000000 = 23277910 Sekunden, was 269 Tagen entspricht. Aus diesem Grund wird empfohlen, lange Passwörter zu verwenden. In der Praxis liegt die durchschnittliche Suchzeit für ein korrektes Passwort normalerweise innerhalb eines halben Suchraums: Die obige Formel ermöglicht die Eingabe der Anzahl der ZeichenPositionen durch 2 teilen, um die ungefähre durchschnittliche Suchzeit zu erhalten.
Zum Knacken mit rohe Gewalt Es sollte nicht zu viele mögliche Schlüssel geben. Wenn die Anzahl der möglichen kryptographischen Schlüssel extrem hoch ist, ist auch eine extrem hohe Investition in Rechenleistung und Zeit erforderlich, um einen Schlüssel zu knacken. EIN RSA-Schlüssel besteht aus dem Produkt von zwei Primzahlen und ist daher sehr schwer zu knacken rohe Gewalt. Für die 56 Bits von a DES Schlüssel ist, dass praktisch machbar, für a AES 128-Bit-Schlüssel.
Oft wird ein Angriff eine Kombination aus cleveren Tricks verwenden, die den Suchraum begrenzen und Angriffe in rohe Gewalt auf was bleibt. Daher Schlüssel für asymmetrische Verschlüsselung auch länger sein als der vorherige symmetrische Verschlüsselung um ein ähnliches Sicherheitsniveau zu erreichen – es sind mehr Informationen verfügbar, die helfen können, die Struktur herauszufinden. Auch aus diesem Grund muss die Erstellung von Schlüsseln mit großer Sorgfalt erfolgen, d.h. dass die Entropie des Schlüsselmaterials sollte so hoch wie möglich sein. Wenn ein symmetrischer Schlüssel 112 Bit belegt, aber aufgrund seiner inneren Struktur nur 40 Bit Überraschung enthält, dann kann ein Cracker, der sich damit auskennt, mit brachialer Gewalt einen viel kleineren Suchraum angehen und damit die Erfolgschancen erhöhen.
Die einzige absolut sichere Verschlüsselung, die einem Brute-Force-Angriff oder anderen kryptoanalytischen Angriffen standhält, ist Vernams Einmal-Pad. Dies wurde bewiesen in Claude Shannons Abhandlung "Kommunikationstheorie von Geheimhaltungssystemen". Die korrekte Anwendung stellt den Benutzer jedoch vor enorme Probleme bei der Schlüsselverwaltung.
Anwendung mit MD5-Hashes
Ein Beispiel, wo dies verwendet wird, ist das Abrufen von MD5-Hashes. Angenommen, wir haben ein Passwort als md5-Hash gespeichert:900150983cd24fb0d6963f7d28e17f72
Im Falle eines Brute-Force-Angriffs geht das Cracking-Programm dann alle Möglichkeiten durch:
a = 0cc175b9c0f1b6a831c399e269772661
b = 92eb5ffee6ae2fec3ad71c777531578f
...
aa = 4124bc0a9335c27f086f24ba207a4912
ab = 187ef4436122d1cc2f40dc2b92f0eba0
..
Und am Ende wird es nach rechts kommen:
abc = 900150983cd24fb0d6963f7d28e17f72
Beachten Sie, dass Abc ein anderes Ergebnis als abc liefert, daher sind Dutzende von zusätzlichen Versuchen erforderlich.
Passwörter sollten immer als Hash gespeichert werden. Dies gilt für Windows und für die meisten Webdienste. Dadurch kann das Passwort nie einfach so abgerufen, sondern zurückgesetzt werden (den gespeicherten Hash überschreiben). Dadurch wird verhindert, dass im Falle eines Hackerangriffs auf die Datenbank alle Passwörter sofort sichtbar und verwendet werden.
Andere Anwendungen
Brute-Force-Angriffe gelten nicht nur für MD5-Hashes. NTLM-Hashes (zum Speichern eines Windows-Kennworts) können auch mit dieser Methode entschlüsselt werden. Diese Technik wird auch als „Reverse Engineering“ bezeichnet.
Besitzt der Angreifer den Hash nicht, kann er auch einfach ein Skript schreiben, das alle Möglichkeiten in einem Login-Screen testet. Ein Hash wird normalerweise bevorzugt, da es das Programm nicht benötigt, da das Programm die Anzahl der Anmeldeversuche pro Minute oder pro Stunde einschränken könnte. Außerdem aktualisiert das Programm den Bildschirm bei jedem Versuch mindestens einmal, was wiederum einige Zeit in Anspruch nimmt. Dies mag null erscheinen, aber selbst 3 Millisekunden machen einen großen Unterschied, wenn beispielsweise 3 Millionen Versuche erforderlich sind, um das Passwort zu erraten.
Über das Internet ist es noch langsamer, sehr oft ist eine gewisse Anzahl von Login-Versuchen für a captcha ausgefüllt werden oder man muss zwischen den Versuchen einige Sekunden warten. Auch wenn diese Einschränkungen nicht vorhanden sind, dauert ein einzelner Versuch oft noch 20-200 Millisekunden.
Angenommen, wir haben ein Passwort Za113 und wissen, dass das Passwort nur alphanumerische Zeichen enthält, dann werden knapp 9160000 Versuche benötigt, um das Passwort zu knacken. Diesmal sind bestenfalls 15 Millisekunden eine ganze Weile.
MD5-Hashes können mit der richtigen Software und einem guten Computer mit 500 Millionen Versuchen pro Sekunde versucht werden. Wenn es in einer Datenbank als MD5 gespeichert wäre und diese Datenbank gehackt wurde, würde das Passwort nur 2 Sekunden brauchen, um es zu knacken.
Parallelisierung
Zu rohe GewaltUm Methoden zu beschleunigen, verwenden Programmierer eine Technik namens Parallelisierung. EIN Parallelmaschine teilt die Aufgabe auf möglichst viele separat arbeitende Rechenzellen auf. Anstatt die Möglichkeiten einzeln auszuprobieren, können mehrere Prozessoren oder Systeme mehrere Möglichkeiten gleichzeitig ausprobieren. Dies geht relativ einfach durch Problem in Teile zerlegen und verschiedenen Systemen/Prozessoren zuordnen. Theoretisch kann beispielsweise beim Knacken eines Passworts von beispielsweise 7 Stellen mit einem System mit 4 Prozessoren (SMP-System) die Zeit von 17 Jahren auf etwas mehr als 17/4 = 4,25 Jahre reduziert werden.
Die Methoden können unterschiedlich sein – es ist möglich, die Arbeit zwischen den Zellen zu koordinieren, um Doppelarbeit zu vermeiden (ähnlich dem Ansatz der approach SETIProjekt) oder es ist möglich, dass jede Zelle zufällige Versuche macht (wie in a Chinesische Lotterie). Im letzteren Fall ist die zu erwartende Rechenaufgabe doppelt so hoch, jedoch ohne jeglichen Overhead bei der Steuerung der Rechenzellen.
Der Einsatz der Parallelisierung erfordert zusätzliche Rechenleistung, da Daten aufgeteilt und verteilt werden müssen und eine gegenseitige Kommunikation zwischen den verschiedenen Prozessen (Programmen oder Threads) stattfinden muss. Die Rechenleistung muss daher die Komplexität bzw. Dauer des zu erzielenden Ergebnisses überwiegen.
Schutz vor Brute-Force-Angriffen
Beschränkungen
Achten Sie immer darauf, dass die Anzahl der Login-Versuche pro Stunde und pro Minute beschränkt ist. Zum Beispiel maximal 45 pro Minute, maximal 150 pro Stunde.
Salz-
Verwenden Sie für Hashes (MD5, SHA1, NTLM usw.) immer ein Salt. Ein Salz oder Salz auf Niederländisch verdunkelt das Haschisch.
Wenn Cracker oder Hacker den Hash einiger häufig verwendeter Passwörter kennen und Zugriff auf eine Liste von Hashes erhalten, können sie die Benutzer mit diesen häufig verwendeten Passwörtern sehr einfach extrahieren. Bei einem Salt wird für jeden Benutzer ein zufälliger Salt gespeichert und mit seinem Passwort zusammengeführt, um den Hash zu berechnen. Dadurch erhalten Benutzer mit demselben Passwort einen anderen Hash.
Es funktioniert so:
Angenommen, Funktionen funktionieren wie folgt: Ergebnis = Funktion ( variabel ), eine md5-Funktion könnte so aussehen:hash = md5 ( "abc" )
Das Ergebnis von md5("abc") ist also 900150983cd24fb0d6963f7d28e17f72. Wir könnten das Salt wie folgt anwenden:Variable Salt = "am1MAi1mDA*1msA__"
hash = md5 (salz "abc" )
Dies ist der Komplexitätsfaktor von O(263) Erhöhung auf den Komplexitätsfaktor O(9520). Das heißt, der Unterschied zwischen 17576 Versuchen und ~35848592000000000000000000000000000000000 Versuchen.
Warum die Basis von 26 bis 95 und die Potenz von 3 bis 20?
Die Basiszahl repräsentierte die 26 Buchstaben des Alphabets. Das Passwort abc enthält keine Großbuchstaben, Zahlen oder Zeichen, es gibt also nur 26 Möglichkeiten. Aber wenn auch Zeichen drin sind, werden es plötzlich 95 Zeichen: 26 (Kleinbuchstaben) 26 (Großbuchstaben) 10 (Zahlen) ~!@#$%^&*()_ -=[]|}{;: <>? ,./"'` (einschließlich des letzten Leerzeichens) = 95.
Dann die Potenz von 3 bis 20, dies ist die Länge des gehashten Strings. Zuerst haben wir den Hash von abc (3 Zeichen) berechnet und mit dem Salt haben wir den Hash von am1MAi1mDA*1msA__abc (20 Zeichen) berechnet.
Ein noch stärkerer Hash kann erreicht werden, indem die Hash-Funktion mehrmals auf demselben String ausgeführt wird. Wir nehmen wieder dieselbe Funktionsstruktur an:Variable Salt = "am1MAi1mDA*1msA__"
hash = md5 ( salt "abc" )- die Variable hash lautet jetzt "d39faeb254034fdf0503bd33c6f509d9" -hash = md5 ( hash )- die Variable hash lautet jetzt "1ee5ce0c0ee2c7efe89af6f96c1f15fdf9540" -
Infolgedessen muss ein Cracker zuerst den Text nach 1ee5ce0c0ee2c7efe89af6f96c1f15df und dann den Text nach d39faeb254034fdf0503bd33c6f509d9 abrufen, um zum ursprünglichen Passwort zu gelangen.
Hinweis: Nicht alle Hashfunktionen sind sicher. Manchmal können Kollisionen auftreten, wenn zwei Strings das gleiche Hash-Ergebnis liefern. Zum Beispiel (fiktives Beispiel) könnte es sein, dass "nads91" das gleiche md5-Ergebnis wie "m19d00amms" liefert. Legacy-NTLM-Hashes haben auch eine Schwäche in Bezug auf die Länge, die jedoch in neueren Windows-Versionen durch die Anwendung eines doppelten Hashs behoben wurde. Die Anfälligkeit von kurzen Hashes wird mit SHA1 stark reduziert, aber diese Technik ist langsamer, hat eine größere Ausgabe (24 Bit extra) und wird von anderer Software weniger unterstützt. Sowohl MD5 als auch SHA1 sind heutzutage jedoch einfach zu unsicher und lassen sich selbst mit Salz sehr leicht gewaltsam erzwingen.[1].
Wenn zu viele Operationen mit einer Zeichenfolge ausgeführt werden, ist es außerdem möglich, dass eine andere Zeichenfolge das gleiche Ergebnis liefert (d. h. eine Kollision verursacht). Ein weiteres fiktives Beispiel: abc könnte das gleiche Ergebnis erzeugen wie Salz "abc" Salz. Die Chance ist sehr gering, aber sie ist da.
Tastendehnung
Eine andere Methode, die entwickelt wurde, um zu komplizieren rohe GewaltAngriffe verwendet werden können, ist, ein Passwort zu dehnen. Password Stretching funktioniert, indem Passwörter mit einem stärkeren Salt-Algorithmus verschlüsselt werden. Wir nennen diese Technik Schlüsseldehnung. Je nach verwendetem Salt müssen mindestens einige Tausend Rechenoperationen durchgeführt werden, um die Korrektheit eines gestreckten Passworts zu überprüfen. Diese infundierte Komplexität bei der Überprüfung eines gestreckten Passworts wirkt als Verzögerungsfaktor während eines rohe Gewalt-Attacke.
Key Stretching kann auch einen gewissen Schutz gegen die Verwendung von rohe Gewalt gegen anfangs schwach gewählte Passwörter, da das Vorberechnen und Aufzeichnen aller möglichen Passwort-Hashes in manchen Fällen eine fast unmögliche Aufgabe ist Regenbogentische). Bei Verwendung eines 512-BitSalz- gibt es zum Beispiel 2512 Optionen für jedes Passwort.
Siehe auch
Quellen, Anmerkungen und/oder Verweise
|