当前位置:首页 期刊杂志

基于区块链技术的疫情管理系统

时间:2024-05-04

李节

(东南大学网络空间安全学院,江苏南京,211100)

0 引言

2020年1月,新冠疫情爆发。为了应对疫情,2020年2月11日浙江省杭州市率先启用了健康码防疫管理机制。健康码是以真实数据为基础,由市民网上申报,再经后端处理与移动通信校验等手段生成属于个人的二维码。健康码的推出旨在让复工更加精准有序。目前高校职工、学生需要每天在本校的健康管理系统上进行健康申报,以获得进出校园的权限。在这类疫情防控系统中,一般要求用户输入涉及个人隐私的信息,但这些数据在一定程度上暴露了个人隐私。同时,网络上也出现了伪造或篡改健康码的事件报道。

近年来得到广泛关注的区块链技术通过密码学技术保证了数据的安全性,因此获得了广泛应用。最新的区块链技术引入了智能合约(Smart Contract)概念,可通过合约对区块链进行编程。本文设计并实现了一个基于区块链技术的疫情防控登记系统,可在保护个人隐私的情况下达到疫情防控的效果。

1 相关工作

为了用区块链技术改进与优化我国的传染病监测预警系统,黄锐等通过区块链技术将现行的传染病预警系统、网络系统、公共卫生交换系统、医院信息管理系统整合成一条疫情监测预警的协同链,建立兼顾实时性与准确性的传染病早期联合预警监测平台;汪涛等建立利用健康码区块链对新型冠状病毒肺炎疫情进行防控的模型,可通过该模型对疫情防控难易程度与成效进行评估;李龚亮等为更好地解决区块链中所涉及的交易隐私问题,以超级账本Fabric作为仿真平台,研究一种运用零知识证明保护隐私的算法,测试结果表明该算法可广泛应用于区块链隐私保护场景中。如今随着数以万计的车辆接入车联网,杨颜博等针对该问题进行分析,提出一种使用区块链技术保护车联网隐私的方案,该方案将车联网数据存储在分布式哈希存储表中,利用区块链实现用户数据存储、访问及用户撤销等功能,从而提高车辆接入效率。

本文根据以往研究成果,使用哈希算法与超级账本作为区块链框架,设计并实现了一个疫情防控系统,可实现前端将用户隐私加密后发送到后端,后端根据相应规则产生对应的通行码。实验结果表明,本文设计的系统具备可行性。

2 需求分析

随着疫情防控的常态化,各高校采取健康申报的方式进行人员管理。各高校都开发了本校独立的健康管理系统,学生与教职工每天在打卡系统上传自身的健康状况、行程计划等。但由于各高校之间的信息并不共享,因而对师生之间的跨校学术交流产生了一定阻碍。各大高校的数据只存储在自己内部的数据库中,形成了数据孤岛。但如果将数据全部外包给第三方服务器,用户隐私往往得不到保证。例如A学生想去B学校参加学术交流活动,通常需要进行大量申请工作。因此,推出一个区域内各大高校认可的,便于师生在学校之间进行正常学术交流的疫情防控系统成为了当务之急。

2.1 需求概述

本文设计的系统将加密技术与区块链技术相结合,在不泄露用户明文隐私的情况下,实现用户行程轨迹等个人信息在各联盟成员之中的共享。系统需各大高校与用户相互合作以保证存储到区块链中数据的真实性。如图1所示。各大高校通过区块链共享疫情防控信息,以实现高校之间互通互认。

Fig.1 Structure of the epidemic management system图1 疫情管理系统结构

如图1所示,本文应用层设计了3个用户实体,即系统维护员、用户与高校管理员,各大高校通过共同合作组成了联盟链。

由于区块链系统的存储空间相对有限,本文使用了两个数据库来保存数据。MongoDB数据库用于存储不需要溯源的普通数据,如用户数据等,架设在专门的服务器上。而需要溯源、防篡改的数据,如用户行程、疫区信息等,则由“Fabric SDK”通过Goosip协议分发到架设在各高校的专用服务器上,用于同步与校验区块数据。系统维护员负责向区块链中添加疫情、疫苗等相关数据。用户负责上传自身行程,用于每天的健康打卡。同时用户如果想去别的高校,可进行通行申请,系统通过校验疫区数据与用户行程数据判断其是否具备权限进入指定高校。在本文系统中,用户的行程隐私将会进行加密处理,以密文方式存储在区块链上。

2.2 系统功能需求

系统的用户角色如图2所示,主要分为普通用户、维护管理员与高校管理员。本文假设用户是诚实可信的,即用户在知晓自身隐私数据会被加密保存后,将会诚实地上传自身隐私信息。登录后,用户上传自己的行程、个人身体状况等信息。如果用户想去其他学校,可在申请模块进行申请,指定学校的管理员将进行审核。同时,由于国内疫苗正在大规模接种中,各高校也正在向学生及教职工宣传疫苗接种的必要性,因此系统也应具备查询疫苗接种地的功能,以便用户获得真实、可靠的疫苗相关信息。维护管理员负责向MongoDB写入用户信息,使用户获得一个账号,而且可添加联盟成员、疫情、疫苗接种地等信息。高校管理员通过查询指定用户的账户信息,查看用户通行码,即可知晓用户通行状态。

Fig.2 System function图2 系统功能

基于区块链技术的疫情管理系统各模块详细内容如下:

(1)系统管理。该模块可添加用户与高校成员,数据将保存在MongoDB数据库中。用户在登录时进行校验,根据相应属性跳转进入不同页面。

(2)疫情模块。该模块为系统管理员维护区块链数据而设置,在该模块中,管理员可添加疫情、疫苗等信息,也可根据关键码查询用户行程轨迹。

(3)用户模块。用户模块包含4个子模块,分别是行程申报、疫区查询、疫苗查询与通行认证。行程申报模块为用户提供了个人隐私前端加密保存至区块链的功能;疫区查询模块用于从区块链中查询当前疫情信息;疫苗查询模块用于查询当前疫苗接种地情况;在通行认证模块中,用户输入相关数据,如车次号、航班号等,经过加密后与后端区块链中的数据进行匹配,生成通行状态。

2.3 系统性能需求

本系统是高校之间分享数据的平台,对系统的要求不需要太高。高校的在校人数相对稳定,因此目前的区块链超级账本框架足以支持其并发量。在数据存储方面,由于用户上传的大多是字符串等数据,不涉及文件上传与下载,因此普通服务器足以承载。

针对系统的安全需求,首先为应对用户的隐私泄露问题,本系统使用了哈希散列技术[15]。本文假设用户诚实、可信,且积极配合防疫工作。用户信息并不会直接被服务端作为明文存储,因此用户没有必要进行伪造。因此,通过在前端直接对用户行程进行Hash 散列,传递到区块链进行保存会取得更好的效果。

3 系统设计

3.1 整体架构设计

本文设计的系统总体架构如图3所示。

Fig.3 System architecture图3 系统架构

应用层:在基于区块链的疫情管理系统中,应用层主要负责界面展示,包括行程上传、疫情共享等模块的用户操作界面与服务接口界面。

接口层:接口层主要为应用层提供调用智能合约的接口。所有需要写入区块链的数据结构都需要在智能合约中进行定义,并利用超级账本提供的API,通过智能合约与账本交互。

服务层:在超级账本中,服务层负责提供由Go 语言实现的智能合约服务、疫情录入服务以及疫情追溯服务。此外,调用服务层需要通过证书管理体系对联盟链中的成员进行身份管理与验证。

共识层:在超级账本中,共识的达成依赖于排序节点。超级账本并不采用“工作量证明”(Pow)这种耗费资源的算法,而是采取背书担保的共识算法。通过各节点对数据的校验及签名认证,取得共识后将数据写入账本。

账本层:存储层负责存储行程的密文数据。超级账本提供历史数据库,可查询数据的改动。根据最新的数据状态(超级账本中称为世界状态),即可查询出最新的键值对。

3.2 功能模块设计

3.2.1 系统管理模块设计

系统管理模块主要用来添加用户与高校成员。本文采用非关系型数据库MongoDB 存储以上数据,得到如图4所示的用户E-R 图。

Fig.4 The E-R diagram of user图4 用户E-R图

Fig.5 The E-R diagram of school图5 学校E-R图

3.2.2 疫情维护模块设计

疫情维护模块主要用于维护管理员向区块链中写入的疫情相关数据,如疫情地区、疫情航班、车次号等。疫情E-R 图如图6所示。

Fig.6 The E-R diagram of epidemic图6 疫情E-R图

由于疫情信息需要写入超级账本中,因此需要设计相应的结构体。对于疫苗信息,为方便溯源,也设计相应的数据模型。疫苗E-R 图如图7所示。

Fig.7 The E-R diagram of vaccine图7 疫苗E-R图

3.2.3 用户模块设计

对用户而言,主要需要进行行程申报,疫区、疫苗查询以及通行认证。敏感信息将会被加密存储至超级账本中,用户将在前端调用Jquery 提供的MD5 加密函数对明文直接进行加密,然后将密文发送到区块链进行存储。

对于通行认证部分,服务端首先从超级账本中取出疫情明文,然后同样进行MD5 加密,再与用户的明文进行匹配,得出状态码。高校管理员可根据用户手机号查询用户通行状态码。用户状态认证流程如图8所示。

3.2.4 智能合约设计

Fig.8 User status authentication process图8 用户状态认证流程

所谓智能合约即链上代码,其保证了结果的一致性。本文使用Go语言设计并实现了表1所列的智能合约函数,通过这些智能合约可实现用户信息添加、系统数据管理、用户状态查询等功能。

国际阿尔茨海默病协会预计,在全球范围内,阿尔茨海默病患者的数量每20年将翻一番,到2050年,将有超过1.15亿人患有此病。从今年开始,原本为期一天的“世界阿尔茨海默病日”将被延长至一个月。阿尔茨海默病带来的人文主义思考,使今年的活动聚焦在减少对该病的歧视与耻辱感上。

Table1 Smart contract表1 智能合约

智能合约内的相关结构体已在前文作过介绍,智能合约的设计大部分只需调用超级账本提供的3个API即可,分别是“GetState”、“PutState”、“GetHistoryState”,可向账本写入、读取与查询历史数据。

4 系统实现

4.1 系统运行环境

本文设计了4个peer节点与一个order节点作为区块链底层网络。由于超级账本需要MSP证书才能加入网络进行交易,而超级账本中想要生成满足MSP配置的证书,可通过“OpenSSL”或使用“Cryptogen”工具及“Hyperledger Fabric CA”组件,本文选择第二种方式生成成员身份配置信息。为了使用Cryptogen工具,首先编写“crypto-config.yaml”配置节点,接下来通过配置configtx.yaml文件指定区块大小、出块时间、创世区块等,之后编写Docker的配置文件“docker-compose.yaml”,在文件中指定了组织网络拓扑与对应镜像文件之间的映射关系。

最后编写SDK,并完成如下内容:①加载本地配置文件,尝试发现网络中的资源;②获取用户身份;③对网络内的通道进行操作或加入通道;④注册并监听指定通道内的事件;⑤对通道内的链码进行操作。

4.2 系统展示

4.2.1 登录界面

系统登录界面如图9所示。

Fig.9 System log-in interface图9 系统登录界面

根据前端用户输入的数据,服务端会从Mongodb中查找对应卡号的用户是否为管理员属性。如果是管理员属性则跳转到管理员界面,如果是普通用户属性,则跳转到普通用户界面,如图10所示。

Fig.10 Common user interface图10 普通用户界面

用户数据上传界面如图11所示,数据将会通过服务端调用智能合约的Addregion函数,将其写入超级账本中。

Fig.11 User information uploading interface图11 用户数据上传界面

4.2.2 通行认证信息输入界面

如图12所示,在前端使用通行认证功能需要填写对应信息。

根据前文所述的健康校验流程,以用户“lijie”为例,系统可生成通行码如图13所示。

Fig.12 Pass certification information input interface图12 通行认证信息输入界面

Fig.13 Access code图13 通行码

5 结语

本文通过将哈希函数与区块链技术相结合,设计并实现了一个基于区块链技术的疫情管理系统。系统测试结果表明,本文设计的系统可有效保护用户的个人隐私信息,同时达到防疫的效果。下一步本文将探索如何将零知识证明技术与防疫相结合,以达到更好的数据隐私保护效果。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!