解密合法的电子签名技术(下)
2021-02-19

(特别感谢契约锁电子签约平台提供的相关技术参考信息)


六、为什么是对Hash值加密,为什么Hash值未变,即可断定文件未被修改…


看完上面电子签文件的签名及加密传输过程,大家一定产生了不少疑问:


  • 为什么要对文件的Hash值加密,而不是直接对文件进行加密呢?

  • 为什么重新计算合作协议文件的Hash值与李雷“签名”加密时的Hash值一样,就可断定此文件在李雷“签名”后未发生任何变动呢?

  • 为什么电子签系统能够使用签署主体的“私人的密钥”,不是说私钥不可以公开,必须由用户自行严格保管,绝不透过任何途径向任何人提供吗?


解答这3个问题,首先我们需要了解Hash值的特点,非对称加密以及对称加密的特点,然后我们需要弄清楚,电子签系统授权使用用户的“私人的密钥”是否违背了“私钥不可以公开,必须由用户自行严格保管”的要求。


Hash值是基于数学上的Hash算法得出的,任意长度的数据通过Hash算法的计算,最终都可变为固定长度数据输出。我们平时提到的哈希算法、散列算法、摘要算法等其实都是Hash算法的别名,所谓的哈希值,散列值,摘要值,特征值等等都可算作Hash值的别名。


在数学上,Hash算法有一些独有的特点:


1) 任意数据都可以很高效的经过Hash算法计算得出一个唯一的Hash值而且不存在一种办法,让两个不同的数据经过这个Hash算法的计算得到同一个Hash值(Hash值一样说明原文一样)


2) 通过Hash算法计算得出的Hash值,不存在一种办法,可以逆向计算得出原来的数据(我们可以在不知道原文的情况下判定原文是否发生了修改)。


其实上面我们已经有介绍过非对称加密,即我们的公开密钥加密算法,它的特点是加密与解密用的是不同的密钥,最大的好处即传输密文时无需再传递密钥,因为解密的密钥就在接收方“自己的手上”,当然它也有缺点,即其加密的效率很低,随着数据量增大,加解密要消耗很大的计算资源且速度很慢,此时,对称加密的好处就体现出来了。


对称加密是相对非对称加密而言的,它的加解密都使用同一个密钥,这就意味着密文传给对方时,密钥也必须传给对方,同样,它也有自己的优点,即加密的效率很高,对于数据量大,其效率要远远好于非对称加密。


通过以上的介绍,相信大家应该明白了为什么要对文件的Hash值做“签名”,而不是直接对文件做“签名”了,因为这里的“签名”要用“私人的密钥”做非对称加密计算。


另外,大家理解了Hash值的第一个特点相信也就自然明白了其可以作为判定文件未发生变动的原因。


目前网络上加密传输数据基本上都是这样混合使用非对称加密算法与对称加密算法,充分发挥他们的优点,所谓扬长避短。


关于电子签系统是否可以使用用户授权的“私人的密钥”,这里的答案是肯定的,虽然电子签系统作为程序,拿到了这个“私人的密钥”,但是这个是用户登录电子签系统授权的操作,电子签系统只需严格按照此授权规范来使用“私人的密钥”,同时通过制度约束此“私人的密钥”绝不透过任何途径向任何人泄露,包括电子签系统的管理人员以及开发人员,则依然没有违背“私钥不可以公开,必须由用户自行严格保管”的要求。


最后,大家可能会问,李雷在电子签系统里是如何获得韩梅梅的“公开密钥”以及韩梅梅是如何获取到李雷的“公开的密钥”的?


上面说过,在认证机构获取到的“网络身份证书”中会包含这个证书持有人的“公开密钥”,就上面的示例来看,由于李雷需要签署,其一定是之前向认证机构申请获取了“网络身份证书”的,可是如果此时韩梅梅还未申请过“网络身份证书呢”?


七、实际文件加密传输过程中使用的双证书体系

在电子合同的实际应用中,除了上面所述的情况外,一个用户获取的“网络身份证书”可能会过期或者被吊销,导致“网络身份证书”中的公钥发生变化(此时私钥也一定会发生变化,因为此公私钥总是成对出现),这会直接影响用其之前公钥加密过的文件无法解密等问题。


所以在真实的电子签系统实现中,会采用双证书,即一个用户会用到两个证书,一个证书用于确认其真实身份,也即“网络身份证书”(需要认证机构颁发),一个证书仅用于加密,称为加密证书(用于对“对称密钥”进行加密,电子签系统即可生成),都与用户账号绑定。


现在我们再来看上面说的问题,李雷在电子签系统中确认要给韩梅梅发送合作协议文件时,电子签系统即会为韩梅梅创建账号,此时也为其生成加密证书,即一对用于加密的公私钥,公钥可让李雷获取使用,私钥仅韩梅梅自己在系统中授权使用。


李雷在签名前必须获取到自己的“网络身份证书”,所以李雷在电子签系统提交真实身份资料被确认后,电子签系统同时为其生成一对用于“签名”的公私钥,其中私钥仅李雷自己在系统中授权使用,公钥和确认后的认证资料一并提交给认证机构用于申请“网络身份证书”,认证机构审核确认后,颁发“网络身份证书”(包含了提交的公钥和真实身份资料的部分信息)给到电子签系统,电子签系统将其与此李雷账号绑定。


实际上,李雷在做“签名”时,为了在表现上更接近传统纸质合同的效果,电子签系统会将李雷的手写签名外观图片也合并到协议文件里,另外还会将其“网络身份证书”也合并至协议文件中。然后针对这所有的数据进行Hash运算,取得Hash值以后,由李雷授权电子签系统使用其用于签名的私钥进行“签名”。所以当韩梅梅收到协议文件并进行解密后,其中是有李雷的“网络身份证书”的,自然获取到了其签名证书中的“公开的密钥”。


八、CA机构与数字证书


以上我们提到了认证机构以及“网络身份证书”,那么在实际实现时,到底谁可以做这个认证机构,“网络身份证书”具体又是什么样的呢?


在我们国家,认证机构就是由国家主导建设的CA机构,具备权威性,比如上海CA,广东CA,深圳CA,CFCA等各地的CA机构。


由他们颁发出来的“网络身份证书”即数字证书。以下以上海CA颁发的事件型证书与长期证书的简图来说明数字证书所包含的主要信息以及验证逻辑。



图1.   上海CA事件型证书


首先我们可以看到,数字证书里至少包含:认证主体的名称,认证主体的签名公钥,证书发布者(上海CA)的名称,证书发布者的签名。其实在数字证书中应当还会有证书有效期等其他信息。


由于数字证书上有上海CA的“签名”(我们可以再回顾一下签名的过程,即这个证书由上海CA用自己的签名私钥对相关数据的Hash值做过加密的),当我们通过获取上海CA自己的数字证书,拿其中的签名公钥,解密了此“签名”数据,则可确认,此证书的确由上海CA颁发。


大家可能会问,上海CA自己的数字证书又是由谁来发布,怎么信任呢?其实是一样的验证过程,只是我们会发现,上海CA自己的数字证书上发布者的签名是仍是上海CA自己签署上去的(一样通过其签名公钥验证一下),这种证书我们称为根证书,对于根证书的信任,是因为我们信任上海CA,上海CA的公钥我们可以通过线下确认,事实上不可能伪造。


由此我们可以看到数字证书的一个信任链,即我们会逐层验证直到对根证书的信任。


我们再来看上海CA长期证书简图:


图2.   上海CA长期证书


其中不同点在于,针对上海CA颁发的长期证书,其中上海CA的签名证书并非由自己颁发,而是由WebTrust为其颁发的数字证书,而WebTrust的证书由其自己签名颁发,才是根证书WebTrust是国际CA机构,具备权威性,其根证书被很多软件默认信任,其中就有Adobe的软件(这也是为什么使用上海CA长期证书签署的文件,在Adobe阅读器中被默认显示签名有效绿色标记的原因)


最后我们再来看下事件型证书和长期证书对应的签名私钥的保存和使用:


事件型证书:是在用户签署前获取,电子签系统是在内存中为用户生成一对临时的公私钥,将公钥以及认证资料一并给到CA机构获取证书,获取证书后,由用户授权电子签系统使用之前生成的临时的私钥进行“签名”,签名完成后此私钥即不再用了,不会保存在电子签系统的数据库中。下次签署时,会重新生成一对临时的公私钥,再次获取事件型证书进行签署,也就是说,给用户颁发事件型证书,其每次签署都是使用不同的签名“私钥”,也即“一次一密”。

长期证书:用户认证后,电子签系统在内存中为用户生成一对公私钥,同时将公钥以及认证资料一并给到CA机构获取证书,证书获取成功后,电子签系统将这对公私钥加密保存至数据库,虽然由电子签系统保存,但电子签系统需要查看和使用,一样需要经过用户授权。(通过技术以及制度保障,没有管理人员或者开发人员可以直接通过数据库获取到此数据。)

以上所说的事件型证书或者长期证书,都可算作软证书,即签名证书对应的私钥并未存储在单独的硬件设备里。相对应而言,我们平时也会用到UKey(或者上海法人一证通,本质上和UKey是一样的,只不过是由工商部门提供),签名证书存储在Ukey中,其对应的私钥也存储在Ukey之中。


证书有效期说明:仍以上海CA颁发的事件型证书和长期证书为例,事件型证书有效期一般为10分钟,而长期证书有效期通常在1-2年,此有效期指的是数字证书本身的有效期,即在这个有效期内可以使用此数字证书进行签名,过了有效期则不可使用,但在有效期内使用的数字证书,其所代表的真实身份信息一直有效,不因数字证书本身失效而受影响。


九、表达签署人签署意愿


传统纸质文件签署,盖章动作以及手写签名,由于有公安备案的印章实体或者是签名人的笔迹,所以理论上拿到真实印章的人盖章的动作或者手写签名本身就已经可以表明是签署人自己在操作了(然而实际上,传统纸质文件上的传统印章和笔迹鉴定,落实下来成本非常高,花费时间长)。


而在电子签系统里,用户持有“私人的密钥”和使用“私人的密钥”盖章或者签名都可以认为是授权完成的,在使用时,如何通过一个操作行为确定是持有人本人的操作,来表达他的签署意愿呢?


这个与大家熟悉的线上支付的操作基本一样,可以通过短信验证码、自己设置的签署密码,或者是自己持有的动态口令卡,UKey的PIN码等等方式来表达,即只要是能确定是账号所有人本人在操作即可。


十、CA认证机构提供时间戳服务


用户在电子签系统里进行电子签时,为了能够明确签署时间,并且此时间可以被信任,通常电子签系统会同时获取一个时间戳的证书,其中包含国家授时中心的时间以及CA的签名(表明CA对此时间的认可),此时间戳证书信息也会合并到待签文件中。


若电子签服务无法连接外网,则电子签系统无法实时获取时间戳的证书,虽然可以获取本地服务器时间,但是此时间作为用户实际签署时间的公信力会降低。


十一、基于PKI体系实现的数字签名是否法律意义上可靠的电子签名


通过以上的内容介绍,相信大家基本了解了基于PKI体系实现的数字签名是怎样的过程,现在我们再来回顾一下法律上关于可靠的电子签名的解释。


对于可靠的电子签名有效要件如下:


电子签名同时符合下列条件的,视为可靠的电子签名:


(一)  电子签名制作数据用于电子签名时,属于电子签名人专有;

在我们实现的电子签系统里,用于签名的“私人的密钥”即电子签名制作数据,因仅用户授权可用,可认为是属于电子签名人专有。


(二)  签署时电子签名制作数据仅由电子签名人控制;


在签署时,通过用户签署意愿的确认,可认为电子签名制作书,也即用于签名的“私人的密钥”仅由电子签名人控制。


(三)  签署后对电子签名的任何改动能够被发现;


在签署的内容里是包含有签名人的数字证书的,通过证书中的公钥若能解密签名数据,则可说明电子签名本身未发生改动,反之,则说明电子签名有发生改动。


(四)  签署后对数据电文内容和形式的任何改动能够被发现。


针对文件内容重新计算的Hash值若与解密签名数据后得到的Hash值一致,则可说明数据电文内容和形式未发生改动,反之,则说明数据电文内容和形式有发生改动。


当事人也可以选择使用符合其约定的可靠条件的电子签名。


综上来看,由于“私人的秘钥”使得数字签名具备了唯一性和独占性、hash值提供了数字签名的完整性和不可抵赖性,故基于PKI体系实现的数字签名已满足法律意义上可靠的电子签名的关键要求,属于受法律认可和保护的电子签名技术。


 (本文技术部分内容特别感谢契约锁电子签约平台提供的相关技术参考信息)        

                               

          


往期推荐


新冠疫情之下劳动合同解除/终止/中止/变更的那些事

信用卡签名消费的二三事

民事诉讼中的电子证据公证实务



长按下图识别二维码关注我们

© 上海邦信阳中建中汇律师事务所

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

点击“阅读原文”,登录邦信阳中建中汇官网了解更多资讯。