logo资料库

基于区块链的电子病历数据共享方案.pdf

第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
资料共12页,剩余部分请下载后查看
自动化学报 Acta Automatica Sinica ISSN 0254-4156,CN 11-2109/TP 《自动化学报》网络首发论文 基于区块链的电子病历数据共享方案 题目: 牛淑芬,陈俐霞,李文婷,王彩芬,杜小妮 作者: 10.16383/j.aas.c190801 DOI: 收稿日期: 2019-11-25 网络首发日期: 2020-05-26 引用格式: 牛淑芬,陈俐霞,李文婷,王彩芬,杜小妮.基于区块链的电子病历数据共 享方案[J/OL].自动化学报. https://doi.org/10.16383/j.aas.c190801 网络首发:在编辑部工作流程中,稿件从录用到出版要经历录用定稿、排版定稿、整期汇编定稿等阶 段。录用定稿指内容已经确定,且通过同行评议、主编终审同意刊用的稿件。排版定稿指录用定稿按照期 刊特定版式(包括网络呈现版式)排版后的稿件,可暂不确定出版年、卷、期和页码。整期汇编定稿指出 版年、卷、期、页码均已确定的印刷或数字出版的整期汇编稿件。录用定稿网络首发稿件内容必须符合《出 版管理条例》和《期刊出版管理规定》的有关规定;学术研究成果具有创新性、科学性和先进性,符合编 辑部对刊文的录用要求,不存在学术不端行为及其他侵权行为;稿件内容应基本符合国家有关书刊编辑、 出版的技术标准,正确使用和统一规范语言文字、符号、数字、外文字母、法定计量单位及地图标注等。 为确保录用定稿网络首发的严肃性,录用定稿一经发布,不得修改论文题目、作者、机构名称和学术内容, 只可基于编辑规范进行少量文字的修改。 出版确认:纸质期刊编辑部通过与《中国学术期刊(光盘版)》电子杂志社有限公司签约,在《中国 学术期刊(网络版)》出版传播平台上创办与纸质期刊内容一致的网络版,以单篇或整期出版形式,在印刷 出版之前刊发论文的录用定稿、排版定稿、整期汇编定稿。因为《中国学术期刊(网络版)》是国家新闻出 版广电总局批准的网络连续型出版物(ISSN 2096-4188,CN 11-6037/Z),所以签约期刊的网络版上网络首 发论文视为正式出版。
网络首发时间:2020-05-26 10:27:44 网络首发地址:http://kns.cnki.net/kcms/detail/11.2109.TP.20200525.1357.001.html 自 动 化 学 报 ACTA AUTOMATICA SINICA 基于区块链的电子病历数据共享方案 牛淑芬 1 陈俐霞 1 李文婷 1 王彩芬 1 杜小妮 2 摘 要 以区块链为数据存储平台的电子病历系统是当下研究的热点. 存储在区块链上的数据是不可变的, 这加强了数据的 安全性. 本文提出了一个基于区块链的电子病历数据共享方案, 实现了患者和第三方数据用户在不侵犯患者隐私的前提下共 享患者电子病历. 本文使用私有链与联盟链构造方案的系统模型, 医院服务器上存储患者的电子病历密文, 私有链上存储患者 病历密文的哈希值和关键字索引, 联盟链上存储由关键字索引构成的安全索引. 同时本文利用可搜索加密技术实现了在联盟 链上对关键字的安全搜索, 运用代理重加密算法实现了第三方数据用户对患者电子病历的共享. 本文通过数值实验对方案进 行了性能评估. 关键词 电子病历, 区块链, 代理重加密, 可搜索加密, 数据共享 引用格式 牛淑芬, 陈俐霞, 李文婷, 王彩芬, 杜小妮. 基于区块链的电子病历共享方案. 自动化学报 DOI 10.16383/j.aas.c190801 Electronic Medical Record Data Sharing Scheme Based On Blockchain NIU Shu-Fen1 CHEN Li-Xia1 LI Wen-Ting1 WANG Cai-Fen1 DU Xiao-Ni2 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 Citation Niu Shu-Fen, Chen Li-Xia, Li Wen-Ting, Wang Cai-Fen, Du Xiao-Ni. Electronic medical record data sharing scheme based on blockchain. Acta Automatica Sinica 随着时代的变化, 科技已渐渐融入人类生活的 各个方面. 从前传统的医疗保健体系已然跟不上当 代便捷生活的脚步, 电子病历的出现更加有效地解 决了当下患者诊断信息的存储、查询、数据共享和 医疗错误等问题 [1] . 电子病历使患者拥有一个更全 面的诊断信息, 在就诊时能够让医生更快捷、准确的 了解患者以往病情, 并给出新的诊断结果. 文献 [2-4] 为电子病历的应用提供了切实的范例. 区块链本质 收稿日期 2019-11-25 录用日期 2020-05-12 Manuscript received November 25, 2019; accepted May 12, 2020 国家自然科学基金 (61562077, 61662071, 61662069, 61772022) Supported by National Natural Science Foundation of China (61562077, 61662071, 61662069, 61772022) 1. 西北师范大学计算机科学与工程学院 甘肃兰州 730070 2. 西北 师范大学数学与统计学院 甘肃兰州 730070 1. College Of Computer Science And Engineering,Northwest Normal University, Gansu, Lanzhou 730070 College Of Mathematics And Statistics, Northwest Normal Univer- sity,Gansu,Lanzhou 730070 2. 上是一个去中心化的分布式存储系统, 能够为电子 病历提供平台支持, 生成永久、不可逆向修改的记 录 [5−7]. 近年来, 鉴于区块链对电子病历应用的优 势, 多位学者相继提出了针对不同问题的方案. Yue 等 [8] 提出一种基于区块链的数据网关架构, 并且利 用多方安全计算使第三方用户在不侵犯患者隐私的 情况下对存储数据进行计算. 文献 [9] 提出了基于区 块链的数据共享框架, 解决了与云中敏感信息相关 的访问控制问题. 该方案是基于许可链构造的, 只允 许受邀用户访问数据. 张等 [10] 构造了一个基于区 块链的医疗系统, 该系统构建于联盟链之上, 通过实 用拜占庭容错算法, 保证以很小的算力来实现系统 安全稳定的运行, 同时能够防止医疗数据被篡改、泄 露. Chen 等 [11] 提出一种基于区块链共享医联体数 据服务的框架, 重点突出了实施方案不依赖于任何 不可信的第三方的特性, 可实现患者数据的安全存 储与隐私保护. 文献 [12] 构建了一种基于区块链的
2 自 动 化 学 报 保护个人隐私信息安全的共享协议, 并提出了具体 的系统模型及方案. 该方案在私有链与联盟链上进 行构造, 结合关键字搜索技术与联盟链实现了对患 者信息的安全搜索, 同时保证了患者的数据安全和 隐私保护. 区块链上电子病历的最大优势是多方数 据用户都能共享患者数据, 但现有的大多数文献讨 论患者或者医生某一方搜索并解密病历数据. 针对 这一问题, 本文提出了一种基于区块链的电子病历 数据共享方案. 在方案中, 不但患者可以搜索解密自 己的病历数据, 经过授权的第三方机构或个人数据 用户在不能侵犯患者隐私的前提下也可以访问患者 数据. 本文的创新点有以下 3 个方面: (1) 基于区块链提出了电子病历数据共享方案, 实现了第三方数据用户对患者数据的安全访问. 方 案模型的构造利用了私有链与联盟链. 每家医院都 拥有自己的私有链与服务器, 多个私有链一起构建 联盟链. 患者病历密文存储在医院服务器, 病历密文 的哈希值和关键字索引存储在医院私有链上, 而由 私有链块标识、患者伪身份和关键字索引构成的安 全索引则存储在联盟链上; (2) 使用可搜索加密技术实现了安全搜索. 联盟 链上存储了由关键字索引所构成的安全索引. 当有 患者或者数据用户需要使用电子病历数据时, 患者 使用自己的私钥产生搜索陷门发送至联盟链, 联盟 链上节点进行搜索; (3) 使用代理重加密技术实现了第三方数据用 户对患者数据的安全访问. 经患者授权后, 联盟链上 节点在搜索到患者病历的原始密文后, 对原始密文 进行代理重加密, 将转换后的密文发送给第三方数 据用户, 数据用户使用自己的私钥解密密文. 1 相关工作 1.1 双线性映射 1) 双线性 (Bilinear): 对于任意 a, b ∈ Zq ∗ 和 2) 非退化性 (Non-degenerate): 存在 x, y ∈ G1 定义 1 令 G1 和 G2 为两个阶为素数 q 的乘法 循环群, 定义一个双线性映射 e : G1 × G1 → G2 满 足如下性质: x, y ∈ G1, e(xa, yb) = e(x, y)ab 成立; , 使得 e(x, y) = 1; x, y∈ G1, 存在有效算法计算 e(x, y). 1.2 可搜索加密 3) 可 计 算 性 (Computable): 对 于 任 意 的 可搜索加密 (public key encryption with key- word search, PEKS) 是由 Boneh 等人 [13] 在 2004 年提出的, 它可以对加密数据进行搜索. 在公钥密码 体制下, 用户将明文消息的关键字加密后发送至服 务器, 用搜索陷门搜索关键字. 在提出该密码原语 之后, 对关键字搜索加密的研究陆续展开. 2008 年, Baek 等人 [14] 提出 Boneh 等人 [13] 的方案存在关 于安全信道的问题, 通过使用服务器公钥加密搜索 陷门的方法改进了方案, 并证明其安全性. 为了提高 搜索的安全性, Hu 等 [15] 提出了指定验证者的可搜 索加密方案. 文献 [16] 将可搜索加密技术与代理重 加密技术相结合, 允许被授权者从委托者的数据中 搜索感兴趣的关键字. 在某些情况下需要搜索多个 关键字, 文献 [17-18] 提出了带有联合字段关键字搜 索的公钥加密方案. 在这项工作中, 本文提出了一种 基于区块链的电子病历关键字搜索方案. 该方案将 由关键字索引构成的安全索引存储在联盟链上, 实 现了关键字搜索功能. 1.3 代理重加密 代理重加密 (proxy re-encryption, PRE) 是由 Blaze、Bleumer 和 Strauss[19] 在 1998 年提出的一 个新的密码原语. 代理重加密的中心思想是对密文 的转换, 其参与者有委托者、代理者和受托者, 代理 者能够将受托者生成的密文转换为委托者对同一消 息的密文. 根据密文转换方向, 可将代理重加密分 为单向和双向. 单向代理重加密能够实现受托者密 文向委托者密文的转换, 双向代理重加密能够实现 密文的双向转换. 近几年代理重加密仍然是密码学 界中的研究热点. Fang 等 [20] 提出了带关键字查询 的代理重加密的概念, 并构造了具体方案. Shao 和 Cao 等 [21] 提出了基于身份的多用户代理重加密, 并 证明其安全性. Tang 等 [22] 基于多线性映射构造了 一个单向代理重加密方案. 刘等 [23] 提出一个支持关 键词搜索的密文策略的属性代理重加密方案, 利用 属性代理重加密实现了数据转发与数据共享, 并且 支持数据检索功能. 在这项工作中, 本文将代理重加 密技术应用于方案的数据搜索阶段, 提出了一个基 于区块链的电子病历方案, 实现了第三方数据用户 对患者数据的安全访问. 当搜索到患者的原始密文 后, 联盟链 [24] 上节点通过使用代理重加密算法进行 密文转换. 2 系统模型与安全模型 2.1 系统模型 在该系统中, 假设由多个医院组成一个联盟, 其 中每个医院都有本地服务器和和若干个客户端, 客 户端是由医生进行操作的. 每家医院构建自己的私 有链, 而多个私有链构建一个联盟链. 在进入系统 前,患者、医生和数据用户都需要进行注册, 生成各 自的公私钥对. 其中, 患者的电子病历密文存储在 医院服务器上, 电子病历密文的哈希值和关键字索
3 图 1 电子病历系统模型 Fig. 1 Electronic medical record system model 引存储在医院私有链上, 而由私有链块标识、患者伪 身份和关键字索引构成的安全索引则存储在联盟链 上. 系统中主要包括患者、医生、数据用户、医院服 务器、私有链、联盟链六个实体, 系统模型图如图 1 所示. 患者: 患者在医院就诊时首先在医院服务器上 进行注册, 注册完成后医院服务器给患者分配一个 号码牌, 相当于患者的就诊卡. 患者保密该号码牌, 并在就诊时出示号码牌. 医生为患者产生电子病历 和关键字, 并用患者公钥进行加密. 若患者去其他医 院就诊, 当医生需要了解患者的过往病史时, 患者生 成搜索陷门并上传至联盟链. 联盟链上节点运行搜 索算法后,将电子病历密文发送给患者, 患者可解密 该密文. 医生: 每个医院都有本地服务器和和若干个客 户端, 客户端是由医生进行操作的. 当患者就诊时, 医生为患者产生伪身份、电子病历密文、关键字密 文和证据, 并将电子病历密文上传至医院服务器, 将 病历密文的哈希值和由关键字密文和证据构成的关 键字索引上传至私有链, 产生新交易, 并广播该交 易. 私有链上的其他节点负责验证该交易, 若验证通 过, 则生成私有链上新的区块. 数据用户: 当除了医院和患者以外的第三方机 构或个人(称为数据用户)访问患者数据时, 需要得 到患者授权. 患者生成搜索陷门并上传至联盟链, 联 盟链上节点进行搜索, 当搜索到相应患者密文后, 联 盟链上节点作为代理者为数据用户产生代理重加密 密文. 最后, 数据用户可用自己的私钥解密密文. 医院服务器: 当医生为患者治疗并生成电子病 历后, 医院服务器提取私有链上的私有链块标识、患 者伪身份和关键字索引来构建联盟链上新的交易, 而在联盟链中的其他节点负责验证该交易, 若验证 通过, 则生成联盟链上新的区块. 私有链: 医生将电子病历密文的哈希值、由关 键字密文和证据构成的关键字索引上传至私有链, 产生新交易. 当收到医生构建的新交易后, 私有链上 节点验证该交易. 医院服务器提取私有链上的私有 链块标识、患者伪身份和关键字索引来构建联盟链 上新的交易. 在数据获取阶段, 若搜索成功, 联盟链 上节点提取块上安全索引, 获得私有链块标识. 而通 过私有链块标识, 联盟链上节点能获取到病历密文 的哈希值. 联盟链: 在搜索过程中, 当收到患者发送的陷门 后, 联盟链上节点运行搜索算法. 若搜索成功, 联盟 链上节点提取块上安全索引, 获得私有链块标识. 通 过私有链块标识, 联盟链上节点获取到病历密文哈 希值并反馈给医院服务器, 医院服务器对电子病历 密文的哈希值进行对比, 若一致, 则将病历密文发送 给联盟链上节点, 联盟链上节点将病历密文返回给 患者. 当第三方数据用户访问患者电子病历时, 联 盟链上节点扮演代理者的角色生成代理重加密密钥, 对电子病历的密文进行代理重加密后并将重加密后 密文发送给第三方用户.
4 自 动 化 学 报 表 1 私有链的数据结构 Table 1 Private chain data structure 时间戳 块头 交易 块标识 块大小 前块哈希 块产生者身份 患者伪身份 关键字索引 密文哈希 块产生者签名 t IDb size hash 医生 ID IDa (Ca1 , Ca2 ) hash(Ca0 ) 医生签名 表 2 联盟链的数据结构 Table 2 Consortium chain data structure 时间戳 块头 块标识 块大小 前块哈希 块产生者身份 交易 安全索引 t 联盟链块 ID size hash 医院服务器 ID TXa = (IDb, IDa, (Ca1 , Ca2 )) 块产生者签名 服务器签名 2.2 安全模型与设计目标 我们假设医院服务器与计算机客户端均为半可 信, 攻击者可以窃听传输信道中的信息, 比如安全索 引、电子病历密文和搜索陷门, 不允许计算机客户端 与服务器串通以推断用户的真实身份. 基于以上存 在的安全问题, 我们要实现的安全目标如下: 数据安全与访问控制: 加密和签名保证了数据 的机密性和完整性, 即实现了数据安全. 当医生访问 数据时, 系统可以通过识别、认证和授权等机制来实 现访问控制. 当数据用户访问数据时, 系统可以通过 代理重加密技术来实现访问控制. 同时, 本文利用私 有链和联盟链来增强数据的安全性. 隐私保护: 系统通过匿名性和不可追踪性来实 现患者的隐私保护. 其中患者伪身份的产生不仅实 现了匿名性, 同时保护了患者的身份信息和相关的 敏感隐私. 同时, 窃听者无法判断两个或多个电子病 历是否来自同一患者, 保证了数据的不可链接性. 而 且窃听者无法通过患者伪身份追踪患者的真实身份. 安全搜索: 系统通过指定验证者来保证搜索的 安全性. 在搜索过程中, 系统指定由患者生成陷门, 联盟链上节点进行搜索. 在这个过程中, 窃听者无法 猜出关键字. 系统可用性: 区块链的共识机制并不会泄露患 者的隐私. 联盟链的一致性证明是通过验证安全索 引中的关键字是否属于关键字集来实现. 在联盟链 验证过程中, 窃听者并不能得到该关键字. 而私有链 的一致性证明是通过验证患者是否授权医生生成病 历密文来实现, 在私有链验证过程中, 窃听者无法得 知患者的真实身份. 2.3 数据结构 我们在系统中使用了私有链与联盟链, 都分别 存储了不同的数据, 因此具有不同的数据结构. 私有 链的数据结构如表 1 所示. 它由时间戳、块头和交 易组成. 块头包括: 块的 ID 、块的大小和前块的 哈希. 交易包括: 块产生者(医生)的 ID 、患者伪 身份、关键字索引、病历密文的哈希和块产生者(医 生)的签名. 块产生者的签名有助于追踪医生, 时间 戳显示块的生成时间, 关键字索引由关键字密文和 证据构成. 联盟链的数据结构如表 2 所示. 它由时间戳、 块头和交易组成. 块头包括: 块的 ID 、块的大小 和前块的哈希. 其中交易包括: 块产生者(医院服务 器)的 ID 、安全索引和块产生者(医院服务器)的 签名. 医院服务器在一定时间间隔内创建新块. 期 间, 医院服务器会收集私有链上块的块 ID 、患者伪 身份和关键字索引来构成该块的安全索引. 2.4 共识机制 本文所用的区块链系统就是一个分布式的数据 库, 共识机制保证了数据的完整与同步, 即数据的一 致性. 私有链的一致性证明: 当患者到医院注册后, 医 院服务器为其产生号码牌并分配医生. 当患者与医 生交互后, 医生为患者产生电子病历密文. 为了保证 患者匿名性, 医生为患者生成伪身份. 最后, 医生构 建交易并广播至医院私有链. 私有链上的验证者验 证患者是否授权医生生成电子病历, 即 η 与号码牌 是否匹配. 若匹配, 则验证者验证通过. 若超过 2/3 的验证者验证通过, 则私有链生成新的区块. 联盟链的一致性证明: 在数据加密阶段, 系统 定义了一个关键字集 W = {w1, w2, ..., wn} , 其中 包含了患者有可能出现的所有症状的描述. 而本 文加密的关键字都是从关键字集 W 中选取的. 在 我们的系统中对联盟链的一致性证明描述为: 联 盟 链 上 的 验 证 者 验 证 新 块 中 安 全 索 引 上 的 关 键 字 密 文 是 否 来 自 关 键 字 集 W = {w1, w2, ..., wn}. 为 了 实 现 联 盟 链 上 的 一 致 性 证 明, 系 统 构 造 了 一 个 多 项 式 f(x), 具 体 如 下: 对 于 关 键 集
5 也不同, 以实现不可链接性. 最后, 医生构建新交易, 并广播至医院私有链. 当收到该交易后, 私有链的验 证者进行验证, 生成了如表 1 数据结构的新区块. 医 院服务器提取私有链中每个新的块标识 IDb、患者 伪身份 IDa 和关键字索引 (Ca1, Ca2) 构成安全索引 TXa. 其中 TXa = (IDb, IDa, (Ca1, Ca2)). 服务器将 在私有链上收集到的 TXa 作为交易上传至联盟链, 联盟链上节点进行验证, 若验证通过, 生成如表 2 数 据结构的新块. W , 系 统 计 算 H1(w1), H1(w2), ..., H1(wn) , 并 定 义 多 项 式 f(H1(wi)) = 0, i ∈ (1, 2, ..., n), 即 f(x) = (x − H1(w1))(x − H1(w2))...(x − H1(wn)) = 0. 假设存在向量 bbb = [1, bn−1, ..., b0] 使得多项式 可以表示为 f(x) = xn + bn−1xn−1 + ... + b1x + b0, 转 换 等 式 为 xn + bn−1xn−1 + ... + b1x = −b0 , 其 中 x = H1(wi), i ∈ (1, 2, ..., n). 若 设 置 向 量 aaa = [an = − b ], 则 系 统 可 推 出 新 多 项 式 g(x) = anxn + ... + a1x, 且 g(H1(wi)) = 1, i ∈ (1, 2, ..., n). 若 存 在 向 量 hhh = {H1(w1), H1(w2)2, ..., H1(wn)n}, 则 有 等 式 aaahhh = 1. 若数据加密过程中使用的关键字属于关键 字 集 W = {w1, w2, ..., wn}, 则 等 式 aaahhh = 1 成 立. 若超过 2/3 的验证者验证通过, 则联盟链生成新的 区块. 2.5 方案模型 , ..., a1 = − b1 1 0 b0 方案可以分为三个阶段: 数据产生、数据存储 和数据搜索. 图 2 表示了数据产生与数据存储的过 程, 图 3 表示了数据搜索的过程. 图 2 数据产生与数据存储 Fig. 2 Data generation and data storage 假设患者 a 去医院 i 看病, 由医生 d 进行诊 断. 患者 a 看病之前需要在医院 i 的服务器上进行 注册. 医院的服务器为患者产生号码牌 β, 并计算 µ = H1(β) 存储在系统中. 患者在见到医生后出示 号码牌 β, 相当于授权给医生为自己生成电子病历 m 和关键字 w. 医生用患者的公钥 pka 加密 m 和 w. 输出密文 Ca = {Ca0, Ca1, Ca2}. Ca0 为电子病历 m 的密文, Ca1 为关键字 w 的 密文, Ca2 为联盟链上的一致性证明提供了依据. 其 中,Ca0 存储在医院 i 的服务器上, Ca0 的哈希值和 由 Ca1 、Ca2 构成了关键字索引作为交易存储在私有 链上. 而由私有链块标识 IDb、患者伪身份 IDa 和 关键字索引 (Ca1, Ca2) 构成的安全索引作为交易存 储在联盟链上. 为了实现患者的匿名性, 医生为患者产生伪身 份. 未经患者本人授权, 其他用户不能将伪身份与真 实身份相关联. 不同医生为同一患者产生的伪身份 图 3 数据搜索 Fig. 3 Data search 若去其他医院就诊, 当医生想要查看该患者相 关的历史诊断记录时, 患者将搜索陷门 T1 和 T2 发 送至联盟链, 联盟链上节点进行搜索. 若搜索成功, 联盟链上节点提取安全索引中的私有链块标识 IDb . 且通过私有链块标识 IDb, 联盟链上节点可以得到 病历密文的哈希值, 由医院服务器进行密文哈希值 对比得到病历密文并返回给联盟链上节点. 最后, 患 者可用自己的私钥解密该密文. 当经过患者授权的数据用户要访问患者历史诊 断记录数据时, 患者将搜索陷门发送到联盟链上进 行关键字密文搜索. 若搜索成功, 联盟链上节点作为 代理者进行代理重加密并将重加密密文发送给数据 用户, 数据用户用自己的私钥进行解密获得患者的 电子病历. 2.6 方案设计 本文方案由系统建立、数据产生与存储、数据 搜索与访问三个阶段组成. 阶段一: 系统建立 这一阶段中, 系统运行参数生成算法生成公共 参数 P P , 患者、医生和数据用户分别生成各自的公 私钥对. 每次患者去医院就诊时, 医院选择随机数 β ∈ Z∗ q , 将 β 安全地发送给患者. 同时, 医院为该患 者指定一名医生, 计算 µ = H 1(β) 并发送到医院服 务器. (1) 初始化 系 统 输 入 安 全 参 数 λ, 输 出 双 线 性 对
6 自 动 化 学 报 e : G1 × G1 → G2, 其 中 G1, G2 是 阶 数 为 素 数 q 的 乘 法 循 环 群, 选 择 生 成 元 g ∈ G1, 计 算 h = e(g, g). 定义六个哈希函数 H1 : {0, 1}∗ → Zp ∗, H2 : {0, 1}∗ → G1, H3 : {0, 1}∗ × {0, 1}∗ → G1, H4 : G2 → {0, 1}∗, H5 : {0, 1}∗ × G1 → Zp ∗ 和 H6 : G1 → {0, 1}∗. 设 置 公 共 参 数 P P = (g, h, e, q, G1, G2, H1, H2, H3, H4, H5, H6) . (2) 密钥生成: ∗ 作为其私钥 ska, 并 计算其公钥 pka = gxa. 医生 d 随机选择 xd ∈ Zq ∗ 作 为其私钥 skd, 并计算其公钥 pkd = gxd. 数据用户 u 随机选择 xu ∈ Zq ∗ 作为其私钥 sku, 并计算其公钥 pku = gxu. 通过激励机制, 选择相应的联盟链上节 点作为验证者运行搜索算法和作为代理者执行代理 重加密算法. 同时联盟链上的节点选择 xs ∈ Zq ∗ 作 为其私钥 sks, 计算公钥 pks = gxs. (3) 重加密密钥生成: 患者 a 随机选择 xa ∈ Zq . 输入患者 a 和数据用户 u 的私钥 (ska, sku) , 采用文献 [13] 中的方法为代理者产生代理重加密密 钥 rk = sku ska 阶段二: 数据产生与存储: 当患者就诊时, 向医生出示 β, 医生对病患诊断 后产生病历 m∈ {0, 1}∗. 并提取关键字 w∈ {0, 1}∗. 医生用患者的公钥 pka 加密 m 和 w. 具体步骤如 下: (1) 加密: 输 入 病 历 m∈ {0, 1}∗ 和 关 键 字 w ∈ {0, 1}∗, 医 生 随 机 选 择 r ∈ Z∗ a, C = e(gr, H2(β)) × m, t = e(gr, H3(β, w)),F = H4(t). 计 算 向 量 XXX = [X1, X2, ..., Xn], 其 中 q , 计 算 B = pkr X1 = grH1(w), X2 = grH1(w)2,..., Xn = grH1(w)n. 计算 r0 = H5(w, B),A = grH1(w)+r0(skd+H1(w)), Y = hr0(skd+H1(w)). 记 Ca0 = (B, C),Ca1 = (B, F ),Ca2 = (A, Y, XXX). 其中, Ca0 为电子病历 m 的密文, Ca1 为关键字 w 的密文, Ca2 为联盟链上的一致性证明提供了依据. Ca0 存储在医院 i 的服务器上, 医生将 Ca0 的哈希 值和由 Ca1 、Ca2 构成的关键字索引上传至私有链 上. (2) 患者伪身份生成: 患 者 的 真 实 身 份 为 RIDa, 医 生 随 机 选 取 k ∈ Z∗ q , 计算患者伪身份 IDa = RIDa ⊕ H1(β)k 并 保密 k. 为了提供私有链上的一致性证明, 医生计 = H6(gk) ⊕ β). 最后, 医生 算 η= (α = g 利用关键字索引、医生身份和医生签名来构建新 交易并将交易广播至医院私有链. 收到新交易后, 私有链上的验证者对新交易进行验证: 从交易中 ),并在医院服务器中搜索 µ, 计算 提取 η = (α, β k+skd H1(β) , β β∗ = H6(αµ · pk−1 立. d ) ⊕ β , 检查 µ = H1(β∗) 是否成 若等式成立,则新交易有效,验证者广播验证 确认消息, 当收到 [ 2 3 np] 的验证确认消息之后, 私有 链接受新交易, 并生成如表 1 数据结构的新区块. 否 则, 拒绝新块加入私有链. [np] 表示私有链中的节点 数量. 正确性: H1(β∗) = H1(H6(αµ · pk−1 D ) ⊕ β) k+skd H1(β) ·H1(β) · g−skd) ⊕ β) = H1(H6(g = H1(H6(gk+skd · g−skd) ⊕ β) = H1(H6(gk) ⊕ H6(gk) ⊕ β) = H1(β) = µ (3) 数据存储: n 在每个私有链中, 服务器提取每个新块的块 标 识、患 者 伪 身 份 和 关 键 字 索 引, 令 安 全 索 引 TXa = (IDb, IDa, (Ca1, Ca2)), 服 务 器 利 用 安 全 索 引、服务器身份和服务器签名来构建新交易并将交 易广播至联盟链. i=0 X ai 收 到 新 交 易 后, 联 盟 链 上 的 验 证 者 验 证 等 式 e( i , X2) = e(X1, X1) 和 等 式 e(A, g) = e(X1, g)Y 是否成立. 其中 ai 为联盟链中 的共识机制构造的多项式 g(x) = anxn + ... + a1x 的常数项. 若等式成立, 则新交易有效, 验证者广播 3 np] 的验证确认消息之后, 验证确认消息, 当收到 [ 2 联盟链接受新交易, 并生成如表 2 数据结构的新区 块. 否则, 拒绝新块加入联盟链. [np] 表示联盟链中 的节点数量. 正确性: e( X ai i , X2) graiH1(w)i , grH1(w)2) gr(anH1(w)n+...+a1H1(w)), grH1(w)2) n i=0 = e( = e( n n i=0 i=0 = e(gr(aaahhh), grH1(w)2) = e(gr, grH1(w)2) = e(grH1(w), grH1(w)) = e(X1, X1)
e(A, g) = e(grH1(w)+r0(skd+H1(w)), g) = e(grH1(w), g)e(gr0(skd+H1(w)), g) = e(X1, g)e(gr0(skd+H1(w)), g) = e(X1, g)Y 阶段三: 数据搜索与访问 当患者或数据用户想要访问病历数据时, 患者 使用私钥为其产生搜索陷门并发送到联盟链. 具体 过程如下: (1) 陷门生成: 患 者 随 机 选 择 rw ∈ Z∗ s , T2 = grw. ska pkrw T1 = H3(β, w) 1 (2) 搜索: q , 计 算 陷 门 2 联 盟 链 上 节 点 计 算 Tw = T1 T sks 并 验 证 等 式 F = H4(e(B, Tw)) 是否成立. 若成立, 联盟链上 节点提取安全索引 TXa = (IDb, IDa, (Ca1, Ca2)) 并 获得私有链块标识 IDb. 通过私有链块标识 IDb , 联盟链上节点访问相应的私有链得到病历密文的哈 希值, 由医院服务器进行密文哈希值对比后得到病 历密文 Ca0 并将其返回给联盟链上节点. 正确性: H4(e(B, Tw)) = H4(e(pkr a, 2 )) T1 T sks H3(β, w) 1 = H4(e(pkr a, grwsks a, H3(β, w) 1 = H4(e(pkr = H4(e(gr, H3(β, w)) = H4(t) = F ska pkrw s )) ska )) (3) 解密: 情形一: 当患者需要访问病历数据时, 联盟链上节点发 . 当 送 Ca0 给患者, 患者计算明文 m = 医生需要访问病历数据时, 患者将明文 m 发送给医 生. e(B,H2(β)) ska C 1 正确性: C e(B, H2(β)) 1 ska = e(gr, H2(β))m e(gskar, H2(β)) 1 ska = e(gr, H2(β))m e(gr, H2(β)) = m 情形二: 7 当数据用户 u 共享数据时, 代理者产生代理重 , 并用 rk 对密文 Ca0 = (B, C) = Brk , 则 重 加 密 密 文 为 a0 发送给 加密密钥 rk = sku ska 进 行 重 加 密, 计 算 B a0 = (B C 数据用户 u , 数据用户计算 m = , C). 代理者将重加密密文 C C . ,H2(β)) 1 sku 正确性: C e(B, H2(β)) 1 sku = = e(B C e(Brk, H2(β)) 1 sku e(gska sku ska C r, H2(β)) 1 sku = e(gr, H2(β))m e(gr, H2(β)) = m 3 安全分析 在本节中, 我们将分析所提出的方案如何有效 地满足系统模型中提出的设计目标. 3.1 数据安全与访问控制 区块链的基本特性使得存储在区块链中的数据 是不可更改的, 确保数据无法修改, 除非攻击者具有 全网百分之五十一的计算能力. 电子病历密文是使 用患者的公钥加密的, 因此只有用患者的私钥才能 解密数据, 保证了数据的机密性. 本文构建私有链上 新区块时附有医生的签名, 而在构建联盟链上新区 块时附有医院的签名, 这保证了数据的完整性. 存储 在区块链上的密文, 只允许经过身份验证的访问者 获取. 若医生需要患者数据, 患者上传搜索陷门, 联 盟链上节点进行搜索后返回密文给患者, 患者解密 后给医生. 当数据用户访问数据时, 首先与患者和联 盟链上节点交互得到代理重加密密钥, 而后联盟链 上节点运行代理重加密算法得到重加密密文, 相当 于患者对数据用户进行授权. 因此, 患者能够对自己 的电子病历进行访问控制. 3.2 隐私保护 医 生 为 患 者 生 成 的 伪 身 份 IDa = RIDa ⊕ H1(β)k, 窃 听 者 无 法 得 到 β 和 随 机 数 k , 无法推出患者的真实身份, 因此, 本方案实现了 匿名性和不可追踪性, 保护了患者的身份信息. 而如 表 2 所示, 私有链区块上附有患者伪身份; 如表 3 所 示, 联盟链区块上的安全索引包含患者伪身份, 即使 是同一个患者,由于 k 的随机性, 则每次生成的患 者伪身份不同. 因此, 窃听者无法判断两个或多个电 子病历密文是否来自同一患者, 保证了数据的不可 链接性.
分享到:
收藏