基于区块链的交通客运身份管理系统设计与实现

2019-11-17 04:05万宇杰刘政森曹杰张大琳熊书明
电脑知识与技术 2019年26期
关键词:区块链管理系统

万宇杰 刘政森 曹杰 张大琳 熊书明

摘要:为克服传统中心化数据存储的局限性,设计了基于区块链技术的交通客运身份管理系统,分布式地存储和管理个人身份信息。通过采用全节点和轻量级轻节点设计,实现用户信息查询的同时降低了内存空间需求。利用私钥对所生成区块摘要进行加密,工作节点验证时通过其公钥进行解密。该系统解决了中心化存储易被攻击的问题,具有更好的安全性,存储的信息可信且可溯源。

关键词:区块链;交通客运;数据访问;管理系统

中图分类号:TP311        文献标识码:A

文章编号:1009-3044(2019)26-0096-03

开放科学(资源服务)标识码(OSID):

1 引言

典型客运系统对驾驶员信息存储大多采用中心化的B/S模式,该模式中系统的数据存储在中心化的服务器中,虽然能够轻量化客户端、方便系统维护,但随着大数据的发展,该模式已经不能满足数据存储安全和空间要求[1]。为解决服务器存储空间受限问题,文献[2]提出了一种轻量级基于身份的云存储管理方案,该方案引入基于身份的密码体制,用户私钥由第三方审计者TPA(Third-Party Auditor)产生,使得客户端能够避免大量耗时运算,但是该方案对服务器负荷较大,且易产生数据篡改、数据泄露等问题。针对多方参与者协作场景导致的无法完全信任数据库数据问题,文献[3]提出基于区块链的解决办法,区块链可在没有第三方中介机构的协调下,实现可信的数据共享和点对点的价值传输,避免了烦琐的人工对账和争议。文献[4]指出区块链是一种基于分布式存储的去中心化技术,具有链式永久存储带来的不可篡改性、基于密码学的安全性和分布存储具有的抗攻击性等特性,目前已有较多方案采用区块链作为存储系统底层技术。文献[5]设计了基于“用户信息链”和“交易链”双链架构的医药商业资源公有区块链,采用Merkle Tree结构对交易过程的数据进行记录和存储,利用双链的结构将用户信息和交易信息分开存储管理,在保证用户信息的隐私的同时不会影响交易数据的真实性、完整性以及不可篡改性,因此,采用区块链技术进行数据存储可以实现可信、可溯源的分布式去中心化管理。考虑到交通数据存储数据量大、数据可信等需求,本文提出一种基于区块链的交通客运身份存储系统,优化客运系统驾驶员身份信息和运营车辆信息的存储和管理,为执法人员和出行客户提供信息查询接口。第2节完成了系统各模块的设计;第3节对系统运行过程进行详细说明;第4节介绍了系统性能分析;第5节给出结论。

2 系统模块设计

该系统利用区块链的不可篡改性、去中心化等特性保证数据的安全性、完整性和高度可信性,采用联盟链的思想,并且结合轻量级轻节点的设计,同时针对该系统采用相应的P2P网络和共识机制,整体架构主要分为区块链部分和网络部分,如图1所示。

2.1 区块链部分

该区块链部分设计分为全节点模块和轻节点模块,该部分主要用于数据存储管理和查询。

1)全节点模块

该系统的全节点是区块链实现的主要模块,区块链是伴随比特币等虚拟货币提出的底层技术,该技术是由若干个数据块组成,按照产生的时间先后顺序,这些区块被有序地链接在一起[6],通过后一个区块指向前一个区块的哈希值形成链式数据结构,如图2所示。在运用区块链技术的应用中,能够在没有可信第三方和复杂加密技术的情况下提供给用户高度可信的查询结果[7]。

该模块主要实现信息输入,产生、验证并存储区块。在产生区块时,除了打包需要存储的驾驶员信息或营运车辆信息,还需要生成梅克尔树。梅克尔树是区块链的基本组成部分,它依赖于将这些数据“块”分裂成较小单位(bucket)的数据块,每一个bucket块仅包含几个数据“块”,然后取每个bucket单位数据块再次进行哈希,重复同样的过程,直至剩余的哈希总数变为1即根哈希(root hash),该算法可以很好地增强区块链的可拓展性。梅克尔树最为常见简单的形式是二进制梅克尔树(binary Mekle tree),其中一bucket单位的数据块总是包含了两个相邻的块或哈希,该系统将单个驾驶员信息作为一个块哈希化,再两两合并哈希化,直到生成梅克尔树根为止,如图3所示。

除了梅克尔树和存储信息之外,还需要将时间戳、前一个区块的哈希、区块高度以及版本号一并存入区块,区块生成完成后将该区块中的梅克尔树根BMR(Block Merkle Root)和区块的时间戳BTimestamp(Block Timestamp)生成明文Mi如公式(1)所示,利用自己的私鑰SKi进行加密生成签名Si,如公式(2)所示。

之后将区块和签名Si一同全网广播给其他节点进行验证,其他节点先用该节点的公钥PKi进行解密得到Mj 如公式(3)所示,验证梅克尔树根和时间戳是否一致,即Mj== Mi :

并以此验证该区块是否为工作节点发来的区块,验证不通过则将其丢弃并将该节点标为非法节点,如果验证通过每个工作节点则将其加入区块链中,并且将该区块的名称和关键字信息,利用SHA-256算法进行哈希加密并录入本地SQL-Sever数据库中。

2)轻节点模块

轻节点模块主要实现信息查询的功能,该模块设计摈弃了传统区块链应用中对于轻节点存储区块头的方式,减轻客户端的负荷。在查询时客户端会将用户输入的关键字信息利用sha256算法进行哈希化再发送给全节点查询请求并等待全节点返回查询结果,这样便能在减轻全节点负荷的同时实现安全查询。

2.2 网络部分

该部分分为P2P网络模块和共识机制模块,主要实现整个区块链网络全节点的对等连接并按照共识机制保持系统的安全、正常地运行。

1)P2P网络模块

该系统采用了集中式P2P网络进行设计与实现,即在网络中设置一个中心节点,然后由中心节点建立一张全网资源信息索引节点表。这样,当某个节点需要进行路由查询时,只要向中心节点提交查询请求,由中心节点搜索遍历全网资源信息索引节点表就可以查询全网是否有请求节点所需资源,结构图如下图4所示。

网络拓扑结构设计实现以后,需要对网络中不同种类的节点进行设计。该系统使用的节点大致分为三类:中心节点(服务器节点)提供路由查询,并动态维护相关索引表格等服务;全节点负责产生验证区块,并将验证通过的区块加入区块链中,并为轻节点提供信息查询服务;轻节点负责发送用户的查询请求给全节点,并将全节点返回的结果信息输出给用户。由于网络中到处都存在着中间设备,如NAT,使得任意两台设备不能直接的相互连接,因此,为了能让网络中节点能够正常通信,本系统采用基于UDP的P2P穿越技术,实现网络中所有节点互联起来。

2)共识机制模块

区块链网络采用的是去中心化的分布式存储方式[8] ,因此需要有合理的共识机制来让参与者们可以达成共识,保证参与者们的决策一致,传统区块链应用中一般采用工作量证明POW(Proof of work),該机制简单来说就是用于证明完成过一定量的工作[9],但此共识机制过于消耗节点的算力其不产生其他实际效益,因此该系统采用PBFT共识算法(Practical Byzantine Fault Tolerance),保证系统在恶意节点不超过f(f=(n-1)/3,n为参与节点个数)个时能够正常、稳定地运行。

3 系统运行过程详解

该系统结合联盟链的思想,全节点由系统管理人员运行,轻节点则是为旅客或者执法人员提供查询接口,该系统运行过程如图5所示。

Step1:系统管理员登录运行全节点客户端,全节点上线首先进行区块同步,该节点向中心节点查询当前区块链高度,如果本地区块链高度低于当前区块链网络高度则向邻近节点发送同步申请下载其余区块链到本地。

Step2:中心节点根据在线的全节点生成数组形式的在线节点列表,以数组下标代表相应节点的标号。

Step3:中心节点随机选取一定数量的全节点进行驾驶员信息或营运车辆信息的生成,其中驾驶员信息由姓名、性别、准驾车型、从业资格证类别等关键信息组成,营运车辆信息由车牌号、车主或者企业、购置年份等关键信息组成, 完成后进行全网广播,全网节点在验证通过后存入本地内存池。

Step4:中心节点按照预定规则选取一个全节点进行区块的生成并发送在线节点列表,该节点需从本地内容池选取一定数量的信息打包进入新产生的区块中,除此之外,该区块的内容还有时间戳,梅克尔树,前一个区块的哈希值。

Step5:进行区块生成的节点生成签名并连同新区块全网广播,等待验证,验证通过后全网节点将新区块入链并将该区块的区块名和关键字信息如驾驶员信息的姓名、身份证、营运车辆的车牌号,哈希化后录入本地Sql-Server数据库便于查询;如果验证不通过则更换新的全节点进行区块生成。验证结束之后系统将开始进行新的一轮节点选取。

Step6:轻节点进行查询功能,首先由用户输入查询信息的关键字,如驾驶员信息的姓名、身份证、营运车辆的车牌号,本地哈希化计算完成后向全节点发送查询请求,全节点将用户输入进行SqlServer数据库查询,如果匹配则根据区块名导出查询结果返回给轻节点,否则返回查询失败。

4 系统性能分析

4.1 安全性分析

该系统在底层架构方面,区块链具有不可篡改性和可溯源,因而可保证驾驶员信息或车辆信息不被篡改,并且可根据链式结构追溯任一区块,保证区块正确。

在全节点方面,全节点将区块打包并进行全网广播,这个过程中利用了非对称加密技术,打包节点使用私钥对区块消息摘要加密,其他全节点收到广播后使用其公钥解密。考虑到全节点中的某些节点可能出错、出错的程度不同,对整个系统的危害程度也不同,因此利用共识机制来在上述情景中使大多数节点达成共识,维护系统正常运行。

在轻节点方面,轻节点具有查询信息的功能,发送的查询信息进行了哈希加密,而为了保证数据库中数据的安全,使用了哈希算法进行加密,哈希是单向加密,数据库仅作为查询索引,所以即使数据库中的敏感数据遭到恶意窃取或泄露,数据也不可读。

4.2 健壮性分析

区块中的数据是无法被修改的,因此恶意节点无法使得伪造篡改相关信息,只能通过一些手段使得系统分叉。接下来证明恶意节点不超过f个时共识机制可以正常运行。假设将共识节点分为三部分,N表示全部节点总数,F代表恶意节点且已合谋,R1表示与F达成共识接受新发布区块的节点集合,R2表示与F达成共识撤销R1共识节点集合,但R1与R2都非恶意节点。若想达成分叉条件,不难得出公式(4),公式(5):

那么在极端情况下令F=f,那么显然有公式(6):

又因为|R1|+|R2|=n-f,则可推出公式(7):

又因为f=(n-1)/3,带入公式(7)可知不等式不成立,这与已知相互矛盾,所以可知当恶意节点不超过f个时,共识机制可以正常运行,证毕。

4.3 可拓展性分析

该系统具有很好的拓展性。在轻节点方面,能够将轻节点移植到移动端,实现更加轻便地日常使用,且可以添加与相关道路运输机构接口,实现对于用户乘坐的营运车辆班次查询。在系统设计方面,该系统是按不同模块进行设计的,针对不同的需求可以对不同模块进行调整,具有良好的拓展性,同时P2P网络本身也就具有很强的拓展性,容易应对不同的需求变化。

5 结论

随着车辆使用数量的上升,驾驶员的个人信息量逐年增大,同时传统信息管理系统模式存在对服务器要求过高等局限性,而分布式存储的优势日益显著,区块链技术刚好补全了这一缺陷。本文提出一种基于区块链技术的交通客运身份存储系统,该系统架构分为区块链部分和网络部分,区块链部分结合全节点和轻节点设计,由全节点后台自动完成打包和验证区块等工作,方便系统管理人员的工作与维护,而轻量化的轻节点能够便捷轻节点用户的日常使用,网络部分采用具有良好拓展性的P2P网络以及低耗能的PBFT共识机制,保证系统能够稳定、安全地运行。在未来,该系统还可以拓展更多的功能,例如存储客运班次的路线信息、乘客的路线信息,提供相应的查询接口等,可以满足用户的更多需求。

参考文献:

[1] 袁勇,王飞跃.区块链技术发展现状与展望[J].自动化学报,2016,42(4):481-494.

[2] 张悦,于佳.基于身份的云存储完整性检测方案[J].计算机工程,2018,44(3):8-12.

[3] 邵奇峰,金澈清,张召,等.区块链技术:架构及进展[J].计算机学报,2018,41(5):969-988.

[4] Satoshi Nakamoto.Bitcoin:A Peer-to-Peer Electronic Cash System[EB/OL]. https://bitcoin.org/en/bitcoin-paper.

[5] 毕娅,周贝,冷凯君,等.基于双链架构的医药商业资源公有区块链[J].计算机科学,2018,45(2):40-47.

[6] 林凡,钟万春,成杰,等.基于区块链的人员信息管理系统设计[J].通信技术,2019,52(1):222-226.

[7] 刘海,李兴华,雒彬,等.基于区块链的分布式K匿名位置隐私保护方案[J].计算机学报,2019(5).

[8] 郝琨,信俊昌,黄达,等.去中心化的分布式存储模型[J].计算机工程与应用,2017,53(24):1-7,22.

[9] 吴振铨,梁宇辉,康嘉文,等.基于联盟区块链的智能电网数据安全存储与共享系统[J].计算机应用,2017,37(10):2742-2747.

【通联编辑:代影】

猜你喜欢
区块链管理系统
基于LED联动显示的违停管理系统
停车场寻车管理系统
船舶压载水管理系统
海盾压载水管理系统
区块链技术的应用价值分析
“区块链”的苟且、诗和远方
用“区块链”助推中企走出去
基于RFID的仓储管理系统实现