stringtranslate.com

ZIP (formato de archivo)

ZIP es un formato de archivo que admite la compresión de datos sin pérdidas . Un archivo ZIP puede contener uno o más archivos o directorios que pueden haber sido comprimidos. El formato de archivo ZIP permite 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 de Thom Henderson. Luego, el formato ZIP fue rápidamente compatible con muchas utilidades de software distintas de PKZIP. Microsoft ha incluido soporte ZIP integrado (bajo el nombre "carpetas comprimidas") en las versiones de Microsoft Windows desde 1998 a través del complemento "Plus! 98" para Windows 98. El soporte nativo se agregó a partir del año 2000 en Windows ME. [ cita necesaria ] Apple ha incluido soporte ZIP integrado 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 tienen soporte integrado para ZIP de manera similar a Windows y macOS.

Los archivos ZIP generalmente usan las extensiones de archivo .zip o .ZIP y el tipo de medio MIME . [1] Muchos programas utilizan ZIP como formato de archivo base, generalmente con 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 destaca una cremallera .application/zip

Historia

El formato de archivo .ZIP fue diseñado por Phil Katz de PKWARE 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 archivo de este último, denominados PKARC, eran derivados del sistema de archivo ARC de SEA. [3] El nombre "zip" (que significa "moverse 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 versión más antigua conocida de la especificación de formato de archivo .ZIP se publicó por primera vez como parte del paquete PKZIP 0.9 bajo el archivo APPNOTE.TXT en 1989. [ cita necesaria ] Al distribuir el formato de archivo zip dentro de APPNOTE.TXT, se mejora la compatibilidad con el archivo zip. El formato de archivo proliferó ampliamente en la Internet pública durante la década de 1990. [5]

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

Historial de versiones

La especificación de formato de archivo .ZIP tiene su propio número de versión, que no necesariamente corresponde a los números de versión de la herramienta PKZIP, especialmente con PKZIP 6 o posterior. En varias ocasiones, PKWARE ha agregado funciones preliminares que permiten a los productos PKZIP extraer archivos utilizando funciones avanzadas, pero los productos PKZIP que crean dichos archivos no están disponibles hasta la próxima versión importante. Otras empresas u organizaciones respaldan las especificaciones de PKWARE a su propio ritmo.

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

Un resumen de los avances clave en varias versiones de la especificación PKWARE:

WinZip , a partir de la versión 12.1, usa la extensión .zipx para archivos ZIP que usan métodos de compresión más nuevos que DEFLATE; concretamente, los métodos BZip, LZMA, PPMd, Jpeg y Wavpack. Los últimos 2 se aplican a los tipos de archivos apropiados cuando se selecciona la compresión "Mejor método". [28] [29]

Estandarización

En abril de 2010, ISO/IEC JTC 1 inició una votación para determinar si se debería iniciar un proyecto para crear un formato de estándar internacional ISO/IEC compatible con ZIP. [30] El proyecto propuesto, titulado Document Packaging , preveía un 'formato de archivo comprimido mínimo' compatible con ZIP adecuado para su uso con una serie de estándares existentes, incluidos OpenDocument , Office Open XML y EPUB .

En 2015, se publicó ISO/IEC 21320-1 "Archivo contenedor de documentos - Parte 1: Núcleo", que establece que "los archivos contenedores de documentos conforman archivos Zip". Requiere las siguientes restricciones principales del formato de archivo ZIP: [31]

Diseño

Los archivos .ZIP son archivos que almacenan varios archivos. ZIP permite comprimir los archivos contenidos utilizando muchos métodos diferentes, además de simplemente almacenar un archivo sin comprimirlo. Cada archivo se almacena por separado, lo que permite comprimir diferentes archivos en el mismo archivo utilizando diferentes métodos. Debido a que los archivos en un archivo ZIP se comprimen individualmente, es posible extraerlos o agregar otros nuevos sin aplicar compresión o descompresión a todo el archivo. Esto contrasta con el formato de los archivos tar comprimidos , para los cuales dicho procesamiento de acceso aleatorio no es fácilmente posible.

Un directorio se coloca al final de un archivo ZIP. Esto identifica qué archivos están en el ZIP e identifica en qué parte del ZIP se encuentra ese archivo. Esto permite a los lectores ZIP cargar la lista de archivos sin 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 (aplicación que descomprime los datos contenidos), anteponiendo el código del programa a un archivo ZIP y marcando el archivo como ejecutable. Almacenar el catálogo al final también permite ocultar un archivo comprimido agregándolo a un archivo inofensivo, como un archivo de imagen GIF.

El formato .ZIP utiliza un algoritmo CRC de 32 bits e incluye dos copias de cada metadato de entrada para brindar una 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. [32]

Estructura

Diseño interno ZIP-64

Un archivo ZIP se identifica correctamente por la presencia de un extremo del registro del directorio central que se encuentra al final de la estructura del archivo para permitir agregar fácilmente nuevos archivos. Si el final del registro del directorio central indica un archivo no 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 en el archivo ZIP, apuntando a los datos de entrada reales. Esto permite realizar una lista de archivos del archivo comprimido con relativa rapidez, ya que no es necesario leer todo el archivo para ver la lista de archivos. Las entradas dentro del archivo ZIP también incluyen esta información, por redundancia, en un encabezado de archivo local . Debido a que se pueden agregar archivos ZIP, solo son válidos los archivos especificados en el directorio central al final del archivo. Escanear un archivo ZIP en busca de encabezados de archivos locales no es válido (excepto en el caso de archivos dañados), ya que el directorio central puede declarar que algunos archivos se han eliminado y otros se han actualizado.

Por ejemplo, podemos comenzar con un archivo ZIP que contiene los archivos A, B y C. Luego se elimina el archivo B y se actualiza el C. Esto se puede lograr simplemente agregando un nuevo archivo C al final del archivo ZIP original y agregando un nuevo directorio central que solo enumere el archivo A y el nuevo archivo C. Cuando se diseñó ZIP por primera vez, la transferencia de archivos mediante disquete era común. sin embargo, escribir en discos consumía mucho tiempo. Si tuviera un archivo zip grande, que posiblemente abarque varios discos, y solo necesitara actualizar algunos archivos, en lugar de leer y reescribir todos los archivos, sería sustancialmente más rápido simplemente leer el directorio central antiguo y agregar los archivos nuevos. luego agregue un directorio central actualizado.

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

Cada entrada almacenada en un archivo ZIP es introducida por un encabezado de archivo local con información sobre el archivo, como el comentario, el tamaño del archivo y el nombre del archivo, seguido de campos de datos "extra" opcionales y luego los datos del archivo posiblemente comprimidos y posiblemente cifrados. Los campos de datos "Extra" son la clave para la extensibilidad del formato ZIP. Los campos "extra" se aprovechan para admitir el formato ZIP64, cifrado AES compatible con WinZip, atributos de archivos y marcas de tiempo de archivos NTFS o Unix de mayor resolución. Otras ampliaciones son posibles a través del campo "Extra". La especificación requiere que las herramientas ZIP ignoren los campos adicionales que no reconocen.

El formato ZIP utiliza "firmas" específicas de 4 bytes para indicar las distintas estructuras del archivo. Cada entrada de 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 en el directorio central comienza con la firma del encabezado del archivo central de 4 bytes .

No hay ningún marcador BOF o EOF en la especificación ZIP. Convencionalmente, lo primero en un archivo ZIP es una entrada ZIP, que puede identificarse fácilmente por la firma del encabezado del archivo local . Sin embargo, este no es necesariamente el caso, 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 el final de la firma del registro del directorio central y luego, según corresponda, los demás registros del directorio central indicados. No deben buscar entradas en la parte superior del archivo ZIP porque (como se mencionó anteriormente en esta sección) solo el directorio central especifica dónde comienza un fragmento de archivo y que no se ha eliminado. El escaneo podría dar lugar a falsos positivos, ya que el formato no prohíbe que haya otros datos entre fragmentos, ni que los flujos de datos de archivos contengan dichas firmas. Sin embargo, las herramientas que intentan recuperar datos de archivos ZIP dañados probablemente escanearán el archivo en busca de firmas de encabezados de archivos locales; Esto se hace más difícil por el hecho de que el tamaño comprimido de un fragmento de archivo puede almacenarse después del fragmento de archivo, 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 ZIP autoextraíbles de DOS, OS/2 y Windows tienen un EXE antes del ZIP, así que comience con "MZ"; los ZIP autoextraíbles para otros sistemas operativos también 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 en varios archivos del sistema de archivos. Originalmente pensada para el almacenamiento de archivos ZIP de gran tamaño en varios disquetes , esta función ahora se utiliza para enviar archivos ZIP en partes por correo electrónico o por otros medios de transporte o medios extraíbles.

El sistema de archivos FAT de DOS tiene una resolución de marca de tiempo de sólo dos segundos; Los registros de archivos ZIP imitan esto. Como resultado, la resolución de marca de tiempo incorporada de los archivos en un archivo ZIP es de sólo dos segundos, aunque se pueden usar campos adicionales para almacenar marcas de tiempo más precisas. El formato ZIP no tiene noción de zona horaria , por lo que las marcas de tiempo sólo son significativas si se sabe en qué zona horaria fueron creadas.

En septiembre de 2006, PKWARE publicó una revisión de la especificación ZIP que prevé el almacenamiento de nombres de archivos utilizando UTF-8 , añadiendo finalmente compatibilidad Unicode a ZIP. [17]

encabezados de archivos

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

Encabezado del archivo local

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

A esto le siguen inmediatamente los datos comprimidos.

Descriptor de datos

Si se establece el bit en el desplazamiento 3 (0x08) del campo de indicadores de propósito general, 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 una longitud de 8 bytes en lugar de 4 bytes (consulte la sección 4.3.9.2 [34] ). Los campos equivalentes en el encabezado local (o en el campo adicional de información extendida de Zip64 en el caso de archivos en formato Zip64) se completan con cero, y el CRC-32 y el tamaño se agregan en una estructura de 12 bytes (opcionalmente precedidos por un Firma de 4 bytes) inmediatamente después de los datos comprimidos:

Encabezado del archivo del directorio central

La entrada 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 viene el registro de fin del directorio central (EOCD), que marca el final del archivo ZIP:

Este orden 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, "múltiples disquetes") , como discutido previamente.

Métodos de compresión

La especificación de formato de archivo .ZIP documenta los siguientes métodos de compresión: almacenar (sin compresión), reducir ( LZW ), reducir (niveles 1 a 4; LZ77 + probabilístico), implosionar, desinflar, deflate64, bzip2 , LZMA , WavPack , PPMd y una variante LZ77 proporcionada por la instrucción IBM z/OS CMPSC. [35] [22] 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 "Tokenize" para un tercero, pero nunca se agregó soporte. [22]

PKWARE usa en exceso la palabra Implode : DCL/TERSE Implode es distinto del antiguo PKZIP Implode, un predecesor de Deflate. El DCL Implode no está documentado en parte debido a su naturaleza patentada en manos de IBM, pero Mark Adler ha proporcionado un descompresor llamado "blast" junto con zlib. [36]

Cifrado

ZIP admite un sistema de cifrado simétrico basado en contraseña simple , generalmente conocido como ZipCrypto. Está documentado en la especificación ZIP y se sabe que tiene graves fallas. 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] Las computadoras que ejecutan Microsoft Windows nativo sin archivadores de terceros pueden abrir, pero no crear, archivos ZIP cifrados con ZipCrypto, pero no pueden extraer el contenido de los archivos usando un cifrado diferente. [37]

Se han documentado nuevas funciones, incluidos nuevos métodos de compresión y cifrado (por ejemplo, AES ), en la Especificación de formato de archivo ZIP desde la versión 5.2. 7-Zip y Xceed también utilizan un estándar abierto basado en AES desarrollado por WinZip ("AE-x" en APPNOTE) , pero algunos proveedores utilizan otros formatos. [38] PKWARE SecureZIP (SES, propietario) también admite métodos de cifrado RC2, RC4, DES, Triple DES, cifrado y autenticación basados ​​en certificados digitales ( X.509 ) y cifrado de encabezados de archivos. Sin embargo, está patentado (ver § Fuerte controversia sobre el cifrado). [39]

El cifrado de nombres de archivos se introduce en la Especificación de formato de archivo .ZIP 6.2, que cifra los metadatos almacenados en la parte del directorio central de un archivo, pero las secciones del encabezado local permanecen sin cifrar. Un archivador compatible puede falsificar los datos del encabezado local cuando utiliza 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 GB (2 32 bytes) en varias cosas (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 16 - 1) entradas en un archivo ZIP. En la versión 4.5 de la especificación (que no es lo mismo 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  EB (2 64 bytes). En esencia, utiliza una entrada de directorio central "normal" para un archivo, seguida de una entrada de directorio opcional "zip64", que tiene los campos más grandes. [40]

El formato del encabezado del archivo local (LOC) y la entrada del directorio central (CEN) son los mismos en ZIP y ZIP64. Sin embargo, ZIP64 especifica un campo extra que se puede agregar a esos registros a criterio del compresor, cuyo propósito es almacenar valores que no caben en los registros clásicos LOC o CEN. Para indicar que los valores reales se almacenan en campos adicionales de ZIP64, se configuran en 0xFFFF o 0xFFFFFFFF en el registro LOC o CEN correspondiente. Si una entrada no encaja en el registro LOC o CEN clásico, solo se requiere mover esa entrada a un campo adicional ZIP64. Las demás inscripciones podrán permanecer en el registro clásico. Por lo tanto, es posible que no todas las entradas que se muestran en la siguiente tabla se almacenen en un campo adicional 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 al de la versión ZIP normal. [33]

Tampoco es necesariamente el último registro del archivo. Sigue un localizador de fin del directorio central (20 bytes adicionales al final).

El Explorador de archivos de Windows XP no es compatible con ZIP64, pero el Explorador de Windows Vista y posteriores sí. [ cita necesaria ] Asimismo, algunas bibliotecas de extensiones admiten ZIP64, como DotNetZip, QuaZIP [41] e IO::Compress::Zip en Perl. El archivo zip integrado de Python lo admite desde 2.5 y lo utiliza de forma predeterminada desde 3.4. [42] El java.util.zip integrado de OpenJDK admite ZIP64 desde la versión Java 7 . [43] La API Java de Android admite ZIP64 desde Android 6.0. [44] La utilidad de archivo de Mac OS Sierra no es compatible con ZIP64 y puede crear archivos corruptos cuando se requiere ZIP64. [45] Sin embargo, el comando ditto incluido con Mac OS descomprimirá archivos ZIP64. [46] Más reciente [ ¿cuándo? ] Las versiones de Mac OS se envían con las herramientas de línea de comandos zip y descomprimir de info-zip que admiten Zip64: para verificar, ejecute zip -v y busque "ZIP64_SUPPORT".

Combinación con otros formatos de archivo

El formato de archivo .ZIP permite que aparezca un comentario que contenga hasta 65,535 (2 16 −1) bytes de datos al final del archivo después del directorio central. [33] Además, debido a que el directorio central especifica el desplazamiento de cada archivo en el archivo con respecto al inicio, es posible que la primera entrada del archivo comience en un desplazamiento distinto de cero, aunque algunas herramientas, por ejemplo gzip , lo harán. No procese archivos que no comiencen con una entrada de archivo en el desplazamiento cero.

Esto permite que aparezcan datos arbitrarios en el archivo antes y después de los datos del archivo ZIP, y que una aplicación ZIP pueda seguir leyendo el archivo. Un efecto secundario de esto es que es posible crear un archivo que sea a la vez un archivo ZIP funcional y otro formato, siempre que el otro formato tolere datos arbitrarios al final, al principio o en el medio. Los archivos autoextraíbles (SFX), del formato compatible con WinZip, aprovechan esto, ya que son archivos ejecutables ( .exe ) que cumplen con la especificación PKZIP AppNote.txt y pueden leerse mediante bibliotecas o herramientas zip compatibles. .

Esta propiedad del formato .ZIP , y del formato JAR , que es una variante de ZIP, puede explotarse para ocultar contenido nocivo (como clases Java dañinas) dentro de un archivo aparentemente inofensivo, como una imagen GIF cargada en la web. Este exploit llamado GIFAR ha demostrado ser un ataque eficaz contra aplicaciones web como Facebook. [47]

Límites

El tamaño mínimo de un archivo .ZIP es de 22 bytes. Un archivo zip vacío de este tipo contiene sólo un registro de fin del directorio central (EOCD):
[0x50,0x4B,0x05,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]

El tamaño máximo tanto para el archivo comprimido como para los archivos individuales que contiene es 4.294.967.295 bytes (2· 32 −1 bytes, o 4 GB menos 1 byte) para ZIP estándar. Para ZIP64, el tamaño máximo es 18.446.744.073.709.551.615 bytes (2 64 −1 bytes, o 16 EB menos 1 byte). [48]

Extensiones abiertas

Perfil optimizado para búsqueda (SOZip)

Se ha propuesto un perfil de archivo ZIP optimizado para búsqueda (SOZip) [49] para el formato ZIP. Dicho archivo contiene uno o varios archivos comprimidos con Deflate que están organizados y anotados de manera que un lector compatible con SOZip pueda realizar un acceso aleatorio (búsqueda) muy rápido dentro de un archivo comprimido. SOZip permite acceder a archivos comprimidos de gran tamaño directamente desde un archivo .zip sin descompresión previa. Combina el uso de descargas de bloques ZLib emitidas a intervalos regulares con un archivo de índice oculto que asigna las compensaciones del archivo sin comprimir a las compensaciones en la secuencia comprimida. Los lectores ZIP que no conocen esa extensión pueden leer un archivo habilitado para SOZip normalmente e ignorar las funciones extendidas que admiten la capacidad de búsqueda eficiente.

Extensiones propietarias

Campo adicional

El formato de archivo .ZIP incluye una función de campo adicional dentro de los encabezados de archivo, que se puede usar para almacenar datos adicionales no definidos por las especificaciones ZIP existentes y que permite a los archivadores compatibles que no reconocen los campos omitirlos de manera segura. Los ID de encabezado 0 a 31 están reservados para uso de PKWARE. Los ID restantes pueden ser utilizados por proveedores externos para uso propietario.

Fuerte controversia sobre el cifrado

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. [50] 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 describe un método para combinar ZIP y cifrado fuerte para crear un archivo seguro. [51]

Al final, PKWARE y WinZip acordaron respaldar los productos de cada uno. El 21 de enero de 2004, PKWARE anunció la compatibilidad con el formato de compresión AES basado en WinZip. [52] En una versión posterior de WinZip beta, podía admitir archivos ZIP basados ​​en SES. [53] PKWARE finalmente lanzó al público la versión 5.2 de la especificación de formato de archivo .ZIP, que documentaba SES. El proyecto de software libre 7-Zip también soporta AES, pero no SES en archivos ZIP (al igual que su puerto POSIX p7zip ).

Cuando se utiliza 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 adicional AES. [54] Por el contrario, la especificación de cifrado fuerte almacena el método de compresión en el segmento de encabezado de archivo básico del encabezado local y el directorio central, a menos que se utilice el cifrado del directorio central para enmascarar/cifrar metadatos.

Implementación

Hay numerosas herramientas .ZIP disponibles y numerosas bibliotecas .ZIP para diversos entornos de programación; Las licencias utilizadas incluyen software propietario y libre . WinZip , WinRAR , Info-ZIP , ZipGenius , 7-Zip , PeaZip y B1 Free Archiver son herramientas .ZIP muy conocidas , disponibles en varias plataformas. Algunas de esas herramientas tienen biblioteca o interfaces programáticas.

Algunas bibliotecas de desarrollo con licencia según un acuerdo 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 (más de 4 GB) y trata 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 Info-ZIP del formato .ZIP agregan soporte para funciones del sistema de archivos Unix, como ID de usuarios y grupos, permisos de archivos y soporte para enlaces simbólicos. La implementación de Apache Ant los conoce en la medida en que puede 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 lo hacen y fallarán en un archivo que tenga errores.

Las herramientas Info-ZIP de Windows también admiten permisos del sistema de archivos NTFS e intentarán traducir de permisos NTFS a permisos Unix o viceversa al extraer archivos. Esto puede dar lugar a combinaciones potencialmente no deseadas, por ejemplo, archivos .exe creados en volúmenes NTFS con permiso de ejecución denegado.

Las versiones de Microsoft Windows han incluido soporte para la compresión .ZIP en Explorer desde Microsoft Plus! El paquete se lanzó para Windows 98. Microsoft llama a esta característica "Carpetas comprimidas". No todas las funciones .ZIP son compatibles con la capacidad de Carpetas comprimidas de Windows. Por ejemplo, el cifrado no es compatible con la edición Windows 10 Home, [55] aunque puede descifrarlo. La codificación de entrada Unicode no es compatible hasta Windows 7 , mientras que la función Carpetas comprimidas no permite leer ni escribir archivos divididos y distribuidos, ni tampoco se admite el cifrado AES. [56]

OpenDocument Format (ODF) comenzó a utilizar 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. [57] Microsoft Office comenzó a utilizar 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 .

Legado

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

Preocupaciones

El factor de compresión máximo teórico para un flujo DEFLATE sin procesar es de aproximadamente 1032 a uno, [58] pero al explotar el formato ZIP de maneras no deseadas, se pueden construir archivos ZIP con índices de compresión de miles de millones a uno. Estas bombas zip se descomprimen en tamaños extremadamente grandes, abrumando la capacidad de la computadora en la que se descomprimen. [59]

Ver también

Referencias

  1. ^ abc Registro de un nuevo tipo/subtipo de contenido MIME: aplicación/zip, IANA , 20 de julio de 1993 , consultado el 5 de enero de 2012
  2. ^ "Phillip Katz, pionero del software informático, 37". Los New York Times'. 1 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 desde el original el 4 de marzo de 2016.URL alternativa Actualizado el 19 de junio de 2000.
  4. ^ ab "La biblioteca de documentales de BBS". www.bbsdocumentary.com . Consultado el 25 de septiembre de 2020 .
  5. ^ ab Quédate, Michael. "Ataques ZIP con texto sin formato conocido reducido" (PDF) . Math.ucr.edu . Archivado desde el original (PDF) el 28 de octubre de 2017 . Consultado el 9 de septiembre de 2017 .
  6. ^ Brian Livingston (8 de septiembre de 2003), PKZip Must Open Up , consultado el 5 de enero de 2012 , El formato de archivo ZIP se proporciona gratuitamente al dominio público y ningún individuo, entidad o empresa puede reclamarlo legal ni moralmente.
  7. ^ ¿ De dónde vienen los archivos Zip?, Infinity Design Concepts, Inc. , 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, archivado desde el original el 1 de octubre de 2010 , consultado 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 .ZIP , consultado el 20 de julio de 2012
  12. ^ Archivo: APPNOTE.TXT - Especificación de formato de archivo .ZIP Versión: 4.5 Revisado: 01/11/2001, 3 de diciembre de 2001, archivado desde el original el 3 de diciembre de 2001 , consultado el 21 de abril de 2012
  13. ^ APPNOTE.TXT - Especificación de formato de archivo .ZIP, versión: 5.2 - Notificación de cambio, 16 de julio de 2003 , consultado el 5 de enero de 2012
  14. ^ Archivo: APPNOTE.TXT - Especificación de formato de archivo .ZIP Versión: 5.2 - Notificación de cambio - Revisado: 02/06/2003, 2 de julio de 2003, archivado desde el original el 2 de julio de 2003 , consultado el 21 de abril de 2012
  15. ^ Archivo: APPNOTE - Especificación de formato de archivo .ZIP Versión: 6.1.0 - Notificación de cambio - Revisado: 20/01/2004, 19 de agosto de 2004, archivado desde el original el 19 de agosto de 2004 , consultado el 21 de abril de 2012
  16. ^ APPNOTE.TXT - Especificación de 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
  17. ^ ab APPNOTE.TXT - Especificación de formato de archivo .ZIP, versión: 6.3.0, 29 de septiembre de 2006 , consultado el 5 de enero de 2012
  18. ^ APPNOTE.TXT - Especificación de formato de archivo .ZIP, versión: 6.3.1, 11 de abril de 2007 , consultado el 25 de junio de 2018
  19. ^ APPNOTE.TXT - Versión de especificación de formato de archivo .ZIP: 6.3.2, 28 de septiembre de 2007 , consultado el 25 de junio de 2018
  20. ^ APPNOTE.TXT - Versión de especificación de formato de archivo .ZIP: 6.3.3, 1 de septiembre de 2012 , consultado el 25 de junio de 2018
  21. ^ APPNOTE.TXT - Versión de especificación de formato de archivo .ZIP: 6.3.4, 1 de octubre de 2014 , consultado el 25 de junio de 2018
  22. ^ abc APPNOTE.TXT - Especificación de formato de archivo .ZIP Versión: 6.3.5, 20 de diciembre de 2018 , consultado el 3 de enero de 2019
  23. ^ APPNOTE.TXT - Versión de especificación de formato de archivo .ZIP: 6.3.6, 26 de abril de 2019 , consultado el 3 de enero de 2019
  24. ^ APPNOTE.TXT - Versión de especificación de formato de archivo .ZIP: 6.3.7, 1 de junio de 2020 , consultado el 6 de junio de 2020
  25. ^ APPNOTE.TXT - Versión de especificación de formato de archivo .ZIP: 6.3.8, 15 de junio de 2020 , consultado el 7 de julio de 2020
  26. ^ APPNOTE.TXT - Versión de especificación de formato de archivo .ZIP: 6.3.9, 15 de julio de 2020 , consultado el 8 de agosto de 2020
  27. ^ APPNOTE.TXT - Versión de especificación de formato de archivo .ZIP: 6.3.10, 1 de noviembre de 2022 , consultado el 20 de noviembre de 2022
  28. ^ "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 .
  29. ^ "¿Qué es un archivo Zipx?". Winzip: base de conocimientos . Mansfield, CT : WinZip Computing, SL 13 de agosto de 2010 . Consultado el 17 de agosto de 2010 .
  30. ^ "ISO/IEC JTC 1/SC 34 - Lenguajes de procesamiento y descripción de documentos" (PDF) . 12 de abril de 2010. Archivado desde el original (PDF) el 12 de mayo de 2014 . Consultado el 10 de mayo de 2014 .
  31. ^ "Archivo contenedor de documentos ISO/IEC 21320-1:2015 - Parte 1: Núcleo". ITTF. 2015.
  32. ^ Revista electrónica (1 de enero de 2023). "El formato de archivo .ZIP". Neperos.com .
  33. ^ abcdefgh "Archivo: APPNOTE.TXT - Especificación de formato de archivo .ZIP: Versión: 6.3.4" (TXT) . Pkware.com . Consultado el 9 de septiembre de 2017 .
  34. ^ "Archivo: APPNOTE.TXT - Especificación de formato de archivo .ZIP". PKWARE Inc. Consultado el 21 de febrero de 2022 .
  35. ^ Adler, Marcos. "¿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 .
  36. ^ "Preguntas frecuentes sobre zlib". zlib . PKWare DCL utiliza un formato de datos comprimidos completamente diferente al de PKZIP y zlib. Sin embargo, puede buscar en el directorio contrib/blast de zlib una posible solución a su problema.(contribución/explosión)
  37. ^ Sandeep (15 de septiembre de 2021). "Cómo proteger con contraseña un archivo zip". Noticias tecnológicas hoy .
  38. ^ "Información de cifrado AES: especificación de cifrado AE-1 y AE-2". Winzip.com . Consultado el 9 de septiembre de 2017 .
  39. ^ "NOTA DE APLICACIÓN - PKZIP/SecureZIP - Sitio de soporte de PKWARE". Pkware.com . Consultado el 9 de septiembre de 2017 .
  40. ^ "Archivo: APPNOTE.TXT - Especificación de formato de archivo .ZIP: Versión: 6.3.4" (TXT) . Pkware.cachefly.net . Consultado el 9 de septiembre de 2017 .
  41. ^ "Cambios en QuaZIP". 22 de enero de 2014 . Consultado el 25 de enero de 2014 .
  42. ^ "Mejora de Python: utilice enableZip64=True de forma predeterminada (3.4)" . Consultado el 6 de mayo de 2014 .
  43. ^ Shen, Xueming (17 de abril de 2009). "ZIP64, el formato para > 4G Zipfile, ahora es compatible". Blog de Xueming Shen . Microsistemas solares . Consultado el 27 de septiembre de 2010 .
  44. ^ "Iniciar sesión: Cuentas de Google". código.google.com . Consultado el 9 de septiembre de 2017 .
  45. ^ "Error: firma del encabezado del archivo del directorio central no válida al descomprimir archivos grandes, comprimidos por mac os · Problema n.º 69 · thejoshwolfe/yauzl". GitHub .
  46. ^ "Extraiga un archivo zip grande (50 GB) en Mac OS X" . Consultado el 17 de diciembre de 2018 .
  47. ^ McMillan, Robert (agosto de 2008). "Una foto que puede robar tus credenciales online". Infoworld.com . Consultado el 9 de septiembre de 2017 .
  48. ^ "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 .
  49. ^ Rouault, incluso (OSGeo). "Perfil ZIP (SOZip) optimizado para búsqueda" (rebaja) . github.com . Consultado el 11 de enero de 2023 .
  50. ^ "WinZip: información de cifrado AES". Winzip.com . Consultado el 9 de septiembre de 2017 .
  51. ^ McMillan, Robert (25 de julio de 2003). "PKWare busca patente para el formato de archivo .zip". InfoWorld.com . Archivado desde el original el 10 de agosto de 2003 . Consultado el 16 de junio de 2008 .
  52. ^ "Los fabricantes de software parchean Zip tiff". Noticias.com . Consultado el 9 de septiembre de 2017 .
  53. ^ John Leyden. "Se solucionó el compromiso de cifrado de archivos zip". Theregister.co.uk . Consultado el 9 de septiembre de 2017 .
  54. ^ "Información de cifrado AES: especificación de cifrado AE-1 y AE-2". Winzip.com . Consultado el 9 de septiembre de 2017 .
  55. ^ Maham Mukhtar (agosto de 2017). "Dos formas de corregir la opción" Cifrar contenido para proteger datos "atenuada en Windows 10". iTechtics . EFS está disponible para todas las ediciones de Windows 10 excepto la edición Windows 10 Home.
  56. ^ "¿Por qué la compatibilidad con las carpetas comprimidas (carpetas Zip) de Windows está estancada a principios de siglo?". 15 de mayo de 2018.
  57. ^ Hall, Jim (15 de agosto de 2022). "Cómo se estructuran los archivos ODT". opensource.com . Consultado el 9 de julio de 2023 .
  58. ^ "Detalles técnicos de zlib" . Consultado el 10 de julio de 2019 .
  59. ^ Smith, Ernie (10 de julio de 2019). "La 'bomba zip' más inteligente jamás creada explota un archivo de 46 MB a 4,5 petabytes". Tarjeta madre . Vicemedios . Consultado el 10 de julio de 2019 .

enlaces externos