白话电子签章原理及风险

白话电子签章原理及风险

因为业务需要近来在对接一个线上的电子签章平台, 签完的效果就是在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 申请了对应的数字证书,私钥保存在了签章平台。

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

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

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

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

四、电子签章效力风险

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

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

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

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

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

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

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

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

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

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

Original: https://www.cnblogs.com/uncleguo/p/16542731.html
Author: 锅叔
Title: 白话电子签章原理及风险

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/607167/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 实验

    编写程序实现以下功能 编写程序,打印99乘法表 将一面额为10元倍数的整钱( 输入一行字符,统计其中单词的个数。各单词之间用空格分隔,空格数可以是多个。 输入输出示例 Input …

    Linux 2023年6月7日
    095
  • 配置管理docker对象和守护进程

    使用 Docker 的主要工作是创建和使用各类对象:镜像、容器、网络、卷等。 1、Docker对象的标记 标记(Label):是一种将元数据应用于Docker对象(镜像、容器、网络…

    Linux 2023年6月8日
    085
  • Docker基础知识

    Docker 是什么 Docker 经常被提起的特点: Docker 技术的基础: Docker 组件: Docker 安装 Docker 常见命令 容器相关操作 获取容器相关信息…

    Linux 2023年6月7日
    0108
  • LeetCode 543-二叉树的直径

    题目描述: 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。 示例: 给定二叉树 返回 3, 它的长度是路径 …

    Linux 2023年6月7日
    072
  • C语言实现九九乘法口诀表

    儿子六岁了,奶奶在家里给孩子教乘法口诀, 昨天又把大学一年级C语言课程上要求实现的九九乘法口诀表用C语言实现了一遍,代码如下: #include int main() { int …

    Linux 2023年6月13日
    090
  • 001.云桌面整体解决方案实施

    桌面云概述 桌面云介绍 本桌面云整体交付方案基于深信服aDesk桌面云实现。 深信服桌面云是采用云计算的思想,将用户的桌面操作系统以服务的形式通过网络进行交付,可以让用户在不同设备…

    Linux 2023年6月13日
    0116
  • pysimpleGui 之table使用

    (class) Table(values, headings=None, visible_column_map=None, col_widths=None, def_col_wid…

    Linux 2023年6月14日
    096
  • redis的另一个分支 keydb

    今天无意间发现了redis还有一个分支keydb 是多线程的,貌似在机器内核多的情况下效果比redis效果好 执行这些命令 在这之前先把redis关掉 sudo systemctl…

    Linux 2023年5月28日
    082
  • 关于在Python2中使用列表推导式会遇到的问题

    摘自《流畅的Python》第二部分第二章2.2 Python 2.x 中,在列表推导中 for 关键词之后的赋值操作可能会影响列表推导上下文中的同名变量。像下面这个 Python …

    Linux 2023年6月6日
    0107
  • Wireshark 使用教程

    Wireshark是非常流行的网络封包分析软件,可以截取各种网络数据包,并显示数据包详细信息。常用于开发测试过程各种问题定位。本文主要内容包括: 1、Wireshark软件下载和安…

    Linux 2023年6月8日
    087
  • Linux下TIME_WAIT连接优化内核参数tcp_tw_reuse与tcp_tw_recycle区别与联系浅析

    概述 最近学习网络相关知识点,很多文章提到针对TCP time wait(后续简称TW)状态连接进行优化的参数tcp_tw_reuse和tcp_tw_recycle,并且不少文章提…

    Linux 2023年6月6日
    0117
  • 我懂得了什么

    站在24岁的这个档口,没有学业又没有工作的时刻,前不着村后不着店。我觉得应该要写一些总结,虽然年仅24的我相比老人家总结不出更深刻的道理,但是现在是互联网的时代,获取知识的途径已经…

    Linux 2023年6月6日
    0104
  • zabbix钉钉报警

    1、要在linux中安装python3 yum install -y python3(如果直接安装不上参考别的文章) 这个安装好后默认有pip3(安装好模块否则发送不到) pip3…

    Linux 2023年6月6日
    095
  • Redis in Action 文章投票

    首先在 Linux 开启 Redis 服务: 如果显示: 说明 Redis 服务已经开启,端口号 6379 redis.php init_data.php 用于添加案例的数据 vo…

    Linux 2023年5月28日
    0113
  • 五分钟通俗理解自动驾驶

    大家好,我是良许。 这几年,自动驾驶这个概念非常火热,无论是百度还是谷歌,都做出了还不错的原型机,但是你真的知道什么是自动驾驶吗? 本文就花 5 分钟左右的时间,向大家科普一下什么…

    Linux 2023年6月14日
    0103
  • LRU原理和Redis实现——一个今日头条的面试题(转载)

    很久前参加过今日头条的面试,遇到一个题,目前半部分是如何实现 LRU,后半部分是 Redis 中如何实现 LRU。 我的第一反应是操作系统课程里学过,应该是内存不够的场景下,淘汰旧…

    Linux 2023年5月28日
    094
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球