È 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