PDF под паролем и их ограничения
Мой PDF защищён, и инструмент пишет, что не может его редактировать. Почему и какие у меня варианты?
Паролей на самом деле два, и они разные
Шифрование PDF, описанное в ISO 32000, различает пользовательский пароль и пароль владельца. Пользовательский пароль — его часто называют паролем на открытие — нужен, чтобы документ вообще расшифровался. Без него потоки содержимого представляют собой шифротекст, и ни одна программа не прочтёт ни единой страницы. Пароль владельца устроен иначе: документ открывается и без него, но словарь шифрования несёт флаги разрешений, указывающие, что соответствующая стандарту программа просмотра должна запрещать, — например, печать, копирование текста или изменение файла.
Это различие объясняет бо́льшую часть путаницы. Документ, который открывается мгновенно, но не даёт скопировать абзац, вовсе не «разблокирован» — он зашифрован с пустым пользовательским паролем и набором ограничений.
Что на самом деле защищает шифрование
| Пароль | Нужен ли для открытия? | Что он защищает | Насколько он надёжен |
|---|---|---|---|
| Пользовательский пароль (на открытие) | Да | Само содержимое: потоки и строки зашифрованы | Настолько, насколько надёжны шифр и выбранный пароль |
| Пароль владельца (на разрешения) | Нет | Криптографически ничего: он выставляет флаги, которые программу просмотра просят соблюдать | Носит исключительно рекомендательный характер |
Флаги разрешений — это просьба к добропорядочным программам, а не механизм принуждения. Байты расшифровываются в тот момент, когда документ открывается, поэтому любая программа, решившая игнорировать флаги, спокойно это сделает. Считайте их заявлением о намерениях: они полезны, чтобы обозначить, как документ следует использовать, и бесполезны как средство защиты.
Почему редактор отказывается от файла
Чтобы перестроить PDF — объединить, разделить, повернуть страницы, выбросить неиспользуемые объекты, — библиотеке нужно разобрать граф объектов. В зашифрованном документе строки и потоки, из которых этот граф состоит, остаются шифротекстом, пока не выведен правильный ключ. Разбирать нечего. Это не решение инструмента о том, что можно и чего нельзя: документа там пока попросту нет.
Поэтому структурные инструменты FileSlimmer для работы с PDF на зашифрованном документе отключаются и прямо об этом говорят, а не падают на полпути, оставив испорченный результат. Это правильное поведение, пусть и менее удобное.
Что происходит с паролем, который вы вводите
Там, где предусмотрен путь с вводом пароля, пароль используется для вывода ключа расшифровки в памяти, в этой вкладке браузера, ровно на время выполнения задачи. Он не записывается ни в локальное хранилище, ни в кэш Service Worker, не подставляется в URL и никуда не передаётся — в этом приложении просто нет сервера, которому его можно было бы передать. Когда вкладка закрывается, пароля больше нет.
И всё же стоит осознанно относиться к тому, где вы вводите любой пароль. Расширение браузера способно прочитать содержимое страницы, и это верно для любого сайта, включая этот. Если документ настолько чувствителен, что это имеет значение, разблокируйте его в офлайновой настольной программе, которой доверяете.
Чего этот инструмент делать не станет
- Он не станет восстанавливать или подбирать перебором пароль, которого у вас нет.
- Он не станет снимать пароль владельца, чтобы обойти флаги разрешений на документе, прав на который у вас нет.
- Он не станет молча создавать расшифрованную копию документа, открытого вами по паролю: снятие защиты — отдельное, явное действие.
- Он не станет делать вид, будто флаг разрешений — это граница безопасности.
Снятие защиты с документа, изменять который вы не вправе, может к тому же нарушить договор или закон вашей страны. Это вопрос к вам и, если он важен, к юристу, а не к инструменту сжатия.
Реальные варианты, когда вы в тупике
- Попросите у того, кто сделал документ, копию без защиты. Это самое частое решение, и оно занимает одно сообщение.
- Если пароль на открытие у вас есть, введите его: с расшифрованным документом снова доступна любая обычная операция.
- Если страницы нужны только для просмотра, напечатайте документ в PDF или экспортируйте растеризованную копию. Вы потеряете текстовый слой, ссылки и структуру доступности, но сохраните внешний вид.
- Если документ не только зашифрован, но и подписан, остановитесь и подумайте ещё раз. Любое изменение делает подпись недействительной, а подписанный документ обычно и существует ради того, чтобы кто-то потом смог его проверить.
Ещё одно ограничение
В старых редакциях шифрования PDF применялись слабый вывод ключа и короткие ключи, и сегодня они считаются взломанными. Более новые редакции используют AES с полноценной функцией вывода ключа. Определить на глаз, какая из них применена в документе, нельзя, и то, что инструмент быстро открывает старый файл, ничего не говорит о том, как поведёт себя новый. Если вы выбираете защиту для документа, который создаёте сами, берите современную программу и длинный пароль, а не полагайтесь на историю формата.
Инструменты для этого
Источники
- ISO 32000-2 — Document management, Portable Document Format
- Adobe — PDF 32000-1:2008, clause 7.6 on encryption and permissions
- NIST FIPS 197 — the Advanced Encryption Standard