Pourquoi une clé publique SSH se trouve-t-elle sur le serveur et non avec le client?


12

Je ne comprends pas très bien la théorie derrière la conservation des clés publiques sur le serveur. Dans l'analogie du lockbox des clés publiques / privées, pour déverrouiller la boîte d'Alice, Alice détient la clé privée tandis que la clé publique est distribuée à Bob. Il semblerait que le serveur joue le rôle de lockbox, alors pourquoi détient-il la clé publique?

Réponses:


20

Gardez à l'esprit que le serveur a une clé privée et publique qui est complètement distincte de la paire de clés que vous générez en tant qu'utilisateur. La clé privée du serveur est généralement stockée avec la configuration du serveur et la clé publique est transmise par le serveur lorsque vous tentez de vous connecter. Votre client compare la clé publique du serveur à votre fichier known_hosts. S'il est utilisé correctement, cela empêche les attaques MITM.

Vous avez la clé privée de votre compte personnel. Le serveur a besoin de votre clé publique pour pouvoir vérifier que votre clé privée pour le compte que vous essayez d'utiliser est autorisée.

Donc, en utilisant votre exemple. Bob et Alice ont des clés privées et des clés publiques. Les clés publiques qui ont été partagées au préalable ou dans le cadre de la connexion sont utilisées pour vérifier la légitimité des données chiffrées par les clés privées. Si le client n'a pas la clé publique ou a une clé publique différente, vous obtiendrez un avertissement effrayant. Si le serveur n'a pas la clé publique des clients, vous ne serez pas autorisé à entrer.


1
Ah! Cela a beaucoup plus de sens. Je savais qu'il existait une méthode de protection contre les attaques MITM, mais je ne savais pas qu'il y avait une autre paire de clés :) Merci pour l'aide!
Connor Glosser

5

En tant qu'utilisateur, vous êtes le seul à fournir les informations que vous êtes lorsque vous vous connectez. Donc, pour des raisons d'autorisation, vous avez besoin de la clé privée car le serveur demandera à toute personne qui prétend être vous-même (tente de se connecter avec votre nom) pour le prouver.

La façon dont cela fonctionne est que le serveur vous envoie un peu de texte, vous demande de le crypter et de le décrypter avec votre clé publique. Seule la personne avec votre clé privée peut le faire.


1

Il détient la clé publique pour plus de commodité. Sinon, vous devez créer une PKI - quelque chose de similaire à SSL CA.

L'idée serait de vérifier l'empreinte digitale de la clé publique lorsque le client ssh vous demande d'accepter la clé du serveur distant.


1

Je dirais qu'une meilleure analogie est que la clé publique du serveur est le coffre ouvert avec un verrou que vous pouvez fermer (mais pas ouvrir), seul le serveur peut l'ouvrir. La vraie question est de savoir si vous faites confiance à la clé publique (est-ce vraiment Alice's Box?), Où que vous l'obteniez est publique par définition, et c'est à cela que servent les PKI.


1

Une clé publique est un très grand nombre, dérivé mathématiquement de votre clé privée.

Il est dérivé de telle manière que les deux nombres sont liés,

mais pour que la clé privée ne puisse pas être découverte par quiconque ne connaît que la clé publique. La clé publique est ce que vous envoyez à d'autres parties, à qui vous souhaitez vous authentifier ou à qui vous souhaitez envoyer des messages cryptés. La clé publique n'est pas sensible et n'a pas besoin d'être protégée. Il peut être diffusé publiquement. babudilli98@gmail.com


1
Je ne pense pas qu'il y ait quelque chose de nouveau dans cette réponse par rapport aux autres réponses déjà fournies il y a cinq ans.
kasperd
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.