Предотвращение извлечения текста из PDF документа с помощью обфускации текста

Категория: PDF.NET

18 мая 2020

VintaSoft Imaging .NET SDK поддерживает возможность обфусцирования кодировки текста для всех типов шрифтов.

Для чего это нужно? Вы выкладываете документ в открытый доступ (или передаете его третьему лицу) и не хотите чтобы из документа можно было легко извлечь текст используя операцию копирования в любом просмотрщике PDF документов.

Решение 1: Запретить извлечение текста используя флаги настроек безопасности PDF документа, однако соблюдение этих настроек будет зависть от приложения, которым пользователь просматривает документ. Текст можно легко извлечь, если PDF просмотрщик игнорирует настройки безопасности PDF документа.

Решение 2: Полностью удалить информацию о кодировке, перемешать глифы в шрифте, перемешать коды символов на странице. Это можно сделать используя функционал обфусцирования кодировки текста в VintaSoft PDF .NET Plug-in. Данный механизм полностью удаляет информацию о кодировке текста, перемешивает глифы символов в шрифте и на странице PDF документа, дублирует шрифты и глифы символов. Текст обфусцированный таким способом можно извлечь только используя OCR.

Рассмотрим обфусцирование простого документа (document-without-text-obfuscation.pdf) используя VintaSoft PDF Editor Demo.

Документ содержит две страницы. Четыре надписи написаны тремя разными шрифтами.

Первая надпись на первой и второй странице написана одним шрифтом.
Текст до обфускации текста в PDF документе

Как видно из панели извлечения текста и диалога просмотра шрифтов все символы имеют правильные коды.
Символы до обфускации текста в PDF документе

Диалог настроек обфускации текста можно вызвать с помощью меню "Text -> Obfuscate Text Encoding -> Settings".
Стандартные настройки для обфускации текста в PDF документе

Давайте проведем обфускацию с настройками по умолчанию и рассмотрим полученный документ с обфусцированным текстом: document-with-default-text-obfuscation.pdf.

Видно что в обфусцированном документе полностью изменились шрифты, также случайным образом переставлены местами глифы. Извлекаемый нечитабельный текст можно увидеть в панели извлечения текста.
Текст после обфускации текста в PDF документе

Т.к. первая надпись на обоих страница сделана одним шрифтом, то символы для первого слова (выделено зеленым) на обоих страницах одинаковые.
Одно и тоже слово отображается одним и тем же шрифтом после обфускации текста в PDF документе

Вы скажете: "Я напишу простую программу которая извлечет текст. Вручную составлю таблицу соответствия кодов и расшифрую текст." Да. Это возможно, особенно если в документе используется мало шрифтов. Поэтому мы сделали настройки обфускации которые делают данную задачу практически не решаемой.

Давайте еще раз откроем диалог настроек обфускации текста и: Настройки для продвинутой обфускации текста в PDF документе

После этого проведем еще раз обфускацию текста и рассмотрим новый документ с обфусцированным текстом: document-with-strong-text-obfuscation.pdf.

Теперь мы можем увидеть что для буквы "e" использовались разные глифы и в извлеченном тексте это будут символы с разными кодами:
Один и тот же символ отображается разными глифами после обфускации текста в PDF документе

Слово "Text" из первой строки теперь написано разными шрифтами, в каждом шрифте использована своя случайная перестановка и свое дублирование глифов. Теперь результаты извлечения этого слова с первой и второй страницы совершенно не похожи:
Одно и тоже слово отображается разными шрифтами после обфускации текста в PDF документе