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?
la source
debug1: Offering RSA public key: <$HOME>/.ssh/id_rsa
qui donne à penser que la clé privée est partagée même si id_rsa.pub a déjà été partagé.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".
la source
ssh
. La réponse de @ pjc50 semble fournir l'assurance que je cherchais.