Pourquoi Amazon libère-t-il des clés privées au lieu de clés publiques?

20

Mon cerveau est enroulé autour de l'essieu sur des clés publiques et privées. Lorsque vous créez un serveur cloud (instance) sur le service EC2 d'Amazon et souhaitez ensuite vous y connecter via SSH, Amazon vous demande de télécharger une clé privée pour établir la connexion. L'idée derrière la clé publique / privée ne suggère-t-elle pas qu'Amazon devrait vous obliger à en télécharger une publique?

De plus, si je configure un serveur SFTP pour un client, dois-je installer sa clé sur le serveur ou lui donner une clé à partir du serveur? Dans les deux cas, doit-il s'agir d'une clé publique ou privée?

Seth
la source
1
Pour ceux d'entre nous qui connaissent moins EC2, Amazon vous demande-t-il de télécharger une clé privée?
Zoredache
2
Lorsque vous configurez un serveur cloud sur Amazon EC2 et souhaitez ensuite vous y connecter via SSH, la console Amazon vous permet de télécharger une clé privée que vous utilisez pour établir la connexion. Vous devez bien sûr protéger la clé.
Seth
@Zoredache En toute honnêteté, c'est une option. Quelqu'un qui cherche à travailler rapidement sur une boîte Windows n'a probablement jamais utilisé OpenSSH auparavant, c'est donc un bon démarrage rapide.
ceejayoz

Réponses:

36

En réfléchissant plus profondément au processus d'authentification, que faut-il garder secret? Amazon connaît la moitié publique de la clé, et tout le monde peut connaître la moitié publique. La moitié publique de la paire de clés, lorsqu'elle est associée à la moitié privée, indique que la moitié privée a été utilisée pour l'authentification.

Votre clé privée qui vous est fournie lorsqu'Amazon génère une paire de clés pour vous n'est utile que si vous êtes la seule à l'avoir. Si ce n'est pas un secret, toute autre personne qui la connaît peut également s'authentifier auprès de toute personne détenant la moitié publique de la paire de clés.

Celui qui est authentifié doit détenir la moitié privée . Ce n'est pas grave si tout le monde dans le monde peut vous authentifier en détenant la moitié publique de la clé, mais vous seul devriez contrôler la moitié privée.

Jeff Ferland
la source
18

Amazon fournit des services de génération de clés car certains systèmes d'exploitation (toux, Windows, toux) peuvent ne pas faciliter la génération des paires de clés SSH.

Avec SSH (et SFTP), la clé publique est installée dans le fichier authorized_keys de l'utilisateur au démarrage de l'instance EC2. La clé privée n'est détenue que par l'utilisateur et est présentée pour s'authentifier auprès du serveur.

De la documentation à:

http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-CreateKeyPair.html

il semble qu'Amazon génère la paire de clés sur leurs serveurs et vous envoie la clé privée via HTTPS. C'est peut-être moins que parfait (idéalement, vous et personne d'autre ne posséderez la clé privée), mais probablement pas terriblement, étant donné que tout cela se produit dans le contexte de votre session authentifiée et que vous seul (et Amazon temporairement) voyez la clé privée. Vous pouvez également toujours générer et télécharger votre propre clé publique pour une utilisation EC2, tout en gardant la clé privée strictement privée.

Pour configurer les utilisateurs SFTP pour l'authentification par clé, ils doivent générer des clés SSH sur leurs machines. Une fois qu'ils ont généré une paire de clés, ils ne devraient vous envoyer que la clé publique à installer dans le fichier authorized_keys correspondant. La clé privée, comme son nom l'indique, est privée.

cjc
la source
5
Je génère régulièrement des paires de clés sur les machines Windows. Ce n'est pas difficile, bien que cela se fasse à l'aide des logiciels installés, et non par Windows lui-même.
Dominic Cronin
2
D'accord avec Dominic. C'est plus le fait que l'utilisateur moyen de Windows est terrifié et perdu à la vue d'une CLI, et que Windows n'a toujours pas d'option "connexion avec clé SSH".
HopelessN00b
Oh, oui, d'accord. J'utilise Cygwin, etc., avec openssh, donc tout fonctionne correctement. J'imagine que la plupart des utilisateurs de Windows qui utilisent ceci utiliseront PuTTY et devront effectuer une conversion de clé. C'est juste plus d'étapes.
cjc
1
Je n'ai jamais réellement utilisé Amazon, mais plutôt que de blâmer Windows, je suppose que la raison pour laquelle Amazon vous envoie une clé est que s'ils ne vous ont pas donné de clé pour vous connecter, comment vous connecter pour installer votre public clé en premier lieu?
DerfK
1
@DerfK Vous pouvez soumettre votre propre clé publique et la sélectionner pour l'installer dans une nouvelle instance EC2. La sélection d'une clé particulière fait partie du processus de création d'instance.
cjc
2

L'authentification par clé publique fonctionne dans le sens inverse de la façon dont vous pensez probablement. La clé publique chiffre les messages et la clé privée les déchiffre. Le serveur stocke la clé publique du titulaire du compte et l'utilise pour crypter un message. Seul le détenteur de la clé privée peut déchiffrer ce message.

Si vous envoyez à quelqu'un un secret chiffré avec sa clé publique, s'il peut vous dire ce qu'est ce secret, alors vous savez qu'il détient la clé privée correspondante. L'utilisateur est ensuite authentifié.

AWS vous oblige à télécharger et enregistrer votre clé privée car ils ne la stockent pas, pour des raisons de sécurité. Étant donné que la clé privée n'est stockée nulle part sur AWS, vous pouvez être sûr que votre instance EC2 est sécurisée.

jkim
la source
1

Dans un sens, cela n'a pas d'importance. Une paire de clés privée / publique se compose de deux parties, et laquelle d'entre elles est la publique, c'est à vous de décider. Si quelque chose est chiffré avec une clé, vous avez besoin de l'autre pour le déchiffrer. Si vous avez publié une clé publiquement et pas l'autre, la clé privée est celle que vous n'avez pas publiée.

Pour en venir à votre véritable question: la clé qu'Amazon vous donne est probablement de vous permettre de contrôler vos propres ressources, donc elle ne devrait pas être donnée à d'autres personnes. Dans ce contexte, vous devez faire confiance à Amazon pour avoir votre clé privée, au moins assez longtemps pour la configuration.

Si vous souhaitez que votre client se connecte de cette manière, vous en avez besoin pour vous donner une clé qu'il est prêt à partager avec vous, donc donc sa clé publique. Vous installez ceci sur le serveur dans authorized_keys, ce qui signifie en fait "quiconque possède la clé privée correspondant à cette clé publique peut accéder à cette ressource".

Dominic Cronin
la source
1
Uhm, non, ce n'est pas vrai. Au moins avec RSA / DH, vous chiffrez avec la clé publique et déchiffrez avec le privé, cela ne fonctionne pas dans l'autre sens. La signature n'est pas la même chose que le cryptage / décryptage.
Zoredache
1
@ErikA Non, la clé publique ne peut pas être dérivée de la clé privée. Les fichiers de clés privées incluent souvent les deux clés. Si vous voulez vraiment entrer dans une discussion, je vous suggère crypto.stackexchange.com . Ces gens peuvent vous donner les détails intérieurs vraiment profonds, y compris les différences réelles des clés RSA et pourquoi quelle clé est considérée publique ou privée n'est pas seulement un flip arbitraire d'une pièce.
Jeff Ferland
@Zoredache - Je ne le savais pas: merci. Avez-vous un lien vers une bonne référence?
Dominic Cronin
en.wikipedia.org/wiki/Asymmetric_key_algorithm - Une clé verrouille ou chiffre le texte en clair, et l'autre déverrouille ou déchiffre le texte chiffré. Aucune touche ne peut exécuter les deux fonctions. - en.wikipedia.org/wiki/RSA_(algorithm) - RSA implique une clé publique et une clé privée. La clé publique est connue de tous et est utilisée pour crypter les messages . Les messages chiffrés avec la clé publique ne peuvent être déchiffrés qu'avec la clé privée.
Zoredache
Aucune de ces deux références ne suggère ce que vous dites @Zoredache. Bien sûr , une fois que vous avez décidé quelle clé est privée et laquelle publique, cela détermine la façon dont vous l'utilisez. Au moment de la génération des clés, cette décision n'a pas encore été prise. Pour ce que ça vaut, la logique autour de la signature dépend entièrement de la logique autour du chiffrement, car la signature nécessite un chiffrement.
Dominic Cronin