Формат ZIP
ZIP — это формат архивации файлов и сжатия данных без потерь, поддерживающий упаковку одного или нескольких файлов и папок в один архивный файл с расширением .zip. Формат использует алгоритмы сжатия (преимущественно Deflate) и позволяет объединять файлы, уменьшать их общий объём, а также шифровать содержимое. ZIP является одним из наиболее распространённых и универсальных форматов архивации, поддерживаемым большинством операционных систем и программ-архиваторов.
История
Разработка и появление
Формат ZIP был создан американским программистом Филом Кацем (Phil Katz) в 1989 году для своей программы PKZIP. Кац стремился создать более эффективный и быстрый алгоритм сжатия, чем существовавший на тот момент формат ARC, который использовал сжатие по методу Лемпеля — Зива — Велча (LZW). В ответ на судебные иски со стороны компании System Enhancement Associates (SEA), владевшей правами на ARC, Кац разработал собственный формат, который не нарушал чужих патентов. Первая версия PKZIP 1.0 вышла в 1989 году и быстро завоевала популярность благодаря высокой степени сжатия и скорости работы.
Открытие спецификации и распространение
В 1990 году Фил Кац опубликовал спецификацию формата ZIP в открытом доступе, что позволило другим разработчикам создавать совместимые архиваторы. Это решение способствовало массовому распространению формата. В 1993 году компания Info-ZIP выпустила свободные реализации утилит Zip и UnZip, которые стали основой для поддержки ZIP в операционных системах Unix и Linux. В 1996 году компания Microsoft включила поддержку ZIP в операционную систему Windows 98 через компонент «Сжатые папки» (Compressed Folders), что сделало формат стандартом де-факто для обмена файлами в среде Windows.
Современное состояние
В 2000-х годах формат ZIP был расширен: добавлена поддержка шифрования AES (Advanced Encryption Standard), Unicode-имён файлов и многотомных архивов. В 2011 году спецификация была стандартизирована как ISO/IEC 21320-1:2015 «Information technology — Document Container File — Part 1: Core». Несмотря на появление более эффективных форматов (7z, RAR, tar.gz), ZIP остаётся наиболее совместимым и широко поддерживаемым форматом архивации.
Структура формата
Общая архитектура
ZIP-архив представляет собой последовательность записей, каждая из которых описывает один файл или папку. Структура состоит из трёх основных частей:
- Локальные заголовки файлов (Local File Headers) — содержат метаданные каждого файла: имя, размер до и после сжатия, метод сжатия, CRC32-контрольная сумма, а также необязательные поля (дата, атрибуты, комментарии).
- Сжатые данные (Compressed Data) — непосредственно содержимое файла, сжатое выбранным алгоритмом.
- Центральный каталог (Central Directory) — сводная таблица, расположенная в конце архива, которая содержит информацию обо всех файлах, включая смещения к их локальным заголовкам. Это позволяет быстро читать оглавление архива без полного сканирования.
- Конец центрального каталога (End of Central Directory Record, EOCD) — маркер конца архива, содержащий общее количество файлов, размер центрального каталога и смещение к его началу.
Методы сжатия
Формат ZIP поддерживает несколько методов сжатия, из которых наиболее распространены:
- Store (без сжатия) — файл копируется в архив без изменений, используется для быстрой упаковки.
- Deflate — основной алгоритм, основанный на комбинации LZ77 (скользящее окно) и кодирования Хаффмана. Обеспечивает хорошее сжатие для большинства типов данных.
- Deflate64 — расширение Deflate с увеличенным размером скользящего окна (64 КБ вместо 32 КБ), даёт незначительное улучшение сжатия.
- BZIP2 — алгоритм на основе преобразования Барроуза — Уилера (BWT) и кодирования Хаффмана, обеспечивает более высокую степень сжатия, чем Deflate, но медленнее.
- LZMA (Lempel-Ziv-Markov chain algorithm) — алгоритм, используемый в формате 7z, обеспечивает высокую степень сжатия, но требует больше вычислительных ресурсов.
- PPMd (Prediction by Partial Matching) — контекстно-зависимый алгоритм, эффективный для текстовых данных.
Шифрование и защита
ZIP поддерживает два основных метода шифрования:
- Традиционное шифрование (ZipCrypto) — устаревший метод, основанный на потоковом шифре с использованием пароля. Уязвим для атак с использованием известного открытого текста (known-plaintext attack).
- Шифрование AES — современный стандарт, поддерживающий ключи длиной 128, 192 и 256 бит. Для хранения ключа используется алгоритм PBKDF2 (Password-Based Key Derivation Function 2) с настраиваемым числом итераций.
Применение
Операционные системы
Встроенная поддержка ZIP присутствует в большинстве современных операционных систем:
- Windows — начиная с Windows 98, функция «Сжатые папки» позволяет создавать и распаковывать ZIP-архивы без установки сторонних программ.
- macOS — встроенный архиватор (Archive Utility) поддерживает ZIP по умолчанию.
- Linux — большинство дистрибутивов включают утилиты
zipиunzip, а также графические оболочки (File Roller, Ark). - Android и iOS — многие файловые менеджеры и приложения (например, Files by Google, Documents by Readdle) поддерживают ZIP.
Программное обеспечение
Существует множество сторонних архиваторов, расширяющих возможности работы с ZIP:
- 7-Zip — свободный архиватор с открытым исходным кодом, поддерживающий ZIP, а также собственные форматы 7z и другие.
- WinRAR — коммерческий архиватор, поддерживающий ZIP наряду с собственным форматом RAR.
- WinZip — один из первых коммерческих архиваторов, популяризировавший формат ZIP.
- PeaZip — свободный кроссплатформенный архиватор с поддержкой множества форматов.
Веб и передача данных
ZIP широко используется для:
- Распространения программного обеспечения — установочные пакеты, библиотеки, документация часто упаковываются в ZIP.
- Электронной почты — вложения в виде ZIP-архивов позволяют обходить ограничения на размер и типы файлов.
- Веб-сайтов — загрузка нескольких файлов одним архивом, резервное копирование.
- Облачных хранилищ — Google Drive, Dropbox, Яндекс.Диск поддерживают предпросмотр содержимого ZIP-архивов без распаковки.
Достоинства и недостатки
Достоинства
- Универсальность — поддержка практически во всех операционных системах и программах.
- Простота — легко создаётся и распаковывается без специальных знаний.
- Скорость — алгоритм Deflate обеспечивает быстрое сжатие и распаковку.
- Совместимость — старый формат, совместимый с архиваторами, созданными десятилетия назад.
- Поддержка многотомных архивов — разбивка большого архива на несколько файлов (например, .z01, .z02, .zip).
Недостатки
- Степень сжатия — уступает более современным форматам (7z, RAR, tar.gz с bzip2 или lzma).
- Отсутствие встроенного восстановления — при повреждении архива восстановить данные сложнее, чем в RAR (у которого есть функция восстановления).
- Ограничения на размер — классический ZIP поддерживает файлы размером до 4 ГБ (2^32 байт) и архивы до 4 ГБ (без расширения ZIP64). Современные реализации поддерживают ZIP64, снимающий эти ограничения.
- Уязвимость традиционного шифрования — ZipCrypto может быть взломан при определённых условиях.
Интересные факты
- Название «ZIP» было выбрано Филом Кацем как отсылка к скорости: «zip» означает «быстро двигаться» или «застёгивать молнию».
- В 1990 году Фил Кац был признан виновным в нарушении авторских прав на формат ARC, что и подтолкнуло его к созданию ZIP.
- Алгоритм Deflate, используемый в ZIP, также лежит в основе формата PNG (Portable Network Graphics) и GZip (сжатие в Unix).
- В 2004 году была обнаружена уязвимость в традиционном шифровании ZIP (ZipCrypto), позволяющая восстановить пароль при наличии зашифрованного и незашифрованного файла в одном архиве.
- Формат ZIP используется в качестве контейнера для файлов в форматах Java JAR, Android APK, OpenDocument (ODT, ODS), а также в некоторых игровых движках (например, Unity).
Источники
- Спецификация формата ZIP (APPNOTE.TXT) — PKWARE Inc., версия 6.3.10.
- ISO/IEC 21320-1:2015 «Information technology — Document Container File — Part 1: Core».
- Кац, Фил. «PKZIP User's Manual», 1989.
- Документация проекта Info-ZIP (info-zip.org).
- Статья «ZIP (file format)» в английской Википедии (версия от 2024 года).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →