Warum dauert ein falscher Kennwortversuch viel länger als ein korrekter?

17

Der bekannteste Ort, an dem mir dies aufgefallen ist, ist SSH bei der Arbeit, aber ich habe das Gefühl, dass ich dieses Verhalten auch anderswo beobachtet habe.

Beim Versuch, mich von meinem Windows-Desktop bei der Arbeit auf Linux-Servern anzumelden, ist mir aufgefallen, dass es ungefähr 5 Sekunden dauert, bis ich wieder "Zugriff verweigert" bekomme, wenn ich mein Kennwort falsch eingebe. Wenn ich dann mein Passwort richtig eingebe, erfolgt die Anmeldung (zusammen mit Begrüßungsnachrichten usw.) praktisch sofort.

Gibt es einen logischen Grund dafür, oder liegt es an einer ungewöhnlichen Konfiguration, die für die Maschinen hier bei der Arbeit spezifisch ist?

Cam Jackson
quelle
1
Es gibt eine gute Diskussion / Antwort auf diese Frage auf stackoverflow.com/questions/712339/… , einschließlich der Reduzierung der Linux-
Fehlerverzögerung
Das gleiche passiert, wenn Sie sich mit einem falschen Passwort bei Windows anmelden, aber ich bemerke, dass die Zeit von Zeit zu Zeit in einem weiten Bereich von einigen Sekunden bis zu 1-2 Minuten
variiert

Antworten:

21

Es ist wahrscheinlich eine künstliche Zeitüberschreitung eingebaut, die den Erfolg eines Brute-Force-Angriffs erschwert.

Sie werden dies bei vielen Anmeldeaufforderungen sehen, die eine sichere Authentifizierung beinhalten ...

Rhys Gibson
quelle
1
Ah, daran hatte ich nicht gedacht. Das macht durchaus Sinn und würde erklären, warum ich das Gefühl habe, dass ich anderswo die gleiche Verzögerung gesehen habe.
Cam Jackson
aka Tarpitting. Danke, Michael Kjörling ( superuser.com/questions/916187/... )
rfportilla
10

Dies ist eine beabsichtigte Verzögerung, um Brute-Force-Angriffe zu verhindern. Eine längere Verzögerung verhindert außerdem, dass der Angreifer den Unterschied zwischen falschem Benutzernamen und falschem Passwort erraten kann (das Hashing und Überprüfen des Passworts dauert erheblich länger als das Überprüfen des Benutzernamens).

Jens Erat
quelle
1

Technisch gesehen dient diese absichtliche Verzögerung dazu, Angriffe wie den "Linearisierungsangriff" zu verhindern (es gibt auch andere Angriffe und Gründe) .

Betrachten Sie zur Veranschaulichung des Angriffs ein Programm (ohne diese absichtliche Verzögerung), das eine eingegebene Seriennummer überprüft, um festzustellen, ob sie mit der richtigen Seriennummer übereinstimmt, die in diesem Fall " xyba " ist . Aus Gründen der Effizienz hat der Programmierer beschlossen, jeweils ein Zeichen zu prüfen und den Vorgang zu beenden, sobald ein falsches Zeichen gefunden wird, bevor die Längen ebenfalls geprüft werden.

Die korrekte Serienlänge dauert länger als eine falsche Serienlänge. Noch besser (für Angreifer) ist, dass eine Seriennummer, bei der das erste Zeichen korrekt ist, länger dauert als eine Seriennummer, bei der das erste Zeichen falsch ist. Die aufeinanderfolgenden Schritte in der Wartezeit bestehen darin, dass jedes Mal, wenn eine weitere Schleife vorhanden ist, ein Vergleich durchgeführt werden muss, um eine korrekte Eingabe zu erhalten.

  • Der Angreifer kann also eine aus vier Zeichen bestehende Zeichenfolge auswählen, und die mit x beginnende Zeichenfolge benötigt die meiste Zeit. (durch Vermutung)
  • Der Angreifer kann dann das Zeichen als x festlegen und das zweite Zeichen variieren. In diesem Fall wird festgestellt , dass y am längsten dauert.
  • Der Angreifer kann dann die ersten beiden Zeichen als xy festlegen und das dritte Zeichen variieren. In diesem Fall stellt er fest, dass b am längsten dauert.
  • Der Angreifer kann dann die ersten drei Zeichen als xyb festlegen und das vierte Zeichen variieren. In diesem Fall wird festgestellt , dass a am längsten dauert.

Daher können die Angreifer die Seriennummer einzeln wiederherstellen.

Linearisierung.java.

Linearization.docx, Beispielausgabe

Die Seriennummer ist vier Zeichen lang und jedes Zeichen hat 128 mögliche Werte. Dann gibt es 128 4 = 2 28 = 268 435 456 mögliche Serien . Wenn der Angreifer zufällig vollständige Seriennummern erraten muss, würde er die Seriennummer in etwa 2 27 = 134.217.728 Versuchen erraten , was einen enormen Arbeitsaufwand darstellt . Auf der anderen Seite sind unter Verwendung des obigen Linearisierungsangriffs durchschnittlich nur 128/2 = 64 Vermutungen für jeden Buchstaben erforderlich, für eine erwartete Gesamtarbeit von etwa 4 × 64 = 2 8 = 256 Vermutungen, was ein unbedeutender Betrag ist der Arbeit.

Ein Großteil des schriftlichen Kriegsgeschehens ist hieraus abgeleitet (entnommen aus Mark Stamps "Informationssicherheit: Grundsätze und Praxis"). Die obigen Berechnungen berücksichtigen auch nicht die Menge an Rätselraten, die erforderlich sind, um die korrekte Serienlänge zu ermitteln.

Ashesh Kumar Singh
quelle