Есть ли на python защита от утечки электронных документов?
Приветствую! Подскажите, вот есть DOC или PDF файл. Задача сгенерировать изображения каждому пользователю и чуть чуть исказить, сместить некоторые символы. Что бы потом, если изображение документа где то всплывёт по этим внесённым изменениям можно было определить, от какого пользователя произошла утечка.
Я вижу такое решение:
Каждому пользователю выдаём уникальный токен. Потом генерируем набор случайных чисел от токена в качестве соли. Берём каждый документ и незначительно смещаем/кропаем/корёжим некоторые символы на полученные цифры. Полученное изображение сохраняем себе и отдаём пользователю.
Если требуется определить, чей документ, то просто сравниваем скользящим окном некоторые части документа, это есть в opencv на сколько помню.
Вроде подводных камней нет и не я это первый сейчас придумал, так может уже есть реализация нечто подобного уже?
UPD: Ссылки на другие программы/ресурсы с такой функцией тоже приветствуются)
Это у больших киношников популярно. До выхода фильма в прокат могут выдавать его для предварительного просмотра кинокритикам, журналистам и т.п.
В каждый экземпляр встраиваются уникальные "водяные знаки", не различимые глазом и даже труднообнаружимые универсальными алгоритмами, но легкообнаружимые, если точно знать, что и где искать.
Идея здравая, и где-то подобное уже проскакивало. Кратко - в документе можно менять отдельные символы на схожие по написанию ("с" кириллица => "с" латиница) (фу так делать, это ухудшит поиск по документу) или играться с пробелами (вставлять второй пробел между словами). Конечно, если пользователь подозревает о таком DRM, то вычистить его из doc'а - пара пустяков; из pdf - сложнее.
Дополню предыдущие ответы. Да, если прогнать через OCR, то ("с" кириллица => "с" латиница) не сработает, и лишние пробелы могут не сработать (а тем более небольшие сдвиги и искажения символов). Зато могут сработать умышленные ошибки в орфографии и пунктуации. Если не переборщить (многочисленные ошибки бросаются в глаза, а единственную ошибку на странице многие не заметят).
Вот это хорошая идея) Можно где то пробел воткнуть до запятой или вообще лишнюю поставить, можно где то жирным выделять, а где то пропустить. Вообще много способов придумать. Спасибо!