0

首先,一些背景知识 - 实际问题在底部。

我目前正在开发一个基于 Web 的应用程序(某种 SaaS),它允许用户将表单发送给他们自己的客户。

这些表格是简单的小型工作合同,客户会说“是的,我会这样做,这是我的确认”。

正在“签名”的东西不需要完全合格的数字签名,电子签名就足够了。

虽然在这种情况下,一个简单的复选框说“是的,我会这样做”在法律上就足够了,但我很想用签名板来实现它。老实说,这只是为了看起来更具约束力,而且,嗯,“整洁”。

当前的工作流程如下所示:

  1. 用户的客户打开网络表单(被要求签名的一方是宇宙中唯一知道直接链接的人)
  2. 勾选几个框并输入文本
  3. 单击“签名”,打开 HTML5 签名板(移动设备)或简单输入(PC)以输入他们的姓名
  4. 点击“接受”
  5. 生成 PDF 以供下载并存储在服务器上(连同时间戳、IP 和其他一些信息)

如您所见,整个协议构成了一个简单的电子签名——即使没有花里胡哨。

我想做什么

与任何简单的电子签名一样,任何一方都很容易说文档可能已被篡改。

所以我所做的是根据规范正确签署 PDF(使用 tcpdf):这需要首先生成 PDF,然后将签名添加到/Sig字典中,然后生成跨所有字节范围的摘要(不包括签名),链接它加上一个.crt文件,瞧:文件被签名了,即使一个字节被更改,签名也会变得无效。

现在的问题:

  1. 是否可以在不使用证书的情况下从“篡改验证”中受益?就像我说的,这些不应该是数字签名,而是简单的电子签名。不过,我希望从突出显示的任何签名后更改中受益。
  2. 或者,我也可以简单地使用适当的证书进行签名过程。但是这个证书将是的,而不是我的用户,甚至我的用户的客户。从这个意义上说,它会弊大于利吗?即证书属于错误的一方,因此变得毫无意义;我,而不是签字人保证;“我签署后文件被更改并重新签署”;等等
4

2 回答 2

1

是否可以在不使用证书的情况下从“篡改验证”中受益?就像我说的,这些不应该是数字签名,而是简单的电子签名。不过,我希望从突出显示的任何签名后更改中受益。

不,至少只要您想以可互操作的方式执行此操作。

您当然可以发明自己的安全系统,创建一个 PDF 查看器或至少为常用的 PDF 查看器创建插件来支持您的系统,并将这些程序推广给您的用户。

但是,如果您希望现有的 Adob​​e Reader 按原样验证签名,则必须采用 X509 PKI 方式。

或者,我也可以简单地使用适当的证书进行签名过程。但是这个证书将是我的,而不是我的用户,甚至我的用户的客户。从这个意义上说,它会弊大于利吗?即证书属于错误的一方,因此变得毫无意义;我,而不是签字人保证;“我签署后文件被更改并重新签署”;等等

使用您自己的证书进行签名时,不要忘记正确填写原因字段,以便表明您的签名被用作反签名以保证可验证性。

有了这个,我看不到你的签名有任何伤害。

不过,问题是它有多少好处。

显然,用户仍然可以声称他签了不同的东西……因为他签了!他签署了网络表格,而不是 PDF。因此,您可能必须提供证据证明 PDF 准确地反映了 Web 表单所显示的内容,即用户签署了等效的内容。

如果您想要用户实际的不可否认性,您需要让他以通常接受的不允许篡改的方式亲自签名。换句话说,您的用户需要自己应用适当的数字签名。其他一切都对伪造的索赔开放。

于 2016-05-04T14:26:29.860 回答
0

您可以使用受信任的时间戳(在 RFC3161 中定义)而不是由客户或您的服务器创建的签名。时间戳可保护文档完整性并证明您的文档在特定时间之前存在。从技术上讲,它是由受信任的第 3 方创建的数字签名。

于 2016-05-05T07:59:21.880 回答