2015-03-26 1 views
1

Je joue avec openssl 1.0.2a - en particulier le support CMS pour ECC. Comme un test, je fais un chiffrement simple et décrypter. J'ai donné un exemple RSA comme un bon exemple de travail/test de santé mentale. L'exemple ECC échoue.openssl CMS avec ECDH EnvelopedData

Des idées? TIA.

./openssl version 
OpenSSL 1.0.2a 19 Mar 2015 

echo -n 12345678123456781234567812345678 > sess.txt # 32 byte plaintext 

#RSA works 
./openssl genrsa -out rsa.key 2048 
./openssl req -x509 -new -key rsa.key -out rsa.crt 
./openssl cms -encrypt -in sess.txt -out rsaencsess.bin -outform PEM rsa.crt 
./openssl cms -decrypt -in rsaencsess.bin -out rsadecsess.txt -inform PEM -inkey rsa.key 
#AOK. 

#EC fails 
    ./openssl ecparam -name prime192v1 -genkey -out ecc.key 
    ./openssl req -x509 -new -key ecc.key -out ecc.crt 
    ./openssl cms -encrypt -in sess.txt -out encsess.bin -outform PEM ecc.crt 
    ./openssl cms -decrypt -in encsess.bin -out decsess.txt -inform PEM -inkey ecc.key 
Error decrypting CMS structure 
error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:529: 
+0

Intéressant, qu'est-ce que la sortie ressemble ne vous inquiétez pas, je ne vais pas déchiffrer un texte chiffré protégé par un 192 bits clé: P –

+0

Steve Henson OpenSSL résolu comme suit: « RSA peut déchiffrer sans connaissant le certificat mais actuellement EC ne peut pas. Essayez donc d'inclure l'option -recip ecc.crt lorsque vous décryptez. " – IgorStojanovic

+0

Vous pouvez ajouter cela en guise de réponse, mais c'est un peu étrange, le param ident et la clé publique font partie de la structure de la clé privée: –

Répondre

1

Steve Henson OpenSSL est résolu comme suit: « RSA peut déchiffrer sans connaître le certificat, mais actuellement CE ne peut donc essayer, y compris l'option -recip ecc.crt lorsque vous décryptez

cela fonctionne maintenant.

./openssl ecparam -name prime192v1 -genkey -out ecc.key 
./openssl req -x509 -new -key ecc.key -out ecc.crt 
./openssl cms -encrypt -in sess.txt -out encsess.bin -outform PEM ecc.crt 
./openssl cms -decrypt -in encsess.bin -out decsess.txt -inform PEM -inkey ecc.key -recip ecc.crt # NOTE "-recip ecc.crt" is currently required else it won't work!