首先,有点背景 - 实际问题在底部。
我目前正在开发基于网络的应用程序(一种SaaS),允许用户将表单发送给自己的客户。
这些表格是小型工作的简单小合同,客户说“是的,我会这样做,这是我的确认”。
正在“签名”的东西不需要完全合格的数字签名,电子签名就足够了。
虽然在这种情况下,一个简单的复选框说“是的,我会这样做”在法律上就足够了,我很想用签名板来实现它。说实话,这只是因为它看起来更具约束力,而且“整洁”。
正如您所看到的,整个协议构成了一个简单的电子签名 - 即使没有花里胡哨。
与任何简单电子签名一样,任何一方都可以轻易地说文档可能已被篡改。
所以我所做的是根据规范(使用tcpdf)正确签署PDF:首先生成PDF然后然后将签名添加到/Sig
字典,然后生成跨越所有字节范围的摘要(不包括签名),将其与.crt
文件链接起来:文档签名时,即使单个字节发生更改,签名也会变得无效。
答案 0 :(得分:1)
是否有可能受益于"篡改验证"没有使用证书?就像我说的,这些不应该是数字签名,而是简单的电子签名。尽管如此,我仍然希望从突出显示的任何签名后更改中受益。
不,至少只要你想以可互操作的方式做到这一点。
您当然可以创建自己的安全系统,创建PDF查看器或至少为常用的PDF查看器插件来支持您的系统,并将这些程序推送给您的用户。
但如果你想要现有的Adobe Reader来验证签名,那么你必须采用X509 PKI方式。
或者,我也可以简单地使用适当的证书进行签名。但是这个证书将是我的,而不是我的用户'甚至我的用户'客户&#39 ;.从这个意义上说,弊大于利吗?即证书属于错误的一方,因此变得毫无意义;我,而不是签字券; "在签署"之后,文件被更改并重新签名;等
使用您自己的证书进行签名时,请不要忘记正确填写原因字段,以便表明您的签名作为计数器签名应用,以保证其可验证性。
有了这些,我就不会看到你的签名造成任何伤害。
问题是它有多好,但是。
显然,用户仍然可以声称他签署了不同的东西......因为他做到了!他签署了网络表格,而不是PDF。因此,您可能必须提供证据,证明PDF完全反映了Web表单显示的内容,即用户签署的等效内容。
如果您希望用户实际不可否认,您需要让他以一种不被允许篡改的方式亲自签名。换句话说,您的用户需要自己应用适当的数字签名。其他一切都对伪造的主张持开放态度。
答案 1 :(得分:0)
您可以使用受信任的时间戳(在RFC3161中定义),而不是客户或服务器创建的签名。时间戳可以保护文档的完整性,并证明您的文档在特定时间之前就已存在。从技术上讲,它是由受信任的第三方创建的数字签名。