PDFBOX 显示已篡改 PDF 文件的经过验证的签名

问题描述 投票:0回答:1

使用以下代码“显示签名代码”来验证签名:

https://apache.googlesource.com/pdfbox/+/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java

使用链接 (https://issues.apache.org/jira/browse/PDFBOX-2816) 中的“acro_signed.pdf”来验证签名。但 Acrobat 显示该文件已被篡改或损坏,但 pdfbox 显示验证成功。

有人可以帮忙找到问题吗。

尝试了上面的代码

pdfbox digital-signature bouncycastle
1个回答
0
投票

有人可以帮忙找到问题吗。

PDF 格式允许将更改附加到 PDF,而无需触及先前文档修订的原始字节。这些附加的更改称为增量更新。

如果将该机制应用于已签名的 PDF 文件,则签名在数学上仍然有效,因为原始字节保持不变。这就是 PDFBox 输出签名正确的原因。有关详细信息,请参阅这个旧答案

当然,在任意操作后仍然有效的签名是没有帮助的。因此,在对签名 PDF 进行增量更新时只允许进行某些更改,请参阅这个旧答案

分析变化并非易事。此外,允许的更改在技术上也没有明确规定。因此,PDFBox 没有实现检查是否允许对已签名 PDF 进行增量更新,其示例验证代码仅输出签名后是否有增量更新。

Adobe Acrobat 另一方面,实施了增量更新检查。然而,由于所提到的允许更改规范中的缺陷,近年来这种实现方式发生了很大变化。不过,其报告中仍然存在多个误报和漏报。

因此,在当前的情况下,PDFBox 示例类

ShowSignature
输出类似于“签名有效,但增量更新中存在更改”的内容,Adobe Acrobat 指示签名已损坏(由于增量更新中的更改) )。两者都是对的。

© www.soinside.com 2019 - 2024. All rights reserved.