
Ich habe gelesen, dass man auf dem Client-Host zwei Schlüssel (privat und öffentlich) generiert und den öffentlichen Schlüssel auf den Server-Host kopiert.
So wie ich es verstehe (korrigieren Sie mich, wenn ich falsch liege): Der Server verschlüsselt die Daten mit dem öffentlichen Schlüssel und sendet sie an den Client, der Client entschlüsselt sie mit dem privaten Schlüssel.
Aber wie funktioniert 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? Doch wie kann der Server sie entschlüsseln, wenn er nur den öffentlichen Schlüssel besitzt?
Wie funktioniert die SSH-Verschlüsselung?
Antwort1
Als erstes vereinbaren die beiden Systeme nach dem Aufbau der TCP-Verbindung einenSitzungsschlüssel, unter Verwendung von Protokollen wieDH-Schlüsselaustausch,ECDHoder GSSAPI. Dieser Schlüssel ist symmetrisch und temporär – beide Seiten verwenden denselben Schlüssel zum Verschlüsseln und Entschlüsseln von Daten mit Algorithmen wieAESoderRC4.
Das Client-Schlüsselpaar wird niemals zum Verschlüsseln von Daten verwendet, sondern nur fürAuthentifizierung– „publickey“ ist eine von mehreren verfügbaren Methoden, bei der der Client seinen eigenen öffentlichen Schlüssel zusammen mit dem Nachweis des Besitzes des privaten Schlüssels vorlegt. Ebenso wird das Server-Schlüsselpaar nur zur Authentifizierung des Servers während des DH- oder ECDH-Schlüsselaustauschs verwendet; es werden keine Daten damit verschlüsselt.
Das SSH2-Protokoll ist dokumentiert inmehrere RFCs, einschließlich:
- RFC 4253 – Secure Shell (SSH) Transportschichtprotokoll
- Abschnitt 7– „Schlüsselaustausch“
- Sektion 8– „Diffie-Hellman-Schlüsselaustausch“
- RFC 4419– Diffie-Hellman-Gruppenaustausch
- RFC 4432– RSA-Schlüsselaustausch
- RFC 4462– GSSAPI-Authentifizierung und Schlüsselaustausch
Antwort2
Als Erstes müssen Sie meiner Meinung nach verstehen, dass zwar viele Verschlüsselungsprotokolle wie SSH und SSL PKI zu Authentifizierungszwecken verwenden, fast keines dieser Systeme PKI jedoch für die tatsächliche Übertragung der Nutzdaten einsetzt.
PKI ist viel zu CPU-intensiv, um für die Übertragung der eigentlichen Nutzdaten verwendet zu werden. Was passiert, ist, dass die PKI verwendet wird, um einen zufällig generierten Schlüssel auszuhandeln, der mit einem symmetrischen Verschlüsselungsprotokoll verwendet werden soll. 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 anfängliche Handshake und die Aushandlung abgeschlossen sind, ist praktisch alles nur noch standardmäßige symmetrische Kryptografie.
Antwort3
Hier sind 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 veröffentlicht und ist daher der öffentliche Schlüssel.
Wenn Sie also eine Nachricht an alle senden möchten und diese bestätigen sollen, dass die Nachricht von Ihnen stammt und während der Übermittlung unverändert geblieben ist, senden Sie Ihre Nachricht und fügen einen mit Schlüssel A verschlüsselten Hash der Nachricht ein. Dann kann jeder mit Schlüssel B den Hash entschlüsseln, ihn mit der empfangenen Nachricht vergleichen und bestätigen, dass die Nachricht von Ihnen stammt (da nur eine Person mit Schlüssel A die verschlüsselte Nutzlast hätte generieren können, die den Hash erfolgreich entschlüsselt hat, und da Sie die einzige Person mit Schlüssel A sind, kann die Nachricht auch nur von Ihnen stammen).Dies nennt man Signieren.
Nehmen wir nun an, jemand möchte Ihnen eine geheime Nachricht senden, aber nicht preisgeben, wer er ist. Er kann seine Nachricht mit einem symmetrischen Schlüssel verschlüsseln (wie Zoredache erwähnt hat, ist symmetrisch viel billiger), dann diesen Schlüssel nehmen und ihn 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 in der an Sie gesendeten Nachricht steht. So funktioniert normale Verschlüsselung und so tauscht SSH Daten aus.
Antwort4
du schreibst
„Der öffentliche Schlüssel verschlüsselt die 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 ziemlich klar beantworten.
Möchte A eine Nachricht an B senden, nutzt A den öffentlichen Schlüssel von B. So kann B die Nachricht entschlüsseln.
Wenn A seinen eigenen öffentlichen Schlüssel zum Verschlüsseln der Nachricht verwenden würde, wäre B tatsächlich nicht in der Lage, sie zu entschlüsseln.
Das wird hier erklärt
http://www.comodo.com/resources/small-business/digital-certificates2.php