您可以在不“签名”的情况下向 PDF 添加带时间戳的防篡改功能吗?

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

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

从技术上讲,发生的情况是 pdf 内容的哈希值被发送到 TSA (RCF3161),该哈希值与当前时间戳(由时间戳机构确定)加上一些元数据一起放入一个结构中,然后进行签名和送回来了。这可以证明 PDF 自此时以来尚未更改。

从技术上讲,应该可以创建这样的时间戳证明,而无需使用附加签名来签署文档本身。 PDF 标准是否以某种方式支持这一点(并且 Acrobat Reader 也能够以某种方式显示此时间戳)?

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

这可能吗?如果是的话,怎么办?

pdf timestamp digital-signature acrobat rfc3161
2个回答
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 创建这些内容?

某些 Adobe Acrobat 版本应该可以。 (目前)基本 Adobe Acrobat Reader 版本无法实现此操作。不过,Adobe Acrobat Reader 及其一些收费的内置工具可能可以创建它们。

我希望有一个 cli 工具或者能够通过一些库来完成它

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

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

像这样:

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

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


0
投票

以防万一有人有兴趣使用 PHP 执行此操作:这里是一个向 TCPDF 分支拉取请求的链接,我在其中描述了如何实现嵌入 TSR (RFC3161):https://github.com/tecnickcom/ TCPDF/拉/617.

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