W końcu odkryłem, jak przekonwertować klucz publiczny OpenSSH do formatu PEM na blogu i udało mi się z powodzeniem zaszyfrować i odszyfrować ciąg przy użyciu mojego klucza prywatnego / publicznego.
Przedstawiłem kroki, które wykorzystałem do przeprowadzenia szyfrowania i deszyfrowania.
Aby zaszyfrować ciąg:
# 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
Aby odszyfrować ciąg (z pliku):
openssl enc -base64 -d -in string.txt \
| openssl rsautl -inkey ~/.ssh/id_rsa -decrypt
Ponieważ moim celem jest wysłanie hasła pocztą e-mail, napisałem niezwykle prosty skrypt, aby nieco zautomatyzować:
#!/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
Następnie mogę wysłać wynik skryptu w wiadomości e-mail, aby użytkownik mógł go odszyfrować.
Pełny skrypt jest dostępny na Github: https://gist.github.com/3078682
Zasadniczo tak, jest to możliwe. SHH generuje moduł N i dwa klucze e (klucz publiczny) id (klucz prywatny). Stosowanym mechanizmem jest zwykle RSA lub DSA, a wygenerowane klucze można wykorzystać do szyfrowania. Wszystko, co musisz zrobić, to wyodrębnić je z obiektu blob base64, który jest kluczem publicznym, a następnie użyć odpowiedniego programu do szyfrowania danych za pomocą tych kluczy. Możesz być zainteresowany Monkeysphere, który może przenosić między formatem klucza ssh a kluczem gnupg. Powinno to również umożliwić użycie kluczy do szyfrowania.
źródło
Zwykle nie wykonuje się „szyfrowania zbiorczego” za pomocą kluczy asymetrycznych. Ale to nie ma znaczenia, ponieważ nie powinieneś zajmować się tym poziomem szczegółów. Użyj zestawu narzędzi (openssl jest świetny http://www.openssl.org/docs/apps/openssl.html ), aby wykonać pracę za Ciebie. To, co chcesz zrobić, to utworzyć zaszyfrowaną wiadomość zawierającą nowe hasło tymczasowe i określić parę kluczy użytkownika jako odbiorcę. Przykłady mnóstwo na tej stronie: http://www.openssl.org/docs/apps/smime.html
źródło