Articulo de referencia

ZIP (formato de archivo)

{{code|application/x-zip-compressed}} {{citation |url=https://www.iana.org/assignments/media-types/application/zip |title=Registration of a new MIME Content-Type/Subtype - appli...

ZIP es un formato de archivo comprimido que admite compresión de datos sin pérdida . Un archivo ZIP puede contener uno o más archivos o directorios comprimidos. El formato ZIP admite varios algoritmos de compresión , aunque DEFLATE es el más común.

Este formato se creó originalmente en 1989 y se implementó por primera vez en la utilidad PKZIP de PKWARE, Inc. [ 2 ] como reemplazo del formato de compresión ARC anterior , creado por Thom Henderson. El formato ZIP fue rápidamente compatible con numerosas utilidades de software, además de PKZIP. El formato ZIP es compatible de forma nativa con los principales sistemas operativos (por ejemplo, Android , ChromeOS , iOS , Linux , macOS y Windows ). Generalmente, está integrado en la aplicación de gestión de archivos del sistema operativo.

Los archivos ZIP generalmente usan las extensiones de archivo .zip o .ZIP y el tipo de medio MIME . [ 1 ] ZIP es utilizado como formato de archivo base por muchos programas, generalmente bajo un nombre diferente. Al navegar por un sistema de archivos a través de una interfaz de usuario, los íconos gráficos que representan archivos ZIP a menudo aparecen como un documento u otro objeto que muestra prominentemente una cremallera .application/zip

Historia

El formato de archivo .ZIP fue diseñado por Phil Katz de PKWARE, Inc. y Gary Conway de Infinity Design Concepts. El formato se creó después de que Systems Enhancement Associates (SEA) presentara una demanda contra PKWARE alegando que los productos de archivado de esta última, llamados PKARC, eran derivados del sistema de archivado ARC de SEA. [ 3 ] El nombre "zip" (que significa "mover a alta velocidad") fue sugerido por el amigo de Katz, Robert Mahoney. [ 4 ] Querían dar a entender que su producto sería más rápido que ARC y otros formatos de compresión de la época. [ 4 ] La primera versión conocida de la Especificación del Formato de Archivo .ZIP se publicó por primera vez como parte del paquete PKZIP 0.9 en el archivo APPNOTE.TXT en 1989. Al distribuir el formato de archivo zip dentro de APPNOTE.TXT, la compatibilidad con el formato de archivo zip se extendió ampliamente en Internet durante la década de 1990. [ 5 ]

PKWARE e Infinity Design Concepts hicieron un comunicado de prensa conjunto el 14 de febrero de 1989, liberando el formato de archivo .ZIP al dominio público . [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ]

Historial de versiones

La especificación del formato de archivo .ZIP tiene su propia numeración de versión, que no necesariamente coincide con la de la herramienta PKZIP, especialmente con PKZIP 6 o posterior. En varias ocasiones, PKWARE ha añadido funciones preliminares que permiten a los productos PKZIP extraer archivos comprimidos utilizando funciones avanzadas, pero los productos PKZIP que crean dichos archivos no están disponibles hasta la siguiente versión principal. Otras empresas u organizaciones dan soporte a las especificaciones de PKWARE a su propio ritmo.

La especificación del formato de archivo .ZIP se denomina formalmente "APPNOTE - Especificación del formato de archivo .ZIP" y se publica en el sitio web PKWARE.com desde finales de la década de 1990. [ 11 ] Varias versiones de la especificación no se publicaron. Las especificaciones de algunas características, como la compresión BZIP2 , la especificación de cifrado robusto y otras, fueron publicadas por PKWARE unos años después de su creación. La URL de la especificación en línea cambió varias veces en el sitio web de PKWARE.

Resumen de los principales avances en las distintas versiones del software y/o especificación PKWARE:

  • 2.0: (1993) [ 1 ] Las entradas de archivo se pueden comprimir con DEFLATE y utilizar el cifrado PKWARE tradicional (ZipCrypto).
  • 2.1: (1996) Soporte para compresión Deflate64 (mencionado en la APPNOTE 6.1.0 publicada mucho después). [ 12 ] Es posible que la APPNOTE no se haya publicado para la versión 2.1.
  • 2.5: Compresión de implosión de PKWARE DCL. [ 12 ] Es posible que la nota de aplicación no se haya publicado para la versión 2.5.
  • 2.5: Soporte para compresión Deflate64 (mencionado en manuales de usuario posteriores, por ejemplo, en 2004). [ 13 ]
  • 4.0: (2000) Soporte de compresión Deflate64 (según información proporcionada por Jim Peterson, Científico Jefe de PKWARE, a la Biblioteca del Congreso; y APPNOTE 4.0). [ 14 ] [ 15 ]
  • 4.5: (2001) [ 16 ] Formato zip de 64 bits documentado.
  • 4.6: (2001) Compresión BZIP2 (no publicada en línea hasta la publicación de la NOTA DE APLICACIÓN 5.2)
  • 5.0: (2002) SES: DES , Triple DES , RC2 , RC4 compatibles para cifrado (no publicado en línea hasta la publicación de la NOTA DE APLICACIÓN 5.2)
  • 5.2: (2003) [ 17 ] [ 18 ] Compatibilidad con cifrado AES para SES (definido en la NOTA DE APLICACIÓN 5.1 que no se publicó en línea) y AES de WinZip ("AE-x"); versión corregida de RC2-64 compatible con el cifrado SES.
  • 6.1: (2004) [ 12 ] Almacenamiento documentado de certificados.
  • 6.2.0: (2004) [ 19 ] Cifrado de directorio central documentado.
  • 6.3.0: (2006) [ 20 ] Almacenamiento documentado de nombres de archivo Unicode ( UTF-8 ). Lista ampliada de algoritmos de compresión compatibles ( LZMA , PPMd+ ), algoritmos de cifrado ( Blowfish , Twofish ) y hashes.
  • 6.3.1: (2007) [ 21 ] Valores hash estándar corregidos para SHA-256/384/512.
  • 6.3.2: (2007) [ 22 ] Método de compresión documentado 97 ( WavPack ).
  • 6.3.3: (2012) [ 23 ] Cambios en el formato del documento para facilitar la referencia a la Nota de aplicación PKWARE desde otras normas utilizando métodos como el Informe explicativo de referencia (RER) de JTC 1 según lo indicado por JTC 1/SC 34 N 1621.
  • 6.3.4: (2014) [ 24 ] Actualiza la dirección de la oficina de PKWARE, Inc.
  • 6.3.5: (2018) [ 25 ] Métodos de compresión documentados 16, 96 y 99, época y precisión de marca de tiempo DOS, campos adicionales añadidos para claves y descifrado, así como errores tipográficos y aclaraciones.
  • 6.3.6: (2019) [ 26 ] Error tipográfico corregido.
  • 6.3.7: (2020) [ 27 ] Se agregó el ID 20 del método de compresión Zstandard .
  • 6.3.8: (2020) [ 28 ] Se movió el ID del método de compresión Zstandard de 20 a 93, dejando obsoleto el anterior. Se documentaron los ID de método 94 y 95 ( MP3 y XZ respectivamente).
  • 6.3.9: (2020) [ 29 ] Se corrigió un error tipográfico en la descripción de Alineación de flujo de datos.
  • 6.3.10: (2022) [ 30 ] Se agregaron varios valores de atributos de z/OS para el APÉNDICE B. Se agregaron varias asignaciones de campos adicionales de terceros.

WinZip , a partir de la versión 12.1, utiliza la extensión .zipx para los archivos ZIP que emplean métodos de compresión más recientes que DEFLATE; concretamente, los métodos BZip, LZMA, PPMd, Jpeg y Wavpack. Los dos últimos se aplican a los tipos de archivo correspondientes cuando se selecciona la compresión "Mejor método". [ 31 ] [ 32 ]

Normalización

En abril de 2010, el JTC 1 de ISO/IEC inició una votación para determinar si se debía iniciar un proyecto para crear un formato estándar internacional ISO/IEC compatible con ZIP. [ 33 ] El proyecto propuesto, titulado Document Packaging , contemplaba un "formato de archivo comprimido mínimo" compatible con ZIP, adecuado para su uso con varios estándares existentes, incluidos OpenDocument , Office Open XML y EPUB . Resolvería problemas como la necesidad de un estándar formal, la variedad de extensiones de ZIP, la inconveniencia de que una tecnología utilizada para estándares abiertos pudiera tener extensiones propietarias o patentes "submarinas" (es decir, que podrían surgir inesperadamente), la necesidad de una mejor internacionalización y el deseo de no fragmentar aún más la tecnología al pretender proporcionar una especificación alternativa al documento PKWARE APPNOTE.

En 2015, se publicó la norma ISO/IEC 21320-1 "Archivo contenedor de documentos - Parte 1: Núcleo", que establece que "Los archivos contenedores de documentos son archivos Zip conformes", haciendo referencia normativa al documento PKWARE APPNOTE. Requiere las siguientes restricciones principales del formato de archivo ZIP: [ 34 ]

  • Los archivos en archivos ZIP solo pueden almacenarse sin comprimir o utilizando la compresión "deflate" (es decir, el método de compresión puede contener el valor "0" - almacenado o "8" - deflate). La patente del método de compresión "deflate" principal expiró a finales de 2010. [ 35 ]
  • Las funciones de cifrado están prohibidas.
  • Las funciones de firma digital (de SES) están prohibidas.
  • Las funciones de "datos parcheados" (de PKPatchMaker) están prohibidas.
  • Los archivos no pueden abarcar varios volúmenes ni estar segmentados.

Diseño

Los archivos ZIP son archivos comprimidos que almacenan varios archivos. ZIP permite comprimir los archivos mediante diversos métodos, además de almacenarlos sin comprimirlos. Cada archivo se almacena por separado, lo que permite comprimir diferentes archivos dentro del mismo archivo comprimido con distintos métodos. Dado que los archivos en un archivo ZIP se comprimen individualmente, es posible extraerlos o añadir otros nuevos sin aplicar compresión ni descompresión a todo el archivo. Esto contrasta con el formato de los archivos tar comprimidos , para los que este tipo de procesamiento de acceso aleatorio no es fácilmente factible.

Un directorio se coloca al final de un archivo ZIP. Este directorio identifica qué archivos contiene el ZIP y dónde se encuentra cada archivo dentro del mismo. Esto permite a los lectores de ZIP cargar la lista de archivos sin necesidad de leer todo el archivo ZIP. Los archivos ZIP también pueden incluir datos adicionales que no están relacionados con el archivo ZIP. Esto permite convertir un archivo ZIP en un archivo autoextraíble (una aplicación que descomprime los datos que contiene) al anteponer el código del programa al archivo ZIP y marcarlo como ejecutable. Almacenar el catálogo al final también permite ocultar un archivo ZIP al agregarlo a un archivo inofensivo, como un archivo de imagen GIF.

El formato .ZIP utiliza CRC-32 e incluye dos copias de los metadatos de cada entrada para brindar mayor protección contra la pérdida de datos. El algoritmo CRC-32 fue aportado por David Schwaderer y se puede encontrar en su libro "C Programmers Guide to NetBIOS", publicado por Howard W. Sams & Co. Inc. [ 36 ].

Estructura

Diseño interno ZIP-64

Un archivo ZIP se identifica correctamente por la presencia de un registro de fin de directorio central , ubicado al final de la estructura del archivo para facilitar la adición de nuevos archivos. Si este registro indica que el archivo no está vacío, el nombre de cada archivo o directorio dentro del archivo debe especificarse en una entrada del directorio central , junto con otros metadatos sobre la entrada y un desplazamiento dentro del archivo ZIP que apunte a los datos de la entrada. Esto permite obtener una lista de archivos del archivo con relativa rapidez, ya que no es necesario leer todo el archivo para ver la lista. Las entradas dentro del archivo ZIP también incluyen esta información, por redundancia, en un encabezado de archivo local . Dado que se pueden añadir archivos a los archivos ZIP, solo son válidos los archivos especificados en el directorio central al final del archivo. No es válido buscar encabezados de archivo locales en un archivo ZIP (excepto en el caso de archivos dañados), ya que el directorio central puede indicar que algunos archivos se han eliminado y otros se han actualizado.

Por ejemplo, podemos comenzar con un archivo ZIP que contenga los archivos A, B y C. A continuación, se elimina el archivo B y se actualiza el C. Esto se puede lograr simplemente añadiendo un nuevo archivo C al final del archivo ZIP original y agregando un nuevo directorio central que solo incluya el archivo A y el nuevo archivo C. Cuando se diseñó ZIP, la transferencia de archivos mediante disquetes era común, pero escribir en los discos era muy lento. Si se tenía un archivo ZIP grande, que posiblemente abarcara varios discos, y solo se necesitaba actualizar algunos archivos, en lugar de leer y reescribir todos los archivos, sería mucho más rápido leer el antiguo directorio central, añadir los nuevos archivos y luego añadir un directorio central actualizado.

El orden de las entradas de archivo en el directorio central no tiene por qué coincidir con el orden de las entradas de archivo en el archivo comprimido.

Cada entrada almacenada en un archivo ZIP comienza con una cabecera local que contiene información sobre el archivo, como el comentario, el tamaño y el nombre, seguida de campos de datos adicionales opcionales y, a continuación, los datos del archivo, que pueden estar comprimidos o cifrados. Los campos de datos adicionales son clave para la extensibilidad del formato ZIP. Estos campos se utilizan para admitir el formato ZIP64, el cifrado AES compatible con WinZip, los atributos de archivo y las marcas de tiempo de archivos NTFS o Unix de mayor resolución. Es posible añadir otras extensiones mediante el campo adicional. Las herramientas ZIP deben, según la especificación, ignorar los campos adicionales que no reconozcan.

El formato ZIP utiliza "firmas" específicas de 4 bytes para indicar las distintas estructuras del archivo. Cada entrada del archivo está marcada por una firma específica. El final del registro del directorio central se indica con su firma específica, y cada entrada del directorio central comienza con la firma de encabezado de archivo central de 4 bytes .

La especificación ZIP no incluye marcadores BOF ni EOF. Tradicionalmente, lo primero que contiene un archivo ZIP es una entrada ZIP, que se identifica fácilmente por la firma de su encabezado de archivo local . Sin embargo, esto no siempre es así, ya que la especificación ZIP no lo exige; en particular, un archivo autoextraíble comenzará con un encabezado de archivo ejecutable.

Las herramientas que leen correctamente los archivos ZIP deben buscar la firma del registro del directorio central al final y, posteriormente, los demás registros del directorio central indicados. No deben buscar entradas desde la parte superior del archivo ZIP, ya que (como se mencionó anteriormente en esta sección) solo el directorio central especifica dónde comienza un fragmento de archivo y que este no ha sido eliminado. El escaneo podría generar falsos positivos, dado que el formato no prohíbe que haya otros datos entre los fragmentos, ni que los flujos de datos del archivo contengan dichas firmas. Sin embargo, las herramientas que intentan recuperar datos de archivos ZIP dañados probablemente buscarán firmas de encabezado de archivo locales en el archivo; esto se complica debido a que el tamaño comprimido de un fragmento de archivo puede almacenarse después del fragmento, lo que dificulta el procesamiento secuencial.

La mayoría de las firmas terminan con el entero corto 0x4b50, que se almacena en orden little-endian . Visto como una cadena ASCII , se lee "PK", las iniciales del inventor Phil Katz. Por lo tanto, cuando se visualiza un archivo ZIP en un editor de texto, los dos primeros bytes del archivo suelen ser "PK". (Los archivos ZIP autoextraíbles de DOS, OS/2 y Windows tienen un archivo EXE antes del ZIP, por lo que comienzan con "MZ"; los archivos ZIP autoextraíbles para otros sistemas operativos pueden ir precedidos de un código ejecutable para extraer el contenido del archivo en esa plataforma).

La especificación .ZIP también admite la distribución de archivos comprimidos en varios sistemas de archivos. Originalmente concebida para almacenar archivos ZIP grandes en varios disquetes , esta función ahora se utiliza para enviar archivos ZIP por partes por correo electrónico o a través de otros medios de transporte o soportes extraíbles.

El sistema de archivos FAT de DOS tiene una resolución de marca de tiempo de solo dos segundos; los registros de archivos ZIP imitan esto. Como resultado, la resolución de marca de tiempo integrada de los archivos en un archivo ZIP es de solo dos segundos, aunque se pueden usar campos adicionales para almacenar marcas de tiempo más precisas. El formato ZIP no tiene en cuenta la zona horaria , por lo que las marcas de tiempo solo tienen sentido si se conoce la zona horaria en la que se crearon.

En septiembre de 2006, PKWARE publicó una revisión de la especificación ZIP que permitía el almacenamiento de nombres de archivo utilizando UTF-8 , añadiendo finalmente compatibilidad con Unicode a ZIP. [ 20 ]

Encabezados de archivo

Todos los valores multibyte en el encabezado se almacenan en orden de bytes little-endian . Todos los campos de longitud indican la longitud en bytes.

Encabezado de archivo local

El campo extra contiene diversos datos opcionales, como atributos específicos del sistema operativo. Está dividido en registros, cada uno con una firma de al menos 16 bits y una longitud de 16 bits. Por ejemplo, un registro del campo extra de un archivo local ZIP64 tiene la firma 0x0001 y una longitud de 16 bytes (o más), de modo que pueden seguir dos valores de 64 bits (los tamaños sin comprimir y comprimido). Otra extensión de archivo local común es 0x5455 (o "UT"), que contiene marcas de tiempo UTC UNIX de 32 bits.

A continuación, se muestran inmediatamente los datos comprimidos.

descriptor de datos

Si el bit en el desplazamiento 3 (0x08) del campo de indicadores de propósito general está activado, entonces el CRC-32 y los tamaños de archivo no se conocen cuando se escribe el encabezado. Si el archivo está en formato Zip64, los campos de tamaño comprimido y sin comprimir tienen 8 bytes de longitud en lugar de 4 bytes (consulte la sección 4.3.9.2 [ 38 ] ). Los campos equivalentes en el encabezado local (o en el campo extra de información extendida Zip64 en el caso de archivos en formato Zip64) se rellenan con ceros, y el CRC-32 y el tamaño se agregan en una estructura de 12 bytes (opcionalmente precedida por una firma de 4 bytes) inmediatamente después de los datos comprimidos:

Encabezado del archivo de directorio central (CDFH)

La entrada del encabezado del archivo del directorio central es una forma ampliada del encabezado local:

Fin del registro del directorio central (EOCD)

Después de todas las entradas del directorio central, llega el registro de fin del directorio central (EOCD), que marca el final del archivo ZIP:

Este ordenamiento permite crear un archivo ZIP en una sola pasada, pero el directorio central también se coloca al final del archivo para facilitar la eliminación de archivos de archivos de varias partes (por ejemplo, "varios disquetes") , como se mencionó anteriormente.

Métodos de compresión

La especificación del formato de archivo .ZIP documenta los siguientes métodos de compresión: Almacenar (sin compresión), Reducir ( LZW ), Reducir (niveles 1–4; LZ77 + probabilístico), Implosionar, Deflate, Deflate64, bzip2 , LZMA , Zstandard , WavPack , PPMd y una variante LZ77 proporcionada por la instrucción CMPSC de IBM z/OS . [ 39 ] [ 30 ] El método de compresión más utilizado es DEFLATE , que se describe en IETF RFC 1951 . 

Otros métodos mencionados, pero no documentados en detalle en la especificación, incluyen: PKWARE DCL Implode (antiguo IBM TERSE), nuevo IBM TERSE , IBM LZ77 z Architecture (PFS) y una variante JPEG. Se reservó un método "Tokenizar" para un tercero, pero nunca se le dio soporte. [ 25 ]

PKWARE abusa del término Implode : el Implode de DCL/TERSE es distinto del antiguo Implode de PKZIP, predecesor de Deflate. El Implode de DCL no está documentado en parte debido a su naturaleza propietaria, propiedad de IBM, pero Mark Adler ha proporcionado un descompresor llamado "blast" junto con zlib. [ 40 ]

Cifrado

ZIP admite un sistema de cifrado simétrico simple basado en contraseña , generalmente conocido como ZipCrypto. Está documentado en la especificación ZIP y se sabe que tiene graves fallos. En particular, es vulnerable a ataques de texto plano conocido , que en algunos casos se ven agravados por implementaciones deficientes de generadores de números aleatorios . [ 5 ] Los ordenadores que ejecutan Microsoft Windows nativo sin compresores de terceros pueden abrir, pero no crear, archivos ZIP cifrados con ZipCrypto, pero no pueden extraer el contenido de archivos que utilicen otro cifrado. [ 41 ]

Las nuevas características, incluidos los nuevos métodos de compresión y cifrado (por ejemplo, AES ), se han documentado en la Especificación del formato de archivo ZIP desde la versión 5.2. Un estándar abierto basado en AES desarrollado por WinZip ("AE-x" en APPNOTE) también es utilizado por 7-Zip y Xceed , pero algunos proveedores utilizan otros formatos. [ 42 ] PKWARE SecureZIP (SES, propietario) también admite los métodos de cifrado RC2, RC4, DES, Triple DES, cifrado y autenticación basados ​​en certificados digitales ( X.509 ) y cifrado de encabezado de archivo. Sin embargo, está patentado (véase §  Controversia sobre el cifrado fuerte ). [ 43 ]

El cifrado de nombres de archivo se introduce en la especificación de formato de archivo .ZIP 6.2, que cifra los metadatos almacenados en la sección del directorio central de un archivo comprimido, pero las secciones del encabezado local permanecen sin cifrar. Un compresor compatible puede falsificar los datos del encabezado local al usar el cifrado del directorio central. A partir de la versión 6.2 de la especificación, los campos Método de compresión y Tamaño comprimido dentro del encabezado local aún no están enmascarados.

ZIP64

El formato .ZIP original tenía un límite de 4 GiB ( 2³² bytes ) en varios aspectos (tamaño sin comprimir de un archivo, tamaño comprimido de un archivo y tamaño total del archivo), así como un límite de 65 535 ( 2¹⁶1 ) entradas en un archivo ZIP. En la versión 4.5 de la especificación (que no es la misma que la v4.5 de ninguna herramienta en particular), PKWARE introdujo las extensiones de formato "ZIP64" para sortear estas limitaciones, aumentando los límites a 16 EiB ( 2⁶⁴ bytes ). En esencia, utiliza una entrada de directorio central "normal" para un archivo, seguida de una entrada de directorio "zip64" opcional, que contiene los campos más grandes. [ 44 ]  

El formato del encabezado de archivo local (LOC) y del encabezado de archivo de directorio central (CDFH) es el mismo en ZIP y ZIP64. Sin embargo, ZIP64 especifica un campo adicional que el compresor puede agregar a dichos registros, con el fin de almacenar valores que no caben en los registros LOC o CDFH clásicos. Para indicar que los valores reales se almacenan en campos adicionales de ZIP64, se les asigna el valor 0xFFFF o 0xFFFFFFFF en el registro LOC o CDFH correspondiente. Si una entrada no cabe en el registro LOC o CDFH clásico, solo esa entrada debe trasladarse a un campo adicional de ZIP64. Las demás entradas pueden permanecer en el registro clásico. Por lo tanto, no todas las entradas que se muestran en la siguiente tabla se almacenarán en un campo adicional de ZIP64. Sin embargo, si aparecen, su orden debe ser el que se muestra en la tabla.

Por otro lado, el formato de EOCD para ZIP64 es ligeramente diferente de la versión ZIP normal. [ 37 ]

El EOCD64 no es necesariamente el último registro del archivo. Le sigue un localizador de fin de directorio central de 20 bytes y el registro EOCD clásico.

El Explorador de archivos en Windows XP no admite ZIP64, pero el Explorador en Windows Vista y versiones posteriores sí. Asimismo, algunas bibliotecas de extensión admiten ZIP64, como DotNetZip, QuaZIP [ 45 ] e IO::Compress::Zip en Perl. El zipfile integrado de Python lo admite desde la versión 2.5 y lo usa por defecto desde la versión 3.4. [ 46 ] El java.util.zip integrado de OpenJDK admite ZIP64 desde la versión Java 7. [ 47 ] La API de Java de Android admite ZIP64 desde Android 6.0. [ 48 ] La utilidad de archivo de Mac OS Sierra no admite ZIP64 y puede crear archivos corruptos cuando se requiere ZIP64. [ 49 ] Sin embargo, el comando ditto incluido en Mac OS descomprime archivos ZIP64. [ 50 ] Las versiones más recientes de Mac OS incluyen las herramientas de línea de comandos zip y unzip de info-zip que sí admiten Zip64: para verificarlo, ejecute zip -v y busque "ZIP64_SUPPORT".

Combinación con otros formatos de archivo

El formato de archivo .ZIP permite que un comentario contenga hasta 65 535 ( 2¹⁶1 ) bytes de datos al final del archivo, después del directorio central. [ 37 ] Además, debido a que el directorio central especifica el desplazamiento de cada archivo en el archivo comprimido con respecto al inicio, es posible que la primera entrada del archivo comience en un desplazamiento distinto de cero, aunque algunas herramientas podrían no procesar archivos comprimidos que no comiencen con una entrada de archivo en el desplazamiento cero. El programa gzip , por ejemplo, puede extraer una entrada de un archivo .ZIP si se encuentra en el desplazamiento cero.

Esto permite que aparezcan datos arbitrarios en el archivo, tanto antes como después de los datos del archivo ZIP, y que este pueda ser leído por una aplicación ZIP. Como consecuencia, es posible crear un archivo que sea a la vez un archivo ZIP funcional y de otro formato, siempre que este último admita datos arbitrarios al principio, al final o en la mitad. Los archivos autoextraíbles (SFX), compatibles con WinZip, aprovechan esta característica, ya que son archivos ejecutables ( .exe ) que cumplen con la especificación PKZIP AppNote.txt y pueden ser leídos por herramientas o bibliotecas ZIP compatibles.

Esta propiedad del formato .ZIP , y del formato JAR , que es una variante de ZIP, puede explotarse para ocultar contenido malicioso (como clases Java dañinas) dentro de un archivo aparentemente inofensivo, como una imagen GIF subida a la web. Se ha demostrado que esta vulnerabilidad, conocida como GIFAR , es un ataque eficaz contra aplicaciones web como Facebook. [ 51 ]

Límites

El tamaño mínimo de un archivo .ZIP es de 22 bytes. Un archivo zip vacío de este tipo contiene únicamente un registro de fin de directorio central (EOCD):50 4B 05 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

El tamaño máximo tanto para el archivo comprimido como para los archivos individuales que contiene es de 4.294.967.295 bytes ( 2³² − 1 bytes, o 4 GiB menos 1 byte) para ZIP estándar. Para ZIP64, el tamaño máximo es de 18.446.744.073.709.551.615 bytes (2⁶⁴ 1 bytes ,  o 16 EiB menos  1 byte). [ 52 ]

Extensiones patentadas

Campo adicional

El formato de archivo .ZIP incluye un campo adicional en las cabeceras, que permite almacenar datos extra no definidos por las especificaciones ZIP existentes y que permite a los compresores compatibles que no reconocen estos campos omitirlos sin problemas. Los identificadores de cabecera del 0 al 31 están reservados para uso de PKWARE. Los identificadores restantes pueden ser utilizados por terceros para fines propios.

Controversia sobre el cifrado robusto

Cuando se lanzó la versión beta pública de WinZip 9.0 en 2003, WinZip introdujo su propio cifrado AES-256 , utilizando un formato de archivo diferente, junto con la documentación para la nueva especificación. [ 53 ] Los estándares de cifrado en sí no eran propietarios , pero PKWARE no había actualizado APPNOTE.TXT para incluir la Especificación de Cifrado Fuerte (SES) desde 2001, que había sido utilizada por las versiones 5.0 y 6.0 de PKZIP. El consultor técnico de WinZip, Kevin Kearney, y el gerente de producto de StuffIt, Mathew Covington, acusaron a PKWARE de retener SES, pero el director de tecnología de PKZIP, Jim Peterson, afirmó que el cifrado basado en certificados aún estaba incompleto.

En otra medida controvertida, PKWare solicitó una patente el 16 de julio de 2003 que describía un método para combinar ZIP y cifrado robusto para crear un archivo seguro. [ 54 ]

Al final, PKWARE y WinZip acordaron brindar soporte a los productos del otro. El 21 de enero de 2004, PKWARE anunció el soporte del formato de compresión AES basado en WinZip. [ 55 ] En una versión posterior de WinZip beta, pudo admitir archivos ZIP basados ​​en SES. [ 56 ] PKWARE finalmente publicó la versión 5.2 de la Especificación del formato de archivo .ZIP para el público, que documentaba SES. El proyecto de software libre 7-Zip también admite AES, pero no SES en archivos ZIP (al igual que su puerto POSIX p7zip ).

Al usar el cifrado AES en WinZip, el método de compresión siempre se establece en 99, y el método de compresión real se almacena en un campo de datos adicionales de AES. [ 57 ] En cambio, la Especificación de Cifrado Fuerte almacena el método de compresión en el segmento de encabezado de archivo básico de Encabezado Local y Directorio Central, a menos que se utilice el Cifrado de Directorio Central para enmascarar/cifrar metadatos.

Implementación

Existen numerosas herramientas y bibliotecas para archivos .ZIP, compatibles con diversos entornos de programación. Entre las licencias utilizadas se incluyen software propietario y gratuito . WinZip , WinRAR , Info-ZIP , ZipGenius , 7-Zip , PeaZip y B1 Free Archiver son herramientas .ZIP muy conocidas , disponibles para diversas plataformas. Algunas de ellas cuentan con interfaces de biblioteca o de programación.

Algunas bibliotecas de desarrollo con licencia de código abierto son libzip , libarchive e Info-ZIP . Para Java: Java Platform, Standard Edition contiene el paquete "java.util.zip" para manejar archivos .ZIP estándar ; la biblioteca Zip64File admite específicamente archivos grandes (mayores de 4 GiB) y trata los archivos .ZIP mediante acceso aleatorio; y la herramienta Apache Ant contiene una implementación más completa publicada bajo la Licencia de Software Apache . 

Las implementaciones de Info-ZIP del formato .ZIP añaden compatibilidad con características del sistema de archivos Unix, como identificadores de usuario y grupo, permisos de archivo y enlaces simbólicos. La implementación de Apache Ant reconoce estas características hasta el punto de poder crear archivos con permisos Unix predefinidos. Las implementaciones de Info-ZIP también saben cómo utilizar las capacidades de corrección de errores integradas en el formato de compresión .ZIP . Algunos programas no las reconocen y fallarán al procesar un archivo con errores.

Las herramientas Info-ZIP para Windows también admiten permisos del sistema de archivos NTFS e intentarán convertir los permisos NTFS a permisos Unix o viceversa al extraer archivos. Esto puede dar lugar a combinaciones potencialmente no deseadas, como la creación de archivos .exe en volúmenes NTFS con permisos de ejecución denegados.

Las versiones de Microsoft Windows han incluido soporte para la compresión .ZIP en el Explorador desde que se lanzó el paquete Microsoft Plus! para Windows 98. Microsoft llama a esta función "Carpetas comprimidas". El soporte nativo se agregó a partir del año 2000 en Windows ME . No todas las funciones .ZIP son compatibles con la capacidad de Carpetas comprimidas de Windows. Por ejemplo, el cifrado no es compatible en la edición Windows 10 Home, [ 58 ] aunque puede descifrar. La codificación de entrada Unicode no es compatible hasta Windows 7 , mientras que los archivos divididos y extendidos no son legibles ni escribibles por la función Carpetas comprimidas, ni tampoco es compatible el cifrado AES. [ 59 ] El soporte .zip de Windows surgió de la adquisición de "VisualZip", escrito por Dave Plummer . [ 60 ] [ 61 ] [ 62 ]

Apple incluyó soporte integrado para ZIP en Mac  OS  X 10.3 (a través de BOMArchiveHelper, ahora Archive Utility ) y versiones posteriores. La mayoría de los sistemas operativos gratuitos cuentan con soporte integrado para ZIP de forma similar a Windows y macOS.

OpenDocument Format (ODF) comenzó a usar el formato de archivo zip en 2005, ODF es un formato abierto para documentos de oficina de todo tipo, este es el formato de archivo predeterminado utilizado en Collabora Online , LibreOffice y otros. [ 63 ] Microsoft Office comenzó a usar el formato de archivo zip en 2006 para sus archivos Office Open XML .docx, .xlsx, .pptx, etc., que se convirtió en el formato de archivo predeterminado con Microsoft Office 2007 .

Cuestiones de internacionalización

Las versiones del formato anteriores a la 6.3.0 no admitían el almacenamiento de nombres de archivo en Unicode . [ 64 ] Según el estándar, [ 64 ] los nombres de archivo deberían almacenarse en la codificación CP437 , que es estándar para el IBM PC , [ 64 ] pero en la práctica, los archivadores de DOS utilizaban la codificación de caracteres instalada del sistema . El archivador integrado de Windows hasta la versión 11 también utilizaba la codificación "ANSI" del sistema correspondiente al idioma del sistema seleccionado para la compatibilidad con versiones anteriores de DOS al crear archivos.

Posteriormente, el estándar se actualizó para incluir dos opciones para almacenar nombres de archivo en Unicode: 1) cuando el bit 11 en el campo de indicador de bit de propósito general está activado, el nombre de archivo en el campo "Nombre de archivo" del encabezado debe considerarse como UTF-8 en lugar de una codificación de un solo byte, y 2) se agregó el campo adicional de ruta Unicode para almacenar el nombre de archivo en codificación UTF-8. [ 64 ] El siguiente algoritmo tiene en cuenta tanto el nuevo campo "nombre de archivo" como las prácticas históricas para extraer correctamente archivos con nombres que contienen caracteres no ingleses: [ 65 ]

  1. Compruebe la presencia del campo adicional de ruta Unicode y, si existe, utilice el nombre de archivo que contiene, codificado en UTF-8.
  2. Compruebe la presencia del indicador 11 en el campo de indicador de bits de propósito general y, si está activado, considere que la codificación del nombre de archivo en el campo "Nombre de archivo" es UTF-8.
  3. Si el campo "sistema operativo de empaquetado" contiene el valor 11 (NTFS, Windows) y el valor del campo "versión del empaquetador" es mayor o igual a 20, considere que la codificación del nombre de archivo en el campo "nombre de archivo" es la codificación ANSI (Windows) correspondiente a la configuración regional del sistema, si se puede determinar; de lo contrario, utilice CP437.
  4. Si el campo "sistema operativo de empaquetado" contiene el valor 0 (FAT, DOS) y el valor del campo "versión del empaquetador" está entre 25 y 40 inclusive, considere que la codificación del nombre de archivo en el campo "Nombre de archivo" del encabezado local es la codificación ANSI (Windows) y en el campo "Nombre de archivo" del encabezado central es la codificación OEM (DOS), correspondiente a la configuración regional del sistema si se puede determinar; de lo contrario, utilice CP437.
  5. En otros casos, si el campo "Empaquetado del sistema operativo" contiene el valor 0 (FAT, DOS), 6 (HPFS, OS/2) o 11 (NTFS, Windows), considere que la codificación del nombre de archivo en el campo "Nombre de archivo" es la codificación OEM (DOS), que corresponde a la configuración regional del sistema si se puede determinar; de lo contrario, utilice CP437.
  6. En todos los demás casos, considere que la codificación del nombre de archivo en el campo "Nombre de archivo" es la codificación del sistema operativo en el que se está ejecutando el descompresor.

Si se utiliza una codificación incorrecta para decodificar los nombres de archivo, los usuarios terminan viendo un conjunto caótico de caracteres, conocido como " mojibake ", en lugar de letras del alfabeto nacional. El algoritmo anterior intenta evitar este resultado. En lugar de la "configuración regional del sistema" y la "codificación del sistema", algunos programas permiten al usuario seleccionar la codificación no Unicode deseada.

En 2016, este problema se resolvió en el gestor de archivos y archivados far2l para Linux, BSD y Mac. [ 66 ] En 2024, se añadió una solución similar [ 67 ] a la versión de 7zip utilizada en la distribución Debian y sus derivados, y a la versión de unzip utilizada en la distribución Ubuntu y sus derivados. [ 65 ]

Legado

Existen numerosos estándares y formatos que incluyen "zip" en su nombre. Por ejemplo, zip es distinto de gzip , definido en el RFC 1952 de la IETF . Tanto zip como gzip utilizan principalmente el algoritmo DEFLATE para la compresión. Asimismo, el formato ZLIB ( RFC 1950 de la IETF ) también utiliza el algoritmo de compresión DEFLATE, pero especifica encabezados diferentes para la comprobación de errores y consistencia. Otros formatos y programas comunes con nombres similares y formatos nativos distintos son 7-Zip , bzip2 y rzip .  

Preocupaciones

El factor de compresión máximo teórico para un flujo DEFLATE sin procesar es de aproximadamente 10³² a uno, [ 68 ] pero al explotar el formato ZIP de maneras no previstas, se pueden construir archivos ZIP con relaciones de compresión de miles de millones a uno. Estas bombas ZIP se descomprimen en tamaños extremadamente grandes, saturando la capacidad de la computadora en la que se descomprimen. [ 69 ]

Véase también

Referencias

  1. 1 2 3 Registro de un nuevo tipo/subtipo de contenido MIME: application/zip , IANA , 20 de julio de 1993 , consultado el 5 de enero de 2012
  2. "Phillip Katz, pionero del software informático, 37 años" . The New York Times1 de mayo de 2000. Consultado el 14 de junio de 2009 .
  3. Murray, Matt; Tannenbaum, Jeffrey A. (15 de agosto de 1997). «El ascenso y la caída de una estrella del software; Phil Katz amaba el código... y el licor» . The Wall Street Journal ( edición en línea). Archivado del original el 4 de marzo de 2016. URL alternativa actualizada el 19/06/2000.
  4. 1 2 "La biblioteca documental de BBS" . www.bbsdocumentary.com . Consultado el 25 de septiembre de 2020 .
  5. 1 2 Stay, Michael. "Ataques ZIP con texto plano conocido reducido" (PDF) . Math.ucr.edu . Archivado del original (PDF) el 28 de octubre de 2017. Recuperado el 9 de septiembre de 2017 .
  6. Brian Livingston (8 de septiembre de 2003), PKZip debe abrirse , consultado el 5 de enero de 2012 , El formato de archivo ZIP se entrega libremente al dominio público y no puede ser reclamado ni legal ni moralmente por ningún individuo, entidad o empresa.
  7. ↑ ¿ De dónde vienen los archivos Zip? , Infinity Design Concepts, Inc., archivado del original el 20 de noviembre de 2012 , consultado el 5 de enero de 2012
  8. Comunicado de prensa , 1989 , consultado el 5 de enero de 2012
  9. Nuestro fundador - Phil Katz , PKWARE, Inc., archivado del original el 1 de octubre de 2010 , recuperado el 5 de enero de 2012.
  10. Gareth Horton; Rob Weir; Alex Brown (2 de noviembre de 2010), sc34-wg1 , consultado el 5 de enero de 2012
  11. Nota de aplicación de .ZIP , consultada el 20 de julio de 2012
  12. 1 2 3 Archivo: APPNOTE - Especificación del formato de archivo .ZIP Versión: 6.1.0 - Notificación de cambio – Revisado: 20/01/2004 , 19 de agosto de 2004, archivado del original el 19 de agosto de 2004 , recuperado el 21 de abril de 2012
  13. Manual del usuario: Servidor PKZIP; Servidor SecureZIP . PKWARE, Inc. 2004. pág. 72. 
  14. "Formato de archivo ZIP (PKWARE)" . Sostenibilidad de los formatos digitales: planificación para las colecciones de la Biblioteca del Congreso . Biblioteca del Congreso . 28 de mayo de 2020. Consultado el 16 de abril de 2025 .
  15. Archivo: APPNOTE.TXT - Especificación del formato de archivo .ZIP Versión: 4.0 Revisado: 11/01/2000 , 1 de noviembre de 2000 , consultado el 16 de abril de 2025
  16. Archivo: APPNOTE.TXT - Especificación del formato de archivo .ZIP Versión: 4.5 Revisado: 11/01/2001 , 3 de diciembre de 2001, archivado del original el 3 de diciembre de 2001 , recuperado el 21 de abril de 2012
  17. APPNOTE.TXT - Especificación del formato de archivo .ZIP, versión: 5.2 - Notificación de cambio , 16 de julio de 2003 , consultado el 5 de enero de 2012
  18. Archivo: APPNOTE.TXT - Especificación del formato de archivo .ZIP Versión: 5.2 - Notificación de cambio – Revisado: 06/02/2003 , 2 de julio de 2003, archivado del original el 2 de julio de 2003 , recuperado el 21 de abril de 2012
  19. APPNOTE.TXT - Especificación del formato de archivo .ZIP, versión: 6.2.0 - Notificación de cambio , 26 de abril de 2004 , consultado el 5 de enero de 2012
  20. 1 2 APPNOTE.TXT - Especificación del formato de archivo .ZIP, Versión: 6.3.0 , 29 de septiembre de 2006 , consultado el 5 de enero de 2012
  21. APPNOTE.TXT - Especificación del formato de archivo .ZIP, Versión: 6.3.1 , 11 de abril de 2007 , consultado el 25 de junio de 2018
  22. APPNOTE.TXT - Especificación del formato de archivo .ZIP Versión: 6.3.2 , 28 de septiembre de 2007 , consultado el 25 de junio de 2018
  23. APPNOTE.TXT - Especificación del formato de archivo .ZIP Versión: 6.3.3 , 1 de septiembre de 2012 , consultado el 25 de junio de 2018
  24. APPNOTE.TXT - Especificación del formato de archivo .ZIP Versión: 6.3.4 , 1 de octubre de 2014 , consultado el 25 de junio de 2018
  25. 1 2 APPNOTE.TXT - Especificación del formato de archivo .ZIP Versión: 6.3.5 , 20 de diciembre de 2018 , consultado el 3 de enero de 2019
  26. APPNOTE.TXT - Especificación del formato de archivo .ZIP Versión: 6.3.6 , 26 de abril de 2019 , consultado el 3 de enero de 2019
  27. APPNOTE.TXT - Especificación del formato de archivo .ZIP Versión: 6.3.7 , 1 de junio de 2020 , consultado el 6 de junio de 2020
  28. APPNOTE.TXT - Especificación del formato de archivo .ZIP Versión: 6.3.8 , 15 de junio de 2020 , consultado el 7 de julio de 2020
  29. APPNOTE.TXT - Especificación del formato de archivo .ZIP Versión: 6.3.9 , 15 de julio de 2020 , consultado el 8 de agosto de 2020
  30. 1 2 APPNOTE.TXT - Especificación del formato de archivo .ZIP Versión: 6.3.10 , 1 de noviembre de 2022 , consultado el 20 de noviembre de 2022
  31. "Especificación de métodos de compresión adicionales" . WinZip . Mansfield, CT : WinZip Computing, SL , 19 de mayo de 2009. Consultado el 24 de mayo de 2009 .
  32. "¿Qué es un archivo Zipx?" . Winzip: Base de conocimientos . Mansfield, CT : WinZip Computing, SL 13 de agosto de 2010. Archivado del original el 16 de julio de 2015 . Consultado el 17 de agosto de 2010 .
  33. "ISO/IEC JTC 1/SC 34 — Lenguajes de descripción y procesamiento de documentos" (PDF) . 12 de abril de 2010. Archivado del original (PDF) el 12 de mayo de 2014. Consultado el 10 de mayo de 2014 .
  34. "ISO/IEC 21320-1:2015 Archivo contenedor de documentos — Parte 1: Núcleo" . ITTF. 2015.
  35. Katz, Phillip W. (24 de septiembre de 1991). "Buscador de cadenas y compresor que utilizan el mismo" .
  36. eZine (1 de enero de 2023). "El formato de archivo .ZIP" . Neperos.com .
  37. 1 2 3 4 5 6 7 8 9 "Archivo : APPNOTE.TXT - Especificación del formato de archivo .ZIP : Versión: 6.3.4" (TXT) . Pkware.com . Consultado el 9 de septiembre de 2017 .  
  38. "Archivo: APPNOTE.TXT - Especificación del formato de archivo .ZIP" . PKWARE, Inc. Consultado el 21 de febrero de 2022 .
  39. Adler, Mark. "¿Cómo se relacionan zlib, gzip y zip? ¿Qué tienen en común y en qué se diferencian?" . Consultado el 27 de noviembre de 2018 .
  40. "Preguntas frecuentes sobre zlib" . zlib . El DCL de PKWare utiliza un formato de datos comprimidos completamente diferente al de PKZIP y zlib. Sin embargo, puede consultar el directorio contrib/blast de zlib para encontrar una posible solución a su problema.( contrib/blast )
  41. Sandeep (15 de septiembre de 2021). "Cómo proteger con contraseña un archivo zip" . Noticias tecnológicas de hoy .
  42. "Información sobre cifrado AES: Especificación de cifrado AE-1 y AE-2" . Winzip.com . Consultado el 9 de septiembre de 2017 .
  43. "NOTA DE APLICACIÓN - PKZIP/SecureZIP - Sitio de soporte de PKWARE" . Pkware.com . Consultado el 9 de septiembre de 2017 .
  44. "Archivo : APPNOTE.TXT - Especificación del formato de archivo .ZIP : Versión: 6.3.4" (TXT) . Pkware.cachefly.net . Consultado el 9 de septiembre de 2017 .  
  45. "Cambios en QuaZIP" . 22 de enero de 2014. Consultado el 25 de enero de 2014 .
  46. "Mejora de Python: Usar allowZip64=True por defecto (3.4)" . Consultado el 6 de mayo de 2014 .
  47. Shen, Xueming (17 de abril de 2009). "ZIP64, el formato para archivos Zip de más de 4 GB, ahora es compatible" . Blog de Xueming Shen . Sun Microsystems . Archivado del original el 30 de mayo de 2011. Recuperado el 27 de septiembre de 2010 .
  48. "Iniciar sesión - Cuentas de Google" . code.google.com . Consultado el 9 de septiembre de 2017 .
  49. "Error: firma de encabezado de archivo de directorio central no válida al descomprimir archivos grandes, comprimidos por macOS · Problema n.° 69 · thejoshwolfe/yauzl" . GitHub .
  50. "Extraer un archivo zip grande (50 GB) en Mac OS X" . Consultado el 17 de diciembre de 2018 .
  51. McMillan, Robert (agosto de 2008). "Una foto que puede robar tus credenciales en línea" . Infoworld.com . Consultado el 9 de septiembre de 2017 .
  52. "ZipArchive: formato Zip64: superando los límites de tamaño de archivo y número de archivos y segmentos" . Artpol-software.com . Consultado el 9 de septiembre de 2017 .
  53. "WinZip – Información sobre el cifrado AES" . Winzip.com . Consultado el 9 de septiembre de 2017 .
  54. McMillan, Robert (25 de julio de 2003). "PKWare solicita patente para el formato de archivo .zip" . InfoWorld.com . Archivado del original el 10 de agosto de 2003. Consultado el 16 de junio de 2008 .
  55. "Los fabricantes de software corrigen la vulnerabilidad de Zip tiff" . News.com . Consultado el 9 de septiembre de 2017 .
  56. John Leyden. "Se analiza a fondo la vulnerabilidad de cifrado de archivos Zip" . Theregister.co.uk . Consultado el 9 de septiembre de 2017 .
  57. "Información sobre cifrado AES: Especificación de cifrado AE-1 y AE-2" . Winzip.com . Consultado el 9 de septiembre de 2017 .
  58. Maham Mukhtar (agosto de 2017). "2 maneras de solucionar el problema de la opción "Cifrar contenido para proteger los datos" desactivada en Windows 10" . iTechtics . Archivado del original el 28 de mayo de 2020. Consultado el 28 de marzo de 2020. EFS está disponible para todas las ediciones de Windows 10, excepto Windows 10 Home.
  59. "¿Por qué la compatibilidad con carpetas comprimidas (carpetas Zip) de Windows se ha quedado estancada en principios de siglo?" 15 de mayo de 2018.
  60. Christopher Harper (20 de abril de 2024). "Añadir compatibilidad con archivos ZIP a Windows hace 30 años casi le costó el puesto al creador del Administrador de tareas" . Tom's Hardware . Consultado el 6 de mayo de 2024 .
  61. Dave Plummer (8 de enero de 2021). "06.Historia secreta de las carpetas ZIP de Windows" . YouTube . Consultado el 6 de mayo de 2024 .
  62. Dave Plummer (17 de abril de 2024). "¡Cómo la creación de carpetas ZIP para Windows casi me cuesta el DESPIDO de Microsoft!" . YouTube . Consultado el 6 de mayo de 2024 .
  63. Hall, Jim (15 de agosto de 2022). "Cómo se estructuran los archivos ODT" . opensource.com . Consultado el 9 de julio de 2023 .
  64. 1 2 3 4 PKWARE (15 de julio de 2020). "APPNOTE.TXT - Especificación del formato de archivo .ZIP" . PKWARE .
  65. 1 2 "ubuntu/+source/unzip - [ sin descripción ] " . git.launchpad.net .
  66. "Error al procesar archivos con caracteres no ingleses en los nombres de archivos/carpetas archivados · Problema n.° 114 · elfmz/far2l" . GitHub . Consultado el 23 de mayo de 2024 .
  67. "Utilice la configuración regional del sistema para seleccionar la página de códigos para archivos zip heredados (!8) ​​· Solicitudes de fusión · Debian / 7zip · GitLab" . GitLab . 22 de mayo de 2024 . Consultado el 23 de mayo de 2024 .
  68. "Detalles técnicos de zlib" . Consultado el 10 de julio de 2019 .
  69. Smith, Ernie (10 de julio de 2019). "La 'bomba Zip' más ingeniosa jamás creada hace explotar un archivo de 46 MB a 4,5 petabytes" . Motherboard . Vice Media . Consultado el 10 de julio de 2019 .
  • Nota de aplicación .ZIP
  • Software oficial para crear archivos ZIP

Archivado el 17 de julio de 2017 en la página de inicio de Wayback Machine para el archivo .ZIP actual e histórico de PKWARE.

  • ISO/IEC 21320-1:2015 — Archivo contenedor de documentos — Parte 1: Núcleo
  • Archivos Zip: Historia, explicación e implementación
  • Encoger, reducir e implosionar: Los métodos tradicionales de compresión de cremalleras
  • Espejo de APPNOTE.TXT
  • Estructura de las especificaciones del formato de archivo PKZip, tablas gráficas