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

48

J'ai trouvé que ssh-keygen(le paquet "ssh") produit différentes clés puttygen(le paquet "putty").

Si je crée des clés publiques et privées avec ssh-keygencertains serveurs ssh, mes clés ne seront pas acceptées. Si je crée des clés avec puttygenun seul serveur l'accepte.

Pourquoi les référentiels Linux ne proposent-ils pas une solution commune (package)? J'ai trouvé un autre paquet ssh-3.2.9.1 qui crée des clés qui fonctionnent avec du mastic. Mais pourquoi il n’existe pas de solution pratique en SSH?

YarLinux
la source
1
Pour commencer, PuTTYGen propose explicitement de convertir les clés. Les formats natifs utilisés par OpenSSH et PuTTY pour stocker les clés sont donc différents. Cependant, les algorithmes pris en charge sont compatibles. Je suppose que vous avez entré une valeur géniale dans le champ qui vous permet d'indiquer le nombre de bits (par exemple, DSA semble nécessiter 1024 bits) pour la clé générée dans PuTTYGen ou que vous ayez choisi quelque chose comme RSA-1. dont la plupart des serveurs auront désactivé ces jours-ci. Malheureusement, la question ne dit pas vraiment ce que vous avez essayé et ce à quoi vous vous attendiez.
0xC0000022L

Réponses:

47

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

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

PuTTY utilise un format de fichier de clé différent. Il est livré avec des outils pour convertir entre son propre .ppkformat et le format OpenSSH.

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

Gilles, arrête de faire le mal
la source
24

La plupart des distributions Linux sont puttydisponibles pour Linux. Vous pouvez installer puttydu côté Linux et utiliser puttygenpour convertir les fichiers .ppk en fichiers de clé de style ssh (appelés fichiers PEM - même s’ils ne contiennent pas le nom de fichier .pem).

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

REMARQUE: Vous pouvez également utiliser puttygenpour importer des fichiers PEM de style ssh putty.

L'auteur de PuTTY a opté pour la simplicité. Ainsi, les clés publiques et privées qui constituent la sécurité sous-jacente utilisée par l'authentification par clé putty / ssh 2 sont stockées dans un fichier .ppk exclusif. En général, ces clés sont conservées sous forme de 2 fichiers distincts par ssh.

Sous Linux, les fichiers de 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 au format PPK .

L'auteur de putty explique également pourquoi il utilise les fichiers .ppk dans le puttymanuel de l' utilisateur . Vous pouvez lire à ce sujet ici à la section 8.2.12.

slm
la source
Voulez-vous dire que mon Linux a SSH-1 obsolète et vulnérable (si je n'utilise pas de mastic)? Et est-ce abordable? Les vulnérabilités de SSH-1 sont décrites dans wikipedia
YarLinux
Je ne sais pas où tu as eu ça. Non, ça devrait aller. Quelle version de Linux utilisez-vous? Quelle Linux Distro utilisez-vous? Exécutez cette commande pour trouver votre version Linux: uname -a. Distro Linux: lsb_release -a.
slm
J'utilise Ubuntu 12.04. Voulez-vous dire que SSH-2 a différents formats? Je viens de confondre par nom de package et de commande qui "ssh".
YarLinux
Je vois. L'outil SSH auquel vous faites référence fait généralement partie d'un paquet appelé openssh. La version de ce logiciel n'a rien à voir avec les SSH-1 et SSH-2 dont vous parlez. Cette terminologie (SSH-1 et SSH-2) fait référence au type de fichier de clé avec lequel vous travaillez. Ce type de fichier ne devrait pas être un problème pour vous tant que vous utilisez des versions récentes d'Opensh.
slm
Y at-il trois formats de clés différents? OpenSSH, ssh.com et PuTTY?
YarLinux
12

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, en ce qui concerne la différence de format stockée réelle:

à partir de https://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/key-formats-native.html

Les avantages du format de clé PuTTY sont les suivants:

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

    Je pense que OpenSSH lira un.pubfichier à cette fin s’il apparaît à côté du fichier de clé privée, mais c’est une source de confusion aussi souvent que de commodité (j’ai vu des personnes remplacer un fichier de clé privée et laisser un fichier obsolète à .pubcôté, puis être très confus par le processus d’authentification SSH résultant!).
  • La clé est totalement inviolable. Les formats de clé qui stockent la clé publique en texte brut peuvent être vulnérables à une attaque par falsification dans laquelle la moitié publique de la clé est modifiée de manière à ce que les signatures effectuées avec la clé falsifiée contiennent des informations sur la moitié privée. Pour cette raison, le format de clé de PuTTY contient un code MAC (Message Authentication Code), masqué du mot de passe complexe et couvrant les moitiés publique et privée de la clé.Ainsi, nous fournissons la commodité de disposer de la clé publique en texte clair, mais nous détectons également instantanément toute tentative d'attaque par altération, ce qui procure une combinaison de sécurité et de commodité, ce qui, à mon avis, ne se trouve dans aucun autre format de clé. De plus, le code MAC couvre également le commentaire de la clé, évitant ainsi tout risque de préjudice si quelqu'un devait échanger deux clés et échanger les commentaires.

    L'approche d'OpenSSH consistant à garder la clé publique cryptée pourraitoffrent également une certaine sécurité contre ce type d’attaque, mais il n’est pas clair qu’elle offre une protection appropriée: le chiffrement conçu pour la confidentialité laisse souvent des moyens de modifier les données chiffrées de manière utile par un attaquant. Pour une véritable protection de l’intégrité, vous voulez un véritable MAC dédié, conçu précisément pour cela.

[ emphase ajoutée]

PeanutPower
la source