ZIP - hackathonBnF/FichesFormat GitHub Wiki

ZIP (conteneur générique) Statut

Description

ZIP est un format de fichier conteneur générique permettant d'empaqueter et, éventuellement, de compresser sans perte un ensemble de fichiers. Le format utilise, dans la grande majorité des cas, l'algorithme de compression sans perte Deflate, méthode de compression simple et générique qui agit sur la redondance des données.

Le format a été créé en 1989 par Phil Katz pour son logiciel PKZIP. Dès sa création, sa spécification a été publiée (CPO-DOC) et son utilisation a été laissée libre (CPO-LIB).

Sociabilité

L'utilisation du format ZIP est massive dans tous les secteurs. Ce format a longtemps été majoritairement employé par les systèmes Windows - par un add-on à Windows 98, puis nativement à partir de Windows ME -, tandis que ceux fondés sur Unix (GNU/Linux et Mac OS) lui préféraient des paquets TAR compressés avec les algorithmes GZIP et BZIP2. Désormais, même les systèmes d'exploitation fondés sur Unix gèrent nativement le format ZIP.

Relations à d’autres formats

ZIP a été utilisé comme format conteneur pour de nombreux formats spécialisés : OpenDocument Format, EPUB, Office Open XML, programmes Java, APK, MUSX etc.

Versions

Le format, introduit en 1989, est relativement stable (CPO-STA). Des évolutions se sont succédées jusqu'à la version 6.3.9 (juillet 2020). On peut citer les évolutions majeures suivantes :

  • version 4.5 (2001) : documentation d'une version 64 bits (parfois appelée « Zip64 ») ;
  • version 5.2 (2003) : gestion du chiffrement AES ;
  • version 6.3.0 (2006) : gestion d'UTF-8 pour l'encodage des noms de fichiers.

Dans l'en-tête du fichier, on trouve deux éléments de métadonnées indiquant la version du logiciel qui a créé le fichier (version made by) et celle minimale pour en réaliser l'extraction (version needed to extract).

Contenu

Le format ZIP peut empaqueter des fichiers de n'importe quel format (on notera que la commande Unix unzip -l monfichier.zip permet de lister tous les fichiers contenus dans un conteneur ZIP). Une particularité du format ZIP est qu'il peut embarquer des fichiers ayant strictement le même chemin, ce qui peut poser des problèmes à l'extraction.

La structure du format, qui spécifie à la fin du ZIP un répertoire central listant les noms de fichiers contenus, est dictée par les contingences de la fin des années 1980, où des contenus volumineux devaient être stockés sur plusieurs disquettes. Ce répertoire permettait d'indiquer sur quelles disquettes le fichier désiré par l'utilisateur·ice était stocké. Cette structure a en outre l'avantage de permettre l'ajout de nouveaux fichiers à un ZIP existant par l'écriture à la suute des enregistrements précédents et la réécriture du répertoire central.

Chaque enregistrement étant compressé séparément, il peut avoir sa propre méthode de compression.

Pour plus de détails sur la structure du format et les algorithmes de compression utilisés, on pourra se reporter au billet suivant :

Wennborg, Hans. « Zip Files: History, Explanation and Implementation » Www.Hanshq.Net, 26 février 2020, disponible sur https://www.hanshq.net/zip.html.

Organisme de maintenance et documentation de référence

Le format ZIP est toujours maintenu par la société PKWARE qui publie une Application note régulièrement révisée comme spécification de ce format.

Une restriction du format ZIP, basée sur la version 6.3.3, limitant la méthode de compression à Deflate et interdisant le chiffrement, a été normalisée à l'ISO sous l'identifiant ISO/IEC 21320-1 en 2015. Cette norme est diffusée gratuitement.

Identifiants

Extension : .zip, .ZIP

Type MIME : application/zip

Registre Identifiant
Wikidata Q136218 et
Q26211840 pour le profil ISO
Bibliothèque du Congrès fdd000354,
fdd000355 version 6.2.0,
fdd000362 version 6.3.3, et
fdd000361 pour le profil ISO
PRONOM x-fmt/263
Just Solve the File Format Problem ZIP et Zipx

Caractéristiques techniques

Compacité (CPO-COM) : le format est compatible avec un nombre important de méthodes de compression, mais la méthode Deflate est la plus utilisée. Il est possible de n'utiliser que la fonctionnalité d'empaquetage, sans mettre en œuvre de compression. Cette option est recommandée si les données contenues ont déjà fait l'objet d'une compression. Ainsi est-il inutile de réappliquer une compression Deflate sur des fichiers MPEG-1/2 layer 3 qui ont déjà subi une compression mieux adaptée à leur type de contenu audio. En revanche, la volumétrie d'un fichier ZIP contenant des données non compressées (par exemple, fichiers TIFF sans compression, fichiers XML, etc.) sera fortement réduite. Les outils de manipulation ZIP ont pour habitude d'indiquer par l'extension .zipx que la méthode de compression est autre que Deflate.

Robustesse (CPO-ROB) : le format ZIP embarque une empreinte numérique CRC-32 des fichiers contenus. Cette fonctionnalité permet d'identifier des altérations sur tout ou partie du contenu. Si une méthode de compression a été appliquée, l'empreinte correspond à la version non compressée. Il est donc nécessaire de décompresser les contenus pour contrôler l'intégrité, ce que font généralement les logiciels qui manipulent ZIP. L'option -T de la commande zip permet de tester l'intégrité du contenu du fichier ZIP. En outre, en cas d'altération du conteneur, une option -F / --fix permet d'ignorer les enregistrements corrompus et produit un ZIP valide, donc à nouveau lisible (et une option -FF si la précédente ne fonctionne pas).

Mécanismes de protection (CPO-PRO) : la spécification définit une simple protection par mot de passe (ZipCrypto), connue pour être aisément contournable, puis, à partir de sa version 5.2, elle ajoute la norme AES. La protection est réalisée unitairement sur chaque fichier embarqué, ce qui implique qu'un fichier ZIP peut contenir des fichiers protégés et d'autres qui ne le sont pas. En outre, si le contenu du fichier est protégé, le nom du fichier reste lisible.

On notera pour mémoire le risque de sécurité introduit par des fichiers ZIP malveillants : des bombes de décompression dont la volumétrie est très réduite mais qui, une fois décompressées, occupent un espace considérable, ce qui peut geler les systèmes.

Métadonnées internes

Le répertoire central permet de conserver l'ensemble des métadonnées associés aux fichiers contenus (nom, longueur, date de modification, CRC32, poids compressé et décompressé, etc.). Il est également possible d'ajouter un commentaire (champ comment) à un niveau global et au niveau de chaque fichier contenu.

Enfin, un mécanisme d'extension (extra field) permet d'ajouter des informations mais rend leur utilisation tributaire d'un logiciel particulier. À titre d'exemple, on peut citer l'extension FWKCS (code 0x4b46) qui ajoute l'empreinte MD5 des fichiers.

Outils connus par la BnF

Bien que l'outil WinZip ait été longtemps hégémonique, il existe désormais de multiples outils qui gèrent le format ZIP, dont des outils libres comme PeaZIP ou 7-ZIP. Un ensemble d'utilitaires pour manipuler les fichiers ZIP, Info-ZIP est également disponible sur les principaux systèmes d'exploitation. Enfin, la plupart des langages, notamment Java (java.util.zip) et Python (zipfile), disposent de bibliothèques de base dédiées pour le traitement de ce format.

La commande Unix zip permet de créer, d'extraire, d'éditer, de tester (option -T) et de corriger (-F ou -FF) des fichiers ZIP.

Usage ou présence dans les collections de la BnF

Des fichiers ZIP sont présents dans les collections de la BnF - ne serait-ce que parce que ce format est la base de très nombreux autres (EPUB, DOCX, ODS, APK, etc.). En outre, tous les Paquets d'informations produits par des prestataires de numérisation et livrés à la BnF le sont sous forme de conteneurs ZIP.

⚠️ **GitHub.com Fallback** ⚠️