当前位置: 首页 > 知识库问答 >
问题:

如何在不使用时间戳的情况下启用pdf LTV?

公西俊德
2023-03-14

我对这个话题很陌生。我已经用PKCS#12数字证书签署了一份PDF文档。在Adobe Reader中,当我打开签名面板时,我可以看到“签名已启用LTV”。读了这篇文章,我无法真正理解是否需要应用时间戳。如果没有,我如何验证应用签名的时间?或者我应该添加什么样的验证信息?

共有1个答案

安承教
2023-03-14

首先,LTV enabled这个术语是Adobe引入的,没有正确指定。尤其是,它与ETSI在其PAdES规范第4部分(ETSI TS 102 778-4)中使用的术语PDF文档和LTV不一致。

史蒂文·马德温(当时受雇于Adobe)曾这样说:

当你打开文件Acrobat(当我说Acrobat时,我指的是两个Acrobat

因此,该术语的含义取决于

  • Adobe的验证代码和
  • 该代码使用的相关安全设置。

更多背景请参考此答案。

OP观察到

我已经用PKCS#12数字证书签署了一份PDF文档。在Adobe Reader中,当我打开签名面板时,我可以看到“签名已启用LTV”。

并在评论中解释

我的证书必须是自签的

我已将证书导入Internet选项中的“受信任的根证书颁发机构”。

根据其安全设置,Adobe Acrobat/Reader可能会自动信任在其运行的操作系统中配置为受信任根的证书。这似乎是OP的情况。

因此,OP的签名者证书是其系统上Adobe验证程序的受信任根证书。因此,在验证他的签名并称其为LTV启用时,他们不需要额外的验证相关信息。

不过,在另一个人的计算机上,如果该证书不受信任,Adobe验证器就无法验证该签名,更不用说将其称为启用LTV了。

LTV对于用自签名证书签名的签名几乎没有任何意义,特别是没有可能添加到文档中的感兴趣的撤销信息。

为什么?这是因为这里使用了信任模型。

它基本上是分等级的:

  • 我们首先信任一些机构(证书颁发机构),我们通过在应用程序或操作系统中将它们的根证书注册为无条件可信任的
  • 此外,我们信任由受信任证书颁发的所有证书(即,如果受信任证书未标记为终端实体证书)

这听起来很棒,直到人们意识到其中一些证书的私钥迟早会被泄露。显然,我们不想再信任这样被泄露的证书了。在上面的基本模型中,这意味着我们必须撤销对直接或间接颁发被泄露证书的根证书的信任。由于可能有数百万个证书直接或间接由这个根证书颁发,这是不可取的。

因此,我们通过添加撤销检查服务来扩展基本模型:

  • 我们再次从信任少数机构(证书颁发机构)开始,我们通过将它们的根证书注册为在我们的应用程序或操作系统中无条件可信任的证书来做到这一点

这听起来很棒,直到人们意识到这些撤销检查服务可能会停止工作(例如,因为运行相关证书颁发机构的公司停业)。至少长期感兴趣的文件上的签名有可能以这种方式无法验证。

为了解决这个问题,引入了LTV(长期验证)机制。它们基本上收集了从受信任根到签名者证书的证书链,以及除根证书之外的所有证书的撤销检查服务的响应,并将它们与签名捆绑在一起。(根证书仍必须明确受信任。)

使用这些信息,可以在证书颁发机构停止提供撤销检查服务很久之后验证签名。

(这有点简化;尤其是必须考虑发布、签名、撤销和验证时间。但它应该给出一个想法……)

所以回到最初的说法:LTV对于使用自签名证书签名的签名几乎没有任何意义:自签名证书是根证书,可以明确信任,也可以完全不信任。没有其他根、中间或最终实体感兴趣的证书,也没有可供他们收集的撤销检查响应。

这是否意味着有了自签名证书,我永远无法获得PAdES LTV兼容的pdf?

更重要的是,没有什么值得放入PAdES LTV验证相关信息的。唯一感兴趣的LTV操作是添加文档时间戳(上面没有解释)来缩小签名时间。

 类似资料:
  • 我正在使用django模型。django设置中的TIMEZONE是UTC。并通过做一些算术来构建时间戳。 当我使用::timestamp时,时间戳返回为2021 07月26日00:00:00如果我使用::timestamp,它将变为2021 07月26日00:00:00,即使请求的\u时区是“美国/纽约” 我希望输出为2021 07月26日00:00:00-04:00,即显示与“附加美国/纽约”偏

  • 问题内容: 在Go中,对于time.Now()得到的时间戳记以 m = xx.xxxx … 结尾,这意味着 m ? 如何在打印时将其删除,或者是否有其他方法或功能来获取没有 m的* 时间戳 * 例如:-for time.Now()获取输出=> 2009-11-10 23:00:00 +0000 UTC m = + 0.000000001 但是我需要这样的输出=> 2009-11-10 23:00:

  • 这是我的归属感。Yaml 为了检查,我使用curl如下所示: 我希望响应包含access-control-allow-*

  • 我在用org。乔达。时间LocalDate和LocalDateTime。我从外部源获得一个Unix时间戳,并希望从中生成一个LocalDate(时间)。关键是,在该外部系统的界面中定义,所有日期/时间都在UTC时区内。因此,我希望避免从该时间戳到本地系统的任何默认时区的任何隐式转换,这可能与UTC不同。有一个LocalDateTime的构造器用于这些事情,所以我尝试(作为一个例子): 结果让我有点

  • 问题内容: 我想将时间戳添加到我的PDF文档中(不带数字签名)。我怎样才能做到这一点? 我可以使用Itext使用数字签名来做到这一点(我在这里有TSAClient): 但是在没有数字签名的情况下如何做类似的事情?使用Bouncy Castle或Itext或Pdfbox …或其他库。 问题答案: 在iText中,您正在寻找 也比照。JavaDoc文档: 您可能需要阅读章节5.4.1 在数字签名中为P

  • 在我的情况下,登录应用程序时需要通过UID从realTime Database获取用户配置文件 在文档中必须使用添加值事件通知程序才能从实时数据库读取 //如果我有obj的id,如何直接从实时firebase获取值 //我的问题是,这里不能使用这种方法