首先,有一点背景--实际问题在底部。
我目前正在开发一个基于网络的应用程序(类似于SaaS),它允许用户向自己的客户发送表单。
这些表格很简单,小规模的工作合同,他们的客户说:“好的,我会这样做,这是我的确认”。
这种正在“签字”的东西不需要完全限定的数字签字,电子签字就足够了。
在这种情况下,一个简单的复选框--“是的,我会这么做”--在法律上就足够了,但是我很想用一个签名垫来实现它。老实说,这仅仅是因为看上去更有约束力,而且,嗯,“整洁”。
当前的工作流如下所示:
正如你所看到的,整个协议构成了一个简单的电子签名--即使没有铃声和口哨声。
我想做什么
与任何简单的电子签名一样,任何一方都很容易说文件可能被篡改。
因此,我所做的是根据规范(使用tcpdf)正确地对PDF进行签名:这需要首先生成PDF,然后将签名添加到/Sig字典中,然后生成一个跨越所有字节范围的摘要(不包括签名),将其与一个.crt文件链接起来,而voilá:文档的签署带来了签名如果一个字节被更改就会变得无效的好处。
现在来回答以下问题:
发布于 2016-05-04 14:26:29
不使用证书就能从“篡改验证”中获益吗?就像我说的,这些不是数字签名,而是简单的电子签名。不过,我还是希望能从任何突出显示的签名后更改中获益。
不,至少只要你想以一种可互操作的方式来做这件事。
当然,您可以发明自己的安全系统,创建PDF查看器,或者至少为常用的PDF查看器创建插件来支持您的系统,并将这些程序提交给用户。
但是,如果您想要现有的Adobe验证签名,就必须采用X509 PKI的方式。
或者,我也可以简单地为签名过程使用一个适当的证书。但是这个证书将是我的,而不是我的用户的,甚至我的用户的客户。从这个意义上说,它会弊大于利吗?也就是说,证书属于错误的一方,因此变得毫无意义;我,而不是签字人的凭单;“文件在我签字后被更改和重新签署”等。
在使用您自己的证书进行签名时,不要忘记正确地填充“原因”字段,以便它指示您的签名作为计数器签名应用,以保证验证性。
有了这个位置,我看你的签名没什么坏处。
但问题是它有多好。
显然用户仍然可以声称他签了不同的东西..。因为他做到了!他在网络表格上签名,而不是PDF。因此,您可能必须提供证据,证明PDF格式准确地反映了web表单显示的内容,用户签署了类似的内容。
如果你想让用户真正的不可否认,你需要让他以一种被普遍接受的方式签名,不允许篡改。换句话说,您的用户需要自己应用适当的数字签名。其他一切都可以要求伪造。
发布于 2016-05-05 07:59:21
您可以使用可信时间戳(在RFC3161中定义)代替由客户或服务器创建的签名。时间戳保护文档完整性,并证明您的文档在特定时间之前存在.从技术上讲,这是一个由可信的第三方创建的数字签名。
https://stackoverflow.com/questions/37023819
复制相似问题