【问题标题】:Our encrypted PDF got hacked我们的加密 PDF 被黑了
【发布时间】:2011-07-16 15:53:03
【问题描述】:

我们正在使用以下 iText 代码加密我们的 PDF。但是,有人能够编辑我们的 pdf(我不确定如何)。

pdfWriter.setEncryption(null, null, PdfWriter.ALLOW_SCREENREADERS
    | PdfWriter.ALLOW_COPY | PdfWriter.ALLOW_PRINTING,
    PdfWriter.ENCRYPTION_AES_128);

我们有更好的方法来保护 pdf 以防止这种情况发生吗?

【问题讨论】:

  • PDF 仅在查看程序表现良好时才安全,即尊重 ALLOW... 标志。
  • 为什么要阻止编辑?
  • 此pdf包含系统生成的信息,用户无需填写。
  • 您是否可以检测到您的程序是否生成了 pdf,或者您真的想阻止编辑?它是在受信任的计算机(例如您的服务器)还是在不受信任的计算机(用户计算机)上生成的?
  • 你怎么知道它被黑了?您确定这不仅仅是您的 pdf 生成代码中的错误吗? “垃圾进/垃圾出”之类的?我知道这是可能的,但这是我第一次听说它真的发生了。

标签: java security pdf encryption itext


【解决方案1】:

添加用户密码。这是唯一真正重要的。正如您从其他答案中毫无疑问地得出的那样,所有者密码有点开玩笑。

USER 密码是强加密...最高 256 位 AES IIRC,但由于美国出口限制,原始 PDF 加密规范仅允许 40 位加密。任何比 40 位强的东西都被认为是“弹药”。愚蠢的法律。

没有OWNER密码,比什么都礼貌。 PDF 库尝试在一定程度上支持它,但开源 PDF 库可以快速更改代码,而不是成为“pdf 破解者”。

空白用户密码意味着“使用任何人都可以下载的 PDF 规范中列出的预定义字节字符串”。 PDF 的内容仍然是加密的,但每个人都知道密码,所以它对你没有多大好处。 PDF 查看器/库在没有密码时会替换此字节字符串。

PS:

拨打setEncryption时:

  • null 开放密码表示“空白密码”,如上所述
  • nullowner 密码的意思是“为我随机生成一个”。

随机所有者密码意味着“没有人可以合法修改 PDF”.. 但这并不意味着“没有人可以修改 PDF”。

【讨论】:

    【解决方案2】:

    如果密码足够长,则防止查看 pdf 的加密有效。

    允许查看但禁用打印、编辑等其他功能的 DRM 功能只有在读者合作的情况下才有效。用户可以使用被黑或第三方阅读器来规避此类限制。

    【讨论】:

      【解决方案3】:

      如果您的 PDF 使用 128 位 AES 加密,那么对于不知道密钥的人来说是安全的,最合理的解释是有人可以访问密钥。

      您可能会考虑使用 RSA 对 PDF 进行签名,这是确保 PDF 未被泄露的好方法。

      【讨论】:

      • 签署 PDF 是确保内容真实且未被修改的唯一方法。
      • 不,这不是,CBC-MAC 也可以使用。
      • 这是个好主意。签署 PDF。强大的加密技术,如果有人进行了更改,您可以看到原始数据。
      • @Leo:是的,也可以使用 MAC。但是使用 MAC 有意义的情况非常有限,因为 MAC 取决于共享密钥。只有知道秘密的人才能验证 MAC,此外他们还可以修改文档。我认为这不会让 James Young 满意。
      • @Robert 这正是我建议使用 RSA 而不是 CBC-MAC 的原因。
      【解决方案4】:

      PDF 信息的加密和限制纯粹依赖于查看器软件作者的善意来执行该限制。

      一般来说,每个拥有足够信息来显示 PDF 的应用程序都有足够的信息来打印 PDF,你真的无能为力。

      由于市面上有大量的开源 PDF 查看器,因此很容易制作一个忽略这些限制的查看器。

      更多详情请参阅this explanation of the PDF encryption mechanism

      【讨论】:

        猜你喜欢
        • 2012-12-03
        • 1970-01-01
        • 2018-08-27
        • 2014-01-06
        • 2010-10-30
        • 1970-01-01
        • 2015-12-23
        相关资源
        最近更新 更多