您可以在没有 "signing" 的情况下向 PDF 添加时间戳防篡改吗?

Can you add a timestamped no-tamper-proof to a PDF without "signing" it?

使用数字签名签署 PDF 时,可以使用受信任的时间戳服务来添加由时间戳授权机构签名的时间戳令牌。当查看 PDF 的签名时,它会说它包含一个签名的时间戳,并且自那时以来它没有被篡改(如果没有)。

从技术上讲,pdf 内容的哈希值被发送到 TSA (RCF3161),该哈希值与当前时间戳(由时间戳权威机构确定)以及一些元数据一起放入一个结构中,然后然后签名并发回。然后,这提供了 PDF 自该时间点以来未更改的证据。

因此,从技术上讲,应该可以创建这样的时间戳证明,而无需使用附加签名对文档本身进行签名。 PDF 标准是否以某种方式支持它(以及 Acrobat Reader 然后能够以某种方式显示此时间戳)?

当然我可以手动完成,获取文件二进制表示的 SHA-256 哈希,将其发送到 TSA 服务并将接收到的令牌存储在外部文件中,但最好我想嵌入防篡改 PDF,以便 Acrobat Reader 可以显示它。

这可能吗?如果可以,怎么做?

您可以在 PDF 中嵌入纯 RFC 3161 时间戳。此构造称为 文档时间戳.

此结构最初是在 2009 年的 ETSI TS 102 778-4(附件 A.2)中指定的,作为一种纯粹为先前签名的 PDF 添加时间戳的方法,在签名后的修订版中添加了一些验证相关信息。随着 PAdES 的发展,该规范最终进入了 ETSI EN 319 142-1(第 5.4.3 节)。

虽然 ETSI 只能将结构指定为 ISO 32000-1 (PDF 1.7) 的 扩展 ,但负责的 ISO 委员会将其添加到核心 ISO 32000-2 (PDF 2 ) 2017.

关于您在评论中的问题:

Is this compatible with PDF/A?

我认为它们与 PDF/A-1、PDF/A-2 和 PDF/A-3 不兼容。不过,由于 PDF/A-4 基于 ISO 32000-2,我认为它是兼容的。 (我还没有看过 ISO 19005-4...)

Is there a way to create those with Acrobat Reader?

有些 Adob​​e Acrobat 版本应该可以。基本的 Adob​​e Acrobat Reader 版本(目前)不可能。不过,Adobe Acrobat Reader 及其一些收费的内置工具可能可以创建它们。

optimally I'd like to have a cli tool or be able to do it through some library

任何未过时的通用 PDF 签名库都应支持创建文档时间戳。

but first I want to test how they are displayed later in Acrobat Reader

像这样:

第一个条目是带有嵌入式签名时间戳的签名,第二个条目是文档时间戳。