基于区块链的轻量级物联网医疗数据访问控制方案
2024-02-26李嘉豪李冬梅张晓梅
李嘉豪,李冬梅,2,张晓梅
(1.上海工程技术大学 电子电气工程学院,上海 201620;2.上海市信息安全综合管理技术研究重点实验室,上海 200240)
0 引 言
近十几年来,物联网技术在全球各地迅猛发展,数百亿台物联网设备已经走进人们的生活[1]。许多行业[2-3]融合物联网技术云计算,人工智能等其他新兴技术实现了行业的自我升级。医疗行业就是其中之一[4],智慧医疗正在取代传统依赖人力和纸张的传统医疗模式给医生和患者带来了极大的便利,无接触式的智慧医疗可以有效地降低传染的可能性[5]。但是随着智慧医疗系统的广泛应用,保护庞大的医疗数据安全,确保患者个人隐私免遭泄露成为了重中之重。许多学者针对此领域提出了许多方案,Hamid等[6]提出了一种利用雾计算与基于配对的加密方法来保护储存在云服务器中的医疗数据。文献[7]构造了一种轻量级的同态加密算法和改进数据加密标准(data encryption standard,DES)算法来保护在物联网智慧医疗系统中的患者数据安全。Xia等[8]结合区块链技术提出了MeDShare平台,通过智能合约提供访问控制,防止患者数据被恶意篡改。文献[9]利用改进的同态加密算法结合MapReduce安全多方计算模型,无须依赖第三方可信任机构,提供了高效安全的数据安全共享。但是以上方案仍然存在一些缺陷。例如,访问控制不灵活,加密后难以添加或删除用户访问权限或者每次访问数据都需向服务器发送请求;系统中心化,需要可信任中心参与系统运作过程中,容易发生单点故障以及遭受攻击泄露用户隐私;加密效率较低,计算开销过大,无法满足物联网设备低延迟的要求以及计算能力较低的限制。
属性基加密[10-11]可以在对数据加密的同时实现灵活的细粒度访问控制。但是传统属性基加密方案中单一的属性中心不能满足云计算中多个不同操作域的环境要求,因此,Chase等[12]提出了第一个多中心属性基加密方案,由多个属性中心根据用户的属性集合共同为用户生成解密密钥。随后,Liu等[13]提出一种支持属性撤销以及访问策略更新的多中心属性基加密方案;Sandor等[14]提出了一种解决密钥托管问题,方案无须信任的中心机构去参与系统参数与用户密钥生成;Sethi等[15]提出了一种在大属性空间上可实际应用的具有可追踪和访问控制策略更新的多授权中心属性基加密方案,可以不用存储身份列表的情况下确认泄露密钥的恶意用户身份。文献[16]利用加密密钥树实现动态用户撤销以及利用雾节点减少用户计算负担。于金霞等[17]提出了一种基于R-LWE假设的支持树形访问结构的属性基加密方案。但是在以上多中心属性基加密方案中,属性空间被分为多个较小的属性集合,每个属性中心负责管理一组属性集合,任意属性中心故障仍然会导致系统无法运行。另外,物联网设备的计算资源十分有限,无法直接应用属性基加密方案。基于以上问题,本文结合智慧医疗系统的特点以及要求,提出了一种基于区块链的多中心属性基加密(multi-authority attribute-based encryption,MA-ABE)方案,方案的主要贡献如下。
1)针对以往医疗系统中访问控制方案存在的问题,本文提出了一种改进的多中心属性基加密方案。患者利用对称加密算法对自身医疗数据加密,上传至IPFS,获得访问路径,然后对访问路径以及对称密钥进行属性基加密,发布记录在区块链中。只有当医生的属性集合满足访问策略的情况下才能获取访问路径得到患者数据,从而进行诊断。数据的上传与下载操作都会记录在区块链中,保证了系统的安全透明。
2)由于物联网医疗设备计算资源有限,无法独立完成属性基加密所要进行的双线性配对的计算工作。本文在系统中引入雾节点,在加密和解密阶段,大多数计算工作都由雾节点协作完成,从而减少了用户的计算负担。
3)利用区块链中的智能合约和Shamir秘密分享方案协助不同属性中心生成完整属性公钥,只需要收集到的子属性公钥数量大于设定门限,便仍可以正常对属性进行管理,避免了单点故障,同时无须第三方可信任机构。
4)我们对提出方案进了安全性分析,还利用JPBC库实际搭建提出的加密方案并与其他方案进行比较,最终结果表明,本文提出的系统是高效的,安全的。
1 相关知识
1.1 Shamir秘密分享
Shamir秘密分享方案为假设一共有n位参与者,秘密s被分给n位参与者,只有在至少拥有k个秘密份额时才能重构秘密s,但是如果只拥有k-1个秘密份额便无法重构秘密s。具体方法如下。
1)选取维度为k-1的随机多项式f(x)=ak-1xk-1+…+a2x2+a1x+a0。其中,ak-1,ak-2,…,a1∈zp,并且,令f(0)=s。计算秘密份额f(xi)后发送给参与者。
1.2 双线性配对
设G和GT是阶为大素数p的乘法循环群,定义g为乘法循环群G的群生成元,双线性映射e:G×G→GT。满足以下性质。
①双线性:对于∀g∈G,α,β∈ZP,有e(gα,gβ)=e(g,g)αβ;
②非退化性:e(gα,gβ)≠1GT;
③可计算性:对于∀g∈G,可以有效计算e(g,g)。
2 本文方案
2.1 方案模型
本文提出的基于区块链的访问控制系统模型如图1所示,系统模型由5个实体组成。
1)Patient(患者)。患者首先使用对称加密算法加密数据,上传加密数据至IPFS,获得访问路径。然后制定访问控制策略,在雾节点的帮助下对对称密钥以及路径进行属性基加密。最后将密文,访问策略,密文哈希值,时间戳以及用户ID作为记录上传至区块链中。
2)Doctor(医生)。若医生属性集合符合患者制定的访问控制策略,医生可以在雾节点的协助下解密得到存储路径,然后将密文自身属性集合,密文哈希值,时间戳以及用户ID作为记录上传至区块链中。最后再从IPFS中下载加密数据,然后解密获得患者数据。
3)FN(雾节点)。在加密与解密阶段,负责帮助计算能力有限的用户承担外包计算任务。
4)IPFS(星际文件系统)。用于存储用户上传的加密数据,返回哈希字符串作为存储文件的唯一访问路径。
5)AA(属性中心)。初始化阶段,负责生成属性子令牌。密钥生成阶段,各个属性中心根据用户属性集,为用户生成属性密钥构件。
6)BC(区块链)。负责收集来自各个属性中心的属性子令牌,生成完整的属性令牌;存储系统参数和用户公钥以及收集用户属性密钥构件生成完整的用户属性密钥,具体过程如图2所示。
图2 用户属性密钥生成流程Fig.2 Processing of user attribute key generation
2.2 加密方案构造
本文提出了一种改进的多中心属性基加密方案,为患者和医生提供安全细粒度的数据共享,其中患者作为数据拥有者(DO),医生作为数据使用者(DU),系统主要参数符合含义如表1所示,具体方案如下。
表1 系统的主要参数
2.2.1 初始化阶段
1)全局公共参数生成。输入安全参数1λ作为输入,选取2个阶为大素数偏p的乘法循环群G和GT,定义g为乘法循环群G的群生成元,双线性映射e:G×G→GT,单向哈希函数H:{0,1}*→G。每个属性ω∈U由kω个AA共同联合管理,只需nω个AA正常运转,便仍能管理该属性。
3)用户初始化。对所有系统用户, 先选取一个随机数usk∈ZP,然后计算用户公钥upk=gusk,用户秘密保存usk作为私钥并发送upk至区块链以完成注册。
2.2.2 加密阶段
1)FN加密。FN首先选取随机数s,r1,…,rl∈zp,以及2个随机向量z=(0,z1,…,zn)T和v=(s,v1,…,vn)T。FN随后由此计算λi=Miv和wi=Miz(i=1,2…,l),ρ(i)为映射函数。计算CT1={C1,x=e(g,g)λx·e(g,g)αρ(x)rx,C2,x=grx,C3,x=gwi·gβρ(x)rx}x∈[l],将密文CT1发送给DO。
2)DO加密。DO选取一个随机数DK∈ZP, 然后DK作为对称密钥加密文件m,计算C=SEDK(m),C0=DK·e(g,g)s。通过FN上传C和C0至IPFS,得到访问路径L,计算C1=L·e(g,g)s。最终DO生成完整密文CT=(A,C1,CT1),DO把密文CT发送给FN, FN再将接收到的密文CT和密文的哈希值,用户ID以及时间戳作为上传记录发布到区块链中。
2.2.3 用户密钥生成阶段
对于属性ω∈Suid,每一个AAi使用askαω.i和askβω.i为用户uid计算AKi.ω,uid=upkaskαω,iH(uid)askβω,i,然后将AKi.ω,uid发送至System合约。当收集到nω个属性令牌时,System合约生成用户属性密钥:AKω,uid=(upkaskαω,iH(uid)askβω,i)Li=upkαωH(uid)βω。
2.2.4 解密阶段
2)DU解密。数据使用者首先结合用户私钥usk计算:CU=B·E1/usk=e(g,g)s,然后计算C0/C1=Le(g,g)s/e(g,g)s=L,最后从IPFS中下载加密数据使用对称解密算法得到数据m。
3 方案分析
3.1 正确性分析
在解密阶段,若用户属性集合满足访问结构,正确性分析如下。
(1)
(2)
3.2 安全性分析
3.2.1 防共谋攻击
在所提出的方案中,每个用户都拥有一个独特的全局用户标识uid,用户的属性密钥与其全局用户标识相关联。如果系统内部用户A想要与另一个用户B分享属性私钥进行共谋攻击,他们无法将他们的属性私钥H(uidA)βω和H(uidB)βω相结合,因为用户A与用户B的全局用户标识不相同,从而防止拥有不同用户标识的2个用户通过分享私钥共谋获利。
3.2.2 保密性
在本文提出的方案中,用户文件存储在IPFS系统中,只有得到文件的路径才能下载文件。在生成用户属性私钥的过程中,用户的属性私钥与用户所提交的公钥upk相关联,即upkαωH(uid)βω。所以即使一些属性中心被攻破,如果没有用户私钥usk也无法成功解密密文。
3.2.3 防篡改
本文所提出的方案引入区块链平台,在系统中协助运行不同属性中心进行系统初始化以及用户属性密钥生成的同时,系统会将文件在加密上传阶段和下载解密阶段时的记录都存证上链,由于区块链的特点,文件的访问记录无法被篡改并且可以进行追溯。
3.2.4 安全性证明
定理1只要q-BDHE问题是困难的,我们提出的方案就是安全的。即如果存在一个敌手可以在多项式时间内以不可忽略的优势ε=AdvA攻破本方案,就存在一个敌手可以在多项式时间内以ε/2的优势成功攻破判定性q-BDHE问题。
证明给定判定性q-PBDHE问题的一组实例(y,T) ,构建一个q-BDHE挑战者C难以区分T=e(g,g)saq+1和T=R∈G,具体方法说明如下。
4)询问阶段2。重复密钥查询第1阶段。
3.3 性能分析
本实验环境为一台操作系统为Windows的个人计算机,配置有Intel i5-9300H 2.4 GHz和8 GB内存。实验方案由基于JAVA语言的配对密码开源库搭建完成,使用椭圆曲线参数为基于曲线y=x3+x的80比特椭圆曲线群,有限域大小为256比特。与本文方案进行比较的方案为文献[18-20],文献[18]提出了一种抗用户合谋的CP-ABE方案。文献[19]提出了一种云雾模型中的属性基加密方案,文献[20]同样提出了一种区块链技术与属性基加密相结合的访问控制方案,将比较4个不同方案在加密与解密阶段中的计算开销。在我们搭建的仿真实验中,属性中心的个数为5个,共同管理的属性个数为5至25个,实验结果是取重复进行50轮实验的平均值,各比较方案的功能性比较如表2所示。
表2 方案功能性比较
图3,图4分别展示的是本方案与文献[18-20]在明文加密阶段中系统总计算时间与数据拥有者计算时间随访问策略中的属性个数增加的关系,本方案在明文加密阶段中总计算时间随属性个数呈线性增长,总计算时间小于文献[18-19],略小于文献[20]。但是文献[20]中加密阶段的计算开销都由DO完成,而在本方案中大部分计算开销由雾节点承担,DO的计算负担仅为常数级,远远小于文献[18,20]中的总开销。图5, 图6分别展示的是各方案在密文解密阶段中系统运行总计算时间以及数据使用者计算时间随访问策略中的属性个数增加的关系,与加密阶段相同,DU的计算开销远远小于文献[18,20]中DU的计算开销。文献[19]虽然与本方案计算时间接近,但是,其方案需要第三方可信机构并且存在单点故障问题。实验结果表明,在保证安全性的情况下,本方案结合区块链提供了细粒度的访问控制,解决了单点故障,并且极大地减轻了用户的计算负担。
图3 加密阶段中各方案总计算开销比较Fig.3 Comparison of total encryption cost of each scheme
图4 加密阶段中各方案DO计算开销比较Fig.4 Comparison of DO’s encryption cost of each scheme
图5 解密阶段中各方案总计算开销比较Fig.5 Comparison of total decryption cost of each scheme
图6 解密阶段中各方案DU计算开销比较Fig.6 Comparison of DU′s encryption cost of each scheme
4 结束语
本文针对智慧医疗系统的特点以及以往访问控制方案中的中心化,效率低等问题,提出了一种基于区块链的多中心属性基加密方案。利用智能合约和shamir秘密分享方案协助不同属性中心生成完整属性令牌,只需要收集到属性子令牌的数量大于设定门限,便仍可以正常对属性进行管理,避免了单点故障。针对物联网设备计算资源有限,无法直接应用属性基加密的问题,本文在系统中引入雾节点,在加密和解密阶段,大多数计算工作都由雾节点协作完成,从而减少了用户的计算负担。通过安全性分析与实验仿真比较表明,本方案在安全的情况下,为用户提供了隐私保护和细粒度的访问控制,同时减去了用户的计算负担。