Gibt es so etwas wie ein signiertes SSH-Schlüsselpaar?

9

Wir übertragen Dateien auf einen Remote-Server in unserer Anwendung. Die erforderliche Authentifizierungsmethode ist die Verwendung von SSH-Schlüsseln.

Also habe ich mein Schlüsselpaar mit ssh-keygen erstellt und meinen öffentlichen Schlüssel zum Einfügen in die Datei authorized_keys des Remote-Hosts gesendet. Dies wurde jedoch von der IT-Sicherheit abgelehnt, die angab, das Schlüsselpaar für mich zu generieren und mir den privaten Schlüssel zu senden. Grund: "Wir müssen die SSH-Schlüssel vom IT-Sicherheitsteam signieren. Dies soll sicherstellen, dass wir einen gewissen Vorsprung bei der Nachverfolgung und Rechenschaftspflicht haben."

Offensichtlich habe ich Probleme damit. Wenn der private Schlüssel von einer anderen Person generiert wird, kann sich diese Person ohne mein Wissen als ich tarnen. Ich versuche Wege zu finden, um dieses Argument zu widerlegen.

Soweit ich googeln kann, scheint es keine bekannte Möglichkeit zu geben, die Schlüssel so zu signieren, dass sie bei der Verfolgung einer Person helfen, die sich angemeldet hat. Die Tatsache, dass ich meinen öffentlichen Schlüssel übermittelt habe, bedeutet, dass ich den Schlüssel besitze und jeder, der sich mit diesem Schlüssel beim Remote-Server anmeldet, standardmäßig als ich selbst identifiziert wird. Wie würde das Unterschreiben helfen? Und wie würden sie überhaupt unterschreiben?

Jemand weist mich bitte darauf hin, wenn ich falsch liege, danke!


Ok, jetzt, da wir festgestellt haben, dass SSH-Schlüssel nicht signiert werden können, muss ich der IT-Sicherheit zeigen, wie sie tatsächlich verfolgen können, wer sich angemeldet hat (muss konstruktiv sein, denke ich, wenn nicht die Überheblichkeit beginnt ). Auf meinem eigenen Server habe ich sshds LogLevel auf DEBUG gesetzt. Wenn ich mich jetzt anmelde, kann ich den folgenden Ausschnitt sehen:

Found matching DSA key: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx

Dies scheint ein Hash-Wert zu sein. Wie beziehe ich mich darauf, welcher öffentliche Schlüssel in der Datei authorized_keys verwendet wurde? Ich weiß, dass es eine andere Zeile gibt, die sagt:

debug1: matching key found: file /home/bofh/.ssh/authorized_keys2, line 1

Dies ist jedoch nicht so nützlich, da die Zeilennummern leicht geändert werden können, wenn ich eine Taste oben in die Datei einfüge und die Originaltasten nach unten drücke.

Vielen Dank!

feicipet
quelle
2
Vielleicht drucken sie die Schlüssel aus, unterschreiben sie (auf Papier) und legen sie dann ab?
InnaM
Der Hash-Wert, den Sie erhalten, ist höchstwahrscheinlich der sogenannte Fingerabdruck des Schlüssels. Ich empfehle, im openssh-Handbuch zu lesen, wie Sie diese Fingerabdrücke auflisten können.
Niels Basjes
Der wahrscheinlichste Grund für diese Richtlinie ist, dass sie sich bei Bedarf tatsächlich als Sie ausgeben möchten. Das Unterzeichnungsargument ist nur BS, damit es für Neulinge plausibel klingt. Selbst wenn sie den Pubkey unterschreiben müssten, müssten sie ihn nicht selbst generieren.
b0fh

Antworten:

13

In der Zeit, seit Sie Ihre Frage gestellt haben, hat sich das Universum verändert.

Openssh5.4 hat Unterstützung für genau die Art von Zertifikaten hinzugefügt, nach denen Sie gesucht haben. In den Versionshinweisen auf http://www.openssh.org/txt/release-5.4 (und die man - Seiten) für weitere Informationen, oder wenn Sie wollen wirklich sein verrückt, Blick auf PROTOCOL.certkeys für die blutigen Details

James Polley
quelle
Habe das gerade nach sehr langer Zeit gesehen ... scheint echt :) Werde es ausprobieren, danke!
Feicipet
8

Mein erster Eindruck beim Lesen Ihrer Frage ist, dass die IT-Person SSH und SSL verwechselt hat (es muss von uns signiert werden) und auch nicht versteht, wie die SSL-Signatur wirklich funktioniert.

Auf keinen Fall kann ein SSH-Schlüssel signiert werden (von dem ich weiß).

Niels Basjes
quelle
+1 Sie können SSH-Schlüssel nicht auf die gleiche Weise signieren wie PGP- oder SSL-Zertifikate. Ich würde sie um Klärung bitten.
David Pashley
4

In dieser Anfrage stimmt etwas nicht.

Wenn es signierte Dateien an den Server liefert,
würde ich erwarten, dass dies mindestens erfolgt.

  1. Sie erstellen ein Schlüsselpaar für sich selbst (nennen Sie dies meinen Schlüssel)
    • Wenn Sie etwas senden möchten,
    • Sie verschlüsseln es zuerst mit my-key-private
    • Laden Sie dann diese verschlüsselte Datei auf den Server hoch
    • Jemand auf dem Server muss den Vorgang wie folgt umkehren:
    • Sie verwenden Ihre my-key-pub, um die Datei zu entschlüsseln
    • Wenn Sie die Datei gesendet haben, wird sie durch die Entschlüsselung wiederhergestellt
    • Andernfalls erhalten sie keine verwendbare Datei
    • effektiv haben Sie die Datei mit Ihrem privaten Schlüssel signiert
    • Sie haben die Signatur mit Ihrem öffentlichen Schlüssel überprüft
    • Die Rechenschaftspflicht wird von ihnen übernommen, die bestätigen, dass Sie die Datei gesendet haben

Es gibt andere Möglichkeiten, solche Dinge zu tun. Es
ist jedoch als Authentifizierungsschema nutzlos, ein Schlüsselpaar von einer anderen Person generieren zu lassen .
Es hat eine starke Implikation, dass Sie ihnen genauso vertrauen, wie Sie sich selbst vertrauen.


Dies sind die ersten Fragen, die Sie Ihrer IT stellen können.
Wenn die Rechenschaftspflicht ein Anliegen der IT ist,

  1. Wie stellen sie sicher, dass Sie das Ihnen von ihnen gegebene Schlüsselpaar nicht teilen / verlieren? und,
    • Inwiefern unterscheidet sich dieses Schlüsselpaar-aus-IT-Konzept von einem Kennwort, das Sie von der IT erhalten haben?
      Warum sollte man sich in diesem Fall überhaupt mit Schlüsselpaaren beschäftigen?
nik
quelle
Sie denken an PGP / GnuPG zum Verschlüsseln von Dateien. In diesem Fall ist die Schlüsselsignatur normal. Die ursprüngliche Frage betrifft SSH-Schlüssel. Es wäre sinnvoll, wenn sie nach einem mit PGP signierten / verschlüsselten SSH-Schlüssel fragen würden (nachdem sie die PGP-Schlüssel des anderen überprüft und signiert haben).
Seiten
@pgs, ich versuche zu sehen, auf was die IT-Person hier abzielt.
Nik
Ich bin mir ziemlich sicher, dass der Sicherheitsmann verwirrt ist, aber da er der IT-Sicherheitsmann aus der Firma meines Kunden und nicht mein Kollege ist, muss ich ein bisschen taktvoller sein und konstruktiv pushen, ohne ihn nur auszulachen und zu sagen, dass er Dinge hat gemischt. Ja, es ist definitiv SSH und nicht PGP.
Feicipet
@feicipet, taktvoll zu werden ist, wo meine letzten Punkte Ihnen helfen werden.
Nik
@feicipet, Ihr Ziel wäre es, sie endlich dazu zu bringen, das Minimum zu erkennen, das sie tun müssten, um ihre Absicht richtig zu erreichen.
Nik
2

Es gibt keinen Grund, warum Sie keine X.509-Zertifikate für die SSH-Authentifizierung anstelle von bloßen Schlüsseln verwenden könnten - tatsächlich würde ich es sehr bevorzugen, wenn OpenSSH so funktioniert! Die Standardversion von OpenSSH tut dies jedoch nicht und ist heutzutage die dominierende Implementierung.

Ich habe einige gepatchte Versionen von OpenSSH gesehen, die dies tun, und die kommerzielle Implementierung von SSH.com scheint auch die X.509-Authentifizierung zu unterstützen. Wenn Ihre Organisation eine dieser Optionen verwendet, ist es durchaus sinnvoll, die Schlüssel von einer zentralen Behörde signieren zu lassen.

Es gibt jedoch keine Entschuldigung dafür, dass der private Schlüssel von einem Drittanbieter generiert werden muss! Wenn sie die X.509-Route wählen, sollten Sie ein Schlüsselpaar und eine Zertifikatsignierungsanforderung generieren, genau wie bei jedem anderen X.509-Zertifikat, das für SSL usw. verwendet wird.

Stephen Veiss
quelle