Differenza tra la firma e la decrittografia
Penso che la tua confusione derivi dal fatto che la firma in teoria in effetti è in qualche modo simile alla decifratura per alcuni algoritmi (ad esempio RSA).
Wikipedia ad esempio frasi come questa:
Suppose Alice wishes to send a signed message to Bob. She can use her
own private key to do so. She produces a hash value of the message,
raises it to the power of d (modulo n) (as she does when decrypting a
message), and attaches it as a "signature" to the message.
Questo è tuttavia non come viene fatto nella pratica , ed è per questo che il tuo approccio non funziona.
Per una spiegazione più approfondita della firma e della decrittazione, vedi ad esempio qui :
In the abstract world of textbooks, RSA signing and RSA decryption do
turn out to be the same thing. In the real world of implementations,
they are not. So don't ever use a real-world implementation of RSA
decryption to compute RSA signatures. In the best case, your
implementation will break in a way that you notice. In the worst case,
you will introduce a vulnerability that an attacker could exploit.
Furthermore, don't make the mistake of generalizing from RSA to
conclude that any encryption scheme can be adapted as a digital
signature algorithm. That kind of adaptation works for RSA and El
Gamal, but not in general.
Riguardo a PGP, non firma il messaggio stesso, ma invece firma un hash digest del messaggio :
PGP uses a cryptographically strong hash function on the plaintext
the user is signing. This generates a fixed-length data item known as
a message digest. (Again, any change to the information results in a
totally different digest.)
Then PGP uses the digest and the private key to create the
"signature." PGP transmits the signature and the plaintext together.
Upon receipt of the message, the recipient uses PGP to recompute the
digest, thus verifying the signature. PGP can encrypt the plaintext or
not; signing plaintext is useful if some of the recipients are not
interested in or capable of verifying the signature.
Ecco un'immagine che descrive il processo:
Perchénonpuoisemplicementedecodificareunmessaggioperfirmarlo
Quantosopraètuttomoltobello,esappiamochenondovremmodecodificareimessaggiperfirmarliinpratica,maperchénonpossiamofarlosoloperdivertimento?
PerchénonècosìchefunzionanoPGPoGPG.Unaspiegazionecompletadelfunzionamentointernosarebbeprobabilmentetroppoperquestadomanda,masivedaadesempio In che modo GPG verifica la corretta decrittazione? .
In breve, PGP non si limita a eseguire operazioni mod sui dati di decodifica, il formato .pgp è ben definito e contiene varie informazioni. Si noti inoltre che PGP non utilizza effettivamente la crittografia asimmetrica come RSA sul messaggio stesso, ma su una chiave che viene quindi utilizzata per crittografare simmetricamente il messaggio.
Conclusione
Per riassumere, se dovessi usare un semplice RSA, potresti usare la decrittazione per firmare un messaggio (ma non dovresti), ma PGP e GPG non sono semplici RSA, quindi non puoi semplicemente decifrare un messaggio per firmalo.