作者:王运嘉博士、刘泽枫
单位:北京枫玉科技有限公司

电子合同是电子签名较为常见的一种应用方式,目前大多数的的电子合同与电子文书都采用PDF的文件格式。本文以PDF格式的电子合同为例解释如何验证电子签名的安全性、有效性与合法性(下文统称“验签”),同样的技术原理与验证原则也适用于其它文件格式的电子签名验证,只不过具体细节稍有不同而已。

电子签名的验签是电子合同使用过程中非常重要的一环。如果对于电子合同所确立的权利义务关系产生争议,通常首先要判断的就是电子合同本身是否规范签署、合法成立,而这主要依赖于对数字签名的合法性、安全性、有效性进行验证。

严格意义上讲,数字签名是电子签名的一种,也是目前电子签名行业应用最广泛的电子签名技术,本文如无特别说明,所提电子签名即是指“数字签名”。

1

验签原理

形成有效的电子签名,必须严格遵守《电子签名法》以及相关的技术规范,这也是我们对电子合同中电子签名进行验证的基础。

(由于篇幅所限,本文不再对通过电子签名技术进行电子合同签署的原理进行赘述,可后台回复“电子签名”阅读《电子签名平台有意回避的真相:合法有效的电子签名应当包含哪些要素》)

从规范的电子签名流程来看,电子签名的验证主要包含以下三个部分:

  • 数字证书的验证
  • 可信时间戳的验证
  • OCSP/CRL的验证

验证上述三个部分各有目的。

数字证书是证书颁发机构(CA机构)对签名人进行严格的身份认证后签发的,类似于“数字身份证”,电子签名就是通过数字证书来完成的,因此数字证书的合法性、有效性对于电子签名的效力而言至关重要。数字证书的主要验证点包括:

  • 验证数字证书是否是正规的CA机构颁发(也就是数字证书是否是伪造的);
  • 验证数字证书的有效期(电子合同签署时不能使用有效期外的数字证书)。

如果以上两项验证均通过,那就意味着电子签名使用的是正规机构颁发的数字证书,证书的拥有者对签名电子文件的内容表示认可(通常数字证书与使用者身份一一对应,这需要CA机构履行严格的身份审查义务然后才能颁发证书,但理论上并不排除CA机构没有严格审查错发证书的可能,此处暂忽略该问题)。

时间戳的作用是确保签名时间的真实性和签名的完整性的。

电子数据具有易篡改的特性,电子合同想要具备法律效力必须要能够防止篡改,或者说如果被篡改了就一定能发现。可信时间戳技术不仅能达到这个目的,而且还能够证明签名的时间,进一步加强了电子签名的验证。

此处需要说明的是,可信时间戳是一项信息技术,并不是某种发明产品,更不属于某个公司独有。作为一项技术,全世界可以提供可信时间戳服务的机构数以千计,国内40多家CA机构也均能提供可信时间戳服务。某些机构宣扬只有自己能够提供可信时间戳技术实际上是一种虚假宣传行为。

OCSP/CRL的验证实际上是数字证书验证的延伸。

通常数字证书都会有一定的有效期,但即便数字证书是在有效期内,也并不一定属于具有法律效力的有效证书。因为对于有效期内的证书而言,也可能存在被吊销的可能;这就好比人的身份证也具有有效期,但是可能会因为丢失、所有人死亡等情况该身份证被“吊销”不能使用。

CRL就是证书吊销列表 (Certificate Revocation List) 的简称,该文件包含了证书颁发机构已经吊销的证书的序列号及其吊销日期,只要签署时通过CRL检验就能知晓证书是否已经被吊销。

但一般CA都只是每隔一定时间 (几天或几个月)才发布新的吊销列表,所以CRL是不能及时反映证书的实际状态,存在一定程度的滞后性,而OCSP却可以更及时地验证证书的吊销情况。

OCSP是证书状态在线查询协议(Online Certificate Status Protocol)的简称,它是 IETF 颁布的用于实时查询数字证书在某一时间是否有效的标准。OCSP能满足实时在线查询证书状态的要求。它提供了一种实时检验数字证书有效性的途径,比下载和处理CRL的传统方式更快、更方便和更具独立性。

2

验签准备及说明

验签准备

  • 软件Adobe Acrobat Reader DC;
  • 已进行电子签名的PDF文件;
  • 上一项PDF中电子签名对应CA机构的根证书以及OCSP证书文件(后台回复“电子签名”获取示例)。

验签说明

Adobe Acrobat Reader DC 是一款优秀的PDF阅读软件,除此之外还能够进行PDF文件的电子签名和电子签名查验,可以直接前往adobe官网(https://get.adobe.com/cn/reader/)免费下载。

为了进行验签我们当然需要一份已经进行了电子签名的PDF文件,许多人对此可能比较陌生不知从何获取,但实际上电子签名文件已经深入到日常生活,我们常用的电子发票就是包含了电子签名的PDF文件。为了方便演示,我们准备了用来演示的PDF文件,您可直接在本公众号回复“验签”获取。

至于对应CA机构的根证书,国内正规的CA机构通常都会在官网提供根证书的下载(比如本文验证的深圳CA所颁发证书的根证书就是从其官网下载)。

而OCSP证书文件,一般需要直接向CA机构或电子合同服务商要求提供,如果CA机构或电子合同服务商无法提供OCSP证书文件,那么极有可能意味着电子合同签署过程中并没有严格依照规范的流程验证数字证书的有效性,电子合同文件本身是否有效存在较大不确定性。

完美的验签状态
在没有非法添加信任的情况下完美的电子签名验签状态应当是,通过adobe软件打开PDF签名文件后左上角显示绿色的勾,且身份有效、时间戳、证书路径、证书吊销状态均核验通过(如后台提供的示例samples-2文件中第一个签名)。

PDF文件中电子签名(安全性、有效性、合法性)验证指南 - 图1

PDF文件中电子签名(安全性、有效性、合法性)验证指南 - 图2

如果通过adobe软件打开PDF签名文件后显示“至少一个签名存在问题”或者提示“签名者的身份未知,因为其未包含在您的可信任证书列表中,且其所有的父证书均不是可信任证书”,那么就需要按照下面的验签步骤进行进一步验签。

3

许验签步骤

1. 根证书安装前
使用Adobe Acrobat Reader DC打开签名文档, 找到文档中的签名并单击, 会弹出签名验证状态框, 提示“签名者的身份未知,因为其未包含在您的可信任证书列表中,且其所有的父证书均不是可信任证书”:

PDF文件中电子签名(安全性、有效性、合法性)验证指南 - 图3

如果点击“签名属性”显示签名者证书, 打开证书查看程序, 将会发现Adobe没有找到完整的证书路径(只有一个姓名层级,往上没有根证书):

PDF文件中电子签名(安全性、有效性、合法性)验证指南 - 图4

2. 根证书安装方法
双击打开rootcert.cer文件, 点击安装证书, 按照默认选项一直到证书安装完成:

PDF文件中电子签名(安全性、有效性、合法性)验证指南 - 图5

PDF文件中电子签名(安全性、有效性、合法性)验证指南 - 图6

PDF文件中电子签名(安全性、有效性、合法性)验证指南 - 图7

PDF文件中电子签名(安全性、有效性、合法性)验证指南 - 图8

弹出导入成功提示, 说明安装成功:

PDF文件中电子签名(安全性、有效性、合法性)验证指南 - 图9

3. 添加到Adobe可信任证书
关闭签名文档, 用Adobe重新打开文档, 打开签名属性->显示签名者证书, 可以看到Adobe成功找到了SZCA根证书, 显示出证书路径:

PDF文件中电子签名(安全性、有效性、合法性)验证指南 - 图10

左侧选中SZCA证书, 右侧选中“信任”标签, 点击添加到可信任证书, 然后在弹出的框中点击确定:

PDF文件中电子签名(安全性、有效性、合法性)验证指南 - 图11

PDF文件中电子签名(安全性、有效性、合法性)验证指南 - 图12

在导入联系人设置中, 确保勾选了“将本证书用作可信任根”, 然后点击确定:

PDF文件中电子签名(安全性、有效性、合法性)验证指南 - 图13

这时的签名验证状态变为“签名者的身份在颁发时有效, 但此时无法通过检查其吊销状态来验证身份”:

PDF文件中电子签名(安全性、有效性、合法性)验证指南 - 图14

此时, 证书身份有效, 但是签名时刻的吊销状态还未知。
打开证书查看程序, 左侧选中SZCA下面的用户证书, 右侧选中“吊销”标签, 提示“确定选定的证书是否有效时发生问题”:

PDF文件中电子签名(安全性、有效性、合法性)验证指南 - 图15

4. 安装OCSP证书
参照2.根证书安装方法, 双击sy2048.cer证书文件, 将其安装到windows系统证书区。

点击上图中“签名者详细信息”, 弹出OCSP证书的查看程序:

PDF文件中电子签名(安全性、有效性、合法性)验证指南 - 图16

左侧选中SY2048 OCSP Signer, 右侧选中“信任”标签, 然后点击“添加到可信任证书”, 在弹出的Adobe安全提示中, 选择确定:

PDF文件中电子签名(安全性、有效性、合法性)验证指南 - 图17

PDF文件中电子签名(安全性、有效性、合法性)验证指南 - 图18

在弹出的导入联系人设置中, 勾选“将本证书用作可信任根”, 然后选择确定。

5. 证书安装完成后
此时重新验证签名, 签名验证结果变为绿色验证通过状态:

PDF文件中电子签名(安全性、有效性、合法性)验证指南 - 图19

重新打开证书查看程序, 选中用户证书的吊销标签, OCSP状态变为选定的证书被认为有效, 因为使用嵌入签名的“联机证书状态协议”(OCSP)响应进行的验证表明其未被吊销。

PDF文件中电子签名(安全性、有效性、合法性)验证指南 - 图20

6.时间戳的验证
时间戳对于电子签名而言非常重要,但是其验证却非常方便,因为Adobe Acrobat Reader DC软件自身就可以识别电子签名的时间或时间戳信息,点击电子签名,然后选择“签名属性”,在弹出的属性信息中部即可直接查看电子签名的时间以及时间戳信息是否安全。

PDF文件中电子签名(安全性、有效性、合法性)验证指南 - 图21

PDF文件中电子签名(安全性、有效性、合法性)验证指南 - 图22

4

后记

合同签署向来关乎“签名人”的直接利益,如果签名本身存在问题(如错签、漏签、伪造签名),不仅会直接影响当事人的权利义务,甚至还可能造成严重后果。

当前,随着互联网的快速发展,以数字签名技术为支持的电子合同被广泛应用到众多领域。从形式上而言,可靠的数字签名与纸质手写签名具备同样的法律效力,但这也决定了如果电子签名“不规范”,同样可能产生严重的法律后果。

以互联网金融(P2P)为例,2018年就曾有部分网民向工信部实名举报某些电子合同服务商签署电子合同不规范,替代用户签署借款合同,使得用户背负借贷债务,如果不是大量出现问题被发现可能“被签名人”最终有口难辩。

可见,是否规范进行电子签名关乎消费者和使用者的切身利益。根据《艾瑞报告:中国第三方电子签名行业研究》中的数据显示,部分电子合同服务商已经实现了日均千万的合同签署量。如果在提供电子合同签署服务过程中,电子合同服务商对签名人身份验证不合规、签署过程不规范,长此以往电子签名行业也可能迎来像P2P行业一样的惊天“暴雷”。

希望中国的电子签名行业能够严格遵守《电子签名法》的要求,严格执行监管政策,成为未来数字经济时代可靠、可信、合法有效的基础设施。