Bruteforce

Hallo Wissende, ich hoffe ich bin im richtigen Brett gelandet, wusste nicht genau wohin mit meiner Frage.

Kurze Einleitung, ich interessiere mich für Bruteforce aus reiner neugier, ich bin in der Ausbildung zum Anwendungsentwickler und mich interessieren nun mal Algorithmen und Permutationen und ähnliches, bevor jemand also den ersten Stein wirft, wollte ich zumindest gesagt haben das ich nicht böse bin ( ;

Indirekt geht es mir eigt. um den Bruteforce Artikel bei Wikipedia, dort nachzlesen ist nämliches folgende Aussage:
Schon auf einem handelsüblichen Mittelklasse-Computer können etwa 15 bis 25 Millionen Passwörter pro Sekunde ausprobiert werden (Stand 2008).

und meine Frage lautet: ist dieser Wert nicht „bisschen“ übertrieben??? Ich bin kein Software-Guru habe jetzt aber mehrere Algorithmen ausprobiert, eigene und von (wohl) hoch angesehenen Entwicklern , in verschiedenen sprachen (php, java, c++, c#) und kommt weiß Gott nicht auf diese Zahl!
Selbst wenn ich NUR die Möglichkeiten durchgehe, also von vergleichen und hash erzeugen ect. noch nicht mal denke, komme ich bei einem nicht rekursiven Algorithmus auf ~3.500.000 Permutationen (Möglichkeiten)

Nun kann es sicherlich sein das irgend ein Crack das direkt im Maschinencode schreibt oder eigens ein Prozessor dafür programmiert hat, aber … mit dem Satz im Wiki komme ich nicht klar.

Deshalb wollte ich euch um eure betuchte meinung fragen.

(Womit ich keines wegs sagen möchte das 3.500.000 nicht gerade ungefährlich für passwörter sind ; )

http://de.wikipedia.org/wiki/Brute-Force-Methode

Hallo,

Indirekt geht es mir eigt. um den Bruteforce Artikel bei
Wikipedia, dort nachzlesen ist nämliches folgende Aussage:
Schon auf einem handelsüblichen Mittelklasse-Computer
können etwa 15 bis 25 Millionen Passwörter pro Sekunde
ausprobiert werden (Stand 2008).

und meine Frage lautet: ist dieser Wert nicht „bisschen“
übertrieben???

Vor allem ist diese Aussage ohne Kontext ziemlich wertlos.
Ein Passwort „ausprobieren“ kann heissen

  1. es an einen Server schicken und seine Antwort abwarten oder
  2. eine kryptographische Funktion mit dem Passwort füttern, und schauen, ob einem das Ergebnis passt.

Nummer 1 ist ganz sicher nicht mit 15 Mio Abfragen pro Sekunde machbar.
Nummer 2 hängt ganz klar von der verwendeten Verschlüsselung ab.

Wenn das Unix-Passwörter sind, die mit blowfish gehasht wurden (das ist ein Algorithmus der so designt wurde, dass das key-setup lange dauert) wirst du nicht auf über 100 Passwörter pro Sekunden kommen, wenn überhaupt.

Für Algorithmen, die schneller gehen (wie z.B. einfaches md5) ist das allerdings durchaus eine realistische Zahl - insbesondere da es auch „Mittelklasse-Computer“ mit Kryptographie-Hardware gibt. Und Multicore-Rechner.

Man kann mit intelligentem Caching und Rainbow-Tabellen bei einigen Algorithmen durchaus viel an Performance gewinnen.

Grüße,
Moritz

Vor allem ist diese Aussage ohne Kontext ziemlich wertlos.

Da gebe ich dir vollkommen Recht.

Wenn das Unix-Passwörter sind, die mit blowfish gehasht wurden
(das ist ein Algorithmus der so designt wurde, dass das
key-setup lange dauert) wirst du nicht auf über 100 Passwörter
pro Sekunden kommen, wenn überhaupt.

Danke für die Info.

Für Algorithmen, die schneller gehen (wie z.B. einfaches md5)
ist das allerdings durchaus eine realistische Zahl -
insbesondere da es auch „Mittelklasse-Computer“ mit
Kryptographie-Hardware gibt. Und Multicore-Rechner.

Findest du? Wie kommst du auf solche Annahmen? Hast du das mal wo gesehen oder ausprobiert? Welche Prozessoren haben Kryptographie Befehle? Oder handelt es sich um einen einzelnen Chip auf dem MB? Und wenn ja wie heißen diese?

Man kann mit intelligentem Caching und Rainbow-Tabellen bei
einigen Algorithmen durchaus viel an Performance gewinnen.

Performance im vergleich zu Was? Geht es dir hier um die Zeit wie lange man braucht um ein Passwort zu knacken oder um die Möglichkeiten Pro Sekunde?

Ich hab eben wieder meinen c# Compiler an geschmissen, meiner einer schafft keine ( MD5 ) 20.000 Hashes pro Sekunde.

Grüße,
Moritz

Danke für deine Antwort

Hallo Wissende, ich hoffe ich bin im richtigen Brett gelandet,
wusste nicht genau wohin mit meiner Frage.

Kurze Einleitung, ich interessiere mich für Bruteforce aus
reiner neugier, ich bin in der Ausbildung zum
Anwendungsentwickler und mich interessieren nun mal
Algorithmen und Permutationen und ähnliches, bevor jemand also
den ersten Stein wirft, wollte ich zumindest gesagt haben das
ich nicht böse bin ( ;

Indirekt geht es mir eigt. um den Bruteforce Artikel bei
Wikipedia, dort nachzlesen ist nämliches folgende Aussage:
Schon auf einem handelsüblichen Mittelklasse-Computer
können etwa 15 bis 25 Millionen Passwörter pro Sekunde
ausprobiert werden (Stand 2008).

können etwa 15 bis 25 Millionen Passwörter pro Sekunde
ausprobiert werden (Stand 2008).

und meine Frage lautet: ist dieser Wert nicht „bisschen“
übertrieben???

Nö, ein programm was folgendes macht

login -u meinuser -p a
login -u meinuser -p b
login -u meinuser -p c

login -u meinuser -p z
login -u meinuser -p aa

login -u meinuser -p zz

login -u meinuser -p zzzzzzzzzz

das dauert nun wirklich nicht lange :smile:

z.b. 1978 330000 befehle

nehmen wir ein paar register hier, ein paar register da :smile:
ein bissel speicher für den passwort string.

lass es ein grosses program von 2 kbyte sein

ASSEMBLER
LDA …
LDX …

etc

macht bei 330000 Befehlen / 1000 16bits = 330 mal das program vollständig durchlaufen

du da konnt man 1978 schon auf 330 passwörter pro sekunde. Und das damals.
Wobei 2000 byte / 16bit befehle = ca 2000 / 2 = eigentlich 1000 Befehle drinne sind. Ich denk mal mit 1000 Befehlen im Assembler macht man mehr als nur ein einfachen password permutation :smile:)

Ich hab also extra mega grob gerechnet.

2kbyte programme waren damals schon langwierig abzutippen :smile:

zu chronik

1978
beginnt mit dem i8086er 16 Bit-Prozessor die Erfolgsstory der Firma Intel. Alle nachfolgenden 80x86er Prozessoren (bis hin zum i80586, auch als Pentium bekannt) sollten zu diesem Prozessor abwärtskompatibel sein. Der erste i8086er Prozessor konnte mit sagenhaften 29000 Transistoren und einer Taktfrequenz von 4,77 MHz und später mit 10 MHz auftrumpfen. Er konnte in nur einer Sekunde 330000 Befehle abarbeiten.

Also wenn wir heut GIGA-Herz haben … dann sind wohl
330000 * Heutige Anzahl Transistoren * Heutige GIGA-HERZ

bestimmt lokker 33*10^x Befehle möglich … wähle X schön gross :smile:

Ergo sind 25millionen anfragen kein wirklich schnelles ding.

1999 – Das turbulenteste Jahr…
Pentium III zu benennen. Er verfügt über zusätzliche 70 Befehle, … Außerdem wurde diesem Prozessor eine Seriennummer eingepflanzt, die laut Intel die Abwicklung von Internetgeschäften sicherer machen soll

Moien

Welche Prozessoren haben Kryptographie Befehle?

Via C7 und wahrscheinlich noch ein paar Vorgänger. Die Dinger sind zwar langsam aber beim verschlüsseln geht die Post ab.

Man kann mit intelligentem Caching und Rainbow-Tabellen bei
einigen Algorithmen durchaus viel an Performance gewinnen.

Performance im vergleich zu Was?

Im Vergleich zum blanken Durchtesten. Es gibt z.B. eine Rainbow-Tabelle die alle alten windows Passwörter in unter 10 Sekunden auf einem normalen Desktop knackt (Windows Passwörter wurden eine Weile ohne Salt gespeichert. Inzwischen ist ein Salt drin und der Spass vorbei. Man brauchte halt Zugriff auf die Platte und eigentlich ist das Password dann schon nicht mehr wirklich interessant). Rainbows für md5 ohne Salt gibt es auch zur Genüge.

Ich hab eben wieder meinen c# Compiler an geschmissen, meiner
einer schafft keine ( MD5 ) 20.000 Hashes pro Sekunde.

Wie lang sind die Eingabedaten und was tut er mit den Resultaten?

Mein Ansatz wäre bei sowas Grakas. Zig-tausend MD5-style Hashs auf den Teilen gleichzeitig ausrechnen sollte problemlos drin sein und sehr viel schneller gehen als auf einer CPU. Seitdem Nvidia seinen Integer beigebracht hat sind die Dinger richtig gefährlich.

cu

Hallo pumpkin.

Via C7 und wahrscheinlich noch ein paar Vorgänger. Die Dinger
sind zwar langsam aber beim verschlüsseln geht die Post ab.

Danke für die Info.

Im Vergleich zum blanken Durchtesten. Es gibt z.B. eine
Rainbow-Tabelle die alle alten windows Passwörter in unter 10
Sekunden auf einem normalen Desktop knackt (Windows Passwörter
wurden eine Weile ohne Salt gespeichert. Inzwischen ist ein
Salt drin und der Spass vorbei. Man brauchte halt Zugriff auf
die Platte und eigentlich ist das Password dann schon nicht
mehr wirklich interessant). Rainbows für md5 ohne Salt gibt es
auch zur Genüge.

Sehr interessant. (ohne Ironie)

Wie lang sind die Eingabedaten und was tut er mit den
Resultaten?

Mein test String bestand aus 10 Zeichen, wobei mir nicht bewusst war das die länger der eingabedaten große unterschiede bei md5 macht.
Er macht nix mit den Resultaten, ich lass nur den Hash berechnen, ich lasse ihn mir nichtmal ausgeben und speichern tue ich ihn auch nicht.

Mein Ansatz wäre bei sowas Grakas. Zig-tausend MD5-style Hashs
auf den Teilen gleichzeitig ausrechnen sollte problemlos drin
sein und sehr viel schneller gehen als auf einer CPU. Seitdem
Nvidia seinen Integer beigebracht hat sind die Dinger richtig
gefährlich.

Ja an GraKa habe ich jetzt nun nicht gedacht, ich weiss das diese durch die Shader bestimmte berechnungen um ein vielfaches schneller erledigen als ein allround CPU. Dazu ein (Beispiel von vielen) link:
http://www.golem.de/0805/60079-2.html

cu

danke vielmals!

Danke für deinen sehr interessanten Beitrag, aber die Differenz zwischen den Zahlen die du mir nennst, bzw die Differenz zwischen den wohl ausführbaren befehlen und der Performance der Hochsprachen ist bei mir so überwältigend groß das ich entweder was richtig richtig falsch mache (was durch aus möglich ist *g*)

oder … ja oder deine zahlen beispiele sind zu optimistisch. Da du anscheinend ein leidenschaftlicher Programmierer bist, ist es nicht zufällig drin das du 15.000.000 Permutationen durchführst und mir sagst wie lange du brauchst? (und dann ggf. noch 15.000.000 den jeweiligen md5 Hash erzeugst)

Hallo,

Nö, ein programm was folgendes macht

login -u meinuser -p a
login -u meinuser -p b

das dauert nun wirklich nicht lange :smile:

Hast du das getestet?
Nicht das generieren der Passwörter ist das langsame, sondern das was was login macht.

Grüße,
Moritz