J'ai finalement trouvé comment convertir une clé publique OpenSSH au format PEM sur un blog et j'ai réussi à chiffrer et à déchiffrer une chaîne à l'aide de ma clé privée / publique.
J'ai décrit les étapes que j'ai utilisées pour effectuer le chiffrement et le déchiffrement.
Pour crypter une chaîne:
# convert public key to PEM format
ssh-keygen -f ~/.ssh/id_rsa.pub -e -m PKCS8 > ~/.ssh/id_rsa.pub.pem
# encrypt string using public key
echo "String to Encrypt" \
| openssl rsautl -pubin -inkey ~/.ssh/id_rsa.pub.pem -encrypt -pkcs \
| openssl enc -base64 \
> string.txt
Pour décrypter une chaîne (à partir d'un fichier):
openssl enc -base64 -d -in string.txt \
| openssl rsautl -inkey ~/.ssh/id_rsa -decrypt
Puisque mon objectif est d'envoyer le mot de passe par e-mail, j'ai écrit un script extrêmement basique pour automatiser un peu les choses:
#!/bin/sh
if test "x${1}" == "x";then
echo "Usage: ${0} <username>"
exit 1
fi
SSHUSER=${1}
printf "Enter Password: "
read PASS1
echo ""
echo ""
ssh-keygen -f /home/${SSHUSER}/.ssh/id_rsa.pub -e -m PKCS8 \
> /tmp/ssh-pubkey-${SSHUSER}.pem
echo 'cat << EOF |openssl enc -base64 -d |openssl rsautl -inkey ~/.ssh/id_rsa -decrypt'
echo "New Password: ${PASS1}" \
| openssl rsautl -pubin -inkey /tmp/ssh-pubkey-${SSHUSER}.pem -encrypt -pkcs \
| openssl enc -base64
echo "EOF"
echo ""
rm -f /tmp/ssh-pubkey-${SSHUSER}.pem
Je peux ensuite envoyer la sortie du script dans un e-mail pour que l'utilisateur le déchiffre.
Le script complet est disponible sur Github: https://gist.github.com/3078682
David M. Syzdek
la source
En général, oui, c'est possible. SHH ne fait que générer un module N et deux clés e (la clé publique) et d (la privée). Le mécanisme utilisé est généralement RSA ou DSA et les clés générées peuvent être utilisées pour le chiffrement. Tout ce que vous avez à faire est de les extraire du blob base64 qui est la clé publique, puis d'utiliser un programme approprié pour crypter les données avec ces clés. Vous pourriez être intéressé par Monkeysphere qui peut transférer entre le format de clé ssh et les clés gnupg. Cela devrait vous permettre également d'utiliser les clés pour le chiffrement.
la source
Normalement, on ne fait pas de «chiffrement en masse» avec des clés asymétriques. Mais cela n'a pas d'importance car vous ne devriez pas avoir affaire à ce niveau de détails. Utilisez une boîte à outils (openssl est très bien http://www.openssl.org/docs/apps/openssl.html ) pour faire le travail pour vous. Ce que vous voulez faire, c'est créer un message chiffré contenant le nouveau mot de passe temporaire et spécifier la paire de clés de l'utilisateur comme destinataire. Des exemples à gogo sur cette page: http://www.openssl.org/docs/apps/smime.html
la source