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

时间:2010-12-27 02:40:47

标签: watermark pdflatex steganography

背景

这个想法是这样的:

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

理想的过程如下:

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

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

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

    问题

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

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

    研究

    我已经研究了以下几种可能性:

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

    问题

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

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

    还有哪些其他解决方案?

    相关链接

    谢谢!

1 个答案:

答案 0 :(得分:2)

我已经为PDFlib的另一个项目做了这个。如果文件泄露,我们需要生成的PDF的可追溯性。基本上是:

  1. 创建包含内容的源模板PDF,使用所需选项设置文档主密码(无编辑,无打印,无屏幕阅读器等)设置
  2. 在运行时,我们应用了一些水印(强加页脚说“这个文件签出给用户#12345”,设置了一些带有用户ID,下载IP,下载日期/时间的元数据字段,添加了一个“这个文件版权由......“封面等......”
  3. 可选择附加用户密码以在打开文档时强制执行PW提示。
  4. 由于最新的PDF版本使用AES-128进行加密,我们只需设置一个合适的随机生成的128char高熵密码 - 没有人会手动输入密码,因此难以打字与我们无关其实更可取。主密码阻止最终用户对文档进行任何更改。各种noprint / no屏幕读取选项实际上是由PDF阅读器强制执行的,因此可以绕过,但无论如何都不会对它们造成伤害。

    这方面的缺点是PDFlib的许可证相当陡峭。我不知道是否有任何免费的PHP PDF库支持最新的PDF加密方案,特别是主密码的东西,但如果你的预算可以支持它,PDFlib是安全文档制作的方法。