-
摘要: 以区块链为数据存储平台的电子病历系统是当下研究的热点. 存储在区块链上的数据是不可变的, 这加强了数据的安全性. 提出了一个基于区块链的电子病历数据共享方案, 实现了患者和第三方数据用户在不侵犯患者隐私的前提下共享患者电子病历. 使用私有链与联盟链构造方案的系统模型, 医院服务器上存储患者的电子病历密文, 私有链上存储患者病历密文的哈希值和关键字索引, 联盟链上存储由关键字索引构成的安全索引. 同时利用可搜索加密技术实现了联盟链上对关键字的安全搜索, 运用代理重加密算法实现了第三方数据用户对患者电子病历的共享. 通过数值实验对方案进行了性能评估.Abstract: The electronic medical record system with blockchain as the data storage platform is a key research topic. The data stored in the blockchain is immutable and strengthens the security of data. This paper proposes an electronic medical record data sharing scheme based on blockchain. The scheme enables patients and third-party data users to share the patient's electronic medical records without infringing the patient's privacy. This paper construct system model by the private blockchain and consortium blockchain, and stores the patient's electronic medical record ciphertext on the hospital server. The hash of the patient's medical record ciphertext and the keyword index are stored in the private blockchain, and the security index consisting of the keyword index is stored in the consortium blockchain. At the same time, the searchable encryption technology is used to implement secure search of keywords in the consortium blockchain, the proxy re-encryption algorithm realizes the sharing of electronic medical records of patients by third-party data users. The performance evaluation of the scheme is carried out by numerical simulation.
-
Key words:
- Electronic medical record /
- blockchain /
- proxy re-encryption /
- searchable encryption /
- data sharing
-
随着时代的变化, 科技已渐渐融入人类生活的各个方面. 传统的医疗保健体系已然跟不上当代便捷生活的脚步, 电子病历的出现更加有效地解决了患者诊断信息的存储、查询、数据共享和医疗错误等问题[1]. 电子病历使患者拥有一个更全面的诊断信息, 在就诊时能够让医生更快捷、准确的了解患者以往病情, 并给出新的诊断结果. 文献[2-4]为电子病历的应用提供了切实的范例. 区块链本质上是一个去中心化的分布式存储系统, 能够为电子病历提供平台支持, 生成永久、不可逆向修改的记录[5-7]. 近年来, 鉴于区块链对电子病历的应用优势, 多位学者相继提出了针对不同问题的方案, Yue等[8]提出一种基于区块链的数据网关架构, 并且利用安全多方计算使第三方用户在不侵犯患者隐私的情况下对存储数据进行计算. 文献[9]提出了基于区块链的数据共享框架, 解决了与云中敏感信息相关的访问控制问题. 该方案是基于许可链构造的, 只允许受邀用户访问数据. 张超等[10]构造了一个基于区块链的医疗系统, 该系统构建于联盟链之上, 通过实用拜占庭容错算法, 保证以很小的算力来实现系统安全稳定的运行, 同时能够防止医疗数据被篡改、泄露. Chen等[11]提出一种基于区块链共享医联体数据服务的框架, 重点突出了实施方案不依赖于任何不可信的第三方的特性, 可实现患者数据的安全存储与隐私保护. 文献[12]构建了一种基于区块链的保护个人隐私信息安全的共享协议, 并提出了具体的系统模型及方案. 该方案在私有链与联盟链上进行构造, 结合关键字搜索技术与联盟链实现了对患者信息的安全搜索, 同时保证了患者的数据安全和隐私保护. 区块链上电子病历的最大优势是多方数据用户都能共享患者数据, 但现有的许多文献讨论患者或者医生某一方搜索并解密病历数据. 针对这一问题, 本文提出了一种基于区块链的电子病历数据共享方案. 在方案中, 不但患者可以搜索解密自己的病历数据, 经过授权的第三方机构或个人数据用户在不能侵犯患者隐私的前提下也可以访问患者数据. 本文的创新点有以下3个方面:
1)基于区块链提出了电子病历数据共享方案, 实现了第三方数据用户对患者数据的安全访问. 方案模型的构造利用了私有链与联盟链. 每家医院都拥有自己的私有链与服务器, 多个私有链一起构建联盟链. 患者病历密文存储在医院服务器, 病历密文的哈希值和关键字索引存储在医院私有链上, 而由私有链块标识、患者伪身份和关键字索引构成的安全索引则存储在联盟链上;
2)使用可搜索加密技术实现了安全搜索. 联盟链上存储了由关键字索引所构成的安全索引. 当有患者或者数据用户需要使用电子病历数据时, 患者使用自己的私钥产生搜索陷门发送至联盟链, 联盟链上节点进行搜索;
3)使用代理重加密技术实现了第三方数据用户对患者数据的安全访问. 经患者授权后, 联盟链上节点在搜索到患者病历的原始密文后, 对原始密文进行代理重加密, 将转换后的密文发送给第三方数据用户, 数据用户使用自己的私钥解密密文.
1. 相关工作
1.1 双线性映射
定义1. 令
$ {G_{1}} $ 和$ {G_{2}} $ 为两个阶为素数$ q $ 的乘法循环群, 定义一个双线性映射$ {e : G_{1} \times G_{1} \rightarrow G_{2}} $ 满足如下性质:1)双线性: 对于任意
$ {a,b \in Z _{q}^{*}} $ 和$ {x,y} $ $ { \in G _{1}} $ ,$ {e(x^a,y^b) = e(x,y)^{ab}} $ 成立;2)非退化性: 存在
$ {x,y} {\in G _{1}}, $ 使得$ {e(x,y)\neq 1} ;$ 3)可计算性: 对于任意的
$ {x,y} $ $ {\in G_1}, $ 存在有效算法计算$ {e(x,y)}. $ 1.2 可搜索加密
可搜索加密是由Boneh等[13]在2004年提出的, 它可以对加密数据进行搜索. 在公钥密码体制下, 用户将明文消息的关键字加密后发送至服务器, 用搜索陷门搜索关键字. 在提出该密码原语之后, 对关键字搜索加密的研究陆续展开. 2008年, Baek等[14]指出Boneh等[13]的方案存在安全信道的问题, 通过使用服务器公钥加密搜索陷门的方法改进了方案, 并证明其安全性. 为了提高搜索的安全性, Hu等[15]提出了指定验证者的可搜索加密方案. 文献[16]将可搜索加密技术与代理重加密技术相结合, 允许被授权者从委托者的数据中搜索感兴趣的关键字. 在某些情况下需要搜索多个关键字, 文献[17-18]提出了带有联合字段关键字搜索的公钥加密方案. 本文提出了一种基于区块链的电子病历关键字搜索方案. 该方案将由关键字索引构成的安全索引存储在联盟链上, 实现了关键字搜索功能.
1.3 代理重加密
代理重加密是由Blaze等[19]在1998年提出的一个新的密码原语. 代理重加密的中心思想是对密文的转换, 其参与者有委托者、代理者和受托者, 代理者能够将受托者生成的密文转换为委托者对同一消息的密文. 根据密文转换方向, 可将代理重加密分为单向和双向. 单向代理重加密能够实现受托者密文向委托者密文的转换, 双向代理重加密能够实现密文的双向转换. 近几年代理重加密仍然是密码学界中的研究热点. Fang等[20]提出了带关键字查询的代理重加密的概念, 并构造了具体方案. Shao等[21]提出了基于身份的多用户代理重加密, 并证明其安全性. Tang等[22]基于多线性映射构造了一个单向代理重加密方案. 刘振华等[23]提出一个支持关键词搜索的密文策略的属性代理重加密方案, 利用属性代理重加密实现了数据转发与数据共享, 并且支持数据检索功能. 在这项工作中, 本文将代理重加密技术应用于方案的数据搜索阶段, 提出了一个基于区块链的电子病历方案, 实现了第三方数据用户对患者数据的安全访问. 当搜索到患者的原始密文后, 联盟链[24]上节点通过使用代理重加密算法进行密文转换.
2. 系统模型与安全模型
2.1 系统模型
在该系统中, 假设由多个医院组成一个联盟链, 其中每个医院都有本地服务器和和若干个客户端, 客户端是由医生进行操作的. 每家医院构建自己的私有链, 而多个私有链构建一个联盟链. 在进入系统前, 患者、医生和数据用户都需要进行注册, 生成各自的公私钥对. 其中, 患者的电子病历密文存储在医院服务器上, 电子病历密文的哈希值和关键字索引存储在医院私有链上, 而由私有链块标识、患者伪身份和关键字索引构成的安全索引则存储在联盟链上. 系统中主要包括患者、医生、数据用户、医院服务器、私有链、联盟链6个实体, 系统模型图如图1所示.
1)患者: 患者在医院就诊时首先在医院服务器上进行注册, 注册完成后医院服务器给患者分配一个号码牌, 相当于患者的就诊卡. 患者保密该号码牌, 并在就诊时出示号码牌. 医生为患者产生电子病历和关键字, 并用患者公钥进行加密. 若患者去其他医院就诊, 当医生需要了解患者的过往病史时, 患者生成搜索陷门并上传至联盟链. 联盟链上节点运行搜索算法后, 将电子病历密文发送给患者, 患者可解密该密文.
2)医生: 每个医院都有本地服务器和和若干个客户端, 客户端是由医生进行操作的. 当患者就诊时, 医生为患者产生伪身份、电子病历密文、关键字密文和证据, 并将电子病历密文上传至医院服务器, 将病历密文的哈希值和由关键字密文和证据构成的关键字索引上传至私有链, 产生新交易, 并广播该交易. 私有链上的其他节点负责验证该交易, 若验证通过, 则生成私有链上新的区块.
3)数据用户: 当除了医院和患者以外的第三方机构或个人(称为数据用户)访问患者数据时, 需要得到患者授权. 患者生成搜索陷门并上传至联盟链, 联盟链上节点进行搜索, 当搜索到相应患者密文后, 联盟链上节点作为代理者为数据用户产生代理重加密密文. 最后, 数据用户可用自己的私钥解密密文.
4)医院服务器: 当医生为患者治疗并生成电子病历后, 医院服务器提取私有链上的私有链块标识、患者伪身份和关键字索引来构建联盟链上新的交易, 而在联盟链中的其他节点负责验证该交易, 若验证通过, 则生成联盟链上新的区块.
5)私有链: 医生将电子病历密文的哈希值、由关键字密文和证据构成的关键字索引上传至私有链, 产生新交易. 当收到医生构建的新交易后, 私有链上节点验证该交易. 医院服务器提取私有链上的私有链块标识、患者伪身份和关键字索引来构建联盟链上新的交易. 在数据获取阶段, 若搜索成功, 联盟链上节点提取块上安全索引, 获得私有链块标识. 而通过私有链块标识, 联盟链上节点能获取到病历密文的哈希值.
6)联盟链: 在搜索过程中, 当收到患者发送的陷门后, 联盟链上节点运行搜索算法. 若搜索成功, 联盟链上节点提取块上安全索引, 获得私有链块标识. 通过私有链块标识, 联盟链上节点获取到病历密文哈希值并反馈给医院服务器, 医院服务器对电子病历密文的哈希值进行对比, 若一致, 则将病历密文发送给联盟链上节点, 联盟链上节点将病历密文返回给患者. 当第三方数据用户访问患者电子病历时, 联盟链上节点扮演代理者的角色生成代理重加密密钥, 对电子病历的密文进行代理重加密后并将重加密后密文发送给第三方用户.
2.2 安全模型与设计目标
假设医院服务器与计算机客户端均为半可信, 攻击者可以窃听传输信道中的信息, 比如安全索引、电子病历密文和搜索陷门, 不允许计算机客户端与服务器串通以推断用户的真实身份. 基于以上存在的安全问题, 要实现的安全目标如下:
1)数据安全与访问控制: 加密和签名保证了数据的机密性和完整性, 即实现了数据安全. 当医生访问数据时, 系统可以通过识别、认证和授权等机制来实现访问控制. 当数据用户访问数据时, 系统可以通过代理重加密技术来实现访问控制. 同时, 本文利用私有链和联盟链来增强数据的安全性.
2)隐私保护: 系统通过匿名性和不可追踪性来实现患者的隐私保护. 其中患者伪身份的产生不仅实现了匿名性, 同时保护了患者的身份信息和相关的敏感隐私. 同时, 窃听者无法判断两个或多个电子病历是否来自同一患者, 保证了数据的不可链接性. 而且窃听者无法通过患者伪身份追踪患者的真实身份.
3)安全搜索: 系统通过指定验证者来保证搜索的安全性. 在搜索过程中, 系统指定由患者生成陷门, 联盟链上节点进行搜索. 在这个过程中, 窃听者无法猜出关键字.
4)系统可用性: 区块链的共识机制并不会泄露患者的隐私. 联盟链的一致性证明是通过验证安全索引中的关键字是否属于关键字集来实现. 在联盟链验证过程中, 窃听者并不能得到该关键字. 而私有链的一致性证明是通过验证患者是否授权医生生成病历密文来实现, 在私有链验证过程中, 窃听者无法得知患者的真实身份.
2.3 数据结构
本文在系统中使用了私有链与联盟链, 都分别存储了不同的数据, 因此具有不同的数据结构. 私有链的数据结构如表1所示. 它由时间戳、块头和交易组成. 块头包括: 块的
$ {ID} $ 、块的大小和前块的哈希. 交易包括: 块产生者(医生)的$ {ID} $ 、患者伪身份、关键字索引、病历密文的哈希和块产生者(医生)的签名. 块产生者的签名有助于追踪医生, 时间戳显示块的生成时间, 关键字索引由关键字密文和证据构成.表 1 私有链的数据结构Table 1 Private chain data structure时间戳 块头 交易 块标识 块大小 前块哈希 块产生者身份 患者伪身份 关键字索引 密文哈希 块产生者签名 t ${ID_b}$ size hash 医生${ID}$ ${ID_a}$ ${(C_{a_1},C_{a_2})}$ hash${(C_{a_0})}$ 医生签名 联盟链的数据结构如表2所示. 它由时间戳、块头和交易组成. 块头包括: 块的
$ {ID} $ 、块的大小和前块的哈希. 其中交易包括: 块产生者(医院服务器)的$ {ID} $ 、安全索引和块产生者(医院服务器)的签名. 医院服务器在一定时间间隔内创建新块. 期间, 医院服务器会收集私有链上块的块$ {ID} $ 、患者伪身份和关键字索引来构成该块的安全索引.表 2 联盟链的数据结构Table 2 Consortium chain data structure时间戳 块头 交易 块标识 块大小 前块哈希 块产生者身份 安全索引 块产生者签名 t 联盟链块${ID}$ size hash 医院服务器${ID}$ ${T_{Xa}=(ID_b,ID_a,(C_{a_1},C_{a_{2}}))}$ 服务器签名 2.4 共识机制
本文所用的区块链系统就是一个分布式的数据库, 共识机制保证了数据的完整与同步, 即数据的一致性.
1)私有链的一致性证明: 当患者到医院注册后, 医院服务器为其产生号码牌并分配医生. 当患者与医生交互后, 医生为患者产生电子病历密文. 为了保证患者匿名性, 医生为患者生成伪身份. 最后, 医生构建交易并广播至医院私有链. 私有链上的验证者验证患者是否授权医生生成电子病历, 即
$ {\eta} $ 与号码牌是否匹配. 若匹配, 则验证者验证通过. 若超过2/3的验证者验证通过, 则私有链生成新的区块.2)联盟链的一致性证明: 在数据加密阶段, 系统定义了一个关键字集
${W = {\{w_1,w_2,\cdots,w_n\}}},$ 其中包含了患者有可能出现的所有症状的描述. 而本文加密的关键字都是从关键字集$ {W} $ 中选取的. 在本文的系统中对联盟链的一致性证明描述为: 联盟链上的验证者验证新块中安全索引上的关键字密文是否来自关键字集$ {W = {\{w_1,w_2,\cdots,w_n\}}}. $ 为了实现联盟链上的一致性证明, 系统构造了一个多项式$ {f(x)} ,$ 具体如下: 对于关键集$ {W} ,$ 系统计算$ H_1(w_1),H_1(w_2),\cdots,$ $ H_1(w_n), $ 并定义多项式${f(H_1(w_i)) = 0,i \in (1,2,\cdots,n)},$ 即${f(x) = (x-H_1(w_1))(x - H_1(w_2))\cdots(x - H_1(w_n))} = $ ${0} . $ 假设存在向量$ {{\boldsymbol b} = [{{1,b_{n-1},\cdots,b_0}}]} $ 使得多项式可以表示为$ {f(x) = x^n+b_{n-1}x^{n-1}+\cdots+b_1x+b_0}, $ 转换等式为$ {x^n+b_{n-1}x^{n-1}+\cdots+b_1x = -b_0}, $ 其中$x = $ ${H_1(w_i), i \in (1,2, \cdots,n)} .$ 若设置向量$ {\boldsymbol a} = [a_n = -{b_1}/{b_0}, $ $\cdots, a_1 = -{b_1}/{b_0}] , $ 则系统可推出新多项式$g(x) = a_{n}x^n + $ $\cdots + a_{1}x,$ 且${g(H_1(w_i)) = 1,\;i\in(1,2,\cdots,n)} .$ 若存在向量${{\boldsymbol h} = \{{{H_1(w_1),\,H_1(w_2)^{2},\cdots,H_1(w_n)^{n}}}\}} ,$ 则有等式${{\boldsymbol a}{\boldsymbol h} = 1} .$ 若数据加密过程中使用的关键字属于关键字集$ {W = {\{w_1,w_2,\cdots,w_n\}}} ,$ 则等式$ {{\boldsymbol a}{\boldsymbol h} = 1} $ 成立. 若超过2/3的验证者验证通过, 则联盟链生成新的区块.2.5 方案模型
方案可以分为数据产生、数据存储和数据搜索三个阶段. 图2为数据产生与数据存储过程, 图3为数据搜索的过程.
假设患者
$ {a} $ 去医院$ {i} $ 看病, 由医生$ {d} $ 进行诊断. 患者$ {a} $ 看病之前需要在医院$ {i} $ 的服务器上进行注册. 医院的服务器为患者产生号码牌$ {\beta} $ , 并计算$ {\mu = H_1(\beta)} $ 存储在系统中. 患者在见到医生后出示号码牌$ {\beta} $ , 相当于授权给医生为自己生成电子病历$ {m} $ 和关键字$ {w} $ . 医生用患者的公钥$ {pk_{a}} $ 加密$ {m} $ 和$ {w} $ . 输出密文$ C_a = \{C_{a_{0}},C_{a_{1}},C_{a_{2}}\}$ .$ {C_{a_{0}}} $ 为电子病历$ {m} $ 的密文,$ {C_{a_{1}}} $ 为关键字$ {w} $ 的密文,$ {C_{a_{2}}} $ 为联盟链上的一致性证明提供了依据. 其中,$ {C_{a_{0}}} $ 存储在医院$ {i} $ 的服务器上,$ {C_{a_{0}}} $ 的哈希值和由$ {C_{a_{1}}} $ 、$ {C_{a_{2}}} $ 构成了关键字索引作为交易存储在私有链上. 而由私有链块标识$ {ID_b} $ 、患者伪身份$ {ID_a} $ 和关键字索引$ {(C_{a_{1}},C_{a_{2}})} $ 构成的安全索引作为交易存储在联盟链上.为了实现患者的匿名性, 医生为患者产生伪身份. 未经患者本人授权, 其他用户不能将伪身份与真实身份相关联. 不同医生为同一患者产生的伪身份也不同, 以实现不可链接性. 最后, 医生构建新交易, 并广播至医院私有链. 当收到该交易后, 私有链的验证者进行验证, 生成了如表1数据结构的新区块. 医院服务器提取私有链中每个新的块标识
$ {ID_b} $ 、患者伪身份$ {ID_a} $ 和关键字索引$ {(C_{a_{1}},C_{a_{2}})} $ 构成安全索引$ {T_{X_a}} $ . 其中$ {T_{X_a} = (ID_b,ID_a,(C_{a_1},C_{a_2}))} $ . 服务器将在私有链上收集到的$ {T_{X_a}} $ 作为交易上传至联盟链, 联盟链上节点进行验证, 若验证通过, 生成如表2数据结构的新区块.若去其他医院就诊, 当医生想要查看该患者相关的历史诊断记录时, 患者将搜索陷门
$ {T_{1}} $ 和$ {T_{2}} $ 发送至联盟链, 联盟链上节点进行搜索. 若搜索成功, 联盟链上节点提取安全索引中的私有链块标识$ {ID_b} $ . 且通过私有链块标识$ {ID_b} $ , 联盟链上节点可以得到病历密文的哈希值, 由医院服务器进行密文哈希值对比得到病历密文并返回给联盟链上节点. 最后, 患者可用自己的私钥解密该密文.当经过患者授权的数据用户要访问患者历史诊断记录数据时, 患者将搜索陷门发送到联盟链上进行关键字密文搜索. 若搜索成功, 联盟链上节点作为代理者进行代理重加密并将重加密密文发送给数据用户, 数据用户用自己的私钥进行解密获得患者的电子病历.
2.6 方案设计
本文方案由系统建立、数据产生与存储、数据搜索与访问3个步骤组成.
1)系统建立:
本阶段系统运行参数生成算法生成公共参数
$ {PP} $ , 患者、医生和数据用户分别生成各自的公私钥对. 每次患者去医院就诊时, 医院选择随机数$ {\beta\in Z_{q}^{*}} $ , 将$ {\beta} $ 安全地发送给患者. 同时, 医院为该患者指定一名医生, 计算$ {\mu = {H{_{1}}(\beta)}} $ 并发送到医院服务器.a)初始化:
系统输入安全参数
$ {\lambda}, $ 输出双线性对$ e:G_{1} \times $ ${G_{1}}\rightarrow {G_{2}}, $ 其中${G_{1}、G_{2}}$ 是阶数为素数$ {q} $ 的乘法循环群, 选择生成元$ {g\in{G_{1}}}, $ 计算$ {h = e(g,g)}. $ 定义6个哈希函数${H_{1} : \{0,1\}^{*} \rightarrow {Z^{*}_{p}}}、 {H_{2} : \{0,1\}^{*} \rightarrow {G_{1}}}、 H_{3} : \{0,1\}^{*} \times$ $\{0,1\}^{*}\rightarrow G_{1}、 {H_{4}:G_{2}\rightarrow{\{0,1\}^{*}}}、 H_{5}:\{0,1\}^{*}\times G_{1}\rightarrow {Z^{*}_{p}}$ 和$ {H_{6}:G_{1}\rightarrow\{0,1\}^{*}}. $ 设置公共参数$PP = (g,h,e,q,$ $G_{1}, G_{2},H_{1}, H_{2},H_{3},H_{4},H_{5},H_{6}).$ b)密钥生成:
患者
$ {a} $ 随机选择$ {x_{a}\in Z_{q}^{*}} $ 作为私钥$ {sk_{a}} ,$ 并计算公钥$ {pk_{a} = {g^{x_{a}}}}. $ 医生$ {d} $ 随机选择$ {x_{d}\in Z_{q}^{*}} $ 作为其私钥$ {sk_{d}}, $ 并计算公钥$ {pk_{d} = {g^{x_{d}}}}. $ 数据用户$ {u} $ 随机选择$ {x_{u}\in Z_{q}^{*}} $ 作为私钥$ {sk_{u}} ,$ 并计算其公钥$ {pk_{u} = {g^{x_{u}}}} .$ 通过激励机制, 选择相应的联盟链上节点作为验证者运行搜索算法和作为代理者执行代理重加密算法. 同时联盟链上的节点选择$ {x_{s}\in Z_{q}^{*}} $ 作为私钥$ {sk_{s}}, $ 计算公钥$ {pk_{s} = {g^{x_{s}}}} .$ c)重加密密钥生成:
输入患者
$ {a} $ 和数据用户$ {u} $ 的私钥$ {(sk_{a},sk_{u})} $ , 采用文献[13]的方法为代理者产生代理重加密密钥$ {rk = {sk_{u}}/{sk_{a}}} $ .2)数据产生与存储:
当患者就诊时, 向医生出示
$ {\beta}, $ 医生对病患诊断后产生病历$ {m{\in{\{0,1\}^{*}}}} .$ 并提取关键字$ {w{\in{\{0,1\}^{*}}}} .$ 医生用患者的公钥$ {pk_{a}} $ 加密$ {m} $ 和$ {w}. $ 具体步骤如下:a)加密:
输入病历
$ {m{\in{\{0,1\}^{*}}}} $ 和关键字$ {w\in{\{0,1\}^{*}}} ,$ 医生随机选择$ {r\in{Z_{q}^{*}}} ,$ 计算${B = pk_{a}^{r}}, {C = e(g^r,H_2(\beta))\times m},$ ${t = e(g^r,H_3(\beta,w))} ,\; {F = H_4(t)} $ .计算向量
${{\boldsymbol X} = [{{X_1, X_2, \cdots, X_n}}]},$ 其中${X_1 = g^{rH_1(w)}},$ $ {X_2 = g^{rH_1(w)^{2}}},\cdots,{X_n = g^{rH_1(w)^{n}}} $ .计算
$ {r_0 = H_5(w,B)} $ ,$ {A = g^{rH_1(w)+r_0(sk_{d}+H_1(w))}} $ ,$ {Y = h^{r_0(sk_{d}+H_1(w))}} $ .记
${C_{a_0} = (B, C)} ,{C_{a_1} = (B, F)} ,{C_{a_2} = (A,Y,{\boldsymbol X})} .$ 其中,$ {C_{a_0}} $ 为电子病历$ {m} $ 的密文,$ {C_{a_1}} $ 为关键字$ {w} $ 的密文,$ {C_{a_2}} $ 为联盟链上的一致性证明提供了依据.$ {C_{a_0}} $ 存储在医院$ {i} $ 的服务器上, 医生将$ {C_{a_0}} $ 的哈希值和由$ {C_{a_1}} $ 、$ {C_{a_2}} $ 构成的关键字索引上传至私有链上.b)患者伪身份生成:
患者的真实身份为
$ {RID_a}, $ 医生随机选取$ {k\in{Z_{q}^{*}}}, $ 计算患者伪身份$ {ID_a = RID_a\oplus H_1(\beta)^{k}} $ 并保密$ {k}. $ 为了提供私有链上的一致性证明, 医生计算${\eta} = (\alpha =$ $ { g^{{k+sk_{d}}/{H_1(\beta)}},\beta^{'} = H_6(g^{k})\oplus \beta)}. $ 最后, 医生利用关键字索引、医生身份和医生签名来构建新交易并将交易广播至医院私有链. 收到新交易后, 私有链上的验证者对新交易进行验证: 从交易中提取$ {\eta = (\alpha,\beta^{'})} ,$ 并在医院服务器中搜索$ {\mu} ,$ 计算$\beta^{*} = H_6(\alpha^{\mu}\cdot pk_{d}^{-1})\oplus$ $\beta^{'},$ 检查$ {\mu = H_1(\beta^{*})} $ 是否成立.若等式成立, 则新交易有效, 验证者广播验证确认消息, 当收到
$ {\left[{2}/{3}np\right]} $ 的验证确认消息之后, 私有链接受新交易, 并生成如表1数据结构的新区块. 否则, 拒绝新块加入私有链.$ {[np]} $ 表示私有链中的节点数量.正确性:
$$ \begin{split} H_{1}(\beta ^{*}) = &H_{1} (H_{6}({\alpha}^{\mu} \cdot pk_{D}^{ - 1}) \oplus {\beta ' })= \\ & H_{1}(H_{6}({g^{{{k + sk_d}}/{{H_{1}(\beta )}}\cdot H_1(\beta)}} \cdot {g^{ -sk_d}}) \oplus {\beta '}) =\\ & H_{1}(H_{6}({g^{k + sk_d}} \cdot {g^{ -sk_d}}) \oplus {\beta '}) =\\ & H_{1}(H_{6}(g^{k}) \oplus H_{6}(g^{k}) \oplus \beta )= H_{1}(\beta ) = \mu \end{split} $$ c)数据存储:
在每个私有链中, 服务器提取每个新块的块标识、患者伪身份和关键字索引, 令安全索引
$T_{X_a} = $ $ { (ID_b,ID_a,(C_{a_1},C_{a_2}))}, $ 服务器利用安全索引、服务器身份和服务器签名来构建新交易并将交易广播至联盟链.收到新交易后, 联盟链上的验证者验证等式
$e\left( {\prod\nolimits_{i = 0}^{i = n} {X_i^{{a_i}}, {X_2}} } \right) = e( {{X_1}, {X_1}} )$ 和等式$e(A,g) = e(X_{1}, g)Y$ 是否成立. 其中$ {a_{i}} $ 为联盟链中的共识机制构造的多项式$ {g(x) = a_{n}x^n+\cdots+a_{1}x} $ 的常数项. 若等式成立, 则新交易有效, 验证者广播验证确认消息, 当收到$ {[{2}/{3}np]} $ 的验证确认消息之后, 联盟链接受新交易, 并生成如表2数据结构的新区块. 否则, 拒绝新块加入联盟链.$ {[np]} $ 表示联盟链中的节点数量.正确性:
$$ \begin{split} &e\left(\prod\limits_{i = 0}^{n} X_{i}^{a_{i}},X_{2}\right) = e\left(\prod\limits_{i = 0}^{n} g^{ra_{i}H_1(w)^{i}},g^{rH_1(w)^{2}}\right) =\\ &\qquad e\left(\prod\limits_{i = 0}^{n} g^{r(a_{n}H_1(w)^n+\cdots+a_{1}H_1(w))},g^{rH_1(w)^{2}}\right)=\\ & \qquad e\left(g^{r({\boldsymbol a}{\boldsymbol h})},g^{rH_1(w)^{2}}\right)= e\left( g^{r},g^{rH_1(w)^{2}}\right)=\\ & \qquad e\left(g^{rH_1(w)},g^{rH_1(w)}\right)= e(X_{1},X_{1}) \end{split} $$ $$\;\; \begin{split} e(A,g)=\;& e(g^{rH_1(w)+r_0(sk_{d}+H_1(w))},g)=\\ & e(g^{rH_1(w)},g)e(g^{r_0(sk_{d}+H_1(w))},g)=\\ & e(X_{1},g)e(g^{r_0(sk_{d}+H_1(w))},g)= e(X_{1},g)Y\;\quad\qquad \end{split} $$ 3)数据搜索与访问:
当患者或数据用户想要访问病历数据时, 患者使用私钥为其产生搜索陷门并发送到联盟链. 具体过程如下:
a)陷门生成:
患者随机选择
${r_{w} \in {Z_{q}^{*}}},$ 计算陷门$ T_{1} = H_3(\beta,w)^{{1}/{sk_{a}}} $ $ pk_{s}^{r_{w}} ,{T_{2} = g^{r_{w}}} $ .b)搜索:
联盟链上节点计算
$ {T_{w} = {T_{1}}/{T_{2}^{sk_{s}}}} $ 并验证等式$ {F = H_{4}(e(B,T_{w}))} $ 是否成立. 若成立, 联盟链上节点提取安全索引$ {T_{X_a} = (ID_b,ID_a,(C_{a_1},C_{a_2}))} $ 并获得私有链块标识$ {ID_b} $ . 通过私有链块标识$ {ID_b} $ , 联盟链上节点访问相应的私有链得到病历密文的哈希值, 由医院服务器进行密文哈希值对比后得到病历密文$ {C_{a_0}} $ , 并将其返回给联盟链上节点.正确性:
$$ \begin{split} H_{4}(e(B,T_{w})) =& H_{4}\left(e\left(pk_{a}^{r},\frac{T_{1}}{T_{2}^{sk_{s}}}\right)\right)= \\ & H_{4}\left(e\left(pk_{a}^{r},\frac{H_3(\beta,w)^{\frac{1}{sk_{a}}}pk_{s}^{r_{w}}}{g^{r_{w}sk_{s}}}\right)\right) = \\ & H_{4}\left(e(pk_{a}^{r},H_3(\beta,w)^{\frac{1}{sk_{a}}})\right) =\\ & H_{4}(e(g^{r},H_3(\beta,w))= H_{4}(t)= F \end{split} $$ c)解密:
情形1. 当患者需要访问病历数据时, 联盟链上节点发送
$ {C_{a_0}} $ 给患者, 患者计算明文$m = {C}/e(B, H_2(\beta))^{{1}/{sk_{a}}}.$ 当医生需要访问病历数据时, 患者将明文$ {m} $ 发送给医生.正确性:
$$ \begin{split} \frac{C}{e(B,H_2(\beta))^{\frac{1}{sk_{a}}}}=& \frac{e(g^{r},H_2(\beta))m}{e(g^{sk_{a}r},H_2(\beta))^{\frac{1}{sk_{a}}}} =\\ & \frac{e(g^{r},H_2(\beta))m}{e(g^{r},H_2(\beta))}= m \end{split} $$ 情形2. 当数据用户
$ {u} $ 共享数据时, 代理者产生代理重加密密钥$ {rk = {sk_{u}}/{sk_{a}}} , $ 并用$ {rk} $ 对密文$ {C_{a_0} = (B,C)} $ 进行重加密, 计算$ {B^{'} = B^{rk}}, $ 则重加密密文为$ C_{a_0}^{'} =$ $ (B^{'},C). $ 代理者将重加密密文$ {C_{a_0}^{'}} $ 发送给数据用户$ {u} ,$ 数据用户计算$m = {C}/e(B^{'}, H_2(\beta))^{{1}/{sk_{u}}}$ .正确性:
$$ \begin{split} \frac{C}{e(B^{'},H_2(\beta))^{\frac{1}{sk_{u}}}} = &\frac{C}{e(B^{rk},H_2(\beta))^{\frac{1}{sk_{u}}}} =\\ & \frac{C}{e(g^{sk_{a}\frac{sk_{u}}{sk_{a}}r},H_2(\beta))^{\frac{1}{sk_{u}}}} =\\ & \frac{e(g^{r},H_2(\beta))m}{e(g^{r},H_2(\beta))} = m \end{split} $$ 3. 安全分析
本节分析本文提出方案如何有效地满足系统模型中提出的设计目标.
3.1 数据安全与访问控制
区块链的基本特性使得存储在区块链中的数据是不可更改的, 确保数据无法修改, 除非攻击者具有全网百分之五十一的计算能力. 电子病历密文是使用患者的公钥加密的, 因此只有用患者的私钥才能解密数据, 保证了数据的机密性. 本文构建私有链上新区块时附有医生的签名, 而在构建联盟链上新区块时附有医院的签名, 这保证了数据的完整性. 存储在区块链上的密文, 只允许经过身份验证的访问者获取. 若医生需要患者数据, 患者上传搜索陷门, 联盟链上节点进行搜索后返回密文给患者, 患者解密后给医生. 当数据用户访问数据时, 首先与患者和联盟链上节点交互得到代理重加密密钥, 而后联盟链上节点运行代理重加密算法得到重加密密文, 相当于患者对数据用户进行授权. 因此, 患者能够对自己的电子病历进行访问控制.
3.2 隐私保护
医生为患者生成的伪身份
${ID_a = }{RID_a\oplus H_1(\beta)^{k}},\;$ 窃听者无法得到$ {\beta} $ 和随机数$ {k} $ , 无法推出患者的真实身份, 因此, 本文方案实现了匿名性和不可追踪性, 保护了患者的身份信息. 如表2所示, 私有链区块上附有患者伪身份; 如表3所示, 联盟链区块上的安全索引包含患者伪身份, 即使是同一个患者, 由于$ {k} $ 的随机性, 则每次生成的患者伪身份不同. 因此, 窃听者无法判断两个或多个电子病历密文是否来自同一患者, 保证了数据的不可链接性. 表3中$\checkmark $ 和$\times $ 分别表示是否具有该功能.表 3 功能特性比较Table 3 Comparisons of functional properties功能特性 文献[5] 文献[12] 文献[25] 文献[26] 文献[27] 文献[28] 本文方案 区块链 $\times$ $\checkmark$ $\checkmark$ $\times$ $\times$ $\times$ $\checkmark$ 访问控制 $\checkmark$ $\checkmark$ $\checkmark$ $\checkmark$ $\checkmark$ $\checkmark$ $\checkmark$ 隐私保护 $\checkmark$ $\checkmark$ $\checkmark$ $\checkmark$ $\checkmark$ $\checkmark$ $\checkmark$ 安全搜索 $\checkmark$ $\checkmark$ $\times$ $\times$ $\checkmark$ $\checkmark$ $\checkmark$ 第三方数据共享 $\times$ $\times$ $\times$ $\times$ $\checkmark$ $\checkmark$ $\checkmark$ 3.3 安全搜索
在搜索过程中, 患者利用自己的私钥和联盟链上节点的公钥生成陷门, 联盟链上节点利用自己的私钥进行搜索. 因为陷门
${T_{1}、T_{2}}$ 涉及患者私钥$ {sk_{a}} $ 和号码牌$ {\beta} $ , 搜索算法中涉及了联盟链上节点私钥$ {sk_{s}} $ , 即使窃听者得知陷门, 也无法推断出关键字和号码牌$ {\beta} $ , 进而无法推断出患者的真实身份, 有助于抵抗关键词猜测攻击.3.4 系统可用性
在联盟链上, 共识机制需要医院服务器提供证据验证关键字索引中的关键字属于关键字集. 若
${C_{a_2} = (A,Y,{\boldsymbol X})}$ 可以通过等式$e\left( {\prod\nolimits_{i = 0}^{i = n} {X_i^{{a_i}},{X_2}} } \right) = e\left( {{X_1},{X_1}} \right)$ 则等式$ {{\boldsymbol a}{\boldsymbol h} = 1} $ 成立, 这意味着数据加密过程中使用的关键字属于关键字集$W = \{w_1,w_2,\cdots, w_n\}$ . 而且医生在构造证据$ {C_{a_2}} $ 时使用的是关键字$ {w} $ 的哈希值$ {H_1(w)} $ , 由于哈希函数的单向性, 即使窃听者获得证据$ {C_{a_2} = (A,Y,{\boldsymbol X})} $ , 但窃听者无法得到任何与关键字有关的信息. 在私有链上, 验证者通过验证患者是否由授权医生生成电子病历来确定新块的有效性. 虽然交易中包含患者的伪身份, 但患者的伪身份$ {ID_a = RID_a\oplus H_1(\beta)^{k}} $ 中$ {k} $ 为随机数, 号码牌$ {\beta} $ 保密, 故窃听者无法得到患者的真实身份.4. 性能分析
4.1 理论分析
1)功能性对比
本文方案与文献[5, 12, 25-28]进行了功能性对比, 其中文献[5, 12, 25-26]皆应用于医疗电子病历, 而文献[27-28]的应用环境则是云服务器. 结果由表3所示. 对比发现文献[5, 26-28]均为非区块链数据存储平台, 文献[25]与文献[26]无法达成数据搜索功能, 文献[5, 12, 25-26]方案均不具备第三方数据用户安全共享患者数据的功能. 表中文献方案均满足方案的访问控制与隐私保护. 通过与以上方案的对比, 表明本文方案在功能性上具有一定的优势.
2)运算成本分析
在表4中,
$ {T_{p}} $ 表示双线性配对运算的时间,$ {T_{e}} $ 表示指数运算的时间,$ {T_{m}} $ 表示乘法运算的时间,$ {T_{h}} $ 表示哈希运算的时间. 由表2可以看出, 常用密码操作配对时间的排序为$ {T_{p}>T_{e}>T_{m}>T_{h}} $ , 且配对运算的时间$ {T_{p}} $ 远大于其他密码操作的时间.表 4 常用密码算法的计算成本 (ms)Table 4 The computational cost of common cryptographic algorithms (ms)操作 $T_{p}$ $T_{e}$ $T_m$ $T_h$ 时间 4.064 1.655 0.013 0.006 由表5可以看出, 在关键字密文生成阶段, 各方案计算量由大到小依次为本文方案、文献[28]和文献[27]; 在搜索阶段, 各方案计算量由大到小依次为文献[27]、文献[28]和本文方案.
本文方案应用在区块链上的医疗体系下. 假设
$ {np} $ 代表私有链或联盟链上的节点数量, 则在私有链一致性验证时, 本方案的计算开销是$(T_{e}+T_{m}+2T_h)\times$ $\left[{2}/{3}np\right],$ 在联盟链一致性验证时, 本文方案的计算开销是$ {(4T_{p}+T_{e}+T_m)\times\left[{2}/{3}np\right]}. $ 4.2 数值模拟
数值模拟实验是在Linux虚拟机上通过利用PBC (Paring-Based Cryptography)库由C语言进行编写, 并在2.50 GHz CPU、4 GB内存笔记本电脑上运行. 在数值实验中, 由于本文、文献[27]和文献[28]方案只支持单关键字的搜索, 设单关键字的基本字段长度为1024位, 因此将变量设置为关键字的个数. 将变量分别设置为10、20、30、40和50, 实验结果取50次运行结果的平均值, 实验结果如表6所示.
表 6 本方案算法各个阶段的时间成本 (毫秒)Table 6 Time cost of each phase in the scheme (ms)算法 系统建立 数据加密 私有链验证 联盟链验证 陷门生成 测试 解密 1 解密 2 $n$= 10 20 218 4 73 36 42 7 10 $n$= 20 21 412 3 142 72 83 8 11 $n$= 30 20 614 5 213 105 125 7 11 $n$= 40 20 825 4 285 145 167 7 11 $n$= 50 21 1021 4 365 172 212 7 11 由表6的数值结果可以发现, 在系统建立和数据产生与存储阶段, 变量的增加对系统建立算法和私有链上对新块的验证算法所产生的时间成本基本没有影响, 加密算法和联盟链上对新块验证的算法因涉及了多个双线性对的运算, 故时间成本受到较大影响. 在数据搜索与访问阶段, 2种情形下解密算法的时间开销基本没有影响, 搜索陷门产生算法和测试算法中双线性对的运算涉及比重较小, 大部分涉及点乘运算与幂运算, 因此时间成本增长较为缓慢.
为了更清晰地观察本文方案的性能优缺点, 对本文和文献[27]和文献[28]方案在数据加密与数据搜索算法的时间开销进行了分析, 如图4 ~ 5所示. 由图4可以看出, 尽管本文的加密算法时间开销要高于文献[27]和文献[28]方案, 但是本文更适用于区块链上的医疗体系. 由图5可以看出, 随着关键字个数的增加, 3个方案的时间开销呈现线性增长, 且本文的搜索时间开销要较小于文献[27]和文献[28]方案. 故本文方案的搜索效率较高. 故本文方案在搜索计算代价上有较明显的优势, 提高了系统的性能.
5. 结束语
本文提出了一种基于区块链的电子病历数据共享方案, 用于第三方数据用户对患者数据的安全访问. 方案的构建是基于私有链与联盟链的, 每家医院拥有自己的私有链, 多家私有链一起构建联盟链. 服务器上存储患者电子病历密文, 私有链存储病历密文的哈希值和关键字索引, 联盟链存储由患者伪身份和关键字索引所构成的安全索引. 方案使用可搜索加密技术实现了联盟链上的安全搜索; 使用代理重加密完成对密文的转换, 使数据用户能对患者数据进行安全访问. 方案实现了数据安全、访问控制、隐私保护和安全搜索的安全目标. 最后, 通过数值实验分析了方案的综合性能水平. 在之后的工作中, 拟将方案的单关键字搜索加密改为链接关键字搜索加密, 并且进一步细化区块链上对新区块的验证过程.
-
表 1 私有链的数据结构
Table 1 Private chain data structure
时间戳 块头 交易 块标识 块大小 前块哈希 块产生者身份 患者伪身份 关键字索引 密文哈希 块产生者签名 t ${ID_b}$ size hash 医生${ID}$ ${ID_a}$ ${(C_{a_1},C_{a_2})}$ hash${(C_{a_0})}$ 医生签名 表 2 联盟链的数据结构
Table 2 Consortium chain data structure
时间戳 块头 交易 块标识 块大小 前块哈希 块产生者身份 安全索引 块产生者签名 t 联盟链块${ID}$ size hash 医院服务器${ID}$ ${T_{Xa}=(ID_b,ID_a,(C_{a_1},C_{a_{2}}))}$ 服务器签名 表 3 功能特性比较
Table 3 Comparisons of functional properties
功能特性 文献[5] 文献[12] 文献[25] 文献[26] 文献[27] 文献[28] 本文方案 区块链 $\times$ $\checkmark$ $\checkmark$ $\times$ $\times$ $\times$ $\checkmark$ 访问控制 $\checkmark$ $\checkmark$ $\checkmark$ $\checkmark$ $\checkmark$ $\checkmark$ $\checkmark$ 隐私保护 $\checkmark$ $\checkmark$ $\checkmark$ $\checkmark$ $\checkmark$ $\checkmark$ $\checkmark$ 安全搜索 $\checkmark$ $\checkmark$ $\times$ $\times$ $\checkmark$ $\checkmark$ $\checkmark$ 第三方数据共享 $\times$ $\times$ $\times$ $\times$ $\checkmark$ $\checkmark$ $\checkmark$ 表 4 常用密码算法的计算成本 (ms)
Table 4 The computational cost of common cryptographic algorithms (ms)
操作 $T_{p}$ $T_{e}$ $T_m$ $T_h$ 时间 4.064 1.655 0.013 0.006 表 5 方案的计算代价
Table 5 Computational overhead of the proposed scheme
表 6 本方案算法各个阶段的时间成本 (毫秒)
Table 6 Time cost of each phase in the scheme (ms)
算法 系统建立 数据加密 私有链验证 联盟链验证 陷门生成 测试 解密 1 解密 2 $n$= 10 20 218 4 73 36 42 7 10 $n$= 20 21 412 3 142 72 83 8 11 $n$= 30 20 614 5 213 105 125 7 11 $n$= 40 20 825 4 285 145 167 7 11 $n$= 50 21 1021 4 365 172 212 7 11 -
[1] Shahnaz A, Usman Q, Ayesha K. Using blockchain for electronic health records. IEEE Access, 2019, 7: 147782−147795 doi: 10.1109/ACCESS.2019.2946373 [2] Chen L, Lee W, Chang C, Choo K, Zhang N. Blockchain based searchable encryption for electronic health record sharing. Future Generation Computer Systems, 2019, 95: 420−429 doi: 10.1016/j.future.2019.01.018 [3] Hao W, Song Y. Secure cloud-based EHR system using attribute-based cryptosystem and blockchain. Journal Of Medical Systems, 2018, 18(2): 152−161 [4] Wang Y, Zhang A, Zhang P, Wang H. Cloud-Assisted EHR sharing with security and privacy preservation via consortium blockchain. IEEE Access, 2019, 7: 136704−136719 doi: 10.1109/ACCESS.2019.2943153 [5] 袁勇, 倪晓春, 曾帅, 王飞跃. 区块链共识算法的发展现状与展望. 自动化学报. 自动化学报, 2018, 44(11): 2011−2022Yuan Yong, Ni Xiao-Chun, Zeng Shuai, WANG Fei-Yue. Blockchain consensus algorithms: the state of the art and future trends. Acta Automatica Sinica, 2018, 44(11): 2011−2022 [6] 韩璇, 袁勇, 王飞跃. 区块链安全问题: 研究现状与展望. 自动化学报, 2019, 45(1): 206−225Han Xuan, Yuan Yong, Wang Fei-Yue. Security problems on blockchain: the state of the art and future trends. Acta Automatica Sinica, 2019, 45(1): 206−225 [7] 曾帅, 袁勇, 倪晓春, 王飞跃. 面向比特币的区块链扩容: 关键技术, 制约因素与衍生问题. 自动化学报, 2019, 45(6): 1015−1030Zeng Shuai, Yuan Yong, Ni Xiao-Chun, Wang Fei-Yue. Scaling blockchain towards bitcoin: key technologies, constraints and related issues. Acta Automatica Sinica, 2019, 45(6): 1015−1030 [8] Yue X, Wang H, Jin D, Li M, Jiang W. Healthcare data gateways: found healthcare intelligence on blockchain with novel privacy risk control. Journal Of Medical Systems, 2016, 40(10): 218−226 doi: 10.1007/s10916-016-0574-6 [9] Xia Q, Sifah E B, Smahi A, Amofa S, Zhang X. BBDS: Blockchain-Based data sharing for electronic medical records in cloud environments. Information, 2017, 8(2): 44−60 doi: 10.3390/info8020044 [10] 张超, 李强, 陈子豪, 黎祖睿, 张震. Medical Chain: 联盟式医疗区块链系统. 自动化学报, 2019, 45(8): 1495−1510Zhang Chao, Li Qiang, Chen Zi-Hao, Li Zu-Rui, Zhang Zhen. Medical chain: alliance medical blockchain system. Acta Automatica Sinica, 2019, 45(8): 1495−1510 [11] Chen Y, Ding S, Xu Z, Zheng H, Yang SS. Blockchain-Based medical records secure storage and medical service framework. Journal Of Medical Systems, 2019, 43(1): 5−14 doi: 10.1007/s10916-018-1121-4 [12] Zhang A, Lin Xiao-Dong. Towards secure and privacy-preserving data sharing in e-health systems via consortium blockchain. Journal Of Medical Systems, 2018, 42(8): 140−158 doi: 10.1007/s10916-018-0995-5 [13] Boneh D, Di Crescenzo G, Ostrovsky R, Persiano G. Public key encryption with keyword search. In: Proceedings of the International Conference on the Theory and Applications of Cryptographic Techniques. Berlin, Germany: Heidelberg Springer, 2004. 506−522 [14] Baek J, Safavi-Naini R, Susilo W. Public key encryption with keyword search revisited. In: Proceedings of the International conference on Computational Science and Its Applications. Berlin, Germany: Heidelberg Springer, 2008. 1249−1259 [15] Hu C, Liu P. An enhanced searchable public key encryption scheme with a designated tester and its extensions. Journal Of Computer, 2012, 7(3): 716−723 [16] Shao J, Cao Z, Liang X, Lin H. Proxy re-encryption with keyword search Information Science, 2010, 180(13): 2576−2587 doi: 10.1016/j.ins.2010.03.026 [17] Ryu E K, Takagi T. Efficient coSnjunctive keyword-searchable encryption. In: Proceedings of the 21st International Conference on Advanced Information Networking and Applications Workshops. Niagara Falls, Canada: 2007, 1: 409−414 [18] Boneh D, Waters B. Conjunctive, subset, and range queries on encrypted data. In: Proceedings of the Theory of Cryptography Conference. Berlin, Germany: Heidelberg Springer, 2007. 535−554 [19] Blaze M, Bleumer G, Strauss M. Divertible protocols and atomic proxy cryptography. In: Proceedings of the International Conference on the Theory and Applications of Cryptographic Techniques. Berlin, Germany: Heidelberg Springer, 1998. 127−144 [20] Fang L, Susilo W, Ge C, Wang J. Chosen-ciphertext secure anonymous conditional proxy re-encryption with keyword search. Theoretical Computer Science, 2012, 462: 39−58 doi: 10.1016/j.tcs.2012.08.017 [21] Shao J, Cao Z. Multi-use unidirectional identity-based proxy re-encryption from hierarchical identity-based encryption. Information Sciences, 2012, 206: 83−95 doi: 10.1016/j.ins.2012.04.013 [22] Tang F, Li H, Chang J. Multi-hop unidirectional proxy re-encryption from multilinear maps. IEICE Transactions On Fundamentals Of Electronics, Communications And Computer Sciences, 2015, 98(2): 762−766 [23] 刘振华, 周佩琳, 段淑红. 支持关键词搜索的属性代理重加密方案. 电子与信息学报,2018, 40(3): 683−689 doi: 10.11999/JEIT170448Liu Zhen-Hua, Zhou Pei-Lin, Duan Shu-Hong. Attribute-based proxy re-encryption scheme with keyword search. Journal Of Electronics And Information Technology, 2018, 40(3): 683−689 doi: 10.11999/JEIT170448 [24] 欧阳丽炜, 王帅, 袁勇, 倪晓春, 王飞跃. 智能合约:架构及进展. 自动化学报, 2019, 45(3): 445−457OuYang Li-Wei, Wang Shuai, Yuan Yong, Ni Xiao-Chun, Wang Fei-Yue. Smart contracts: architecture and research progresses. Acta Automatica Sinica, 2019, 45(3): 445−457 [25] Peterson K, Deeduvanu R, Kanjamala P, Boles K. A blockchain-based approach to health information exchange networks. In: Proceedings of the NIST Workshop Blockchain Healthcare. Berlin, Germany: Heidelberg Springer, 2016, 1: 1−10 [26] Zhang J, Xue N, Huang X. A secure system for pervasive social network-based healthcare. IEEE Access, 2016, 4: 9239−9250 doi: 10.1109/ACCESS.2016.2645904 [27] 韩笑, 曾琦, 曹永明. 一种有效的带关键字搜索的代理重加密方案. 计算机与现代化, 2019, 283(03): 121−125Han Xiao, Zeng Qi, Cao Yong-Ming. An efficient proxy re-encryption scheme with keyword search Computer And Modernization, 2019, 283(03): 121−125 [28] 郭丽峰, 李婷. 改进的带关键字搜索的代理重加密方案S. 山西大学学报(自然科学版),2016, 39(3): 434−441Guo Li-Feng, Li Ting. Improved proxy re-encryption with keyword search scheme Journal Of Shanxi University (Natural Science Edition), 2016, 39(3): 434−441 期刊类型引用(33)
1. 高改梅,王娜,刘春霞,党伟超,史旭. 基于区块链的可搜索加密电子病历共享方案. 计算机工程与应用. 2025(04): 289-298 . 百度学术
2. 许晓东,牛任恺,刘晶,张艳丽,刘继鹏,郭伟. 基于区块链的电子数据取证及自动化监测系统. 电子设计工程. 2025(05): 65-69+74 . 百度学术
3. 周涵,邓伦治. 一个适用于云数据共享的高效代理广播重加密方案. 贵州师范大学学报(自然科学版). 2024(01): 76-86+93 . 百度学术
4. 高改梅,史旭,刘春霞,党伟超,王娜. 一种基于区块链的医疗数据隐私保护方法. 计算机应用研究. 2024(05): 1538-1543 . 百度学术
5. 龚海燕,麻付强,张达威,李晓刚. 区块链与机密计算技术在材料数据库平台中的应用分析. 农业大数据学报. 2024(02): 241-252 . 百度学术
6. 王迪,刘芳芳,久美草,芦殿军. 基于区块链的可代理健康档案访问方案. 计算机应用与软件. 2024(07): 315-322+335 . 百度学术
7. 赵峻岭,梁峰,陈琳. 基于联邦学习的自助取货机远程下单数据共享方法. 计算技术与自动化. 2024(03): 141-147 . 百度学术
8. 翟社平,张瑞婷,杨锐,曹永强. 多用户环境的区块链可搜索加密方案. 西安电子科技大学学报. 2024(04): 151-169 . 百度学术
9. 刘桂江,谢海波,汪文明. 基于区块链与IPFS的电子病历存储系统设计与实现. 电脑知识与技术. 2024(28): 65-68 . 百度学术
10. 上官子卓,李东鹤,杨清宇. 面向区块链的协同业务建模及其并行优化算法. 西安交通大学学报. 2024(12): 131-140 . 百度学术
11. 王俊茗,郭瑞,胡国梁,杨鑫. 基于无证书广播代理重加密的区块链电子病历数据共享方案. 信息安全与通信保密. 2024(11): 20-31 . 百度学术
12. 田悦. 我国居民电子健康档案领域研究热点的演化路径探析. 河南医学研究. 2024(24): 4417-4421 . 百度学术
13. 薛庆水,时雪磊,王俊华,薛震,王晨阳. 基于属性加密的个人医疗数据共享方案. 计算机应用研究. 2023(02): 589-594+600 . 百度学术
14. 万征,丁超,余岚,李彦,胡佳鑫. 一种基于区块链的大健康数据存储和共享模型. 小型微型计算机系统. 2023(03): 636-645 . 百度学术
15. 丁诚,刘惠文,邓小鸿. 基于区块链的电子病历隐私保护系统设计. 信息与电脑(理论版). 2023(01): 89-91 . 百度学术
16. 翟社平,童彤,白喜芳. 基于区块链的属性代理重加密数据共享方案. 计算机工程与应用. 2023(08): 270-279 . 百度学术
17. 景旭,谭菡,蒋炎,阮俊虎. 基于CP-ABSE的农机社会化服务联盟链隐私匹配方案. 农业工程学报. 2023(11): 47-55 . 百度学术
18. 吴思颖. 基于March算法的电子病案数据存储归档方法研究. 中国医疗设备. 2023(08): 79-85 . 百度学术
19. 魏明月,王淑,许德俊. 基于区块链的互联网医院患者电子病历安全共享模式与实践. 医学信息学杂志. 2023(07): 68-72 . 百度学术
20. 魏晋,降惠,武丽娟. 盲量子计算为核心的医疗隐私数据共享模型设计. 计算机时代. 2023(10): 32-34+39 . 百度学术
21. 甘臣权,杨宏鹏,祝清意,贾家庆,李昆鸿. 基于访问控制的可验证医疗区块链数据搜索机制. 重庆邮电大学学报(自然科学版). 2023(05): 873-887 . 百度学术
22. 刘世章,戴松霖,王歌. 燃气联盟链技术在燃气业务场景中的应用. 油气与新能源. 2023(05): 83-91 . 百度学术
23. 陈洁. 实用拜占庭容错共识算法在医疗信息泄露防控及共享中的研究与应用. 计算机测量与控制. 2023(10): 228-232+239 . 百度学术
24. 罗明. 智慧医院背景下的电子病历技术应用研究. 信息与电脑(理论版). 2023(19): 19-21 . 百度学术
25. 王媛,彭爱群. 区块链助力医疗病历数据流通及治理变革探析. 通化师范学院学报. 2022(01): 50-54 . 百度学术
26. 蔡楚君,柳毅. 基于以太坊平台的医疗数据安全共享方案. 计算机应用研究. 2022(01): 24-30 . 百度学术
27. 李莉,吴怡,杨祉坤,陈云鹏. 基于分区型区块链医疗电子病历共享方案. 计算机应用. 2022(01): 183-190 . 百度学术
28. 冯政鑫,唐寅,韩磊,吴锡,彭静. 基于区块链的敏感数据安全共享方案. 信息安全研究. 2022(04): 364-373 . 百度学术
29. 刘扬,胡学先,周刚,魏江宏. 基于多层次区块链的医疗数据共享模型. 计算机应用研究. 2022(05): 1307-1312+1318 . 百度学术
30. 马佳佳,曹素珍,窦凤鸽,丁晓晖,丁宾宾,王彩芬. 智慧医疗环境下支持属性更新的加解密外包方案. 计算机工程与科学. 2022(09): 1594-1601 . 百度学术
31. 张正昊,李勇,张振江. 可控、可追责的敏感数据共享方案. 计算机研究与发展. 2022(12): 2750-2759 . 百度学术
32. 张家尧. 基于区块链的电子病历存储方案. 信息技术与信息化. 2022(12): 127-132 . 百度学术
33. 胡来保,可蓓,王兆文,马宁,韩丽莹. 智慧医院建设背景下的电子病历系统的构建与应用. 电子元器件与信息技术. 2022(11): 63-67 . 百度学术
其他类型引用(41)
-