Passwort

Post Reply
Message
Author
Timmy

Passwort

#1 Post by Timmy »

Hallo, ich habe eine .htpasswd Datei. Das Passwort muß verschlüsselt sein, wie man das lokal macht weiss ich zwar, doch nun meine Frage.
Im WEB gibt es Seiten wo man das PW eingeben kann und man dann das verschlüsselte Ergebnis erhält, es sind auch immer andere Ergebnisse, selber getestet.
Nur verstehe ich nicht wie das funktionieren kann. Wenn ich timmy eingebe und es verschlüsseln lasse dann kopiere ich das in die .htpasswd und das klappt sogar. Wie wird das entschlüsselt? Der User gibt sein Passwort ein und bekommt auch nur mit timmy Zugriff, ich verstehe das nicht. Wenn man also die .htpasswd hat dann kann man daraus das unverschlüsselte Passwort generieren. Die Verschlüsselung per https funktioniert ja auch nicht viel anders.
Ich verstehe nur nicht wie sowas sicher sein kann.
In einem SSH - HowTo habe ich mal versucht ein paar Lösungen zu finden doch so speziell wird das leider nicht erklärt, ich denke aber das es ja irgendwas damit zu tun haben muß. Vielleicht kann mir hier einer helfen? zur Funktionsweise, gegebenfalls ein paar Stichwörter liefern mit denen ich im WEB suchen kann!

Viele Grüße
Timmy

Jochen

Re: Passwort

#2 Post by Jochen »

Das ist nicht wirklich schwierig.

Als erstes ist es wichtig zu verstehen, dass für einen Passwortschutz kein Entschlüsseln notwendig ist. Man kann ja schliesslich auch bei der Überprüfung eines Passwortes dieses einfach verschlüsseln und die Schlüsselwerte miteinander vergleichen. Bei Übereinstimmung muss auch der Klartext gleich gewesen sein.

Jetzt zu Deinem Einwand, dass ein und dasselbe Klartextpasswort aber zu unterschiedlichen Werten verschlüsselt wird. Ein Angreifer könnte sich ja nun aus einem Wörterbuch und ein paar Regelsätzen sehr viele denkbare Passwörter generieren, diese verschlüsseln und damit ein unbekanntes verschlüsseltes Passwort attackieren: Wenn er den verschlüsselten Wert in seiner Datenbank von Schlüsselwörtern findet, hat er auch den Klartext in der Hand. Das Erstellen einer solchen Datenbank wäre eine einmalige Angelegenheit, die dann ruhig mal eine Woche oder so dauern dürfte - das Nachschlagen eines Schlüsselwertes wäre dann immer blitzschnell. Wie umgeht man das Problem?

Ganz einfach: Beim Verschlüsseln eines Passwortes wird zusätzlich ein sog. "salt" hinzugefügt. Das ist ein zufälliger Wert, je nach Algorithmus von unterschliedlicher Grösse. Dieses wird vor den eigentlichen Schlüsselwert gesetzt. Beim Prüfen eines Passwortes muss also der Algorithmus das eingegebene Passwort mit dem gleichen salt "würzen", wie es beim Setzen des Passwortes geschah. Gleicher Schlüsselwert, gleiches Passwort - soweit bleibt alles beim alten. Aber die Datenbank des Angreifers ist jetzt nutzlos, da die Schlüsselwerte mit hoher Wahrscheinlichkeit nicht mit dem gleichen salt berechnet wurden. So kommen trotz gleichem Klartext unterschiedliche Schlüsseltexte zusammen. Die gesamte Datenbank muss also für ein Passwort neu berechnet werden. Und da weitere Passworte wieder andere salts haben, muss auch für diese die Datenbank wieder neu berechnet werden; der Aufwand für den Angreifer steigt also durch diese simple Massnahme enorm.

Allerdings ist man dadurch nicht unverwundbar. Tools, die Dictionary-Attacken machen wie "John the Ripper" <a href="http://www.openwall.com/john/" target="_blank"><!--auto-->http://www.openwall.com/john/</a><!--auto--> müssen halt mehr arbeiten, aber bei den heutigen Rechnern (und den üblichen schlecht gewählten Passwörtern) sind die ohne weiteres in hinnehmbarer Zeit einsetzbar. Ohne salt wäre die Situation allerdings viel schlimmer.

Grundregel: Den Schlüsseltext sollte niemand zu Gesicht bekommen, der ihn nicht braucht. Weshalb man eine .htpasswd auch niemals unterhalb DocumentRoot aufbewahren sollte...

Jochen

Timmy

Re: Passwort

#3 Post by Timmy »

Bei Übereinstimmung muss auch der Klartext gleich gewesen sein.[/qoute]
Siehste das ist ja das was ich meine, die Übereinstimmung, das Passwort liegt ja verschlüsselt in einer Datei und wurde <b>irgendwo anders</b> generiert. Wenn die aber jetzt mit einem Klartext verglichen wird weiss doch keiner, auch nicht die Maschine :), wie das zu entschlüsseln ist.
Ich glaube mir fehlt irgendwie das Verständnis dafür!

[qoute]Ganz einfach: Beim Verschlüsseln eines Passwortes wird zusätzlich ein sog. "salt" hinzugefügt. Das ist ein zufälliger Wert, je nach Algorithmus von unterschliedlicher Grösse. Dieses wird vor den eigentlichen Schlüsselwert gesetzt. Beim Prüfen eines Passwortes muss also der Algorithmus das eingegebene Passwort mit dem gleichen salt "würzen", wie es beim Setzen des Passwortes geschah.[/qoute]
Eben, weil das auch auf der Maschine generiert wurde mit einem Tool z.B.
Bei ssh ist es ja so, da müssen die Schlüsselwerte vergeben werden damit man weiss welche Schlüssel nötig sind um zu "entcrypten".
Das die Schlüssel oft unverschlüsselt über das web übertragen werden ist ja jedem seine eigene Schuld :)
Hier ist es ja klar. Verschlüsseln - Algorythmus an Empfänger vergeben - Entschlüsseln. Plausibel!

[qoute]Allerdings ist man dadurch nicht unverwundbar.[/qoute]
Ja das ist klar. Ich habe mal gelesen das ein grossteil User/Pass sogar gleich ist, aber diese Regeln kenn ich :)

[qoute] Den Schlüsseltext sollte niemand zu Gesicht bekommen, der ihn nicht braucht.[/qoute]
Klingt logisch.

Timmy

Timmy

Re: Passwort

#4 Post by Timmy »

qoute ... ggg
man kann es ja sehen :)

Jochen

Re: Passwort

#5 Post by Jochen »

*grins* [<!--no-->qoute<!--no-->]... Mache ich auch gerne, den Fehler!

Noch mal mit Betonung: <b>Nirgendwo im ganzen Verfahren wird wieder entschlüsselt!</b>

Bestandteile des Verfahrens sind:
- Setzen des Passwortes: Klartext wird entgegengenommen, Schlüsselwert errechnet und in die .htpasswd eingetragen.
- Prüfen des Passwortes: Zu testendes Passwort wird verschlüsselt (gleicher Salt wie beim Schlüsselwert in der .htpasswd, s.o.!), Schlüsselwerte werden verglichen. Bei Gleichheit der Schlüsselwerte waren auch die Klartexte gleich - Passwort ist korrekt. Sind die Schlüsselwerte unterschiedlich, war auch der Klartext unterschiedlich - falsches Passwort eingegeben.

Wenn Du ein und dasselbe Passwort verschlüsselst, kommen durch ein unterschiedliches Salt unterschiedliche Schlüsselwerte hervor. Um eine Überprüfung zu ermöglichen, wird das Salt vor das verschlüsselte Passwort gepackt, so dass das System beim Überprüfen das korrekte Salt zum Verschlüsseln des zu prüfenden Passwortes verwenden kann.

Auch wenn der Schlüsselwert "irgendwo anders" berechnet wurde: Sein Salt bringt er ja mit, welches dann der Webserver zum Verschlüsseln des zu prüfenden Passwortes verwendet. Dass die beiden natürlich den gleichen Algorithmus zum Verschlüsseln von Daten verwenden müssen, ist wohl selbstverständlich, oder?

Ich hoffe, das hat weitergeholfen.

Jochen

Timmy

Re: Passwort

#6 Post by Timmy »

<blockquote><hr>..... Überprüfung zu ermöglichen, wird das Salt <b>vor das verschlüsselte Passwort gepackt</b>, so dass das System beim Überprüfen das korrekte Salt zum Verschlüsseln des zu prüfenden Passwortes verwenden kann.<hr></blockquote>
Aaaaha. Das hab ich kapiert :), auf den Webseiten steht auch ----- für Apache ------ dann ist es auch der selbe Algorythmus. Das mit dem Salt hatte ich nicht verstanden.
<blockquote><hr> Dass die beiden natürlich den gleichen Algorithmus zum Verschlüsseln von Daten verwenden müssen, ist wohl selbstverständlich, oder?<hr></blockquote>
Logisch!
<blockquote><hr>Ich hoffe, das hat weitergeholfen.<hr></blockquote>
Ja hat es. Danke für die kompetente Anwort und die Geduld.

Frohe Weihnachtstage und guten Rutsch

Timmy

Post Reply