web-dev-qa-db-fra.com

Comment puis-je convertir ma clé secrète de PGP cryptée pour une utilisation d'une authentification SSH?

Je souhaite dissimuler ma clé PGP (RSA) à utiliser l'authentification SSH. Après quelques recherches, j'ai trouvé openpgp2ssh, qui semble être un outil approprié. Tout fonctionne bien pour mon pubkey:

$ gpg --export "$key" | openpgp2ssh "$key"
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC51Cw3ZxO5TSncaDLzQ89SSZAF7Z9cFR5mv4uhmGw3tDfiaAjNFVjp90YNYi2teveb5EjncIK5RMYQefKpvvsawQZ4KJKbrDFrrQbMmIG67A1qopKxn5rF8QsjzYvrlGSi9pnjfZVN+VfTaspomVpwCpe9oxd8ZlKdViABgBV8p0hL6I4Gqm+I37az9apO4wCvlN8XJMia3J1JxIShyLYGfa2ued5rRFYiCEV3/smtrjycEZ8OYLTLhC/vydhXCSYrCxWHxhv213Uho641cttaL2SlPGDX9Uuq3JfjCoC0Y6EN7/+GV2u9R48/QJpUaOjEhLRm8F/LFRuHDFYJmyNgv11DsRAMvh7psGY2196bBYSdrzfZxxCQDdJrNxNzQvIG33JavMXOiBAbAYxaq7DWWlVPcE3fy+VxYPH+XicqxD58qdWapspJhRxEKzQa7IfUULGQHVg31NYWGsN4dkva2XjV35SZf6M3nrfjz4XitiwH0SOxbXBRKUdZhwCnr+5GcsWkax7Ph6QGvWVP6mgpUDBuMQ+znkUVr8tDkmrm5M6PC6x8SOA0ecdjNKB2NK23A6w4V7lsfMvDl4uBMzxRzXOXLIUXunsZ7MQTV5ymtZvk3oYccnXNxtVZGF2Cu9Wfy+6c+XL+z4Zfc6XvPSgtBDOApV3owL86OOoLO5X3HQ==

Cependant, lorsque j'essaie de convertir ma clé privée à utiliser, elle affiche l'erreur suivante:

$ gpg --export-secret-key "$key" | openpgp2ssh "$key"
We cannot handle encrypted secret keys.  Skipping!

Ma clé secrète est effectivement cryptée. J'aimerais idéalement une méthode pour convertir la clé secrète PGP en données que les programmes standard SSH peuvent comprendre, au lieu de s'appuyer sur des plugins non standard. Est-ce possible?

8
Chris Down

Je suis l'un des auteurs en amont de OpenPGP2SSH. Désolé pour la confusion. Vous noterez que la page OpenPGP2SSH (1) Man contient une section "Bugs" qui dit:

 openpgp2ssh currently cannot handle passphrase-protected secret keys on
 input.

Si vous pouvez proposer un message d'erreur d'une ligne plus claire ou une amélioration de la page d'homme afin que vous ayez plus facile de trouver votre réponse dans la documentation, nous serons heureux d'améliorer l'outil. Déposez-nous une ligne sur [email protected]. Je ne pense pas que l'un des Devs actuels suivez Stackexchange étroitement pour le moment. La liste de diffusion est donc une meilleure façon d'entrer en contact.

8
Daniel Kahn Gillmor

Il n'y aurait pas de point de convertir une clé publique si personne ne peut également convertir la clé privée, ce qui signifie que ce programme a été créé avec un tel processus de conversion à l'esprit. Vous remarquerez que le message d'erreur se lit "Nous ne pouvons pas gérer crypté touches secrètes."

Je vous recommande donc de supprimer le mot de passe de la clé privée à l'aide de la commande passwd dans gpg --edit-key. Vous devriez évidemment retentir à la fois l'ancienne clé privée GPG et la nouvelle clé privée SSH après la conversion.

Si vous êtes inquiet à propos de la clé non cryptée restante sur le lecteur, créez une partition cryptée à l'aide de FCFS, de Truecrypt, etc., ou d'autres créez un RAMDISK . Vous devez garder le ramdisk petit et courte vécu pour empêcher le noyau de l'échanger, bien que si vous ne trouvez d'astuce pour appeler Mlock. Tous les systèmes de fichiers cryptographiques doivent déjà imbriqués leurs pages de données.

10
Jeff Burdges

Jeff Burdges 'Une excellente réponse m'a montré la méthode éventuelle. Voici les étapes exactes que j'ai prises:

key=2A7D4D74

# Back up the original key so you can reimport it afterwards
gpg --export-secret-key "$key" > id_rsa.bak

# Now remove the encryption using the method listed in Jeff Burdges' answer:
# * gpg --edit-key "$key"
# * Issue passwd and remove the password
# * Quit, and save changes

# We convert the keys
gpg --export "$key" | openpgp2ssh "$key" > ~/.ssh/id_rsa.pub
gpg --export-secret-key "$key" | openpgp2ssh "$key" > ~/.ssh/id_rsa

# Then, we change the password for the SSH secret key
ssh-keygen -f ~/.ssh/id_rsa -p

# Now reimport the original key (deletion is required or for some reason it fails to reimport as encrypted)
gpg --delete-secret-key "$key"
gpg --import < id_rsa.bak
rm id_rsa.bak
6
Chris Down