Cómo ocultar / detectar el algoritmo simétrico de PGP utilizado

5



Al cifrar simétricamente un archivo, (no firmar, no es una pregunta de cifrado asimétrico), es posible ocultar el algoritmo de cifrado utilizado, o si ya está oculto, pero solo se muestra en los sistemas como resultado de ser cacheado de alguna manera?

Analogía: al firmar un archivo cifrado, es posible ocultar el ID del destinatario. Pero ¿cómo ocultar el algoritmo de cifrado utilizado cuando se utiliza el cifrado simétrico utilizando GnuPG, (gpg4win, en este caso)?


Ejemplo:
gpg --armor --symmetric --cipher-algo AES256 --output encryptedOutputFile.asc unencryptedInputFile.txt


y luego:
gpg --decrypt plaintextfile.txt

rendimientos:
gpg: AES256 datos encriptados
gpg: cifrado con 1 frase de contraseña


Observation:

De alguna manera, gpg4win está usando Space Magic para inferir qué es el algoritmo simétrico incluso antes de ingresar la frase de contraseña. ¿Cómo está ocurriendo esto? Intenté eliminar la posibilidad de que el algoritmo estuviera presente en el caché, pero todavía se está deduciendo. GPG usa CAST5 de forma predeterminada, entonces, ¿cómo se deduce AES256?

Entonces, ¿cómo GPG está inferiendo que se utiliza AES256, incluso antes de que se especifique la frase de contraseña?

¿Hay alguna forma de ocultar el algoritmo utilizado con una bandera gpg?

¡Gracias!

    
pregunta Wind And Flame 19.08.2014 - 20:38
fuente

2 respuestas

5

Tenga en cuenta que no hay ninguna razón legítima para ocultar el algoritmo utilizado si usa una contraseña / clave adecuadamente segura.

Si está realmente preocupado, puede abrir el archivo cifrado en un editor hexadecimal y cambiar el cuarto byte del archivo blindado ASCII cifrado simétricamente.

Por ejemplo, los primeros cuatro bytes de un archivo cifrado simétrico son:

8C 0D 04 09

con el cuarto byte siendo 09 indicando AES256. Consulte common / openpgpdefs.h para ver otros valores:

typedef enum
  {
    CIPHER_ALGO_NONE        =  0,
    CIPHER_ALGO_IDEA        =  1,
    CIPHER_ALGO_3DES        =  2,
    CIPHER_ALGO_CAST5       =  3,
    CIPHER_ALGO_BLOWFISH    =  4, /* 128 bit */
    /* 5 & 6 are reserved */
    CIPHER_ALGO_AES         =  7,
    CIPHER_ALGO_AES192      =  8,
    CIPHER_ALGO_AES256      =  9,
    CIPHER_ALGO_TWOFISH     = 10, /* 256 bit */
    CIPHER_ALGO_CAMELLIA128 = 11,
    CIPHER_ALGO_CAMELLIA192 = 12,
    CIPHER_ALGO_CAMELLIA256 = 13
  }
cipher_algo_t;

Entonces, si cambia el byte a 0a (decimal 10), pensará que usé twofish en lugar de aes256. No será posible descifrar con gpg hasta que cambie el byte de nuevo a 09.

Antes de modificar veo:

$ gpg -d some_file.gpg 
gpg: AES256 encrypted data
Enter passphrase: 

y después de modificar ese byte veo:

$ gpg -d some_file.gpg 
gpg: TWOFISH encrypted data
Enter passphrase: 

Por supuesto, esto solo agrega oscuridad y te obliga a recordar cambiar el byte de vuelta y reduce considerablemente la legibilidad. No te sugiero que hagas esto.

    
respondido por el dr jimbob 19.08.2014 - 22:49
fuente
2

Parece que la frase de contraseña que se utilizó para cifrar el mensaje está encriptada con AES256. El algoritmo utilizado para cifrar el mensaje es desconocido, hasta que se descifra el paquete de clave de sesión cifrada.

Esto es lo que muestra pgpdump:

Old: Symmetric-Key Encrypted Session Key Packet(tag 3)(13 bytes)
New version(4)
Sym alg - AES with 256-bit key(sym 9)
Iterated and salted string-to-key(s2k 3):
    Hash alg - SHA1(hash 2)
    Salt - f8 8d cc 5f 67 70 ee 2a 
    Count - 65536(coded count 96)
New: Symmetrically Encrypted and MDC Packet(tag 18)(294 bytes)
Ver 1
Encrypted data [sym alg is specified in sym-key encrypted session key]
    (plain text + MDC SHA1(20 bytes))

El paquete de claves de sesión cifrada con clave simétrica contiene "Un número de un octeto que describe el algoritmo simétrico utilizado" (consulte RFC 4880 ). Parece que el algoritmo con el que se encripta la clave de sesión es obligatorio (a menos que desee romper el RFC)

Parece que no puedes suprimir la adición del algoritmo utilizado para el cifrado de la frase de contraseña.

    
respondido por el martijnbrinkers 19.08.2014 - 21:51
fuente

Lea otras preguntas en las etiquetas