Wie funktioniert die SSH-Verschlüsselung?


34

Ich habe über das Erzeugen von 2 Schlüsseln (privat und öffentlich) auf dem Client-Host und das Kopieren des öffentlichen Schlüssels auf den Server-Host gelesen.

Nach meinem Verständnis (korrigieren Sie mich, wenn ich falsch liege): Der Server verschlüsselt Daten mit dem öffentlichen Schlüssel und sendet sie an den Client. Der Client entschlüsselt sie mit dem privaten Schlüssel.

Aber wie geschieht es, wenn ich Daten auf dem Client verschlüsseln muss, um sie an den Server zu senden?

Der öffentliche Schlüssel verschlüsselt Daten auf dem Client? Aber wie kann der Server es entschlüsseln, wenn es nur den öffentlichen Schlüssel hat?

Wie funktioniert die SSH-Verschlüsselung?

Antworten:


35

Nachdem die TCP-Verbindung hergestellt wurde, einigen sich beide Systeme auf einen Sitzungsschlüssel und verwenden Protokolle wie DH-Schlüsselaustausch , ECDH oder GSSAPI. Dieser Schlüssel ist symmetrisch und temporär - beide Seiten verwenden denselben Schlüssel zum Ver- und Entschlüsseln von Daten mithilfe von Algorithmen wie AES oder RC4 .

Das Client-Schlüsselpaar wird niemals zum Verschlüsseln von Daten verwendet, sondern nur zur Authentifizierung. "Publickey" ist eine von mehreren verfügbaren Methoden, bei denen der Client seinen eigenen öffentlichen Schlüssel zusammen mit dem Nachweis des Besitzes eines privaten Schlüssels vorlegt. Ebenso wird das Server-Schlüsselpaar nur zur Authentifizierung des Servers während des DH- oder ECDH-Schlüsselaustauschs verwendet. Damit werden keine Daten verschlüsselt.

Das SSH2-Protokoll ist in mehreren RFCs dokumentiert , darunter:

  • RFC 4253 - SSH-Transportschichtprotokoll (Secure Shell)
  • RFC 4419 - Diffie-Hellman-Gruppentausch
  • RFC 4432 - RSA-Schlüsselaustausch
  • RFC 4462 - GSSAPI-Authentifizierung und Schlüsselaustausch

13

Zunächst müssen Sie verstehen, dass viele Verschlüsselungsprotokolle wie SSH und SSL PKI für Authentifizierungszwecke verwenden, aber fast keines dieser Systeme PKI für die eigentliche Übertragung der Nutzdaten verwendet.

PKI ist viel zu CPU-intensiv, um die eigentlichen Nutzdaten zu übertragen. Mit der PKI wird ein zufällig generierter Schlüssel ausgehandelt, der mit einem symmetrischen Verschlüsselungsprotokoll verwendet wird. Das zu verwendende Protokoll wird ebenfalls ausgehandelt und sollte das stärkste Protokoll sein, auf das sich die beiden Systeme einigen können. Sobald also der erste Handshake und die erste Verhandlung abgeschlossen sind, ist so ziemlich alles nur noch symmetrische Standard-Kryptografie.


2
Weitere Informationen hierzu finden Sie in RFC4253 , Seite 15.
slhck

12

Hier einige praktische Beispiele: Angenommen, Schlüssel A wurde geheim gehalten und ist daher der private Schlüssel, und Schlüssel B wurde an einem öffentlich zugänglichen Ort abgelegt und ist daher der öffentliche Schlüssel.

Wenn Sie also eine Nachricht an alle senden möchten und diese überprüfen sollen, ob sie von Ihnen stammt und während der Zustellung unverändert war, senden Sie Ihre Nachricht und fügen einen mit Schlüssel A verschlüsselten Hash der Nachricht hinzu. Dann an jeden, der has Key B kann den Hash entschlüsseln, ihn mit der empfangenen Nachricht vergleichen und sicherstellen, dass die Nachricht von Ihnen stammt (da nur eine Person mit Key A die verschlüsselte Nutzlast generiert haben kann, die den Hash erfolgreich entschlüsselt hat, und weil Sie sind die einzige Person mit Schlüssel A, die nur von Ihnen kommen kann). Dies wird als Signieren bezeichnet .

Nehmen wir jetzt an, jemand möchte Ihnen eine geheime Nachricht senden, aber nicht offenbaren, wer er ist. Sie können ihre Nachricht mit einem symmetrischen Schlüssel verschlüsseln (wie von Zoredache erwähnt, ist symmetrisch viel billiger), diesen Schlüssel dann mit Schlüssel B verschlüsseln und an Sie senden. Da nur Schlüssel A etwas entschlüsseln kann, das mit Schlüssel B verschlüsselt wurde, kann keine andere Person sehen, was sich in der Nachricht befindet, die an Sie gesendet wurde. So funktioniert normale Verschlüsselung und wie SSH Daten austauscht.


3

Hier finden Sie eine relativ verständliche Beschreibung der mathematischen Grundlagen der Verschlüsselung mit privaten öffentlichen Schlüsseln.

Eine noch grundlegendere Beschreibung der BBC finden Sie hier .


Ich habe der BBC einen neuen Link hinzugefügt, der diesen Prozess und einen Teil der Geschichte erklärt.
Chogg

1

du schreibst

"Der öffentliche Schlüssel verschlüsselt Daten auf dem Client? Aber wie kann der Server sie entschlüsseln, wenn er nur den öffentlichen Schlüssel hat?"

Ich weiß nicht so viel darüber, aber ich denke, ich kann das ganz klar beantworten.

Wenn A eine Nachricht an B senden möchte, verwendet A den öffentlichen Schlüssel von B. So kann B es dann entschlüsseln.

Wenn A seinen eigenen öffentlichen Schlüssel zum Verschlüsseln der Nachricht verwenden würde, könnte B sie tatsächlich nicht entschlüsseln.

Das wird hier erklärt

http://www.comodo.com/resources/small-business/digital-certificates2.php

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.