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-Zip, in 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.