我们正在尝试签署生成的pdf(pdf版本1.4),我找不到任何标准,表示PDF 1.4支持ECDSA。
答案 0 :(得分:4)
PDF 1.4中没有关于允许签名算法的规范性要求。此外,PDF 1.4尚未包含可互操作签名的建议。
PDF 2.0标准在其关于"签名互操作性"认为SHA256withECDSA只能从PDF 2.0开始互操作。
首先,1.7之前的PDF版本没有正确标准化,第一个标准化通用PDF版本是ISO 32000-1:2008。
好的,PDF版本的Adobe PDF参考资料最高可达1.7;但在iText邮件列表中的Adobe personal explained PDF参考文献不是规范的"在本质上 - 他们不会(通常)做出最终的,明确的陈述 - 只是一般的陈述。因此,你不能独立地确定给定的陈述是否适用于给定的PDF版本,Adobe可以在以后判决情况恰恰相反。
尽管如此,PDF参考文献1.4作为ISO / 19005-1:2005规范PDF / A-1的基础,它在一定程度上将此PDF参考文献提升为半规范级别。因此,让我们假设PDF 1.4确实已经指定了#34; PDF参考1.4。
不幸的是,PDF Reference 1.4并没有非常严格地限制签名的格式:
签名可能纯粹是数学的,例如a 公钥/私钥加密文档摘要,或者它可能是生物识别形式的 识别,如手写签名,指纹或视网膜扫描。该 使用的特定身份验证形式由插件签名实现 处理
因此,在PDF 1.4中,由相关的签名处理程序来决定允许的内容和不允许的内容,这不属于"标准"。
如Lonzak's answer所示 - 感谢提醒 - 上述报价后的PDF参考1.4继续说明"公钥数字签名认证的规范可用于 Adobe文档PDF公钥数字签名和加密规范 (参见参考书目)。"
乍一看,文档似乎可能包含所寻求的信息。虽然它确实包含比PDF参考更多的细节,例如哪个 SubFilter 值对应于PKCS#1或PKCS#7签名值,哪些数据(如果有)应嵌入要签名的PKCS#7中,它不描述PKCS#7容器中允许哪些签名和散列算法。因此,遗憾的是,这份文件对手头的问题没有帮助。
这对应于PDF协会的观点,参见他们的Technical Note 6:
PDF参考1.4定义了如何将数字签名嵌入到文档中。数字签名的某些方面受PDF / A-1标准的影响,例如:字体和颜色。但是,该标准没有对语义做出任何陈述,即如何创建和验证签名。数字签名的语义由相应的签名处理程序决定,签名处理程序由注册名称唯一标识。
因此,技术说明6继续从后面的PDF参考文献中推导出这些语义。
实际上,从PDF Reference 1.5开始,有一些部分" Signature Interoperability"这为可互操作的PDF签名提供了越来越多的具体指导。
请注意,这些指南仍然不是一般要求。
根据PDF 2.0规范ISO 32000-2:2017,PDF版本对可互操作签名的算法限制:
这认为您的SHA256withECDSA签名在PDF 2.0之前无法互操作!
答案 1 :(得分:1)
除了MKL所说的PDF 1.4中有关数字签名的更多信息之外,它还是外包的'您可以阅读PDF 1.4规范中的另一个文件:"公共密钥数字签名认证的规范可在Adobe文档, PDF公钥数字签名和加密规范'。“
在简介中,您可以阅读以下内容:
"此规范描述了存储的标准语法 签名字典中的数据和加密字典 使用公钥技术的插件。一定程度的互操作性 跨插件和随时间的签名和加密PDF文件应该 可以使用标准化语法(参见签名和 加密处理程序互操作性)。
但是当然由mkl编写的,没有提到特定的ECDSA算法等。上述文件不再可用,因为它已成为PDF 1.5规范的一部分。因此,如果您想确切知道1.4中支持的内容,您可以阅读PDF 1.5规范或甚至ISO 32000-1本身以获取该信息。每个功能都被标记为"与介绍它的具体版本。
在adobe pdf规范论坛中,有一个类似的question(对一般的新签名类型的支持),你可能会觉得有趣(因为adobe规范主管自己回答):
就数字签名的散列而言,没有技术(文件 格式)关于使用仍然下降的新算法的限制 进入PDF标准。
然而,你也没有期望一个符合标准的读者" 将能够处理它们,因为它只需要处理这些东西 PDF 1.4。 (Adobe Reader在这方面没有区别,但是 别人可能)。
因此,简而言之,您可能会在PDF 1.4中使用较新的签名标准,但您可能不知道读者如何处理它。如果是adobe reader,它会受到支持,但对于第三方读者来说,你不知道。