简单电子签名:“签名”PDF无签名篡改保护证书

时间:2016-05-04 09:33:55

标签: pdf certificate digital-signature tcpdf electronic-signature

首先,有点背景 - 实际问题在底部。

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

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

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

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

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

  1. 用户的客户打开网络表单(被要求签名的一方是宇宙中唯一知道直接链接的人)
  2. 点几个框并输入文字
  3. 点击“签名”,打开HTML5签名板(移动)或简单输入(PC)以输入其姓名
  4. 点击“接受”
  5. 生成PDF以供下载并存储在服务器上(以及时间戳,IP和其他一些信息)
  6. 正如您所看到的,整个协议构成了一个简单的电子签名 - 即使没有花里胡哨。

    我想做什么

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

    所以我所做的是根据规范(使用tcpdf)正确签署PDF:首先生成PDF然后然后将签名添加到/Sig字典,然后生成跨越所有字节范围的摘要(不包括签名),将其与.crt文件链接起来:文档签名时,即使单个字节发生更改,签名也会变得无效。

    现在问题:

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

2 个答案:

答案 0 :(得分:1)

  

是否有可能受益于"篡改验证"没有使用证书?就像我说的,这些不应该是数字签名,而是简单的电子签名。尽管如此,我仍然希望从突出显示的任何签名后更改中受益。

不,至少只要你想以可互操作的方式做到这一点。

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

但如果你想要现有的Adobe Reader来验证签名,那么你必须采用X509 PKI方式。

  

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

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

有了这些,我就不会看到你的签名造成任何伤害。

问题是它有多好,但是。

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

如果您希望用户实际不可否认,您需要让他以一种不被允许篡改的方式亲自签名。换句话说,您的用户需要自己应用适当的数字签名。其他一切都对伪造的主张持开放态度。

答案 1 :(得分:0)

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