Warum befindet sich ein öffentlicher SSH-Schlüssel auf dem Server und nicht beim Client?

12

Ich verstehe die Theorie, die dahinter steckt, öffentliche Schlüssel auf dem Server zu belassen, nicht ganz. In der Lockbox-Analogie von öffentlichen / privaten Schlüsseln hält Alice zum Entsperren von Alices Box den privaten Schlüssel, während der öffentliche Schlüssel an Bob verteilt wird. Es scheint, dass der Server die Rolle eines Schließfachs spielt. Warum enthält er also den öffentlichen Schlüssel?

Connor Glosser
quelle

Antworten:

20

Beachten Sie, dass der Server einen privaten und einen öffentlichen Schlüssel hat, die von dem Schlüsselpaar, das Sie als Benutzer generieren, völlig getrennt sind. Der private Schlüssel für den Server wird normalerweise mit der Serverkonfiguration gespeichert, und der öffentliche Schlüssel wird vom Server übertragen, wenn Sie versuchen, eine Verbindung herzustellen. Ihr Client vergleicht den öffentlichen Schlüssel des Servers mit Ihrer Datei known_hosts. Bei sachgemäßer Verwendung werden MITM-Angriffe verhindert.

Sie haben den privaten Schlüssel für Ihr persönliches Konto. Der Server benötigt Ihren öffentlichen Schlüssel, damit überprüft werden kann, ob Ihr privater Schlüssel für das Konto, das Sie verwenden möchten, autorisiert ist.

Also benutze dein Beispiel. Sowohl Bob als auch Alice haben private und öffentliche Schlüssel. Die öffentlichen Schlüssel, die zuvor oder als Teil der Verbindung gemeinsam genutzt wurden, werden verwendet, um zu überprüfen, ob die mit den privaten Schlüsseln verschlüsselten Daten legitim sind. Wenn der Client nicht über den öffentlichen Schlüssel oder einen anderen öffentlichen Schlüssel verfügt, wird eine beängstigende Warnung angezeigt. Wenn der Server nicht über den öffentlichen Schlüssel des Clients verfügt, werden Sie nicht zugelassen.

Zoredache
quelle
1
Aha! Das macht viel mehr Sinn. Ich wusste, dass es eine Methode zum Schutz vor MITM-Angriffen gibt, aber ich wusste nicht, dass es ein weiteres Schlüsselpaar gibt :) Vielen Dank für die Hilfe!
Connor Glosser
5

Sie als Benutzer sind derjenige, der die Informationen bereitstellt, die Sie beim Anmelden sind. Aus Gründen der Autorisierung benötigen Sie den privaten Schlüssel, da der Server jeden auffordert, der vorgibt, Sie zu sein (Versuche, sich bei Ihrem anzumelden) Name), um es zu beweisen.

Die Art und Weise, wie es funktioniert, ist, dass der Server Ihnen ein bisschen Text sendet, Sie auffordert, ihn zu verschlüsseln und mit Ihrem öffentlichen Schlüssel zu entschlüsseln. Dies kann nur die Person mit Ihrem privaten Schlüssel tun.

Kairo
quelle
1

Es enthält den öffentlichen Schlüssel zur Vereinfachung. Andernfalls müssen Sie eine PKI erstellen - ähnlich wie bei der SSL-Zertifizierungsstelle.

Die Idee wäre, den Fingerabdruck des öffentlichen Schlüssels zu überprüfen, wenn der SSH-Client Sie auffordert, den Schlüssel des Remote-Servers zu akzeptieren.

Mircea Vutcovici
quelle
1

Ich würde sagen, dass eine bessere Analogie darin besteht, dass der öffentliche Schlüssel des Servers die offene Schließbox mit einem Riegel ist, den Sie schließen (aber nicht öffnen) können, den nur der Server öffnen kann. Die eigentliche Frage ist, ob Sie dem öffentlichen Schlüssel vertrauen (ist das wirklich Alice's Box?), Wo immer Sie ihn erhalten, er per Definition öffentlich ist, und darum geht es bei PKIs.

Helvick
quelle
1

Ein öffentlicher Schlüssel ist eine sehr große Zahl, die mathematisch von Ihrem privaten Schlüssel abgeleitet wird.

Es ist so abgeleitet, dass die beiden Zahlen verknüpft sind,

aber damit der private Schlüssel nicht von jemandem entdeckt werden kann, der nur den öffentlichen Schlüssel kennt. Der öffentliche Schlüssel wird an andere Teilnehmer gesendet, an die Sie sich authentifizieren möchten oder an die Sie verschlüsselte Nachrichten senden möchten. Der öffentliche Schlüssel ist nicht vertraulich und muss nicht geschützt werden. Es kann öffentlich verbreitet werden. [email protected]

Dilli Babu
quelle
1
Ich glaube nicht, dass es in dieser Antwort etwas Neues gibt, verglichen mit den anderen Antworten, die bereits vor fünf Jahren gegeben wurden.
Kasperd