L'ID della chiave del destinatario è incluso in testo normale nel file crittografato. Altre informazioni potenzialmente interessanti "nascoste in bella vista" sono solo la dimensione del file, o il nome del file crittografato (se qualcuno lo invia senza modifiche, ovviamente).
Ciò che potresti non capire è che l'ID della chiave del destinatario è effettivamente un campo facoltativo. Sezione 5.1 continua a dire:
An implementation MAY accept or use a Key ID of zero as a "wild card"
or "speculative" Key ID. In this case, the receiving implementation
would try all available private keys, checking for a valid decrypted
session key. This format helps reduce traffic analysis of messages.
Puoi crittografare utilizzando il flag -R
(o --hidden-recipient
) con gpg
per evitare di rivelare la chiave pubblica del destinatario in un messaggio crittografato.
$ gpg -e -R [email protected] message.txt
$ $ gpg --verbose --verbose --decrypt message.txt.gpg
:pubkey enc packet: version 3, algo 1, keyid 0000000000000000
data: [2047 bits]
gpg: public key is 00000000
gpg: anonymous recipient; trying secret key aaaaaaaa ...
gpg: anonymous recipient; trying secret key bbbbbbbb ...
gpg: anonymous recipient; trying secret key cccccccc ...
:encrypted data packet:
length: 76
mdc_method: 2
gpg: encrypted with RSA key, ID 00000000
gpg: decryption failed: secret key not available
$
A questo punto, gpg
scorre tutte le chiavi private che sta cercando di ottenere una chiave di sessione valida, in quanto non può identificare la chiave pubblica utilizzata per la crittografia. Tuttavia, vedi anche questa risposta per modi di differenziare tra i destinatari se l'autore dell'attacco ha accesso a un numero elevato di messaggi.
Una soluzione pratica - indizi secondari possono essere in vari registri. Ad esempio, un utente malintenzionato che ottiene un messaggio di questo tipo potrebbe anche essere in grado di accedere (ad esempio) a un file .bash_history
con l'indirizzo del destinatario o un registro di server Web con indirizzi IP che forniscono indizi a chi ha POST o GET il file , ecc.