隐私保护智能基于物联网的医疗保健大数据存储和自适应访问控制系统

摘要

本文提出了一种具有自适应访问控制功能的隐私保护智能物联网医疗大数据存储系统。其目标是确保患者医疗数据的安全,实现正常和紧急场景下的访问控制,并支持智能去重以节省大数据存储系统的存储空间。由医疗物联网网络生成的医疗文件被加密后传输至存储系统,可通过跨域访问控制策略在不同医疗领域的医护人员之间安全共享。传统的访问控制技术允许授权数据用户解密患者的敏感医疗数据,但在患者生命受到威胁时,由于现场急救人员无法获取患者的历史医疗数据,从而阻碍了急救治疗。为解决这一困境,我们提出了一种安全的系统,设计了一种新颖的双重访问控制机制,该机制对正常和紧急情况均具备自适应能力。在正常应用场景中,具备适当属性私钥的医护人员可获得数据访问权限;在紧急应用场景中,可通过基于密码的破窗访问机制恢复患者的历史医疗数据。为了降低大数据存储系统的存储开销,设计了一种安全去重方法,用于消除具有相同数据但可能使用不同访问策略加密的重复医疗文件。该智能安全去重方法的一个亮点是:去重后保留的医疗文件可被所有由原始不同访问策略所授权的数据用户访问。该智能医疗大数据存储系统已形式化证明是安全的,大量对比分析和仿真结果验证了其高效性。

1. 引言

物联网(IoT)技术的发展使得医疗结构能够提供高质量、便捷且全面的医疗保健服务。一组微型无线传感器节点可以被植入(或附着在表面)患者以监测健康状况并收集重要生理数据,这些数据对紧急医疗决策和慢性病检测均有帮助。老年人可通过可穿戴或植入式医疗传感器随时随地访问现代医疗服务,以提高其生活质量。

当医疗物联网网络收集生理数据时,这些数据会被传输到医疗大数据中心进行存储和疾病诊断。为了保护患者隐私,医疗文件在传输前需要进行加密,以防止在公共领域被窃听。患者对受保护数据实施访问策略,以定义授权属性及其关系。只有拥有适当属性私钥的用户(如医生、护士、麻醉师或患者家属)才有权限解密密文。这种加密方法称为基于属性的加密。

在现代医疗系统中,一名具有未知症状的患者可能在多家医院接受诊断和治疗,且病历分别存储于不同机构。因此,有必要实现跨域安全数据共享系统,以促进患者在不同医院之间的治疗。例如,医院A生成的检查报告可由医院B的医生访问。各医院产生的加密的医疗文件被发送至公共云进行存储和普遍的数据访问。患者为其受保护的医疗记录定义跨域访问策略。每位医务人员向其所属医疗机构注册以获取属性私钥,该密钥用于解密患者的加密文件。

医疗系统中可能会发生紧急情况,例如发生车祸或患者突然昏厥。在这些紧急场景中,迫切需要获取患者的电子病历以挽救其生命。然而,现场的急救人员通常没有权限访问加密的医疗文件。在这种情况下,保护数据隐私的安全机制可能会阻碍对患者生命的紧急救援。因此,必须为急救人员设计一种破窗访问方法,使其即使不具备相关的属性私钥也能访问电子病历。同时,该破窗访问方法应具备可管理性和可追责性,以防止攻击者进行恶意数据访问。

除了这些安全保护问题之外,在医疗大数据存储系统中,相同的医疗数据可能会被不同的医务人员使用不同的访问策略进行加密。这些密文同时被外包到公共云上,可能占用巨大的存储空间。为了节省存储空间和传输开销,一种有效的方法是在大数据存储系统中消除相同消息的冗余密文,这称为去重。

1.1. 我们的贡献

为应对上述安全问题,我们提出了一种具有智能去重功能的隐私保护医疗大数据存储与自适应访问控制系统。我们的主要贡献总结如下。

  • 智能跨域数据共享 :在实际应用中,患者可能属于不同的医疗机构(如不同的医院和诊所)。系统根据医疗机构划分为多个医疗域,并支持将来自医疗机构 MI₁ 的患者的加密健康文件安全地共享给其他医疗机构(MI₁, …, MIₙ)的医疗人员或研究人员。患者的病历使用基于属性的加密技术,并结合跨域访问策略进行加密,从而可被整个系统中的授权用户访问。
  • 智能自适应访问控制 :本系统中的访问控制机制可自适应于正常情况和紧急情况。患者和医护人员注册到各自的医疗域并获取属性私钥,该密钥可在正常情况下用于访问患者的加密文件。在紧急情况下,设计了一种破窗访问机制,可通过基于密码的破窗密钥恢复患者的所有历史医疗文件。
  • 智能去重 :该系统支持对基于属性的加密数据进行智能去重,以节省存储空间并降低公共云与数据用户之间的传输成本,整个过程分为三个阶段。首先,我们可以验证密文是否为有效密文;其次,可以检测密文是否包含相同的医疗文件;最后,使用组合访问策略对密文进行重新加密,使得原始密文所定义的所有授权用户均能访问该加密数据。在去重过程中,不会向公共云泄露任何明文消息。
  • 仿真与安全 :本系统与其他相关方案进行了全面比较。我们还在现代测试平台上对这些方案进行了仿真以测试其性能。比较和仿真结果表明,我们的系统实现了多种实用功能,并且在存储和计算成本方面具有较高的效率。该系统基于判定双线性 Diffie‐Hellman假设,被验证为能够抵御选择明文攻击且具有不可区分性。

1.2. 相关工作

1.2.1. 破玻访问

2009年,Brucker 等人[6] 提出了一种带有break‐glass的访问控制模型,以防止可能导致生命损失的系统停滞,并设计了支持break‐glass的安全架构。随后,他们将break‐glass机制集成到属性基于加密方案 [7] 实现安全日志记录,可用于分析用户在破窗访问过程中的行为。马里诺维奇等人 [24] 提出了一种名为兰波尔的新型破窗模型,该模型可将完整性约束引入决策过程,使策略制定者能够以细粒度方式管理破窗访问权限。马瓦等人 [25] 提出了一种适用于无线传感器网络的医疗系统破窗访问模型,该模型考虑了跨医疗域的访问权限执行。然而,这些研究论文 [6,7,24,25] 仅提出了架构而未给出具体方案。2016年,张等人 [35] 提出了一种基于密码的破窗访问方案,该方案基于双因素加密构建:密码加密和基于主密钥的加密。

1.2.2. 安全去重

2013年,贝尔勒等人 [3]提出了一种消息锁定加密原语以实现安全去重,其中加密和解密密钥由消息本身导出。他们将该工作扩展 [3]为支持上传和下载协议的交互式消息锁定加密 [4] 。这两个研究项目中的去重系统 [3,4]都可以是交互式的。斯坦内克等人 [29]建议了一种支持云中去重的安全存储系统。2014年,李等人[17]提出了一种控制去重重合密钥的系统。该系统通过Dekey技术实现,基于秘密共享构建。随后,他们开发了一种方案,用于解决基于公共云和私有云 [8]的混合云架构中具有差异权限的去重问题 [18] 。该方案能够抵御合谋攻击,并证明了文件令牌/重复检查令牌的不可区分性。2015年,在 [20],中展示了一种新的安全去重系统,该系统基于口令认证密钥交换协议构建。由于这些安全去重系统未考虑访问控制问题,崔等人 [11]提出了一种基于零知识证明的具有基于属性的访问控制功能的安全去重系统。

1.2.3. 基于属性的加密

2007年,奥斯托夫斯基[27]提出了一种基于属性的加密(ABE)算法,使得用户的密钥能够表示单调和非单调访问策略。为了降低解密计算开销,格林等人[13]建议将解密负担外包,使用户可以通过轻量级计算恢复消息。为验证转换后密文的正确性,文献 [16,23,28]研究了可验证的外包解密问题,为正确性验证提供了有效方法。针对ABE中的叛徒追踪问题,文献[21,26]探讨了如何识别出于经济利益而出售密钥的恶意用户身份。对加密ABE数据的安全搜索在文献[19,30]中被研究,以提供高效的关键词搜索功能。例如,数据用户向服务器发送关键词陷门以发起搜索查询,服务器则返回包含相同关键词的匹配密文。为了扩展ABE在视频内容中的安全性,杨等人[31]提出了一种时域基于属性的访问控制方案,用于保护基于云的视频内容共享,该方案将时间嵌入密文和密钥中以实现时间控制。为减少对单一权威机构的信任依赖,文献[14,15,22,34]研究了多权威ABE方案。

2. 初步

2.1. 访问策略

定义1.(访问结构 [2] ) 。定义 { P₁, …, Pₙ } 为实体。当任意 B 和 C 满足:若 B ∈ A 且 B⊆ C,则 C ∈ A 时,A ⊆ 2 { P₁, ···,Pₙ } 是单调的。访问结构(或单调访问结构)是 { P₁, …, Pₙ } 的非空子集的集合(或单调集合)A ,即 A ⊆ 2 { P₁, ···,Pₙ } { φ} 。A 中的集合称为授权集合,不在 A 中的集合称为非授权集合。

定义 2.(线性密钥共享方案(LSSS)[2]) 。一个在参与方集合P上的秘密共享方案称为线性的(在Z p 上),如果每个参与方的份额构成一个关于Z p 的向量。存在一个具有 l 行和 n 列的矩阵 M,称为 的份额生成矩阵。对于所有 i = 1, ···, l,矩阵 M 的第 i 行由一个参与方 ρ(i) 标记(ρ 是从 {1, …, l} 到 P 的函数)。设列向量 v =(s, r₂, ···, rₙ) ,其中 s ∈ Z p 是要共享的秘密,r₂, ···, rₙ∈ Z p 是随机选取的,则 Mv 是根据 得到的秘密 s 的 l 个份额组成的向量。份额 (Mv)_i 属于参与方 ρ(i)。

根据定义,每个LSSS都具有线性重构性质[2] 。假设是访问结构A的一个LSSS。令S ∈ A 为任意一个授权集合,并令I ⊂{1, …, l}定义为I ={ i : ρ(i) ∈ S} 。那么存在常数{ ω i ∈ Z p} i ∈ I,使得如果{λ i }i ∈ I 是根据 生成的关于任意秘密s的有效份额,则有 ∑ i ∈ I ω iλ i = s。此外,文献[2]表明,这些常数{ω i }i ∈ I 可以在关于份额生成矩阵M大小的多项式时间内求得。对于非授权集合,不存在这样的常数。本文中,将使用LSSS矩阵(M, ρ)来表示与密文相关联的访问策略。

示意图0

2.2. 双线性群

设G p是一个算法,该算法以安全参数λ为输入,输出一个素数阶双线性映射的参数(p, g G,G T , e) ,其中G和G T是素数阶p的乘法循环群,g是G的随机生成元。映射e: G × G → G T是一个双线性映射。该双线性映射e具有三个性质:(1)双线性:对于任意 u, v ∈ G以及a, b ∈ Z p,有e( u a , v b)= e( u v) ab。(2)非退化性:e(g, g) = 1。(3)可计算性:e可以高效计算。

2.3. 困难性问题

假设1 (DBDH: 判定双线性Diffie‐Hellman假设) 。令 G为一个素数阶p的双线性群,g 是 G 的生成元。令 α, β, η ∈ Z ∗ p 随机选取。如果一个攻击者 A 被给予 y =(g, gα , g β, gη ) ,则该攻击者 A 很难区分 e( g, g) αβη ∈ G T和一个从 G T中随机选取的元素 T。

3. 系统和安全模型

3.1. 系统模型

图1展示了基于物联网的医疗大数据存储系统与自适应访问控制及智能去重的系统模型架构 ,该架构涉及以下实体。

各实体的特征和功能如下所述。

  • 密钥生成中心(KGC) :KGC 是一个受信任的第三方实体,负责生成系统公共参数。它还创建主密钥并严格保密。KGC 验证医疗机构的医疗质量,并为其生成公钥/私钥对。
  • 医疗机构(MI) :该系统可容纳不同的医疗机构。医疗机构负责治疗患者,并负责管理其医疗领域内的患者和医务人员。“医疗机构”应向密钥生成中心(KGC)注册以获取公钥/私钥对。此外,它为患者和医务人员分配一组属性以描述其特征,并为其生成属性私钥。每个医疗机构拥有自己的私有云,以便为其管理域内的用户(如患者的紧急联系人列表存储、密文重加密和紧急访问密钥提取等)提供存储与计算服务。
  • 数据所有者(基于医疗物联网) :患者通常扮演数据所有者的角色,并由医疗物联网系统进行监测。多个微型无线传感器嵌入患者体内或贴附于皮肤表面,构成一个健康物联网网络。这些传感器持续检测重要生理参数,并将数据发送至聚合节点。随后,患者的电子健康数据被包含在一份电子病历中。为保障患者隐私,该医疗文件被加密为密文,并为该密文指定访问策略,以实现访问控制,确保只有授权用户才能恢复受保护的外包至公共云的加密的医疗文件。为降低紧急情况发生的风险,患者预设一个密码、一个破玻璃密钥以及一组紧急联系人(如其主治医生、家人或朋友)。该破玻璃密钥可解密目标患者的任何加密的医疗文件。患者可将密码告知紧急联系人(ECP),使得ECP在患者遭遇紧急情况时能够推导出破玻璃密钥并恢复患者的医疗文件。ECP列表由医疗机构的私有云进行管理(图1)。
  • 公共云 :公共云负责为不同的医疗机构存储医疗健康大数据,并响应数据访问查询。它根据数据用户的属性和加密文件的访问策略,验证数据用户是否被授权访问数据。此外,公共云还向系统用户提供部分解密服务,以减轻计算负担。为了消除加密医疗文件的重复副本,公共云与医疗机构的私有云交互,执行去重操作以节省存储空间。
  • 数据用户 :数据用户(如医护人员或患者的亲友)向医疗机构注册以获取属性私钥。数据用户向公共云发送数据访问查询以获取加密的医疗文件,并使用属性私钥对其进行解密。
  • 紧急联系人(ECP) :患者在事前将密码共享给紧急护理人员(ECP)。当患者处于危险情况时,紧急护理人员(ECP)利用该密码生成破玻密钥,并解密患者的医疗文件。

3.2. 形式化定义

该隐私保护的智能物联网医疗大数据存储与自适应访问控制系统包含十三个算法:全局设置算法 GlobalSetup、医疗机构密钥生成算法 KeyGen.MI、用户属性密钥生成算法 KeyGen.User、委托密钥生成算法 KeyGen.Del、破玻璃密钥生成算法 KeyGen.BGK、紧急访问密钥提取算法 Extract.BGK、医疗文件加密算法 Enc、密文有效性测试算法 ValidityTest、消息等价性测试算法 MsgTest、密文重加密算法 ReEnc、部分解密算法 PartialDec、类型1解密算法 Dec 1 和类型2解密算法 Dec 2。

  1. GlobalSetup (1 κ) →( PP, MSK ) 。密钥生成中心(KGC)执行全局设置算法。以安全参数 1 κ 作为输入,全局设置算法生成系统的公共参数 PP 和主密钥 MSK。由于 PP 是后续所有算法的输入,在不影响理解的情况下,为简化表述,我们省略对它的重复提及。
  2. KeyGen.MI(MI i,MSK)→ (PK i,SK i) 。密钥生成中心运行算法KeyGen.MI,以主密钥MSK和医疗机构身份MI i作为输入,验证第i个医疗机构的医疗质量,并为第i个医疗机构生成公钥/私钥对PKᵢ / 秘密钥i。
  3. KeyGen.User (MI i , PID i, j , SK i , { attr k } k ∈[ ϕ]) → SK i, j 。医疗机构MI i 执行KeyGen.User算法。以医疗机构的身份MI i 、用户的伪身份PID i, j 、MI i 的私钥SK i 以及用户的属性{ attr k } k ∈[ ϕ]作为输入,医疗机构MI i 为该用户生成属性私钥SK i, j 。
  4. KeyGen.Del (PID i, j, SK i, j) → DK i, j 。用户执行密钥生成.委托算法。以用户的假名PID i, j和私钥SK i, j作为输入,用户生成一个委托密钥DK i, j并将其发送到公共云。
  5. KeyGen.BGK (PID i, j , pw i, j) →(BGK i, j , 1 , BGK i, j , 2) 。患者执行密钥生成.BGK算法,输入其假名PID i, j 和密码pw i, j,生成应急密钥BGK i, j、一组紧急联系人以及辅助信息(BGK i, j , 1 , BGK i, j , 2)。其中,BGK i, j , 1 被发送至公共云,辅助信息 BGK i, j , 2 和紧急联系人列表被发送至医疗机构MI i 的私有云。
  6. Extract.BGK (PID i, j , pw i, j , BGK i, j , 1 , BGK i, j , 2) → BGK i, j 。该算法由患者的紧急联系人、公共云和医疗机构交互执行。输入为患者假名PID i, j、密码pw i, j以及辅助信息BGK i, j , 1、BGK i, j , 2,紧急访问密钥提取算法输出应急密钥BGK i, j。
  7. Enc(M(A, ρ, δ), PK i, PID i,j, BGK i,j) →(CT, pf, TK i,j) 。患者执行加密算法Enc,输入为医疗文件M、访问策略(A, ρ, δ) 、医疗机构MI i的公钥PK i、患者假名PID i,j以及应急密钥BGK i,j,加密算法输出加密后的密文CT、证明消息pf和转换密钥TK i,j。密文CT和证明消息pf被发送至公共云进行远程存储,转换密钥TK i,j则被安全地发送至医疗机构MI i的私有云。
  8. 有效性测试 (密文CT, 证明信息pf) → 1/0 。公共云执行有效性测试ValidityTest算法。以密文CT和证明信息pf作为输入,公共云对密文的有效性进行测试。如果密文有效,则算法输出1;否则输出0。
  9. 消息等式测试MsgTest算法 ( 证明 pf 1 , 证明 pf 2 ) → 1/0 。公共云执行消息等式测试MsgTest算法,以密文证明 证明 pf 1 和 证明 pf 2 作为输入,公共云测试这两个密文是否为同一明文M的加密结果。如果是,该算法输出1;否则输出0。
  10. ReEnc(P DI i,j, T K i,j, CT (A ′, ρ ′, δ ′)) → CT ′ 。医疗机构MI i执行重加密算法ReEnc算法,输入为患者的假名PDI i,j、转换密钥TK i,j、密文CT和访问策略 (A ′, ρ ′, δ ′) ,输出另一个与CT具有相同明文的密文CT ′ ,但该密文是基于新的访问策略(A ′, ρ ′, δ ′)加密的。
  11. PartialDec( CT, DK i, j)→ 部分密文CT p 。公共云执行 部分解密PartialDec算法,输入为密文CT和委托密钥DK i,j。j,部分解密算法输出部分密文 CT p 。
  12. Dec 1 (CT p , SK i, j ) → M /⊥ 。具有属性私钥的数据用户执行Dec 1算法。以部分密文CT p =(C M, C₀, C T )和属性密钥SK i, j 作为输入,若部分密文CT p 正确,则Dec 1算法恢复出明文M;否则输出⊥ 。
  13. Dec 2 ( PID i, j , FID, C M , BGK i, j ) → M /⊥ 。患者的紧急联系人使用应急密钥执行解密算法2。输入为患者假名PID i, j、文件编号FID、密文C M以及应急密钥BGK i, j,若应急密钥BGK i, j正确提取,则Dec 2恢复明文M;否则输出⊥ 。

3.3. 威胁模型

从逻辑上讲,密钥生成中心(KGC)在系统中是完全可信的。医疗机构的公共云服务器和服务提供商以及私有云服务器和服务提供商被视为“半诚实且好奇”。公共云服务提供商诚实地存储加密的医疗大数据,并执行预定义的计算操作(如密文有效性测试、消息等价性测试和部分解密操作),但其也具有好奇心,试图获取患者医疗信息的明文。此外,公共云服务提供商可能出于自私目的,为节省计算资源而返回错误的转换结果。

将密文发送给数据用户。医疗机构私有云服务器的服务提供商诚实存储患者的紧急联系人列表,并在去重过程中使用新的访问策略执行重加密操作,但同时对患者的私人医疗数据具有好奇性。假设公共云和私有云的服务提供商彼此之间不会共谋。假设系统中的攻击者具有多项式时间有界计算能力。因此,他们无法解决第2节中定义的困难问题。

3.4. 安全模型

该系统在面对选择明文攻击(IND‐CPA)时是不可区分的,如果不存在能够在以下交互式游戏中以不可忽略的优势获胜的多项式时间攻击者A 。

  • 初始化 :挑战者C执行初始化算法以生成公共参数PP和主密钥MSK。公共参数PP被发送给攻击者A,而主密钥MSK则保密。
  • 查询阶段1 :攻击者A自适应地发出以下查询。
    1. O KeyGen.MI:收到针对医疗机构MI i的密钥生成查询后,挑战者C通过计算 (PK i, SK i)← KeyGen.MI为MI i构造公钥/私钥对。
    2. O KeyGen.user:收到针对用户u i, j的密钥生成查询后,挑战者C通过计算SK i, j← KeyGen.User构造属性私钥SK i, j。
    3. O KeyGen.Del:收到针对用户u i, j的委托密钥生成查询后,挑战者C通过计算 DK i, j← KeyGen.Del构造委托密钥DK i, j。
    4. O KeyGen.BGK:收到针对患者u i, j的破玻璃密钥生成查询后,挑战者C通过计算 (BGK i, j , 1, BGK i, j , 2)← KeyGen.BGK构造破玻璃密钥BGK i, j及其辅助信息(BGK i, j , 1, BGK i, j , 2)。
    5. O Extract.BGK:收到使用患者密码pw i, j对患者u i, j进行的破玻璃密钥提取查询后,挑战者C通过计算BGK i, j← Extract.BGK构造破玻璃密钥 BGK i, j。
  • 挑战 :攻击者 A发送一个挑战用户 u∗ i,j(具有假名 PID∗ i,j)、一个挑战访问策略 (A ∗, ρ ∗, δ ∗)以及两个挑战消息 (M0∗ 和 M1∗ )给 C。然后,挑战者 C抛掷一枚硬币以随机选择 b ∈ R {0, 1}。C为 M∗ b 构造密文,并将其发送给攻击者 A 。
  • 查询阶段2 :攻击者A自适应地像阶段1一样发出查询。要求是不能查询挑战用户u∗ i,j(具有假名P ID∗ i,j)的属性私钥或破玻璃密钥。
  • 猜测 :攻击者A输出一个猜测b′ ∈{0, 1}。如果b′= b,挑战者C输出1,表示A赢得游戏。否则,C输出0。

4. 所提出的系统

该系统具有三个显著功能:跨域数据共享、正常和紧急情况下的自适应访问控制,以及智能去重。

为了实现跨域数据共享,每个医疗机构(MI)向密钥生成中心(KGC)注册,并利用KeyGen.MI算法获取公钥/私钥对PK i / SK i。然后,第 j 个用户(如患者、医生和护士)向第i个MI注册,并利用KeyGen.User算法获取其公钥/私钥属性对PK i, j / SK i, j。在数据加密Enc算法中,数据所有者定义一个跨域访问策略(A, ρ, δ) ,该策略被嵌入到密文CT中。随后,具有相应属性的数据用户可满足该访问策略,并执行解密Dec 1算法以恢复患者的医疗记录。

自适应访问控制可适应正常情况和紧急情况,其中正常情况已在上文描述。设计了一种基于密码的应急访问机制以实现紧急情况下的访问控制,该机制主要体现在加密Enc算法、应急密钥生成KeyGen.BGK算法、应急密钥提取Extract.BGK算法以及解密Dec 2 算法中的应用,具体流程如下:首先,患者预设一个密码,并将其预先与一组ECP共享;执行KeyGen.BGK算法,从该密码生成破玻 璃密钥,同时在KeyGen.BGK算法中生成应急密钥的辅助信息,这些辅助信息分别发送至MI和公共云;随后,患者在Enc算法中利用破玻璃密钥对消息进行加密。当发生紧急情况时,患者的ECP与MI及公共云交互,通过Extract.BGK算法提取破玻璃密钥;最后, ECP利用提取出的破玻璃密钥在Dec 2算法中恢复患者的医疗文件。

安全去重有效地发现包含相同明文的密文,并将其重新加密为一个新的密文,该密文可被所有原始授权数据用户访问。首先,公共云运行密文有效性测试ValidityTest算法,以检测存储的密文是否有效。然后,执行消息等式测试MsgTest算法,以检测两个密文是否包含相同的明文。最后,运行密文重加密ReEnc算法,生成具有组合跨域访问策略的新密文。

4.1. 系统初始化

输入安全参数1 κ后,密钥生成中心(KGC)生成系统公共参数PP和主密钥MSK。公共参数PP在全系统中公开,而MSK由KGC 保密存储。在后续的算法中,PP作为默认输入,为简化表述,此处省略。

示意图1

GlobalSetup (1 κ) →( PP, MSK ) 。密钥生成中心 KGC 执行全局设置算法 GlobalSetup。以安全参数 1 κ 作为输入,KGC 随机选择哈希函数 H 1 : { 0, 1} ∗ → Z ∗p 和 H 2 : { 0, 1} ∗ → K,以及具有密钥空间 K 的密码学安全的对称加密解密对 SEnc / SDec。然后,KGC 选择随机数 η ∈ R Z ∗p ,g, g 1 , g 2 , g3 ∈ R G ,并计算 Y = e( g 1 , g2 ) η。最后,KGC 将公共参数设置为 PP =(g, g 1 , g 2 , g 3 , Y, H 1 , H 2 , SEnc/SDec) ,将主密钥设置为 MSK = η图2。

4.2. 医疗机构密钥生成

当一个医疗机构作为第 i 个医疗机构注册到系统时,密钥生成中心会检查其是否为合格的机构。如果通过验证,密钥生成中心将为该医疗机构分配一个身份 MI i,并为 MI i 生成公钥 PK i 和私钥 SK i。MI i 的公钥 PK i 在系统中公开,而私钥 SK i 则通过安全信道机密地发送给 MI i。

KeyGen.MI ( MI i , MSK ) →( PK i , SK i ) 。该算法由密钥生成中心执行。以主密钥 MSK 和医疗机构的身份 MI i 作为输入,密钥生成中心随机选择 αi, βi, νi ∈ R Z ∗ p。然后,密钥生成中心计算 MI i 的公钥 PK i 的元素如下:
pk i, 1= g α i , pk i, 2= g β i ,

以及 私钥 MI i的 元素 SK i为
K i, 1= g α i 1 , K i, 2= βi , K i, 3= g η 2 g ν i 3 , K i, 4= g ν i 1 , K i, 5= g α i ·νi 1 .

最后, 密钥生成中心 设置
P K i= (pk i, 1 , pk i, 2) , SK i= (K i, 1 , K i, 2 , K i, 3 , K i, 4 , K i, 5) .

4.3. 用户密钥生成

当用户 Ui, j 作为第 j 个用户在医疗机构 MI i 注册时,医疗机构首先验证用户的身份。系统用户可以是患者、医生、护士或其他角色。为了保护用户的隐私,MI i 为用户 Ui, j 分配一个伪身份 PID i,j ∈ G ,并隐藏其真实身份。根据用户的身份,MI i 分配一组属性 { attr k } k ∈ [ ϕ] 来描述用户的特征。然后,MI i 为用户 PID i, j 生成属性私钥 SK i, j。

KeyGen.User (MI i, PID i, j, SK i, {attr k} k ∈ [ ϕ] ) → SK i, j 。医疗机构MI i 执行KeyGen.User算法。以医疗机构的身份MI i、用户的伪身份PID i, j、MI i 的私钥SK i 以及用户的属性{attr k} k ∈ [ ϕ ] 作为输入,医疗机构MI i 随机选择ν′ i,j, t ∈ R Z ∗ p,并针对某个未知的ν i 设置ν i,j = νi + ν ′ i,j。然后,MI i 计算PID i, j 的私钥SK i, j 的各个元素如下:
sk i , j , 1 = K i , 3 · g ν ′ i , j 3 = g η 2 g ν i , j 3 ,
sk i , j , 2 = K i , 4 · g ν ′ i , j 1 = g ν i , j 1 , sk i , j , 3 = g t ,

示意图2

i , j , k = K i , 5 · K ν ′ i , j i , 1 · g H 1 ( PID i , j ) ·K i, 2 2 · g H 1 ( at t r k ) ·t 3 = g α i ·νi , j 1 · g H 1 ( PID i , j ) · β i 2 · g H 1 ( at t r k ) ·t 3

并设置 SK i,j =(sk i,j, 1 , sk i,j, 2 , sk i,j 3 ,{ i , j , k } k ∈ [ ϕ ] )图3和图4。

4.4. 委托密钥生成

在此阶段,用户(具有假名PID i, j)生成一个委托密钥 DK i, j,并将其发送至公共云。公共云利用该委托密钥转换密文,使得用户可以通过轻量级计算恢复医疗文件。同时,公共云无法获知明文医疗文件的内容。

KeyGen.Del (假名PID i, j , 私钥SK i, j ) → DK i, j 。用户运行密钥生成.委托算法。以用户的假名PID i, j 和私钥SK i, j 作为输入,用户选择随机数 τ ∈ R Z ∗ p 并计算委托密钥 DK i, j 的元素
DK 1=(sk i,j, 1) τ=(g η 2 g ν i, j 3) τ,
DK 2=(sk i,j, 2) τ=(g ν i, j 1) τ ,
DK 3=(sk i,j, 3) τ=(g t) τ , DK 4=(g H 1( PID i , j ) 2 ) τ ,
DK 5,k= (i,j,k) τ=(g α i ·νi , j 1 · g H 1( PID i , j ) ·βi 2 · g H 1( at t r k) ·t 3 ) τ .

然后,用户设置委托密钥DK i,j =(DK 1 , DK 2 , DK 3 , DK 4 ,{ DK 5 ,k} k∈ [ ϕ]) ,并将其安全地发送至公共云 图5 。

4.5. 基于密码的紧急访问密钥生成

为了在患者遇到紧急情况(如突然昏迷或心脏病发作)时提供有效的数据访问,患者设置了一个基于密码的紧急访问密钥BGK i, j,该密钥可用于解密患者的所有加密医疗文件。患者(具有假名PID i, j)设置一个密码pw i, j和一个破玻璃密钥BGK i, j。患者指定一组紧急联系人(例如其主治医生、家人或朋友),并私下告知他们密码pw i, j。这些紧急联系人可以利用密码pw i, j推导出破玻密钥。紧急联系人列表存储在患者所属医疗机构MI i的私有云中。患者利用密码pw i, j生成破玻密钥BGK i, j的辅助信息(BGK i, j , 1 , BGK i, j , 2),分别发送至公共云和MI i的私有云。这些辅助信息用于帮助紧急联系人从密码pw i, j恢复破玻密钥BGK i, j。

KeyGen.BGK ( PID i, j , pw i, j ) →( BGK i, j , 1 , BGK i, j , 2 ) 。患者执行密钥生成.BGK算法。以患者的假名PID i, j 和密码 pw i, j 作为输入,患者随机选择ζ 1 , ζ2 , σ1 , σ2 ∈ R Z ∗ p , 1 ∈ R G,并将破玻璃密钥设置为应急密钥 BGK i,j = 。然后,患者计算
2 = ·(
g σ 1+ σ2) ς 1 ·(1) − 1 ,
C p w i , j =(g σ 1+ σ 2 ) ς 2 · g H 1 ( p w i , j )
1
.
破玻璃密钥辅助消息( BGK i, j , 1, BGK i, j , 2)的计算方式如下
BGK i , j , 1 =( σ 1 , 1 , g
ζ 1 , g
ζ 2 , C p w i , j ) ,
BGK i,j 2=(σ2, 2, g ζ
1, g
ζ 2, C pw i , j ) .
然后, BGK i, j, 1和 BGK i, j, 2分别被秘密发送到云和MI i。

4.6. 基于密码的紧急访问密钥提取

当患者(具有假名PID i, j)遇到紧急情况时,需要快速访问该患者的加密医疗文件以对其进行急救治疗。医疗机构MI i 联系其指定的紧急联系人,该联系人知晓对应于应急密钥BGK i, j 的患者密码 pw i, j。该紧急联系人与公共云和医疗机构MI i 进行交互,以恢复应急密钥BGK i, j,该密钥可用于解密该患者的所有加密医疗文件。应急密钥可通过以下算法图6提取。
Extract.BGK (PID i, j , pw i, j , BGK i, j , 1 , BGK i, j , 2) → BGK i, j 。该算法由患者的紧急联系人、公共云和医疗机构共同通过交互过程执行。输入为患者假名PID i, j 、密码pw i, j 以及破玻璃密钥的辅助信息BGK i, j , 1 , BGK i, j , 2 ,输出为应急密钥 BGK i, j 。交互过程如下所述,同时如图7所示。
•紧急联系人选择随机数  ∈ R Z ∗ p 并计算 = g  ·g H  1( )
1
,
pw i j,该值被发送至公共云和医疗机构MI i。•公共云选择随机 数 a1  ∈ R Z ∗ p 并计算 U1 =
(gζ 2) a 1,该值被发送至医疗机构MI i。•医疗机构MI i 选择随机数 a2  ∈ R Z ∗ p 并计算 U2 = (gζ 2) a 2 , 然后将其传输给公共云。
•公共云计算
A 1= g
a 1 , W 1= 1 ·(C p w i , j · − 1 ) a 1 ·(g ζ 1 · U 1 · U 2) − σ 1
并发送( A 1, W 1)给紧急联系人 。
• 医疗机构 MI i计算
A 2= g
a 2 , W 2= 2 ·(C p w i , j · − 1 ) a 2 ·(g ζ 1 · U 1 · U 2) − σ 2
并发送( A 2, W 2)给紧急联系人 。
• 用户通过计算来恢复破窗密钥
BGK i , j = =(W 1 · W 2) ·(A 1 · A 2)
.

4.7. 加密

当医疗物联网网络生成病历时,患者将消息M加密为密文,并在加密算法中实施访问策略(A , ρ, δ) ,从而输出密文CT和转换密钥TK i, j
以及证明消息pf。转换密钥TK i, j在去重算法中用于使用组合访问策略对密文进行重新加密,这将在重加密算法中详细介绍。证明消 息pf帮助公共云区分加密自同一文件的不同密文。转换密钥TK i, j被安全地发送给第i个医疗机构,而(密文CT, 证明信息pf)则由公 共云存储(图7)。
Enc(M(A, ρ, δ), PK i,  PID i,j,  BGK i,j)  →(CT, pf, TK i,j)  。该算法由患者执行。算法的输入包括医疗文件 M、跨域访问策略  (A, ρ, δ) 、医疗机构 MI i 的公钥 PK i、患者假名 PID i,j 以及应急密钥 BGK i,j,其中 A ∈ Z l×n p  ρ将 A  的行映射到医疗机构, δ将 A  的行映射到
属性。令 A x 为 A  的第 x 行。
患者随机选择 z, v 2 , ···, v n , w 2 , ···, w n ∈ R Z ∗ p,并设置 v =(z, v 2 , ···, v n)  , w =(0, w 2 , ···, w n)  。令 λx=〈 A x ,  v〉   和 w x = 〈 A x , w〉  ,分别表示对应于第 x 行的 z 和 0 的份额。他计算转换密钥 TK i,j = g z 3 。
患者为 A  中的每一行 x 随机选择 t x ∈ R Z ∗ p,并选择  ∈ R Z + 。对于电子医疗文件 M,患者设置文件编号 F ID ∈ G ,并计算密文  CT 的元素如下。
ϒ= H 2( , P ID i , j , F ID),
C M = SEnc(ϒ, M|| 0 ), C − 1 = g z 1
,
C 0 = ϒ · Y z= ϒ · e(g 1 , g 2)
η·z
, C 1 , x = g λ x
3 ·(pk ρ( x ) , 1) t x = g λ x
3 · g α ρ (x ) ·t x ,
C 2 , x = g − t x ,
C 3 , x =(p k ρ ( x ) , 2 ) t x · g w x = g β ρ (x ) · t x · g w x ,
C 4,x= gH 1(δ(x)) ·tx 3
,
其中 M ||0 ϖ表示 ϖ‐0s在明文M之后被连接。
密文 CT 被定义为
CT=(C M, C −1, C 0,{ C 1,x, C 2,x, C 3,x, C 4,x}x ∈[ l]).
Then,患者 随机选择 s, r 1, r 2 ∈ R Z ∗p并计算密文CT的证明信息pf pf CT如下所示 w.
D 1= gH 1(M) ·s, D 2= gs , D 3= gH 1(M) · gH 1(ϒ) 1
,
B 1= D r 1 2, B 2= g r 1 · g r 2 1, θ= H 1(C M, C −1, C 0,{ C 1,x, C 2,x, C 3,x, C 4,x}x ∈[ l], D 1, D 2, D 3, B 1, B 2), D 4= r 1 −θ · H 1(M), D 5= r 2 −θ · H 1(ϒ).
证明信息 pf定义为
pf=(D 1, D 2, D 3, D 4, D 5, θ).
然后,患者将(PID i, j, FID, CT, pf)外包给公共云,并秘密地将转换密钥TK i,j发送给医疗机构MI i。

4.8. 密文有效性测试

在去重过程中,公共云首先检查存储的密文是否为有效密文。密文有效性测试算法输出 1表示该密文有效;否则,输出 0。
有效性测试(密文 CT,证明信息pf) → 1/0.公共云执行有效性测试算法。以密文CT和证明信息pf作为输入,公共云进行计算
B′1  = Dθ1  · D D  4 2 , B′2  = Dθ3  · g D 4 ·g D 5
1
,θ ′= H1 (密文C M,  C− 1, C₀,{
和验证 w方程是否成立θ′= θ。<如果成立,算法输出1;否则,输出0 .

4.9. 消息相等性测试

如果两个密文通过有效性测试算法被验证为有效 ,消息相等性测试算法将验证它们是否为同一明文M的加密结果。若是,该算法输 出1;否则,输出0。
MsgTest ( pf 1 , pf 2 ) → 1/0。公共云执行消息等式测试MsgTest算法。以密文证明 pf 1 和 pf 2 作为输入,公共云将证明解析为
p f1 =(D₁ , D₂ , D₃ , D₄ , D₅ , θ)  和 p f2 =(D′1  , D′2  , D′3  , D′4  , D′5  , θ′) 。它测试等式 e( D₁ , D′2  ) = e( D′1  , D2 )  是否成立。如果成立, 则算法输出 1,表示这两个密文是同一明文M的加密结果;否则输出 0。

4.10. 密文重新加密

如果一组密文被验证包含相同的消息且属于同一数据所有者,则将对其进行去重。假设密文及其对应的访问策略为 (CT₁,
(A 1 , ρ1 , δ1)) , ···,(CTₘ (A m  ρm, δm)) 。医疗机构MI i 首先将这些访问策略合并为 (A ′, ρ ′, δ ′) ,即访问策略
((A 1 , ρ1 , δ1) , ···,(A m  ρm, δm))  的并集。然后,MI i 使用组合跨域访问策略 (A ′, ρ ′, δ ′)  对密文进行重新加密,生成新的密文  CT ′ 。这样,任何预定义的密文(CT₁, , CTₘ)的授权数据用户都可以访问新密文 CT ′ 。记 (CT₁, , CTₘ) 中文件编号最小的密 文为 CT。假设 C T = C T₁ 且 F ID = F ID₁。
ReEnc(P DI i,j,  T K i,j,  CT (A ′, ρ ′, δ ′)) → CT ′ 。医疗机构MI i 执行ReEnc算法。重加密算法的输入为患者假名PDI i, j、转换
密钥TK i, j、一个密文CT以及一个组合访问策略(A ′, ρ ′, δ ′) ,其中A ′ ∈ Z l′  ×n′  p  ρ ′将A ′的行映射到医疗机构,δ′将A ′的行映射到
属性。令A ′ x 为A ′的第 x 行,且A ′ x =(a ′ x 1, ···, a ′ x,n ′) 。
医疗机构MI i 随机选择  ¯ ′ =
( 0 , , ′
2 ··· ′ , ′
2 ··· ′ ∈ Z ∗ ′ =( ′ ′
2 ··· ′
)
′
2 ··· ′
)
′ = + ¯ λ ′ = 〈 A ′ , ′ 〉 ′ = 〈 A ′ , ′ 〉 ′
z v , ,
v n w , , w n R p 并设置 v z , v , , v n , w w , , w n ,其中 z z z 对应某个未知的 z。令 x x v 和 w x x w ,分别表示对应于第 x 行的 z 和 0 的份额。医疗机构MI i 为
A ′  的每一行 x 选择 t ′ x ∈ R Z ∗ p。重加密密文
C T ′=( C ′
M
, C ′
− 1
, C ′
0
, { C ′
1 , x
, C ′
2 , x
, C ′
3 , x
, C ′
4 , x }x ∈ [ l ] )
如下所示构造为下。
C ′
M = C M ,
C −′ 1= C −1 · gz 1¯ = gz ′ 1, C 0′ = C 0 · Y z¯= ϒ · Y z ′ ,
C 1′ ,x= g〈 A ′ 〉 3 ·(pk ρ(x), 1) t ′ x= gλ ′
x x, C 2′ ,x= g −t ′ x,
C 3′ ,x=(pk ρ(x), 2) t ′ x · gw ′ x= gβ ρ(x) ·t ′ x · gw ′ x, C 4′ ,x= gH 1(δ(x)) ·t ′ 3
.
由于 A ′ x =(a′ x 1 , ···, a′  x,n ′)且 λx′= 〈 A ′ x , v′ 〉 ,则我们有 λ′ x = z ′ a ′ x 1+ ···+ v ′ n′  a ′ x,n ′= za ′ x 1+ ¯z a ′ x 1+ ···+ v ′ n′  a ′ x,n′  。元素 C1′  ,x 实际上是通过转换密钥TK i,j 按如下方式计算的。
C 1′ ,x= g〈 A ′ x,v ′ 〉 3 ·(pk ρ(x), 1) t ′ x= g λ′ x t ′ x
= g za ′ x, 1+z ¯ a ′ x, 1+ ···+ v ′ n ′ a ′ x,n ′
3 ·(pk ρ(x), 1) t ′ x
=(gz 3 ) a ′ x, 1 · g z¯ a ′ x, 1+ ···+ v ′ n ′ a ′ x,n ′
1 ·(pk ρ(x), 1) t ′ x
=(T K i,j) a ′ x, 1 · g z¯ a ′ x, 1+ ···+ v ′ n ′ a ′ x,n ′
1 ·(pk ρ(x), 1) t ′ x.
显然,密文 CT ′  的分布与加密 Enc 算法中的分布一致。

4.11. 部分解密

为了减轻数据用户的计算负担,公共云利用委托密钥 DK i, j 对密文进行部分解密,并生成部分密文 CT p。在此过程中,公共云 无法获知明文 M。
PartialDec (密文CT, 委托密钥 DK i, j) →部分密文CT p。公共云执行部分解密 PartialDec 算法。以密文 CT 和委托密钥 DK i, j
作为输入,公共云计算 c x ∈ Z p,使得 ∑ x c x ·A x =(1, 0, ···, 0) 。然后,它计算
C T= ∏ x[ e(C 1,x, DK 2) · e(C 2,x, DK 5,δ(x)) · e(C 3,x, DK 4) · e(C 4,x, DK 3)] cx
e(C −1, DK 1) = e(g 1, g 2) −η·z·τ,
并将部分密文 CT p =(C M, C 0 , C T)发送给用户。

4.12. 使用属性密钥解密并验证

具有属性密钥 SK i, j的用户通过解密算法 Dec 1恢复医疗文件 M 。
Dec 1 (CT p , SK i, j ) → M /⊥  。该算法由具有属性私钥的数据用户执行。输入为部分密文 CT p =(C M, C 0 , C T )  和属性密钥
SK i, j,数据用户恢复出 ϒ= C0  ·(C T ) τ − 1, M′ = SDec(H2 (ϒ), C M)  。如果 M′ = M|| 0 ,则表示公共云执行的部分解密是正确 的,Dec 1 算法输出医疗文件 M;否则,输出 ⊥ 。

4.13. 使用破窗密钥解密与验证

在紧急情况下,患者的紧急联系人使用 Extract.BGK算法提取破窗密钥 BGK i, j 。然后,他利用解密算法 Dec 2对患者的医疗文件进 行解密 。
Dec 2 (PID i, j, FID, C M, BGK i,j) → M /⊥  。该算法由患者的紧急联系人使用破玻密钥执行。输入为患者假名PID i, j、文件编号 FID、密文C M以及应急密钥BGK i,j,紧急联系人恢复ϒ= H  2( BGK i,j,  P ID i,j,  F ID) 和M′ = SDec(H  2( ϒ), C M)  。如果M′ =
M|| 0 ,则表示应急密钥BGK i,j被正确提取,且Dec 1算法输出医疗文件M;否则输出⊥ 。

5. 正确性

5.1. 密文有效性测试正确性

如果密文是有效的且具有良好形式的密文
CT=(C M , C − 1 , C 0 , { C 1, x , C 2, x , C 3, x , C 4, x} x ∈ [ l ] )
以及证明消息 p f =(D₁ , D₂ , D₃ , D₄ , D₅ , θ) ,可如下验证密文有效性测试算法的正确性。
B ′
1 = D θ
1 · D D 4
2 =(g H 1 ( M ) · s ) θ ·(g s ) r 1 − θ· H 1 ( M )
= gs r 1= D r 1 2= B 1,
B ′2 = D θ3 · gD 4 · gD 5 1=(gH 1(M) · gH 1(ϒ) ) θ · g r 1 −θ·H 1(M) · g r 2 −θ·H 1(ϒ) 1
= g r 1 · g r 2 1= B 2,
其中 θ= H1 (密文C M,  C− 1, C₀, { C₁,x,  C₂,x,  C₃,x,  C₄,x}  x∈ [ l], D₁, D₂, D₃, B₁, B2 ).

5.2. 消息相等性测试正确性

假设密文通过了密文有效性验证算法的验证。那么,可以测试两个密文是否由相同的明文加密而成,因为
e(D 1, D ′2 )= e(gH 1(M) ·s, gs ′)= e(gH 1(M) ·s ′, gs )= e(D ′1 , D 2).

5.3. 基于密码的紧急访问密钥提取正确性

cor基于密码的破窗密钥提取算法的正确性可验证如下。
(W 1 · W 2) ·(A 1 · A 2)
=[1 ·(C pw i,j · −1) a 1 ·(gζ 1 · U 1 · U 2) −σ1] · [2 ·(C pw i,j · −1) a 2 ·(gζ 1 · U 1 · U 2) −σ2] ·(g a 1 · g a 2)
=(1 ·2) ·(C pw i,j · −1)
a 1+ a 2
·(g ζ1 · U 1 · U 2) −(σ1+ σ2) ·(g a 1 · g a 2)
=[ ·(g σ1+ σ2) ς 1]
·[(g σ1+ σ2) ς 2 · g H 1(pw i,j)
1 ·(g · g H 1(pw i,j)
1 ) −1]
a 1+ a 2
·[g ζ1 ·(g ζ2) a 1+ a 2] −(σ1+ σ2) ·(g a 1 · g a 2)
=[ ·(g σ1+ σ2) ς 1] ·(g( σ1+ σ2) ·ς 2 · g −) a 1+ a 2
·[g ζ1 ·(g ζ2) a 1+ a 2] −(σ1+ σ2) · g( a 1+ a 2) ·
= .

5.4. 解密正确性

解密算法Dec1和Dec2的正确性是显而易见的。我们只需要验证部分解密算法的正确性。
e(C 1,x , DK 2) · e(C 2,x , DK 5,δ(x)) · e(C 3,x , DK 4) · e(C 4,x , DK 3)
= e[g λ x 3 · g α ρ (x ) ·tx ,(g ν i , j 1) τ ] · e[g −t x,(g
α ρ (x ) ·νi , j
1 · g H 1( PID i , j ) ·βi
2 · g H 1( δ(x)) ·t 3 ) τ ]
·e[g β ρ (x ) ·tx · g w x ,(g
H 1 (PID i , j )
2 ) τ ]· e[g H 1 (δ(x)) ·tx
3 ,(g t ) τ ]
= e(g 1, g 3) ν i , j ·λx ·τ · e(g, g 1) α ρ (x ) ·t x ·νi , j ·τ
·e(g, g 1) −α ρ (x ) · t x ·νi , j · τ · e[g −t x , g
H 1 (PID i , j ) ·βi ·τ
2 ] · e[g −t x , g
H 1 (δ(x)) ·t·τ
3 ]
·e[g β ρ (x ) · t x , g
H 1 ( PID i , j ) ·τ
2 ] · e[g w x , g
H 1 ( PID i , j ) ·τ
2 ] · e[g H 1 ( δ(x)) ·tx
3 , g t·τ]
= e(g 1 , g 3) ν i , j · λ x · τ · e(g H 1 ( PID i , j )
2 , g) w x · τ
,
∏
x [ e(C 1, x , DK 2) · e(C 2, x , DK 5 , δ(x)) · e(C 3, x , DK 4) · e(C 4, x , DK 3)] c x
= ∏
x
[ e(g 1 , g 3) ν i , j ·λx · τ · e(g H 1 ( PID i , j )
2 , g) w x · τ ] c x
= e(g 1 , g 3) ν i , j ·z·τ,
e(C − 1 , DK 1) = e[g z 1 ,(g
η
2 g
ν i , j
3 ) τ ]= e(g 1 , g 2) η·z·τ · e(g 1 , g 3) ν i , j ·z·τ,
∏ x [ e ( C 1 , x , DK 2) · e ( C 2 , x , DK 5 , δ ( x ) ) · e ( C 3 , x , DK 4) · e ( C 4 , x , DK 3)]
c x
e ( C − 1 , DK 1)
= e (g 1 , g 2) − η· z ·τ.

6. 安全分析

定理 1 .如果 DBDH问题在多项式时间内不可解 ,则该系统是 IND-CPA安全的。
证明 。假设存在一个概率多项式时间(PPT)攻击者A能够破坏所提出系统的安全性,那么就存在一个PPT算法C能够解决DBDH问 题。挑战者C从判定双线性Diffie‐Hellman假设中接收到元组(g, gα, gβ, gη, T)。
•初始化。挑战者C需要利用DBDH元组为系统构造公共参数。C随机选择g3 ∈ G并设置g1= gα,g2= gβ,Y= T。C随机选择哈希 函数H 1: { 0, 1} ∗ → Z ∗p 和 H 2: { 0, 1} ∗ → K,以及具有密钥空间K的密码学安全的对称加密解密对SEnc / SDec。然后,C将公共参 数P P =(g, g 1 , g 2 , g 3 , Y, H 1 , H 2 , SEnc/SDec)发送给攻击者A 。
•查询阶段 1:敌手 A自适应地提出以下查询。
1. O KeyGen.MI:接收到针对医疗机构MI i的密钥生成查询后,挑战者C随机选择αi, βi, νi ∈ RZ ∗p,并计算pk i 1= gαi ,
pk i 2= gβi以及K i 1= gαi 1 ,K i 2= βi ,K i 3= gη2 g νi 1 ,K i 5= gαi ·νi 1 。C将医疗机构MI i的公钥设为PK i=(pk i,  1, pk i 2) ,并将医疗机构MI i的私钥设为SK i=(K i, 1, K i, 2, K i, 3, K i, 4, K i 5) ,然后将其发送给攻击者A 。
2. O KeyGen.User :接收针对用户 u i, j 的属性密钥生成查询,该用户具有假名 PID i, j 和一组属性 { attr k } k ∈[ ϕ] ,挑战者 C随机选
择 νi,j, t ∈ R Z ∗p ∈ R Z ∗p 并计算 sk i,j 1= gη2  gν i j 3, , sk i,j 2= gν i j 1, , sk i,j 3= g t 以及 i,j,k= g αi ·νi, j 1 · g H  1( j) ·βi
2 · i PID , g
H 1(at t rk ) · t 3(其中 k ∈[ ϕ])。然后 C将构造的属性私钥SK i,j =(sk i,j, 1 , sk i,j, 2 , sk i,j 3 ,{ i,j,k} k∈ [ ϕ])发送给攻击者 A 。
3. O KeyGen.Del:收到针对具有假名PID i, j 的用户u i, j 的委托密钥生成查询后,挑战者C首先通过O KeyGen.User 构造属性
私钥SK i,j =(sk i,j, 1 , sk i,j, 2 , sk i,j 3 ,{ i,j,k} k∈[ ϕ]) 。然后,C选择随机数τ ∈ RZ ∗p,并计算DK1=(sk i,j 1) τ、DK2=(sk i,j
2) τ、DK3=(sk i,j 3) τ、DK4=(g H 1( j)
2 ) τ i PID , , DK 5 ,k=(i,j,k) τ(其中k∈[ ϕ])。C发送委托密钥
DK i,j= (DK 1, DK 2, DK 3, DK 4,{ DK 5,k} k ∈[ ϕ])
到攻击者 A 。
4. O KeyGen.BGK :接收针对患者 u i, j的破玻璃密钥生成请求后,挑战者 C随机选择 密码 pw i, j ,随机数  ζ1, ζ2, σ1, σ2 ∈ R Z ∗ p  , 1 ∈ R G ,并设置破玻璃密钥为 BGK i,j = 。
然后, C计算 2= ·(g σ 1+ σ2) ς 1 ·(1) −1, C pw i,j =(g σ 1+ σ2) ς 2 ·g H 1( j )
1
i pw,.紧急访问密钥辅助消息
(BGK i, j , 1 , BGK i, j , 2) 的计算方式为 BGK i,j 1=(σ1, 1, g ζ1, g ζ2, C pw i,j ) 。然后,BGK i, j , 1
和 BGK i, j , 2 被发送给攻击者A 。
5. O Ext ract .BGK:接收到针对患者 u i, j 的破玻璃密钥提取查询及其患者密码 pw i, j 后,挑战者C使用O KeyGen.BGK 和 s 为患者 u i, j  构造应急密钥 BGK i, j,并将其发送给攻击者A 。
•挑战:敌手A发送一个挑战用户u∗ i,j(具有假名P ID∗ i,j)、一个挑战访问策略(A ∗ , ρ ∗ , δ ∗ )以及两个挑战消息(M ∗ 0 、M1∗) 给C,其
中A ∗ ∈ Z ∗l×n∗ p ρ ∗将A ∗的行映射到医疗机构,且δ∗将A ∗的行映射到属性。然后,挑战者C抛掷一枚硬币以随机选择b∈ R{0, 1}。令
A ∗x为A ∗的第x行。
挑战者 C 随机选择 z∗ , v2∗  , ···, v∗ n , w2∗  , ···, w∗ n ∈ R Z ∗ p,并设置 v∗ =(z∗ , v2∗  , ···, v∗ n ) , w∗ =(0, w2∗  , ···, w∗ n ) 。令
λ∗ x= 〈 A ∗x , v∗ 〉  和 w∗ x = 〈 A ∗x , w∗ 〉  分别表示对应于第 x 行的 z∗   和 0 的份额。C  计算转换密钥 T K∗  i,j = g z  ∗ 3
。
C为 A ∗  的第 x 行随机选择 t∗ x ∈ R Z ∗ p,并选择随机的  ∗ ∈ R Z + 。挑战者 C  使用 O KeyGen.BGK 为患者 u∗  i,j 构造破玻璃 密钥 BGK∗  i,j。对于电子医疗文件 M∗  b,患者设置文件编号 F ID∗  ∈G ,并按如下方式计算密文 CT∗   的元素。
ϒ ∗= H 2( BGK ∗ i , j
, P ID ∗ i , j
, F ID ∗ ), C ∗ M ∗ b
= SEnc(ϒ ∗ , M ∗ b || 0 ∗
), C ∗ − 1 = g z ∗
1
,
C ∗ 0 = ϒ ∗ · Y z ∗= ϒ ∗ · T z ∗
,
C ∗ 1 , x = g λ ∗ x
3 ·(pk ρ∗ ( x ) , 1) t ∗ x = g λ ∗ x
3 · g α ρ ∗ (x ) ·t ∗ x ,
C ∗ 2 , x = g − t ∗ x ,
C ∗ 3 , x =(pk ρ∗ ( x ) , 2) t ∗ x · g w ∗ x = g β ρ ∗ (x ) ·t ∗ x · g w ∗ x ,
C ∗ 4 , x = g H 1 ( δ ∗ ( x )) ·

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐