Pades签名与多个DSS词典



我正在开发PDF签名器/验证器,不知道如何处理具有多个签名和dss字典的PDF文件。

这是一个场景:一个pdf文件被签名两次,在第二次签名之后,一个DSS字典被添加了两个签名的CRL、CERT和OCSP:

[ Signature 1 ]
[ Signature 2 ]
DSS << 
    VRI << 
        /HashSignature1 10 0 R
        /HashSignature2 11 0 R
    >>
    ...
>>

到目前为止,一切都很好。这两个签名都包含在文档中唯一的DSS字典中。但其他人决定签署同一份文件,并添加他的CRL和其他所有内容。然后,我必须创建一个新的DSS字典,我的问题是:已经包含在另一个DSS字典中的旧签名必须在这个字典中吗?我认为是这样,因为DSS在更新的文档目录中(并且您删除了对上一本词典的引用),但公司内部几乎没有达成一致。

[ Signature 1 ]
[ Signature 2 ]
DSS << 
    VRI <<
        /HashSignature1 10 0 R
        /HashSignature2 11 0 R
    >>
    ...
>>
[ Signature 3 ]
DSS << 
    VRI <<
        /HashSignature1 10 0 R
        /HashSignature2 11 0 R
        /HashSignature3 16 0 R
    >>
    ...
>>

[ Signature 1 ]
[ Signature 2 ]
DSS << 
    VRI <<
        /HashSignature1 10 0 R
        /HashSignature2 11 0 R
    >>
    ...
>>
[ Signature 3 ]
DSS << 
    VRI <<
        /HashSignature3 16 0 R
    >>
    ...
>>

他们两个都对吗?只有一个?有一个?

Adobe的Andrea Valle通过电子邮件向我澄清了这一点:

ESI对此已经讨论了一段时间,最终团队决定在EN 319 142-1中对此进行澄清。

参见1.1.0版本第11页第5.4.1节:

通过添加进一步的DSS信息来验证先前的最后文档时间戳以及新的文档时间戳,可以将保护的寿命进一步扩展到所应用的最后文档的时间戳的寿命之外。每次在增量更新过程中更新DSS字典时,都应包含以前DSS字典中的值。

注:一般来说,DSS字典将包含以前版本的验证数据以及为当前版本添加的验证数据。如果在增量更新过程中从DSS字典中删除条目,则验证数据集可能不完整,无法验证签名,但出于优化原因,可能会替换验证数据,如更新的证书状态信息。

因此,实际上建议添加旧DSS字典中的所有条目,但不是强制的。如果这些条目没有破坏签名,您可以更新它们,但这是可选的。

进一步阅读同一文档:

文件安全存储(DSS)应是一个字典,其值DSS应作为文件目录字典中的关键字。该字典用于提供一个单独的位置,用于放置文档中某些或所有签名的所有验证相关信息。

DSS旨在提供单个位置,所有信息都应放置在该位置。

因此,如果你不把所有信息都放在那里,你就没有破坏任何东西,但你没有按预期使用DSS。

那么,答案是:pdf签名者应该使用第一种方法,但pdf验证器应该为第二种方法做好准备。


编辑:

实际上,任何PAdES验证器都应该检查之前存在的DSS条目。如果只检查最新的签名,则有可能重新验证无效签名,如果用于对CRL或OCSP进行签名的CA证书在后者被破坏,并且该虚假信息被添加到最新的DSS中。

示例:

  1. Sig 1是用已吊销的证书制作的
  2. 所有DSS条目都已添加,并且签名肯定无效
  3. 添加了DocumentTimeStamp,以保护此DSS。

  4. Sig 1 CA证书已损坏

  5. Sig 2制作完成,带有有效的证书

  6. 添加Sig 2 DSS条目,LTV启用签名
  7. Sig 1 CRL/OCSP被替换为使用受损CA证书制作的假证书

在这种情况下,依赖于最新DSS的验证器将在Sig 1不应该验证的时候对其进行验证。这就是为什么要添加DocumentTimeStamp来保护有关该签名的信息。


TL;DR:

两种选择都是正确的。DSS应该有关于所有签名的信息,但这不是强制性的。验证器应该检查在签名之后立即生成的DSS,而不仅仅是最新的DSS。

由于目录字典中只有一个DSS条目,您需要更新现有的DSS字典(即VRI字典和其他值)。

相关内容

  • 没有找到相关文章

最新更新