22 votes

Comment importer une clé RSA SSH dans GPG en tant que clé privée _primaire_ ?

J'ai actuellement une clé SSH que j'utilise depuis un certain temps et j'aimerais commencer à utiliser GnuPG avec un nouveau trousseau de clés. Cependant, étant donné que j'utilise ma clé depuis des années, j'aimerais continuer à utiliser cette clé dans GPG en tant que clé principale. J'ai essayé d'importer la clé via ces instructions .

Mais je me retrouve avec ce qui est considéré comme une "sous-clé". De plus, si j'essaie de l'importer sans créer une clé GPG standard, GPG ne voit même pas cette sous-clé. (Je suppose que la sous-clé doit d'abord être signée par la clé principale).

Comment utiliser cette clé comme clé principale dans secring.gpg ?

20voto

user Points 4207

La réponse est simple : Ce n'est pas le cas.

Les clés SSH et les clés GnuPG (en fait, OpenPGP) sont complètement différentes, même si les deux protocoles peuvent utiliser des paires de clés RSA.

Et en plus, pourquoi voulez-vous le faire ? Même si vous utilisiez le même matériel de clé pour créer votre clé PGP, vous devriez toujours distribuer votre clé en tant que clé PGP. Vous n'avez probablement pas distribué votre clé publique SSH aux personnes avec lesquelles vous correspondez, de sorte que, du point de vue de la distribution des clés, il n'y a pas de différence : elles devront recevoir une clé publique de votre part. Et même si vous avez distribué votre clé publique SSH à d'autres personnes, celles-ci devront prendre des mesures supplémentaires pour pouvoir l'importer dans leur implémentation OpenPGP, ce qui n'est pas forcément facile.

En tant que kasperd Comme il a été souligné à juste titre, il ne doit y avoir qu'une seule façon d'interpréter (en particulier) une signature. Si vous deviez utiliser la même clé pour PGP et SSH, si quelqu'un peut vous amener à signer un message spécialement conçu (ce qui est une capacité supposée dans certaines attaques du système de signature) dans l'un des systèmes, alors même si les deux systèmes sont sécurisés de manière isolée, il pourrait être possible de concevoir un tel message d'une manière qui a une signification dans l'un des systèmes, mais qui n'a pas de signification dans l'autre. un sens différent dans l'autre. Cela constituerait en soi une vulnérabilité. (Exploitable ? Qui sait. Mais pourquoi prendre le risque ?).

Les paires de clés PGP et SSH sont des clés à long terme, utilisées pour sécuriser les clés symétriques éphémères (message et session), ainsi que pour vérifier l'authenticité d'une partie distante. Cela fait de la clé privée PGP ou SSH une cible de valeur beaucoup plus élevée pour un attaquant que la clé symétrique correspondante. Si vous utilisez la même clé pour les deux et qu'un pirate s'en rend compte, il ne lui reste plus qu'à augmentations la valeur d'une attaque réussie sur cette paire de clés.

Sans avoir examiné ces deux protocoles en détail, j'imagine qu'il serait assez simple de reconnaître que la même clé est utilisée dans les deux cas, étant donné que la clé publique est transmise en clair.

Il suffit de générer une nouvelle clé PGP. Si vous le souhaitez, faites-la RSA et de la même longueur que votre clé SSH. (De toute façon, aucune personne saine d'esprit n'y regardera de plus près qu'en vérifiant l'empreinte digitale). Distribuez ensuite la clé publique aux personnes avec lesquelles vous souhaitez correspondre, sous la forme d'une clé PGP. Ce sera beaucoup plus facile pour tout le monde, et très probablement plus sûr, au prix d'une petite quantité d'entropie provenant de la réserve d'entropie aléatoire de votre système, qui devrait de toute façon être rapidement reconstituée.


Si vous avez plusieurs clés sur votre porte-clés secret et que vous souhaitez spécifier lequel doit être utilisé par défaut, utilisez la commande default-key et éventuellement default-recipient{,-self} dans votre ~/.gnupg/gnupg.conf.

8voto

user134450 Points 131

Vous pouvez convertir une clé SSH en clé OpenPGP à l'aide de l'outil pem2openpgp de la projet monkeysphere . Cette clé peut ensuite être importée par gnupg comme une paire de clés privée/publique normale. Comme le mentionne l'autre réponse, ce n'est généralement pas une bonne idée parce que ssh n'a pas de concept de certificats, donc vous ajoutez effectivement une capacité à une clé existante qu'elle n'aurait pas pu avoir auparavant. C'est généralement une erreur en cryptographie.

Je l'ai fait quand même avec une de mes clés ssh mais j'ai ajouté la paire de clés à mon autre clé OpenPGP en tant que sous-clé qui n'a qu'un seul indicateur de capacité : l'authentification. Ce drapeau est destiné à des situations comme celle-ci, où vous ne voulez pas signer ou crypter quoi que ce soit avec une paire de clés (c'est-à-dire --encrypt y --sign pour gnupg) mais vous voulez de toute façon l'avoir dans votre boîte à clés pour l'authentification avec OpenSSH et l'agent gnupg.

Pour plus de détails, voir la documentation de monkeysphere.

5voto

Giri Rao Points 11

Il peut y avoir de bonnes raisons de convertir une clé au format PKCS normal pour l'importer dans gpg.

Par exemple, si vous voulez le mettre sur une carte à puce. Les facilités offertes par gpg avec ses commandes card-info et card-edit sont très utiles à cette fin, alors pourquoi ne pas l'utiliser comme un outil ? Le seul obstacle à surmonter est... exactement : l'importation de la clé depuis le format PKCS#8 standard (ou le format RSA PKCS#1 "brut") dans le magasin de clés de gpg pour un traitement ultérieur.

Notez donc mon objection à la réponse approuvée ! :)

Une réponse utile à ce type de question se trouve ici : https://unix.stackexchange.com/questions/276317/how-can-i-import-a-key-in-pem-format-not-openpgp-into-gpg

2voto

Fire Points 111

A utiliser sur Ubuntu 16.04 ou Windows WSL.

sudo apt install -y monkeysphere
cat key.pem | PEM2OPENPGP_USAGE_FLAGS=authenticate pem2openpgp "Key <key@example.com>" > key.pgp

Carte d'importation. Cette opération peut être effectuée sous Windows ou Linux.

gpg --import key.gpg

Passer à la carte

Trouver l'identifiant de la signature de la clé.

gpg --list-key

Déplacer la clé d'authentification sur la carte

gpg --edit-key FFFFFFFFFFF
keytocard

Sélectionnez un numéro pour l'emplacement d'authentification.

Vous avez terminé ici.

N'oubliez pas de supprimer la clé du trousseau gpg si vous utilisez une carte. Utilisez l'identifiant de la clé ci-dessus.

gpg --delete-secret-key FFFFFFFFFFF

Divers

Non nécessaire mais peut être utile pour obtenir une clé au format texte pgp.

gpg -a --export FFFFFF > key.asc

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X