it-swarm.dev

Crittografia e compressione dei dati

Se vogliamo sia la crittografia che la compressione durante la trasmissione, quale sarà l'ordine più preferibile.

  1. Crittografa quindi comprimi
  2. Comprimi quindi crittografa
48
Ali Ahmad

È necessario comprimere prima della crittografia.

La crittografia trasforma i tuoi dati in dati ad alta entropia, generalmente indistinguibili da un flusso casuale. La compressione si basa su modelli per ottenere una riduzione delle dimensioni. Poiché la crittografia distrugge tali schemi, l'algoritmo di compressione non sarebbe in grado di darti una riduzione (se presente) di 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'attaccante può controllare solo il testo in chiaro non compresso, poiché l'output risultante potrebbe essere difficile da dedurre.

EDIT: Sto modificando questi anni dopo perché questo consiglio è in realtà scarso in un caso interattivo. Nella maggior parte dei casi non è necessario comprimere i dati prima di crittografarli. Un metodo di attacco del canale laterale noto come "Oracle di compressione" può essere utilizzato per dedurre dati di testo in chiaro nei casi in cui l'attaccante può causare in modo interattivo il posizionamento di stringhe in un flusso di dati in testo normale altrimenti sconosciuto. Gli attacchi a SSL/TLS come CRIME e BREACH ne sono un esempio.

65
Polynomial

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 di solito essere compressi.

Pertanto, comprimi 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ò perdere informazioni sui dati riservati (perché la compressione riduce la lunghezza a seconda dei dati e la lunghezza crittografata corrisponde più o meno alla lunghezza del testo normale); questa è l'idea alla base del nuovo attacco CRIME su SSL/TLS .


Eccezione marginale: se si crittografa un messaggio con OpenPGP e quindi "armatura ACSII" il risultato, ovvero lo si codifica in Base64, questa codifica ingrandisce i dati del 34%: 3 byte diventano 4 caratteri (più la nuova riga dispari). La compressione con DEFLATE sarà efficace nell'annullare questo ingrandimento (grazie ai codici Huffman). Questo è un caso di utilità della compressione dopo la crittografia, ma in realtà è più compressione su Base64, piuttosto che compressione su crittografia.

25
Thomas Pornin

Consiglierei di comprimere prima i dati e di crittografarli.

  1. 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 i dati audio.

  2. dovresti crittografare meno dati. Mentre quando si crittografa per la prima volta e poi si comprime non si otterrà alcuna velocità.

8
Raphael Ahrens

Né: Comprimi durante la crittografia con uno strumento di crittografia progettato per eseguire entrambe in modo sicuro , come GPG/OpenPGP .

Questo è fondamentalmente la risposta di Thomas Pornin solo più diretto, quindi i lettori in 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) pensano che il primo e il secondo passo siano l'esecuzione di due diversi strumenti come gzip e gpg:

  1. Se si crittografa per primo, la compressione non farà molto, oltre a spremere l'inflazione del 34% di "64II armatura "di Base64 che @ ThomasPornin menzionato.

  2. Se comprimi per primo, la crittografia è meno sicura, vulnerabile ad attacchi come quelli di cui ha parlato @ThomasPornin.

2
hobs

La compressione dopo la crittografia potrebbe non svolgere l'effettiva funzione 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 richieste Web, le intestazioni contengono cookie Web segreti, pertanto la compressione delle intestazioni prima della crittografia rivelerà tali informazioni segrete all'esterno.

Quindi è saggio fare una compressione selettiva che comprime solo i dati non segreti nella pagina e quindi la crittografia avrà senso e impedirà l'estrazione di informazioni segrete.

1
user466720