Frage:
Wie werden GPUs bei Brute-Force-Angriffen eingesetzt?
Mahmood Muhammad Nageeb
2016-03-22 00:50:40 UTC
view on stackexchange narkive permalink

Ich habe gelesen, dass GPUs bei Brute-Force-Angriffen eingesetzt werden können. Aber wie kann das gemacht werden und werden andere Hardwaregeräte benötigt (z. B. Festplatten)?

Hinweis: Ich bin mehr an der Sicherheit von Webanwendungen interessiert, möchte dies aber nicht tun auf Scheuklappen. Es tut mir leid, wenn meine Frage für Sie lächerlich ist, aber mein Hardware-Hintergrund ist nicht sehr gut. Ich weiß nur, wie grundlegende Komponenten zusammenarbeiten und wie man sie kombiniert.

Da ich nicht kommentieren kann: Zum Beispiel könnte ich mit John the Ripper mit der CPU ungefähr 33 Millionen MD5-Hashes pro Sekunde und mit OclHashcat und der GPU ungefähr 11,8 Milliarden Hashes pro Sekunde berechnen. Ich habe dies kürzlich im Rahmen einer Sicherheitsklassenzuweisung getestet.
Es hilft, die Zeit totzuschlagen, während die CPU Bruteforce ausführt: P.
Sieben antworten:
Phil Lello
2016-03-22 01:04:21 UTC
view on stackexchange narkive permalink

Ich gehe davon aus, dass Sie sich fragen, warum dies ein Risiko ist und nicht, wie man hackt.

GPUs sind sehr gut darin, mathematische Operationen zu parallelisieren, die sowohl die Grundlage für Computergrafik als auch für Kryptografie bilden. Normalerweise wird die GPU entweder mit CUDA oder OpenCL programmiert. Der Grund, warum sie für Brute-Force-Angriffe gut sind, ist, dass sie für bestimmte Vorgänge um Größenordnungen schneller sind als eine CPU - sie sind nicht auffallend schlauer.

Dieselben Vorgänge können auf einer CPU ausgeführt werden , sie dauern nur länger.

Vielen Dank! Ich möchte nicht wissen, wie man hackt, ich möchte nur die Idee verstehen. Die verwendete Software überzeugt die GPU also davon, dass sie auf einem Computer funktioniert?
@MahmudMuhammadNaguib Es verwendet die GPU für einen Nicht-Grafik-Vorgang - was heutzutage vom Design her eher erlaubt ist (früher war es kreativer Hacker). Der Prozess wird von einem normalen Programm initiiert.
Vielen Dank! Das ist sehr kreativ und diese Leute sind echte Hacker! Glauben Sie, dass Unternehmen das Design in Zukunft ändern werden, sodass GPUs nicht für diesen Zweck verwendet werden können, und ist dies möglich (da grafische Operationen auch einige mathematische Operationen umfassen)?
@MahmudMuhammadNaguib Auf keinen Fall! Während sie zum Brute-Forcing verwendet werden können, können die gleichen Fähigkeiten für Tonnen anderer nützlicher Dinge verwendet werden. Der Trend geht dahin, dass GPUs immer besser darin werden, Dinge zu tun, die nicht streng genommen Grafiken sind. Und dieser Trend existiert, weil sie immer mehr dafür genutzt werden.
@MahmudMuhammadNaguib Ich denke, der Trend geht dahin, GPUs mit der CPU auf den Chip zu setzen, um hochparallele nicht grafische Operationen zu unterstützen. Ich sehe nicht ein, wie es GPU-Herstellern nützen würde, Nicht-Grafik-Operationen einzuschränken. Ich bin hier allerdings etwas außerhalb meiner Nische.
Ich verstehe, ich respektiere Spezialisierungen.
Um den Kommentar von @Bakuriu's zu unterstreichen, wurde die CUDA-API von nVIDIA speziell entwickelt, damit Entwickler ihre GPUs für nicht-grafische Zwecke verwenden können. Sie fördern nachdrücklich den kreativen Einsatz ihrer GPUs, weil sie hoffen, mehr davon als Beschleuniger für die Computerleistung zu verkaufen. Es sollte nicht als Hacking betrachtet werden, dies ist alles die gängige Verwendung von GPUs, um massiv parallele Berechnungen durchzuführen.
Da es sich um Nvidia handelt, schauen Sie sich einige Bilder ihrer Tesla-Karten an - "[Diese sind ausschließlich für Computer gedacht, daher haben viele von ihnen nicht einmal eine Videoausgabe] (http://blog.goldenhelix.com) / mthiesen / i-will-eine-gpu-für-rechnerische-analyse-welche-man-ich-bekommen soll /) ". Leute, die mit ihnen arbeiten, werden an die Idee gewöhnt sein, aber eine Grafikkarte ohne Ausgangsanschlüsse auf der Rückseite sieht für mich einfach so cool und anders aus.
@MahmudMuhammadNaguib Warum sollten Sie absichtlich verhindern, dass eine GPU Dinge verarbeiten kann, die keine Grafiken sind? Die Tatsache, dass sie "G" -PU genannt werden, ist nur historische Trägheit.
@MahmudMuhammadNaguib Oder um eine Analogie zu verwenden: Sie beobachten, wie Menschen Plastikflaschen aus Autofenstern werfen, und Sie fragen, warum wir das Design von Fenstern nicht so ändern, dass nur biologisch abbaubarer Müll durch sie gelangen kann.
@immibies Wer hat gesagt, ich würde? Ich diskutiere nur! Und ich habe erwähnt, dass dies sehr kreativ ist und dass diese Leute echte Hacker sind!
Ich möchte nur darauf hinweisen, dass dies der Grund ist, warum GPUs für das Bitcoin-Mining als überlegen gelten. Sie zeichnen sich dadurch aus, dass sie eine sich wiederholende Grundaufgabe in einem massiv parallelen Format ausführen, z. B. ein Update an jedes einzelne Pixel auf einem HD-Monitor senden.
Die eigentliche Antwort darauf, warum GPU-Hersteller nicht einmal in Betracht ziehen würden, diese Verwendung ihrer Hardware einzuschränken, ist, dass dadurch nichts sicherer wird. GPUs sind im Allgemeinen verfügbar und einfach auf einem Allzweckcomputer zu installieren. Dies ist ihre Hauptattraktivität. Es können jedoch benutzerdefinierte ASICs erstellt werden, die noch schneller sind, sofern keine anderen Überlegungen im Spiel sind (z. B. Verschlüsselung und Speichernutzung). Die Kosten sind nicht unpassend - weshalb die meisten Bitcoin-Mining-Anwendungen heutzutage auf benutzerdefinierte ASICs umgestellt wurden.
Erfordert außer Kryptographie und Grafik nichts im Computer mathematische Operationen?
@DDPWNAGE Seine nicht mathematischen Operationen GPUs sind gut darin; Es ist eine bestimmte Art von mathematischen Operationen (solche, die wirklich gut parallelisieren). Die meisten Computer machen mit dieser Art von Vorgängen nicht viel - die meisten sagen, ein E-Mail-Programm oder ein Webserver ist ein Squential-Code voller Zweige und Bedingungen - diese laufen am besten auf der CPU.
Sie sind normalerweise * langsamer * bei der Ausführung der fraglichen mathematischen Operation, nicht * schneller *, da sie mehr Zeit für eine mathematische Operation benötigen, sondern nur * mehr von ihnen gleichzeitig *. GPUs gewinnen durch Parallelität, nicht durch Geschwindigkeit. Bei einer Reihe von Aufträgen können sie schneller sein, und kartografische Angriffe beruhen häufig darauf, dass eine lächerlich große Anzahl von Kombinationen von Möglichkeiten überprüft wird.
user7933
2016-03-22 02:19:47 UTC
view on stackexchange narkive permalink

Die Leute haben hier großartige Antworten gegeben, die Ihre Frage direkt beantworten, aber ich möchte eine ergänzende Antwort geben, um ausführlicher zu erklären, warum GPUs für diese und andere Anwendungen so leistungsfähig sind.

Wie einige bereits betont haben, sind GPUs speziell für schnelle mathematische Operationen konzipiert, da das Zeichnen von Dingen auf Ihren Bildschirm ausschließlich mathematisch ist (Zeichnen von Eckpunktpositionen, Matrixmanipulationen, Mischen von RBG-Werten, Lesen des Texturraums usw.). Dies ist jedoch nicht wirklich die Hauptantriebskraft für den Leistungszuwachs. Die Hauptantriebskraft ist die Parallelität. Eine High-End-CPU verfügt möglicherweise über 12 logische Kerne, in denen eine High-End-GPU etwa 3072 enthält.

Um es einfach zu halten, Anzahl Logische Kerne entsprechen der Gesamtzahl der gleichzeitigen Operationen, die für einen bestimmten Datensatz ausgeführt werden können. Angenommen, ich möchte die Werte zweier Arrays vergleichen oder die Summe ermitteln. Nehmen wir an, die Länge des Arrays beträgt 3072. Auf der CPU könnte ich ein neues leeres Array mit derselben Länge erstellen und dann 12 Threads erzeugen, die in einem Schritt über die beiden Eingabearrays iterieren würden, der der Anzahl der Threads (12) und entspricht Gleichzeitig wird die Summe der Werte in das dritte Ausgabearray ausgegeben. Dies würde insgesamt 256 Iterationen erfordern.

Mit der GPU könnte ich jedoch von der CPU dieselben Werte in die GPU hochladen und dann einen Kernel schreiben, gegen den 3072 Threads erzeugt werden könnten Kernel zur gleichen Zeit und haben die gesamte Operation in einer einzigen Iteration abgeschlossen.

Dies ist praktisch, um gegen Daten zu arbeiten, die von Natur aus die parallele "Bearbeitung" unterstützen können. Ich versuche zu sagen, dass dies nicht auf Hacking / böse Tools beschränkt ist. Aus diesem Grund wird GPGPU immer beliebter. Dinge wie OpenCL, OpenMP und dergleichen sind entstanden, weil die Leute erkannt haben, dass wir Programmierer unsere armen kleinen CPUs mit Arbeit überhäufen, wenn es eine massive Leistung gibt Pflanze, die im PC sitzt und im Gegensatz dazu kaum benutzt wird. Es ist nicht nur zum Knacken von Software. Zum Beispiel habe ich einmal ein ausgeklügeltes CUDA-Programm geschrieben, das die Lottogeschichte der letzten 30 Jahre aufgegriffen und die Gewinn- / Gewinnwahrscheinlichkeiten mit Tickets verschiedener Kombinationen aller möglichen Zahlen mit unterschiedlicher Anzahl von Spielen pro Ticket berechnet hat, weil ich das für besser hielt Idee, als diese großartigen Fähigkeiten zu nutzen, um nur einen Job zu bekommen (dies ist zum Lachen gedacht, aber leider auch wahr).

Obwohl ich die Leute, die die Präsentation halten, nicht unbedingt unterstütze, diese Präsentation gibt eine sehr einfache, aber ziemlich genaue Darstellung, warum die GPU für alles, was parallelisiert werden kann, so großartig ist, insbesondere ohne jegliche Form der Verriegelung (die andere Threads aufhält und die positiven Auswirkungen der Parallelität stark verringert).

Vielleicht die nächste logische Frage: Warum haben CPUs im Vergleich zu GPUs so wenige Kerne? Ist es einfach eine Betrachtung des Raumes?
@DanPantry Die einfache Antwort lautet, dass jeder CPU-Kern viel komplexer ist als ein GPU-Kern. GPU-Kerne sind so konzipiert, dass sie viele (vergleichsweise) einfache Vorgänge ausführen, von denen viele parallel ablaufen. CPU-Kerne sind im Allgemeinen weitaus komplexer, und im Großen und Ganzen sind die Aufgaben, die sie ausführen, viel schwieriger (einfach / erfolgreich) parallel auszuführen (aufgrund von Problemen bei der Synchronisierung zwischen Kernen).
War Ihr Lotto-Programm erfolgreich, um einen Job zu vermeiden?
@Mindwin Leider nein. Selbst wenn ich die GTX der 500er-Serie zum Ausführen meines Programms verwendete, rechnete ich damit, dass ich sterben würde, bevor alle möglichen Kombinationen von 5-Linien-Tickets (mein festgelegtes maximales Budget für Tickets) aufgebraucht waren. Stattdessen entschied ich mich, ein Sesselexperte für Stapelaustausch und zu werden gelegentlich im örtlichen Einkaufszentrum herumlungern mit einem Schild mit der Aufschrift "Will Code for Food".
Ausgezeichnete Bearbeitungstechnik - habe eine positive Bewertung von mir
@DanPantry Die meisten allgemeinen Computerprobleme können nicht einfach parallelisiert werden. CPUs sind für allgemeine Zwecke konzipiert, daher sind sie für die meisten Dinge schneller. Grafik- und Code-Cracking-Probleme lassen sich leicht parallelisieren, sodass GPUs gut passen. Das Einrichten und Übermitteln einzelner Vorgänge von GPUs dauert länger, kann dann aber schneller parallel berechnet werden (siehe SIMD). Die Kompromisse und Vorteile der GPU würden bei den meisten Computerproblemen nicht gut funktionieren.
@JustinMeiners bedankt sich für die Betonung. Ich habe versucht, dies im 5. Absatz zu vermitteln, aber Sie haben einen besseren Job gemacht.
Komplementär oder komplementär; )
ferit
2016-03-22 00:58:30 UTC
view on stackexchange narkive permalink

Sie benötigen kein anderes Gerät, nur eine geeignete GPU und eine Software. Zum Beispiel kann cRARk Ihre GPU verwenden, um seltene Passwörter brutal zu erzwingen. Und oclhashcat kann Ihre GPU verwenden, um viele Dinge brutal zu erzwingen.

Warum sind GPUs beim Cracken viel schneller als die CPU? Weil Cracken etwas ist, das Sie parallel ausführen können (Sie können jeden einzelnen Kern zum gleichzeitigen Ausprobieren verschiedener Kennwörter verwenden). GPUs verfügen über viele Kerne , in denen sie verwendet werden können parallel.

Zum Beispiel: GeForce GTX980 Ti, eine High-End-GPU, verfügt über 2816 Kerne . Zwar hat keine PC-CPU mehr als 16 Kerne (das Höchste, was ich weiß, sind 72 Kerne, aber für Supercomputing- und Serverzwecke).

Aber warum haben CPUs eine kleine Anzahl von Kernen im Vergleich zu GPUs? Können sie nicht CPUs mit vielen Kernen herstellen? Natürlich können sie, aber es ist nicht vorteilhaft. Denn im Allgemeinen ist es nicht möglich, wie Grafiken parallel zu verarbeiten. Viele Softwareprogramme müssen nacheinander verarbeitet werden, und selbst wenn sie parallel verarbeitet werden können, ist es nicht üblich, eine Software für die Parallelverarbeitung zu schreiben, da dies für Entwickler schwieriger ist.

Siehe folgende Grafik:

enter image description here

Unter der Annahme, dass durchschnittlich 50% der Verarbeitung parallelisiert werden können, beträgt die Beschleunigung bei 16 Kernen nur das Zweifache. Eine Erhöhung der Kernzahlen führt daher zu sehr sinkenden Renditen für CPUs.

Vielen Dank! Aber wie kann ich diese Software auf meiner GPU ausführen und wie kann diese Software meine GPU dazu bringen, Programmieranweisungen auszuführen?
Sie müssen nichts extra tun, laden Sie einfach das Tool herunter und führen Sie es aus. Wenn Sie nicht wissen, wie Sie ausgeführt werden sollen, sollten Sie die Dokumentation des Tools wie jedes andere Tool lesen. Es gibt keinen Unterschied.
Die 3 Antworten sind sehr gut, ich habe von jedem etwas bekommen. Downvoters egal!
(CPUs haben mehr als 16 Kerne - sogar Intel Xeons gehen darüber hinaus, Sparc M7 liegt bei 32.)
Nun, eigentlich sind sie für Server, nicht für PCs. Aber ja, ich sollte meine Antwort aktualisieren.
Criggie
2016-03-23 06:04:17 UTC
view on stackexchange narkive permalink

Bei der Arbeit haben wir spezielle Server, die "rechenintensive Routing-Probleme" lösen. Jeder Host ist mit vier Sockets und Quad-Core-Xeons ziemlich gut spezifiziert, also zusätzlich zu 16 physischen Kernen und HT. Nennen wir es 32 Kerne.

Jede Box verfügt über ein PCIe-Expander-Gehäuse. Darin befinden sich mehrere High-End-NVidia-GPUs und die großen Netzteile, mit denen sie betrieben werden können. Da jede Grafikkarte ungefähr 2000 CUDA-Kerne hat, funktioniert dies mit ungefähr 30.000 CUDA-Kernen pro Host.

Wenn wir also einen CUDA-Kern von Hand winken und als das Äquivalent eines CPU-Kerns bezeichnen, ist dieser Server derselbe als tausend Server, die auf normalen CPUs laufen. Viel Fudging, weil CUDA-Kerne bei einigen Aufgaben nicht gut sind, bei anderen aber sehr gut.

Stellen Sie sich vor, Sie lösen das Problem des Handlungsreisenden, indem Sie alle möglichen Routen auflisten und die beste auswählen. Oder zählen Sie alle möglichen Schachzüge vom aktuellen Brett auf und wählen Sie den einzelnen Zug aus, der zu der höchsten Erfolgschance für Ihren nächsten Zug führt.

Sie brauchen keine stinkenden Heuristiken, wenn alle möglichen Antworten vorliegen wurde berechnet! Und das ist die Definition eines Brute-Force-Angriffs.

+1, Sie können ein oder zwei Tesla in eine Standardmaschine fallen lassen und einen Supercomputer haben.
Dendi Suhubdy
2016-03-24 03:39:39 UTC
view on stackexchange narkive permalink

Möglicherweise möchten Sie diesen Link https://www.iacr.org/archive/ches2006/09/09.pdf sehen. Der Vorteil einer GPU besteht darin, die massiven diskreten logarithmischen Berechnungen zu parallelisieren, die zum Knacken eines Kryptosystems erforderlich sind.

Zusammenfassung. Die Kryptoanalyse von symmetrischen und asymmetrischen Chiffren ist rechenintensiv. Da die Sicherheitsparameter (insbesondere die Schlüssellänge) fast aller praktischen Krypto-Algorithmen so gewählt werden, dass Angriffe mit herkömmlichen Computern rechnerisch nicht durchführbar sind, besteht die einzige vielversprechende Möglichkeit, vorhandene Chiffren in Angriff zu nehmen (unter der Annahme, dass kein mathematischer Durchbruch vorliegt), darin, Spezialhardware zu erstellen . Das Engagement dieser Maschinen für die Kryptoanalyse verspricht ein dramatisch verbessertes Kosten-Leistungs-Verhältnis, so dass das Brechen kommerzieller Chiffren in greifbare Nähe gerückt wird. In diesem Beitrag wird das Design und die Realisierung der COPACOBANA-Maschine (Cost-Optimized Parallel Code Breaker) vorgestellt, die für die Ausführung kryptoanalytischer Algorithmen optimiert ist und für weniger als 10.000 US-Dollar realisiert werden kann. Es wird gezeigt, dass die Architektur abhängig vom tatsächlichen Algorithmus herkömmliche Computer um mehrere Größenordnungen übertreffen kann. COPACOBANA hostet 120 kostengünstige FPGAs und kann beispielsweise eine umfassende Schlüsselsuche des Datenverschlüsselungsstandards (DES) in durchschnittlich weniger als neun Tagen durchführen. Als reale Anwendung kann unsere Architektur verwendet werden, um maschinenlesbare Reisedokumente (ePass) anzugreifen. COPACOBANA ist beabsichtigt, aber nicht unbedingt auf die Lösung von Problemen im Zusammenhang mit der Kryptoanalyse beschränkt. Die Hardwarearchitektur eignet sich für Rechenprobleme, die parallelisierbar sind und geringe Kommunikationsanforderungen haben. Die Hardware kann beispielsweise verwendet werden, um Kryptosysteme mit elliptischen Kurven anzugreifen und Zahlen zu faktorisieren. Obwohl das Brechen von RSA-Kurven in voller Größe (1024 Bit oder mehr) oder elliptischen Kurven (ECC mit 160 Bit oder mehr) mit COPACOBANA nicht möglich ist, kann es verwendet werden Kryptosysteme mit einer (absichtlich gewählten) kleinen Bitlänge zu analysieren, um zuverlässige Sicherheitsschätzungen von RSA und ECC durch Extrapolation3 bereitzustellen.

Matthew
2016-03-22 01:06:52 UTC
view on stackexchange narkive permalink

Ein Brute Forcer für GPUs ist einfach ein PC mit einer oder mehreren High-End-GPUs. Auf ihm wird eine Software zum Knacken von Passwörtern ausgeführt, die so optimiert ist, dass sie die spezielle GPU-Verarbeitungsleistung für mathematische Hochleistungsoperationen bei großen Zahlen verwendet / p>

Normalerweise wird ein Netzteil mit relativ hoher Leistung benötigt, da Grafikkarten ziemlich leistungshungrig sind und eine große Festplatte bei einigen Aufgaben hilfreich sein kann, z. B. beim Halten großer Wörterbücher für Angriffe.

Alles, was es tut, ist, Dinge sehr schnell zu hashen, sei es aus Wörterbüchern oder von Generatoren, die Zeichenfolgen ausgeben, um den gesamten Schlüsselraum abzudecken. Anschließend werden die Ergebnisse des Hashings mit einem Ziel-Hash verglichen, der normalerweise von einem angegriffenen System wiederhergestellt wurde.

chris scott
2016-03-24 20:16:07 UTC
view on stackexchange narkive permalink

Alle sehr technischen Antworten, aber um es in einen realistischeren Kontext zu stellen.

Wenn Sie eine einfache Aufgabe haben, sagen Sie, dass Sie Ihre Artikel im Supermarkt piepen und bezahlen müssen, ist es besser, eine zu haben Kasse oder 1024? Sicher, eine Kasse wird funktionieren, und Sie können sie mit vielen Tricks wirklich raffiniert gestalten, um die Dinge zu beschleunigen, damit sie eine bessere Leistung als eine normale erzielt. Aber am Ende des Tages können die Leute nur so schnell arbeiten und die Käufer verlangsamen oft die Dinge. Daher ist es viel besser.

Umgekehrt, wenn Sie einen sehr schwierigen Job wie eine Operation haben. Ist es besser, einen wirklich erfahrenen Chirurgen von einem kleinen, aber guten Team oder einer Armee von Metzgern unterstützen zu lassen, die gut darin sind, was sie tun, aber im Grunde nur Sachen zerhacken können?



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...