【问题标题】:LTV enabling signatures in PDFLTV 在 PDF 中启用签名
【发布时间】:2021-06-03 12:25:02
【问题描述】:

据我了解,有两种方法可以做到这一点

  • 添加 DSS 字典
  • 在签名时将 CRL 或 OCSP 响应嵌入签名中

DSS 方式似乎有效,并且 Adob​​e 将签名识别为启用 LTV。第二种方式更适合我们的应用程序,所以我仍然尝试让它工作。我在将 OCSP 响应添加到签名时遇到问题,因此我只尝试添加证书和 CRL。如果我错了,请纠正我,但据我所知,应该将 CRL 或 OCSP 响应添加到签名中。两者都不需要吗?我收集签名证书及其根证书,以及 TSA 证书及其根证书。之后,我获取所有 CRL。所有这些都添加在签名和时间戳之前。仅添加证书和 CRL 似乎不起作用,因为 Adob​​e 无法将签名识别为启用 LTV。我真的不明白我做错了什么,所以任何帮助表示赞赏!

Store crlStore = new JcaCRLStore(crls); 
gen.addCRLs(crlStore);

Store certStore = new JcaCertStore(certList); 
gen.addCertificates(certStore);

【问题讨论】:

    标签: java pdf digital-signature bouncycastle pkcs#7


    【解决方案1】:

    您做错的是将 CRL 放入通常用于 CRL 的 CMS 签名容器元素中。但是,在集成 PDF 签名的情况下,情况就不同了。这里的 CRL 应该在一个特殊的签名属性中。

    查看已指定此属性的 ISO 32000-1:

    PKCS#7 对象应包含以下内容:

    ...

    • 作为签名属性的吊销信息(PDF 1.6):此属性可能包括对签名者证书及其颁发者证书执行吊销检查所需的所有吊销信息。由于撤销信息是签名属性,因此必须在计算数字签名之前获取。这意味着签名者使用的软件必须能够构建证书路径和相关的撤销信息。如果无法获取其中一个元素(例如无法连接),则无法使用此属性进行签名。

    ...

    12.8.3.3.2 撤销信息

    adbe 吊销信息属性:

    adbe-revocationInfoArchival OBJECT IDENTIFIER ::=
                                  { adbe(1.2.840.113583) acrobat(1) security(1) 8 }
    

    吊销信息属性的值可以包括以下任何一种数据类型:

    • 证书撤销列表 (CRL),在 RFC 3280 中描述(参见参考书目):CRL 通常很大,因此不应嵌入到 PKCS#7 对象中。
    • 在线证书状态协议 (OCSP) 响应,在 RFC 2560、X.509 互联网公钥基础设施在线证书状态协议 — OCSP 中描述(参见参考书目):这些通常很小且在大小并且应该是包含在 PKCS#7 对象中的数据类型。
    • 自定义吊销信息:本规范未规定格式,除了将其编码为八位字节串。应用程序应该能够通过查看相关的 OBJECT IDENTIFIER 来确定 OCTET STRING 中包含的数据类型。

    adbe 的 Revocation Information 属性值有 ASN.1 类型的 RevocationInfoArchival:

    RevocationInfoArchival ::= SEQUENCE {
      crl [0] EXPLICIT SEQUENCE of CRLs, OPTIONAL
      ocsp [1] EXPLICIT SEQUENCE of OCSP Responses, OPTIONAL
      otherRevInfo [2] EXPLICIT SEQUENCE of OtherRevInfo, OPTIONAL
    }
    OtherRevInfo ::= SEQUENCE {
      Type OBJECT IDENTIFIER
      Value OCTET STRING
    }
    

    【讨论】:

    • 谢谢!在阅读了这里的一些文档和问题后,我得出了同样的结论。你特别回答了一个问题。 :) 我现在正在添加 CRL 和 OCSP 响应,Adobe 将签名识别为启用 LTV。收集所有这些信息需要花费太多时间。
    • “虽然收集所有这些信息需要花费太多时间。” - 嗯,根据您的用例,一些缓存可能会有所帮助。如果嵌入 CRL,通常可以在很长一段时间内重复使用它们,因为它们不会经常重新发布。 OCSP 响应的情况有点不同,OCSP 响应预计会很新鲜,但通常也可以缓存几分钟。另一方面,如果使用相同的证书(或仅其中几个)签名并在之后添加撤销信息,即在 DSS 中,您可以节省更多时间,批量添加信息。
    • 谢谢!我认为现在将它们嵌入签名中更合适。我会尝试一些缓存。
    • 大约 3 个月前,我们在这里讨论 LTV 之后就创建了一些签名。当时以及在 Adob​​e 表示签名已启用 LTV 之后。我昨天检查了文档,Adobe 现在说:签名未启用 LTV,将在 2022/05/22 之后过期......我们只在签名中添加了 OCSP 响应。问题可能是什么?有没有办法检查您新签署的文件以避免这种情况?我应该问一个问题吗?
    • 请分享有问题的pdf。也许您没有添加所有需要的信息。不幸的是,Adobe 没有公布他们的确切验证要求,因此他们的“LTV-enabled”可能是一个移动的目标。
    猜你喜欢
    • 2021-10-07
    • 1970-01-01
    • 2020-06-10
    • 1970-01-01
    • 2019-04-17
    • 1970-01-01
    • 2019-02-19
    • 1970-01-01
    • 2016-06-07
    相关资源
    最近更新 更多