Come nascondere / rilevare l'algoritmo simmetrico PGP utilizzato

5



Quando crittografa simmetricamente un file, (non firmando, non una domanda di crittografia asimmetrica), è possibile nascondere l'algoritmo di crittografia usato, o è già nascosto, ma semplicemente mostrare sui sistemi come risultato di essere nascosto in qualche modo?
Analogia: quando si firma un file crittografato, è possibile nascondere l'ID del destinatario. Ma come nascondi l'algoritmo di crittografia usato quando usi la crittografia simmetrica usando GnuPG, (gpg4win, in questo caso)?


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


e poi:
gpg --decrypt plaintextfile.txt

rendimenti:
gpg: dati crittografati AES256
gpg: crittografato con 1 passphrase


osservazione:

In qualche modo, gpg4win utilizza Space Magic per dedurre quale sia l'algoritmo simmetrico ancor prima che venga immessa la passphrase. Come sta accadendo? Ho cercato di eliminare la possibilità che l'algoritmo fosse presente nella cache, ma viene comunque dedotto. GPG utilizza CAST5 per impostazione predefinita, quindi come si deduce AES256?

Quindi, in che modo GPG deduce che AES256 viene utilizzato, anche prima che sia specificata la passphrase?

C'è un modo per nascondere l'algoritmo usato con un gpg - flag?

Grazie!

    
posta Wind And Flame 19.08.2014 - 20:38
fonte

2 risposte

5

Nota, non esiste alcun motivo legittimo per nascondere l'algoritmo utilizzato se si utilizza una frase / chiave sufficientemente idonea.

Se si è veramente preoccupati, è possibile aprire il file crittografato in un editor esadecimale e modificare il quarto byte del file corazzato ASCII simmetricamente crittografato.

Ad esempio, i primi quattro byte di un file simmetrico crittografato sono:

8C 0D 04 09

con il quarto byte che indica 09 AES256. Vedi common / openpgpdefs.h per vedere altri valori:

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;

Quindi se cambi il byte in 0a (decimale 10), penseresti che ho usato twofish piuttosto che aes256. Non sarà possibile decodificare con gpg fino a quando non cambio il byte a 09.

Prima di modificare vedo:

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

e dopo aver modificato quel byte vedo:

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

È garantito che questo aggiunge solo oscurità e costringe a ricordare di cambiare il byte indietro e riduce notevolmente la leggibilità. Non ti suggerisco di farlo.

    
risposta data 19.08.2014 - 22:49
fonte
2

Sembra che la passphrase utilizzata per crittografare il messaggio sia crittografata con AES256. L'algoritmo utilizzato per crittografare il messaggio non è noto fino a quando il pacchetto chiave di sessione crittografato non viene decodificato.

Questo è ciò che mostra 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))

Il pacchetto chiave di sessione crittografata Symmetric-Key contiene "Un numero di un ottetto che descrive l'algoritmo simmetrico utilizzato" (vedi RFC 4880 ). Sembra che l'algoritmo con cui è cifrata la chiave di sessione sia richiesto (a meno che tu non voglia interrompere la RFC)

Sembra che non sia possibile sopprimere l'aggiunta dell'algoritmo utilizzato per la crittografia della passphrase.

    
risposta data 19.08.2014 - 21:51
fonte

Leggi altre domande sui tag