在具有传染性的突发公共卫生事件中,行程追踪在防控中发挥着至关重要的作用。为保障公民人身安全与社会稳定,政府会下达系列指令,严格要求各种场所加强人员进出检测与记录,记录的人员活动轨迹为之后可能的病源追溯提供事实依据。以新型冠状肺炎为例,其具有强传染性,尤其在室内环境、空气流通状况不佳情况下,传染速度和强度提高。疫情初期,大部分场所,包括人员密集的超市、居民区、商场等,检测与记录都是采取线下手动记录,没有备份处理与线上共享,使得信息流转缓慢与信息缺失;而后在政府的倡导下,各地迅速推广健康码、行程码并逐渐引入智能测温装置,提高检测效率与准确度。但人员流动的轨迹仍未全面记录,仅在部分重要流转场合或人流量较大场所进行体温检测和行程查看与记录。
疫情中人员信息和轨迹信息的不完善导致对疫情来源、密切接触人员、次密切接触人员的追踪时间增加,增大了病毒传播和人员感染的风险,使得疫情影响逐渐扩大。目前,我国新型冠状肺炎卫生事件已经得到有力控制,但疫情仍处于复发反弹阶段,不可掉以轻心。如果建立一个利于快速对人员轨迹进行追踪的信息系统,在发现确诊或疑似病例后,加快病源溯源,尽快开展对相关接触人员、地点的排查,将对控制疫情有重要的意义。
要准确且全面地采集记录人员轨迹及信息,需要对人员行踪进行实时追踪。人员轨迹追踪需要可靠而稳定的数据来源,数据来源于各种渠道或技术,包括手机、电脑等电子终端发送的位置信息,身份证或银行卡等电子IC芯片留下的地点信息,车载导航、高速公路收费站等记录的路径信息,监控摄像等捕捉的行踪信息等。由于全球定位系统在室内环境中的局限性,周宝定等[1]提出了一种依赖智能手机室内定位人员的方法,通过手机内置的传感器获取行人连续多个位置相关的行为状态,结合室内已有的网络拓扑,将行人位置匹配到相应的特殊位置从而消除PDR的累计误差并实现自主定位。唐小勇[2]以Android移动智能终端无线Wi-Fi和Bluetooth信号采集为基础,提出基于指纹比对的多模式匹配定位算法,实现基于Android终端的移动轨迹智能化追溯。张青[3]设计了一种可以按时自动从多路摄像头通道中提取视频,并形成一个完整的执法轨迹,克服了民警手工查找视频劳动强大、效率低下的问题,提高了民警办案的效率。李捞扒等[4]从追溯客户的缴费行为轨迹出发,提出了一个针对缴费渠道的风险监控模型。尹辉斌等[5]提出了一种基于IWR1443毫米波传感器构建的FMCW雷达系统,从而采集运动目标的位置信息,实现了精度为0.2 m的人体运动轨迹检测方法。
目前人们研究了大量方法实现人员定位与位置预测,尤其是对于小范围内的人员位置记录应用较多,但大多未将小范围内检测到的点位置连接成完整的线轨迹,对于大范围内的人员轨迹合法记录与监测的应用较少,而疾控需要连续的人员轨迹变化数据从而进行病原追溯。区块链技术具有可溯源、防篡改、无条件信任、去中心化、防伪性等特征[6],是一个分布式账本或者说信息共享平台。本文提出将区块链技术应用于人员轨迹追踪研究,在突发公共卫生事件中,将监测到的人员轨迹与疾控信息实时整合到共享平台,设计并实现基于区块链的人员轨迹溯源系统。
1 人员轨迹追溯存在的问题 1.1 信息获取权限受限在国家未授权的情况下任何机构或个人不可非法获取和利用个人位置行踪等隐私信息。在某些紧急情况下的人员排查需要经过层层批准,才可以查询相关信息,延长了排查时间甚至错过了最佳排查时机;当然,人员轨迹信息也无法直接共享用于商业分析。
1.2 人员溯源问题目前采用的人员位置采集技术无法自动生成连续完整的行动轨迹,也无法快速准确地追查到某时间段内某一位置所出现的准确人员信息,因此,大多时候人员的追踪还要辅以大量人工排查,存在重复信息干扰并欠缺时效性。
1.3 个人隐私信息泄露风险大数据时代,大量的位置数据存在着互相关联进而可能形成连续位置轨迹,如果这类信息处理不当,可能使得相关人员的私密信息遭到泄露[7],这导致部分人员不愿意主动参与到轨迹信息收集中,同时侧面反映出人员轨迹溯源中存在的信任问题。
2 基于区块链的人员轨迹溯源方案设计 2.1 区块链技术 2.1.1 技术特征区块链是一个去信任化、去中心化的分布式共享数据库。区块链把数据打包成区块,按照时间顺序将区块以链条的形式组合起来,形成特定的链数据结构[8],并结合点对点传输、共识机制、非对称加密算法和智能合约等技术,以保证其不可篡改性、可追溯性、防伪性以及高效性。区块链的防伪性强化了其在隐私保护方面的应用;可溯源性提高了信息追溯的效率;去中心化将“信息孤岛”串联形成数据共享平台;除此之外,防窜改、无条件信任等特征,加持了其在公开信息的同时保障信息安全的应用实践。
2.1.2 可行性分析区块链技术在消息透露与隐私保护两方面的平衡为交易数据提供了良好的保障。一方面,区块链网络中披露必要的交易内容以促进节点达成共识,另一方面,为了保护用户隐私,区块链对敏感数据进行处理加密。许多共享信息运用区块链隐蔽用户身份、适当加密交易信息,保证信息安全,避免敏感数据泄露[9]。区块链在物联网中的应用是近几年的研究热点,物联网与区块链的联合产生了“物链网”。区块链中修改区块计算力太大,其区块的不可篡改性保证了物联网的共识,且每一个区块都包含了上一个区块的信息,使得物联网应用可追本溯源[10]。同样,区块链也较好地被应用到了供应链中。在供应链体系中,商品从原材料采购到消费者手中,要经过大量环节,利用区块链将供应商、分销商、零售商、用户串联,形成公开可查的可追溯系统[11]。
区块链在追溯溯源方面的应用目前集中于供应链和物联网两个领域[12-13],在人员轨迹追溯的应用较少,但三者之间有相似之处。因此,以区块链在供应链和物联网中的应用为例,将区块链的特性运用到突发公共事件中的人员轨迹及信息数据的收集中,在充分保护人员隐私的同时,不断记录、更新人员的轨迹,并在网络中进行实时共享,形成一个信息追溯系统。
2.2 基于区块链的溯源系统基础架构针对突发公共卫生事件中人员轨迹追踪所面临的各种问题,可借助区块链技术提供解决方案,将人员基本信息、轨迹变更等数据记录到区块链上,提高权限获取效率,增强各方的信任度,提升信息的安全性和使用率,增强人员轨迹的可溯性[14]。突发公共卫生事件影响广泛,涉及到的主体众多,将其简化为三大主体:政府机构、企业组织、公众人员。本文基于区块链技术所建立的人员轨迹信息库架构如图1所示,其中,环境层利用各类技术进行数据监测与收集,大数据融合平台与区块链层中的智能合约交互,将人员轨迹信息上传至区块;区块链层结合密码学、智能合约、分布式账本等技术,进行数据转换、存储、广播;应用层向区块链层读取信息,向系统用户输出处理后的数据。
![]() |
图 1 基于区块链的人员轨迹信息库架构 Fig. 1 Blockchain-based personnel track information aatabase architecture |
由上述信息库构架可知,环境层中各企业借助各种技术、设备收集人员轨迹信息后向区块链层发送数据,应用层给各方用户提供了一个便于向区块链层进行信息查询的端口。人员轨迹溯源方案结构图如图2所示。
![]() |
图 2 溯源方案结构图 Fig. 2 Structure diagram of traceability plan |
基于区块链的人员轨迹溯源系统参与节点众多,产生大量数据,尤其是人员流动性强,人员轨迹信息采集量大且更新速度快,若直接将所有数据信息上传到区块链网络中,区块链目前自身存在的拓展性问题会导致数据上传慢、系统运行成本高。因此,采用双存储机制,将基础数据同时存储到区块链和数据库中。数据库中记录的是人员轨迹的完整信息,区块链中则存储的是数据信息摘要[15]。为了防止人员敏感信息泄露,企业收集记录的为系统指定的非敏感数据。
2.3.2 人员轨迹信息记录假设人员1从企业A(出发地)流转到企业B(目的地),则区块链对人员轨迹信息的记录与更新流程如下:
a. 人员1从企业A转移前的位置轨迹信息已由A打包记录在某区块中;
b. 人员1转移位置到企业B,轨迹发生改变,企业B检测并收集到人员1的信息,企业B发出轨迹变更请求;
c. P2P网络全网广播人员轨迹变更请求;
d. 区块链上接收信息的全节点验证人员轨迹信息正确性;
e. 信息合法,A转交人员1的轨迹记录权限给企业B,由企业B将当前通过验证的人员1 的新增轨迹信息纳入新的区块中;
f. 区块链上接收信息的全节点对新区块执行规定的共识算法;
g. 新区块通过共识算法后链接到最长链,人员1轨迹信息更新成功。
2.3.3 人员轨迹信息查询人员轨迹信息查询在客户端进行操作,即轻节点通过客户端,连接到网络中全节点,进行相应访问,观察存储链的全状态。信息查询根据不同需求进行,若是对具体某人员进行排查,则输入被查询的人员对应的溯源码与姓名,便可通过调用区块链上的智能合约读取到所需轨迹数据或其他并行数据(某时、某地、温度等);若是需要对某具体地点进行排查,则输入该地点企业的节点ID、名称、时间,同样通过合约自动读取到某时某地人员集合。另外,根据权限不同,所得到的信息详情略有不同。企业和普通用户只可获取非敏感数据,监管机构在进行追踪时根据需求可获取所需敏感数据,如身份证号码。
3 溯源系统具体设置 3.1 系统功能模块设计溯源系统的设计主要是为了实现人员轨迹变更的追溯功能和某地某时的人员排查功能。将人员轨迹溯源与区块链技术相结合,开发去中心化的分布式应用(DAPP)。溯源系统按照客户端三方的需求设计业务功能,分为具有不同业务功能的3大模块[16],包括:监管部门模块、普通用户模块、企业组织模块,如图3所示。
![]() |
图 3 基于区块链的信息溯源系统 Fig. 3 Information traceability system based on blockchain |
监管部门模块由政府机构授权的监管部门节点组成,该部门拥有系统的最高权限,系统中人员的追溯码均由监管部门统一生成与注销,保证人员上链的全面性、广泛性,使人员轨迹信息更加完整;监管部门可对网络中其他节点进行对应的业务授权,其他节点经授权后要相应地履行职责、享受义务;监管部门可获取人员的身份信息和轨迹信息;若上链的节点出现违规或未达到额定标准,将会受到监管机构的惩处。
3.1.2 普通用户模块普通用户在客户端进行身份认证,获得监管部门授权后可通过人员的溯源码和姓名在数据库中查询轨迹信息;如果对查询信息有疑问,则可获取区块链中的信息摘要与所查询信息通过相同加密算法后的摘要比对[17],若发现摘要不一致,可进行信息检举。
3.1.3 企业组织模块企业组织上链后,获得监管部门授权,可以进行人员轨迹信息查询和验证,同样能对不实信息进行检举;若检测到人员的轨迹流转,则需要发送轨迹变更申请,将相应信息录入数据库。理想情况下,企业引入可自动识别身份并同时测量体温的人工智能设备,记录人员的地理位置、时间节点、体温等;若检测到异常数据,人工智能设备将会立即发出警报,所在企业根据实际情况采取相应措施。
4 智能合约目前可以开发DAPP的平台较多,本文选择以太坊平台。实现DAPP,首先要进行智能合约的开发,完整的智能合约可以实现与外界的交互、流程的自动执行等。基于以太坊的包容性,在该平台上可以用不同编程语言创建智能合约,本文选择以定位以太坊虚拟机为目标的solidity语言进行合约编写,该语言目前由以太坊核心开发团队维护。智能合约开发流程包括合约编写、编译、部署及调用,合约内容通常涵括所需参数、自定义结构体(struct)、接口事件(event)、功能函数(function)。
4.1 智能合约设计溯源系统的智能合约通过设置一系列参数、函数等完成数据记录、信息校验、交易查询。本文的合约函数包括的参数与功能如表1所示。
![]() |
表 1 智能合约函数表 Table 1 Function table of smart contract |
以太坊推出开源的Solidity智能合约在线开发环境Remix,其提供基本的合约编译、部署至本地测试网络、执行合约等功能。Remix无需环境配置,使用方便简单,故本文首先在Remix上进行合约测试。由于为合约基础测试,信息采用手动输入的形式。
将合约内容放置到Remix-Ethereum IDE在线编译器右上侧的工作区中,通过左侧功能区的编译后再部署到JavaScript虚拟机,如图4所示。部署成功后,即可点击左侧相应函数框进行合约函数测试,依次测试函数CreatePerson,setPermission,recordTrace,getTracesOf,getTracesOftheCertain,具体测试信息会出现在右下侧日志区,如图5和图6所示。
![]() |
图 4 合约在线编译与部署 Fig. 4 Contract online compilation and deployment |
![]() |
图 5 合约在线测试 Fig. 5 Contract online test |
![]() |
图 6 合约在线测试日志区 Fig. 6 Log area of contract online test |
为了测试智能合约的主要功能,代入实际疫情案例数据。案例选择易获取的四川省某案例:2021年12月29日四川乐山市五通桥区疾控中心上报乔某等4人为新冠肺炎确诊病例的密切接触者的行程轨迹。目前由于设备采集不完善和保障公众隐私安全,信息收集及公布并不完整,如实时体温等,故本文将需要的信息进行了适当补充,如表2所示。
![]() |
表 2 密接者行程轨迹表 Table 2 Contact person's itinerary table |
将以上疫情密接人员相关信息录入,得到的测试结果与表2内容进行对比,可知智能合约内容可以实现所期望的功能。测试结果如图7和图8所示。
![]() |
图 7 具体地点、时间人员集合 Fig. 7 Personnel collection of the specific location and time |
![]() |
图 8 指定人员轨迹集合 Fig. 8 Track collection of specified personnel |
在以太坊平台上开发项目,若在主网公有链上测试或部署智能合约等需要消耗以太币且搭建复杂,故本文选择在本地搭建私有链以节约成本、简化过程。在本地进行合约发开,先要搭建运行系统的环境,安装Truffle、Ganache、VS code以及Web3.js。Truffle是针对基于以太坊的Solidity语言的一套开发框架,可简化DAPP的构建和管理流程;Ganache通过模拟真实以太坊网络,实现本地内存区块链的开发和测试,将私有链可视化;VS code配置solidity环境后便于编写、调试合约,并且与truffle交互后编译、部署合约;Web3.js是以太坊官方的Javascript API,有助于开发者使用HTTP或IPC与节点进行交互。
环境搭建完成后,在命令行依次输入truffle init,truffle compile,truffle migrate,完成项目启动、合约编译、合约部署,如图9和图10所示,成功后即可在Ganache中查看到私链上的4个新生区块,如图11所示。
![]() |
图 9 项目启动与合约编译 Fig. 9 Project startup and contract compilation |
![]() |
图 10 合约部署 Fig. 10 Contract deployment |
![]() |
图 11 合约成功部署后链上新生区块 Fig. 11 New blocks on the chain after the successful deployment of the contract |
将智能合约成功部署到区块链上,系统程序基于JavaScript与Node.js具有良好的扩展性,可实现合约与外界交互。本文将合约与Web页面交互,实现客户端各模块的操作。
5.2.1 监管方授权与创建溯源码监管方(政府)是合约的创建者,即系统的超级管理员。监管方将所有人员基本信息、企业信息录入到系统中,生成溯源码,即使某人员未主动注册,其轨迹仍可被记录、查询。当人员或企业自主上链,需要通过监管方授权。超级管理员通过调用智能合约中的函数对区块链系统中的其他节点设置不同的状态码以进行授权,如图12所示。其中,监管方状态码为3,溯源合约创建即通过合约中构造函数自动授权;普通用户状态码为1,有查询和验证人员轨迹的权利;企业组织状态为2,有转移、查询人员轨迹的权利。在监管方授权的同时将地址和状态码、溯源码绑定,之后该地址可通过溯源页面进行操作。
![]() |
图 12 监管方授权与创建溯源码 Fig. 12 Supervisor authorization and creation of traceable source code |
人员轨迹变更和轨迹信息录入是被授权企业可进行操作的模块。在录入轨迹信息时,输入相应人员的溯源码和姓名,以及检测到人员温度、测量时间等,如图13所示,通过人员身份的一致性验证后,点击轨迹记录,系统将自动发送某人员的轨迹记录权限申请,将某人员轨迹记录权转移到目前企业地址,并去除前一个企业对该人员的轨迹记录权,以成功添加该人员的新轨迹,增加该企业所管理的人员轨迹。
![]() |
图 13 企业进行人员轨迹变更记录 Fig. 13 Records of personnel track changes by enterprise |
在经过监管方授权后,用户可登录溯源网页询人员轨迹,轨迹查询有两种方式,如图14所示。第一种为查询特定人员的轨迹,输入某人的姓名与溯源码、查询年份,即可得到指定年份中该人员的全部轨迹信息;第二种为输入某地的名称与溯源码、查询时间,即可得到某地某时间范围内全部人员的名单。在实际应用中,可以通过智能合约的编写,调整人员轨迹的查询时间范围、返回的人员信息内容等。
![]() |
图 14 人员轨迹查询 Fig. 14 Personnel track query |
区块链以其鲜明特性:去中心化、分布式网络、防窜改性、可追溯性、自信任性等,在某些行业中展现出了巨大的发展潜能,相关应用不断增加。其中,区块链的追溯性能、对信息的加密性能以及其分布式账本的性能,使得其信息共享、信息追溯中的应用逐渐增多。本文从突发公共卫生事件角度出发,借鉴区块链在供应链与物联网中的溯源应用,研究了基于区块链的人员轨迹溯源系统,将社会各方纳入到溯源系统的建设维护中,对人员轨迹信息加强保护并采取分布式存储,采用智能合约满足期望需求,并自动执行程序,实现疾控中人员轨迹及信息数据的快速收集与读取,构建了可信高效的人员追踪系统。将区块链视为溯源系统的底层技术,有助于重塑信任体系[18]、提高追踪效率、扩大信息共享。但在实际的应用以及进一步的研究中,不仅要结合系统的具体使用环境,还需要考虑区块链目前存在的一些挑战,例如,拓展性(以太坊目前的吞吐量可能无法支持大量的人员轨迹更新)、设备成本(需要统一的自动检测与录入人员信息的人工智能设备)、存储量(海量的人员信息数据需要大存储空间)等。
[1] |
周宝定, 李清泉, 毛庆洲, 等. 用户行为感知辅助的室内行人定位[J]. 武汉大学学报· 信息科学版, 2014, 39(6): 719-723. |
[2] |
唐小勇. 面向Android终端的室内移动轨迹追踪系统设计与实现[J]. 福建电脑, 2015, 31(11): 13-14. DOI:10.16707/j.cnki.fjpc.2015.11.007 |
[3] |
张青. 执法轨迹追踪系统设计研究[J]. 信息与电脑, 2016(1): 87-88. DOI:10.3969/j.issn.1003-9767.2016.01.052 |
[4] |
李捞扒, 邹阳, 曾晓勤. 基于缴费行为轨迹追踪的渠道风险监控模型[J]. 微型电脑应用, 2019, 35(4): 65-70. DOI:10.3969/j.issn.1007-757X.2019.04.020 |
[5] |
尹辉斌, 许志猛. 基于FMCW雷达的人体运动轨迹检测系统[J]. 传感器与微系统, 2020, 39(9): 116-118. DOI:10.13873/J.1000-9787(2020)09-0116-03 |
[6] |
HABER S, STORNETTA W S. How to time-stamp a digital document[J]. Journal of Cryptology, 1991, 3(2): 99-111. DOI:10.1007/BF00196791 |
[7] |
马春光, 张磊, 杨松涛. 位置轨迹隐私保护综述[J]. 信息网络安全, 2015(10): 24-31. DOI:10.3969/j.issn.1671-1122.2015.10.004 |
[8] |
薛腾飞, 傅群超, 王枞, 等. 基于区块链的医疗数据共享模型研究[J]. 自动化学报, 2017, 43(9): 1555-1562. DOI:10.16383/j.aas.2017.c160661 |
[9] |
康海燕, 邓婕. 区块链数据隐私保护研究综述[J]. 山东大学学报(理学版), 2021, 56(5): 92-110. |
[10] |
史慧洋, 刘玲, 张玉清. 物链网综述: 区块链在物联网中的应用[J]. 信息安全学报, 2019, 4(5): 76-91. |
[11] |
夏晓蕾, 任盈之. 区块链在共享数据领域的技术应用综述[J]. 中国发明与专利, 2020, 17(10): 35-41. DOI:10.3969/j.issn.1672-6081.2020.10.005 |
[12] |
CHRISTIDIS K, DEVETSIKIOTIS M. Blockchains and smart contracts for the internet of things[J]. IEEE Access, 2016, 4: 2292-2303. DOI:10.1109/ACCESS.2016.2566339 |
[13] |
SABERI S, KOUHIZADEH M, SARKIS J, et al. Blockchain technology and its relationships to sustainable supply chain management[J]. International Journal of Production Research, 2019, 57(7): 2117-2135. DOI:10.1080/00207543.2018.1533261 |
[14] |
AICH S, CHAKRABORTY S, SAIN M, et al. A review on benefits of IoT integrated Blockchain based supply chain management implementations across different sectors with case study[C]//Proceedings of 2019 21st International Conference on Advanced Communication Technology. PyeongChang: IEEE, 2019: 138–141.
|
[15] |
谢绒娜, 李晖, 史国振, 等. 基于区块链的可溯源访问控制机制[J]. 通信学报, 2020, 41(12): 82-93. |
[16] |
李保东, 叶春明. 基于区块链的汽车供应链产品追溯系统[J]. 计算机工程与应用, 2020, 56(24): 35-42. DOI:10.3778/j.issn.1002-8331.2006-0390 |
[17] |
陈飞, 叶春明, 陈涛. 基于区块链的食品溯源系统设计[J]. 计算机工程与应用, 2021, 57(2): 60-69. |
[18] |
郑珊珊, 司雯. 区块链应用于短视频传播与治理的新路径[J]. 出版广角, 2021(10): 37-39. DOI:10.16491/j.cnki.cn45-1216/g2.2021.10.010 |