Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Ubuntu-Forum & Kubuntu-Forum | www.Ubuntu-Forum.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

  • »medieninf« ist der Autor dieses Themas

Beiträge: 97

Registrierungsdatum: 25.08.2010

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

1

01.08.2013, 22:33

Frage zu SSH Challenge/Response

Hallo,

mal eine grundsätzliche Verständnisfrage: Wenn ich SSH mittels Key-Authentifizierung nutzen will gehe ich doch wie folgt vor bzw kann so vorgehen: Ich (Rechner A) erzeuge ein Schlüsselpaar und schicke dem SSH Server (Rechner B) meinen öffentlichen Schlüssel (mittels ssh-copy-id). Wenn ich (Rechner A) mich nun mittels SSH mit B verbinden will findet ein Challenge Response statt. B verschlüsselt mit meinem öffentl. Schlüssel ein Geheimnis, ich entschlüssel das mit meinem privaten Schlüssel und schicke die Antwort verschlüsselt mit dem öffentl. Schlüssel von A zurück und werde "erkannt".

Jetzt die Frage: Wie "erkennt" B das es sich um A handelt und er mir mit meinem öffentl. Schlüssel eine Challenge zukommen lassen kann? In den authorized_keys von B sind ggf. ja noch andere öffentliche Schlüssel. Ich als Rechner A müsste doch quasi als ersten Schritt erst sagen "Hallo ich bin A. Challenge an mich mit meinem öffenl. Schlüssel". Wie findet das statt bzw. wie gibt sich A als A zu erkennen? Zweitens: Wie komme ich an den öffentl. Schlüssel von B? Ich kopier den doch nicht vorher irgendwo rein bei mir. Wird der mir von B zugeschickt oder in einem öffentl. Verzeichnis vorgehalten?

Hoffe ich konnte mich halbwegs klar ausdrücken... Danke :-)

2

01.08.2013, 23:42

wie gibt sich A als A zu erkennen?
Wenn du den Connect einmal mit der Option -vv startest, siehst du es: Der Client prüft zuerst, ob er beim richtigen Server ist (über dessen Host-Key). Danach bietet er den eigenen Schlüssel für den Login-Prozess an. Wenn die Gegenstelle den öffentlichen Teil dazu hat, wird die Prozedur weitergehen. Ansonsten werden andere Verfahren probiert, wenn erlaubt und verfügbar.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
...
debug1: Host 'dockstar' is known and matches the RSA host key.
debug1: Found key in /home/fredl/.ssh/known_hosts:9
...
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering public key: /home/fredl/.ssh/id_rsa
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug2: input_userauth_pk_ok: fp e0:07:f8:39:3e:07:09:a5:8e:e8:e2:f7:89:3d:07:8b
debug1: read PEM private key done: type RSA
debug1: Authentication succeeded (publickey).
...


Wie komme ich an den öffentl. Schlüssel von B?
Wenn du ihn brauchst musst du ihn dir holen.

Ich glaube, das Thema passt fast besser nach "Sicherheit".
Beim Erstellen dieser Nachricht kamen keine Tiere zu Schaden.
me is all sausage
but don't call me Ferdl

  • »maettu« ist männlich

Beiträge: 3 299

Registrierungsdatum: 14.09.2005

Derivat: Xubuntu

Architektur: 64-Bit PC

Desktop: XFCE

  • Nachricht senden

3

02.08.2013, 00:13

Zitat

Wie komme ich an den öffentl. Schlüssel von B? Ich kopier den doch nicht
vorher irgendwo rein bei mir. Wird der mir von B zugeschickt oder in
einem öffentl. Verzeichnis vorgehalten?
Im Normalfall verbindest du dich mal via SSH und, dabei wird der öffentliche Key dir geschickt, falls du den noch nicht kennst musst du manuell bestätigen ob du diesem vertraust. Dabei wird dieser in die "known-hosts" datei kopiert.
Beim nächsten mal verbinden wird falls der öffentliche Key des Servers schon bekannt ist (sprich sich in known-hosts befindet) nicht nochmals gefragt ob du dem Server vertrauen willst.

Nur wie du vor der allerersten Verbindung sozusagen zum öffentlichen Key des Servers kommst ist im Prinzip nicht festgelegt. Manchmal kann man öffentliche SSH-Keys auf einer Webseite sehen.
Oder was viel häufiger ist man vertraut zunächst mal blind, wobei man aber spätestens beim Wechsel des Keys stutzig werden sollte (sprich mal beim Admin des Servers nachfragen ob sich der SSH-Host-Key geändert hat)

Wenn du mehr interessiert in Verschlüsselungsverfahren bist schau dir mal RSA an. Gut SSH verwendet eh nur beim Authentifizieren ein asymmetrisches Verfahren, später wird ein symmetrischer Key übermittelt, der sich nach gewisser Zeit wieder ändert.

  • »medieninf« ist der Autor dieses Themas

Beiträge: 97

Registrierungsdatum: 25.08.2010

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

4

02.08.2013, 21:58

Hallo,

Danke für eure Antworten. Ich glaube ich habe es verstanden.

Bei Start der SSH Verbindung bekomm ich den öffentl. Schlüssel und prüfe ob dieser mir bereits bekannt ist (known hosts). Wenn nicht muss ich einfach mal blind vertrauen. D.h. wenn ich den öffenl. Schlüssel nicht aus einer "sicheren" Quelle habe könnte es auch sein jemand gibt sich als ein anderer aus. D.h. die Sicherheit/das Vertrauen steht und fällt mir dem Vertrauen in den öffentl. Schlüssel. Wenn ich da den falschen untergeschoben bekommen habe ich Pech gehabt. Bei den eigenen Rechnern kann ich die öffentl. Schlüssel ja manuell kopieren. Woanders wird es da schwieriger...

Was mir aber noch einfällt... Wenn ich nen SSH Server installiere wird da automatisch ein Schlüsselpaar erzeugt? Sonst kann der Server dem Client ja seinen öffentl. Schlüssel nicht schicken. Bei meinem oben beschriebenen Szenario Rechner A (Client), Rechner B (Server) musste für das Challenge-Response ja nur ein Schlüsselpaar für den Client exisitieren was der Server für das Challenge-Response nutzt. An welcher Stelle wird der private Schlüssel des SERVERS benötigt?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »medieninf« (02.08.2013, 22:17)


  • »maettu« ist männlich

Beiträge: 3 299

Registrierungsdatum: 14.09.2005

Derivat: Xubuntu

Architektur: 64-Bit PC

Desktop: XFCE

  • Nachricht senden

5

02.08.2013, 22:18

Zitat

Bei den eigenen Rechnern kann ich die öffentl. Schlüssel ja manuell kopieren. Woanders wird es da schwieriger...
Es geht ja nicht darum den öffentlichen Schlüssel manuell zu kopieren, da man einfach bei der ersten Verbindung bestätigt (d. h. das der Schlüssel automatisch kopiert wird).
Im Prinzip ist der Schlüssel wie eine Art "Ausweis des Servers", denn du theoretisch über einen anderen Kanal (Website, Email oder so) überprüfen könntest. Der Schlüssel zeigt dir eigentlich, dass du mit dem gleichen Server wie zuvor verbunden wurdest (falls schon in known-hosts).

Es ist also ein minimaler Schutz, wenn du kritisch auf Änderungen reagierst, du kannst so theoretisch in keine "Man on the Middle Attacke" kommen (gemeint ist dabei, dass sich ein anderer Server als dein SSH-Server ausgibt).
Aber die meisten Leute klicken solche Schlüsselmeldungen eh einfach weg...

Gut bei einer Asymmetrischen Verschlüsselung muss man die Schlüssel immer irgendwie austauschen, das müsst man theoretisch über einen anderen Kanal machen um sicher zu sein.

  • »medieninf« ist der Autor dieses Themas

Beiträge: 97

Registrierungsdatum: 25.08.2010

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

6

02.08.2013, 22:21

"Im Prinzip ist der Schlüssel wie eine Art "Ausweis des Servers","

Hallo, das leuchtet ein. Aber wenn ich mich das erste mal mit dem Server A verbinde und ein Böser "Man in the middle" schickt mir seinen öffentl. Schlüssel dann würde ich ja denken er ist A. Ich kann den Ausweis ja nicht auf "Echtheit" ohne weiteres überprüfen, oder? D.h. wenn der Ausweis mir nicht aus einer vertrauenswürdigen Quelle bekannt ist dann muss ich der Sache blind vertrauen...

  • »maettu« ist männlich

Beiträge: 3 299

Registrierungsdatum: 14.09.2005

Derivat: Xubuntu

Architektur: 64-Bit PC

Desktop: XFCE

  • Nachricht senden

7

02.08.2013, 22:56

Zitat

Ich kann den Ausweis ja nicht auf "Echtheit" ohne weiteres überprüfen,
oder? D.h. wenn der Ausweis mir nicht aus einer vertrauenswürdigen
Quelle bekannt ist dann muss ich der Sache blind vertrauen...
Bei einem Symmetrischen Verfahren (wo der gleiche Schlüssel für Ver- und Entschlüsselung benutzt wird) musst du den Schlüssel ja zunächst auch von einem Computer zum anderen bewegen. Wie man das macht ist immer ein Problem...

Beim Asymmetrischen Verfahren nützt ein einzelner Schlüssel nicht viel, da man vom öffentlichen Schlüssel den Privaten nicht berechnen kann. Du kannst zwar was Verschlüsseln, aber es ohne Privaten Key nicht entschlüsseln.
Dem Server wird dann beim Verbinden eine einfache Frage gestellt (die mit dem öffentlichen Schlüssel verschlüsselt ist), da der Server den Privaten Schlüssel hat kann er diese Frage dann natürlich ohne Probleme beantworten. Somit wird es unmöglich sich als Server xy mit öffentlichem Key auf Website z auszugeben, da Server xy den Privaten Key nicht hat. Das ist nur ein prinzipielles Beispiel, ich denke beim SSH-Server wird das irgendwo genau definiert sein, wie das ganze im Detail abläuft.

Zum Vergleich folgende Wikipedia-Artikel: Asymmetrisch und Symmetrisch.

PS: Es gibt ja seit kurzem eine Alternative zu Whatsapp, das wäre Threema. Die Verwenden auch ein asymmetrisches Verschlüsslungsverfahren, dort wird im "How to Use" eine Schlüsselaustauschen via QR-Code gemacht.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »maettu« (02.08.2013, 23:03)


8

02.08.2013, 23:28

Wenn ich nen SSH Server installiere wird da automatisch ein Schlüsselpaar erzeugt?
Ja, der HostKey. Sonst könnte er sich nicht ausweisen.

Bei einem selbst eingerichteten Server ist es ja nicht schwer, diesen Key zu bekommen. Andere müssen eben einen Weg wählen, ihren Clients diese Überprüfung zu ermöglichen. Da beim ersten Connect zu einem unbekannten Server dessen Fingerprint zur Überprüfung angezeigt wird, ist es das einfachste eben diesen zu veröffentlichen.
Ausgezeichnet beschrieben ist der ganze Ablauf übrigens auch im (allgemein sehr interssanten!) Uberspace-Wiki

Und auch die ohnehin am System liegende man-page erklärt die Verfahren in groben Zügen: "man 5 authorized_keys"
Beim Erstellen dieser Nachricht kamen keine Tiere zu Schaden.
me is all sausage
but don't call me Ferdl

  • »medieninf« ist der Autor dieses Themas

Beiträge: 97

Registrierungsdatum: 25.08.2010

Derivat: Ubuntu

Architektur: 32-Bit PC

  • Nachricht senden

9

03.08.2013, 20:58

Hallo,

Danke für die Antworten. Jetzt sind meine Fragen diesbezüglich fürs erste geklärt :-)