Hallo, es wurde auf dieser Liste in verschiedenen Threads schon häufiger über ssh und die Sicherheit von Paßwörtern diskutiert. Es wurde von einigen Diskussionsteilnehmern die Meinung vertreten, daß public-key authentication sicherer ist als ein reiner paßwortgeschützter Login. Dazu die folgende Frage: Wenn ich mich per ssh und public-key authentication auf einem Server anmelde, welcher Rechner prüft das Paßwort für den Key? Macht das mein lokaler Rechner, indem er zunächst das Paßwort prüft und dann den (entschlüsselten?) Key an den Server schickt, oder schickt der Client den (verschlüsselten?) Key an den Server, und der Server prüft (entschlüsselt?) ihn anhand des angegebenen Paßwortes? Im ersten Fall wäre public-key authentication nämlich u. U. deutlich unsicherer als eine reine Paßwortabfrage des Servers... MfG, Michael.
Michael Schachtebeck
Hallo,
es wurde auf dieser Liste in verschiedenen Threads schon häufiger über ssh und die Sicherheit von Paßwörtern diskutiert. Es wurde von einigen Diskussionsteilnehmern die Meinung vertreten, daß public-key authentication sicherer ist als ein reiner paßwortgeschützter Login. Dazu die folgende Frage: Wenn ich mich per ssh und public-key authentication auf einem Server anmelde, welcher Rechner prüft das Paßwort für den Key? Macht das mein lokaler Rechner, indem er zunächst das Paßwort prüft und dann den (entschlüsselten?) Key an den Server schickt, oder schickt der Client den (verschlüsselten?) Key an den Server, und der Server prüft (entschlüsselt?) ihn anhand des angegebenen Paßwortes?
Im ersten Fall wäre public-key authentication nämlich u. U. deutlich unsicherer als eine reine Paßwortabfrage des Servers...
Das Passwort interessiert in diesem Fall niemanden. Auf den Hosts auf die du zugreifen möchtest, sollte dein public_key vorliegen. Du prüfst (bzw. der sshd) mit deinem private_key, ob der, von der Gegenstelle, vorgelegte public_key stimmt, darauf wirst du als authentisch verifiziert. -Dieter -- Dieter Klünter | Systemberatung http://www.dkluenter.de GPG Key ID:01443B53
Am 12/11/2004 06:19 PM schrieb Dieter Kluenter:
Das Passwort interessiert in diesem Fall niemanden. Auf den Hosts auf die du zugreifen möchtest, sollte dein public_key vorliegen. Du prüfst (bzw. der sshd) mit deinem private_key, ob der, von der Gegenstelle, vorgelegte public_key stimmt, darauf wirst du als authentisch verifiziert.
Schon klar, ich habe vielleicht etwas mißverständlich ausgedrückt: Ich meinte eine Key, bei dessen Erzeugung ein Paßwort eingegeben wurde - wie (von welchem Rechner) wird das geprüft? Lokal oder vom Server? MfG, Michael.
Michael Schachtebeck wrote:
Am 12/11/2004 06:19 PM schrieb Dieter Kluenter:
Das Passwort interessiert in diesem Fall niemanden. Auf den Hosts auf die du zugreifen möchtest, sollte dein public_key vorliegen. Du prüfst (bzw. der sshd) mit deinem private_key, ob der, von der Gegenstelle, vorgelegte public_key stimmt, darauf wirst du als authentisch verifiziert.
Schon klar, ich habe vielleicht etwas mißverständlich ausgedrückt: Ich meinte eine Key, bei dessen Erzeugung ein Paßwort eingegeben wurde - wie (von welchem Rechner) wird das geprüft? Lokal oder vom Server?
Du meinst die Passphrase? Damit wird dein Private Key verschlüsselt. Natürlich wird das vom lokalen Rechner geprüft, d. h. beim Entschlüsseln des Private Key verwendet. Vereinfacht gesagt läuft das so ab: - Rechner entschlüsselt Private Key mit der Passphrase. - Rechner verschlüsselt Botschaft mit Private Key und schickt sie dem Server. - Server entschlüsselt Botschaft mit deinem Public Key. Wenn das geht wurde die Botschaft mit dem Private Key verschlüsselt, den nur du haben kannst, und damit bist du authentifizert. Gruß, Bernhard
Am 12/12/2004 02:42 PM schrieb Bernhard Walle:
Du meinst die Passphrase? Damit wird dein Private Key verschlüsselt. Natürlich wird das vom lokalen Rechner geprüft, d. h. beim Entschlüsseln des Private Key verwendet.
Ja, genau das war die Frage, danke.
Vereinfacht gesagt läuft das so ab:
- Rechner entschlüsselt Private Key mit der Passphrase. - Rechner verschlüsselt Botschaft mit Private Key und schickt sie dem Server. - Server entschlüsselt Botschaft mit deinem Public Key. Wenn das geht wurde die Botschaft mit dem Private Key verschlüsselt, den nur du haben kannst, und damit bist du authentifizert.
Ich hatte befürchtet, daß das so läuft. In dem Fall ist meiner Meinung nach ein Public Key mit Paßwort deutlich unsicherer als ein reiner paßwortgeschützter ssh-Zugang, falls es einem Angreifer gelingt, in den Besitz des private key zu gelangen. In dem Fall hat er nämlich deutlich bessere Chancen, daß Paßwort per brute force zu knacken (weil er ein Programm auf den lokal vorliegenden Key loslassen kann; versucht man brute force per ssh, entsteht bei vernünftig konfigurierten Systemen nach jedem Fehlversuch eine Pause von 3 oder mehr Sekunden, bevor das Paßwort erneut abgefragt wird - ohne diese Drosselung sind beim Knacken der Passphrase des private key natürlich einige hundert Versuche pro Sekunde denkbar. Oder übersehe ich da was? MfG, Michael.
Michael Schachtebeck wrote:
Ich hatte befürchtet, daß das so läuft. In dem Fall ist meiner Meinung nach ein Public Key mit Paßwort deutlich unsicherer als ein reiner paßwortgeschützter ssh-Zugang, falls es einem Angreifer gelingt, in den Besitz des private key zu gelangen. In dem Fall hat er nämlich deutlich bessere Chancen, daß Paßwort per brute force zu knacken (weil er ein Programm auf den lokal vorliegenden Key loslassen kann; versucht man brute force per ssh, entsteht bei vernünftig konfigurierten Systemen nach jedem Fehlversuch eine Pause von 3 oder mehr Sekunden, bevor das Paßwort erneut abgefragt wird - ohne diese Drosselung sind beim Knacken der Passphrase des private key natürlich einige hundert Versuche pro Sekunde denkbar. Oder übersehe ich da was?
Naja, so gesehen ist alles auf deinem Rechner unsicher. Auch GnuPG/PGP ist unsicher, weil es letztlich nach dem gleichen Prinzip verfährt. Idealerweise wäre natürlich der Private Key auf einer Chipkarte und könnte nicht ausgelesen werden, d. h. es sitzt ein Cryptochip drauf der direkt verschlüsselt. Dann wäre diese Schwachstelle behoben. Wenn jemand Zugriff auf deinen Rechner hat solltest du es halt bemerken und Gegemaßnahmen ergreifen, d. h. GnuPG-Revocation und bei SSH halt auf dem anderen Rechner den Public Key löschen. Gruß, Bernhard
Hi On Sunday 12 December 2004 15:39, Michael Schachtebeck wrote:
reiner paßwortgeschützter ssh-Zugang, falls es einem Angreifer gelingt, in den Besitz des private key zu gelangen. In dem Fall hat er nämlich deutlich bessere Chancen, daß Paßwort per brute force zu knacken (weil er ein Programm auf den lokal vorliegenden Key loslassen kann; versucht man brute force per ssh, entsteht bei vernünftig konfigurierten Systemen nach jedem Fehlversuch eine Pause von 3 oder mehr Sekunden, bevor das Paßwort erneut abgefragt wird - ohne diese Drosselung sind beim Knacken der Passphrase des private key natürlich einige hundert Versuche pro Sekunde denkbar. Oder übersehe ich da was?
Ein Passwort ist per brute force mit etwas Geduld eventuell noch zu knacken. Es ist hingegen praktisch aussichtslos einen private key zu erraten. Der Sicherheitsvorteil besteht also nur dann, wenn jemand nichts klauen konnte (weder private key noch Passwort). Die Frage was sicherer ist hängt somit davon ab, von was für Voraussetzungen man ausgeht. Wenn man davon ausgeht, dass ein Angreifer deinen Rechner knacken kann ist das Schlüsselverfahren tatsächlich unsicherer. Für einen Angreifer, der nur den Host und deinen dortigen Usernamen kennt, ist eine Schlüssel-Authentifizierung jedoch viel schwieriger zu knacken als eine reine Passwortabfrage. Gnu ssh ist tatsächlich etwas unflexibel was die Speicherung privater Schlüssel angeht. Es ist allerdings auch dabei mit etwas Bastelei möglich für jeden Host einen eigenen Schlüsselsatz zu definieren, damit ein Angreifer sich nicht nach erfolgreichem Hack auf jedem von dir benutzten Host einloggen kann. Auch ein Hinterlegen der/des Schlüssel(s) auf Diskette/ Memorystick ist grundsätzlich machbar. mfg Axel
Am 12/20/2004 10:19 AM schrieb Axel Heinrici:
Ein Passwort ist per brute force mit etwas Geduld eventuell noch zu knacken. Es ist hingegen praktisch aussichtslos einen private key zu erraten.
Naja, das kommt drauf an. Wenn das Paßwort mindestens 8 Zeichen hat und nicht in einem Wörterbuch vorkommt, das System so konfiguriert ist, daß nach jedem Fehlversuch erstmal 3 Sekunden Pause eingelegt werden, und wenn der Admin ab und zu mal in die Logfiles schaut, sehe ich da eher eine geringe Gefahr (auch wenn es trotzdem möglich ist). Wirklich gefährlich sind sehr kurze Paßwörter sowie Paßwörter, die im Wörterbuch vorkommen (oder ein Admin, der nicht regelmäßig seine Logfiles sichtet).
Der Sicherheitsvorteil besteht also nur dann, wenn jemand nichts klauen konnte (weder private key noch Passwort). Die Frage was sicherer ist hängt somit davon ab, von was für Voraussetzungen man ausgeht. Wenn man davon ausgeht, dass ein Angreifer deinen Rechner knacken kann ist das Schlüsselverfahren tatsächlich unsicherer.
Genau den Fall meinte ich auch. Daß eine Authentifizierung mit Public Key ohne jede Vorkenntnis (Private Key) schwerer zu knacken ist als eine rein paßwortbasierte Authentifizierung ist klar.
Gnu ssh ist tatsächlich etwas unflexibel was die Speicherung privater Schlüssel angeht. Es ist allerdings auch dabei mit etwas Bastelei möglich für jeden Host einen eigenen Schlüsselsatz zu definieren, damit ein Angreifer sich nicht nach erfolgreichem Hack auf jedem von dir benutzten Host einloggen kann. Auch ein Hinterlegen der/des Schlüssel(s) auf Diskette/ Memorystick ist grundsätzlich machbar.
Bei mir läuft OpenSSH_3.8p1, und da ist das eigentlich kein Problem; einfach mit ssh-keygen verschiedene Schlüssel erzeugen (und natürlich in unterschiedlichen Dateien speichern), und dann z. B. in /etc/ssh/ssh_config angeben, welcher Schlüssel zu welchem Host gehört: host router hostname 1.2.3.4 user admin IdentityFile /media/floppy/router_key host webserver hostname www.meine-domain.tld user webmaster IdentityFile /home/michael/.ssh/id_dsa2 Das bietet natürlich nur dann mehr Sicherheit als ein einzelner Key für alle Server, wenn die Keys voneinander getrennt gelagert werden und/oder durch unterschiedliche Paßwörter geschützt sind. ;) MfG, Michael.
participants (4)
-
Axel Heinrici
-
Bernhard Walle
-
Dieter Kluenter
-
Michael Schachtebeck