0

使用数字签名对 PDF 进行签名时,可以使用受信任的时间戳服务添加由时间戳权威签名的时间戳令牌。然后在查看 PDF 的签名时,它会说它包含一个签名的时间戳,并且自那时以来它没有被篡改(如果没有的话)。

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

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

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

这可能吗?如果是这样,怎么做?

4

1 回答 1

4

您可以在 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 委员会在 2017 年将其添加到核心 ISO 32000-2 (PDF 2) 中。

关于您在评论中的问题:

这与 PDF/A 兼容吗?

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

有没有办法用 Acrobat Reader 创建那些?

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

最佳情况下,我希望有一个 cli 工具或能够通过一些库来完成

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

但首先我想测试它们稍后在 Acrobat Reader 中的显示方式

像这样:

https://kb.itextpdf.com/home/it7kb/faq/how-to-enable-ltv-for-a-timestamp-signature

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

于 2021-01-20T14:20:33.343 回答