Ist es nicht gefährlich, SSH-Schlüssel zu verwenden, um sich bei einem unbekannten / gefährdeten Server anzumelden?

9

Angenommen, ich stelle jemandem meinen öffentlichen SSH-Schlüssel id_rsa.pub zur Verfügung und er / sie installiert ihn auf einem Server, der gefährdet ist, und ich werde aufgefordert, mich anzumelden.

Umfasst der Anmeldevorgang das Senden meines privaten Schlüssels an den gefährdeten Server?

Wenn ja, hat der Angreifer jetzt Zugriff auf meinen privaten SSH-Schlüssel, und das ist beängstigend.

Wenn nein, warum wird diese Zeile dann in der Ausgabe von ssh -vvv angezeigt:

debug1: Server accepts key: pkalg ssh-rsa blen 277

Dies bedeutet, dass der private Schlüssel an den Server gesendet und akzeptiert wurde.

Verstehe ich das Problem falsch?

Gurjeet Singh
quelle

Antworten:

11

Sie verstehen den Prozess falsch.

Der Schlüssel wird nicht gesendet, sondern eine "Herausforderung" wird erstellt, indem etwas mit dem öffentlichen Schlüssel verschlüsselt wird, das nur mit dem passenden privaten Schlüssel entschlüsselt werden kann.

Wenn Sie nach Ihrem Kennwort gefragt werden oder eine X-Weiterleitung an einen gefährdeten Server durchführen, besteht ein potenzielles Sicherheitsrisiko.

pjc50
quelle
Vielen Dank. ssh gibt auch diese Nachricht aus debug1: Offering RSA public key: <$HOME>/.ssh/id_rsa, was den Eindruck erweckt, dass der private Schlüssel freigegeben wird, obwohl die Datei id_rsa.pub bereits freigegeben wurde.
Gurjeet Singh
Der öffentliche Schlüssel ist gut öffentlich. Sie können es jedem geben. Dadurch können sie Nachrichten verschlüsseln. Mit dem privaten Schlüssel können Sie die Nachrichten entschlüsseln. Solange Sie Ihren privaten Schlüssel für sich behalten, ist alles in Ordnung.
Pete
7

NEIN , Ihr privater Schlüssel wird NIEMALS "gesendet" oder irgendwo übertragen.

Die Kryptografie mit öffentlichem Schlüssel entspricht nicht der herkömmlichen Authentifizierung mit Benutzernamen und Kennwort.

  • Ihr öffentlicher Schlüssel ist genau das - öffentlich. Es ist absolut sicher, es zu teilen. Das Senden Ihres öffentlichen Schlüssels an jemanden kann Ihre Identität preisgeben (die Leute können wissen, dass er von Ihnen stammt, weil es sich um eine eindeutige Nummer handelt), aber es kann niemals jemand anderem erlauben, sich als Sie auszugeben oder sich als Sie zu authentifizieren. Sie können Ihren öffentlichen Schlüssel auch über Super-HTTP auf SuperUser oder auf Ihrer Webseite veröffentlichen. Es ist absolut sicher und völlig nutzlos, wenn jemand Ihren privaten Schlüssel nicht hat.

  • Ihr privater Schlüssel ist genau das - privat. Es befindet sich nur auf Systemen, die Sie besitzen und denen Sie (hoffentlich) vertrauen, und sollte für maximale Sicherheit immer mit einem Entsperrkennwort verschlüsselt werden, falls jemand physischen Zugriff auf das System erhält, auf dem es gespeichert ist. Der private Schlüssel wird niemals von einem ordnungsgemäß implementierten Sicherheitsprogramm übertragen, das sich gemäß den Regeln der Kryptographie mit öffentlichen Schlüsseln verhält. Das heißt, wenn Sie auf Ihrem lokalen System kein Programm haben, das kompromittiert ist und Ihren privaten Schlüssel lesen kann (und der private Schlüssel nicht mit einem Kennwort verschlüsselt ist), ist Ihr privater Schlüssel immer sicher.

Nachrichten werden mit dem privaten Schlüssel auf Ihrem Computer signiert , bevor sie an den Remote-Server gesendet werden. Anstatt den privaten Schlüssel an den Remote-Server zu senden, senden Sie eine Nachricht , die mit dem privaten Schlüssel verschlüsselt wurde . Diese beiden Dinge sind jedoch nicht dasselbe: Sie können den privaten Schlüssel nicht aus der signierten Nachricht ableiten . Das ist ein Teil des Punktes der Kryptographie mit öffentlichen Schlüsseln.

Kurz gesagt, selbst wenn ein feindlicher Angreifer Ihren öffentlichen Schlüssel erhält und von Ihrem privaten Schlüssel signierte Nachrichten erhält, kann er Ihren tatsächlichen privaten Schlüssel nicht erhalten und kann sich daher nicht als Ihre Anmeldeinformationen ausgeben oder Ihren privaten Schlüssel zur Authentifizierung als verwenden Sie".

allquixotic
quelle
Ich verstehe den Public-Key-Crypo-Prozess, war aber durch die von ausgegebene Debug-Nachricht verwirrt ssh. Die Antwort von @ pjc50 scheint die Sicherheit zu bieten, nach der ich gesucht habe.
Gurjeet Singh