2016-07-09 3 views
0

Ich habe eine Anwendung, die in vielen Maschinen verteilt und installiert ist. Es gibt eine zentrale Maschine, die eine andere Maschine anfordern kann, auf der die Anwendung installiert ist, und die anderen Maschinen können die zentrale Maschine anfordern. So wird jede Installation sowohl als Server als auch als Client agieren. Ich möchte den Zugriff mit ssh Public Key Kryptografie sichern.Kann ich denselben öffentlichen Schlüssel für ssh-Handshake und Authentifizierung verwenden?

Der Einfachheit halber sagen wir, Server A (Manager - der zuerst installiert wird) und Server B haben die Anwendung installiert.

Lasst uns sagen, wenn Server B installiert ist, den öffentlichen Schlüssel des Servers A wird in Server B

Man nehme auch an Server A verfügbar sein wird, die erste Anforderung an den Server B. machen Dabei wird der Server A Server B erhalten öffentlicher Schlüssel während des Handshakes (durch Verifizieren des Fingerabdrucks wird der Schlüssel in Server A gespeichert) und Server A sendet seinen öffentlichen Schlüssel zur Authentifizierung an Server B. Da Server B bereits über den öffentlichen Schlüssel des Servers A verfügt, ist die Authentifizierung erfolgreich.

Wenn Server B Server A anfordern möchte, sendet der Server A seinen öffentlichen Schlüssel während des Handshakes und es wird mit dem öffentlichen Schlüssel von Server A auf Server B verifiziert. Zur Authentifizierung sendet Server B seinen öffentlichen Schlüssel wird gegen den öffentlichen Schlüssel verifiziert, den der Server A während des vorherigen Anforderungs-Handshakes erhalten hat (von Server A zu Server B).

Zu beachten ist, dass kein Benutzer beteiligt ist. Die Anwendung ist für alle Benutzer der Maschine zugänglich.

Meine Frage ist, brauchen wir separate Schlüssel für Handshake und Authentifizierung oder wie ich beschrieben Single Key ist genug?

Bitte lassen Sie mich auch wissen, dass das oben erläuterte Sicherheitsmodell irgendwelche Probleme besonders sicherheitsbezogen haben wird?

Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.

Danke, Naga

+0

der Einfachheit halber kann ich den gleichen öffentlichen Schlüssel in der Datei authorized_keys und in der Datei known_hosts verwenden? – Naga

+0

Was versuchen Sie damit zu erreichen? Der Host-Schlüssel wird in einer bestimmten Gruppe von Dateien auf dem Server gespeichert. Der Benutzerschlüssel geht in einen bestimmten Satz von Dateien auf dem Client. Es hat keinen Vorteil, den gleichen Schlüssel für beide Zwecke zu verwenden. Schlüssel sind nicht teuer oder zeitaufwendig zu erstellen. – Kenster

+0

Hallo Kenter, Danke für Ihren Kommentar. Schlüssel sind nicht teuer zu erstellen, aber teilen Sie es mit anderen Ende ist ein bisschen schwierig. – Naga

Antwort

0

Ja. Dies wird Host-Based authentication genannt, wie in RFC4252, Abschnitt 9 beschrieben. Aber beachte, dass es mehrere Sicherheits-Threads gibt und die Verwendung von richtigen (openssh) Zertifikaten heutzutage viel mehr Sinn macht (oder Kerberos).

+0

danke Jakuje. Ich erwäge, Zertifikate (selbstsigniert) anstelle von öffentlichen Schlüsseln zu verwenden. So werden beide Enden Zertifikate erzeugen und andere Seite teilen. Siehst du irgendeinen Unterschied außer der Verarbeitung? – Naga

+0

Sie können nicht selbst signiert werden. Sie müssen von einer "Certificate Authority" (einem anderen Schlüssel) signiert werden, dem die validierende Seite vertraut. Überprüfen Sie die Handbuchseite für 'ssh-keygen', welche die Zertifikate oder einige [guide] (https://blog.habets.se/2011/07/OpenSSH-certificates) im Internet beschreibt. – Jakuje

+0

Beachten Sie jedoch, dass Sie Ihre eigene CA erstellen und selbst erstellen können. –

Verwandte Themen