Асимметричное шифрование файлов. RSA

  • Генерация пары ключей
openssl genpkey \
 -algorithm RSA \
 -pkeyopt rsa_keygen_bits:4096 \
 -out rsa_keypair.pem
  • Извлечение публичного ключа из пары:
openssl pkey \
 -in rsa_keypair.pem \
 -pubout \
 -out rsa_public_key.pem

Посмотреть внутрь можно просто cat’ом но если интересна структура то openssl pkey -pubin -in rsa_public_key.pem -noout -text

Encrypt/Decrypt

  • RSA не позволит зашифровать данные большего размера чем длина самого ключа. Поэтому в том же TLS именно RSA шифруются сессионные ключи которые в дальнейшем используются для Симметричное шифрование файлов.
  • Шифрование
openssl pkeyutl \
 -encrypt \
 -in session_key.bin \
 -out session_key.bin.encrypted \
 -pubin \
 -inkey rsa_public_key.pem \
 -pkeyopt rsa_padding_mode:oaep
  • Дешифрование
openssl pkeyutl \
 -decrypt \
 -in session_key.bin.encrypted \
 -out session_key.bin.decrypted \
 -inkey rsa_keypair.pem \
 -pkeyopt rsa_padding_mode:oaep