web-dev-qa-db-fra.com

Quelle différence entre la clé openssh et la clé PuTTY?

J'ai trouvé que ssh-keygen (package "ssh") produit des clés différentes à partir de puttygen (package "PuTTY").

Si je crée des clés publiques et privées avec ssh-keygen certains serveurs ssh n'accepteront pas mes clés. Si je crée des clés avec puttygen un seul serveur l'accepte.

Pourquoi les référentiels Linux ne proposent-ils pas de solution (package) commune pour cela? J'ai trouvé un autre paquet ssh-3.2.9.1 qui crée des clés qui fonctionnent avec PuTTY. Mais pourquoi il n'y a pas de solution pratique dans SSH?

49
YarLinux

OpenSSH est l'implémentation standard de facto du protocole SSH. Si PuTTY et OpenSSH diffèrent, PuTTY est celui qui est incompatible.

Si vous générez une clé avec OpenSSH en utilisant ssh-keygen avec les options par défaut, il fonctionnera avec pratiquement tous les serveurs. Un serveur qui n'accepte pas une telle clé serait antique, utilisant une implémentation différente de SSH, ou configuré d'une manière étrangement restrictive. Les clés d'un type non par défaut peuvent ne pas être prises en charge sur certains serveurs, en particulier les clés ECDSA accélèrent très légèrement l'établissement de session, mais ne sont prises en charge que par les versions récentes d'OpenSSH.

PuTTY utilise un format de fichier clé différent. Il est livré avec des outils pour convertir entre ses propres .ppk format et le format d'OpenSSH.

Ce ssh-3.2.9.1 que vous avez trouvé est un produit commercial qui a son propre format de clé privée. Il n'y a aucune raison de l'utiliser au lieu d'OpenSSH, il ne peut être que moins compatible, il nécessite un paiement et il n'y a aucun tutoriel sur la façon de l'utiliser.

La plupart des distributions Linux ont PuTTY disponibles pour Linux. Vous pouvez installer PuTTY du côté de Linux et utiliser puttygen pour convertir les fichiers .ppk en fichiers de clé de style ssh standard (appelés fichiers PEM - même s'ils ne contiennent pas de .pem dans le nom du fichier).

puttygen id_dsa.ppk -O private-openssh -o id_dsa

REMARQUE: Vous pouvez également utiliser puttygen pour réimporter des fichiers PEM de style ssh dans PuTTY.

L'auteur de PuTTY a opté pour la simplicité afin que les clés publiques et privées qui constituent la sécurité sous-jacente utilisée par l'authentification par clé PuTTY/ssh 2 soient stockées dans un seul fichier propriétaire .ppk. En règle générale, ces clés sont conservées en tant que 2 fichiers distincts par ssh.

Sous Linux, les fichiers clés sont généralement conservés dans le répertoire, .ssh.

Il y a un bon aperçu du processus de conversion ici dans cette question de débordement de pile intitulée: Convertir le format de fichier PEM en PPK .

L'auteur de PuTTY explique également pourquoi il utilise des fichiers .ppk dans le PuTTY users manual . Vous pouvez en lire plus ici dans la section 8.2.12.

24
slm

Ils stockent tous les deux une "paire de clés RSA pour la version 2 du protocole SSH" et peuvent être convertis de manière interchangeable; cependant, concernant la différence de format stockée réelle:

de https://www.chiark.greenend.org.uk/~sgtatham/PuTTY/wishlist/key-formats-nativement.html

Les avantages du format de clé PuTTY sont:

  • La moitié publique de la clé est stockée en texte brut . Le format de clé privée d'OpenSSH chiffre tout le fichier de clé , afin que le client doit vous demander votre phrase secrète avant de pouvoir faire quoi que ce soit avec la clé. En particulier, cela signifie qu'il doit demander votre phrase secrète avant de pouvoir même offrir la clé publique du serveur pour l'authentification. Le format de PuTTY stocke la clé publique en texte clair et ne chiffre que la moitié privée, ce qui signifie qu'il peut envoyer automatiquement la clé publique au serveur et déterminer si le serveur est prêt à accepter les authentifications avec cette clé, et il ne demandera qu'un phrase de passe si nécessaire.

    Je pense que OpenSSH lira un .pub fichier à cet effet s'il apparaît à côté du fichier de clé privée, mais c'est une source de confusion aussi souvent que pratique (j'ai vu des gens remplacer un fichier de clé privée et laisser un _ .pub à côté, puis être très confus par le processus d'authentification SSH résultant!).
  • La clé est entièrement inviolable. Les formats de clé qui stockent la clé publique en texte brut peuvent être vulnérables à une attaque de falsification, dans laquelle la moitié publique de la clé est modifiée de telle manière que les signatures faites avec la clé trafiquée fuient des informations sur la moitié privée. Pour cette raison, Le format de clé de PuTTY contient un MAC (Message Authentication Code), masqué la phrase de passe et couvrant les moitiés publiques et privées de la clé. Ainsi, nous offrons la commodité d'avoir la clé publique disponible en texte brut, mais nous détectons également instantanément toute tentative d'attaque falsifiée, offrant une combinaison de sécurité et de commodité que je ne crois pas se trouve dans tout autre format de clé. Comme avantage secondaire, le MAC couvre également le commentaire de la clé, empêchant tout méfait possible qui pourrait être possible si quelqu'un devait échanger deux clés et échanger les commentaires.

    L'approche d'OpenSSH de garder la clé publique cryptée pourrait fournit également une certaine sécurité contre ce type d'attaque, mais il n'est pas clair qu'il offre une protection appropriée: le cryptage conçu pour la confidentialité laisse souvent des traces dans dont les données chiffrées peuvent être utilement modifiées par un attaquant. Pour une véritable protection de l'intégrité, vous voulez un vrai MAC dédié, conçu précisément pour cela.

[ souligné ajouté]

12
PeanutPower