李勇
【摘 要】为解决电子文档流转安全性问题,实现文件的电子化签署、存储、查阅、查验功能,签署过程中利用原笔迹手写技术、数字签名技术、区块链技术实现文件不可篡改性、强抵赖性及追溯性。为此,文章提出一种基于区块链技术的电网内部文件流转电子签名系统,利用其去中心化的特点与电子签名技术形成互补,用区块链技术实时固化签署过程中的电子凭证,真正实现电子签名的可溯源、防抵赖和防篡改,降低信息泄露风险,提高电子签名的适用性,同时依托区块链安全特性实现对电子文档流转的安全管理。
【关键词】区块链技术;电子签名系统;设计;实现
【中图分类号】TP317.1 【文献标识码】A 【文章编号】1674-0688(2021)04-0035-04
0 引言
随着全球信息技术的高速发展,许多部门的办公模式正在发生转变,由原来的纸质文档模式转为无纸化办公模式,即采用电子文档的办公模式。电子文档是各行业信息的载体,对该行业的发展至关重要,如何确保电子文档的安全性、真实性和有效性,是IT界研究的热点问题。本文对一些重要行业电子文档安全性研究的必要性进行分析,这些重要部门包括国企部门、金融行业、税务部门、教育部门及一些企事业单位等。这些文档的签署与个人的责任利益息息相关,传统单纯的数字证书签名是中心化部署,并无法完全取得大部分人的信任。这导致人们在工作和生活中宁愿先通过文档便签,再打印手签之后扫描文件进行管理存档,因为存在打印纸质文档和手写签名再扫描上传电脑的环节,所以导致工作成本较高,而且工作效率较低,占用了人们大量宝贵的工作时间。文档信息安全性主要包括真实性和可靠性两个方面,文档安全性是数据化办公的重要保障。为了解决电子文档安全性问题,本文在电子文档中融入区块链技术,区块链技术具有防止篡改性和去中心化的特点,对确保电子文档的安全性和可靠性起到积极的作用。如何将区块链技术与电子文档深度融合,以及所采用的技术方法,是本文研究的内容。
1 区块链的相关概念
1.1 区块
区块是区块链技术的存储单元,区块链是由一系列的区块作为结点的链式结构,系统的数据信息主要存储在区块链的每个区块中,区块结构一般由两个部分组成,即区块头和区块体,每个区块结点的识别信息、版本信息及哈希值一般保存在区块头当中,哈希值主要是记录前面的区块结点地址信息,通过这一信息可以快速找到前面的结点,因此各个结点的地址信息都是通过哈希值形式进行存储[3]。区块体主要是存储各种重要的数据信息,区块体内包含有许多类型的数据单元,即不同类型的数据分别存放于不同的单元中。在区块链技术中,如果某个结点的数据信息要更改,则必须经所有的结点一致认可方可修改,否则将无法进行信息更改。
1.2 共识机制
共识机制是区块链技术的内部协议机制,在区块链的内部结点中,如果要进行某项操作,所有的结点都必须遵循这个协议,该协议规定了各种事务的合法性与非法性。共识机制主要是通过共识算法实现这一内部协议,目前共识的算法种类繁多、日新月异,最常用的算法主要包括工作量证明算法(POW)、拜占庭容错算法(PBFT)、股权证明算法(POS)和改进的股权证明算法(DPOS)等。其中,工作量证明算法主要把结点的哈希值通过某一加密及解密的运算方式的共识机制;拜占庭容错算法主要用于增加区块链的新结点的共识[4];股权证明算法最初运用于比特币的技术中,是一种较早的共识机制;改进的股权证明算法是在原有的股权证明算法的基础上进行改进而成的共识算法,主要通过投票方式使大部节点通过后达成共识的一种方式,该方式可提高系统的效率。
1.3 智能合约
智能合约是基于区块链技术交易的一种合约方式,智能合约主要通过合约程序实现,该程序主要把双方的协商内容进行数字化处理,写入系统中,等得双方的确认,如果交易双方协商成功,则系统会自动把合约内容按照合约算法在系统内部发布,并且合约将自动生效,写入后将无法对合约内容进行修改,即提高系统的安全性[5]。在这种方式下,交易双方无需会面即可完成这笔交易,使交易过程快速有效,而且交易不受外来的各种干扰。
1.4 分布式存储
区块链数据库是一种分布式的数据库,各个数据信息并不是存储在某一固定的存储介质和某一固定的设备当中,而是在整个区块链网络的设备当中。数据存储主要通过分布式算法进行,当要获取某项数据信息时,也要通过分布式算法进行数据提取,這样可以防止数据丢失和数据被篡改的问题发生,提高数据的安全性和有效性。
2 系统设计分析
2.1 系统需求分析
本系统主要实现以下功能。
(1)实现办公文件电子化签署功能,通过“上传电子文档—选择签署人—发起签署—逐人签署—签署完成”进行文档的电子化签署,签署过程中利用原笔迹手写结合数字签名的方式实现各部门日常签署业务的无纸化办理,最后形成文件的不可篡改性及强抵赖性。实现文件过程信息区块链功能,利用区块链技术,建立签署过程信息区块链(4节点)私有链,将文件从发起到签署完成,整个过程的所有信息(文件哈希、时间、用户、操作、活动)经过加密算法处理后存储在分布式数据库中。
(2)对于新增加的数据文档,系统会增加一个新的区块,其中把区块的哈希值、操作过程等相关信息自动存在块体中,区块头包含当前区块的多项元信息:生成时间、实际数据(即区块体)的哈希值、上一个区块的哈希值等信息。每一个区块都保存了上一个区块的哈希值,使得每个区块都能找到其前一个区块,将这些区块连接起来形成一个完整的文件操作链式结构,环环相扣,能够通过最末块进行历史信息的回溯。此链式结构具有准确性、唯一性且不可篡改,为文件真伪验证及追溯提供有效的数据保证。
(3)实现办公文件的数字形式存储功能,已签署的文件通过数字化方式进行存储,能够通过关键字、分类、全文检索等方式便捷查询及查看。
(4)实现文件版本更替功能,系统默认展示最新版文件,如遇变更(如作业指导书等),可直接在文件上发起新的版本签署,签署完成后,系统自动记录版本信息,提供版本对比查看功能。
(5)实现文件查验功能,对所上传文件进行区块链真伪核验及数字签名有效性核验,通过真伪核验可查询该电子文件是否来自电签系统,如为真,则可追溯整个签署过程信息;通过数字签名有效性核验可查询该电子文件的签署人、签署时间、签名应用后该文件是否有修改等信息。
(6)实现移动应用功能,利用移动App进行签署文件的发起、手写签署、文档的查询检索及文档的查看。
2.2 系统主要关键流程
根据系统功能需要分析,主要实现文件的电子化签署、存储、查阅、查验功能,签署过程中利用原笔迹手写技术、数字签名技术、区块链技术实现文件的不可篡改性、强抵赖性及追溯性;实现文件数字形式存储,存储过程中利用全文索引、分类存储技术实现电子文件的便捷搜索、查阅。本文绘制出了系统的主要关键流程,电子文档处理流程如图1所示,电子文档区块链信息记录流程如图2所示。
2.3 系统架构设计
系统使用J2EE快速开发框架进行开发,该框架为多层架构实现,按照展示层、逻辑层、持久层、存储层进行多层结构体系设计,采取面向对象技术进行应用组件开发、基于面向服务设计思想进行服务分层。架构的每一层对上层公开API,但具体的实现细节不对外透明。在实际部署时,可根据需求扩展某个分层,当某一层的实现发生变化,在API不变的情况下,不影响其他层的实现,系统架构如图3所示。
(1)存储层。采用传统的关系型数据库Mysql与非关系型数据库MangoDB结合的方式进行数据的存储。利用区块链技术,建立签署过程信息区块链(4节点)私有链,将文件从发起到签署完成,整个过程的所有信息(文件哈希、时间、用户、操作、活动)存入区块链中。
(2)服务层。在J2EE体系结构上进行开发,集成文件处理、数字签名、区块链查询、文件签署流程。通过数据应用接口、业务服务接口为上层应用提供支持。
(3)接入层。移动应用通过移动应用平台,利用运营商4G网络接入系统。
(4)展现层。通过VUE基础UI组件,提供统一的、高兼容性的可视化界面,利用MVC模式,通过JSP将服务端输出的数据模型绑定到UI组件中,实现界面与业务逻辑隔离。
2.4 系统功能模块设计
根据整个电子签名系统的需求分析与总体架构的设想,本文将系统的功能模块主要分成文档签署中心模块、区块链模块、文档查验模块、文档库模块四大功能及移动App端。主要功能模块如图4所示。
2.4.1 签署中心功能模块
(1)发起签署。通过模板或拖动上传电子文档(WORD)的方式发起签署,发起签署时可以添加签署人、签署方式(无序签署、有序签署)、设定签署位置、填写签署备注、设置归档目录等。发起签署后系统将WORD文件转为PDF,在转换的同时读取WORD文件内容,通过智能处理生成全文索引信息、关键字信息、摘要总结信息,将该信息作为文档数字化信息进行存储。
(2)我的文档。查看所有与我相关的文件,分类包括待我签署、待他人签署、已完成、已取消、草稿、我发起。可直接在线预览相应的PDF文件,并查看签署状态、进度及签署过程信息追溯。
(3)文档签署。直接在系统上进行文档签署,支持手写签署和签名加盖的方式,在签署过程中灵活使用拖动、调整大小的方式进行签名调整,签署完成后系统验证用户合法性后进行数字签名加盖,数字签名加盖后文档不可修改。
2.4.2 文件签署过程信息区块链功能模块
利用区块链技术,建立签署过程信息区块链(4节点)私有链,将文件从发起到签署完成,整个过程的所有信息(文件哈希、时间、用户、操作、活动)存入区块链中。文件每操作一次即拥有一个新的哈希值,利用新哈希值形成一个区块,每个区块都包含区块头和区块体,区块体用于记录文件操作过程(文件哈希、时间、用户、操作、活动信息),区块头包含当前区块的多项元信息:生成时间、实际数据(即区块体)的哈希值、上一个区块的哈希值等信息。每一个区块都保存了上一个区块的哈希值,使得每个区块都能找到其前一个区块,将这些区块连接起来形成一个完整的文件操作链式结构,环环相扣,能够通过最末块进行历史信息的回溯。此链式结构具有准确性、唯一性且不可篡改,为文件真伪验证及追溯提供有效的数據保证。
2.4.3 文档查验
(1)数字签名查验。对所上传文件进行数字签名有效性核验,可查询该电子文件的签署人、签署时间、签名应用后该文件是否有修改等信息。
(2)区块链真伪核验。对所上传文件进行区块链真伪核验,利用文件哈希值去文件区块链中进行签署过程信息的追溯,如为真,则可追溯整个签署过程信息。
2.4.4 文档库
(1)文档目录分类查看。通过预先设定的分类及目录对已签署文件进行分类浏览。
(2)关键字全文检索。系统将文件全文索引信息、关键字信息、摘要总结进行数字化存储后,通过搜索引擎技术提供关键字检索,能根据文档权重、关键字词等,智能判断、搜索文件,提高文件查找的准确性及便捷性。
(3)已签署文件版本更替。系统默认展示最新版文件,如遇变更(如作业指导书等),可直接在文件上发起新的版本签署,签署完成后,系统自动记录版本信息,并将新版替换为旧版,提供版本对比查看功能。
2.4.5 移动App
(1)发起签署。移动App通过模板或上传电子文档的方式发起签署,发起签署时可以添加签署人、签署方式(无序签署、有序签署)、填写签署备注、设置归档目录等。发起签署后系统将WORD文件转为PDF文件,在转换的同时读取WORD文件内容,通过智能处理生成全文索引信息、关键字信息、摘要总结信息,将该信息作为文档数字化信息进行存储。
(2)文档签署。利用移动App进行文档签署,支持手写签署和签名加盖的方式,在签署过程中灵活使用拖动、调整大小的方式进行签名调整,签署完成后,系统验证用户合法性后进行数字签名加盖,数字签名加盖后文档不可修改。
(3)我的文档。利用移动App查看所有与我相关的文件,分类包括待我签署、待他人签署、已完成、已取消、草稿、我发起。可直接在线预览相应的PDF文件,并查看签署状态、进度及签署过程信息追溯。
(4)文档中心。利用移动App进行文档目录分类查看、文档关键字全文检索。
3 系统的实现
3.1 区块链网络构建
区块链在分布式环境下运行,主要将客户端分别安装到多台主机中,分别以每台电脑作为区块链的节点。在电脑中分别部署节点,主要工作就是设置每台电脑的创世纪块,先创建第一个,然后按照顺序把其他电脑都添加新的区块,这样就可以将各个节点连接在一个模拟的区块链网络中,各台电脑终端设置相同的创世纪块,以便共同维护账本。各节点部署后运行Geth客户端,使其相互链接,同时把各个节点添加到一个列表中,以便各节点进行数据传输,这样就构成一个简易的区块链网络。
3.2 系统的功能實现
系统采用集中部署的B/S三层结构开发。应用服务器中间件采用Tomcat提供Web及App访问服务,数据库采用Mysql与Mongodb进行结合方式,Mongodb服务器单独部署提供对大数据的存储及读取服务,建立签署过程信息区块链(4节点)私有链需要4台服务器支持,系统网络部署如图5所示。所选服务器资源见表1。
4 结论
随着区块链技术的不断发展,该技术在各行业中得到了广泛的运用,利用其优良的防篡改性属性,可以解决电子文档签名的信任问题。为此,本文提出了基于区块链技术的电子签名系统的设计方案,保证电子文档的安全,以便实现电子文档全流程高效便捷管理、使得电子文档得以全面利用和共享。当然,除了区块链技术应用,本系统还考虑到系统移动应用场景的便捷性,采用App+Web部署的方式,使得人们能够随时随地进行文档的签署,这极大地方便了本系统的推广与应用,使得用户更加容易接受并使用它。区块链技术在电子文档管理中的应用目前还处于初期探索,未来还需要加快加深实践性检验,将理论与实践深入结合。
参 考 文 献
[1]李奕杭.基于区块链的数字签名系统的设计与实现[D].北京:北京交通大学,2019.
[2]伍前红,韩天煦,张文涛,等.基于区块链的去中心化数字签名公平交换方法及系统[P].中国专利:2017113
757263,2017-12-19.
[3]沈智镔,张猛,程思进.基于区块链的电子签名和印章应用体系设计[J].水利信息化,2020(2):29-33,47.
[4]周硙.区块链电子认证系统的设计与实现[J].软件工程,2020,23(8):32-34,19.
[5]韦智勇,周立广.基于区块链的电子病历存证系统设计与实现[J].软件工程,2020,23(9):56-58.