首先,一些背景知识 - 实际问题在底部。
我目前正在开发一个基于 Web 的应用程序(某种 SaaS),它允许用户将表单发送给他们自己的客户。
这些表格是简单的小型工作合同,客户会说“是的,我会这样做,这是我的确认”。
正在“签名”的东西不需要完全合格的数字签名,电子签名就足够了。
虽然在这种情况下,一个简单的复选框说“是的,我会这样做”在法律上就足够了,但我很想用签名板来实现它。老实说,这只是为了看起来更具约束力,而且,嗯,“整洁”。
当前的工作流程如下所示:
- 用户的客户打开网络表单(被要求签名的一方是宇宙中唯一知道直接链接的人)
- 勾选几个框并输入文本
- 单击“签名”,打开 HTML5 签名板(移动设备)或简单输入(PC)以输入他们的姓名
- 点击“接受”
- 生成 PDF 以供下载并存储在服务器上(连同时间戳、IP 和其他一些信息)
如您所见,整个协议构成了一个简单的电子签名——即使没有花里胡哨。
我想做什么
与任何简单的电子签名一样,任何一方都很容易说文档可能已被篡改。
所以我所做的是根据规范正确签署 PDF(使用 tcpdf):这需要首先生成 PDF,然后将签名添加到/Sig
字典中,然后生成跨所有字节范围的摘要(不包括签名),链接它加上一个.crt
文件,瞧:文件被签名了,即使一个字节被更改,签名也会变得无效。
现在的问题:
- 是否可以在不使用证书的情况下从“篡改验证”中受益?就像我说的,这些不应该是数字签名,而是简单的电子签名。不过,我希望从突出显示的任何签名后更改中受益。
- 或者,我也可以简单地使用适当的证书进行签名过程。但是这个证书将是我的,而不是我的用户,甚至我的用户的客户。从这个意义上说,它会弊大于利吗?即证书属于错误的一方,因此变得毫无意义;我,而不是签字人保证;“我签署后文件被更改并重新签署”;等等