¿Qué es ZIP?
ZIP es el formato de archivo comprimido más ubicuo del mundo, creado por Phil Katz y Gary Conway en 1989 y publicado en la Nota de Aplicación PKZIP — una de las especificaciones de formato más referenciadas en la historia de la informática. Los archivos ZIP pueden contener uno o más archivos y directorios, cada uno comprimido de forma independiente, junto con un directorio central al final del archivo que permite el acceso aleatorio a miembros individuales sin descomprimir todo el archivo.
El formato es mantenido por PKWARE, Inc. y documentado en la Nota de Aplicación (APPNOTE.TXT), disponible gratuitamente y actualizada decenas de veces desde 1989, añadiendo características como ZIP64 (archivos de más de 4 GB), cifrado AES y soporte de streaming.
Estructura Binaria
Un archivo ZIP tiene tres secciones principales:
[Cabecera de archivo local 1] [Datos del archivo 1]
[Cabecera de archivo local 2] [Datos del archivo 2]
...
[Cabecera de archivo local N] [Datos del archivo N]
[Descriptor de datos (opcional, para streaming)]
[Directorio central]
[Registro de fin del directorio central]
Cabecera de Archivo Local (30 bytes + variable)
Cada miembro comprimido comienza con una cabecera de archivo local. Los bytes mágicos PK en el desplazamiento 0 son las iniciales de Phil Katz, el inventor del formato.
Directorio Central
El directorio central al final del archivo contiene un registro por cada miembro del archivo, reflejando la información de la cabecera local más metadatos adicionales. Esto permite el acceso aleatorio eficiente: para extraer solo config.json de un archivo de 10 GB, la aplicación lee únicamente el directorio central (típicamente unos pocos KB al final), localiza el desplazamiento de la cabecera local de config.json, busca esa posición y descomprime solo ese miembro.
Métodos de Compresión
ZIP admite múltiples métodos de compresión identificados por un código de 2 bytes:
| Código | Método | Notas |
|---|---|---|
| 0 | Store | Sin compresión; solo archiva el archivo |
| 8 | Deflate | LZ77 + codificación Huffman; el predeterminado universal |
| 9 | Deflate64 | Deflate mejorado; mejor ratio |
| 12 | bzip2 | Mejor compresión que Deflate; más lento |
| 14 | LZMA | Excelente compresión; usado en herramientas más nuevas |
| 93 | Zstandard | Moderno, muy rápido |
Deflate (método 8) es, con diferencia, el método más ampliamente soportado y utilizado. Usa LZ77 para la eliminación de cadenas duplicadas seguido de codificación Huffman para la compresión de entropía.
ZIP64
La especificación ZIP original usaba enteros de 32 bits para tamaños de archivo y desplazamientos, limitando:
- El tamaño de archivo individual a ≈ 4 GB
- El tamaño total del archivo a 4 GB
- El número de entradas a 65.535
ZIP64 usa enteros de 64 bits almacenados en registros de campo extra, eliminando estos tres límites. Los archivos modernos que contienen archivos de más de 4 GB usan automáticamente extensiones ZIP64.
Cifrado
ZIP admite dos esquemas de cifrado:
ZipCrypto heredado (también llamado "tradicional" o "PKWARE"):
- Disponible desde 1989
- Criptográficamente débil: vulnerable a ataques de texto en claro conocido; no usar para datos sensibles
- Aún ampliamente soportado por todas las herramientas ZIP
Cifrado AES (extensión AES de WinZip/PKWARE):
- Usa AES-128 o AES-256 en modo Contador (CTR)
- Clave derivada de la contraseña mediante PBKDF2
- Fuertemente recomendado sobre ZipCrypto para cualquier contenido sensible
- No soportado por la utilidad ZIP integrada de Windows (que usa ZipCrypto)
Limitación importante: Incluso con cifrado, los nombres de archivo y la estructura del archivo son visibles sin la contraseña en el ZIP estándar. Solo los datos del archivo están cifrados. El formato 7Z puede cifrar las cabeceras (nombres de archivo) — ZIP no puede.
ZIP frente a Otros Formatos de Archivo
| Característica | ZIP | 7Z | RAR | TAR.GZ |
|---|---|---|---|---|
| Ratio de compresión | Bueno | Excelente | Excelente | Bueno |
| Velocidad (comprimir) | Rápida | Lenta | Media | Rápida |
| Acceso aleatorio | Sí (dir. central) | Sí | Sí | No (streaming) |
| Cifrado AES-256 | Opcional | Sí | Sí | No |
| Cifrado de cabeceras | No | Sí | Sí | N/D |
| Soporte nativo del SO | Windows/macOS/Linux | Principalmente Windows | Terceros | Linux/macOS |
| Especificación abierta | Sí | Sí | No | Sí |
ZIP como Contenedor de Formatos
ZIP sigue siendo la base de muchos formatos "contenedor":
- DOCX, XLSX, PPTX — Office Open XML (OOXML)
- ODT, ODS, ODP — OpenDocument Format (ODF)
- EPUB — Libros electrónicos
- JAR — Archivos Java
- APK — Paquetes de aplicaciones Android
- CBZ — Archivos de cómics
Esta adopción generalizada significa que el soporte de ZIP está integrado en prácticamente todos los sistemas operativos y ecosistemas de lenguajes de programación.
Trabajar con Archivos ZIP
Crear archivos ZIP:
- Windows: Clic derecho → Enviar a → Carpeta comprimida (en zip)
- macOS: Clic derecho → Comprimir
- Linux:
zip -r archivo.zip directorio/ - Python: módulo
zipfile(biblioteca estándar)
Extraer:
- Windows/macOS/Linux: Extracción integrada o 7-Zip, WinRAR
- Línea de comandos:
unzip archivo.zip
ZIP → 7Z: 7-Zip puede recomprimir ZIP a 7Z con ratios significativamente mejores, especialmente para archivos con múltiples archivos. La desventaja es la compatibilidad reducida.
ZIP → TAR.GZ: Útil al desplegar en servidores Linux. TAR preserva los permisos de archivos Unix y los enlaces simbólicos que ZIP puede no manejar correctamente.
Consideraciones de Seguridad
- Ataque de deslizamiento ZIP: Los archivos maliciosos que contienen rutas como
../../etc/passwdpueden sobrescribir archivos fuera del directorio de extracción previsto. Siempre usa bibliotecas de extracción que validen las rutas. - Seguridad de contraseñas: Las contraseñas ZipCrypto proporcionan una protección muy débil. Usa cifrado AES-256 si la herramienta lo admite.
- Bombas de archivo: El contenido muy repetitivo puede expandirse a tamaños enormes. Verifica los ratios de compresión antes de extraer archivos de fuentes no confiables.
Resumen
ZIP tiene más de 35 años y sigue siendo el formato de archivo predeterminado del mundo, integrado en los sistemas operativos y sirviendo como capa contenedor para los formatos de documento más importantes en uso hoy en día. Su diseño de directorio central permite el acceso aleatorio eficiente, su especificación abierta garantiza la implementación universal y su equilibrio entre compresión y velocidad lo hace práctico para el uso cotidiano. Para la máxima compresión, 7Z o Brotli son superiores; para la máxima compatibilidad, nada supera a ZIP.
Conversiones relacionadas
Conversiones de archivos comprimidos más usadas: