基于区块链的企业员工出入管理系统研究*

2021-02-03 08:40许艳艳周华平姚尚军丁金虎路明
科学与信息化 2021年3期
关键词:哈希默克尔区块

许艳艳 周华平 姚尚军 丁金虎 路明

1. 安徽理工大学 计算机科学与工程学院 安徽 淮南 232000;2. 淮北矿业物业管理服务有限公司 安徽 淮北 235000

引言

智慧政务是大数据时代新的服务管理方式[1],变革传统的服务管理方式,企业提高行政事务管理和服务效率的同时并朝着智慧化方向迈进。在国内很多单位部门都在使用专门的智慧政务系统[2]。企业应用现代信息技术,整合信息服务资源,提高自身服务和管理的质量,综合考虑公司物业的后勤、出入管理、车辆、组织、机电、员工、安全、财务、经营和服务评价等的融入服务和管理等要素,并且以管理和服务为导向,创建安全、高效、舒适、的智慧政务企业。出入管理在企业管理中有着举足轻重的地位。出入管理记录系统的发展主要经历了人工出入记录方式、智能卡技术方式和生物识别方式。人工出入记录方式是最原始的方法,是中心化管理模式。相继出现的射频识别卡和智能卡出入管理系统[3]以及生物识别技术中的指纹识别[4]和人脸识别[5],提高目标识别效率及准确率,数据库管理权限与管理员高度绑定[6],系统始终无法避免数据易被篡改删除的问题。巨链数据库采用区块链技术和分布数据库结合在一起的去中央数据库,数据安全度得到了很大提高,数据储存容量问题得到了相应解决[7]。高效地检索区块链方法使用数据同步技术未从本质上解决查询问题[8]。ChainSQL将数据库日志存储于区块链,这对以交易为单位追溯数据不利[9]。

1 区块链相关知识

区块链技术的应用在金融,物流,公益和版权方面得到了进一步的扩展[10]。从区块链概念来看,它属于数据链。从区块链的性质看,它是一种建立于网络上的分布数据库系统,同时又是一种去中心化分布共享账本技术。一个去中心化的系统中,各个节点彼此相连,没有一个中心节点同时连接所有其余的节点。区块链另一特性是防篡改。区块链数据结构是一个极难修改、仅可添加新区块的数据存储结构。

哈希函数[11]是一种单向映射函数,无论输入数据的大小及类型如何,它都能将输入数据转换成固定长度的输出,不能反方向执行哈希算法来找到满足限制条件的随机数。哈希函数与链式结构的结合将数据微小的变化迅速放大,这极大地保证了数据的安全性。默克尔树[12]是二叉树的形式。由图1可知Merkle树的简单结构。在默克尔树中通过哈希引用把所有数据连接在一起,只要发现哈希引用不完整就表明树状结构中的数据被修改了。相反,就可以说明数据在产生后未被修改过。

图1 Merkle树简单示例

2 区块链出入管理系统的数据模型

目标识别通过管理员分配公私密钥对实现,计算机生成出入记录数据,利用用户私钥对数据数字签名并发送至区块链中,节点广播并存储数据。用户利用自身公钥查询出入记录,管理员通过用户与公钥的映射关系查询记录。

2.1 已有的区块链系统模型

区块链中的头部通过引用上个块头的哈希值把各个区块挨次相连。区块链数据结构由两个主要的组成部分,一个有序的区块头组成的链和默克尔树形式保存的交易数据。区块头是一个区块中非常重要的组成部分。难度目标值和Nonce值是非常重要的两个区块头中的字段。区块头还包括提供时间基准参考的时间戳等。区块体中存储着区块中所有记录。区块记录结构示意图如图2所示。

图2 记录结构示意图

记录包括版本号、记录输入、记录输出和记录时间。已有的模型已经保证了数据是不可修改的,但由于其记录组成的固定,极其缺乏普遍性。因此,只能够处理组成构造不变的数据,很难用于处理普遍性的数据。

2.2 面向数据库的系统模型

为了能够处理比较一般的数据,本文把记录结构进行扩展。记录分为记录头和数据两个组成部分。记录头部分每笔记录都是默克尔树的一部分,若改变记录的某些特征,就会相应的改变其在默克尔树上的哈希引用,即指向原始记录数据的哈希引用会被破坏,整个区块链数据结构也就无效了。当在键入数据时,首先查询记录存在与否。若存在,比对当前记录的签名和前一交易的公钥,比对成功记录才是有效的。若该关键字首次出现,要将父记录哈希值置为零。当读取数据时,首先根据关键字来检索,然后返回最近的查询结果。索引是经过哈希运算保存到默克尔树中的,这保证了索引的不可修改特性。面向数据库记录结构示意图如图3。

图3 面向数据库的记录结构示意图

此记录结构在原有结构的基础之上进行了扩展,在区块的默克尔树中添加了关于记录关键值的索引信息,能够根据关键值查询到相应记录信息。索引经哈希运算保存至默克尔树中,保证索引不可篡改。区块链交易时只在意所有哈希引用的正确性和一致性。

3 基于区块链出入记录系统查询功能实现

3.1 默克尔SBT索引构建

将数据和节点大小平衡树(SBT)进行哈希运算以实现数据和索引不可修改。结合SBT和默克尔树,此处应用SBT有以下原因:首先,SBT能够保证查询复杂度较低。SBT与默克尔树类似,因为它们向上增长。SBT能在很短的时间复杂度中完成搜索操作,是目前最快的高级二叉搜索树,相比于其他的自平衡二叉查找树更容易实现。

3.2 基于索引的数据操作算法

哈希快速查找的想法是,将每段数据最前面固定长度的一部分计算Hash值后存储起来,一般是存到一个集合中,然后再将这些数据存储到另外一个集合中,从数据集合构成到Hash值集合的映射。针对我们创建的索引结构,提出一种有关关键字的搜索方法,根据默克尔树的特性,提供搜索结果的验证路径。

在键入关键值时,先要在内存区块中搜索,若搜索不成功,就寻找 k-v数据库中上个区块的默克尔索引,直到检索到该记录为止。若在某个特定区块内搜索,先从默克尔树根开始搜索,若目标值大于等于根节点,则去左孩子节点对应的目录中检索;否则,去右孩子节点对应的目录中搜索。搜索最终锁定在叶子节点,如果叶子节点的值等于目标值则搜索成功;否则,证明记录不在此区块中。

首先对变量进行初始化;然后通过循环向下搜索到叶节点,通过关键值与目标值的比较更新节点和验证路径。输出信息为节点的哈希值和检验路径结果。

4 实验

测试一:用户在不同时间进行签到,生成出入记录,记录发送至各个节点,广播验证。最后随机选取用户查询自身的出入数据,比对数据是否正常,验证出入结果的正确性。

预测结果:用户出入记录查询功能正常且出入结果正确无误。

实验结果:测试结果与预期结果相同,表明用户出入记录查询功能正常。

图4 出入记录查询测试结果

测试二:用户自身通过计算机生成出入数据,受自身主观因素的影响,用户可伪造虚假出入时间。正常的出入数据生成后,用户修改出入数据时间信息,信息广播至其他节点。

预测结果:当前记录生成时间验证不通过。

实验结果:测试结果与预期结果相同。出入数据时间与节点时间差值较大,当前记录生成时间验证不通过。因此,用户不能伪造出入时间。

图5 出入记录篡改测试结果

5 结束语

设计基于区块链的一套出入管理记录系统。本文首先提出了基于区块链的数据库模式,该模式拓展原有交易结构,将数据库技术应用于区块链,在区块链上实现数据库基本操作;其次,提出SBT树型索引,用于监管块内数据,提高数据的检索速度,从而提高系统性能。确保出入数据的不可篡改和高效查询。系统从总体上解决了政务管理中传统和现行出入记录系统之间存有高度的管理人员权限,记录中的数据容易被篡改、查询麻烦等问题。

猜你喜欢
哈希默克尔区块
基于特征选择的局部敏感哈希位选择算法
哈希值处理 功能全面更易用
文件哈希值处理一条龙
《红楼梦》的数字化述评——兼及区块链的启示
区块链助跑财资管理
一场区块链引发的全民狂欢
区块链助力企业创新
特蕾莎·梅——英国版“默克尔”
巧用哈希数值传递文件
德国总理默克尔参加节日聚会 开怀畅饮