Асимметричное шифрование файлов. 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