| (In)security allgemein Sicherheit, Anonymität im Netz. Schutz und Maßnahmen. Prävention und Konzepte. Sicherheitsarchitekturen allgemein und auf der Netzwerkebene. |
Diskussion: Einmalpasswort im Forum (In)security allgemein, in der Kategorie Security Area; Anzeige Hallo Vor geraumer Zeit stolperte ich über eine Implementierung von Einmalpasswörtern, finde diese aber nicht mehr. Bei dieser Lösung ...
![]() |
| | #1 (permalink) |
| Registriert seit: 02.12.05 ![]() Likes: 0 | Anzeige Hallo Vor geraumer Zeit stolperte ich über eine Implementierung von Einmalpasswörtern, finde diese aber nicht mehr. Bei dieser Lösung erhält der benutzer eine Karte, auf welcher eine Matrix aus Buchstaben und Zahlen aufgedruckt ist. Zusätzlich wählt er eine Lesemethode (z.B. "Acht Felder nach rechts). Das Authentifizierungsprogramm fragt nach dem Benutzernamen, und gibt einen Startpunkt in dieser Matrix aus, der Benutzer kann hernach das geforderte PAsswort bestimmen. Ich meine soetwas als OpenSource Lösung gesehen zu haben, mit Passwortzetteln zum selbst Ausdrucken... weiß jemand etwas davon? |
| | |
| | #2 (permalink) |
| Moderator ![]() Registriert seit: 30.03.04 ![]() Likes: 14 | Hallo, hört sich etwas komisch an, obwohl einmal Passwörter sehr leicht zu verwenden sind: Du hast ein Start-Passwort, entweder ein Passwort das du kennst, du ein zufälliges Passwort. Dann wird dieser Startwert per MD5 in einen Hash umgewandelt und ausgegeben/ausgedruckt, danach wird der MD5 Hash vom Startwert wieder per MD5 in einen neuen Hash umgewandelt und ausgegeben/ausgedruckt. Dieses machst du z.B. 100 mal. Du hast jetzt auf deinem Zettel die 100 MD5 Hashwerte, am besten nummeriert. Der Server fragt dich jetzt beim ersten Login nach dem 100. Hashwert. Du schaust auf deinen Zettel und tippst den Hashwert dort ein. Der Server selber hat nur den Startwert abgespeichert und schickt diesen jetzt 100 mal durch den MD5 Algorithmus. Danach werden die Hashwerte (eingegebener und der generierte) verglichen. Sofern alles Ok ist, setzt der Server einen Zähler runter, so dass er beim nächsten mal nach dem 99. Hashwert fragt. Da dieser Prozess rückwärts abläuft, kann man mit einem Startwert zwar alle nachfolgenden Hashs ermitteln, aber einen abgehörten Hashwert bringt einen Angreifer nicht, da dieser für den nächsten Login einmal zu durch MD5 gelaufen ist. Ein weiterer Vorteil ist, dass man dafür auch leicht ein Programm schreiben kann. Auf dem Server wird als Start-Zähler z.B. 1000 (für 1000 Logins) verwendet. Wenn man aber keine 1000 PWs ausdrucken möchte, so nimmt man ein Programm ein, tippt dort den Startwert ein und wie oft MD5 diesen Wert hashen soll und erhält dort dann den entsprechenden Hashwert. So muss man dann nur das Prog. mitführen und nicht eine ganze Liste an PWs |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Themenstarter Registriert seit: 02.12.05 ![]() Likes: 0 | Danke für die ausführliche Erklärung, war mir so nicht bekannt. Was ich suche geht aber in diese Richtung: http://www.savernova.ch/cms/ D.h. genau soetwas, bloß OpenSource...ich meine sowas schonmal gesehen zu haben... |
| | |
| | #4 (permalink) |
| Moderator ![]() Registriert seit: 30.03.04 ![]() Likes: 14 | Hallo, soetwas selber zu Programmieren ist nicht schwer. Du musst nur die Matrix auf dem Server abspeichern, sowie welche Startpositionen schon verwendet wurden. Danach muss der User seine geheime Lesemethode ausdenken. Dies kann man so realisieren: Man zeigt ihm eine leere Matrix, und eine fiktive Startposition, z.B. in der Mitte der Matrix. Danach klickt er der Reihe nach die Kästchen an, die er für seine Lesemethode verwendet. Wie in der Demo also 7 Kästchen nach rechts. Der Server speichert dann immer delta-X und delta-Y zur Startposition ab, so kann er später in einer Schleife diese Einträge durchlaufen und das delta-X/Y zur Startposition addieren, um so an den Key zu gelangen. Dann beim Login wird eine zufällige, nicht verwendete Startposition benutzt und die vom User generierte Lesemethode wird dann auf die Matrix angewendet, so ermittelt der Server das benötigte PW. Mit ein paar Grundketnissen im Programmieren hast du, bis auf den Generator, das in etwa 10 Minuten geschrieben. Wie lange man für den Generator man benötigt, hängt von seinem Umfang ab. Gibt der User einfach in eine Textbox die delta-X/Y Werte ein, würde das auch wieder max. 10 Minuten dauern. Mit einer GUI, so wie oben beschrieben, könnte das etwas länger dauern, aber auch max. 30 Minuten. Edit: Achtung! Diese Methode mit der Key Card ist aber sehr unsicher. Geht man von einer 11x26 Karte aus, so enthält diese 286 Zeichen und auch 286 Startpositionen. Wenn ein Angreifer jetzt nur 20 Logins mitlauscht, so hat er bis zu 56% der Key-Card (bei PW Länge von 8 Zeichen). Auch an die "geheime" Lesemethode gelangt man so sehr schnell. Normale User verwenden oft leichte Lesemethoden, aber auch an schwerere Methoden gelangt man schnell. Und zwar schneidet ein Lauscher z.B. das PW mit der Startposition C4 mit. Evt. hat er auch das Passwort für A4. Wenn jetzt der User die, wie in der Demo vorgeschlagene Lesemethode benutzt (8 Zeichen nach rechts), so sind die letzten 6 Zeichen vom A4-Passwort gleich den ersten 6 Zeichen des C4-Passworts. Auch wenn der User eine komplexere Methode verwendet, was eher selten ist, so kann man über dieses Verfahren an die Lesemethode gelangen. Man beginnt beim ersten mitgeschnittenem Passwort und schaut, ob Fragmente von dem Passwort woanders vorkommt. Dies macht man mit allen mitgeschnittenen Passwörter und schon gelangt man an die Lesemethode. Hat man jetzt die Lesemethode, so kann man mit den übertragenen Passwörtern die Zeichen exakt den Positionen in der Matrix zuordnen. Wenn der User z.B. als Lesemethode die 8 Zeichen nach rechts liest, der Lauscher das Passwort für E8 hat, und jetzt nach dem Passwort für B8 gefragt wird, so braucht man nur noch 2 Zeichen per Brute Force knacken, was ca. 3800 Kombinationen sind. Sobald man also das Passwort auf 3 Zeichen genau bestimmen kann, ist ein Login mittels BruteForce sehr einfach. Dort ist die Methode mit dem Hash-Verfahren doch deutlich sicherer. |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |