Из Википедии, бесплатной энциклопедии
  (Перенаправлено из Zip (формат файла) )
Перейти к навигации Перейти к поиску

ZIP - это формат файла архива, который поддерживает сжатие данных без потерь . ZIP-файл может содержать один или несколько файлов или каталогов, которые могли быть сжаты. Формат файла ZIP позволяет использовать несколько алгоритмов сжатия , хотя DEFLATE является наиболее распространенным. Этот формат первоначально был создан в 1989 году и впервые был реализован в PKWARE, Inc. «s PKZIP полезности, [2] в качестве замены предыдущего АРК формата сжатия по Thom Хендерсон. Формат ZIP затем быстро стал поддерживаться многими программными утилитами, кроме PKZIP. Microsoft включила встроенную поддержку ZIP (под названием «сжатые папки») в версииMicrosoft Windows с 1998 года. Apple включила встроенную поддержку ZIP в Mac OS X 10.3 (через BOMArchiveHelper, теперь Archive Utility ) и позже. Большинство бесплатных операционных систем имеют встроенную поддержку ZIP, аналогично Windows и Mac OS X.

Файлы ZIP обычно используют расширения файлов .zip или .ZIP и тип мультимедиа MIME . [1] ZIP используется в качестве базового формата файла во многих программах, обычно под другим именем. При навигации по файловой системе через пользовательский интерфейс графические значки, представляющие файлы ZIP, часто отображаются в виде документа или другого объекта с заметной застежкой-молнией .application/zip

История [ править ]

Формат файла .ZIP был разработан Филом Кацем из PKWARE и Гэри Конвеем из Infinity Design Concepts. Формат был создан после того, как Systems Enhancement Associates (SEA) подала иск против PKWARE, утверждая, что архивные продукты последней, названные PKARC, являются производными от системы архивирования ARC SEA . [3] Название «застежка-молния» (что означает «двигаться с высокой скоростью») было предложено другом Каца, Робертом Махони. [4] Они хотели дать понять, что их продукт будет быстрее, чем ARC и другие форматы сжатия того времени. [4] Самая ранняя известная версия спецификации формата файла .ZIP. был впервые опубликован как часть пакета PKZIP 0.9 под файлом APPNOTE.TXT в 1989 году. [ необходима цитата ] Благодаря распространению формата zip-файла в APPNOTE.TXT совместимость с форматом zip-файла широко распространилась в общедоступном Интернете в течение 1990-х годов. [5]

14 февраля 1989 года PKWARE и Infinity Design Concepts выпустили совместный пресс-релиз, выпустив формат файла .ZIP в общественное достояние . [6] [7] [8] [9] [10]

История версий [ править ]

Спецификация формата файла .ZIP имеет собственный номер версии, который не обязательно соответствует номерам версий для инструмента PKZIP, особенно с PKZIP 6 или новее. В разное время в PKWARE добавлялись предварительные функции, которые позволяют продуктам PKZIP извлекать архивы с использованием расширенных функций, но продукты PKZIP, которые создают такие архивы, не будут доступны до следующего основного выпуска. Другие компании или организации поддерживают спецификации PKWARE в своем собственном темпе.

Спецификация формата файла .ZIP официально называется «APPNOTE - .ZIP File Format Specification» и публикуется на веб-сайте PKWARE.com с конца 1990-х годов. [11] Несколько версий спецификации не были опубликованы. Спецификации некоторых функций, таких как сжатие BZIP2 , спецификация надежного шифрования и другие, были опубликованы PKWARE через несколько лет после их создания. URL-адрес онлайн-спецификации менялся несколько раз на веб-сайте PKWARE.

Краткое изложение основных достижений в различных версиях спецификации PKWARE:

  • 2.0: (1993) [1] Записи файлов можно сжимать с помощью DEFLATE и использовать традиционное шифрование PKWARE (ZipCrypto).
  • 2.1: (1996) Сжатие Deflate64
  • 4.5: (2001) [12] Документированный 64-битный zip-формат.
  • 4.6: (2001) сжатие BZIP2 (не опубликовано в Интернете до публикации APPNOTE 5.2)
  • 5.0: (2002) SES: DES , Triple DES , RC2 , RC4 поддерживается для шифрования (не опубликовано в Интернете до публикации APPNOTE 5.2)
  • 5.2: (2003) [13] [14] Поддержка шифрования AES для SES (определено в APPNOTE 5.1, которое не было опубликовано в сети) и AES из WinZip («AE-x»); исправленная версия RC2-64, поддерживающая шифрование SES.
  • 6.1: (2004) [15] Документированное хранилище сертификатов.
  • 6.2.0: (2004) [16] Документированное шифрование центрального каталога.
  • 6.3.0: (2006) [17] Хранение файлов с документированным Unicode ( UTF-8 ). Расширен список поддерживаемых алгоритмов хеширования, сжатия ( LZMA , PPMd + ), шифрования.
  • 6.3.1: (2007) [18] Исправленные стандартные хеш-значения для SHA-256/384/512.
  • 6.3.2: (2007) [19] Документированный метод сжатия 97 ( WavPack ).
  • 6.3.3: (2012) [20] Изменения в форматировании документа для облегчения ссылок на указания по применению PKWARE из других стандартов с использованием таких методов, как JTC 1 Referencing Explanatory Report (RER), как указано в JTC 1 / SC 34 N 1621.
  • 6.3.4: (2014) [21] Обновляет адрес офиса PKWARE, Inc.
  • 6.3.5: (2018) [22] Задокументированы методы сжатия 16, 96 и 99, эпоха и точность временных меток DOS, добавлены дополнительные поля для ключей и дешифрования, а также опечатки и пояснения.
  • 6.3.6: (2019) [23] Исправлена ​​опечатка.
  • 6.3.7: (2020) [24] Добавлен метод сжатия Zstandard с идентификатором 20.
  • 6.3.8: (2020) [25] Идентификатор метода сжатия Zstandard перемещен с 20 на 93, исключая предыдущий. Документированные идентификаторы метода 94 и 95 ( MP3 и XZ соответственно).
  • 6.3.9: (2020) [26] Исправлена ​​опечатка в описании выравнивания потока данных.

WinZip , начиная с версии 12.1, использует расширение .zipx для файлов ZIP, которые используют более новые методы сжатия, чем DEFLATE; в частности, методы BZip, LZMA, PPMd, Jpeg и Wavpack. Последние 2 применяются к соответствующим типам файлов, когда выбрано сжатие «Лучший метод». [27] [28]

Стандартизация [ править ]

В апреле 2010 года ISO / IEC JTC 1 инициировал голосование, чтобы определить, следует ли инициировать проект по созданию международного стандартного формата ISO / IEC, совместимого с ZIP. [29] Предлагаемый проект под названием Document Packaging предусматривал ZIP-совместимый «минимальный сжатый архивный формат», подходящий для использования с рядом существующих стандартов, включая OpenDocument , Office Open XML и EPUB .

В 2015 году был опубликован ISO / IEC 21320-1 «Файл-контейнер документа - Часть 1: Ядро», в котором говорится, что «Файлы-контейнеры документов соответствуют файлам Zip». Это требует следующих основных ограничений формата файла ZIP: [30]

  • Файлы в ZIP-архивах могут храниться только в несжатом виде или с использованием сжатия «deflate» (т. Е. Метод сжатия может содержать значение «0» - сохранено или «8» - спущено).
  • Функции шифрования запрещены.
  • Использование цифровой подписи (от SES) запрещено.
  • Функции "исправленных данных" (от PKPatchMaker) запрещены.
  • Архивы не могут охватывать несколько томов или быть сегментированными.

Дизайн [ править ]

Файлы .ZIP - это архивы, в которых хранится несколько файлов. ZIP позволяет сжимать содержащиеся файлы, используя множество различных методов, а также просто сохранять файл без сжатия. Каждый файл хранится отдельно, что позволяет сжимать разные файлы в одном архиве разными методами. Поскольку файлы в ZIP-архиве сжимаются по отдельности, их можно извлекать или добавлять новые без применения сжатия или распаковки ко всему архиву. Это контрастирует с форматом сжатых файлов tar , для которых такая обработка произвольного доступа не так легко возможна.

Каталог помещается в конец ZIP-файла. Это определяет, какие файлы находятся в ZIP-архиве, и определяет, где в ZIP-архиве находится этот файл. Это позволяет читателям ZIP загружать список файлов без чтения всего ZIP-архива. ZIP-архивы также могут включать в себя дополнительные данные, не относящиеся к ZIP-архиву. Это позволяет преобразовать ZIP-архив в самораспаковывающийся архив (приложение, которое распаковывает содержащиеся в нем данные), добавляя программный код к ZIP-архиву и отмечая файл как исполняемый. Сохранение каталога в конце также позволяет скрыть заархивированный файл, добавив его к безобидному файлу, например к файлу изображения GIF.

Формат .ZIP использует 32-битный алгоритм CRC и включает две копии структуры каталогов архива для обеспечения большей защиты от потери данных.

Структура [ править ]

ZIP-64 Внутренняя компоновка

ZIP-файл правильно идентифицируется по наличию конца записи центрального каталога, который находится в конце структуры архива, чтобы можно было легко добавлять новые файлы. Если конец записи центрального каталога указывает на непустой архив, имя каждого файла или каталога в архиве должно быть указано в записи центрального каталога вместе с другими метаданными о записи и смещением в ZIP-файле, указывающим к фактическим входным данным. Это позволяет относительно быстро составлять список файлов архива, поскольку не нужно читать весь архив, чтобы увидеть список файлов. Записи в ZIP-файле также включают эту информацию для избыточности в локальный заголовок файла.. Поскольку файлы ZIP могут быть добавлены, допустимы только файлы, указанные в центральном каталоге в конце файла. Сканирование ZIP-файла на предмет локальных заголовков файлов недопустимо (за исключением случаев поврежденных архивов), поскольку центральный каталог может объявлять, что некоторые файлы были удалены, а другие обновлены.

Например, мы можем начать с ZIP-файла, который содержит файлы A, B и C. Затем файл B удаляется, а файл C. Этого можно достичь, просто добавив новый файл C в конец исходного файла ZIP и добавив новый центральный каталог, в котором перечислены только файл A и новый файл C. Когда ZIP был впервые разработан, передача файлов с помощью гибких дисков была обычным явлением, однако запись на диски отнимала очень много времени. Если у вас есть большой zip-файл, возможно, охватывающий несколько дисков, и вам нужно обновить только несколько файлов, а не читать и перезаписывать все файлы, было бы значительно быстрее просто прочитать старый центральный каталог и добавить новые файлы затем добавьте обновленный центральный каталог.

Порядок записей файлов в центральном каталоге не обязательно должен совпадать с порядком записей файлов в архиве.

Каждая запись, хранящаяся в архиве ZIP, представлена локальным заголовком файла с информацией о файле, такой как комментарий, размер файла и имя файла, за которыми следуют необязательные «дополнительные» поля данных, а затем возможно сжатые, возможно зашифрованные данные файла. «Дополнительные» поля данных являются ключом к расширяемости формата ZIP. «Дополнительные» поля используются для поддержки формата ZIP64, WinZip-совместимого шифрования AES, атрибутов файлов и временных меток файлов NTFS или Unix с более высоким разрешением. Другие расширения возможны через поле «Дополнительно». По спецификации инструменты ZIP должны игнорировать лишние поля, которые они не распознают.

Формат ZIP использует определенные 4-байтовые «подписи» для обозначения различных структур в файле. Каждая запись файла помечена определенной подписью. Конец записи центрального каталога обозначается ее конкретной подписью, и каждая запись в центральном каталоге начинается с 4-байтовой подписи заголовка центрального файла .

В спецификации ZIP нет маркеров BOF или EOF. Обычно в ZIP-файле первым делом является запись ZIP, которую можно легко идентифицировать по подписи локального заголовка файла . Однако это не обязательно так, поскольку этого не требует спецификация ZIP - в частности, самораспаковывающийся архив начинается с заголовка исполняемого файла.

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

Большинство подписей оканчиваются коротким целым числом 0x4b50, которое хранится в порядке от младшего к старшему . Рассматриваемый как строка ASCII, он читается как «PK», инициалы изобретателя Фила Каца. Таким образом, когда ZIP-файл просматривается в текстовом редакторе, первые два байта файла обычно являются «PK». (Самораспаковывающиеся ZIP-файлы для DOS, OS / 2 и Windows имеют EXE перед ZIP -файлом, поэтому начинайте с «MZ»; самораспаковывающимся ZIP-файлам для других операционных систем может также предшествовать исполняемый код для извлечения содержимого архива на этой платформе.)

Спецификация .ZIP также поддерживает распространение архивов по нескольким файлам файловой системы. Первоначально предназначенная для хранения больших ZIP-файлов на нескольких дискетах , эта функция теперь используется для отправки ZIP-архивов частями по электронной почте или через другие транспортные средства или съемные носители.

Файловая система FAT из DOS имеет разрешение временных меток составляют всего две секунды; Записи в формате ZIP имитируют это. В результате встроенное разрешение временных меток файлов в ZIP-архиве составляет всего две секунды, хотя дополнительные поля могут использоваться для хранения более точных временных меток. Формат ZIP не имеет понятия о часовом поясе , поэтому временные метки имеют смысл только в том случае, если известно, в каком часовом поясе они были созданы.

В сентябре 2007 года PKWARE выпустила пересмотренную версию спецификации ZIP, предусматривающую хранение имен файлов с использованием UTF-8 , наконец добавив в ZIP совместимость с Unicode. [31]

Заголовки файлов [ править ]

Все многобайтовые значения в заголовке хранятся в обратном порядке байтов. Все поля длины считают длину в байтах.

Заголовок локального файла [ править ]

Дополнительное поле содержит множество дополнительных данных, таких как атрибуты ОС. Он разделен на записи, каждая из которых имеет как минимум 16-битную подпись и 16-битную длину. Запись дополнительного поля локального файла ZIP64, например, имеет подпись 0x0001 и длину 16 байт (или более), так что могут следовать два 64-битных значения (сжатый и несжатый размеры). Другое распространенное расширение локального файла - 0x5455 (или «UT»), которое содержит 32-битные временные метки UTC UNIX.

Сразу за ним следуют сжатые данные.

Дескриптор данных [ править ]

Если бит со смещением 3 (0x08) поля флагов общего назначения установлен, тогда CRC-32 и размеры файла неизвестны при записи заголовка. Поля в локальном заголовке заполняются нулями, а CRC-32 и размер добавляются в 12-байтовую структуру (необязательно с предшествующей 4-байтовой подписью) сразу после сжатых данных:

Заголовок файла центрального каталога [ править ]

Запись центрального каталога - это расширенная форма локального заголовка:

Конец записи центрального каталога (EOCD) [ править ]

После всех записей центрального каталога следует конец записи центрального каталога (EOCD), который отмечает конец ZIP-файла:

Такой порядок позволяет создать ZIP-файл за один проход, но центральный каталог также помещается в конец файла, чтобы облегчить удаление файлов из архивов, состоящих из нескольких частей (например, «нескольких гибких дисков») , например обсуждалось ранее.

Методы сжатия [ править ]

Спецификация формата файла .ZIP документирует следующие методы сжатия: Store (без сжатия), Shrink (LZW), Reduce (уровни 1-4; LZ77 + вероятностный), Implode, Deflate, Deflate64, bzip2 , LZMA , WavPack , PPMd и вариант LZ77, предоставляемый инструкцией IBM z / OS CMPSC. [32] [22] Наиболее часто используемым методом сжатия является DEFLATE , который описан в IETF RFC  1951 .

Другие методы, упомянутые, но подробно не задокументированные в спецификации, включают: PKWARE DCL Implode (старый IBM TERSE), новый IBM TERSE , IBM LZ77 z Architecture (PFS) и вариант JPEG. Метод «Tokenize» был зарезервирован для третьей стороны, но поддержка так и не была добавлена. [22]

PKWARE злоупотребляет словом Implode : DCL / TERSE Implode отличается от старого PKZIP Implode, предшественника Deflate. DCL Implode недокументирован частично из-за того, что его собственность принадлежит IBM, но Марк Адлер , тем не менее, предоставил декомпрессор под названием «blast» вместе с zlib. [33]

Шифрование [ править ]

ZIP поддерживает простую систему симметричного шифрования на основе пароля, обычно известную как ZipCrypto. Он задокументирован в спецификации ZIP и известен как серьезный изъян. В частности, он уязвим для атак с использованием известного открытого текста , которые в некоторых случаях усугубляются плохой реализацией генераторов случайных чисел . [5]

Новые функции, включая новые методы сжатия и шифрования (например, AES ), были задокументированы в Спецификации формата файлов ZIP, начиная с версии 5.2. WinZip -developed AES на основе открытого стандарта ( «АЕ-х» в AppNote) используется также 7-Zip и Xceed , но некоторые производители используют другие форматы. [34] PKWARE SecureZIP (SES, проприетарный) также поддерживает методы шифрования RC2, RC4, DES, Triple DES, шифрование и аутентификацию на основе цифрового сертификата ( X.509 ) и шифрование заголовка архива. Однако он запатентован (см. § Сильные споры о шифровании ). [35]

Шифрование имени файла представлено в спецификации формата файла .ZIP 6.2, которая шифрует метаданные, хранящиеся в части архива Центрального каталога, но разделы локального заголовка остаются незашифрованными. Соответствующий архиватор может фальсифицировать данные локального заголовка при использовании шифрования центрального каталога. Начиная с версии 6.2 спецификации, поля Compression Method и Compressed Size в локальном заголовке еще не замаскированы.

ZIP64 [ править ]

Оригинальный .ZIP формат был 4 Гигабайт (2 32 предел байт) на различных вещей (размер несжатого файла, размер сжатого файла, а общий размер архива), а также предел 65535 (2 16 ) записи в ZIP-архиве. В версии 4.5 спецификации (которая не совпадает с версией 4.5 любого конкретного инструмента) PKWARE представила расширения формата «ZIP64», чтобы обойти эти ограничения, увеличив пределы до 16  EiB (2 64 байта). По сути, он использует «обычную» запись в центральном каталоге для файла, за которой следует необязательная запись в каталоге «zip64» с полями большего размера. [36]

Формат заголовка локального файла (LOC) и записи центрального каталога (CEN) одинаков в ZIP и ZIP64. Однако ZIP64 определяет дополнительное поле, которое может быть добавлено к этим записям по усмотрению компрессора, цель которого - хранить значения, не подходящие для классических записей LOC или CEN. Чтобы сигнализировать, что фактические значения хранятся в дополнительных полях ZIP64, они устанавливаются на 0xFFFF или 0xFFFFFFFF в соответствующей записи LOC или CEN.

С другой стороны, формат EOCD для ZIP64 немного отличается от обычной версии ZIP. [31]

Это также не обязательно последняя запись в файле. Далее следует указатель конца центрального каталога (дополнительные 20 байтов в конце).

Проводник в Windows XP не поддерживает ZIP64, но проводник в Windows Vista и более поздних версиях поддерживает. [ необходима цитата ] Аналогичным образом, некоторые библиотеки расширений поддерживают ZIP64, например DotNetZip, QuaZIP [37] и IO :: Compress :: Zip в Perl. Python «s встроенный ZipFile поддерживает его с момента 2,5 и по умолчанию это , так как 3.4. [38] Встроенный java.util.zip OpenJDK поддерживает ZIP64 начиная с версии Java 7 . [39] Android Java API поддерживает ZIP64 начиная с Android 6.0. [40] Утилита архивирования Mac OS Sierra, в частности, не поддерживает ZIP64 и может создавать поврежденные архивы, когда потребуется ZIP64. [41] Однако команда ditto, поставляемая с Mac OS, распакует файлы ZIP64. [42] Более свежие [ когда? ] версии Mac OS поставляются с инструментами командной строки info-zip zip и unzip, которые действительно поддерживают Zip64: чтобы проверить, запустите zip -v и найдите «ZIP64_SUPPORT».

Сочетание с другими форматами файлов [ править ]

Формат файла .ZIP позволяет разместить комментарий, содержащий до 65 535 (2 16 -1) байтов данных, в конце файла после центрального каталога. [31] Кроме того, поскольку центральный каталог определяет смещение каждого файла в архиве относительно начала, возможно, что первая запись файла начинается с смещения, отличного от нуля, хотя некоторые инструменты, например gzip , будут не обрабатывать архивные файлы, которые не начинаются с записи файла с нулевым смещением.

Это позволяет произвольным данным находиться в файле как до, так и после данных архива ZIP, а также для чтения архива приложением ZIP. Побочным эффектом этого является то, что можно создать файл, который является одновременно рабочим ZIP-архивом и другим форматом, при условии, что другой формат допускает произвольные данные в его конце, начале или середине. Самораспаковывающиеся архивы (SFX) в форме, поддерживаемой WinZip, используют это преимущество, поскольку они являются исполняемыми ( .exe ) файлами, которые соответствуют спецификации PKZIP AppNote.txt и могут быть прочитаны совместимыми инструментами или библиотеками zip. .

Это свойство формата .ZIP и формата JAR, который является вариантом ZIP, можно использовать для сокрытия несанкционированного содержимого (например, вредоносных классов Java) внутри, казалось бы, безобидного файла, например изображения GIF, загруженного в Интернет. Этот так называемый эксплойт GIFAR был продемонстрирован как эффективная атака на веб-приложения, такие как Facebook. [43]

Ограничения [ править ]

Минимальный размер файла .ZIP составляет 22 байта. Такой пустой zip-файл содержит только конец записи центрального каталога (EOCD):
[0x50,0x4B,0x05,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]

Максимальный размер как для архивного файла, так и для отдельных файлов внутри него составляет 4 294 967 295 байт (2 32 -1 байт, или 4 ГиБ минус 1 байт) для стандартного ZIP. Для ZIP64 максимальный размер составляет 18 446 744 073 709 551 615 байт (2 64 -1 байт, или 16 EiB минус 1 байт). [44]

Собственные расширения [ править ]

Дополнительное поле [ править ]

Формат файла .ZIP включает в себя дополнительные поля в заголовках файлов, которые можно использовать для хранения дополнительных данных, не определенных существующими спецификациями ZIP, и которые позволяют совместимым архиваторам, которые не распознают поля, безопасно пропускать их. Идентификаторы заголовков 0–31 зарезервированы для использования PKWARE. Остальные идентификаторы могут использоваться сторонними поставщиками для собственного использования.

Споры о шифровании [ править ]

Когда в 2003 году была выпущена общедоступная бета-версия WinZip 9.0, WinZip представил собственное шифрование AES-256 с использованием другого формата файла вместе с документацией по новой спецификации. [45] Сами стандарты шифрования не были проприетарными , но PKWARE не обновляла APPNOTE.TXT, чтобы включить в него спецификацию строгого шифрования (SES) с 2001 года, которая использовалась PKZIP версий 5.0 и 6.0. Технический консультант WinZip Кевин Кирни и менеджер по продукту StuffIt Мэтью Ковингтон обвинили PKWARE в удержании SES, но технический директор PKZIP Джим Петерсон заявил, что шифрование на основе сертификатов все еще не завершено.

В другом спорном шаге PKWare подала заявку на патент 16 июля 2003 года, описывающий метод объединения ZIP и надежного шифрования для создания безопасного файла. [46]

В конце концов, PKWARE и WinZip согласились поддерживать продукты друг друга. 21 января 2004 года PKWARE объявила о поддержке формата сжатия AES на основе WinZip. [47] В более поздней версии бета-версии WinZip он мог поддерживать файлы ZIP на основе SES. [48] PKWARE в конечном итоге выпустила для общественности версию 5.2 Спецификации формата файла .ZIP, которая документировала SES. Свободное программное обеспечение проекта 7-Zip также поддерживает AES, но не SES в ZIP - файлов (как это делает его POSIX порта p7zip ).

При использовании шифрования AES в WinZip для метода сжатия всегда устанавливается значение 99, при этом фактический метод сжатия сохраняется в дополнительном поле данных AES. [49] В отличие от этого, спецификация строгого шифрования хранит метод сжатия в сегменте основного заголовка файла в локальном заголовке и центральном каталоге, если только шифрование центрального каталога не используется для маскировки / шифрования метаданных.

Реализация [ править ]

Доступно множество инструментов .ZIP и множество библиотек .ZIP для различных сред программирования; используемые лицензии включают проприетарное и бесплатное программное обеспечение . WinZip , WinRAR , Info-ZIP , 7-Zip , PeaZip и B1 Free Archiver - это хорошо известные инструменты .ZIP, доступные на различных платформах. Некоторые из этих инструментов имеют библиотечные или программные интерфейсы.

Некоторые библиотеки разработки, лицензированные по соглашению с открытым исходным кодом, - это libzip , libarchive и Info-ZIP . Для Java: Java Platform Standard Edition содержит пакет «java.util.zip» для обработки стандартных файлов .ZIP; библиотека Zip64File специально поддерживает файлы большого размера (более 4 ГБ) и обрабатывает файлы .ZIP с использованием произвольного доступа; а инструмент Apache Ant содержит более полную реализацию, выпущенную под лицензией Apache Software License .

В реализациях формата .ZIP Info-ZIP добавлена ​​поддержка функций файловой системы Unix, таких как идентификаторы пользователей и групп, права доступа к файлам и поддержка символических ссылок. Реализация Apache Ant знает об этом до такой степени, что может создавать файлы с предопределенными разрешениями Unix. Реализации Info-ZIP также знают, как использовать возможности исправления ошибок, встроенные в формат сжатия .ZIP. Некоторые программы этого не делают и не работают с файлом, в котором есть ошибки.

Инструменты Windows Info-ZIP также поддерживают разрешения файловой системы NTFS и будут пытаться преобразовать разрешения NTFS в разрешения Unix или наоборот при извлечении файлов. Это может привести к потенциально непреднамеренным комбинациям, например к созданию файлов .exe на томах NTFS с отказом в разрешении на выполнение.

Версии Microsoft Windows включают поддержку сжатия .ZIP в проводнике со времен Microsoft Plus! pack был выпущен для Windows 98. Microsoft называет эту функцию «Сжатые папки». Не все функции .ZIP поддерживаются функцией сжатых папок Windows. Например, шифрование не поддерживается в Windows 10 Home edition [50], хотя оно может расшифровывать. Кодировка записей Unicode не поддерживается до Windows 7 , в то время как разделенные и составные архивы не доступны для чтения или записи с помощью функции сжатых папок, а также не поддерживается шифрование AES. [51]

Microsoft Office начал использовать формат zip-архива в 2006 году для своих файлов Office Open XML .docx, .xlsx, .pptx и т. Д., Который стал форматом файлов по умолчанию в Microsoft Office 2007 .

Наследие [ править ]

Существует множество других стандартов и форматов, в названии которых используется слово «zip». Например, zip отличается от gzip , а последний определен в IETF RFC 1952 . И zip, и gzip в основном используют алгоритм DEFLATE для сжатия. Аналогичным образом, формат ZLIB (IETF RFC 1950 ) также использует алгоритм сжатия DEFLATE, но определяет разные заголовки для проверки ошибок и согласованности. Другие распространенные форматы с одинаковыми названиями и программы с разными собственными форматами включают 7-Zip , bzip2 и rzip .  

Проблемы [ править ]

Теоретический максимальный коэффициент сжатия для необработанного потока DEFLATE составляет примерно 1032 к одному, [52] но, используя формат ZIP непреднамеренно, можно создать ZIP-архивы с коэффициентами сжатия в миллиарды к одному. Эти zip-бомбы распаковываются до очень больших размеров, что превышает возможности компьютера, на котором они распаковываются. [53]

См. Также [ править ]

  • Сравнение файловых архиваторов
  • Сравнение форматов архивов
  • Список форматов архивов
  • LZW

Ссылки [ править ]

  1. ^ a b c Регистрация нового MIME Content-Type / Subtype - application / zip , IANA , 20 июля 1993 г. , получено 5 января 2012 г.
  2. ^ "Филипп Кац, пионер компьютерного программного обеспечения, 37" . Нью-Йорк Таймс'. 1 мая 2000 . Проверено 14 июня 2009 года .
  3. ^ Мюррей, Мэтт; Танненбаум, Джеффри А. (15 августа 1997 г.). «Взлет и падение звезды программного обеспечения; Фил Кац любил код - и алкоголь» . The Wall Street Journal (онлайн-изд.). Архивировано из оригинала 4 марта 2016 года. Альтернативный URL Обновлено 19 июня 2000 г.
  4. ^ a b "Библиотека документальных фильмов BBS" . www.bbsdocumentary.com . Проверено 25 сентября 2020 года .
  5. ^ a b Останься, Майкл. «Атаки ZIP с уменьшенным известным открытым текстом» (PDF) . Math.ucr.edu . Архивировано из оригинального (PDF) 28 октября 2017 года . Проверено 9 сентября 2017 года .
  6. ^ Брайан Ливингстон (8 сентября 2003 г.), PKZip Must Open Up , получено 5 января 2012 г. Формат файла ZIP предоставляется бесплатно в общественное достояние и не может быть востребован ни юридически, ни морально любым лицом, организацией или компанией.
  7. ^ Откуда вообще взялись Zip-файлы? , Infinity Design Concepts, Inc. , получено 5 января 2012 г.
  8. Пресс-релиз , 1989 г. , получено 5 января 2012 г.
  9. ^ Наш основатель - Фил Кац , PKWARE, заархивировано из оригинала 1 октября 2010 г. , извлечено 5 января 2012 г.
  10. ^ Гарет Хортон; Роб Вейр; Алекс Браун (2 ноября 2010 г.), sc34-wg1 , получено 5 января 2012 г.
  11. ^ .ZIP Application Note , получено 20 июля 2012 г.
  12. ^ Файл: APPNOTE.TXT - Спецификация формата файла .ZIP Версия: 4.5 Пересмотрено: 01.11.2001 , 3 декабря 2001 г., заархивировано из оригинала 3 декабря 2001 г. , получено 21 апреля 2012 г.
  13. ^ APPNOTE.TXT - Спецификация формата файла .ZIP, версия: 5.2 - Уведомление об изменении , 16 июля 2003 г. , получено 5 января 2012 г.
  14. ^ Файл: APPNOTE.TXT - Спецификация формата файла .ZIP Версия: 5.2 - Уведомление об изменении - Пересмотрено: 02.06.2003 , 2 июля 2003 г., заархивировано из оригинала 2 июля 2003 г. , получено 21 апреля 2012 г.
  15. ^ Файл: APPNOTE - Спецификация формата файла .ZIP Версия: 6.1.0 - Уведомление об изменении - Пересмотрено: 20.01.2004 , 19 августа 2004 г., заархивировано из оригинала 19 августа 2004 г. , получено 21 апреля 2012 г.
  16. ^ APPNOTE.TXT - Спецификация формата файла .ZIP, версия: 6.2.0 - Уведомление об изменении , 26 апреля 2004 г. , получено 5 января 2012 г.
  17. ^ APPNOTE.TXT - Спецификация формата файла .ZIP, версия: 6.3.0 , 29 сентября 2006 г. , получено 5 января 2012 г.
  18. ^ APPNOTE.TXT - Спецификация формата файла .ZIP, версия: 6.3.1 , 11 апреля 2007 г. , получено 25 июня 2018 г.
  19. ^ APPNOTE.TXT - Спецификация формата файла .ZIP Версия: 6.3.2 , 28 сентября 2007 г. , получено 25 июня 2018 г.
  20. ^ APPNOTE.TXT - Спецификация формата файла .ZIP Версия: 6.3.3 , 1 сентября 2012 г. , получено 25 июня 2018 г.
  21. ^ APPNOTE.TXT - Спецификация формата файла .ZIP Версия: 6.3.4 , 1 октября 2014 г. , получено 25 июня 2018 г.
  22. ^ a b c APPNOTE.TXT - спецификация формата файла .ZIP Версия: 6.3.5 , 20 декабря 2018 г. , получено 3 января 2019 г.
  23. ^ APPNOTE.TXT - Спецификация формата файла .ZIP Версия: 6.3.6 , 26 апреля 2019 г. , получено 3 января 2019 г.
  24. ^ APPNOTE.TXT - Спецификация формата файла .ZIP Версия: 6.3.7 , 1 июня 2020 г. , получено 6 июня 2020 г.
  25. ^ APPNOTE.TXT - Спецификация формата файла .ZIP Версия: 6.3.8 , 15 июня 2020 г. , получено 7 июля 2020 г.
  26. ^ APPNOTE.TXT - Спецификация формата файла .ZIP Версия: 6.3.9 , 15 июля 2020 г. , получено 8 августа 2020 г.
  27. ^ «Дополнительные спецификации методов сжатия» . WinZip . Mansfield, CT : WinZip Computing, SL 19 мая 2009 . Проверено 24 мая 2009 года .
  28. ^ "Что такое Zipx-файл?" . Winzip: База знаний . Mansfield, CT : WinZip Computing, SL 13 августа 2010 . Проверено 17 августа 2010 года .
  29. ^ «ISO / IEC JTC 1 / SC 34 - Описание документов и языки обработки» (PDF) . 12 апреля 2010 Архивировано из оригинального (PDF) 12 мая 2014 . Проверено 10 мая 2014 .
  30. ^ «Файл-контейнер документа ISO / IEC 21320-1: 2015 - Часть 1: Ядро» . ITTF. 2015 г.
  31. ^ a b c d e f g h i "Файл: APPNOTE.TXT - .ZIP. Спецификация формата файла: Версия: 6.3.4" (TXT) . Pkware.com . Проверено 9 сентября 2017 года .
  32. ^ Адлер, Марк. «Как связаны zlib, gzip и zip? Что у них общего и чем они отличаются?» . Проверено 27 ноября 2018 года .
  33. ^ «Часто задаваемые вопросы о zlib» . zlib . PKWare DCL использует совершенно другой формат сжатых данных, чем PKZIP и zlib. Однако вы можете поискать возможное решение вашей проблемы в каталоге contrib / blast zlib.( вклад / взрыв )
  34. ^ «Информация о шифровании AES: Спецификация шифрования AE-1 и AE-2» . Winzip.com . Проверено 9 сентября 2017 года .
  35. ^ «APPNOTE - PKZIP / SecureZIP - Сайт поддержки PKWARE» . Pkware.com . Проверено 9 сентября 2017 года .
  36. ^ "Файл: APPNOTE.TXT - Спецификация формата файла .ZIP: Версия: 6.3.4" (TXT) . Pkware.cachefly.net . Проверено 9 сентября 2017 года .
  37. ^ "Изменения QuaZIP" . 22 января 2014 . Проверено 25 января 2014 года .
  38. ^ «Улучшение Python: используйте allowZip64 = True по умолчанию (3.4)» . Проверено 6 мая 2014 .
  39. Шен, Сюэмин (17 апреля 2009 г.). «ZIP64, теперь поддерживается формат> 4G Zipfile» . Блог Сюэмин Шэнь . Sun Microsystems . Проверено 27 сентября 2010 года .
  40. ^ «Войти - Аккаунты Google» . code.google.com . Проверено 9 сентября 2017 года .
  41. ^ «Ошибка: неверная подпись заголовка файла центрального каталога при распаковке больших файлов, заархивированных mac os. · Проблема № 69 · thejoshwolfe / yauzl» . GitHub .
  42. ^ «Распакуйте большой zip-файл (50 ГБ) в Mac OS X» . Проверено 17 декабря 2018 года .
  43. ^ Макмиллан, Роберт. «Фотография, которая может украсть ваши учетные данные в Интернете» . Infoworld.com . Проверено 9 сентября 2017 года .
  44. ^ «ZipArchive: формат Zip64: выход за пределы размеров файлов и количества файлов и сегментов» . Artpol-software.com . Проверено 9 сентября 2017 года .
  45. ^ «WinZip - информация о шифровании AES» . Winzip.com . Проверено 9 сентября 2017 года .
  46. Макмиллан, Роберт (25 июля 2003 г.). «PKWare подает заявку на патент на формат файла .zip» . InfoWorld.com . Архивировано из оригинального 10 августа 2003 года . Проверено 16 июня 2008 года .
  47. ^ "Разработчики программного обеспечения исправляют Zip tiff" . News.com . Проверено 9 сентября 2017 года .
  48. ^ Джон Лейден. «Взломано шифрование Zip-файла» . Theregister.co.uk . Проверено 9 сентября 2017 года .
  49. ^ «Информация о шифровании AES: Спецификация шифрования AE-1 и AE-2» . Winzip.com . Проверено 9 сентября 2017 года .
  50. ^ Maham Мухтар (август 2017). Вариант «2 способа исправить» зашифровать содержимое для защиты данных выделен серым цветом в Windows 10 » . iTechtics . EFS доступна для всех выпусков Windows 10, кроме выпуска Windows 10 Home.
  51. ^ «Почему поддержка сжатых папок Windows (Zip-папок) застряла на рубеже веков?» . 15 мая 2018.
  52. ^ "Технические подробности zlib" . Проверено 10 июля 2019 .
  53. Смит, Эрни (10 июля 2019 г.). «Самая умная из когда-либо созданных« Zip-бомба »взрывает файл размером 46 МБ до 4,5 петабайт» . Материнская плата . Vice Media . Проверено 10 июля 2019 .

Внешние ссылки [ править ]

  • .ZIP Application Note - целевая страница для текущего и исторического файла .ZIP PKWARE.
  • ISO / IEC 21320-1: 2015 - Файл-контейнер документа - Часть 1: Ядро
  • Zip-файлы: история, объяснение и реализация
  • Сжатие, уменьшение и сжатие: устаревшие методы сжатия ZIP-файлов
  • APPNOTE.TXT зеркало

Технические характеристики формата:

  • Структура файла PKZip - графические таблицы