白话电子签章原理及风险

  

  因为业务需要近来在对接一个线上的电子签章平台, 签完的效果就是在PDF上盖一个红色的章。内部过程沟通中发现,对这个红色章背后的证明逻辑,技术原理,能够了解的比较清楚的人还是很少的。甚至连锅叔自己,对其中的一些细节也感觉有些模糊不清,经常一时想不起,不能对答如流-_-||。

  签名证书类的技术博文其实很多, 但有个问题,很多只提技术原理,不提证明逻辑,证明逻辑需要自己去领悟。  于是在这里再回忆梳理下,会着重从证明逻辑来说,补充下其他博主日常省略的部分-_-|| ,做个分享,也顺便备忘。

 

  一、签字画押的逻辑

   日常生活中大家应该都有签字,按手印的经验,对签字按手印的意义也十分清楚。就是对签字内容的认可,接受。不接受的合同肯定不能随便签,手印也不能随便按。例如“你欠我几十个W”这种,肯定是不会随便签的。同样我写一个“你欠我几十个W”这样的欠条如果没有你的签字,法官大人是不会认可的,如果我帮你签一个字,笔迹鉴定多半会被识破,我更没有你的指纹。这其中其实就隐含了一个证明逻辑问题。

  因为:

  1. 别人的签字,指纹与你的不可能相同

    2. 签字,指纹不可能在纸张上被复制,粘贴

  3. 这张纸上有你的签字,手印

 

  所以:

  你本人肯定是接触过这张纸,看过了纸上的内容,签字表示了对内容的认可。

 

  抽象概括下:

   1. 笔迹与指纹是唯一的,并且与签字画押的人是天然绑定的,不可分离的,即可以代表本人

   2. 按的指印,写的签名,与纸张上的其他内容,是绑定的(因为同一张纸上,无法拼接,复制)。 即 签名与内容是绑定的

   因此,可能证明笔记指纹所属人,对纸上上内容的认可。

   

  二、一些安全基础

 

  1.非对称加密

  一种基于数学原理(不需要怀疑)的算法,生成一对秘钥A,a。特性:

  •   A与a 不相同
  •       由A加密的内容,能且只能被a成功解密,反之亦然。  
  •     由A不能得出a,反之亦然。

  

  2.数字摘要

  一种基于数学原理(不需要怀疑)的算法,对任意长度的内容 A 进行计算后,得出一个固定长度的内容B 。特性:

  •   当A内容发生变化后。用该算法重新计算得出的b,与B一定不同。
  •   由B 不能计算出A

 

   上面两个东西可以理解为客观规律,下面两个是对上面客官规律的利用,用于解决实际问题。

  

      3.数字签名

  作用:与纸质签名对应, 期望实现纸张上签字画押的效果。 即证明生物上的一个人,对电子文档内容的认可。

 

    实现逻辑:

  1. 小明自己偷偷的生成一对儿秘钥AB,然就他对其他人说 “我生成了一对非对称秘钥AB,B除了我本人谁都不会知道,打死我,我也不会说”,即B这个秘钥只有小明知道,对于不认识小明的人来说,可以认为掌握秘钥B的人就是小明。

  2. 对电子文档的内容执行 数字摘要算法,得到摘要 H, 这个H 与文档内容即唯一绑定。

  3. 小明使用自己藏好的秘钥B,对上面的摘要结果 H,进行加密,得到了一个秘钥B加密摘要H后的加密摘要  HB. 并把HB附在了文档后面. 代表小明的秘钥B,与代表文档内容的H被关联到了一起。因为只有小明可以用B对H进行加密。所以HB的产生,代表了小明对文档内容认可。

  4. 其他人拿到这个据说是小明“签过字”的文档后,拿出前面小明公开给大家的B的对应秘钥A,用公钥A去解密负载文档后的加密摘要HB, 根据非对称加密的特性。如果能成功解密,则证明该密文一定是A的配对秘钥B加密的,而B只有小明知道,所以这个签名肯定是小明本人签的。

  5.小明签字的内容即H对应的内容,其他人会再对文档做一次摘要计算,得到一个当前文档摘要h, 如果解密后的摘要H 与 当前文档内容的摘要h一致则证明,小明用私钥B加密(签名)的内容就是这份文档。 如果h 与 H 不同,根据 数字摘要的特性,证明,文档已经被修改过了。小明签的文件内容不是现在的这一个。

 

  4.数字证书 

  作用: 笔迹,指纹与其所属的人的关系是不需要证明的,天然一体,无法分离,不可能被盗被抢。但上面说的数字签名的逻辑中,对代表小明的私钥B 与小明并不是无法分割的。在实际生活中,小明签完了,说这个秘钥B,不是我所有的,跟我没关系,这个秘钥对AB是小芳生成持有的, 你们有问题去找小芳去。或者,对于一些不认识小明的人,他们也无法识别,面前的这个小明是不是就是传说中的小明。所以需要有一种机制来固定“秘钥与持有人的关系”。数字证书与公司公章体系对应,拥有公司公章的,就代表公司行为。同样,持有证书中公钥所对应私钥的人,就是向我申请证书的小明——注意与现实中证书,证件含义不同,是持有私钥的,而不是拥有证书的。电子证书是数字形式,是可以任意复制分发的,证书中不含私钥。

  

  实现逻辑:

  1: 小明为了广而告之“上面拥有B秘钥的就是小明我本人”,这件事,小明把它的公钥A 和 他的身份证 和钱,户口本提交给了一个全球说了算很有威望的组织。这个组织检查了下材料,确认小明确实是 小明,而且验证了小明确实掌握所提交的公钥A对应的私钥B后,于是给他了一份证明。 证明上说,兹证明, 小明 持有 公钥A 对应的私钥B——有私钥B的就是传说中的小明, 他的身份证户口本我都检查过了。

  2:在小明申请证书前,这个全球很有威望的组织,自己也生成一对秘钥对,X/Y. 其中的Y 打死也不跟其他人说,其中的公钥X,通过各种非常可靠的渠道,通知到各国各省各辖区派出所。已经让世界上所有人相信,拥有公钥X对应的私钥Y的人,就是这个全球权威组织。

  3:权威组织在给小明生成的证书上,也有他的私钥X结合证书内容摘要H,生成了HX的数字签名。

  4:人民群众看到这个证书时,可以像验证小明签名一样验证权威机构的签名。如果验证没问题,那证明,小明拥有A公钥对应的B私钥这件事情,是有一个非常可信的人给他背书的,不需要怀疑——即固定了小明与私钥B的关联。

  * 证书的验证实际情况会涉及多层CA,即证书链。会附有多个证书,依次证明,最顶层的证书是自签名。自己签发给自己。其公钥是通过可靠途径通知给所有人的。证书链的中间证书需要秘钥用途包含 Certificate Signing(证书签发)——权威机构授权的可以签发证书的机构的数字证书。需要验证证书的场景,如浏览器,阅读器,会将顶层的根证书预先放置于程序内。用上一级证书的公钥,验证下一级证书的证书签名。

 

  三、PDF电子签章原理(云签)

  

  pdf 的电子签章,显然那个红色的图形章,只是一个形式,是不具有任何效力的,因为谁都可以做一个图形加上去。背后显然也是依赖于数字签名和证书技术的。但目前的电子签章平台,已经封装的非常高级了。 使用过程中基本不涉及数字签名底层技术,可以对数字签名,数字证书完全无感,但方便的同时,也带来了隐患,后面会讨论。

  PDF云签的流程原理:

  1. 百度电子签章,选个电子签章平台进去注册账号,企业实名认证。

  —— 平台用你提供的信息,帮你自动去CA 申请了对应的数字证书,私钥保存在了签章平台。

 

  2. 发起一个签署流程,提供一个待签署 pdf文件 以及 涉及到的签署方的联系人。

  —— 上传的pdf 文件会通过短信等方式,引导需要签文件的各方到平台链接,进行签署操作。相关的签署方,都要有相应的数字证书(么有的,在流程中引导认证)。平台使用各签署方私钥对文件内容摘要进行签名。同时将数字证书和加密摘要附在PDF文件的签名区域中。pdf 文件格式是支持数字签名的, 可以保证符合规范的pdf 阅读器,都能正常的显示,校验签署信息。同时,文档上也会加上一个视觉形式上的图章图片。

 

  3. 取回签署文件,pdf浏览器打开,验证签名。

  —— pdf 文件阅读器打开签名文档后对签名及证书进行验证。通过证书证明,签署方的真实身份及确实持有对应公钥。用签署方公钥验证,签署方私钥正确及摘要未修改。

   

  四、电子签章效力风险

  从上面的PDF 云签流程中可以看出,整个流程中基本没有体现数字签名的摘要及加密签署过程,都是平台封装完成的。锅叔认为对应的也引入了风险。

  1. 数字证书并非由本人直接申请,如果在用户协议中没有很好的约定及取证,在证明用户与证书关联性方面可能存在瑕疵,用户可以否认从未申请过数字证书。

  2. 私钥由签章平台生成并保管,理论上可以代表用户随意签署任何文件。私钥不是仅由用户掌握。

  《中华人民共和国电子签名法》    

第十三条电子签名同时符合下列条件的,视为可靠的电子签名:
(一)电子签名制作数据用于电子签名时,属于电子签名人专有;
(二)签署时电子签名制作数据仅由电子签名人控制;
(三)签署后对电子签名的任何改动能够被发现;
(四)签署后对数据电文内容和形式的任何改动能够被发现。

  

  写到这里,欢迎讨论,指正。 ;-)

 

posted @ 2022-08-02 16:51  锅叔  阅读(1843)  评论(2编辑  收藏  举报