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

更新数字签名PDF并再次签名

岳浩
2023-03-14

印度的《公司法》有一些变化。其中值得注意的是,有一项规定,如果公司进行了数字签名,则可以以电子形式维护其登记册。以下几点让我感到困惑:

>

  • 记录一旦以数字方式标注日期和签名,不得编辑或更改;

    记录应能够根据法案的规定或根据法案制定的规则进行更新,更新日期应能够记录在每次更新中。

    想象一下,我们正在对PDF中的表进行数字签名。如果表中最初有2行,并且用户对pdf进行数字签名。现在,我们在pdf中再添加2行,我们可以再次对相同的文档进行签名吗?这样做不是使之前的签名无效吗?或者我们可以说之前的签名只是验证表中的前2行,而第二个签名验证其余的行?

    这可能吗?如果是,可以使用itext和java完成。

    附言:以上是一个不断更新的物理登记簿的替代品。每当登记簿更新时,一个人必须在新记录上用湿墨水签名来证明它。这就是政府希望通过电子方式实现的目标。

  • 共有3个答案

    司迪
    2023-03-14

    您可以通过在PDF本身中包含PDF上次更新的日期,然后对PDF进行数字签名来满足这两个要求。

    数字签名证明文档没有被更改,日期是数字签名PDF的一部分。每次更新文档时,您都必须保留文档列表。因此,您必须永久存储文档的所有版本。

    您认为对文档进行任何更改都会使其数字签名无效,这是正确的。但这不是问题,因为您可以将文档的旧版本存储在数据库中。文档更新后,再次进行数字签名。

    董翰墨
    2023-03-14

    我建议“注册”是一组PDF文档。登记册中的每个条目都将是一份签名的PDF。

    登记册中的每个条目都是一份签名的PDF,它们可能短至一页。

    我建议您不要尝试创建带有“开放字段”的表单,而是以增量方式添加到签名的PDF或任何类似内容中。你(和政府)希望登记册的数字签名版本易于理解和实施。

    解决方案还应该能够使用现成的签名系统。很容易理解一堆文件组成了一个“登记簿”对一组PDF做同样的事情。

    如果担心单个PDF可能会从“注册表”中删除,则可以创建(并签名)额外的“索引”。然后,每当一页被添加到注册表中时,就可以修改索引并重新签名。或者可以签署新的索引版本。

    比签署索引pdf更好的方法是以XML格式创建索引并签署XML。这样一来,XML就可以被计算机程序读取,各个PDF就可以验证其存在性和有效签名。-你想给办事员一些简单的方法,以确保登记册的所有单独部分都存在并得到说明。

    叶茂才
    2023-03-14

    首先我想

    • OP讨论的是集成的PDF签名,
    • 他想在文件中保留原始签名,
    • 这些更改将使用增量更新应用于已签名的文档

    在这种情况下,确实可以对文档应用更改,而不会在数学上使覆盖原始签名字节范围的原始签名无效,请参阅以下背景答案。

    不过,这种情况的PDF规范规定,只允许进行某些更改。关于这个答案。基本上,人们所能期望的最好(取决于原始签名的类型)是以下允许的更改:

    • 添加签名字段

    因此

    如果表中最初有2行,并且用户对pdf进行了数字签名。现在,我们在pdf中再添加2行,我们可以再次对同一文档进行签名吗?这样做不是使之前的签名无效吗?

    如果OP通过填充现有表单字段或创建某种注释来添加2行,则OP只能添加2行。前者需要计划这些附加信息并相应地提供表单字段,而后者仅使用注释,可能无法在每个上下文中被接受(一些预览器不显示注释...)。

    因此,可以在签署的文件中添加某些更改,但必须事先做好计划。

     类似资料:
    • 是否可以在签名的PDF中添加附加页面并在不破坏第一个签名的情况下再次签名。 我在adobe留档中读到增量更新,这可能是可能的。 然而,我不确定这是否适用于所有内容,还是仅适用于注释(注释)、表单填写和数字签名。 我试图通过在Java中使用Apache PDFBox来做到这一点,对文档进行签名,然后加载文档,将页面附加到文档中,使用saveIncremental()保存文档,然后再次签名。 但是,第

    • 我使用PdfWriter setEncryption对PDF文档进行了加密/解密。一切正常,解密也正常。 当我为数字签名的PDF文档做同样的事情时,我的数字信息与消息一起损坏(SigDict/Contents非法数据) 是否可以在不影响数字签名信息的情况下加密PDF?

    • 我关注以下帖子:iTextSharp-如何获取PDF内容进行签名,然后在以后进行签名,作为从PDF文档获取数据的基础,创建一个带有空白签名的临时文件,然后返回该临时文件的哈希值。散列被发送到在本地拥有令牌的客户端,在那里对其进行签名,并返回到签名的web应用程序。此时,我将其转换为字节并生成最终的签名文档。 但是,签名的文档没有有效的签名,显示消息:Error in decoding BER。 1

    • 我想实现PDF的“并行”签名过程,这样用户就可以不是“一个接一个”地进行数字签名,而是同时进行数字签名。为了实现这一点,我决定为所有用户创建初始文档的单独副本,并在它们上获得签名。最终,所有签名都应该连接到单个PDF中。 让我们假设,PDF在签名过程中没有变化,除了签名字段创建(所有acroForms、signaturecontainer、可视签名等都是在之前创建的,并且对所有这些都是相似的)。

    • 使用itext v5对文档进行数字签名时。5.11 PDF/A-2b文档被破坏——这意味着它们不再作为PDF/A文档有效。违反以下规则:https://github.com/veraPDF/veraPDF-validation-profiles/wiki/PDFA-Parts-2-and-3-rules#rule-643-1 在上面的链接中,它指定摘要无效,因此我也给你一个代码段,在使用iText

    • 我正在编写一个服务,其中我用一个空容器预签名pdf文件,从pdf文件中提取一个字节范围的散列,并将其发送到另一个服务,这将允许用户使用移动电话对散列进行签名。我拿回一个证书,我将注入到预签名pdf文件中的签名容器中。 签名本身起作用,数字签名是有效的,但我只需要更改可见签名本身的文本。我认为这是可能的,因为可见签名实际上与证书本身没有任何关系,所以显示来自证书的名称只是一种方便,特别是在多个签名的