Perché un file crittografato dovrebbe essere più grande del 35% rispetto a un file non crittografato?

42

In base alla documentazione di ownCloud , se abiliti la crittografia, le dimensioni dei file possono essere ~ 35% più grande delle loro forme non criptate.

Dalla mia comprensione della crittografia, le dimensioni dei file dovrebbero essere più o meno identiche (forse alcuni 0 bit imbottiti alla fine per renderlo un multiplo della dimensione della chiave).

È sbagliato? In caso negativo, perché?

    
posta warren 10.03.2016 - 19:37
fonte

3 risposte

79

Molto probabilmente, il file crittografato è codificato in base64 che rappresenterebbe un aumento del 33,3% dei file (codifichi tre byte di dati in quattro byte di dati base64). L'inserimento di una nuova riga ogni 64 caratteri per renderlo più facile da leggere (come avviene con l'armatura ASCII in openssl, GPG, PGP) aumenterà le dimensioni di 65/64.

Combinando questi due effetti, il nuovo file è (4/3) * (65/64) = 135,4% della dimensione dell'originale o un aumento della dimensione del file del 35,4%.

Ho esaminato il calcolo in questa risposta qui .

Sei corretto anche se non è necessario che la crittografia modifichi in modo significativo le dimensioni del file. Probabilmente aggiunge un paio di blocchi di dati se c'è un'intestazione, un vettore di inizializzazione / nonce, qualche padding per renderlo un blocco completo e / o MAC per verificare l'integrità, anche se queste modifiche saranno insignificanti per i file di grandi dimensioni (ad esempio, aggiungendo quattro i blocchi su un file con codifica AES di 1 MB renderebbero il file più grande dello 0,006%).

Tuttavia, per non aumentare le dimensioni dei file, è necessario essere a posto con la memorizzazione e il passaggio dei dati crittografati come un binario arbitrario. I binari arbitrari sono spesso bloccati tramite e-mail per impedire la diffusione di virus informatici e sono spesso difficili da aprire al di fuori degli hexeditors. I file codificati Base64 sono più facili da aggirare ed è un formato più portatile rispetto ai file binari di un tipo di file sconosciuto.

    
risposta data 10.03.2016 - 20:10
fonte
6

Se i file vengono compressi, potresti notare questa discrepanza.

Gli algoritmi di compressione funzionano meglio su dati non casuali. La crittografia mira a generare casualità dalle informazioni. L'informazione è generalmente facile da comprimere in quanto ha modelli. Tuttavia, se lo si cripta, si eliminano generalmente tutti i motivi (e le informazioni).

Esempio: 2.75 GB di file di archivio email possono essere facilmente compressi fino a < .5GB. Tuttavia, se questi archivi di posta elettronica fossero crittografati, la versione compressa sarebbe molto più vicina a 2,75 GB.

    
risposta data 10.03.2016 - 20:17
fonte
3

Normalmente, il segno% dice che il file potrebbe essere codificato Base64 dopo la crittografia, e potrebbe anche ottenere dei checksum su ciascun blocco per prevenire il danneggiamento. Base64 codifica caratteri di 8 bit in caratteri di 6 bit, il che significa che il file in questione aumenta del 30% circa a causa di più caratteri richiesti per il rendering dell'intero file. Aggiungi un checksum per blocco e raggiungi il 35%.

Normalmente, la stessa crittografia aggiunge un sovraccarico. Normalmente, l'overhead è intestazione + piè di pagina, eventuale chiave crittografata, parametri, sali, checksum e anche una dimensione del blocco meno 1, perché se i dati crittografati non sono equamente divisibili con le dimensioni del blocco, si dovrebbe eseguire il rilievo con fino a bloccare dimensione - 1.

Ma tutti quei dati nella frase precedente aggiungerebbero una quantità statica di dati a ogni file, indipendentemente dalle sue dimensioni, anche se sono grandi 1 o 100 GB.

L'ingrandimento dei dati espresso in% dice che è un processo di ricodifica come base64 o qualcosa di simile.

    
risposta data 10.03.2016 - 19:54
fonte

Leggi altre domande sui tag