Finalmente, descobri como converter uma chave pública OpenSSH para o formato PEM em um blog e consegui criptografar e descriptografar com êxito uma string usando minha chave pública / privada.
Descrevi as etapas que usei para executar a criptografia e descriptografia.
Para criptografar uma sequência:
# 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
Para descriptografar uma string (do arquivo):
openssl enc -base64 -d -in string.txt \
| openssl rsautl -inkey ~/.ssh/id_rsa -decrypt
Como meu objetivo é enviar a senha por e-mail, escrevi um script extremamente básico para automatizar um pouco as coisas:
#!/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
Posso enviar a saída do script em um email para o usuário descriptografar.
O script completo está disponível no Github: https://gist.github.com/3078682
Em geral, sim, isso é possível. Tudo que o SHH faz é gerar um Módulo N e duas chaves e (a chave pública) e d (a privada). O mecanismo empregado é geralmente RSA ou DSA e as chaves geradas podem ser usadas para criptografia. Tudo o que você precisa fazer é extraí-los do blob base64 que é a chave pública e, em seguida, usar um programa adequado para criptografar dados com essas chaves. Você pode estar interessado no Monkeysphere, que pode transferir entre o formato de chave ssh e as teclas gnupg. Isso deve permitir que você também use as chaves para criptografia.
fonte
Normalmente, não se faz 'criptografia em massa' com chaves assimétricas. Mas isso não importa, pois você não deve lidar com esse nível de detalhes. Use um kit de ferramentas (openssl é ótimo http://www.openssl.org/docs/apps/openssl.html ) para fazer o trabalho por você. O que você deseja fazer é criar uma mensagem criptografada contendo a nova senha temporária e especificar o par de chaves do usuário como destinatário. Muitos exemplos nesta página: http://www.openssl.org/docs/apps/smime.html
fonte