Открыть сервис

ZIP-архив

ZIP-архив — это формат сжатия данных и архивации файлов, поддерживающий сжатие без потерь и объединение нескольких файлов в один контейнер. Формат был разработан Филом Кацем для программы PKZIP и впервые опубликован в 1989 году. ZIP является одним из наиболее распространённых форматов архивации, поддерживаемым большинством операционных систем и программ-архиваторов.

История

Предпосылки и создание

В конце 1980-х годов основными форматами сжатия были ARC (программа SEA ARC) и ARJ. Фил Кац, программист из США, создал собственный формат сжатия, который предложил компании SEA (System Enhancement Associates). После отказа SEA использовать его разработку, Кац в 1989 году выпустил программу PKZIP (Pkware ZIP) и спецификацию формата ZIP в открытом доступе. Это позволило другим разработчикам создавать совместимые архиваторы.

Распространение и стандартизация

В 1990-е годы ZIP стал стандартом де-факто для архивации в MS-DOS и ранних версиях Windows. В 1993 году была выпущена версия 2.0, добавившая поддержку сжатия методом Deflate (алгоритм, разработанный Филом Кацем на основе LZ77 и кодирования Хаффмана). В 1997 году компания Microsoft включила поддержку ZIP в Windows 98 через компонент «Сжатые папки». В 2000-х годах формат был стандартизирован как ISO/IEC 21320-1:2015.

Современное состояние

ZIP остаётся одним из самых популярных форматов архивации, несмотря на появление более эффективных форматов (7z, RAR). Он используется в операционных системах (Windows, macOS, Linux), в мобильных платформах (Android, iOS), в форматах документов (Office Open XML, OpenDocument), в Java-архивах (JAR, WAR) и в игровых движках.

Технические характеристики

Структура файла

ZIP-архив состоит из последовательности записей (локальных заголовков), за которыми следуют сжатые или несжатые данные, и центрального каталога (Central Directory), расположенного в конце файла. Каждая запись содержит:

  • Сигнатура (4 байта) — идентификатор записи.
  • Версия — версия PKZIP, необходимая для распаковки.
  • Метод сжатия — 0 (без сжатия), 8 (Deflate), 12 (BZip2), 14 (LZMA), 93 (Zstandard) и другие.
  • CRC-32контрольная сумма для проверки целостности данных.
  • Размеры — сжатый и несжатый размер файла.
  • Имя файла — строка в кодировке CP437 или UTF-8 (с флагом Language Encoding Flag).
  • Дополнительные поля — метаданные, комментарии, цифровые подписи.

Методы сжатия

  • Store (0) — без сжатия, копирование данных.
  • Shrink (1) — устаревший метод, основанный на LZW.
  • Reduce (2–5) — устаревшие методы с факторизацией.
  • Implode (6) — устаревший метод на основе LZ77.
  • Deflate (8) — основной метод, использующий LZ77 и кодирование Хаффмана. Обеспечивает хорошее соотношение степени сжатия и скорости.
  • Deflate64 (9) — расширение Deflate с большим окном поиска.
  • BZip2 (12) — метод на основе блочного сортировочного преобразования Барроуза-Уиллера.
  • LZMA (14) — метод с высокой степенью сжатия, используемый в 7z.
  • Zstandard (93) — современный метод с высокой скоростью сжатия и распаковки.

Шифрование

ZIP поддерживает несколько методов шифрования:

  • Traditional PKWARE Encryptionпотоковый шифр на основе псевдослучайной последовательности (считается слабым, взламывается за минуты).
  • AES-128/192/256 — шифрование по стандарту Advanced Encryption Standard (WinZip AES). Требует поддержки со стороны архиватора.
  • Strong Encryption — расширение PKWARE для шифрования с использованием алгоритмов RC2, RC4, DES, 3DES.

Ограничения

  • Максимальный размер архива: 4 ГБ (для стандартного формата) или 16 ЭБ (для формата ZIP64).
  • Максимальное количество файлов: 65 535 (стандартный) или 2^64 (ZIP64).
  • Имена файлов: до 65 535 байт в UTF-8.

Применение

Операционные системы

  • Windows — встроенная поддержка через «Проводник» (сжатые папки).
  • macOS — встроенная поддержка через Archive Utility.
  • Linux — утилиты командной строки (zip, unzip) и графические архиваторы (File Roller, Ark).
  • Android — встроенная поддержка через файловые менеджеры (Files by Google, Solid Explorer).
  • iOS — поддержка через приложения (iZip, Documents by Readdle).

Программное обеспечение

  • Архиваторы — WinRAR, 7-Zip, PeaZip, Bandizip, WinZip.
  • Языки программирования — встроенные библиотеки (Python: zipfile, Java: java.util.zip, .NET: System.IO.Compression).
  • Форматы документов — Office Open XML (.docx, .xlsx, .pptx), OpenDocument (.odt, .ods, .odp), Java ARchive (.jar), Web ARchive (.war).

Игровая индустрия

Многие игры используют ZIP для хранения ресурсов (текстур, моделей, звуков) в сжатом виде. Примеры: игры на движках Unity, Unreal Engine, Doom (WAD-архивы, основанные на ZIP).

Интернет и распространение

ZIP-архивы используются для:

  • Скачивания файлов с веб-сайтов.
  • Распространения программного обеспечения (установщики, портативные версии).
  • Отправки вложений по электронной почте (сжатие уменьшает размер).
  • Резервного копирования данных.

Преимущества и недостатки

Преимущества

  • Универсальность — поддержка во всех операционных системах и большинстве устройств.
  • Простота — реализация алгоритмов не требует больших вычислительных ресурсов.
  • Совместимость — формат стандартизирован (ISO/IEC 21320-1:2015).
  • Многофункциональность — поддержка сжатия, шифрования, цифровых подписей, многотомных архивов.

Недостатки

  • Степень сжатия — уступает форматам 7z, RAR, Zstandard (особенно для текстовых данных).
  • Шифрование — традиционное шифрование PKWARE уязвимо для атак.
  • Поддержка Unicode — реализована не во всех архиваторах (используется флаг Language Encoding Flag).
  • Производительность — для больших архивов (сотни тысяч файлов) центральный каталог замедляет распаковку.

Интересные факты

  • Формат ZIP был назван в честь концепции «быстрого сжатия» (zip — «молния»).
  • Фил Кац умер в 2000 году в возрасте 37 лет от сердечного приступа. Его компания PKWare продолжает существовать.
  • В 2015 году ZIP был включён в список стандартов ISO (ISO/IEC 21320-1:2015).
  • Формат используется в Android для установки приложений (APK-файлы — это ZIP-архивы).
  • В 2017 году была обнаружена уязвимость Zip Slip, позволяющая записывать файлы за пределы целевой директории при распаковке.

Критика и альтернативы

  • Безопасность — традиционное шифрование PKWARE считается слабым. Рекомендуется использовать AES-256.
  • Эффективность — для больших объёмов данных (гигабайты) форматы 7z (LZMA2) и RAR (RAR5) обеспечивают лучшее сжатие.
  • Скорость — для реального времени (например, потоковое сжатие) предпочтительны Zstandard или LZ4.

Источники

  • Спецификация формата ZIP (PKWARE Inc., версия 6.3.10, 2021).
  • ISO/IEC 21320-1:2015 «Information technology — Document Container File — Part 1: ZIP».
  • Статья «A History of ZIP» (IEEE Spectrum, 2019).
  • Документация библиотеки Python zipfile (Python Software Foundation).
  • Исследование «Zip Slip Vulnerability» (Snyk, 2018).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →