Обновить PDF, чтобы включить зашифрованный, скрытый, уникальный идентификатор? - PullRequest
9 голосов
/ 27 декабря 2010

Фон

Идея такова:

  • Лицо предоставляет контактную информацию для онлайн-покупки книг
  • Книга, как PDF, помечена уникальным хешем
  • Лицо, загружающее книгу
  • Пароли PDF легко обойти или поделиться

Идеальным процессом будет что-то вроде:

  1. Создание хэша на основе контактной информации
  2. Сохранение контактной информации и хэша в базе данных
  3. Получение блокировки книги
  4. Обновление файла "include" с текстом хеша
  5. Созданиекнига в формате PDF (с использованием pdflatex)
  6. Применение хэша к книге
  7. Снятие блокировки книги
  8. Отправка письма с ссылкой для скачивания книги

Технологии

Можно использовать следующие технологии (возможны и другие языки программирования, но библиотеки, вероятно, будут ограничены теми, которые поставляются хостом):

  • C, Java, PHP
  • файлы LaTeX
  • файлы PDF
  • Linux

Вопрос

Какие методы программирования (или программное обеспечение с открытым исходным кодом) мне следует изучить, чтобы:

  • Вставить уникальный хеш (или другую метку) в PDF
  • Создание устойчивой к сговору метки
  • Разработка нехрупкого (например, PDF -> EPS -> PDF все еще содержит метку) решения

Исследования

У меня естьрассматривал следующие возможности:

  • Стеганография
  • Обработка естественного языка (NLP)
  • Преобразование пустых страниц в PDF в изображения;отметить эти изображения;повторно собрать PDF
  • пакет водяных знаков LaTeX
  • ImageMagick

Проблемы

Возможные решения, которые я исследовал, имеют следующие проблемы:

  • Стеганография. (a) Требуется мастер-копия изображений, которые преобразуются в EPS, что требует значительных ресурсов процессора и времени;(б) выжил бы водяной знак PDF -> EPS -> PDF или другие типы конверсии;(c) большинство изображений - это рисунки или снимки экрана, а не фотографии в формате PNG.
  • LaTeX. Создает кэш изображений;любое стеганографическое решение должно каким-то образом перехватывать этот процесс.
  • НЛП. Вносит грамматические ошибки;может изменить значение технических слов.
  • Пустые страницы. Немедленно подозревать;подозрительные пустые страницы легко заменить.
  • Пакет с водяными знаками. Рисует видимые метки.
  • ImageMagick. Рисует видимые метки.

Какие другие решения возможны?

Ссылки по теме

Спасибо!

1 Ответ

2 голосов
/ 27 декабря 2010

Я сделал это для другого проекта с PDFlib .Нам нужна прослеживаемость для сгенерированных PDF-файлов на случай утечки файла.В основном:

  1. Создан исходный шаблон PDF с содержимым на месте, задайте мастер-пароль документа с необходимыми параметрами (без редактирования, без печати, без чтения с экрана и т. Д ...)
  2. Во время выполнения мы применили несколько водяных знаков (наложил нижний колонтитул на странице «Этот документ извлечен для пользователя # 12345»), задали несколько полей метаданных с идентификатором пользователя, загрузите IP-адрес, дату / время загрузки, добавилититульная страница "этот документ защищен авторским правом ..." и т. д.) *
  3. При желании можно добавить пароль пользователя для принудительного запроса PW при открытии документа.

С момента последнейPDF-версии используют AES-128 для своего шифрования, мы просто устанавливаем подходящий случайным образом сгенерированный 128-символьный пароль с высокой энтропией - никто бы никогда не набрал его вручную, поэтому сложность ввода была для нас неактуальной и действительно предпочтительной.Главный пароль не позволял конечным пользователям вносить какие-либо изменения в документ.Различные опции noprint / no screen read фактически реализуются программой чтения PDF и поэтому могут быть обойдены, но в любом случае их установка не помешает.

Недостатком является то, что лицензирование PDFlib довольно крутое.Я не знаю, поддерживает ли какая-либо из бесплатных библиотек php PDF новейшие схемы шифрования PDF, особенно материал с мастер-паролями, но если ваш бюджет может его поддержать, PDFlib - это путь для безопасного производства документов.

...