È possibile determinare, dato un messaggio PGP che è già possibile decodificare, per determinare su quali altre chiavi PGP è stato crittografato quel messaggio?
Prima di tutto, anche se hai usato pgp , presumo che farai effettivamente sta usando GnuPG. Altrimenti, prendilo - è un software gratuito. Anche se PGP avrà probabilmente anche funzionalità simili.
Dipende. Se il mittente include le impronte digitali delle chiavi del destinatario, è possibile recuperarle; altrimenti (se criptato usando l'opzione --hidden-recipient
) GnuPG deve testare tutte le chiavi di decrittografia private contro il messaggio.
Se i destinatari sono inclusi, GnuPG li elencherà quando è impostato su modalità dettagliata ( --verbose
). Per evitare che GnuPG decifri effettivamente il messaggio, aggiungi --list-only
. Le righe pertinenti sono quelle che iniziano con gpg: public key is
.
Questo produrrà sottochiavi pubbliche, che dovrai risolvere di nuovo usando gpg --list-keys [key-id]
.
Una riga di comando completa per recuperare i destinatari da un messaggio:
cat message.pgp | LANG=C gpg --verbose --list-only 2>&1 | grep 'gpg: public key is'
Se vuoi anche risolvere automaticamente le sottochiavi, aggiungi anche cut
e xargs
:
cat message.pgp | LANG=C gpg --verbose --list-only 2>&1 | grep 'gpg: public key is' | cut -d' ' -f 5 | xargs gpg --list-keys
LANG=C
è usato per imporre la localizzazione inglese, quindi grep
ping non fallirà per altre lingue.
Leggi altre domande sui tag public-key-infrastructure pgp gnupg