【发布时间】:2014-05-10 08:51:59
【问题描述】:
我在 blackberry app world 上查看一个用于创建 pdf 文件的应用程序,该应用程序声称能够对文件进行密码保护。一个密码如何保护文件。读取文件的代码不可用,如果程序决定不检查密码,密码就没有用了吗?
【问题讨论】:
标签: pdf passwords cryptography
我在 blackberry app world 上查看一个用于创建 pdf 文件的应用程序,该应用程序声称能够对文件进行密码保护。一个密码如何保护文件。读取文件的代码不可用,如果程序决定不检查密码,密码就没有用了吗?
【问题讨论】:
标签: pdf passwords cryptography
除了其他答案(专注于任意文件的加密)之外,这里还有一个专注于 PDF 加密的答案,这是最初让 OP 吃惊的用例:
PDF 标准 (ISO 32000-1) 在第 7.6 节中描述了如何以保持 PDF 文件结构同时隐藏内容的方式对 PDF 进行加密。 PDF 由大量对象(数字、字符串、数组、字典、流、引用等)构建而成,规范描述的机制基本上只加密字符串和流内容。
就像描述的一般情况一样,例如@Mark,这些加密的字符串和流内容只是一堆看起来很随机的数据,必须在显示 PDF 之前解密,但剩余的对象是未加密的,允许 PDF 查看器和编辑器将文件识别为 PDF。
此外,PDF 规范允许两种基本加密类型,通过
显然可以绕过使用后一种密码的加密:毕竟,如果您可以查看 PDF,则可以提取所有数据并基本上做您想做的事情,除非您的软件与该方案合作并禁止您到。而且,显然,并非所有软件都可以合作。
本质上,所有者密码机制在 PDF 中存储一个从密码派生的值,该值足以解密加密数据,但无法轻松计算原始密码。
【讨论】:
假设应用程序编写得当,.pdf 文件使用密码进行加密以派生加密密钥 - 也就是说,在解密之前,该文件不是正确的 .pdf 文件。在此之前,文件只是一堆看似随机的数据,程序不知道解密密钥是什么,直到你输入密码。
【讨论】:
如果操作正确,受密码保护的文件将使用需要原始密码才能撤消加密的算法进行加密。密码用于初始化加密/解密过程,不存储在文件中。如果您输入错误的密码,则解密将无法进行,并且程序无法知道正确的解密密钥(暴力破解除外)。
【讨论】: