In OpenPGP, durante la crittografia con chiave pubblica, è possibile non includere l'ID della chiave RSA?

2

In OpenPGP, durante la crittografia con chiave pubblica - è possibile non includere l'ID della chiave RSA come testo in chiaro nei metadati?

Ho bisogno di crittografare i messaggi, ma voglio che sia impossibile identificare il destinatario. Solo il vero ricevitore del messaggio saprà che è lui o lei.

Lo sto facendo con OpenPGP.js.

    
posta HelloWorld 23.05.2018 - 00:46
fonte

1 risposta

4

È 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 .

    
risposta data 23.05.2018 - 03:04
fonte

Leggi altre domande sui tag