PDF 数字签名:种子值字典,MDP (PDF 1.7 32000-1:2008)

PDF digital signature: seed value dictionary, MDP (PDF 1.7 32000-1:2008)

PDF 1.7 规范说:

seed value dictionary, Key MDP: "[..] A value of 0 defines the signature as an author signature (see 12.8, “Digital Signatures”). The values 1 through 3 shall be used for certification signatures and correspond to the value of P in a DocMDP transform parameters dictionary (see Table 254). [..]"

我的问题:

  1. 作者签名认证签名的同义词吧?

如果作者签名等同于认证签名:

  1. 0(作者签名)和1-3(认证签名)之间的区别看起来很烦人。背后的想法是什么?
  2. 或者出了点问题,规范的意思是批准签名而不是作者签名?Adobe AEM Forms API 的 Java 文档支持这一点,请参阅 setMdpValue)

如果批准签名是指:

  1. 将 MDP(在种子值字典中)设置为 0 将需要 批准签名。这是否意味着对文档的任何更改都会使签名无效?

一般问题批准签名

  1. 批准签名真的能保护已签名的文档免受任何更改吗?批准签名 可以有一个 FieldMDP,所以可以允许更改字段?)

最后一题:

  1. 我想预定义一个签名字段,签名者应在其中附加一个批准签名,签名文档的任何更改都会使签名无效. 如何做到这一点? (通过将 MDP(在种子值字典中)设置为 0?)

感谢您回答我的部分问题。

关于第一个问题:您可以安全地假设 MDP 种子值为 0 表示签名应为批准签名。

ISO 32000-1 不知道术语 "author signature"。 PDF Reference 1.7(从中派生出 ISO 规范)使用术语 "author signature" 表示现在已知的 "certification signature",但参考文献中相应的 except 明确指出 MDP seed 0 表示 "not an author signature":

A value of 0 defines the signature as an ordinary (non-author) signature

关于问题 4 和 5:不,批准签名是允许 most 更改的签名类型,比 MDP 3 略多,参见。 this answer 堆栈溢出。

关于你的最后一个问题:考虑使用 签名字段锁定字典 ActionAll 锁定所有表单字段。不幸的是,这仍然允许进行某些更改。但是,如果您准备使用 PDF 2.0 功能,则可以在签名字段种子值字典中将 LockDocument 设置为 true 并设置位Ff 中的 8 值使该种子成为强制性的。