&引用;“分离的”;PDF格式的数字签名

&引用;“分离的”;PDF格式的数字签名,pdf,digital-signature,pdfbox,Pdf,Digital Signature,Pdfbox,我想实现PDF的“并行”签名过程,这样用户就可以对文档进行数字签名,而不是“一个接一个”,而是同时进行。为了实现这一点,我决定为所有用户创建单独的初始文档副本,并在其上签名。最终,所有签名都应该连接到单个PDF中 让我们假设PDF在签名过程中没有变化,除了签名字段的创建(所有acroForms、signatureContainers、可视签名等都是在之前创建的,对所有人来说都是类似的) 。。在进一步的调查过程中,我阅读了这篇文章并了解到,之前的每个数字签名(甚至是分离的)都包含在下一个签名的签名

我想实现PDF的“并行”签名过程,这样用户就可以对文档进行数字签名,而不是“一个接一个”,而是同时进行。为了实现这一点,我决定为所有用户创建单独的初始文档副本,并在其上签名。最终,所有签名都应该连接到单个PDF中

让我们假设PDF在签名过程中没有变化,除了签名字段的创建(所有acroForms、signatureContainers、可视签名等都是在之前创建的,对所有人来说都是类似的)

。。在进一步的调查过程中,我阅读了这篇文章并了解到,之前的每个数字签名(甚至是分离的)都包含在下一个签名的签名内容中。所以没有办法把数字签名完全从内容中分离出来。这导致了一个问题,即在上一个签名完成之前,无法计算下一个签名

请告诉我是否有任何选择可以绕过这个问题?或者“一个接一个”的签名是唯一的解决方案

另外,我正在使用ApachePDFBox处理PDF

请告诉我是否有任何选择可以绕过这个问题

如果您想让您的签名具有互操作性,没有办法

我读了这篇文章并理解到,前面的每个数字签名(甚至是分离的)都包含在下一个签名的签名内容中

这个答案仍然代表着目前的局势。如果有任何问题,则已由较新的规范确认,例如,该答案中引用的PAdES规范仅为“技术规范”(ETSI TS 102 778),现在有实际规范(ETSI EN 319 142),除了其自身的签名容器外,还需要pdf签名来签署其修订版中的所有内容。此外,ISO 32000-2已经发布,对其可互操作的签名仍有要求,另外还包括一份PAdES规范的缩短副本

你在这里强调“甚至超脱”。当前上下文中的“分离”仅指嵌入在PDF中的CMS容器的结构;特别是,它没有提到签名与PDF或其他类似内容的分离


如果您不需要互操作,则有一些选项,其中两个选项仍然非常接近互操作签名:

  • 您可以忽略pdf签名必须对其修订版中的所有内容进行签名(除了自己的签名容器)的要求

    例如,您可以在文档的一个新版本中准备多个签名字段和字典,并将每个签名的签名字节范围设置为排除所有这些签名的占位符

  • 您可以忽略CMS签名容器中只有一个SignerInfos的要求,将来自不同签名方的SignerInfos放入单个签名字段中的单个签名容器中

通用PDF签名验证程序将

  • 如果按照前一选项中所述创建签名,则至少大多数签名未进行正面验证

    • 或者是因为他们的代码只针对两个带符号字节范围(即单个间隙)进行编程,因此只使用前两个范围,从而导致错误的文档哈希

    • 或者因为它们明确要求签名覆盖其整个版本,减去正在验证的签名字段的签名容器的单个占位符;自波鸿鲁尔大学(Ruhr Universität Bochum)的Karsten Meyer zu Selhausen发表“PDF签名的安全性”硕士论文以来,此类验证程序的数量肯定有所增加,请参见

  • 对于后一个选项中所述的签名,在您详细查看验证结果并意识到他们只验证了其中一个签名,而忽略了其他签名之前,至少对其中许多签名进行了积极验证

    例如,在两个SignerInfos的情况下,Adobe Reader验证第二个(我假设它总是验证最后一个),eSig DSS验证第一个,并且它们中的任何一个当前都没有在验证结果中指出可能存在另一个SignerInfo



例如,一家大型瑞典安全公司在其软件中实现了第二种选择;在其自制格式PDF/CAdES-A中,它将CAdES-A容器作为CMS容器插入PDF中,并允许多个签名。显然,因此,它自己的软件将识别和验证所有签名者。尽管如此,这是一个家用brew解决方案,不可互操作。

您可以使用支持签名工作流的现有软件(如我们提供的),该软件允许定义签名工作流(通过API或web用户界面)。输入可以是带有签名字段作为acro表单字段的PDF文档,也可以是PDF中的文本占位符。eSignAnyWhere中定义的元信息允许将其分配给特定的签名者。工作流功能允许定义顺序、并行或混合顺序+并行签名工作流。

感谢您的详细回答!相关:PDF的互操作数字签名(按规范)仅为串行。您想解释一下如何实现并行签名吗?PDF确实只有一组签名字段,但我们将签名字段从PDF中与签名工作流元数据分离。然后,工作流引擎在签名者请求时创建签名任务。可以肯定的是,一次只有一个签名者可以在PDF上签名-它被锁定,直到一个签名者完成-然后下一个签名者可以继续。但从商业角度来看,这是平行的;我建议只测试一下。免费演示可用。通过WebUI,您可以简单地按照DnD.Ah定义顺序或并行流。所以从技术上讲这是意甲联赛