¿Qué información se filtra desde un archivo cifrado OpenPGP?

26

Si un atacante obtiene un archivo que se ha cifrado con una clave pública de OpenPGP, ¿qué información puede deducir el atacante?

Por ejemplo, ¿a qué grado de certeza puede el atacante deducir la identidad del destinatario deseado?

    
pregunta Flimm 08.12.2012 - 21:12
fuente

2 respuestas

21

La ID de clave del destinatario se incluye en texto sin formato en el archivo cifrado. Otra información posiblemente interesante "oculta a simple vista" es solo el tamaño del archivo, o el nombre del archivo encriptado (si alguien lo envía sin alteración, por supuesto).

Lo que podría no darse cuenta es que la ID de clave del destinatario es efectivamente un campo opcional. La Sección 5.1 continúa diciendo:

  

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.

Puede cifrar utilizando el indicador -R (o --hidden-recipient ) con gpg para evitar revelar la clave pública del destinatario en un mensaje cifrado.

$ gpg -e -R torvalds@linux-foundation.org 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
$

En este punto, gpg itera a través de todas las claves privadas que intenta obtener una clave de sesión válida, ya que no puede identificar la clave pública utilizada para el cifrado. Sin embargo, también vea esta respuesta para encontrar formas de diferenciar entre los destinatarios si el atacante tiene acceso a una gran cantidad de mensajes.

Un lado práctico - las pistas secundarias pueden estar en varios registros. Por ejemplo, un atacante que obtiene un mensaje de este tipo también podría acceder (por ejemplo) a un archivo .bash_history con la dirección del destinatario, o al registro de un servidor web con direcciones IP que brindan pistas sobre quién envió POST'ed o GET el archivo. , etc.

    
respondido por el kbs 22.01.2013 - 19:18
fuente
10

Según el RFC para el formato de mensaje OpenPGP, sección 5.1 , todos los mensajes cifrados de OpenPGP contienen en al menos un paquete de clave de sesión cifrada de clave pública, que a su vez contiene esta información de texto simple:

  • la ID de clave de la (sub) clave pública utilizada para cifrar el mensaje, de ocho octetos de longitud. Esto se puede usar para deducir la identidad del destinatario deseado .
  • un número de un octeto que identifica el algoritmo de clave pública utilizado
  • un número de versión del tipo de paquete

Si se han especificado múltiples destinatarios, existirán varios Paquetes de claves de sesión cifradas de clave pública, uno para cada destinatario previsto.

Entonces, en resumen, un atacante puede reducir la identidad del destinatario deseado en función de un mensaje cifrado OpenPGP.

Puedes probarlo de forma experimental intentando descifrar un archivo en el que no tienes la clave pública. Como puede ver, las ID de clave de los destinatarios deseados, así como el nombre del algoritmo y el número de versión:

$ gpg --encrypt -r '<recipient1@example.com>' -r '<recipient2@example.com>' --sign message.txt
$ GNUPGHOME=/tmp/empty gpg --verbose --verbose --decrypt message.txt.gpg
:pubkey enc packet: version 3, algo 16, keyid 9759103664E69CC1
    data: [2048 bits]
    data: [2047 bits]
gpg: public key is 64E69CC1
:pubkey enc packet: version 3, algo 16, keyid 9478F6114164312C
    data: [2048 bits]
    data: [2048 bits]
gpg: public key is 4164312C
:encrypted data packet:
    length: 171
    mdc_method: 2
gpg: encrypted with ELG-E key, ID 4164312C
gpg: encrypted with ELG-E key, ID 64E69CC1
gpg: decryption failed: secret key not available

Esta es la información de texto sin formato que está disponible. No sé si es otra información que pueda deducirse estadísticamente.

    
respondido por el Flimm 08.12.2012 - 21:12
fuente

Lea otras preguntas en las etiquetas