Il tentativo di crittografare un testo produce "impossibile caricare la chiave pubblica"


0

La mia intenzione è di crittografare un testo utilizzando una chiave pubblica formattata PEM. (src)

> echo "encrypt this." | openssl rsautl -encrypt -pubin -inkey pub.pem
unable to load Public Key

Lo stesso succede se inserisco il testo in un file chiamato txt ed eseguo:

> openssl rsautl -encrypt -pubin -inkey pub.pem -ssl -in txt -out txt.enc
unable to load Public Key

(Ciò è stato suggerito in una risposta a una domanda simile: come utilizzare la chiave pubblica ssh-rsa per crittografare un testo? )

Perché OpenSSL non è in grado di caricare la chiave pubblica?


pub.pem: (src)

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: PGPfreeware 6.5.8 for non-commercial use <http://www.pgp.com>
mQGiBDp1yy0RBADVlyDewVwltBs7HnHCG3bXlVUODFkn/00TdbM2SPnOAIkj4giB
ylOP7Mg+Hr5y7FIBvmPWx06In6JjNQiSbpshP5YHv57UfE79nEJdWuSTQt/7j7IJ
GkHYtBRHQMIAHMgT8IB5d3gFq52jSa8hw/ixMP09a0Rw8RP9+kOE4s9UrQCg/zVH
IHswdc/mb50PjdeXwnjxQbkD/3lJYEzz8eUlFHB4rVaC1yRi21Lypf0DIMfQg5j9
xBxY4odFJKyf22PeuAjp9roURRIbGIkIGH8eXF+Mav9OqEdD80JbEn1hZuaLk1RF
k1XJjmFRdKXz+Q7JmRdbs3zXXav2cYwalgzEXT5kuXuNlThLTnLoEFop8Hl3xM4/
PdqMBACkkHb07vPY5l429tdXqL00lE6LedlBW4FLjI534QgselsrUxq5U5y0Wg1Z
//a66l5QkyaMrpsHKfkLHdaPOVCs/WeG6eLwD/cUBEM1Y9Yb5DaB0njdZB3Yxcm8
W23hpKjDanb7SbaSA16gBIWRlvrB/qU+MZAj+EXRDJmwMJq2y7QjbmV0aXZhIGNh
ZnRvcmkgPG5ldGl2YWNAb25lYm94LmNvbT6JAE4EEBECAA4FAjp1yy0ECwMCAQIZ
AQAKCRDFpFclYzXzSwiRAJ0S3djCkJJPUalRyE+vWnfnhvJmDgCfTEBN2N6GlGWO
mrOg1tQlZoWbd5q5Ag0EOnXLLRAIAPZCV7cIfwgXcqK61qlC8wXo+VMROU+28W65
Szgg2gGnVqMU6Y9AVfPQB8bLQ6mUrfdMZIZJ+AyDvWXpF9Sh01D49Vlf3HZSTz09
jdvOmeFXklnN/biudE/F/Ha8g8VHMGHOfMlm/xX5u/2RXscBqtNbno2gpXI61Brw
v0YAWCvl9Ij9WE5J280gtJ3kkQc2azNsOA1FHQ98iLMcfFstjvbzySPAQ/ClWxiN
jrtVjLhdONM0/XwXV0OjHRhs3jMhLLUq/zzhsSlAGBGNfISnCnLWhsQDGcgHKXrK
lQzZlp+r0ApQmwJG0wg9ZqRdQZ+cfL2JSyIZJrqrol7DVekyCzsAAgIH+wVFKD3A
FEdEBHqDZuKjLdLJIKHk4gloKeQ60R9NLLFynfIgSvgsii5uWLY9+gZ2FIGnP3Yc
GxZH1HASv+pG1sw0MnhutxZui3E3Mt69Uv1KTlTGYkfS+mXBw4Qr7hXavCkF45we
f/9Qlj6hSKVjy4YcewdvpopM9S4gVcBq+EdTp1negsCyj3YhFiEo0JEL40mnoHX7
HudJBbiBmknmBZOjxzBBeDPcu7fWV/LDCWiFoGg9uWy2KOcIt7sNXVJbukbSGYg2
hzOB2JPaqCqI5+4YfUCumNLd0lktT7S1V3/6xszEnybQL7tMtmrZZFAFHFAwLNPA
bLxdF/b26GbrTT+JAEYEGBECAAYFAjp1yy0ACgkQxaRXJWM180ttbQCg98c40J41
iXkP9CuqGR0LBJ46VNAAnj+5dH9N226fBp5TN0rAyxwBveTK
=0VvA
-----END PGP PUBLIC KEY BLOCK-----

(Ubuntu 14.04.3 LTS)

> openssl version
OpenSSL 1.0.1f 6 Jan 2014

Risposte:


1

Questa non è una "chiave pubblica formattata PEM". Sebbene l'armatura esterna sia simile a PEM, in realtà hai un blocco tasti PGP (simile allo scopo ai certificati SSL X.509), non una chiave RSA nuda.

(Notare come la prima riga dice che è una "chiave pubblica PGP". Le intestazioni previste sarebbero o BEGIN PUBLIC KEYper PKCS # 7 o BEGIN RSA PUBLIC KEYper PEM / PKCS # 1.)

In effetti, il blocco tasti PGP non ha nemmeno una chiave RSA all'interno - questo particolare contiene chiavi DSA ed ElGamal. (DSA viene utilizzato per creare firme digitali; ElGamal è un sistema di crittografia basato su DH.)

È tecnicamente possibile estrarre le coppie di chiavi non elaborate dal blocco tasti, ma non ha senso qui - se il destinatario utilizza PGP e prevede di decrittografare i messaggi tramite PGP, è necessario crittografarli anche PGP. (Inoltre, lo opensslstrumento non supporta nemmeno il lavoro con ElGamal.)

$ gpg <pub.txt
gpg: armor header: Versione: PGPfreeware 6.5.8 per uso non commerciale <http://www.pgp.com>
pub   dsa1024 / C5A457256335F34B 2001-01-29
uid netiva caftori 
sig C5A457256335F34B 2001-01-29 [selfsig]
sub   elg2048 / 9AF9DF1397F431A1 2001-01-29
sig C5A457256335F34B 2001-01-29 [keybind]

Il modo corretto di utilizzare questo file è importarlo in PGP, GnuPG o uno strumento compatibile:

$ gpg --import < pub.txt
$ echo "encrypt this" | gpg --armor --recipient C5A457256335F34B --encrypt

(Si noti tuttavia che le chiavi sono leggermente corrotte - dopo la riga "Versione:" deve essere presente una riga vuota . È necessario aggiungerla manualmente prima di provare a importare il blocco tasti.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.