我们正在尝试对生成的 pdf(pdf 版本 1.4)进行签名,但我找不到任何说明 PDF 1.4 支持 ECDSA 的标准。
PDF 1.4 中没有关于允许的签名算法的规范要求。此外,PDF 1.4 尚未包含对可互操作签名的建议。
PDF 2.0 标准在其“签名互操作性”部分认为 SHA256withECDSA 只能从 PDF 2.0 开始互操作。
首先,1.7 之前的 PDF 版本没有正确标准化,第一个标准化的通用 PDF 版本是 1.7,如 ISO 32000-1:2008。
好的,有高达 1.7 的 PDF 版本的 Adobe PDF 参考;但Adobe 个人在 iText 邮件列表中解释说,PDF 参考本质上不是“规范的”——它们(通常)不会做出最终的、明确的陈述——只是一般的陈述。因此,您无法独立确定给定的陈述对于给定的 PDF 版本是否正确,Adobe 稍后可以判定情况正好相反。
尽管如此,PDF 参考 1.4 还是作为 ISO 19005-1:2005 规范 PDF/A-1 的基础,这在一定程度上将该 PDF 参考提升到了半规范级别。因此,让我们假设 PDF 1.4 确实由 PDF 参考 1.4“指定”。
不幸的是,PDF Reference 1.4 并没有对签名的格式进行太多限制:
签名可以是纯数学的,例如公钥/私钥加密的文档摘要,也可以是生物识别形式,例如手写签名、指纹或视网膜扫描。使用的特定身份验证形式由插件签名处理程序实现。
因此,在 PDF 1.4 中,由相关签名处理程序决定允许什么和不允许什么,这不是“标准”的一部分。
正如Lonzak 的回答所指出的- 感谢提醒 - 上述引用后的 PDF 参考 1.4 继续说“公钥数字签名认证的规范可在 Adobe 文档 PDF 公钥数字签名和加密规范中找到(请参阅参考书目)。”
乍一看,该文档似乎包含所寻求的信息。虽然它确实包含比 PDF 参考更多的细节,例如哪些SubFilter值对应于 PKCS#1 或 PKCS#7 签名值以及哪些数据(如果有)应嵌入到要签名的 PKCS#7 中,但它没有描述PKCS#7 容器中允许使用哪些签名和散列算法。因此,不幸的是,这份文件对手头的问题没有帮助。
这对应于 PDF 协会的观点,参见。他们的技术说明 6:
PDF 参考 1.4 定义了如何将数字签名嵌入到文档中。PDF/A-1 标准会影响数字签名的某些方面,例如字体和颜色。但是,该标准没有对语义做出任何声明,即如何创建和验证签名。数字签名的语义由相应的签名处理程序决定,这些处理程序由注册名称唯一标识。
因此,技术说明 6 继续从后来的 PDF 参考中推导出这些语义。
实际上,从 PDF 参考 1.5 开始,“签名互操作性”部分为可互操作的 PDF 签名提供了越来越具体的指导方针。
但请注意,这些指导方针仍然不是一般要求。
根据 PDF 2.0 规范 ISO 32000-2:2017,PDF 版本对互操作签名的算法限制是:
这认为您的 SHA256withECDSA 签名在 PDF 2.0 之前不可互操作!
| 归档时间: |
|
| 查看次数: |
705 次 |
| 最近记录: |