Se vogliamo sia la crittografia che la compressione durante la trasmissione, quale sarà l'ordine più preferibile.
- Crittografa quindi comprimi
- Comprimi quindi crittografa ol>
Se vogliamo sia la crittografia che la compressione durante la trasmissione, quale sarà l'ordine più preferibile.
Dovresti comprimerlo prima della crittografia.
La crittografia trasforma i tuoi dati in dati ad alta entropia, solitamente indistinguibili da un flusso casuale. La compressione si basa su modelli per ottenere qualsiasi riduzione delle dimensioni. Poiché la crittografia distrugge tali schemi, l'algoritmo di compressione non sarebbe in grado di darti una riduzione significativa (se del caso) delle dimensioni se lo applichi a dati crittografati.
La compressione prima della crittografia aumenta anche leggermente la tua resistenza pratica contro la crittoanalisi differenziale (e alcuni altri attacchi) se l'aggressore può controllare solo il testo in chiaro non compresso, poiché l'output risultante potrebbe essere difficile da dedurre.
EDIT: sto modificando questo anni dopo perché questo consiglio è effettivamente scarso in un caso interattivo. Nella maggior parte dei casi non dovresti comprimere i dati prima di crittografarli. Un metodo di attacco a canale laterale noto come "oracolo di compressione" può essere utilizzato per dedurre dati di testo in chiaro nei casi in cui l'autore dell'attacco può far sì che le stringhe vengano inserite in modo interattivo in un flusso di dati di testo in chiaro altrimenti sconosciuto. Gli attacchi a SSL / TLS come CRIME e BREACH ne sono un esempio.
Se comprimi dopo la crittografia e la compressione fa qualcosa di buono (cioè riduce davvero la lunghezza di una quantità non trascurabile), puoi abbandonare la crittografia, è terribilmente debole. Il testo crittografato dovrebbe essere indistinguibile dalla casualità; anche i dati crittografati male non possono essere compressi di solito.
Pertanto, comprimilo prima della crittografia. Questo è il motivo per cui i protocolli che si occupano della crittografia di solito includono un supporto per la compressione, ad es. OpenPGP (sezione 5.6) e SSL / TLS. In alcuni scenari, la compressione può far trapelare informazioni sui dati riservati (poiché la compressione riduce la lunghezza a seconda dei dati e la lunghezza crittografata corrisponde più o meno alla lunghezza del testo in chiaro); questa è l'idea alla base del nuovo attacco CRIME su SSL / TLS.
Eccezione marginale: se si crittografa un messaggio con OpenPGP e poi "ACSII armor" il risultato , cioè codificalo in Base64, quindi questa codifica ingrandisce i dati del 34%: 3 byte diventano 4 caratteri (più la nuova riga dispari). La compressione con DEFLATE sarà efficace per annullare questo ingrandimento (grazie ai codici di Huffman). Questo è un caso di utilità della compressione dopo la crittografia, ma, in realtà, è più compressione su Base64, piuttosto che compressione su crittografia.
Suggerirei di comprimere prima i dati e poi di crittografarli.
L'algoritmo di compressione potrebbe trarre vantaggio dalla conoscenza della struttura dei dati e tale struttura sarebbe mascherata dalla crittografia . Un esempio potrebbe essere mp3 che può solo comprimere dati audio.
dovresti crittografare meno dati. Mentre quando si crittografa e poi si comprime per la prima volta non si guadagna velocità.
Nessuno dei due: comprimi durante la crittografia con uno strumento di crittografia progettato per eseguire entrambe le operazioni in modo sicuro, come GPG / OpenPGP.
Questa è fondamentalmente la risposta di Thomas Pornin solo più diretta, quindi i lettori di fretta non fraintendono le sottigliezze di ciò che Thomas Pornin spiega nella sua risposta. La domanda esprime una falsa dicotomia. Se l'OP (e il lettore) sta pensando che il primo e il secondo passaggio siano l'esecuzione di due diversi strumenti come gzip
e gpg
:
Se si crittografa prima, la compressione non farà molto, oltre a spremere l'inflazione Base64 del 34% di "armatura ASCII" menzionata da @ThomasPornin.
Se comprimi prima, la crittografia è meno sicura, vulnerabile ad attacchi come quelli menzionati da @ThomasPornin.
La compressione dopo la crittografia potrebbe non svolgere la funzione effettiva di compressione dei dati perché non ridurrà molto le dimensioni. Ma la crittografia dopo la compressione riduce le dimensioni ma non eseguirà il corretto funzionamento della crittografia perché possono verificarsi attacchi come CRIME.
Come esempio nelle intestazioni delle richieste Web, le intestazioni contengono cookie Web segreti, quindi la compressione delle intestazioni prima della crittografia rivelare quelle informazioni segrete all'esterno.
Pertanto è saggio fare una compressione selettiva che comprima solo i dati non segreti nella pagina e quindi la crittografia avrà senso e impedirà l'estrazione di informazioni segrete.