APP下载

基于区块链的传染病风险管理方案*

2021-05-19范勋峰杨文梯关志涛

网络安全与数据管理 2021年5期
关键词:攻击者管理员向量

范勋峰,杨文梯,关志涛

(华北电力大学 控制与计算机工程学院,北京102206)

0 引言

2020 年,新冠疫情的爆发不但造成了全球范围内的公共卫生危机,也给全球经济造成了严重的损失。尽管当前疫情已经得到有效控制,但如何适应疫情下新常态的生活、防止疫情再次爆发并为下次突发的公共卫生危机做好准备,仍是当前面临的主要难题[1]。因此,政府机构以及相关的领域的专家学者都在积极地寻找相关的解决方案以管理传染病传播的风险。

疫情爆发时,传染病风险管理中最主要的工作是确定传染病风险区域。当出现感染者时,防控人员需要获取感染者及其密切接触者的行程信息以确定被调查群体到访过的地点并标记这些地点为风险区域进行预警。当前,确定风险区域主要采用的是接触者追踪策略。医务人员通过感染者的自述以及监控设备确认的方式获取风险区域。该策略虽然在疫情期间发挥了巨大的作用,但却严重依赖感染者的记忆力或者其是否诚实,并且具有极大的滞后性。为提升获取风险区域的效率,科研人员利用移动设备设计了更加信息化、智能化的传染病风险管理方案。信息化的传染病风险管理方案优化了当前的接触者追踪策略,实时收集用户信息并利用收集的数据确定风险区域。但是,当前的风险管理方案缺乏安全性与透明性。应用程序需要收集用户的敏感信息,在信息存储与信息处理过程中隐私信息存在被窃取或者被篡改的可能,严重威胁用户人身财产安全与社会公共安全。同时,当前设计的智能化的应用程序专注于检测接触感染,忽略了聚集性人群的传染风险,且由于计算开销较大,无法大规模应用,尤其是无法应用到对物品的监测。

区块链技术[2]由于其去中心化、防篡改、可追溯[3]等特点可以有效解决在信息收集、信息存储过程中出现的隐私安全问题。在信息处理过程中,同样会出现隐私泄露等问题。为解决此类问题,本文引入了隐私集合计算技术(Private Set Operation,PSO)。隐私集合计算技术是一种针对集合运算的保密计算方案,主要包括隐私集合求交(Private Set Intersection,PSI)以及隐私集合求并(Private Set Union,PSU),利用隐私集合计算技术解决在信息处理过程中出现的隐私数据泄露、效率低下等问题。因此,本文设计了一种基于区块链技术的传染病风险管理方案,该方案主要有以下三点创新:

(1)提出一种多方参与、适用于轻量级节点执行的隐私集合计算方法,对隐私数据进行处理,以实现对传染病风险的管理。在集合运算过程中,参与计算的轻量级节点只需进行简单的计算并反馈给云平台,由云平台对信息进行处理。提出的集合运算方法既能够进行交集运算也可以进行并集运算,并降低了计算的开销。

(2)方案利用Pedersen 承诺设计一种可以保护用户隐私的数据存储方式,并降低了存储的开销。同时,利用Pedersen 承诺记录数据可以在不暴露用户隐私的情况下对风险区域进行分析。

(3)基于联盟区块链提出一种能够高效执行的区块链共识算法,并根据记录信息的不同对区块进行标识。

1 相关研究

新冠疫情的爆发为社会带来了巨大的损失,同时也考验着一个城市、国家的治理水平[4]。许多研究机构和相关科研人员在疫情爆发后一直在研究如何更好地防控疫情,以将损失降到最低。文献[5]对疫情防控过程中使用的接触者追踪技术以及当前面临的挑战进行了全面总结,并指出了未来工作的方向。当前针对传染病的风险管理方法面临的主要难题是无法有效保证用户的隐私,文献[6]明确指出了当前主流的风险管理方案在隐私保护上的缺陷:新加坡政府提出了基于蓝牙技术的集中式的接触者追踪应用程序——TraceTogether[7],该方案在信息存储以及信息处理过程中无法保证数据的隐私,易遭受攻击并产生错误的信息。Google 以及苹果公司共同开发的Contact Tracing[8]以及英国政府提出的NHS Contact Tracing[9]应用程序也采用了蓝牙技术,虽然没有采用中心化的数据存储方式,但仍需中心化的服务器来处理数据,中心化的服务器可以获取到用户的隐私信息,这增加了隐私泄露的风险。中国的医疗体系[10]采用的是二维码技术来应对疫情,整个系统采用的是中心化的信息处理方法,无法有效地保护用户隐私。

当前,疫情防控中产生的用户隐私安全问题已经得到科研人员的关注,尤其是大数据的广泛应用[11],导致用户的隐私安全难以得到保证。为防止应用程序在收集、存储以及处理数据的过程中造成用户隐私泄露,科研人员在原有防控策略的基础上进行改进。文献[12]采用雾计算技术以及中心化信息处理方法设计了一个追踪并阻止疫情传播的框架。文献[13]利用通话明细记录以及接触风险通知系统对接触者进行追踪。基于区块链技术去中心化、不可篡改、可追踪的特性,部分科研人员将区块链技术融入到疫情防控系统中[14],并设计出了可以保护隐私的接触者追踪框架[15]以及风险管理方案[16]。但是,当前的传染病风险管理方案仍没有解决如何在保护用户隐私的情况下快速获取风险区域,尤其是在出现物传人的情况下如何降低计算开销使得轻量级设备能够大规模应用,以实现对移动物品进行监测[17]。

本文基于区块链技术设计了一种传染病风险管理方案。方案设计了一种隐私集合计算方法对隐私信息进行处理,并利用存储承诺的方式对数据进行存储,在保护用户隐私的前提下快速获取风险区域。

2 方案设计

2.1 框架设计

为保护用户隐私数据安全,本文利用区块链技术构建传染病风险管理方案。同时,为解决移动设备存储空间有限,信息处理效率低下等问题,在方案中融入了云计算技术。本文提出的框架如图1 所示,包括管理层、区块链层、云服务层以及数据收集层。

图1 方案框架图

(1)管理层:对整个系统进行维护并参与区块链共识。当出现感染患者或者疑似感染者时,管理员发起计算并分析区域风险状况。

(2)区块链层:负责对收集的数据以及公布的信息进行存证,防止用户对数据进行恶意篡改,保障隐私数据安全。

(3)云服务层:提供空间用以存储收集到的海量数据,并处理上传到云中的数据。

(4)数据收集层:包括手机、运动手环、传感器等移动设备。移动设备实时记录用户行程信息并对数据进行简单的处理。

2.2 隐私集合计算

本文提出的方案通过移动设备收集行程信息,使用云平台存储数据并进行信息处理。为保证数据的安全性,本文采用乘法同态加密算法对数据进行加密,以最常用的乘法同态算法ElGamal 为例。由于云平台存在信息泄露、数据被篡改的风险,本文利用区块链技术保证数据的安全。接下来,将对所提出的方案进行详细说明:

(1)初始化:系统管理员输入安全参数λ,使用ElGamal 同态加密算法的密钥生成算法KeyGen,得到系统公共参数以及公私钥对(pk,sk)。管理员保管私钥,并公布系统参数以及公钥。根据防控细粒度的需要,管理员们协商确定地点的范围大小,确定地点全集中的元素,最终可以得到关于地点的全集U={u1,…,um}(m是全集中元素的个数)。

(2)数据收集:数据收集是方案实施的基础。移动设备实时收集用户的行程信息,包括用户到达的地点、时间等。移动设备在收集的信息后,将信息存储在本地。为方便介绍,设定在某一被调查群体中有n个成员,每个成员Pi(i=1,…,n)根据收集到的信息以及全集U,得到自己的行程地点集合Ui(i=1,…,n)。同时,移动设备根据收集到的数据生成相应的承诺,并定期上传到云端。

(3)发起计算:当出现感染者时,管理员为获取密切接触者群体访问过的地点发起计算。管理员使用公共参数、随机数以及公钥pk 对明文空间中的单位元e进行加密,得到Enc(e),由于选择的随机数不同,每次加密得到的Enc(e)也是不同的。管理员将计算请求和加密后的结果Enc(e)直接发送到被调查群体的移动终端。

(4)请求应答:管理员发起计算请求后,移动设备根据收集到的数据返回相应的结果。移动设备接收到管理员的计算请求后对请求进行验证,如果计算请求验证违法则计算直接结束。移动设备根据自己的行程集合Ui以及接收到的Enc(e)构造自己的响应向量Ri。全集U的元ul(l=1,…,m)属于行程集合Ul时,Pi选择密文空间中的随机数加入到响应向量Ri中。当元素ul不属于集合Ui时,Pi将Enc(e)添加到响应向量Ri中,最终Pi得到响应向量Ri。响应向量的编码方法如图2 所示。

图2 编码流程图

移动设备无法直接将生成的应答向量发送给管理员或者上传到云中,其他参与计算的用户可以通过应答向量直接推测出某一用户的行程。方案通过拆分应答向量的方法保护用户隐私。移动设备将应答向量拆分成s(s≤n)份。Pi将应答向量Ri中的每一个分量ril拆分成s份。Pi选择s个随机数r1,…,rs,保证:

其中,p为ElGamal 同态加密算法选取的大素数。Pi随机选择某一个随机数(以r1为例)与应答向量中的分量ril相乘得到拆分后的一份(ril)1=r1·ril,其他随机数分别代表其他份数。最终,Pi将分量ril拆分成s份,得到(ril)1,…,(ril)s。移动设备将所有的分量进行拆分,对于不同的分量,Pi可以选择s个不同的随机数以防止恶意攻击。

应答向量中的每一个分量都被拆分成s份。Pi每次从每个分量中取出不同的一份,一共执行s次。最终,Pi得到s个新的向量Ri1,…,Ris。Pi将s个新生成的向量发送给不同的参与者,也可以自己保留其中的一份。每个参与者都无法获取完整的向量信息,即使其拥有私钥也无法解读到任何信息。

一个移动设备向其他参与者发送向量的同时,其也在接收其他参与者发来的信息。每个参与者收到的向量数量是不同的。参与者Pi将所用接收到向量对应的分量分别相乘,得到混淆处理后的向量到云中进行下一步处理。

(5)信息处理:信息处理是集合计算开销最大的阶段。计算开销将随着参与者数量以及向量长度的增加而大幅提高,选择利用云平台强大的信息处理能力对这些数据进行处理。

云平台计算得到向量R=(r1,…,rm)并将计算结果返回给管理员。

(6)结果解密:从云平台接收到结果向量R后,管理员使用私钥对向量中的每个分量进行解密,并获得解密后的向量R′。通过解密后的向量R′,管理员可以获取到密切接触者群体访问地点的并集。当向量R′中的分量等于e时,则并集中不包括该分量对应的地点;当R′中的分量不等于e时,则并集包括该分量对应的地点。得到计算结果后,管理员可以对风险区域进行进一步分析并进行预警。

本文提出的隐私集合计算方法不但能够计算集合的并集,同样也能计算集合的交集。当需要计算集合的交集时,则改变应答向量的编码方式:全集U中的元素ul属于行程集合Ui时,Pi将Enc(e)添加到响应向量中;元素ul不属于集合Ui时,Pi选择密文空间中的随机数加入到响应向量Ri中。此时,解密后向量R′中的分量等于e时,则交集中包括该分量对应的地点; 当R′中的分量不等于e时,则交集不包括该分量对应的地点。

2.3 数据存储

在执行风险管理时,移动设备需要实时采集数据并进行存储。收集到的数据可以存储在本地,但本地存储的数据存在以下问题:

(1)移动设备存储空间有限。移动设备中可能包括大量的轻量级节点或者存储空间有限的设备。这些设备不能存储大量的数据,或者用户不想浪费大量的存储空间。

(2)存储在本地的数据可能被篡改。参与者之间可能存在恶意节点。恶意节点会篡改本地存储的数据,以避免调查。

(3)一些攻击者将试图攻击其他设备。一旦攻击成功,攻击者将控制该设备。在消息响应过程中,攻击者会修改存储的数据或提交虚假信息。

基于上述缺点,应避免将采集到的数据存储在本地。方案设计将收集到的数据存储在云端。由于收集的数据涉及用户的隐私,为避免隐私泄露,可以通过存储承诺来记录数据。移动设备只需要记录关键信息就可对承诺进行验证。

方案对Pedersen 承诺进行了改进以存储收集到的数据。改进后的Pedersen 承诺可以在保护数据隐私的同时减少存储开销。即使云平台受到了攻击,攻击者也无法通过承诺信息获取到任何隐私信息。数据存储的方法如下:

管理员协商在循环群G中选择m个不同的生成元<g1,…,gm>,这m个生成元与地点全集中m个不同的位置一一对应。当用户拜访过某一地点时,承诺值vi(i=1,…,m)取值为1;当用户未拜访过某一地点时,vi取值为0。因此,得到改进后的Pedersen 承诺的计算方法如下:

移动设备需要定期将一段时间内收集到的信息形成承诺并上传到云端。即使用户没有移动,也有必要定期生成承诺并上传,防止恶意用户通过上传承诺的时间分析用户是否在移动。移动设备每次产生承诺时,所选的随机数r是不同的。即使用户的行程没有变化,产生的承诺也是不同的,攻击者无法从上传的承诺中获取到任何有用信息。

当某一用户被确诊时,管理员可以利用存储的承诺对用户的行程进行快速验证并进一步分析风险区域。管理员收集感染者在一段时间内的承诺,并计算承诺的乘积。计算结果如下:

患者根据本地存储的关键数据上传被调查时间段内地点的访问次数以及r之和。管理员根据上传的数据对承诺进行验证。管理员计算承诺乘积,计算结果如下:

管理员对比式(4)和式(5)的计算结果。当C和C′相等时,验证通过。管理员可以快速获取用户在某一时间段内拜访过的地点的次数,同时确保用户的详细行程不会被泄露。当管理员需要获取用户更详细的行程信息时,可以选取特定的时间段进行验证。当C和C′不相等时则验证失败,此时,该用户是一个不诚实的节点。管理员可以上诉到仲裁机构,对恶意用户进行惩罚。

2.4 区块链共识

存储在云平台中的数据也存在着被攻击者篡改的可能,采用区块链技术对数据进行存证,防止数据被篡改。在进行传染病风险管理时,会产生海量数据,方案需要确保区块链框架能够迅速达成共识。快速的共识能够保证收集到的数据可以快速上链。

由于区块链存储空间的限制,难以直接在区块链上存储收集到的数据。方案把区块链记录的数据分成两种类型:第一种是用户定期上传到云端的承诺,管理员根据存储在云中的承诺生成Merkle 根,将生成的Merkle 根作为存储到区块链中的数据上传到区块链网络等待上链。第二种是管理员执行计算和发布结果时需要记录的公共信息。公共信息由管理员直接上传到区块链网络中。区块链网络的具体共识方法如下:

(1)管理员作为区块链网络的共识节点参与共识。在进行共识前,所有管理员按顺序进行编码。根据记录数据的类型不同,区块分为两类:记录承诺的区块和记录公共信息的区块。不同类型的区块由块头中的标识符进行标记。在初始化阶段,系统设置阈值为m,阈值m是一个区块可以存储的公共信息数量的最大值。

(2)在每一轮共识前,方案根据共识节点的序号顺序选择一个节点生成区块。所选节点收集信息,形成一个新的块。当未上链的公共信息数量大于阈值m时,节点收集公共信息,形成新的块。当公共信息量小于阈值m时,节点收集一段时间内上传到云端的承诺,并计算其Merkle 根。共识节点使用得到的Merkle 根形成一个新的块。

(3)选定的节点生成新的区块后,该节点会将新生成的区块广播给其他共识节点。如果所选节点不能按时广播新块,则此轮共识将失败。方案将直接进入下一轮,重新选择共识节点。

图3 共识过程

共识节点收到该块后,对该块进行校验。如果投赞成票的节点超过2/3 时,则验证通过,区块上链;否则该块将被丢弃,直接进入下一轮。共识过程如图3 所示。通过将数据存储在区块链中,可以有效地保护数据的真实性。在发生纠纷或数据遭到篡改时,可以通过追溯区块链中的数据进行仲裁。

3 安全性分析

3.1 隐私计算安全性分析

隐私计算存在参与计算的节点合谋攻击以获取某一用户的隐私信息。假定合谋攻击是为了获取节点Pi的集合信息。由于Pi将其生成的应答向量Ri进行了拆分并发送给不同的计算参与方,攻击者无法确定他们是否接收到了所有的份额,因此,攻击者无法获取到编码向量Ri。当除被攻击者Pi外,其余节点均参与了合谋攻击,此时攻击者可能推测出Pi更多的信息。但此时绝大部分节点皆为恶意节点,分布式网络已无法正常运行。因此,只要保证至少有两个诚实的参与者,协议的安全性就可以得到保证。

3.2 隐私数据安全性分析

为了确保参与者不会篡改自己的出行数据,需要实时收集数据并上传更新。实时上传数据可能会导致隐私泄露:通过检测数据是否正在上传,每个人都可以推测出该用户是否在移动。为了保护用户隐私,移动设备收集行程数据,并在生成承诺后定期上传至云平台。如果用户的行程信息没有发生变化,移动设备将重新生成承诺进行上传。由于每次生成的承诺所选择的r是不同的,即使行程没有发生变化,生成的承诺也是不同的。因此,攻击者无法通过上传的承诺获取到任何信息。

为了保证数据的真实性,该方案将采集到数据的Merkle 根存储在区块链中,以防止恶意用户对数据进行篡改。当攻击者尝试对存储到云平台的数据进行篡改时,通过存储到区块链中的Merkle 根可以快速发现被篡改的数据。一旦Merkle 根被记录到区块链中,将无法修改承诺信息。

信息处理过程是由云平台完成的,当云平台被攻击者控制,攻击者将尝试利用云平台获取用户的隐私信息。由于移动设备上传到云中的向量是混淆后的信息,云平台无法通过上传的向量获取到任何用户的隐私信息。当云平台完成信息处理后,由于攻击者无法获取管理员的密钥,无法对计算结果进行解密,除了管理员公布的信息,攻击者无法获取更多的信息。因此,信息处理过程是安全的。

4 性能分析

本文提出了一种基于区块链的传染病风险管理方案,方案采用隐私集合运算的方法实现风险区域管理。文献[18]通过向量与同态加密算法实现了隐私集合计算。文献[19]通过布谷鸟哈希与同态加密算法实现了隐私集合求交。通过与当前主流的隐私集合运算方法进行比较,来分析本文设计的隐私集合运算的效率。

本文利用Python 语言对隐私集合计算过程进行模拟。在传染病风险管理方案中,影响计算开销的主要因素包括全集元素的个数以及参与计算的节点个数。当参与计算的节点数量一定时(设定为20 个参与者),执行一次计算所用的时间与全集元素个数的关系如表1 所示。

表1 计算时间与元素个数的关系(ms)

当全集元素的个数一定时(设定为50 个),执行一次计算所用的时间与参与计算的节点数量之间的关系如表2 所示。

表2 计算时间与节点个数的关系(ms)

在隐私集合计算中,计算开销最大的是同态加密算法的加密过程。文献[18]与文献[19]中需要执行大量的加密运算,这大大增加了隐私计算的时间开销。尤其是当参与计算的节点中存在大量的轻量级节点时,文献[18]与文献[19]中的隐私计算方法无法有效执行。由表1 以及表2 可以看出,相较于当前主流的隐私集合计算方法,本文提出的算法可以大幅降低隐私计算的开销,适用于轻量级节点执行。

5 结论

本文介绍了在疫情期间应用的风险防控策略所面临的安全性以及应用性问题,并根据上述问题设计了一种基于区块链技术的适用于轻量级节点的传染病风险管理方案。利用区块链技术有效保护了用户隐私安全,并结合隐私集合计算技术,在保护隐私数据不被泄露的同时降低了方案的计算开销。最后,通过实验验证了本文提出的方案适用于轻量级节点参与的传染病风险管理。

猜你喜欢

攻击者管理员向量
向量的分解
我是小小午餐管理员
机动能力受限的目标-攻击-防御定性微分对策
聚焦“向量与三角”创新题
我是图书管理员
我是图书管理员
可疑的管理员
正面迎接批判
向量垂直在解析几何中的应用
向量五种“变身” 玩转圆锥曲线