[披露:我为 ARX 的 CoSign 工作。]
你的情况很常见。你提出了一些问题。我的回答:
他以数字格式发送/存储的所有报告都必须使用此证书签名。
您可以对任何东西(任何比特包)进行数字签名。真正的问题是收件人或审核员如何轻松验证文件:
- 自签名后未修改(完整性)
- 由正确的人(身份)签名
- 以正确的意图签署(签名者的声明)
机器可读数据,例如表单数据、中间数据等。
签名:对于设计用于稍后机器读取的信息(例如表单提交),将信息存储在 XML 中并使用 XML 签名标准对其进行签名:XAdES CoSign签名 API (SAPI)直接支持对 XML 文档进行签名。
验证有许多在线 XML 数字签名验证服务,Google 为他们提供。SAPI api 还支持验证 XML 文档。
人类可读文档
签名:对于人类可以阅读的“最终”文档(但以数字方式存储,可以包含在搜索中等),PDF 文档是可行的方法。PDF 格式很好地支持数字签名。有许多方法可以将数字签名添加到 PDF 文档。对于开发人员来说,CoSign Signature Web Agent是一个 Web 服务(HTTPS + XML 参数文档),可以处理所有的签名 UI 问题。
验证:验证 pdf 数字签名的最常用方法是使用免费的 Adobe Reader。(不是昂贵的 Adobe Acrobat。)Adobe Reader 知道如何检查数字签名的有效性,然后告诉阅读器/签名者/审核员签名有效,文档自签名后未更改等。
您的其他问题:
这些文件将远远超过证书的生命周期。
是的,这很好。就像“湿签名”一样,一旦您对文档进行了有效的数字签名,该文档仍然由您签名。-- 即使您的签名证书稍后过期。作为验证过程的一部分,将签名日期与证书上的有效日期进行比较。
证书可能已被吊销。撤销前签署的文件必须仍然有效
是的,这就是标准数字签名的工作方式。即使证书被吊销,在证书有效期间签署的文件仍将保持签署状态。由于日期/时间戳在验证过程中发挥着如此重要的作用,因此可以使用第 3 方时间戳服务。但它们不用于大多数数字签名。相反,应创建明确的管理程序,以确保时间服务器已正确设置 NTP 到良好的来源,并定期检查和验证系统。
CoSign 使用防篡改硬件设备进行签名。它的时钟使用 NTP 同步。
第 3 方如何验证信息的完整性(文件 + 证明)
正如我上面所讨论的,整个验证问题很重要。这就是我推荐使用 XML 或 PDF 作为文档类型的原因。例如,您可以对您自己系统用于表示信息的内部数据结构进行数字签名。在这种情况下,数字签名将在单独的数据结构中进行。这是“外部签名”场景。一切正常,除了审核员需要构建自己的软件来验证或相信您的软件正在正确地进行验证。更好的选择是使用直接支持数字签名且易于验证的格式。
是否没有安全原则规定使用过期证书签名的信息无效或其他什么?
适当的数字签名系统不允许使用过期的证书来签署任何内容。使用在签名时有效的证书对某些内容进行签名后,除非随后更改文档,否则它将保持签名状态。
我对这个领域真的很陌生,我可能问错了问题......
其他要问的问题:如何将签名者的图形签名添加到文档(XML 或 PDF)中——人们希望看到它。您如何管理/管理证书?基于服务器的签名是一个很好的解决方案。请记住,对于任何生产系统,证书不应存储在 sw 中。相反,必须使用安全签名创建设备(基于硬件)。