web-dev-qa-db-fra.com

Dois-je générer de nouvelles clés privées SSH pour chaque machine sur laquelle je travaille?

J'espère que c'est un endroit approprié pour poser cette question. J'ai récemment pensé aux clés publiques et privées, et je me demande quelles sont les meilleures pratiques liées à la gestion de mes propres clés privées. Plus précisément, si j'utilise régulièrement trois ordinateurs différents (bureau personnel, bureau de travail, ordinateur portable), ainsi que d'autres avec une utilisation plus occasionnelle, quelle est la meilleure façon d'utiliser des clés privées?

Actuellement, je génère une nouvelle paire de clés sur chaque ordinateur que j'utilise, puis je les ajoute aux clés autorisées lorsque j'en ai besoin. Est-ce la meilleure façon de procéder ou dois-je utiliser une seule paire de clés et la copier sur tous les ordinateurs que j'utilise? Je suppose que la question est de savoir si ma paire de clés doit être utilisée pour identifier "moi" ou pour identifier "moi sur l'ordinateur X"?

15
Ryan

La question est un peu déroutante. Si je comprends bien, vous demandez à vous connecter à un serveur, via SSH configuré avec PubKeyAuthentication, à partir de l'une de vos trois machines.

Vous devez générer une paire de clés pour chaque machine. De cette façon, si une clé privée est compromise, vous n'avez pas à régénérer une paire de clés sur les trois machines à partir desquelles vous vous connectez. En fait, vous voulez vous identifier (auprès du serveur) comme "vous sur l'ordinateur X".

Si vous utilisiez PGP, alors vous devriez utiliser une paire de clés unique pour vous identifier (pour les autres utilisateurs de PGP) comme "vous".

12
dr_

Chaque paire de clés représente une identité. Parfois, il peut être utile d'avoir une identité différente sur chaque machine que vous utilisez, mais parfois, il peut être utile de partager une identité entre les appareils.

Lorsque vous avez une clé distincte pour chaque appareil, alors:

  • Vos partenaires de communication doivent disposer des clés publiques de tous vos appareils et doivent vérifier que c'est bien vous (vous pouvez fournir ces derniers en signant les clés de tous les appareils avec les clés de tous les autres appareils). Cela devient assez lourd lorsque vous achetez un nouvel appareil.
  • Vos partenaires de communication savent depuis quel appareil vous envoyez un message, ce qui réduit votre confidentialité.

Lorsque vous utilisez les clés uniquement à des fins privées, par exemple pour vous connecter à votre propre serveur, le fait d'avoir une clé distincte pour chaque appareil présente l'avantage qu'en cas de compromission d'une clé, il vous suffit de révoquer cette clé et pas de le faire remplacez la clé sur chaque appareil que vous possédez. Mais le coût pour cela est une surcharge de gestion plus élevée: pour ajouter un nouveau périphérique, vous devez vous connecter avec un ancien périphérique pour ajouter la nouvelle clé publique. Avec une clé partagée, il vous suffit de copier la clé sur le nouvel appareil.

3
Philipp

Est-ce la meilleure façon de procéder ou dois-je utiliser une seule paire de clés et la copier sur tous les ordinateurs que j'utilise?

Comme @ dr01 a mis en évidence les risques, vous devez utiliser une seule clé par ordinateur.

ma paire de clés doit-elle être utilisée pour identifier "moi" ou pour identifier "moi sur l'ordinateur X"?

Tout système d'authentification par mot de passe ou par clé identifie uniquement la connaissance du secret ou de la clé et non l'utilisateur.

Le problème avec l'utilisation d'un mot de passe pour l'authentification est qu'il ne prouve pas que la personne qui se connecte est vous. Tout cela prouve qu'ils connaissent votre mot de passe ( http://www.pcmag.com/article2/0,2817,2428440,00.asp ).

Ainsi, une clé ne vous identifie jamais, elle identifie uniquement si un utilisateur (vous sur l'ordinateur X ou quelqu'un sur l'ordinateur Y) possède la clé.

1
Dr. mattle

Pensez également à l'idée d'utiliser un périphérique matériel. Un NEO YubiKey peut stocker une clé GPG et l'agent gpg peut l'utiliser pour l'authentifier sur n'importe quel serveur exactement comme un fichier ~/d'identité normal.

Il y a un tutoriel pour utiliser gpgkey2ssh et gpg-agent pour configurer cela.

1
Jeff Ferland