背景
这个想法是这样的:
人员提供在线图书购买的联系信息。以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是实现安全文档生产的方式。