È possibile nascondere l'ID della chiave specificando un destinatario nascosto. Semplicemente azzera l'ID incluso nei metadati e richiede al destinatario di provare in modo esaustivo tutte le loro chiavi segrete prima che possano capire se è stato addirittura crittografato. Questo fa parte dello standard, in particolare RFC 4880 § 5.1 :
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.
GnuPG, un'implementazione dello standard OpenPGP, offre un'opzione per fare questo:
--hidden-recipient name
-R
Encrypt for user ID name, but hide the key ID of this user's key. This option
helps to hide the receiver of the message and is a limited countermeasure
against traffic analysis. If this option or --recipient is not specified,
GnuPG asks for the user ID unless --default-recipient is given.
Non so se OpenPGP.js supporti questo * , ma sarebbe banale comprometterne il supporto.
Ma sappi che questo non fornisce protezione crittografica contro la scoperta delle chiavi! Dato abbastanza cifrari cifrati, un avversario può scoprire quale chiave pubblica è stata usata per crittografarlo risolvendo il Problema al carro armato tedesco . Quindi nascondere l'ID della chiave, anche se supportato dallo standard, non ti darà privacy principale se un avversario ha accesso a più testi cifrati e alla tua chiave pubblica.
I messaggi RSA crittografati con una chiave usando modulo n contengono un numero intero compreso tra 0 e n -1 con distribuzione uniforme. Se un avversario è in grado di osservare più messaggi crittografati, sarà in grado di determinare alcuni dei bit più significativi del modulo, consentendo loro di distinguere i singoli messaggi criptati o legarli alla loro chiave pubblica (dopo tutto, il modulo è pubblico).
* In base al codice sorgente , sembra che sia supportato un ID chiave azzerato. È stato aggiunto in questo commit .