Hashes
-
Shade Of Mine schrieb:
Unterschaetze die Hardware nicht.
Hallo Shade Of Mine,
natürlich geht die Entwicklung voran und wer darauf nicht reagiert, wird weggefegt.
Allerdings sehe ich die Sache nicht gar so dramatisch, wie sie hier dargestellt wird. Man folgt da schnell Fehleinschätzungen und Trugschlüssen.
1. Die Entwicklung überrollt uns nicht, sondern verhält sich eigentlich recht berechenbar. Auch wenn die von Dir angegebenen Benchmarkwerte sich auf 4 Jahre alle Grafikprozessoren beziehen, sind die Leistungsdaten aktueller Karten keine Überraschung (Mooresche Gesetz). Ein aktueller High-End-PC aus der 5000 EUR-Klasse schafft mit zwei Top-Karten und 1200W Netzteil knapp 12 TerraFLOPS.
Bei großzügiger Abschätzung packt man 15 Mrd MD5-Hashs in der Sekunde oder 1,3 Billiarden (1,3e15) am Tag. Das ist immer noch sehr weit vom weg, was 12 oder
14 Zeichen einer deutschen Tastatur (1e24 oder 1e28) hergeben.
Für die vollständige Enumeration ist der Quotient immer noch bei rund 9 Zehnerpotenzen. Wollte man die Rechenzeit auf 3 Jahre begrenzen, würde man für diesen Zeitraum die Stromleistung aller deutschen Kernkraftwerke benötigen.
Ich denke, dass hier einige die Dimensionen von Cloud und Botnetzen verkennen.2. Den Trugschluss sehe ich darin, dass man verkennt, dass die Rechenleistung nicht nur der Angreifer mit dem Mooreschen Gesetz steigt. Du hast schon selbst erkannt, dass MD5 einfach zu schnell ist, um für sich noch sicher zu sein.
Aber wenn der Angreifer Milliarden Hashes in der Sekunden ermitteln kann, kann das der Betreiber auch. Wenn beim Verschlüsseln 1000 Zyklen kein Laufzeitproblem mehr sind, kann ich die Rechenzeit beim Angreifer immer um den gleichen Faktor verlängern.Ciao, Allesquatsch
-
Allesquatsch schrieb:
Wenn beim Verschlüsseln 1000 Zyklen kein Laufzeitproblem mehr sind, kann ich die Rechenzeit beim Angreifer immer um den gleichen Faktor verlängern.
Nope. Du kannst nicht konstant deine Software anpassen. Du bist festgelegt auf das was du damals gemacht hast.
Und du vergisst, dass es nicht ein Rechner ist der das knacken will sondern ein Botnetz aus mehreren tausend Rechnern. Oder eben eine Server Farm.
Und du bist jetzt schon bei 14 Zeichen. Welcher User hat 14 Zeichen im Passwort? Die meisten Services aktzeptieren 14 Zeichen ja nichtmal...
6-8 sind da eher die Passwoerter...
-
Also "die meisten Server" ist schon arg übertrieben. Die meisten Server akzeptieren sehrwohl Passwörter mit 12, 14 oder mehr Zeichen. Beschränkungen auf <= 8 sind mittlerweise schon sehr selten (wenn auch leider noch nicht ganz ausgestorben). Zumindest bei den Systemen die ich in den letzten Jahren verwendet habe.
Und wieso sollte man ein Programm modifizieren müssen?
Mehr als einen Eintrag in einem .ini File braucht das nicht.
Bzw. man könnte es sogar auto-tuning machen.
MinRounds=1000, MaxRounds=1000000, MaxCpuTime=100ms
Dann wird zu jedem Passwort zusätzlich zum Salt und Hash noch die Anzahl der Runden mit abgespeichert.Bei jeder Passwort-Änderung soll der Server dann so viel Runden machen wie sich ausgehen (min. jedoch die eingestellte Anzahl).
Wenn man es noch besser machen will, kann man irgendwo die durchschnittliche Rundenanzahl die bei den letzten N Passwörtern verwendet wurde abspeichern. Und sobald sich jmd. einloggt dessen Passwort-Hash weniger als N/10 Runden verwendet wird das Passwort an der Stelle neu gehasht (beim Login liegt es ja Klartext vor, kann also neu mit mehr Runden gehasht werden).
Ich sehe da kein Problem. Wenn ich was übersehen habe bitte korrigier mich.
-
Shade Of Mine schrieb:
Allesquatsch schrieb:
Wenn beim Verschlüsseln 1000 Zyklen kein Laufzeitproblem mehr sind, kann ich die Rechenzeit beim Angreifer immer um den gleichen Faktor verlängern.
Nope. Du kannst nicht konstant deine Software anpassen. Du bist festgelegt auf das was du damals gemacht hast.
Dummerweise bleibt Dir in sensiblen Bereichen gar nichts anderes übrig, als dann die Benutzer zu zwingen, nach der Anmeldung das Kennwort zu ändern, damit Du es dann mit einem härteren Algorithmus neu krypten kannst.
Shade Of Mine schrieb:
Und du vergisst, dass es nicht ein Rechner ist der das knacken will sondern ein Botnetz aus mehreren tausend Rechnern. Oder eben eine Server Farm.
Nein, nicht vergessen, sondern offen gelassen, ob Du jetzt die fehlenden 9 Zehnerpotenzen durch Anzahl Rechner oder durch Zeit überbrückst.
Habe stattdessen die Energiemenge als Veranschaulichung genutzt und dargestellt, dass die Energiemenge von allen deutschen Kernkraftwerken für 3 Jahre notwendig ist, um alle Hashes auszuprobieren.
Sicherlich wird die Leistungsfähigkeit weiter steigen, aber nur um zweistellige Prozente im Jahr und nicht um Faktoren. Zu meinen Lebzeiten wird es sicher billiger sein, mir zwei Jungs aus Weißrussland vorbei zu schicken, als das Kennwort durch Brute-Force herauszubekommen.Shade Of Mine schrieb:
Und du bist jetzt schon bei 14 Zeichen. Welcher User hat 14 Zeichen im Passwort? Die meisten Services aktzeptieren 14 Zeichen ja nichtmal...
6-8 sind da eher die Passwoerter...Mein Masterpassword für Keepass ist 19 Zeichen lang
In Keepass sind die per Zufall generierten Kennworte für meine dienstlichen Zugänge. Mein Kennwort für die Festplattenverschlüsselung und Windows hat 12 Stellen. Ich bin mir sicher: Die konkrete Implementierung in Anwendungen und Systemen ist leichter anzugreifen. Da gibt es genügend Systeme, in denen das Kennwort noch ungesalzen und vielleicht nicht mal gehasht rumliegt.Ciao, Allesquatsch
-
hustbaer schrieb:
Und wieso sollte man ein Programm modifizieren müssen?
Mehr als einen Eintrag in einem .ini File braucht das nicht.
Bzw. man könnte es sogar auto-tuning machen.
MinRounds=1000, MaxRounds=1000000, MaxCpuTime=100ms
Dann wird zu jedem Passwort zusätzlich zum Salt und Hash noch die Anzahl der Runden mit abgespeichert.Und wer macht das?
Theorie und Praxis sind nicht das selbe.
Die bessere Lösung wäre übrigens (wie schon von rüdiger genannt) bcrypt.
-
Diese Hochrechnungen sind doch alle Quatsch. Wenn ich Richtung FPGAs schaue, dann kann ich auch auf einem Chip mehrere Engines parallel Arbeiten lassen. Abhaengig von Chip und Core vielleicht 50. Der Energieverbrauch ist auch nur ein Bruchteil so gross wie bei einem Standard-PC. Mit wenig Geld kann die Rechenleistung weiter gesteigert werden, indem einfach mehr FPGAs benutzt werden.
-
knivil schrieb:
Diese Hochrechnungen sind doch alle Quatsch. Wenn ich Richtung FPGAs schaue, dann kann ich auch auf einem Chip mehrere Engines parallel Arbeiten lassen. Abhaengig von Chip und Core vielleicht 50. Der Energieverbrauch ist auch nur ein Bruchteil so gross wie bei einem Standard-PC. Mit wenig Geld kann die Rechenleistung weiter gesteigert werden, indem einfach mehr FPGAs benutzt werden.
Die Hochrechnungen beruhen schon auf CUDA-Programmierung mit mehreren tausend Kernen und zwei GraKa im Rechner
Allerdings braucht man für zwei hochgetaktete High-End-Karten Netzteile im kW-Bereich.
Ciao, Allesquatsch
-
Du hast nicht verstanden.
-
Allesquatsch schrieb:
Zu meinen Lebzeiten wird es sicher billiger sein, mir zwei Jungs aus Weißrussland vorbei zu schicken, als das Kennwort durch Brute-Force herauszubekommen.
ist doch beides brute force.
-
mezzo mix,