En OpenPGP, cuando se encripta con una clave pública, ¿es posible no incluir la identificación de la clave RSA?

2

En OpenPGP, al cifrar con una clave pública, ¿es posible no incluir la ID de la clave RSA como texto sin formato en los metadatos?

Necesito cifrar mensajes, pero quiero que sea imposible identificar al receptor. Solo el verdadero receptor del mensaje sabrá que es él o ella.

Estoy haciendo esto con OpenPGP.js.

    
pregunta HelloWorld 23.05.2018 - 00:46
fuente

1 respuesta

4

Es posible ocultar la ID de la clave especificando un destinatario oculto. Esto simplemente elimina la ID incluida en los metadatos y requiere que el destinatario pruebe exhaustivamente todas sus claves secretas antes de que puedan saber si se las cifraron. Esto forma parte del estándar, específicamente RFC 4880 § 5.1 :

  

Una implementación PUEDE aceptar o usar una ID de clave de cero como "comodín"      o ID de clave "especulativa". En este caso, la implementación receptora.      probaría todas las claves privadas disponibles, buscando un descifrado válido      clave de sesión Este formato ayuda a reducir el análisis del tráfico de los mensajes.

GnuPG, una implementación del estándar OpenPGP, ofrece una opción para hacer esto:

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

No sé si OpenPGP.js admite este * , pero sería trivial hackear el soporte para él.

¡Pero sepa que esto no proporciona protección criptográfica contra el descubrimiento de claves! Dados suficientes textos cifrados cifrados, un adversario puede descubrir qué clave pública se usó para cifrarla resolviendo los Problema del tanque alemán . Por lo tanto, ocultar la ID de la clave, incluso si es compatible con el estándar, no le brindará clave de privacidad si un adversario tiene acceso a múltiples textos cifrados y su clave pública.

Los mensajes RSA encriptados con una clave usando el módulo n contienen un número entero entre 0 y n -1 con distribución uniforme. Si un adversario puede observar múltiples mensajes cifrados, podrá determinar algunos de los bits más significativos del módulo, lo que les permitirá diferenciar los mensajes individuales cifrados o incluso atarlos a su clave pública (después de todo, el módulo es público).

* Según el código fuente , parece que se admite una ID de clave con cero. Se agregó en este compromiso .

    
respondido por el forest 23.05.2018 - 03:04
fuente

Lea otras preguntas en las etiquetas