用区块链与手写签字技术防止电子文书篡改

Posted 政通技术团队

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用区块链与手写签字技术防止电子文书篡改相关的知识,希望对你有一定的参考价值。

注:文中人名、印章、签名等信息均为示意。

1背景

在金融保险、企业管理等领域,越来越多地使用电子文书代替纸质文书来记录信息。在智慧执法系统中,通常也使用电子文书来记录案件信息、处罚信息和审批意见等。与纸质文书相比,电子文书具有填写简单、存储和传递方便等优点,但同时电子文书也存在容易被人修改且不易发现的问题。为解决这一问题,电子签名技术应运而生。
电子签名是指数据电文中以电子形式所含、所附用于识别签名人身份并表明签名人认可其中内容的数据。
电子签名的实现方式有手写签字板、电子签章、使用数字证书进行数字签名等。但这些实现方式通常具有以下弊端:
  • 需要使用专门的设备,如数字证书一般存储在电子令牌之类的硬件设备中,在执法文书审核过程中使用并不方便,而且存在被盗用的可能。

  • 一般需要对接第三方的服务,由于使用的第三方系统的加密数据一般只存储于第三方系统中,从理论和实际上也无法保证数据不被篡改

为了解决以上问题,我们研究了“手写签字+区块链”的技术方案:

  • 手写签字,模拟用户真实的签字笔迹,很好的区分使用人 ,防止代签 。并且无需“U盾”一类硬件支持,也无需输入密码,解决传统电子签名对接和使用麻烦等问题。
  • 区块链技术,很好地解决了文书被修改后不易发现的问题 ,同时去中心化的特点也解决了传统电子签章中心化存储的问题。
用区块链与手写签字技术防止电子文书篡改

2 总体设计

2.1 目标

  • 运用电子签名技术解决文书的审核确认问题, 签名即视为被审核;
  • 运用区块链技术防止文书内容篡改, 上链则不可篡改。

2.2 实现流程

当执法人员收到待审核文书时,首先会审核文书相关内容并签字确认,然后保存文书。

文书保存成功后,执法系统会将审核过的内容保存到区块链服务器中,即文书上链。

之后打开已审核过的文书时,就会去区块链服务器中查询该文书已审核过的内容是否被篡改,即文书鉴伪。如果需要再次审核,会重复之前的流程,将审核过的内容再次上链保存。
用区块链与手写签字技术防止电子文书篡改

3 手写电子签名技术

为了方便执法人员能够随时进行文书审核并签字,我们采用了在智慧执法APP中集成手写签字功能的方式来实现。

3.1 签名绘制

android中,我们使用自定义View来实现手写签字功能。自定义View有三种实现方式:
  • 组合控件:将一些系统控件组合起来形成一个新的控件。
  • 继承控件:通过继承已有的系统控件来创建新控件,保留继承的父控件的特性,并且可以引入新特性。
  • 自绘控件:通过继承View,并在onDraw方法中实现自定义的绘制逻辑。

手写签字View需要实时记录用户在屏幕上的触摸轨迹,并绘制到屏幕上。由于系统控件中没有提供类似功能的组件,我们无法通过组合控件或继承控件的方式实现,因此采用自绘View的方式实现。

实现自定义手写签名View的基本流程如下:

用区块链与手写签字技术防止电子文书篡改
最终实现效果如图所示:

用区块链与手写签字技术防止电子文书篡改

3.2 曲线优化
在记录触摸轨迹的坐标点时,实际上我们记录的是整个轨迹的部分采样点。如果只是将这些坐标点简单地用线段连接起来,会使最终绘制出来的笔迹显得不太自然,与实际手写签字的笔迹存在差异,如下图所示。 因此,我们引入贝塞尔曲线对我们的轨迹进行拟合,使绘制的笔迹更加平滑自然。
用区块链与手写签字技术防止电子文书篡改
贝塞尔曲线是应用于二维图形应用程序的数学曲线,一般的矢量图形软件通过它来精确画出曲线。贝塞尔曲线由起始点、终止点和控制点组成,通过改变控制点坐标可以改变曲线的形状。Android系统API中已经提供了贝塞尔曲线的相关功能,可以直接使用。引入之后的绘制效果如图所示。可以看到,绘制的曲线变得更加平滑自然。
用区块链与手写签字技术防止电子文书篡改

3.3 背景绘制

手写签字与文书并不在同一个界面,但有时我们需要在签字的同时查看文书的内容,因此我们增加了将文书作为签字页面背景的功能。

用区块链与手写签字技术防止电子文书篡改

3.4 横竖屏切换

有些情况下,竖屏状态下签字并不方便,因此我们还增加了横竖屏切换功能。

3.5 变身手写板

使用移动端填写文书并签名时,可以直接使用安卓平台的手写签名功能,如果在PC浏览器端需要签字该如何实现呢?这里我们复用了移动端的功能,巧妙地把手机变成了与PC端搭配使用的手写板。主要实现流程如下:
用区块链与手写签字技术防止电子文书篡改
首先点击签名控件时,浏览器端会向服务端发送签名请求,然后服务端会通过即时通讯系统向同一账户的智慧执法APP发送消息。
用区块链与手写签字技术防止电子文书篡改
此时该用户登录智慧执法APP,会收到一条手写签名的消息,用户点击消息就会进入手写签名页面。用户完成手写签名后,APP会将签名图片上传到服务端。
用区块链与手写签字技术防止电子文书篡改
之后服务端会通过Websocket向浏览器端发送刷新签名图片的消息,并携带签名图片的地址。最后,浏览器端刷新即可看到手机端上传的签名图片。
用区块链与手写签字技术防止电子文书篡改

4 区块链技术签伪

我们引入手写签字解决了文书审核的问题,那如何保证审核之后的文书不被篡改呢?这里就要用到区块链相关技术。

4.1 区块链结构特点

从本质上讲,区块链是一个特殊的分布式数据库。分布式数据库并非新发明,但是,区块链有一个革命性特点:区块链没有管理员,它是彻底无中心化的。
区块链由一个个区块组成。区块很像数据库的记录,每次写入数据,就是创建一个区块。每个区块包含两个部分:
  • 区块头:记录当前区块的特征值;
  • 区块体:实际数据。
区块头包含了当前区块的多项特征值:
  • 生成时间;
  • 实际数据(即区块体)的哈希;
  • 上一个区块的哈希;
  • ...
对于保存执法文书的区块链,其每个区块具有类似如下图所示的结构。
用区块链与手写签字技术防止电子文书篡改

4.2 文书内容上链

电子文书引入区块链主要有两个作用:上链和鉴伪。
上链即将已审核的文书内容生成新的区块并加入区块链中。具体实现流程如下图所示。当文书被签字审核之后,执法服务会将文书内容、当前区块信息等作为参数调用区块链服务,区块链服务会生成新的区块连接到上一区块,并返回最新区块的信息。执法服务会保存最新的区块信息。
用区块链与手写签字技术防止电子文书篡改
对于未审核过的文书,此时并没有上一区块的信息,会直接将已审核的文书内容等信息生成新的区块作为该文书区块链中的第一个节点。

4.3 鉴伪

鉴伪即判断已审核过的文书内容是否被篡改,实现过程如下图所示。每次读取已经审核过的文书时,将文书已审核内容、当前区块Hash等作为参数调用区块链服务。区块链服务会调用相应的Hash算法生成Hash码,并与区块链中最新的区块信息进行对比,判断文书是否被篡改,并返回相应的结果。
用区块链与手写签字技术防止电子文书篡改
此时在查看被审核过的文书时,就会显示文书的认证状态。
用区块链与手写签字技术防止电子文书篡改
用区块链与手写签字技术防止电子文书篡改

注:以上成果使用了蚂蚁区块链服务。

4.4 多级审批与鉴伪

当一个文书经过多级审批,每个人对不同的内容进行审核确认,就会生成如下图所示的一系列区块:

5 总结

我们提出的“手写签字+区块链”的技术方案,正好解决了电子文书审核和内容篡改的问题。当文书审核后,手写签字能够标识该文书被审核过,以及审核人身份,且审核人不易伪造。而区块链技术可以将审核后的文书上链,保证文书不被篡改。除执法系统外,该技术方案还可应用于其他使用电子文书的系统,如金融保险、企业管理系统等。



End



往期回顾









以上是关于用区块链与手写签字技术防止电子文书篡改的主要内容,如果未能解决你的问题,请参考以下文章

区块链与密码学原理之:Hash算法的分类和原理浅析

区块链与加密货币

区块链与物联网的强强联合将带来巨变

[技术发展-5]:《区块链与加快推动区块链技术和产业创新发展》

如何用最简单的方式解读区块链?

区块链如何防止篡改历史记录?