曹 萌,余孙婕,曾 辉,史红周
(1.移动计算与新型终端北京市重点实验室(中国科学院计算技术研究所),北京 100190;2.中国科学院大学 计算机科学与技术学院,北京 100049)
医疗信息化作为实现智慧医疗的必由之路,是医疗行业发展的必然趋势,也是我国医疗改革的重要方向[1]。区域医疗信息共享作为医疗信息化发展的总体趋势[2],打破了传统医疗行业相对封闭的使用环境,使医疗数据的收集和使用更加便捷、迅速的同时,也带来了新的安全隐患,例如医疗数据泄露[3-4]、勒索攻击[5]等。医疗数据安全关乎个人隐私和社会福祉。
区块链具有去中心化、高信任、可追溯、不可篡改等特性,能满足复杂医疗场景下的安全可信需求[6]。区块链技术通过跟踪数据使用情况实现个人对数据的控制权,能为构建用户之间的互信关系提供解决方案。随着区块链技术在各行业的广泛应用以及被认同度的提升,医疗领域的数据共享方案也开始尝试采用区块链技术[7-10]。例如,我国首个基于区块链的医疗数据共享应用[11]就是由阿里健康与江苏省常州市合作提出的。该应用以区块链技术为医疗信息化系统的底层架构,使常州市部分医疗机构之间能够共享患者的电子病历。借助区块链技术,个人能够通过瑞士Healthbank[12]实现医疗系统中的事务处理,并通过终端设备的链接直接掌握及共享自己的健康信息。个人能够使用隐私管理器(Privacy Policy Manager,PPM)[13]实现数据共享,并且能够通过隐私偏好设置来限制医院某些数据请求行为。而且在PPM 中,医院所有不符合个人隐私设置的数据请求均需要得到数据所有者的审核后才能被通过,对于被数据所有者同意使用的数据,医院必须对数据进行匿名处理得到符合平台共享规则的匿名数据集,并对该数据集进行哈希处理,哈希值作为数据集的ID 回送给PPM。这样就确保了数据所有者能够全面了解所有共享出去的数据的使用情况。由于区块链的公开透明和不可篡改特性,由区块链记录的数据集使用和传递情况能够被有效地验证和安全存储,从而为用户提供了可信赖的数据追踪服务。上述过程如图1 所示。
图1 基于区块链的数据共享过程Fig.1 Blockchain-based data sharing process
MedRec 系统[14]作为一个基于区块链的分散式记录管理系统,其内部区块存储数据的访问权限,数据请求者必须先从区块链中获取数据访问权限后才能访问特定数据。该系统将数据访问权限的聚合作为区块链中的激励机制,鼓励各方机构参与构建区块链。区块链技术能够提高共享方之间的信任,在现阶段的医疗数据共享模式中逐渐成了共识。利用区块链的去中性化和不可篡改特性,数据提供者可将其作为数据使用日志的工具。
访问控制技术是保障数据安全的重中之重[15],它能够限制或制止未经授权的数据访问行为。基于密码学原理实现的访问控制技术能够保证数据共享过程中的安全,其中常用的加密算法包括对称加密、非对称加密、基于身份加密(Identity-Based Encryption,IBE)以及基 于属性加密(Attribute-Based Encryption,ABE)等。
对称加密在数据共享中的应用受制于两个因素:第一,为了数据安全性,数据共享方之间必须要有解密密钥才能获取数据明文;第二,密钥数随数据共享双方的组合数呈指数增长,大量的密钥伴随着复杂的管理。因此对称加密会使得共享过程过于复杂。非对称加密方式用公钥加密数据,用私钥解密数据。例如,在杨茂江[16]提出的医疗数据共享方案中,数据请求者初次数据请求通过后,将自己的公钥交由数据所有者进行数据加密,而后收到由自身公钥加密的加密数据,请求者用自己的私钥即可解密数据;在Yue 等[17]提出的共享医疗数据系统中,数据直接存储在私有区块链中,当数据请求发生时,数据提供者提取并加密数据,然后将加密数据和密钥一并发送给对方。随着医疗数据的日益增长,非对称加密的计算开销也会变得非常高[18],每次共享都伴随巨大的计算开销。对于基于属性的加密算法[19],属性即用户特征,例如年龄、性别、职业等,属性组合即可表示用户身份,再利用任意门限组合连接属性构成访问策略。属性加密算法通常将允许访问数据的用户属性(或访问策略)嵌入到密文(或密钥)中,只有满足访问策略的特定用户属性能够解密数据,由此可以看出,该类算法自然地支持一对多的数据安全共享。而且为了防止用户之间的合谋攻击,属性加密算法将用户密钥与随机数相关联。
由于上述优势,基于属性的加密算法在医疗共享方案有广泛的应用。Wei 等[20]提出在个人电子病历中使用基于属性加密算法实现细粒度的访问控制,在保证了数据在云存储中的安全性的同时,还利用基于属性加密算法加入密文更新功能和用户撤销机制,增强了数据访问控制的灵活和安全性。在Riad 等[21]提出的基于云的物联网医疗系统中,使用结合了基于属性的访问控制(Attribute-Based Access Control,ABAC)和云存储技术的访问控制机制SE-AC(Sensitive and Energetic Access Control),并且其中的托管域承担数据中转处理的任务,医疗数据提交到云存储之前,需要在此处进行基于属性的加密算法的加密处理,对数据的请求也会转发至托管域,待其验证过身份信息后,用户可以通过收到的属性等信息解密数据。Pournaghi 等[22]提出的MedSBA 方案中,使用基于属性的加密在不同策略下进行细粒度的访问控制,并且通过私有和公有区块链技术分配访问级别,保证了数据的安全性。基于属性的加密算法依然存在访问控制难、计算复杂度高、存在密钥托管等缺点[23-25]。另外,医疗数据的属性存在不同的敏感区度,如姓名、电话号码、身份证号码等高敏感度的属性如果泄露将会造成重大影响,而个人的一些诊断结果、报告等数据的泄露相对来说影响较小。而且不同机构的需求对数据属性的敏感度区分也不一致,例如个体的家族史、年龄等敏感数据可以作为预测致癌率研究的关注对象,而地区等低敏感数据可以作为传染病传播模型的研究对象。由此,为了满足医疗数据共享的灵活性需求,为不同敏感度的属性制定不同的访问控制策略是非常必要的。
本文提出了一种基于区块链技术的医疗数据分级访问控制和共享系统。采用医疗数据区块链上链下存储相结合的共享模式解决区块链数据存储昂贵的问题,其中链下存储原始医疗数据,链上存储数据描述和数据共享日志,区块链的不可篡改特性提高了方案的可行性。如上文所述,通过对医疗数据的属性按敏感性不同进行分级,以满足医疗数据共享的灵活性需求,同时利用访问控制树、对称加密和基于属性的加密相结合的方法减少加密开销,还实现了医疗数据的细粒度访问控制。另外使用密钥生成中心(Key Generation Center,KGC)和属性验证中心(Attribute Validation Center,AVC)生成用户密钥。本文最后分析了该系统的性能和安全性,验证了本文方案在医疗数据共享中的安全性。
区块链提供了一种去中心化的分布式数据系统。参与系统的可信或半可信节点通过共识机制共同维护一条不断增长的链,发生过的记录均不可篡改,共识过程无需集中控制,通过Hash、数字证书、签名等密码学机制确保记录无法被伪造或破坏。因此,区块链天然具备去中心化、高可信、可追溯、不可篡改等优势。区块链按是否具有访问和管理权限可分为无许可区块链和许可区块链。无许可区块链的每个参与者均可以参与区块链的交易和数据共识过程,例如以太坊等;许可区块链为封闭网络,仅允许具有高信任度的节点来验证交易,只对特定的群体开放,例如超级账本(Hyperledger Fabric)等。传统的共识机制,例如工作量证明(Proof-of-Work,PoW)、权益证明(Proof-of-Stake,PoS)等,需要经过多个区块生成后才能确认,不可避免地存在效率低下的问题。以Hyperledger Fabric 为代表的许可区块链选择确认时间相对固定的实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)[26]算法解决快速确认问题,提高共识效率。同时,许可区块链存在参与方的部分信任基础,性能更优;采用高性能节点作为核心节点,减弱每个节点都参与完整处理的制约,扩展性更优;用户准入和交易活动受到限制,稳定性更优;可根据不同需求进行模块化的定制,灵活性更优。因此,许可区块链更符合医疗数据共享需求。
基于属性的加密算法主要分为密钥策略属性基加密(Key-Policy Attribute-Based Encryption,KP-ABE)[27-28]和密文策略属 性基加 密(Ciphertext-Policy Attribute-Based Encryption,CP-ABE)[29-30]两种。KP-ABE 和CP-ABE 基本结构如图2 所示:KP-ABE 中,密文中含有用户属性信息,如果用户的密钥访问策略与属性相匹配,用户可以解密密文;在CP-ABE 中,用户密钥含有用户属性信息,密文含有一个访问结构,如果用户密钥的属性信息满足密文中的访问策略,就可以解密密文。
图2 KP-ABE和CP-ABE基本结构Fig.2 Basic structures of KP-ABE and CP-ABE
KP-ABE 给出了一个用户可以访问哪些信息的方案,而CP-ABE 给出了哪个用户可以读取密文的方案。在医疗数据共享的实际场景中,存在大量的信息需要共享给他人,这与CP-ABE 提出的方案更加契合。以下是CP-ABE 算法的四个步骤:
1)Setup(k):通过安全参数k,生成系统公钥PK和主密钥MK。
2)Encrypt(PK,M,τ):首先,将访问控制策略转化为访问控制树结构τ,如图3 所示,结构树中的att(x)是x节点表示的属性,iofj意味着访问者必须满足该节点下j个属性中要有i个属性才能访问该节点中的秘密。然后,利用访问结构τ对明文M加密,得到密文CT。
图3 CP-ABE访问控制树结构Fig.3 CP-ABE access control tree structure
3)KenGen(MK,S):从数据请求者的属性集合S生成密钥SK。
4)Decrypt(PK,CT,SK):利用公开参数PK和自身密钥SK递归计算访问控制树,解密密文CT,得到明文M。
本文设计基于许可区块链的医疗数据共享系统架构如图4 所示,包括核心层、服务层和应用层。
图4 数据共享系统架构Fig.4 Architecture of data sharing system
1)核心层:负责许可区块链的底层运行,为数据共享服务提供核心支撑。各功能由许可区块链提供,包括智能合约、共识机制、区块同步、账本管理、交易验证和背书策略等模块。
2)服务层:负责实现数据共享平台的各服务,包括区块链模块和加密模块。区块链模块基于核心层开发,包括组织管理模块和链码模块。其中:组织管理模块负责管理数据共享的各参与方,并为它创建共享通道;链码模块负责智能合约的创建、部署和执行,是数据共享可信执行的基础保障。加密模块负责实现密文策略属性基分级加密(Ciphertext-Policy Attribute-Based Hierarchical Encryption,CP-ABHE)算法(2.3.2 节),保证CP-ABHE 算法在各环节的稳定执行。
3)应用层:封装数据共享平台提供的各服务,使用户可以通过HTTP 接口的方式调用所需要的数据共享服务,为用户使用提供便利。
本文使用智能合约制定共享规则,智能合约内容公开透明且不可篡改,在满足对应条件时能够自动执行。同时,借助区块链存储数据共享记录,通过区块链本身的可审计性保障数据共享记录的可信性。但是,区块链存储成本较高,若将大量医疗数据存储在区块链,不仅会大幅影响区块链性能,且一旦密钥泄露,数据安全将无法得到保证。因此,本文选择将医疗数据存储在各机构的数据库中,在此基础上通过分级访问控制算法实现机构对数据的控制。本文提出的数据共享模型如图5 所示,包括个人、机构、数据使用者和共享平台。其中,共享平台为个人、机构和数据使用者提供数据共享服务。
图5 医疗数据共享模型Fig.5 Medical data sharing model
1)数据产生:个人参与日常活动会产生大量医疗数据,如医院就诊、体检、使用便携式医疗设备等。在经过个人同意的前提下,机构将会对这些数据进行采集、清洗和处理。
2)数据存储:机构根据本文2.3.1 节提出的数据分级标准对数据进行分级,并依据访问控制策略,使用本文2.3.2节提出的CP-ABHE 算法的加密方法对数据进行加密并存储。
3)数据注册:机构将数据信息(包括数据描述、加密密钥、机构信息、相关个人、访问控制策略和数据地址等)上传至数据共享平台,并将数据信息存储至区块链上。
4)密钥申请:使用者可以根据自身属性向数据共享平台申请密钥,属性授权机构验证其身份后,使用CP-ABHE 算法的密钥生成方法生成对应密钥,并向使用者发送。
5)数据请求:使用者在共享平台检索数据,向平台发送数据请求,平台收到请求后向使用者返回数据信息。
6)数据发送:使用者收到数据信息后,根据数据地址获取密文数据,使用CP-ABHE 算法的解密方法解密密文。
7)使用日志查询:共享参与方可以通过向共享平台发送请求来查询数据使用情况。
2.3.1 医疗数据分级标准
医疗数据的组成结构复杂多样,不仅包含患者的身份信息和检查数据,也包括医生的诊断记录。针对不同来源、不同敏感程度的数据,所应用的访问控制策略也应该不同。因此,为实现医疗数据的高灵活性隐私保护,本文按照《健康医疗数据安全指南》的风险级别和重要程度,将医疗数据分为以下三个等级:高敏感、中敏感和低敏感。其中,高敏感数据不参与数据共享活动,不同级别的数据可以执行不同的访问控制策略。具体的医疗数据分级标准如下:
1)高敏感数据:可以标识个人身份的信息或暴露后会给患者造成重大影响的信息,如姓名、电话、身份证号、地址、生物识别(指纹、视网膜、声音、基因等)、照片、信仰等。
2)中敏感数据:不能标识个人身份的信息且模糊化后仍有重要医学意义的数据,可以保留模糊后的结果,如年龄、地区、家族史、婚姻生育史等。
3)低敏感数据:其他医疗数据,如年龄范围、性别、疾病、主诉、药品、生活习惯、诊断结果、手术记录、检查报告等。
同时为实现医疗数据的访问控制,需要依据数据使用者身份信息对其进行划分,包括使用者的类型和使用者的专业等级。使用者属性集合如表1 所示。其中使用者的类型包括:研究机构(Research-Institute)、保险公司(Insurance-Company)、医院(Hospital)和个人(Person),反映使用者的身份类型。使用者的专业等级从高到低分为A、B、C 三类,反映使用者的资质信息,不同的使用者类型应用不同的专业等级分类标准,例如:一级医院、二级医院、三级医院对应医院(Hospital)使用方的A、B、C 三类专业等级。
表1 使用者属性集合Tab.1 Collection of user attributes
每个使用者应同时包含使用者类型和使用者专业等级两方面属性,且不得包含多个使用者类型属性或多个使用者专业等级属性,例如,三级医院使用者属性集合为S={Hospital,A}。使用门限值连接使用者属性集合构成医疗数据的访问策略,例如,仅允许A 级医院或A 级保险公司访问的医疗数据访问控制策略表示为τ=“Hospital Insurance-Company 1 of 2 A 2 of 2”。
2.3.2 CP-ABHE算法
传统的分级数据属性加密策略针对中敏感数据M1和低敏感数据M2的两种不同的访问策略τ1和τ2需要使用两次CP-ABE 算法,计算开销较大。但在实际应用中,中敏感数据与低敏感数据的访问策略往往存在依赖关系,即中敏感数据的访问策略包含低敏感数据的访问策略要求。例如,低敏感数据访问策略为τ=“Hospital Insurance-Company 1 of 2”,即所有医院和保险公司均可访问,如图6(a);中敏感数据的访问策略为τ=“Hospital Insurance-Company 1 of 2 A 2 of 2”,即仅A 类的医院和保险公司可以访问,如图6(b)。
图6 访问控制树转换示意图Fig.6 Schematic diagram of access control tree transformation
考虑到中敏感数据与低敏感数据访问策略间的依赖关系,本文合并中敏感数据和低敏感数据的访问控制树,合并策略为将低敏感数据的访问控制树整体作为访问控制树根节点的左孩子,并将中敏感数据访问控制策略的附加条件作为访问控制树根节点的右孩子,根节点使用2 of 2 连接,如图6(c)。访问控制树的叶子节点数量与传统方案相比减少约50%,同时,考虑叶子节点的椭圆曲线群幂运算比中间节点的有限域运算复杂度更高,该方案可以有效降低计算开销。
与此同时,考虑当原始数据较大时,对明文数据直接进行属性加解密存在较大的计算开销。因此,本文联合对称加密方案,用对对称加密密钥的属性加解密取代对明文数据的属性加解密过程,当数据量较大时,将有效减少加、解密时间。
此外,CP-ABE 算法中的第三方机构属性授权机构可以获取任意用户密钥,若属性授权机构遭受攻击,数据的安全性将遭到破坏。因此,本文使用属性验证中心和密钥生成中心共同生成用户密钥,第三方机构均无法单独获取用户密钥。
CP-ABHE 访问控制算法具体设计如下:
1)Setup(k):输入安全参数k,生成一个阶为素数p,生成元为g的双线性群G0和一个双线性映射e:G0×G0→G1。
①生成全局公钥:
②属性验证中心随机选取α∈Zp,生成公钥和主密钥:
③密钥生成中心随机选取β∈Zp,生成公钥和主密钥:
最终得到系统公钥:
2)Encrypt(PK,Mmedium,Mlow,τ):对明 文Mmedium、Mlow在访问结构τ下加密,输出密文CT。加密过程如下:
①生成访问控制树:和CP-ABE 算法相同。
②递归计算访问控制树:为每一个节点x选择一个多项式qx,多项式qx的度dx比该节点的门限值kx少1,即dx=kx-1。从根节点xmedium开始选择随机数smedium∈Zp,为根节点生成多项式为qmedium,设置qmedium(0)=smedium,为根节点的左孩子节 点xlow生成多 项式为qlow,设 置qlow(0)=slow=qmedium(index(xlow)),对于其他节点x,选取多项式qx,令qx(0)=qparent(x)(index(x)),parent(x)为节点x的父亲节点,随机选取dx个点来完全定义qx。
③对称加密:随机生成mmedium,mlow∈G1,作为AES 对称加密密钥对mmedium和mlow加密得到密文:
④计算密文:设访问结构τ中所有叶子节点集合为Y,则明文Mmedium、Mlow在访问结构τ下的密文为:
3)KenGen(MK,S,K):为属性集合S生成密钥SK。
①用户选择随机数x∈Zp,计算gx,将(S,K=gx)发送给属性认证中心。
②属性认证中心选择随机数r∈Zp,计算D″=Kα+r=gx·(α+r),将D″发送给密钥生成中心。对于每一个j∈S选择随机数rj∈Zp,计算SK1,将SK1返回给用户。
③密钥生成中心计算D'=(D″)1/β=gx·(α+r)β,并将D'发送给用户。
④用户计算D=(D')1/x=g(α+r)β,得到密钥:
4)Decrypt(PK,CT,SK):使用公开参数PK和密钥SK将CT解密为明文Mmedium、Mlow。
①递归计算访问控制树:和CP-ABE 算法相同。
②计算明文:
计算中敏感明文:
同理,计算低敏感明文:
Bethencourt 等[29]在DBDH(Decisional Bilinear Diffie-Hellman)假设下证明了CP-ABE 的安全性,AES 对称加密算法作为美国联邦政府采用的一种对称加密标准,安全性获得认可。本文提出的CP-ABHE 算法基于CP-ABE 算法实现,并结合了AES 对称加密算法,算法安全性不低于CP-ABE 算法和AES 对称加密算法,下面给出证明。
定义1CP-ABE 算法安全,且AES 对称加密算法安全。
定理1本文提出的CP-ABHE 算法安全性不低于CPABE 算法和AES 对称加密算法。
证明 考虑CP-ABHE 算法的四个步骤:
1)Setup:CP-ABHE 公钥PK与CP-ABE 一致;主密钥MK拆分为两个部分由属性验证中心和密钥生成中心分别保管,并未降低系统安全性。
2)Encrypt:与CP-ABE 算法相比,CP-ABHE 属性加密的主体是AES 对称密钥,明文通过AES 对称密钥加密,而CPABE 算法属性加密的主体是明文。针对AES 对称密钥mmedium、mlow的属性加密过程,mmedium与CP-ABE 在访问结构τ下的加密过程一致,mlow与CP-ABE 在访问结构τ根节点左子树下的加密过程一致。
3)KenGen:CP-ABHE 的密钥SK1的生成过程与CP-ABE一致;SK2=(D=g(α+r)β)由属性认证中心、密钥生成中心和用户共同生成,基于离散对数求解的困难性,用户无法从已知的h=gβ,D'=gx·(α+r)β,K=gx中计算出主密钥gα、β,因此SK2的生成过程不会暴露主密钥,不会降低系统安全性。
4)Decrypt:与CP-ABE 算法相比,CP-ABHE 属性解密得到AES 对称密钥,明文通过AES 对称密钥解密得到,而CPABE 算法属性解密直接得到明文。AES 对称密钥mmedium,mlow的属性解密过程与CP-ABE 一致。
综上所述,CP-ABHE 算法四个步骤安全性均不低于CPABE 算法,且通过将加(解)密主体明文替换为AES 对称密钥,使CP-ABHE 的安全性不低于AES 对称加密算法。
定理2若用户只符合低敏感数据的访问策略,则无法访问中敏感数据。
证明 用户符合低敏感数据的访问策略,可以递归至根节点的左孩子xlow得到e(g,g)rslow;且由于用户不符合中敏感数据的访问策略,无法递归至根节点xmedium得到e(g,g)rsmedium。与此同时,生成的左、右孩子节点多项式值不相关,用户无法从slow=qlow(0)推断smedium=qmedium(0),即无法从e(g,g)rslow推断得到e(g,g)rsmedium。
定义2CP-ABE 可以抵御用户合谋攻击:如果多个用户串通,他们只有在至少一个用户能够自己解密的情况下才能解密密文[29]。
定理3CP-ABHE 可以抵御用户合谋攻击。
证明 CP-ABHE 与CP-ABE 一致,每个用户的密钥SK中包含属性认证中心生成的随机值,在计算叶子节点时,不同密钥中的Di包含的r∈Zp不同,无法合谋计算至根节点的左孩子得到或计算至根节点得到因此无法合谋解密低敏感或中敏感密文。
定理4CP-ABHE 解决权威单点攻击问题。
证明 由于离散对数属于困难性问题,属性验证中心无法从系统公钥h=gβ和密钥生成过程中获取的gx·(α+r)中获取主密钥β,而属性验证中心无法从e(g,g)α中获取主密钥gα。因此,属性验证中心和密钥生成中心无须完全可信,即使任意一方遭受攻击,仍然可以保证攻击者无法获得合法的密钥。
定理5CP-ABHE 可以抵御权威合谋攻击:即使多个权威机构串通也无法解密密文。
医疗数据中往往蕴含着患者大量敏感信息,一旦泄露,将会给患者带来巨大的负面影响。本文提出的医疗数据共享系统在数据生命周期的各个环节均能保证数据的安全性,包括数据存储、数据共享、数据访问。与此同时,区块链具有天然的不可篡改和可审计性,当各方针对共享数据的完整性和真实性产生怀疑时,区块链中记录的医疗数据共享过程可以提供可信的溯源追责。
1)数据存储:相关机构的数据库中存放的数据为经过对称加密后的数据,即使数据库遭受外部攻击后医疗数据被暴露,攻击者也无法从密文中获取任何信息。此外,共享的医疗数据不包含高敏感数据,无法直接识别个人。
2)数据共享:本文提出的医疗数据共享系统以区块链为基础,通过共识机制和加密算法来保障数据共享过程的安全性,去中心化的结构避免单点故障风险,为数据共享过程提供安全保障。
3)数据访问:医疗数据通过2.3 节提出的CP-ABHE 算法实现分级访问控制,本文3.1 节证明了该算法在满足访问控制需求前提下,具备安全性,可以抵御用户合谋攻击、权威单点攻击和权威合谋攻击。
本文方案使用Java 语言,基于JPBC 双线性映射库、Hyperledger Fabric SDK 实现。各节点均运行在同一物理服务器上,部署时使用Docker 虚拟化技术。实验环境配置如下:操作系统为Ubuntu16.04,64 位;CPU 为4 核(vCPU),内存16 GiB。
本文使用Hyperledger Fabric V1.4 许可区块链实现医疗数据共享系统,数据共享系统网络节点包括区块链各节点和属性授权机构各节点,节点架构如图7 所示。其中,区块链节点作为系统的底层核心,为数据共享服务提供支撑;属性授权机构节点为访问控制算法CP-ABHE 提供加解密支持;区块链网络中包含两个组织,即机构组织(Institution Org)和请求者组织(Requester Org),其中,机构组织对应数据共享中的数据收集者,请求者组织对应数据共享中的个人和使用者。
图7 系统网络节点架构Fig.7 Network node architecture of system
本文使用糖尿病并发症预警数据集[31]作为仿真系统的医疗健康数据集,该数据集是关于200 名糖尿病患者的健康数据,包括患者的性别、年龄、身高、体重、血压、心跳、血液检测结果等属性。
本文将Hyperledger Fabric 性能和规模工作组发布的白皮书中定义的主要性能评估关键指标作为系统性能评估指标,包括交易时延(Transaction Latency)和交易吞吐量(Transaction Throughput)[32],交易吞吐量表示为每秒事务数(Transactions Per Second,TPS)。交易时延和交易吞吐量也被认为是区块链系统中评估频率最高的宏观指标[33],例如,比特币交易吞吐量约每秒7 笔交易,交易时延约10 min[34]。本文使用JMeter 压力测试工具对医疗数据共享仿真系统的两个关键交易环节进行性能测试,包括Query 交易和Invoke交易。其中,Query 交易执行数据查询活动,Invoke 交易执行数据注册活动。由于Query 交易只涉及一个Peer 节点,而Invoke 交易涉及多个Peer 节点,并需要Orderer 节点参与事务排序和打包,因此Invoke 交易与Query 交易在相同系统并发度下,时延更高、吞吐量更低。
本文在系统并发度为100~700 TPS 时测试Query 交易性能,时延与吞吐量如图8 所示。Query 交易失败率为0%,交易最大平均时延为3 s,最大吞吐量为每秒处理236 个事务,均处于可接受范围。
图8 Query交易的时延和吞吐量Fig.8 Latency and throughput of Query transactions
本文在系统并发度为50~300 TPS 时测试Invoke 交易性能,时延与吞吐量如图9 所示。Invoke 交易失败率为0%,交易最大平均时延为7.8 s,最大吞吐量为每秒处理100 个事务,均处于可接受范围。
图9 Invoke交易的时延和吞吐量Fig.9 Latency and throughput of Invoke transactions
为对比本文提出的CP-ABHE 访问控制算法性能,考虑CP-ABHE 具有分级访问控制及多授权中心等特点,选取与其较为相关的来自文献[29,35-37]的访问控制方案进行对比。其中,文献[29]的CP-ABE 算法是CP-ABHE 的算法基础;在CP-ABE 基础上,文献[35]中提出了多授权中心加密方案;文献[36]中针对分级文件具有层次性访问特征,提出了文件分级加密(File Hierarchy Attribute-Based Encryption,FH-ABE)算法;文献[37]中将CP-ABE 算法应用于医疗数据共享中,并改进了CP-ABE 的密钥托管等问题。根据文献[29,35-37]中所提方案的实现过程,从功能、存储开销和计算开销三个方面与本文算法进行对比,符号描述如表2 所示。最后,通过实验分别分析属性数与数据量大小对CPABHE 和CP-ABE 性能的影响。
表2 符号描述Tab.2 Symbol description
4.3.1 功能比较
本文提出的访问控制方案与文献[29,35-36]的方案功能比较如表3 所示。其中,文献[29]和文献[35]的方案仅支持在同一访问控制树中设置单一访问控制策略,在面对多级访问控制的需求时将计算开销和存储成本大幅增加。文献[36]的方案支持对数据的分级访问控制,但仅由单一属性授权机构参与密钥托管,当该属性授权机构遭到攻击后,数据安全性将遭到破坏,即权威单点攻击风险。文献[29]的方案虽然由多个属性授权机构参与密钥托管,但当多个属性授权机构合谋时数据安全性仍然会遭到破坏,即权威合谋攻击风险。本文方案即满足了分级访问控制需求,同时又可以抵御权威单点攻击和权威合谋攻击。
表3 功能比较Tab.3 Function comparison
4.3.2 存储开销
本文提出的共享方案与文献[29,35,37]的方案存储开销比较如表4 所示,其中,密文长度为低敏感和中敏感数据加密后总长度。
表4 存储开销比较Tab.4 Storage cost comparison
文献[29]和文献[35]的方案不支持数据多级访问控制,因此需要分别存储低敏感和中敏感数据的密文,密文长度较大。文献[37]的方案使用多个属性授权机构,不同的授权机构使用不同的主密钥,同时,系统公钥数量和主密钥数量均与属性个数相关,因此系统公钥和主密钥长度较大。本文使用多属性授权机构,但使用相同的系统公钥和主密钥,因此系统公钥长度和主密钥长度并未增加。因此,本文提出的访问控制算法在系统公钥、主密钥、用户密钥和密文长度上均为最短。
4.3.3 计算开销
本文提出的共享方案与文献[29,35,37]的方案存储开销比较如表5 所示,加(解)密计算开销为低敏感和中敏感数据加(解)密运算的总开销。
表5 计算开销比较Tab.5 Computational cost comparison
文献[29]和文献[35]的方案不支持数据多级访问控制,需要对低敏感和中敏感数据分别加密,产生了大量访问控制树的叶子节点值的重复计算,加、解密时间大幅增加。文献[37]的方案使用多属性授权机构,密钥生成时会增加与属性数呈正相关的耗时。本文方案虽然在密钥生成阶段加入用户随机数,会增加随机数计算和密钥恢复计算的开销,但这个开销是常数级的。因此,本文所提出的方案在密钥生成、加密和解密的耗时上均为最小。
4.3.4 实验分析
本文使用CP-ABE 工具包实现文献[29]的访问控制算法CP-ABE,使用JPBC 双线性映射库实现本文的CP-ABHE 算法,实验环境与仿真系统一致。数据集选择Kaggle 平台提供的由Flaredown 应用收集的关于患有慢性自身免疫疾病和隐性疾病患者的健康记录[38],数据属性包括患者ID、年龄、性别、国家、诊断、症状和治疗过程,数据集大小约为686×106。本文将患者ID 和年龄划分为中敏感数据,将患者的性别、国家、诊断、症状和治疗过程划分为低敏感数据。
为分析属性个数对CP-ABHE 和CP-ABE 算法加、解密时间的影响,选择在中敏感和低敏感数据量均为45×106情况下,将访问策略包含的属性数分别调整为3、5、7、10,它们的加、解密时间变化如图10(a)所示;同时,在访问策略包含的属性数为5 时,将中敏感和低敏感数据量分别调整为30×106~70×106,步长为10×106,CP-ABHE 和CP-ABE 算法的加、解密时间变化如图10(b)所示。
图10 属性数与数据量对CP-ABHE和CP-ABE算法性能的影响Fig.10 Influence of attribute number and data volume on performance of CP-ABHE and CP-ABE algorithms
由图10 可知,在属性数为3~10 时,本文CP-ABHE 算法的加、解密耗时均小于CP-ABE。其中,本文算法对属性数的敏感度较高,在属性数为3 时,两种算法的加密时间相差较大,随着属性数的增加,两种算法的加密时间逐渐接近解密时间也存在相似的特点,但整体上看,CP-ABHE 的解密时间远小于CP-ABE。实际应用中,往往只需要1 次加密,解密次数远多于加密次数。由图10(b)可知,在数据量为30×106~70×106时,本文算法在加、解密环节的计算耗时均小于CPABE。其中,CP-ABE 对于数据量的敏感度更高,随着数据量的增加,两种算法的效率差距越来越大。因此,本文的CPABHE 算法在属性数和数据量这两个影响因素下均表现优于CP-ABE。
本文结合许可区块链与基于属性的访问控制等技术,提出了一个分级访问控制与共享方案。该方案对医疗数据按敏感度分级,设计了多级访问控制算法CP-ABHE,在降低计算开销和存储开销的同时,能为医疗数据提供更灵活的安全保障。该方案利用许可区块链实现数据共享系统,保证了数据共享过程的可追溯性,实现了更可靠的访问控制管理。为实现稳定、高效的访问控制与共享系统,下一步将研究在共享系统中引入激励机制,并将多级访问控制算法拓展到通用场景中。