更新PDF以包含加密的,隐藏的唯一标识符?

Dav*_*vis 9 watermark steganography pdflatex

背景

这个想法是这样的:

  • 人提供在线图书购买的联系信息
  • Book,作为PDF,标有唯一的哈希
  • 人下载书
  • PDF密码很容易规避或分享

理想的过程如下:

  1. 根据联系信息生成哈希
  2. 在数据库中存储联系信息和哈希
  3. 获取书锁
  4. 使用哈希文本更新"包含"文件
  5. 以PDF格式生成图书(使用pdflatex)
  6. 将哈希应用于预订
  7. 发行书锁
  8. 发送带书籍下载链接的电子邮件

技术

可以使用以下技术(其他编程语言也可以,但库可能仅限于主机提供的那些):

  • C,Java,PHP
  • LaTeX文件
  • PDF文件
  • Linux的

我应该调查哪些编程技术(或开源软件):

  • 将唯一的哈希(或其他标记)嵌入到PDF中
  • 创建一个抗共谋攻击标记
  • 开发一个非脆弱的(例如,PDF -> EPS -> PDF仍然包含标记)解决方案

研究

我看过以下几种可能性:

  • 隐写术
  • 自然语言处理(NLP)
  • 将PDF中的空白页面转换为图像; 标记这些图像; 重新组装PDF
  • LaTeX水印包
  • ImageMagick的

问题

我研究过的可能解决方案存在以下问题:

  • 隐写术.(a)需要图像的主副本,这些副本被转换为EPS,这是CPU密集型和耗时的; (b)水印是否存在PDF -> EPS -> PDF,或其他类型的转换; (c)大多数图像是图画或屏幕截图,而不是PNG格式的照片.
  • 胶乳.创建图像缓存; 任何隐写解决方案都必须以某种方式拦截该过程.
  • NLP.介绍语法错误; 可以改变技术词汇的含义.
  • 空白页.马上怀疑; 很容易替换可疑的空白页面.
  • 水印套餐.绘制可见标记.
  • ImageMagick的.绘制可见标记.

还有哪些其他解决方案?

相关链接

谢谢!

Mar*_*c B 3

我已经为另一个项目使用PDFlib完成了此操作。我们需要对生成的 PDF 进行追踪,以防文件泄露。基本上:

  1. 创建了包含适当内容的源模板 PDF,使用所需选项(禁止编辑、禁止打印、禁止屏幕阅读器等...)设置文档主密码
  2. 在运行时,我们应用了一些水印(强加的页脚显示“此文档已由用户 #12345 签出”,设置了一些包含用户 ID、下载 IP、下载日期/时间的元数据字段,添加了“此文档版权由...”封面页等...)
  3. 可以选择附加用户密码,以在打开文档时强制显示密码提示。

由于最新的 PDF 版本使用 AES-128 进行加密,我们只需设置一个合适的随机生成的 128 字符高熵密码 - 没有人会手动输入它,因此难以输入与我们无关,实际上更可取。主密码阻止最终用户对文档进行任何更改。各种无打印/无屏幕阅读选项实际上是由 PDF 阅读器强制执行的,因此可以绕过,但无论如何设置它们也没有什么坏处。

这样做的缺点是 PDFlib 的许可相当严格。我不知道是否有任何免费的 php PDF 库支持最新的 PDF 加密方案,尤其是主密码,但如果您的预算可以支持,那么 PDFlib 是安全文档生成的最佳选择。