N'est-il pas dangereux d'utiliser des clés SSH pour se connecter à un serveur inconnu / compromis?

9

Supposons que je fournisse à quelqu'un ma clé SSH publique, id_rsa.pub et qu'il / elle l'installe sur un serveur qui est compromis, et on me demande de me connecter.

Le processus de connexion implique-t-il l'envoi de ma clé privée au serveur compromis?

Si oui, l'attaquant a maintenant accès à ma clé SSH privée, et c'est effrayant.

Si non, alors pourquoi je vois cette ligne dans la sortie ssh -vvv:

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

Cela implique que la clé privée a été envoyée au serveur et qu'elle l'a acceptée.

Suis-je en train de mal comprendre le problème?

Gurjeet Singh
la source

Réponses:

11

Vous comprenez mal le processus.

La clé n'est pas envoyée, mais un "défi" est construit en chiffrant quelque chose avec la clé publique qui ne peut être déchiffrée qu'avec la clé privée correspondante.

Si l'on vous demande votre mot de passe ou si vous effectuez un transfert X vers un serveur compromis, il existe un risque de sécurité potentiel.

pjc50
la source
Merci. ssh émet également ce message, ce debug1: Offering RSA public key: <$HOME>/.ssh/id_rsaqui donne à penser que la clé privée est partagée même si id_rsa.pub a déjà été partagé.
Gurjeet Singh
La clé publique est bien publique. Vous pouvez le donner à n'importe qui. Cela leur donne la possibilité de crypter les messages. La clé privée est ce qui vous permet de décrypter les messages. Tant que vous gardez votre clé privée pour vous, tout va bien.
Pete
7

NON , votre clé privée n'est JAMAIS "envoyée" ou transmise n'importe où.

La cryptographie à clé publique n'est pas comme l'authentification traditionnelle par nom d'utilisateur / mot de passe.

  • Votre clé publique n'est que cela - publique. Il est parfaitement sûr de le partager. L'envoi de votre clé publique à quelqu'un peut révéler votre identité (les gens peuvent savoir que cela vient de vous parce que c'est un numéro unique), mais cela ne peut jamais permettre à quelqu'un d'autre de vous imiter ou de vous authentifier. Vous pouvez également publier votre clé publique sur SuperUser ou sur votre page Web via HTTP standard; c'est parfaitement sûr et parfaitement inutile si quelqu'un n'a pas votre clé privée.

  • Votre clé privée n'est que cela - privée. Il réside uniquement sur les systèmes que vous possédez et en qui vous avez confiance (espérons-le) et devrait toujours être crypté avec un mot de passe de déverrouillage pour une sécurité maximale, au cas où quelqu'un aurait un accès physique au système sur lequel il est stocké. La clé privée n'est jamais transmise par un programme de sécurité correctement mis en œuvre qui se comporte selon les règles de la cryptographie à clé publique. Autrement dit, à moins que votre système local n'ait un programme compromis et capable de lire votre clé privée (et que la clé privée ne soit pas chiffrée par un mot de passe), votre clé privée est toujours sûre.

Les messages sont signés avec la clé privée, sur votre ordinateur , avant d'être envoyés au serveur distant. Ainsi, plutôt que d'envoyer la clé privée au serveur distant, vous envoyez un message qui a été chiffré avec la clé privée. Mais ces deux choses ne sont pas les mêmes: vous ne pouvez pas dériver la clé privée du message signé; cela fait partie de l'intérêt de la cryptographie à clé publique.

En bref, même si un attaquant hostile obtient votre clé publique et obtient des messages signés par votre clé privée, il ne pourra toujours pas obtenir votre clé privée réelle et, par conséquent, il ne pourra pas se faire passer pour vos informations d'identification ou utiliser votre clé privée pour vous authentifier "comme vous".

allquixotic
la source
Je comprends le processus de crypo à clé publique, mais j'ai été troublé par le message de débogage émis par ssh. La réponse de @ pjc50 semble fournir l'assurance que je cherchais.
Gurjeet Singh