Как правильно скрыть данные в PDF
Чёрный прямоугольник поверх текста — это не скрытие данных. Слова по-прежнему в файле, и прочитать их можно секунды за четыре. Вот что работает на самом деле и как убедиться, что сработало.
Проверено
Ошибка — и почему её повторяют снова и снова
Страница PDF устроена как графический редактор. Текст — это команда разместить определённые символы в определённых координатах, а чёрный прямоугольник — ещё одна команда закрасить область. Прямоугольник не удаляет текст — он рисуется поверх него. Символы по-прежнему в файле, под ним, и если выделить эту область, они скопируются. Любой бесплатный инструмент извлечёт их за секунды.
Ошибку повторяют потому, что интерфейс сообщает об успехе. Вы рисуете прямоугольник, слова исчезают из виду, вы сохраняете файл — и он выглядит в точности как документ со скрытыми данными. Ни ошибки, ни предупреждения, ни видимой разницы с правильным скрытием. Каждый громкий провал, о котором вы читали, — нескрытые судебные документы, суммы мировых соглашений, имена свидетелей, разведывательный отчёт, удалённые места которого восстановили за минуты, — это кто-то, кто нарисовал фигуру и поверил ей.
Выделить текст чёрным маркером — та же ошибка в другой шляпе, как и закрыть его белым прямоугольником в текстовом редакторе перед экспортом в PDF.
Что делает настоящее скрытие данных
Порядок обратный. Сначала текст удаляется из содержимого страницы, а чёрный прямоугольник рисуется потом — как визуальная отметка того места, где что-то было. Скопируйте скрытую область — и ничего не получите, потому что там ничего нет; извлеките текст страницы — и этих слов в нём просто не окажется.
Именно так работает здесь инструмент Скрыть данные в PDF, и он сообщает, сколько фрагментов текста удалил, — это важно, потому что скрытие, которое ничего не нашло, выглядит точно так же, как сработавшее. Если вы нарисовали прямоугольник поверх фамилии, а ничего не удалилось, скорее всего, фамилия — часть изображения, а не текст, и тогда нужен следующий раздел.
Текст на картинках — отдельная проблема
Фамилия на отсканированной странице или на скриншоте, вставленном в отчёт, — вообще не текст, а пиксели. Удаление текста их не затрагивает, а нарисованный поверх прямоугольник — то же бесполезное прикрытие, о котором шла речь выше, потому что пиксели под ним остаются в данных изображения.
Решение — перерисовать эти страницы с уже применённым скрытием, чтобы пикселей действительно больше не существовало. У этого есть реальная цена, о которой стоит знать: такие страницы становятся картинками, поэтому любой текст на них перестаёт выделяться, а файл становится больше. Для отсканированного документа это ничего не меняет — он и так состоял из картинок. Для смешанного документа это компромисс.
То же относится к изображениям вообще. Если вы решили Размыть изображение с лицом или номерным знаком, делайте размытие достаточно сильным, чтобы в области не оставалось видимой структуры: исследователи восстанавливали текст из слабой пикселизации, генерируя варианты и сравнивая их. Если всё ещё можно угадать, сколько там было символов, размытие недостаточно сильное.
Где PDF хранит имена, о которых вы забыли
На этом попадаются даже те, кто скрыл данные правильно. PDF хранит текст не только на видимой странице, и идеальное скрытие на странице оставляет все эти места нетронутыми.
Закладки часто содержат названия разделов с именами. Значения полей форм сохраняются, даже когда поле не видно. Вложенные файлы могут быть целыми документами, спрятанными внутри PDF. Сведения о документе и пакет метаданных XMP хранят название, автора, программу и часто исходный путь к файлу — а он выдаёт имя пользователя и структуру папок. Комментарии и аннотации содержат собственный текст и имя автора. А само имя файла путешествует вместе с документом повсюду.
Есть ещё одно место, самое незаметное: PDF, сохранённый инкрементально, хранит прежние редакции внутри того же файла. Если документ редактировали и сохраняли, а не перезаписывали целиком, в нём может остаться предыдущая версия страницы. Поэтому описанная ниже проверка обязательна для всего, что имеет значение.
Проверьте — и вот как
Проверку люди пропускают, а защищает на самом деле именно она. Три проверки, по возрастанию тщательности.
Откройте результат и попробуйте выделить скрытую область. Если что-то копируется — остановитесь. Это ловит базовую ошибку за пять секунд, и делать это стоит каждый раз.
Посмотрите свойства документа. Название, автор, тема и ключевые слова видны в любой программе для чтения PDF в меню «Файл» → «Свойства». Если в поле автора стоит та самая фамилия, которую вы только что час убирали, скрытие ничего не дало.
Пересоберите файл. Прогон результата через инструмент, который заново записывает документ только из того, на что реально ссылаются страницы, — Ghostscript с gs -sDEVICE=pdfwrite или qpdf --empty --pages out.pdf 1-z --, — отбрасывает объекты без ссылок и прежние редакции. Добавьте exiftool -all:all=, чтобы очистить метаданные. Для судебных документов и всего, что раскрывается по требованию, сделайте все три шага и попросите кого-нибудь ещё проверить.
Удаление страницы — тоже не скрытие
Это стоит сказать отдельно, потому что ошибка того же рода. Инструмент Удалить страницы из PDF собирает новый документ из оставленных страниц — но ссылка на оставленной странице, которая вела на удалённую, всё равно должна куда-то вести, и она затягивает копию удалённой страницы в новый файл как объект, на который не ссылается дерево страниц. Ни в одной программе её не видно, но в байтах она есть.
Чтобы убрать страницу из виду, удаление — правильный и достаточный способ. Чтобы её содержимое перестало существовать, удалите страницу и пересоберите файл, как описано выше.
Частые вопросы
Бывает ли чёрная плашка допустимой?
Только как визуальная отметка поверх настоящего скрытия. Сама по себе она прячет слова от читателя, который не присматривается, и больше ни от кого. Если документ будут публиковать, подавать или раскрывать, считайте, что одна плашка — это отсутствие скрытия.
А если вместо этого сгладить PDF?
Сглаживание впечатывает аннотации в страницу, и нарисованный прямоугольник действительно становится постоянной частью изображения, — но текст под ним — это содержимое страницы, а не аннотация, поэтому он никуда не девается. Сглаживание подходит, чтобы зафиксировать ответы в формах и подписи, а не чтобы прятать слова.
Можно ли скрыть данные, конвертировав PDF в изображения?
Работает — у картинки страницы с прямоугольником на ней действительно нет текста под ним. Но цена реальна: документ перестаёт поддерживать поиск, файл растёт, а метаданные обычно всё равно переносятся — так что их всё равно придётся очищать отдельно.
Удаляет ли печать в PDF скрытый текст?
Для содержимого страницы обычно да, поскольку страница перерисовывается, — поэтому иногда это срабатывает случайно. Но метод ненадёжный, очищает не все поля метаданных и зависит от драйвера принтера. Используйте инструмент, который прямо говорит, что он удаляет.
Безопасно ли скрывать данные в конфиденциальном документе на сайте?
На этом сайте ничего не сохраняется ни на каком этапе — именно поэтому скрытие данных здесь вообще предлагается: документы, в которых людям нужно что-то скрыть, — ровно те, что не должны лежать на чужом сервере. Для судебных документов используйте программы, рассчитанные на такую ответственность, и проверяйте результат сами.