Шифрование и расшифровка документов в формате PDF
Ограничьте круг тех, кто может открывать и использовать PDF-документ. Шифрование PDF-документа выполняется для блокирования контента файла паролем, чаще — для введения авторских ограничений. Например, автор разрешает печать страниц, но запрещает внесение изменений в документ. Мы продолжим раздел «Разбиение и объединение PDF-документов» и объясним, как программа pdftk может зашифровывать и расшифровывать PDF-документы. Мы начнем с описания модели Acrobat Standard Security (Стандартная защита Acrobat) (названной Password Security [Парольная защита] в Acrobat 6) и прав доступа, которые вы можете предоставить или отменить.
Вложения PDF-файлов также шифруются. После открытия зашифрованного документа вложения могут быть открыты, изменены или удалены, только если владелец предоставил право доступа ModifyAnnotation (Изменять, комментировать).
Вложения страницы ведут себя иначе, чем вложения документа. При открытии зашифрованного документа открыть файлы, приложенные к PDF-страницам, можно независимо от прав доступа. Изменение или удаление одного из этих вложений требует права доступа ModifyAnnotations.
PDF-пароли
Acrobat Standard Security (Стандартная защита Acrobat) дает возможность определять для PDF-документа два пароля: пользовательский и пароль владельца. В Acrobat 6 их называют паролем Open (Открытый) и паролем Permissions (Права доступа), соответственно.
Пользовательский пароль необходим для просмотра страницы документа. Из него получается ключ шифрования PDF-документа из пользовательского пароля. При открытии PDF-документа, защищенного пользовательским паролем, средство просмотра запросит его у читателя.
Пароль владельца необходим для изменения параметров настройки безопасности документа. PDF-документ с набором паролей пользователя и владельца может быть открыт с помощью любого из них, поэтому подходить к выбору надо осторожно.
Пароль владельца сам по себе не обеспечивает никакой реальной защиты PDF-документа. Контент зашифрован, но ключ, полученый из (пустого) пользовательского пароля, известен. Пароль владельца — это вежливая, но твердая просьба уважать пожелания автора. Программа взлома может преодолеть эту защиту за секунду. См. раздел «Защита вашего PDF-документа от копирования» для получения информации о дополнительных опциях управления правами.
Надежность стандартного защитного шифрования
Если PDF-документ совместим с Acrobat 3 или 4, то используется 40-битное шифрование, в противном случае — более сложное, 128-битное. В обоих случаях ключ шифрования создается из пользовательского пароля, поэтому хороший, длинный, случайный пароль помогает улучшить защиту от атак «в лоб». Самый длинный возможный пароль PDF-документа может содержать 32 символа.
Стандартные права доступа
Установите пользовательский пароль, если вы не хотите, чтобы все просматривали ваш PDF-документ. Если нет пользовательского пароля, то он просто не будет открываться.
Вы можете также управлять действиями читателей после открытия ими документа. Права доступа, связанные со 128-битной защитой (Acrobat 5 и 6), более подробны, чем связанные с 40-битной (Acrobat 3 и 4). Таблицы ниже, перечисляют все права доступа для каждой модели защиты, а также pdftk-флажки. На рисунке показана настройка прав доступа в Acrobat.
Права доступа для 40-битной защиты
Позволить читателям |
Применить это право доступа в pdftk |
Печатать страницы с наивысшим качеством | Printing |
Изменять контент страницы или документа, вставлять или удалять страницы, вращать страницы, добавлять закладки | ModifyContents |
Копировать текст и графику со страниц, извлекать текстовые и графические данные для дальнейшего использования | CopyContents |
Изменять или добавлять комментарии, заполнять поля формы данными | ModifyAnnotations |
Реконфигурировать или добавлять поля формы | ModifyContents and ModifyAnnotations |
Все вышеперечисленное | AllFeatures |
Права доступа для 128-битной защиты
Позволить читателям |
Применить это право доступа в pdftk |
Печатать страницы с наивысшим качеством | Printing |
Печатать страницы с самым низким качеством | DegradedPrinting |
Изменять контент страницы или документа, вставлять или удалять страницы, вращать страницы, добавлять закладки | ModifyContents |
Вставлять или удалять страницы, вращать страницы, добавлять закладки | Assembly |
Копировать текст и графику со страниц | CopyContents |
Извлекать текстовые и графические данные для последующего использования | ScreenReaders |
Изменять или добавлять комментарии, заполнять поля формы данными | ModifyAnnotations |
Заполнять поля формы данными | Fillln |
Реконфигурировать или добавлять поля формы |
ModifyContents
and ModifyAnnotations AIIFeatures |
Все вышеперечисленное и печать наивысшего качества | AIIFeatures |
При сравнении таблиц видно, что Assembly — это вариант ModifyContents, a Fillln — вариант ModifyAnnotations.
Право доступа DegradedPrinting посылает принтеру страницы как растровые изображения, тогда как Printing — в формате PostScript. PostScript-поток может быть прерван и возвращен в незащищенный PDF-документ, поэтому использование права доступа Printing вносит определенный риск, однако право доступа DegradedPrinting снижает качество напечатанных страниц.
После установки прав доступа и/или пользовательского пароля их изменение требует наличия пароля владельца.
Зашифрованный ввод и pdftk
При использовании программы pdftk для зашифрованных документов должен быть обеспечен пароль владельца. Если документ его не имеет — должен использоваться пользовательский пароль. В противном случае при pdftk-запросе никакой пароль не должен быть связан с этим документом.
Введите PDF-пароли, перечисляя их после имен входных файлов, например:
pdftk <input PDFfiles> input_pw <input file passwords> …
Дескрипторы файла, указанные в <input PDF files>, используются, чтобы связать файлы с паролями в <input file password> следующим образом:
<input PDF handle>=<input PDF password>
Например: A=foopass
Добавление этого параметра в пример из раздела «Разбиение и объединение PDF-документов (без помощи Acrobat)» выглядит следующим образом:
pdftk A-in1.pdf B-in2.pdf C-in3.pdf \
input_pw A=foopass cat А1 Bl-end С5 output out.pdf
Использование pdftk для шифрования вывода
Любой PDF-документ, созданный с помощью программы pdftk, можно зашифровать, просто добавив параметры шифрования после имени выходного файла, например:
… output <output filename> \
[encrypt_40bit | encrypt_l28bit] [allow <permissions>] \
[owner_pw <owner password>] [user_pw <user password>]
Вот описание разделов: [encrypt_40bit | encrypt_128bit]
Определяет надежность шифрования. Если она не указана наряду с другими параметрами шифрования, то значением по умолчанию является encrypt_l28bit.
[allow <permissions>]
Перечисляет права доступа, предоставленные пользователям. Если этот раздел опущен, никакие права доступа не предоставляются (см. таблицы с полным списком прав доступа).
[owner_pw <owner password>]
Устанавливает пароль владельца. Если этот раздел опущен, пароль владельца не устанавливается.
[user_pw <user password>]
Устанавливает пользовательский пароль. Если раздел опущен, пользовательский пароль не устанавливается.
Добавление этих параметров к примеру в разделе «Разбиение и объединение PDF-документов (без помощи Acrobat)» выглядит следующим образом:
pdftk A=in1.pdf B=in2.pdf C=in3.pdf \
cat А1 Bl-end С5 output out.pdf \
encrypt_128bit allow CopyContents Printing \
owner_pw ownpass
Простое шифрование или расшифровка файла
Предыдущие примеры соответствовали контексту раздела «Разбиение и объединение PDF-документов». Вот примеры простого добавления или отмены шифрования отдельного файла:
Шифрование отдельного файла
pdftk A=input.pdf output encrypted.pdf \
encrypt_128bit allow CopyContents \
owner_pw foopass
Расшифровка отдельного файла
pdftk A=encrypted.pdf input_pw A=foopass output decrypted.pdf