Usando o OpenSSL 1.1.1.b-1, posso gerar um par de chaves RSA e usá-lo para criptografar o conteúdo:
openssl genrsa -out private_key 4096
openssl rsa -in private_key -pubout -outform PEM -out public_key.pem
openssl rsautl -encrypt -inkey public_key.pem -pubin -in original.txt -out encrypted.enc
openssl rsautl -decrypt -inkey private_key -in encrypted.enc -out original.txt
Mas tentar criptografar o conteúdo com as chaves ed25519,
openssl genpkey -algorithm ED25519 -out private_key
openssl pkey -in private_key -pubout -out public_key
openssl pkeyutl -encrypt -inkey public_key -pubin -in original.txt -out encrypted.enc
Resultados no erro:
pkeyutl: Error initializing context
140302731502080:error:0608B096:digital envelope routines:EVP_PKEY_encrypt_init:operation not supported for this keytype:crypto/evp/pmeth_fn.c:141:
O OpenSSL 1.1.1.b-1 não consegue executar a função ou estou usando o pkeyutl incorretamente?
openssl rsautl
não é para criptografar mensagens. A documentação é extremamente ruim e enganosa e tem sido assim por décadas e não é minha culpa. Em geral, osopenssl
utilitários de linha de comando são ferramentas de diagnóstico e auxiliares de depuração para vários bits de software e protocolos de criptografia, muitos dos quais foram projetados há muitos anos com complexidade excessiva.Essencialmente, ninguém deveria usar arquivos
openssl rsautl
. A únicaopenssl
ferramenta de linha de comando projetada para criptografar mensagens com RSA éopenssl smime
/openssl cms
— e muito mal porque os projetistas de protocolo eram burocratas viciados em impressoras.Ed25519 é um esquema de assinatura. Não faz criptografia. Existem esquemas de criptografia de chave pública — autenticados ou anônimos — que usam algumas das mesmas ideias matemáticas subjacentes do Ed25519, mas você não pode usar o próprio Ed25519 para criptografar mensagens, assim como não pode usar RSASSA-PSS para criptografar mensagens.