背景

这个想法是这样的:

  • 人员提供在线图书购买的联系信息。
  • 以PDF格式标记的图书带有唯一的哈希
  • 人下载本书
  • PDF密码易于破解或共享

  • 理想的过程如下所示:
  • 根据联系信息
  • 生成哈希
  • 将联系信息和哈希存储在数据库
  • 获取书本锁
  • 使用哈希文本
  • 更新“包含”文件
  • 将书生成为PDF(使用pdflatex)
  • 将哈希应用到书
  • 释放书本锁
  • 发送带有书籍下载链接的电子邮件

  • 技术领域

    可以使用以下技术(可以使用其他编程语言,但是库可能仅限于主机提供的那些语言):
  • 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。 绘制可见标记。

  • 还有哪些其他解决方案?

    相关链接
  • http://www.tcpdf.org/
  • invisible watermarks in images

  • 谢谢!

    最佳答案

    我已经使用PDFlib完成了另一个项目。我们需要生成的PDF的可追溯性,以防文件泄漏。基本上:

  • 创建具有内容的源模板PDF,使用必需的选项(不编辑,不打印,不使用屏幕阅读器等)设置文档主密码设置
  • 在运行时,我们应用了一些水印(在页脚处加上“此文档已 checkout 给用户#12345”,设置了一些具有用户ID的元数据字段,下载了IP,下载了日期/时间,并添加了“此文档版权的...”封面等)
  • (可选)附加用户密码,以在打开文档时强制输入PW提示。

  • 由于最新的PDF版本使用AES-128进行加密,因此我们只设置了一个合适的随机生成的128char高熵密码-没人会手工输入它,因此难以键入与我们无关,实际上是可取的。主密码阻止最终用户对文档进行任何更改。 PDF阅读器实际上实现了各种无印/无屏阅读选项,因此可以绕开,但无论如何都可以进行设置。
    不利的一面是PDFlib的许可相当陡峭。我不知道是否有任何免费的php PDF库是否支持最新的PDF加密方案,尤其是主密码,但是如果您可以支持,则PDFlib是实现安全文档生产的方式。

    10-04 12:24
    查看更多