
(特别感谢契约锁电子签约平台提供的相关技术参考信息)
随着国家政策的推动,电子签名正在普及化。早在1999年10月,国家新的《合同法》即首次确认了电子合同、电子签名的法律效力[1]。2005年4月1日起,《中华人民共和国电子签名法》正式实施,对于电子签有着完整、详尽的解释[2]。2019年4月23日修订生效的《电子商务法》[3]以及今年新生效的《民法典》[4]中均有关于电子合同、电子签名合法有效性的法律条文。其中《电子签名法》第二条对于电子签名的定义如下:是指数据电文中以电子形式所含、所附用于识别签名人身份并表明签名人认可其中内容的数据。与此同时,《中华人民共和国电子签名法》第十三条亦规定,电子签名需同时符合一定条件,才能视为可靠的电子签名:
(1)电子签名制作数据用于电子签名时,属于电子签名人专有,即电子签名的唯一性;
(2)签署时电子签名制作数据仅由电子签名人控制,即电子签名的独占性;
(3)签署后对电子签名的任何改动能够被发现、签署后对数据电文内容和形式的任何改动能够被发现,即电子签名的完整性。
数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用[5]。数字签名只是电子签名的一种实现形式,理论上实现法律意义上可靠的电子签名应该是有很多方法的,符合法律对于电子签名的要求即可。数字签名不是指将签名扫描成数字图像,或者用触摸板获取的签名,更不是落款。数字签名过的文件的完整性是很容易验证的(不需要骑缝章、骑缝签名,也不需要笔迹鉴定),而且数字签名具有不可抵赖性(即不可否认性),不需要笔迹专家来验证。由于数字签名本身只是一个数字串,要使得这个数字串满足法律规定的要件,就要基于PKI体系让数字签名来实现法律意义上可靠的电子签名。
PKI(Public Key Infrastructure)体系,中文叫:公开密钥基础设施,其是利用公开密钥加密建立起来的基础设施。PKI体系是计算机软硬件、权威机构及应用系统的结合。它为实施电子商务、电子政务、办公自动化等提供了基本的安全服务,从而使那些彼此不认识或距离很远的用户能通过信任链安全地交流[6]。一个典型的PKI系统包括PKI策略、软硬件系统、证书机构CA、注册机构RA、证书发布系统和PKI应用等。
PKI体系的要点:
网络上因大家不能见面,所以伪造身份是非常容易的,如何在网络上验明正身,是否可以有像线下“公民身份证”或者“企业营业执照”等一样的“网络身份证书”就非常重要了,相互通信的时候,能够确认“网络身份证书”,那么就知道自己在跟对的人通信。
该有谁来制作这个“网络身份证书”呢?,在现实生活中,如果公民身份证不是由公安机关来制作的话,那么这个身份证我们还能信任吗?同样,在网络世界中,我们需要一个信的过的发证机构来发行“网络身份证书”,同时用户要好好保管好自己的“网络身份证书”,就像派出所给你发的公民身份证,自己要好好保管一样。
一般来说,构成PKI体系的要素有如下三个:
1) 网络身份证书
2) 认证机构
3) 证书库
本质上,PKI体系就是网络身份证书的制作和分发的一种机制,在这个机制的保障下,用户进行可信赖的网络通信,即安全的网络通信保障机制。实际上,网络身份证书也是存放在硬盘或者是其他硬件卡(U盘)里面的,证书的构造是一种叫做X.509的协议规定的;另一方面,认证机构也可以理解为一个网络应用程序,它按照相应的机制来制作和分发网络身份证书。
证书库其实也就是文件系统而已,在网络上将证书放在一起,供其他应用来下载获取,或者因为某些特殊情况,证书制作好之后,直接分发出去,甚至没有证书库。
一旦利用了网络身份证书确认了用户身份,与其进行加密通信就可以实现了,因为证明书里包含了用来加密的密钥。
比如说,你要和李雷通信,这个自称李雷的男人,会在通信的最开始,将自己从认证机构那里获取到的“网络身份证书”发给你,通过这个证书你可以确认他就是李雷。然后,你用这个“证书中的密钥”,将你要发送给李雷的内容进行加密,然后发送给李雷。用李雷“证书中的密钥”加密过的内容,只能用李雷才有的另一个“私人的密钥”才能解密。这样的话,如果你发送给李雷的内容被他人窃取的话,他人也无法解密。
如果李雷好好保管好自己才有的“私人的密钥”,那么如果有人拿着李雷的“证书中的密钥”想要胡作非为的话,是不可能的。因为用“证书中的密钥”加密过的内容,只有李雷自己才有“私人的密钥”能解密。
所以这么一来,PKI提供的网络身份证书可以用来做身份确认和加密通信,同时实现这两个重要的功能。
对于李雷来说,只要保证自己的“私人的密钥”不被盗走,包含在“网络身份证书”中的密钥给多少人是没有关系的。也就是说,想跟李雷通信的人,必须要有李雷的“网络身份证书”,要用“证书中的密钥”对通信内容进行加密,为了能让其他人可以方便的获取李雷的“网络身份证书”,证书库就显得非常必要了。
在PKI机制中,放在“网络身份证书”中的密钥可以被任意自由分发,这里的“证书中的密钥”被叫做“公开密钥(Public Key)”,与此对应,证书持有人本人保管的那个“私人的密钥”就称作“私有密钥(Private Key)”。
如上文提到,“公开密钥(Public Key)”是放在“网络身份证书”中的,所以用什么样的方式去分发“网络身份证书”都没有关系。放到U盘里给别人,或者放到网上让人下载,或者用邮件发送都是可以的。
按照上面说的,我们使用包含“网络身份证书”中的公开密钥去给通信内容加密,但是这个“网络身份证书”真的可以被信任吗?说到底,这个“网络身份证书”也就是普通的文件而已,不像货币(或者公民身份证)那样,本身有着特殊的材质或者物理上的防伪措施。
而认证机构所用的证书生成器说到底也就是一个应用软件而已,如果搞到这个软件,谁都可以发行“网络身份证书”,所以在技术上来看,伪造“网络身份证书”也是非常简单的。所谓假的“网络身份证书”,比如有一个所谓的“李雷的网络身份证书”,但是如果认证机构的证书生成器将“韩梅梅的公开密钥”替换了其中“李雷的公开密钥”,那么,其他用户发给李雷的信息,韩梅梅可以使用自己“私人的密钥”解密,李雷反而用自己“私人的密钥”不能解密了。
这样看来,认证机构就至关重要了,认证机构的可信度,直接与证书的可信度挂钩,也就是与整个PKI机制的可信度息息相关。
关于认证机构的权威性和可信度的问题,其实是一个社会基础设施建设的话题了。比如,在我们国家,认证机构基本都是有国家主导建设,比如上海CA,广东CA,深圳CA,CFCA等各地的CA机构。
通过以上要点的说明,相信大家已经明白,PKI体系是为保障网络上用户身份的确认以及内容加密传输而设计的,而在实际应用中,不仅仅我们今天说到的数字签名是基于此体系来设计的,我们熟知的HTTPS加密传输协议,也是基于PKI体系而设计的。
其中涉及到的“公开密钥”以及“私人的密钥”到底是什么呢?
公开密钥加密(Public-key cryptography):也称为非对称式加密,即密码学的一种算法,它会有两个密钥,一个是公开密钥,一个是私有密钥,其特性如下:
若用公钥加密,则只能用对应的私钥进行解密,若使用私钥加密,则只能用对应的公钥进行解密。公钥可以公开,任意向外发布,私钥不可以公开,必须由用户自行严格保管,绝不透过任何途径向任何人提供,也不会透漏给被信任的通信的另一方。

图1. 公私钥加解密是单向的
通常我们使用公钥加密,用私钥解密,如上面介绍的加密通信。而在数字签名中,我们使用私钥加密(相当于生成签名,由于私钥仅有本人持有,也即说明电子签名制作数据属于电子签名人专有),公钥解密(相当于验证签名,能用某人的公钥解密,说明加密一定是用持有人的私钥来做的)。
首先我们来看一张图:

图2. 文件数字签名及加密传输
这张图可以算是一份电子文件的数字签名与传输过程的简化版,下面简要描述一下:
假设李雷与韩梅梅要签署一份合作协议,
1) 李雷在电子签系统中,首先拟定好一份双方确定的合作协议文件,电子签系统会计算出这份电子签文件的Hash值(目前常用的SHA256算法计算出Hash值是固定长度256位二进制数),然后电子签系统使用李雷授权的“私人的密钥”对此Hash值做加密,此加密数据即可算作李雷的“签名”,并且此“签名”合并到原来的文件中。
2) 电子签系统再将合并后的文件数据,通过对称加密(目前常用AES256对称算法,密钥长度也是固定256位二进制数)的方式进行加密,由于对称加密只有一个密钥,这样就需要将此密钥再加密传输给韩梅梅(否则韩梅梅无法解密加密后的文件数据),这里就可以发挥韩梅梅“公开密钥”的作用了,电子签系统可以用韩梅梅的“公开密钥”对此“对称加密密钥”进行加密,然后将加密后的文件数据以及对“对称加密密钥”一并发送给韩梅梅。
3) 韩梅梅在电子签系统收到加密的文件数据以及加密后的“对称加密密钥”后,电子签系统首先使用韩梅梅授权的“私人的密钥”对加密的密钥先进行解密,解密后获取到“对称加密密钥”,即可对加密的文件数据进一步进行解密,解密后其获取到了协议文件原文以及合并到原文中的“签名”。
4) 韩梅梅在收到这些资料后,首先需要确认下,此“签名”是否的确是李雷签的。此时,电子签系统可以用李雷的“公开密钥”对此“签名”进行解密,若可以解密成功,即可确认,此“签名”即是李雷签的(只有李雷“私人的密钥”加密的数据,才会被李雷“公开的密钥”解密),再进一步要确认,李雷签署过合作协议文件,传输的过程中是否有可能发生了变化呢?此时电子签系统可以用同样的算法计算出这份文件的Hash值,若发现此Hash与李雷“签名”加密时的Hash值一样,则可断定,此合作协议在李雷“签名”后未发生任何变动。
[1]《中华人民共和国合同法》第十条规定,当事人订立合同,有书面形式、口头形式和其他形式。
[2]《中华人民共和国电子签名法》第十四条规定,可靠的电子签名与手写签名或者盖章具有同等的法律效力。
[3]《中华人民共和国电子商务法》第四十八条规定,电子商务当事人使用自动信息系统订立或者履行合同的行为对使用该系统的当事人具有法律效力。
[4]《民法典》第四百六十九条规定,当事人订立合同,可以采用书面形式、口头形式或者其他形式。
书面形式是合同书、信件、电报、电传、传真等可以有形地表现所载内容的形式。
以电子数据交换、电子邮件等方式能够有形地表现所载内容,并可以随时调取查用的数据电文,视为书面形式。
[5]刘建华主编;孙韩林副主编.物联网安全:中国铁道出版社,2013.09:第68页。
[6]赵振洲著.信息安全管理与应用:中国财富出版社,2015



本文仅作为交流学习之目的使用,文中观点不代表本所立场,亦非作者的正式法律意见。本文系邦信阳中建中汇律师原创文章,转载请完整注明作者信息及出处。