林 凡 ,钟万春 , , 成 杰 , 张广驰 , 崔 苗 , 张秋镇
(1.广州杰赛科技股份有限公司,广东 广州 510310;2.广东工业大学 信息工程学院,广东 广州 510006)
随着物联网技术的发展,智能终端的应用越来越广泛,但是其中的信息安全[1]问题不容忽视,特别是对于特定人员如公安干警、社区矫正人员等通过携带智能终端采集到的信息(如位置信息等)以及他们的个人信息(如姓名、电话等)。传统的人员信息管理系统一般是将智能终端采集到的信息和个人信息存储在中心化的设备中,意味着一旦中心化设备被恶意攻击,将有可能导致大量隐私数据被泄露,或者可以随意篡改里面的数据,这对于整个信息系统来说是灾难性的。因此,构建一个安全可靠的人员信息管理系统十分必要。
本文基于区块链技术提出一种人员信息管理系统,通过准入机制,只有授权认证的用户才能把智能终端采集到的信息和个人信息存储在区块链中。系统具有去中心化、去信任、不可篡改、靠各方参与者共同维护的特点,可以真实记录人员相关信息,有效保障了信息系统安全。
区块链是以比特币为代表的数字加密货币体系的底层核心技术[2],本质上是一种基于对等网络的分布式数据库系统。区块链并不是一种单一的技术,而是多种技术综合的结果。这些技术包括P2P协议、非对称加密、共识机制、智能合约等,以新的结构融合在一起,形成了一种新的数据记录、存储和表达的方式。
区块链由若干个数据块组成,每个数据块即为区块链中的一个区块,根据产生时间的先后顺序,区块被有序地链接在一起,形成一个数据链条。区块由区块头和区块体两部分组成[3]。区块头封装了当前版本号、前一区块哈希值、Merkle根以及时间戳等信息;区块体则包括当前区块创建过程中生成的所有经过验证的区块操作记录。
区块链具有去中心化、去信任、不可篡改和可编程等特点,由众多节点共同组成一个端到端的网络,不存在中心化的设备和管理机构。区块链的每次区块操作都需先由发送者进行数字签名,经过全网达成共识后,才被记录到区块链上。区块一旦写入,任何人都不可篡改、不可否认。区块链网络中,单个节点对数据库的修改无法影响其他节点的数据库,除非能控制整个网络中超过51%的节点同时修改[4],但这几乎是不可能发生的。区块链技术可提供灵活的脚本代码系统,支持用户创建高级的智能合约、货币或其他去中心化应用。例如,以太坊(Ethereum)平台即提供了图灵完备的脚本语言,以供用户构建任何可以精确定义的智能合约或区块操作类型。
本文利用区块链技术提出一种人员信息管理系统设计方案,把智能终端采集到的信息以及对应的一些个人信息上传到区块链中进行存储[5],实现数据的安全管理。
结合区块链技术和人员信息管理的特点,基于区块链的人员信息管理系统架构如图1所示。该系统架构分为两大部分:系统底层模块和系统网络节点。
图1 基于区块链的人员信息管理系统架构
在系统底层模块设计上,共分为身份管理模块、共识模块、智能合约模块和数据库模块四个部分。
2.1.1 身份管理模块
身份管理模块是直接和客户端节点进行通信,实现系统管理员操作客户端在区块链网络中加入新成员时提供身份认证服务。身份管理模块会建立一套根信任证书体系,利用PKI(公钥基础设施)对携带智能终端人员的身份进行认证。结合区块链网络中的证书节点,在客户端节点注册用户时提供身份证书,并管理人员身份证书,如证书的新增和撤销。
2.1.2 共识模块
在分布式的区块链网络中,共识机制实现了同一个链上不同节点区块的一致性,同时确保了区块数据的有效和有序。充分考虑到人员信息管理的安全需求,在区块链网络中可能存在部分恶意节点攻击系统的情况。本设计采用拜占庭容错共识算法(PBFT)[6],在失效节点数量不超过(n-1)/3的情况下,仍能保证系统的安全性和活性,因此可以很好地抵御恶意节点的攻击。
2.1.3 智能合约模块
智能合约是区块链网络中可独立运行的链上代码,在运行时和验证节点建立网络连接。它的主要功能是通过编写智能合约程序实现对人员数据的增、删、改、查,同时可以结合智能终端的定位功能,编写人员活动范围(电子围栏)智能合约程序,限制人员的活动范围。当超出活动范围时,可以报警。
2.1.4 数据库模块
数据库模块用于存储区块数据,这些数据包括智能终端采集的数据和携带者的个人信息。所有数据以键值对的形式存储在数据库中,供智能合约模块调用。例如,某个组合键k(k代表用户的ID)的值可以用一个二元数组表示(k,val),当管理员要查询某个人的信息时,只需要输入用户的ID(k值),便可以查询到相应的人员信息(val值)。
在系统网络节点设计上,共分为客户端节点、存储节点、共识节点和证书节点。针对人员信息管理的安全需求,通过证书节点设置准入机制,在客户端节点注册新用户时,只有授权认证的用户才能加入区块链网络,把智能终端采集到的信息和携带者的个人信息存储在区块链网络中。各节点的具体功能如下。
2.2.1 客户端节点
客户端是安装在管理员电脑上的应用软件,可以用来注册用户、注销用户、获取用户信息以及其他对用户数据的操作。在注册用户时,绑定携带者的智能终端。智能终端采集的用户数据可以同步到客户端中,然后进行上链处理。同时,它必须连接到某个验证节点或者共识节点上,与区块链网络进行通信。
2.2.2 存储节点
存储节点(记录数据区块的节点)负责记录从共识节点发送过来的数据区块,维护数据状态和账本的副本。部分存储节点会执行数据处理,并对结果进行签名验证,充当验证节点的角色。验证节点是动态的角色,是与具体的智能合约绑定在一起进行交互的。当客户端发起一个对数据操作的请求时,验证节点通过调用相应的智能合约,返回对数据处理的结果,也只有在客户端向它发起数据操作请求时才是验证节点,其他时候就是普通的存储节点。
存储节点还有一种角色是主节点,代表的是和共识节点通信的节点,负责从共识节点处获取最新区块并在区块链网络内部同步。可以强制设置某个节点为主节点,也可以动态选举产生。所以,存储节点除了有记账功能外,某个时刻还可以充当验证节点或者主节点的角色,以节约系统资源,提高系统工作效率。
2.2.3 共识节点
共识节点从客户端节点处接收包含验证签名的数据,按照共识机制对数据进行打包生成区块,广播给主节点进行存储,然后主节点再把账本的副本广播给其他存储节点。
2.2.4 证书节点
证书节点是系统中的证书颁发机构,主要是在客户端注册用户时颁发一个数字证书,以便获取合法身份。在人员信息管理系统上的所有操作,都会验证身份的合法性[7]。
基于区块链的人员信息管理系统主要实现了对携带智能终端的特定人员信息的有效管理,系统运行过程如图2所示。
图2 人员信息管理系统运行过程
步骤1:首先安装在管理员电脑上的客户端软件,可以用来注册用户、注销用户、获取用户智能终端信息以及其他对用户数据进行的操作。客户端向验证节点发送一个用户数据操作请求,发送的请求消息包括一个请求命令字段,定义了对数据进行增、删、改、查的操作逻辑。请求消息还包括请求者的签名信息。
步骤2:验证节点在收到客户端发送的数据操作请求后,首先会根据请求者的签名信息验证是否是一个有效的请求,验证包括请求者是否有证书节点颁发的管理员证书、签名是否有效、请求者在当前网络上是否已授权有读写权限等,还会验证数据提交的格式是否正确。例如,要修改某人的信息,首先会验证你填入信息的格式是否正确,验证通过后,验证节点会根据当前账本数据模拟执行请求程序中的操作逻辑(数据的增、删、改、查)并生成读写集。在模拟执行时数据库不会更新,随后验证节点对这些读写集进行签名成为请求响应,返回给客户端。
步骤3:客户端接收到所有验证节点发送的请求响应后,首先对验证节点签名进行验证。如果请求程序的操作逻辑对账本进行调用(增、删、改)操作,并且签名验证通过后,则将请求响应和验证签名打包生成请求数据包发送给共识节点。如果请求程序的操作逻辑只是进行账本查询,客户端会检查查询响应,从记账节点中直接获取账本数据,不会将请求发送给共识节点生成新的区块。
步骤4:共识节点接收到网络中所有客户端发送的请求数据包后,验证签名的合法性,按照共识机制打包数据,生成数据区块。
步骤5:共识节点生成区块后,广播区块给网络中的主节点。
步骤6:主节点接收到来自共识节点发来的数据区块后,同步给其他存储节点更新数据库。
本文结合区块链技术,提出了一种基于区块链的人员信息管理系统,把携带智能终端的特定人员相关的信息放在区块链中进行存储,实现了数据的防攻击、防篡改,大大提高了其安全性。