【问题标题】:Digital signature on documents stored on a server存储在服务器上的文档的数字签名
【发布时间】:2013-06-09 09:55:45
【问题描述】:

我想在我们的ERP 上实施一个流程,以便通过存储在服务器上的网络浏览器文档进行数字签名。 流程应该是:

  1. 用户登录
  2. 用户查看存储在服务器上应进行数字签名的 pdf 文件
  3. 用户选择pdf文件进行数字签名
  4. 文档将进行数字签名

数字标牌可以使用智能卡或服务器端标牌系统来完成。 知道如何实现吗?

【问题讨论】:

标签: digital-signature method-signature


【解决方案1】:

请阅读本书第四章:http://itextpdf.com/book/digitalsignatures

您的主要问题是签名需要私钥。此私钥存储在智能卡上,由于显而易见的原因,无法从该卡中提取(更不用说通过互联网发送了)。

您可能知道,实际的签名是在智能卡的芯片上完成的,而不是在客户端的计算机上,更不用说在服务器上!这意味着您需要使用 PKCS#11 的客户端软件来创建签名。 (另一种方法是使用 MS-CAPI,但这只适用于 Windows。)

您有不同的选择:您可以创建需要在服务器上签名的 PDF 的哈希值,然后将该哈希值发送到客户端应用程序以对其进行签名。或者您可以将 PDF 发送给客户端并在客户端上进行完整的签名。

请注意,我关于数字签名的书已经有点过时了。我们编写了一种更好的方法来实现所谓的“延迟签名”。

尽管如此,事实仍然是,说您希望服务器端签名涉及物理上位于客户端的智能卡是一个矛盾。任何满足该需求的解决方案都会违反所有安全问题。

【讨论】:

  • 任何地方的电子签名已经是不安全的,因为用户看到的和实际签名的是不同的(用户不知道的一些哈希是签名的,而不是文档)。然后证书是受信任的,这意味着可能违反安全性。所以你的评论毫无意义。
  • 当您说在服务器端创建哈希并在客户端对其进行签名时非常不安全,您是对的:最终用户不知道他实际上在签名什么。我不赞成这种“解决方案”,但我知道许多开发人员都是这样实现的。尽管如此:我认为OP自相矛盾的说法是正确的。要求服务器端签名解决方案在客户端使用智能卡进行签名是没有意义的。我不知道您为什么要花费声望点来否决我的回答。
  • 您在整个声明中都错了 - 分发签名与本地签名一样(不)安全,不多不少。
  • @Eugene 有区别。当您在本地签名时(并且对电子签名的内容有一定的了解),您可以轻松检查签名是否合适。如果解决方案中文档字节不存在于您的计算机上而仅存在于服务器上,则您不能这样做。如果您不信任本地创建的签名,可以将其删除。服务器端签名已经公开。
  • @mkl 从技术角度来看没有区别。如果您不信任某事,请不要继续前进,而不要做一些愚蠢的事情,然后尝试恢复它。当您在本地拥有 PDF 文档时,我还没有看到您(或世界上有多少人 - 可能是 200-300 人?)将如何手动计算哈希以确保在正确的哈希上执行签名。即使这样,您也必须检查签名代码以确保完成一个哈希的签名,而不是并行地对其他文档的哈希进行签名。
【解决方案2】:

[披露:我在 CoSign 工作]

您所描述的内容始终由我们的客户安全地完成(使用开放、标准、PKI 数字签名)。

数字签名签名通常在“安全签名创建设备 (SSCD)”上完成。这通常是智能卡,但并非必须如此。一个重要的替代方案是安全的集中式系统。这就是 CoSign 和其他一些公司所销售的。

工作原理:您、CoSign 或其他人编写的软件从 ERP 系统获取文档并计算文档的数字签名哈希。将带有签名者身份验证信息的散列发送到集中式 SSCD。然后 SSCD 计算数字签名并将结果发送回请求系统。然后根据标准(例如 pdf)将签名添加到文档中。结果:一个签名的 pdf 文件。 (或签名的 Word 文档,或签名的 XML 等)

请注意,签名者的私钥永远不会离开 SSCD。 CoSign 的 SSCD 型号包括 FIPS 认证的防篡改外壳。如果有人打开箱子,所有的私钥都会被立即销毁。 See description.

为了与您的 ERP 系统集成,我们预先构建了 connectorsmultiple APIs

有关更多信息,请联系 arx.com 的销售人员。告诉他们拉里派你来的。

【讨论】:

【解决方案3】:

如果智能卡物理上位于客户端,则必须在客户端计算机上运行某些东西,无论是否有服务器组件。这是因为签名是在智能卡本身上计算出来的,只有与智能卡相连的计算机才能与之通信,所以必须在客户端上运行一些东西。

两个选项是:

  • 让客户端软件处理整个签名过程,从读取 PDF、将所需内容提供给智能卡、从智能卡接收响应签名以及将签名插入 PDF,或

  • 让客户端软件与服务器协调,从服务器接收 PDF 哈希,将其提供给智能卡,接收响应签名,将其发送回服务器,然后服务器可以将签名插入PDF(可能有此方案的变体)。

在任何一种情况下,都必须在客户端的智能卡设备中创建签名。

【讨论】:

  • 我们已经在示例 .NET 项目中实现了上面所说的内容,可以下载完整的源代码help.signer.digital/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多