Crittografa lo stesso file con GnuPG e la stessa chiave produce lo stesso testo cifrato?

37

Se crittografo lo stesso file due volte con GnuPG, usando la stessa chiave, otterrò lo stesso risultato? o sta usando un segmento random / psudeo-random per migliorare la sicurezza come rsynccrypto?

    
posta Didi Kohen 04.04.2013 - 20:45
fonte

2 risposte

46

In generale, no, la crittografia dello stesso file con la stessa chiave non produce lo stesso file, per tre motivi:

  • Il formato OpenPGP (che GnuPG implementa) utilizza la crittografia ibrida : a random, la chiave simmetrica è crittografata con la chiave pubblica del destinatario (di tipo RSA o ElGamal) e quella stessa chiave simmetrica viene utilizzata per crittografare il corpo del messaggio con un algoritmo di crittografia simmetrica. La crittografia ibrida viene utilizzata perché la crittografia asimmetrica è molto limitata nell'intervallo (ad esempio, una chiave RSA a 2048 bit non può crittografare più di 245 byte in una volta sola) e ha un sovraccarico elevato (sia nella CPU sia nella dimensione del messaggio risultante). Poiché la chiave simmetrica non viene salvata da nessuna parte sul lato del mittente, verrà creata una nuova chiave casuale ogni volta e sarà diversa con una probabilità schiacciante.

  • La crittografia asimmetrica è di per sé casuale. Ad esempio, con RSA , il padding include byte casuali. Questo è necessario "in generale", perché la chiave pubblica è pubblica, quindi tutti lo sanno; se la crittografia era deterministica, gli aggressori potevano eseguire una ricerca esaustiva sul messaggio . Questo non sarebbe un problema nel caso specifico di OpenPGP (il messaggio è una chiave casuale, abbastanza grande da sconfiggere la ricerca esaustiva da solo), ma gli standard per RSA o ElGamal hanno un ambito più ampio e includono il riempimento casuale.

  • Quando si esegue la stessa crittografia simmetrica, viene usata una IV casuale, e sarà diversa (con una schiacciante probabilità) per ogni invocazione. Vedi sezione 5.7 per i dettagli.

Il terzo punto si applica anche quando si esegue la crittografia basata su password (la crittografia viene eseguita con una password, non con la chiave pubblica del destinatario). La crittografia basata su password aggiunge anche una quarta randomizzazione, che è salt nella trasformazione password-to-key .

    
risposta data 04.04.2013 - 21:11
fonte
21

La crittografia di GnuPG non è deterministica e quindi restituirà output diversi per ogni corsa. Crittografare, quindi decrittografare è deterministico e restituirà sempre gli stessi contenuti.

Spiegazione:

GnuPG utilizza la crittografia asimmetrica, che è lenta quando si codificano enormi quantità di dati. Per questo motivo, utilizza la tua chiave privata per crittografare un codice a blocchi casuale che viene nuovamente utilizzato per crittografare i tuoi dati.

Ogni volta che si crittografa i dati, verrà generato un nuovo codice a blocchi casuali, quindi i dati crittografati avranno un aspetto diverso.

Ho crittografato lo stesso documento due volte e ho calcolato i checksum MD5 dopo ogni crittografia:

$ gpg --encrypt test.txt
$ md5 test.txt.gpg
MD5 (test.txt.gpg) = f2f6a07e0d7ae9899315d0471c2596bc
$ gpg --encrypt test.txt
$ md5 test.txt.gpg
MD5 (test.txt.gpg) = b57d4c360b1c3c6b2202ce6c3d32cdd8
    
risposta data 04.04.2013 - 21:05
fonte

Leggi altre domande sui tag