0

我的公司为医院开发了一个 ERP,由于整个周末的一些立法变化,我一直在阅读很多关于数字签名的内容,因为我需要解决以下场景:

Each doctor will receive from the ministry of health a certificate (so there's no escape from it... government said so...) and all of his reports sent/stored in digital format must be signed with this certificate.
The certificates will be valid for one year. Each year upon renewing of the medical license, the certificate will be renewed.

我们在这里主要关心的是保证文档的来源(发件人就是他声称的那个人),但我们还必须使“不可能”(或至少不可行)来更改文档的内容(或者至少如果它改变了) ,我们必须能够知道发生了修改)并“提取并复制”签名......

我的问题是:我该如何处理这整件事?我应该怎么办?

PS:在您的回答中请考虑:

  1. 这些文件将远远超过证书的生命周期。
  2. 证书可能已被吊销。撤销前签署的文件必须仍然有效
  3. 第 3 方如何验证信息的完整性(文件 + 证明)
  4. 是否没有安全原则规定使用过期证书签名的信息无效或其他什么?
  5. 我对这个领域真的很陌生,我可能问错了问题......
4

3 回答 3

2

简而言之,必须使用 CAdES、PAdES 或 XAdES(取决于数据格式)标准对文档进行签名,其中应用时间戳并采取其他措施。这些标准专为与您类似的任务而设计,因此可以解决您的顾虑。我建议您阅读一些有关这些格式的文章。不幸的是,我现在没有与您分享的链接,但您可以根据这些缩写找到很多。

CAdES 基于 PKCS#7/CMS(带有包装签名的通用数据的基于证书的签名)。

PAdES 是 PDF 签名的扩展,专门用于 PDF 文档。

XAdES 与 CAdES 类似,可用于签署 XML 文档和(较少见的)二进制数据。

于 2013-04-22T17:49:20.477 回答
1

[披露:我为 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 数字签名的最常用方法是使用免费的 Adob​​e Reader。(不是昂贵的 Adob​​e Acrobat。)Adobe Reader 知道如何检查数字签名的有效性,然后告诉阅读器/签名者/审核员签名有效,文档自签名后未更改等。

您的其他问题:

这些文件将远远超过证书的生命周期。

是的,这很好。就像“湿签名”一样,一旦您对文档进行了有效的数字签名,该文档仍然由您签名。-- 即使您的签名证书稍后过期。作为验证过程的一部分,将签名日期与证书上的有效日期进行比较。

证书可能已被吊销。撤销前签署的文件必须仍然有效

是的,这就是标准数字签名的工作方式。即使证书被吊销,在证书有效期间签署的文件仍将保持签署状态。由于日期/时间戳在验证过程中发挥着如此重要的作用,因此可以使用第 3 方时间戳服务。但它们不用于大多数数字签名。相反,应创建明确的管理程序,以确保时间服务器已正确设置 NTP 到良好的来源,并定期检查和验证系统。

CoSign 使用防篡改硬件设备进行签名。它的时钟使用 NTP 同步。

第 3 方如何验证信息的完整性(文件 + 证明)

正如我上面所讨论的,整个验证问题很重要。这就是我推荐使用 XML 或 PDF 作为文档类型的原因。例如,您可以对您自己系统用于表示信息的内部数据结构进行数字签名。在这种情况下,数字签名将在单独的数据结构中进行。这是“外部签名”场景。一切正常,除了审核员需要构建自己的软件来验证或相信您的软件正在正确地进行验证。更好的选择是使用直接支持数字签名且易于验证的格式。

是否没有安全原则规定使用过期证书签名的信息无效或其他什么?

适当的数字签名系统不允许使用过期的证书来签署任何内容。使用在签名时有效的证书对某些内容进行签名后,除非随后更改文档,否则它将保持签名状态。

我对这个领域真的很陌生,我可能问错了问题......

其他要问的问题:如何将签名者的图形签名添加到文档(XML 或 PDF)中——人们希望看到它。您如何管理/管理证书?基于服务器的签名是一个很好的解决方案。请记住,对于任何生产系统,证书不应存储在 sw 中。相反,必须使用安全签名创建设备(基于硬件)。

于 2013-04-23T12:16:48.987 回答
0

您还需要阅读基线配置文件,其中有长期签名的配置文件。Eugene 已经提到的每种格式都有一个配置文件。例如,如果您的文档是 PDF,您可以使用 PAdES 签名和“PAdES Baseline Profile”文档中指定的 LTA 级别。

所有这些文档都是 ETSI 标准,您可以在以下位置搜索: http: //pda.etsi.org/pda/queryform.asp

于 2013-04-23T11:29:27.930 回答