Categorie
Windows

Compressione file: crittografia, formati e consigli utili

Chi utilizza il PC prima o poi si sarà trovato a dover trattare (o ricevere da altri) un particolare tipo di file compresso contenente al suo interno uno o più file (o cartelle) a cui è stato ridotto il volume (lo spazio occupato in byte) tramite alcuni algoritmi particolari dedicati allo scopo. Ma ai nostri giorni, con le connessioni da svariate centinaia di Megabit, è ancora utile fare compressione file? Certo che sì: oltre a ridurre il tempo d’attesa (comunque già basso) e la possibilità di inserire migliaia di file in un solo file compresso, possiamo aumentare la sicurezza dei dati inviati usando la crittografia, grazie al quale il destinatario o i destinatari dovranno conoscere la password per accedere al contenuto.

In questo focus analizzeremo i diversi formati di archivio disponibili, ciascuno con i suoi pro e contro. Alcuni formati di archivio sono famosi per il loro rapporto di compressione (che rende il vostro file finale di dimensioni più contenute), mentre altri supportano la crittografia avanzata. Scopriamo di più su compressione, crittografia e algoritmi utilizzati dai vari formati di compressione file.

Algoritmi di compressione

L’algoritmo di compressione è il metodo utilizzato dall’archivio per comprimere i file e rendere la dimensione complessiva più piccola dell’originale. Diamo uno sguardo a quelli più famosi.

LZMA/LZMA2

Lempel-Ziv-Markov (LZMA) è un algoritmo di compressione senza perdita di dati (lossless in inglese). LZMA utilizza un algoritmo di compressione a dizionario che fa uso di strutture dati complesse per codificare un bit alla volta. LZMA2 è un contenitore che contiene sia i dati non compressi e che i dati compressi in LZMA. Esso supporta la compressione multi-threaded dei nuovi processori multi-core e decompressione dei dati rapida. Si possono anche comprimere i dati che normalmente non sono comprimibili con altri algoritmi di compressione (tipo ISO, MP4, altri archivi compressi etc.).

Burrows-Wheeler Transform Algorithm (BWT)

BWT lavora permutando una stringa di codice alla volta e sostituendo i caratteri che si ripetono in simboli per risparmiare spazio. Uno dei migliori per rapporto di compressione, ma è anche piuttosto lento nel processo.

PPM

Predizione a corrispondenza parziale (PPM) è un metodo di compressione dati statistico che funziona utilizzando una serie di simboli precedenti nel flusso compresso per prevedere il simbolo successivo nel flusso non compresso. Mediamente buono, è poco diffuso per la presenza di algoritmi decisamente migliori.

Deflate

Deflate è un algoritmo popolare di compressione file che utilizza una combinazione di LZ77 e codifica di Huffman (una combinazione di LZMA e PPM) per produrre una maggiore compressione. Poiché Deflate è libero da vincoli di copyright, è diventato molto popolare ed è ampiamente utilizzato soprattutto in Linux. Il miglior algoritmo di compressione al momento.

Algoritmi di crittografia

Per migliorare la sicurezza dei nostri archivi compressi analizzeremo alcuni dei metodi di crittografia più popolari.

DES

Il Data Encryption Standard utilizza chiavi segrete per crittografare e de-crittografare i dati. La chiave segreta è selezionata a caso in uno spazio d’indirizzi compreso tra i 56 e i 64 bit. Lentamente abbandonato per via delle sue numerose falle e per la relativa semplicità di hackeraggio.

AES

Advanced Encryption Standard è un algoritmo di cifratura utilizzato dalle agenzie statunitensi per proteggere i dati sensibili e marchiati come TOP SECRET. È possibile crittografare i dati utilizzando chiavi di crittografia a 128, 192 e 256 bit. AES utilizza un algoritmo a chiave simmetrica, il che significa che una chiave comune viene usata per cifrare e poi decodificare i dati. Tra i più diffusi e sicuri, specie con chiavi a 256 bit.

Blowfish

L’algoritmo di crittografia Blowfish codifica gli archivi con una dimensione del blocco a 64 bit e una lunghezza di chiave variabile tra 32 e 448 bit. Spesso viene usato in contemporanea ad altri algoritmi per creare una “cassaforte inviolabile”.

Nota: Ci sono molti altri algoritmi di cifratura, ma abbiamo preferito citare i più famosi ed utilizzati.

Formati di archivio

Ci sono vari formati di archivio disponibili. Qui valuteremo ogni formato utilizzando tre parametri: supporto alla compressione, alla crittografia e disponibilità su vari sistemi operativi.

Tar

Tape Archive (Tar) è uno dei più antichi formati di archivio. Inizialmente è stato utilizzato per combinare e scrivere dati su unità a nastro sequenziali ma è stato successivamente standardizzato come formato di compressione. Tar è usato soprattutto in Linux e non supporta la compressione o la crittografia; per ovviare a queste carenze è usato in accoppiata con gz (tar.gz). È anche possibile utilizzarlo su Windows con l’installazione di software aggiuntivo. La maggior parte dei moderni programmi dedicati alla compressione/decompressione supporta questo formato.

GZ

GZ o GZip è uno dei formati di compressione più diffusi in Windows e GNU/Linux. GZip utilizza l’algoritmo di compressione Deflate per comprimere efficacemente i file archiviati. GZip supporta anche i trasferimenti di file in più parti (splitting): è possibile creare piccole parti di un file di grandi dimensioni per una facile condivisione e trasferimento. Poiché GZip è molto popolare, la maggior parte dei moderni programmi di compressione/decompressione forniscono il supporto al formato GZip: 7-Zip, BetterZip, PKZip, WinZip, WinRAR e Peazip. Viene usato in combinazione con Tar (tar.gz) per la distribuzione di sorgenti su GNU/Linux.

BZ/BZ2

BZ è molto simile a GZ ma utilizza come algoritmo di compressione BWT, che si traduce in una compressione più decisa e dimensioni del file finali più piccole, specie nella variante BZ2. La fase di compressione file è lenta, la fase di decompressione è invece abbastanza veloce. La maggior parte del software che supportano GZ supportano anche BZ.

Zip

Zip è probabilmente il più noto e utilizzato formato di archiviazione, sinonimo di file compresso per moltissimi utenti. Zip utilizza l’algoritmo Deflate e supporta la compressione lossless (LZMA/LZMA2).

La maggior parte dei sistemi operativi moderni sono dotati di supporto integrato per il formato Zip, quindi non è necessario un software separato per gestirli. In alternativa è disponibile WinZip, il migliore per gestire questo formato

7Z

Il formato di archiviazione 7Z è stato introdotto dal programma gratuito e open source 7-Zip. È il formato più avanzato per la compressione e l’archiviazione, visto che supporta la maggior parte degli algoritmi di compressione e crittografia, incluse quelle di cui abbiamo discusso in precedenza.

7Z comprime i file più di ogni altro formato (LZMA/LZMA2 in primis ma anche Deflate e BWT se necessario), ma è relativamente più lento durante la compressione. Un’altra limitazione è che il programma 7-Zip è disponibile come interfaccia grafica solo per Windows; su Linux è presente solo il supporto a 7-Zip via terminale. 7Z supporta anche l’archiviazione multi-parte per lo splitting e vari algoritmi di crittazione.

RAR

RAR è un formato di archiviazione proprietario ed è il più popolare dopo ZIP.

Può essere letto ed estratto da altre utility come 7-Zip e WinZip grazie al modulo Unrar (disponibile anche su Linux), ma può essere creato solo utilizzando WinRAR, programma specifico a pagamento.

Con l’arrivo di 7Z (che può fare gli stessi compiti senza pagare nulla) RAR sta rimuovendo verso i suoi utenti i diritti d’utilizzo anche fuori dal tempo massimo del trial su WinRAR, costringendo ad acquistare la licenza d’uso. RAR supporta la crittografia AES-256, i multiprocessore, lo splitting dei file e le capacità di auto-estrazione.

Altri formati di compressione file

Ecco alcuni formati relativamente meno conosciuti:

XZ è un formato di compressione senza perdita di dati che utilizza l’algoritmo di compressione LZMA2. Esso è una versione “ridotta” di 7Z.

LHA, precedentemente conosciuto come LHARC, viene utilizzato principalmente per la compressione di file di installazione e di giochi (molto in voga in Giappone). È interessante notare che le versioni giapponesi di Windows 7 e Windows 8 vengono forniti con il supporto incorporato per gli archivi LHA.

ACE è un formato proprietario di compressione dei dati concorrente al formato RAR agli inizi del 2000.

StuffIt è stato rilasciato principalmente per Mac, ma in seguito arrivarono le versioni per Windows, Linux e Solaris. È un formato di compressione proprietario utilizzato dalle utility StuffIt.

DEB è il formato d’archivio usato per immagazzinare i sorgenti precompilati dei programmi di Debian, nota distribuzione GNU/Linux. Famosa per essere a tutti gli effetti gli “MSI” di Debian, Ubuntu e relative derivate.

Conclusioni

Il miglior formato di compressione file?

In Linux il formato più comunemente usato è gz (o tar.gz) seguito da bz e deb (nelle distro Debian-based), mentre in Windows e Mac il formato più comunemente usato è Zip. Per la compatibilità cross-platform il formato Zip è quello consigliato per trovarsi bene qualsiasi sistema operativo usi il destinatario: viene gestito molto bene da tutti i sistemi moderni.

Il più sicuro? Quello con maggiore compressione file?

Se volete caratteristiche avanzate come sicurezza, alta compressione e archiviazione multipla (splitting) andate sul sicuro con il formato 7Z. RAR è molto simile a 7Z ma non è gratuito come quest’ultimo. Evitare il più possibile.

Il client migliore per gestire tutti i formati possibili?

Un valido client multi-piattaforma ed open source è 7-Zipin grado di gestire molto efficacemente tutti i formati (compresi quelli citati nella guida), con la possibilità di creare nuovi archivi ZIP o 7Z con svariate impostazioni.

Compatibile con qualsiasi versione di Windows e completamente gratuito anche in ambito commerciale. Di seguito la nostra guida completa su come utilizzarlo.

[articolo id=”228414″]

9 risposte su “Compressione file: crittografia, formati e consigli utili”

Salve, a mio parere nel vostro articolo manca un illustre personaggio ZIPGENIUS in qualità di client di compressione, anche se solo nel mondo Windows, rende facili molte operazione di gestione file e benché io prediliga i software open source multipiattaforma (quindi riconosco che 7Zip è più versatile), un cenno a Zipgenius lo avrei sviluppato.
Ho cominciato a comprimere con PkZip, potete immaginare quanto l’argomento mi sia profondo (forse era il 1989).
Complimenti per l’ampia dissertazione.

Grazie mille per le segnalazioni, farò tesoro delle stesse

Puntualizzazione 1: “Tape Archive (Tar) è uno dei più antichi formati di archivio. Inizialmente è stato utilizzato per combinare e scrivere dati su unità a nastro sequenziali ma è stato successivamente standardizzato come formato di compressione.”. Falso. Ribadisco: il problema è semplicemente che gzip non archivia. Dato che c’era un formato comodo di archiviazione già disponibile, si è ovviato a questa limitazione usandolo. Tar però resta un mero formato di archiviazione, non è mai stato “standardizzato” in altro modo.

Puntualizzazione 2: Errore mio, intendevo 7zip. È supportatissimo su Linux da una marea di programmi con interfaccia grafica.

Poi, chiarimenti su cose meno gravi.

– Gli algoritmi comprimono. I formati contengono i dati compressi dagli algoritmi. Dire cose tipo “il formato tale comprime piú dell’algoritmo tale” non ha il minimo senso. Per chiarire su un formato che mi piace molto, che è il 7z, questo tipicamente contiene dati compressi LZMA, che è il default. Può contenere anche dati compressi con Bzip, PPMd e DEFLATE. Dire quindi che il 7z comprime piú di uno di questi è sbagliato. Il 7z usa uno di questi.

– Tutti gli algoritmi di compressione che hai elencato sono lossless. Un algoritmo lossless è un algoritmo che non perde dati, ovvero un algoritmo che sa “decomprimere” ottenendo un file identico all’originale. L’alternativa sono gli algoritmi lossy, che riducono le dimensioni di un file buttando via le cose “non necessarie”. Esempi di famosi di algoritmi lossy sono il jpg e l’mp3, che agiscono buttando letteralmente via parte dei dati in maniera irrecuperabile, fino a ottenere un file che “somigli” all’originale e sia piú piccolo. Una cosa tipo “Zip utilizza l’algoritmo Deflate e supporta la compressione lossless (LZMA/LZMA2)” è vera ma sembra dire che DEFLATE non sia compressione lossless.

– “DEFLATE è il miglior algoritmo del momento” è una cosa molto opinabile. Come detto nell’articolo stesso, LZMA2 con certi tipi di file (quelli già compressi lossy, per esempio) si comporta meglio. La verità è che il miglior algoritmo dipende molto da quanto il file è “compressibile” (ovvero, in genere, quanto è ridondante) e da come in generale il file è fatto. In piú, a seconda del contesto, può essere preferibile un algoritmo che comprime molto ma ci mette tanto, o un algoritmo che comprime poco ma è anche veloce. È per questo che i formati migliori supportano molti algoritmi.

– LZMA è un algoritmo. LZMA2 è un formato, anche se spesso viene incapsulato in altri formati piú accessoriati. 7zip per esempio può contenere sia dati rozzi in LZMA che archivi LZMA2.

– Anche bzip2 può comprimere un solo file, quindi anche bzip su Linux viene tipicamente usato come .tar.bz

– Definire deb come un formato di archiviazione è un po’ azzardato. È un semplice file per l’installazione software. È una scatola che contiene un paio di tar (che neanche è obbligatorio comprimere) e altra roba. Una marea di formati di file sono fatti in questo modo, se si elenca deb bisogna elencare il mondo. Per dirne una banale, il docx (e tutti i vari formati “nuovi” di office) è uno zip a tutti gli effetti, contenente un file xml. Il formato odt (e tutti i vari formati OpenDocument) sono a tutti gli effetti degli zip contenenti un file xml, alcuni file css, e immagini. Provare a cambiare estensione per credere. Insomma, non è che se una cosa è un archivio, allora è anche un formato di archiviazione.

– Non esistono “client per gestire i formati”, ma “programmi per gestire i formati”. Il “client” è un programma utilizzato per richiedere risorse a un altro programma chiamato “server”. Non è decisamente questo il caso :P

Tutto qui, mi pare :)

Grazie per le segnalazioni.

Visto la sua grande esperienza, sarei molto grato di sapere anche quale altre parti dell’articolo siano così poco “grossolane”, giusto per capire l’origine del casino mentale generatoli, per non ripetere più questi grossolani errori.

Puntualizzazioni: 1 e 2 si è già dato la risposta da solo, visto che è già scritto nell’articolo.

Punto 3: in effetti meglio MSI come metro di paragone, grazie della dritta ;)

Oddio che casino. Giusto le più grossolane:
– TAR non è MAI stato standardizzato come formato di compressione, dato che, come dite… Non comprime. È il naturale compagno di gz perché gz non archivia (comprime solo file singoli), quindi si usa archiviare con TAR e comprimere l’archivio con gz.
– Qualunque programma grafico di archiviazione degno di questo nome, su linux, supporta gzip.
– deb è un normale zip, con alcuni metafile non compressi. NON È ASSOLUTAMENTE assimilabile all’exe, non sono neanche file eseguibili. Ma proprio non c’entrano niente niente.

….e UHA?????…ricordo i bei tempi in cui usavo UHA…comprimeva un sacco!!!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *