2.793

2018影响因子

(CJCR)

  • 中文核心
  • EI
  • 中国科技核心
  • Scopus
  • CSCD
  • 英国科学文摘

留言板

尊敬的读者、作者、审稿人, 关于本刊的投稿、审稿、编辑和出版的任何问题, 您可以本页添加留言。我们将尽快给您答复。谢谢您的支持!

姓名
邮箱
手机号码
标题
留言内容
验证码

基于区块链的电子医疗病历可控共享模型

张磊 郑志勇 袁勇

张磊, 郑志勇, 袁勇. 基于区块链的电子医疗病历可控共享模型. 自动化学报, 2020, 41(x): 1−11.
引用本文: 张磊, 郑志勇, 袁勇. 基于区块链的电子医疗病历可控共享模型. 自动化学报, 2020, 41(x): 1−11.
Zhang Lei, Zheng Zhi-Yong, Yuan Yong. A controllable sharing model for electronic health recordsbased on blockchain. Acta Automatica Sinica, 2020, 41(x): 1−11.
Citation: Zhang Lei, Zheng Zhi-Yong, Yuan Yong. A controllable sharing model for electronic health recordsbased on blockchain. Acta Automatica Sinica, 2020, 41(x): 1−11.

基于区块链的电子医疗病历可控共享模型

详细信息
    作者简介:

    中国人民大学硕士研究生, 主要研究方向为区块链及密码学. 本文通信作者. E-mail: zhangleizl@ruc.edu.cn

    中国人民大学数学学院院长. 主要研究方向为解析数论与代数数论, 在指数和与特征和的几何理论以及函数域的解析理论等领域上有突破性贡献. E-mail: zhengzy@ruc.edu.cn

    中国科学院自动化研究所 复杂系统管理与控制国家重点实验室副研究员, 中国自动化学会区块链专委会主任. 2008年获得山东科技大学计算机软件与理论专业博士学位. 主要研究方向为社会计算, 计算广告学与区块链. E-mail: yong.yuan@ia.ac.cn

  • 基金项目:  国家重点研发计划(2018AAA0101401), 教育部产学研创新基金重点项目(2019J01015)资助

A Controllable Sharing Model for Electronic Health Recordsbased on Blockchain

More Information
  • Fund Project:  Supported by National Key R&D Program of China (2018AAA0101401), Ministry of Education Key Projects of Industry-Academia-Research Innovation Fund(2019J01015)
  • 摘要: 电子医疗病历共享能够提高医疗诊断的准确性, 促进公共医疗领域的发展. 针对目前普遍存在的不同医院之间病历共享困难、病人无法掌握其病历的使用情况等问题, 本文提出了病人可控的、云链协同的病历共享模型, 由各级医院组成联盟区块链, 病历数据实行链上、链下混合存储. 利用聚类算法, 改进实用拜占庭共识算法, 使得各节点可以更高效的达成共识. 将基于属性的加密方案与多关键词加密方案结合进行病历加密, 实现了数据可控共享, 病人可自主定义访问策略, 同时用户可以对加密病历进行安全、精确检索. 考虑到用户属性的动态更新, 设计了属性更新子协议. 最后评估了模型的安全性和性能, 并分析了模型的优劣势.
  • 图  1  EHR数据共享模型的逻辑框架

    Fig.  1  The logic framework of EHR data sharing model

    图  2  数据混合存储结构

    Fig.  2  Hybrid structure for data storage

    图  3  (a) 医疗数据块 (b) 摘要数据块

    Fig.  3  (a) Medical data block (b) Digest data block

    图  4  共识节点结构

    Fig.  4  The structure of the consensus nodes

    图  5  改进的PBFT算法

    Fig.  5  Process of improved PBFT

    图  6  改进共识算法的通信次数

    Fig.  6  The communication time of improved PBFT

    表  1  null改进PBFT算法的通信次数

    Table  1  The communication time of the improved PBFT algorithm in total nodes are 2000

    聚类K值 10 20 40 50
    通信次数 80110 20420 6640 5750
    下载: 导出CSV

    表  2  不同方案之间的比较

    Table  2  Comparison between different models

    文献
    功能
    屠袁飞[14] Xia[23] Shen [26] 刘格昌[27] 罗文俊[30] 本文
    基于区块链
    细粒度访问控制
    隐私保护
    可搜索加密
    支持属性更新
    数据防篡改
    智能合约
    下载: 导出CSV

    表  3  当前EHR共享面临的问题及模型应对的方法

    Table  3  The problems of EHR sharing and how to deal with the model

    类型 面临问题 模型应对方法
    患者参与度 目前患者无法完全掌握其电子病历的使用情况. 本文利用CP-ABE方案设计了病人可控的EHR分享方案,
    病人可自主设置访问控制, 决定谁可以访问病历.
    隐私保护 EHR存储着大量隐私信息, 在数据共享时可能会遭到攻击.
    以及病人和用户在分享和访问电子病历时,
    其身份信息应该受到保护.
    本文利用加密算法将EHR进行加密, 确保数据的保密性;
    利用签名算法及将数据hash值记录在区块链网络上,
    保证数据的完整性及可审计性. 同时, 通过加密及属性
    分配保护病人及数据用户的隐私信息.
    数据互操作性 目前不同医院之间数据流动性太差, 当病人就诊时,
    其在另一个医院的就诊记录不能被及时分享.
    同时, 数据的完整性没有办法保障.
    本文提出了云链协同的存储方式, 利用CP-ABE方案进行数据加密,
    病人设置访问策略, 决定谁可访问数据, 实现不同医院的病历
    进行共享. 用户可利用可搜索加密方案, 对密文进行搜索.
    医疗纠纷 当医患之间发生矛盾时, 其提供病历的真实性无法确认. 本文利用区块链存储病历的hash值, 防止数据被篡改,
    保障数据的真实性.
    下载: 导出CSV
  • [1] Jensen P B, Jensen L J, Brunak S. Mining electronic health records: towards better research applications and clinical care. Nature Reviews Genetics, 2012, 13(6): 395−405 doi:  10.1038/nrg3208
    [2] Hoerbst A, Ammenwerth E, Hoerbst A. Electronic health records. A systematic review on quality requirements. Methods of information in medicine, 2010, 49(4): 320 doi:  10.3414/ME10-01-0038
    [3] GOYAL V. Attribte-based encryption for fine-grained access control of encrypted data. In: Proceedings of the 13th ACM conference on Computer and communications security.New York, NY, USA: ACM, 2006.89−98.
    [4] NaKamoto S. Bitcoin: a peer-to-peer Electronic Cash System[Online]. Available: https://bitcoin.org/bitcoin.pdf, January 1, 2009.
    [5] 袁勇, 王飞跃. 区块链技术发展现状与展望. 自动化学报, 2016, 42(4): 481−494

    Yuan Yong, Wang Fei-Yue. Blockchain: The State of the Art and Future Trends. Acta Automatica Sinica, 2016, 42(4): 481−494
    [6] 韩璇, 袁勇, 王飞跃. 区块链安全问题:研究现状与展望. 自动化学报, 2019, 45(1): 206−225

    HAN 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] 袁勇, 王飞跃. 可编辑区块链: 模型、技术与方法. 自动化学报, 2020, 46(5): 831−846

    Yuan Yong, Wang Fei-Yue. Editable blockchain: models, techniques and methods. Acta Automatica Sinica, 2020, 46(5): 831−846
    [8] Akarca D, Xiu P Y, Ebbitt D, Mustafa B, Al-Ramadhani H, Albeyatti A. Blockchain Secured Electronic Health Records: Patient Rights, Privacy and Cybersecurity. In: 2019 10th International Conference on Dependable Systems, Services and Technologies (DESSERT), Leeds, United Kingdom, 2019.108−111.
    [9] Esposito C, Santis A D, Tortora G, Chang H and Choo K R. Blockchain: A Panacea for Healthcare Cloud-Based Data Security and Privacy? IEEE Cloud Computing, 2018, 5(1): 31−37 doi:  10.1109/MCC.2018.011791712
    [10] Thomas K C, Fran C, Patsakis C. Blockchain Meets Smart Health: Towards Next Generation Healthcare Service. In: Proceedings of 2018 9th International Conference on Information, Intelligence, Systems and Applications (ⅡSA), Zakynthos, Greece.2018. 1−8.
    [11] Alshehri S, Radziszowski S P and Raj R K. Secure Access for Healthcare Data in the Cloud Using Ciphertext-Policy Attribute-Based Encryption. In: Proceedings of 2012 IEEE 28th International Conference on Data Engineering Workshops, Arlington, VA, 2012. 143−146.
    [12] Yang Y, Ma M. Conjunctive Keyword Search with Designated Tester and Timing Enabled Proxy Re-encryption Function for E-health Clouds. IEEE Transactions on Information Forensics & Security, 2015, 11(4): 746−759
    [13] Cheng Huang, RongXing Lu, Hui Zhu, Jun Shao, Xiaodong Lin. FSSR: Fine-Grained EHRs Sharing via Similarity-Based Recommendation in Cloud-Assisted eHealthcare System[C]. In: Proceedings of ASIA CCS '16: Proceedings of the 11th ACM on Asia Conference on Computer and Communications Security. New York, NY, USA: ACM, 2016: 95−106.
    [14] 屠袁飞, 夏峰, 杨庚. 面向个人健康记录并支持属性撤销的访问控制. 小型微型计算机系统, 2017, 38(04): 834−838

    Tu Yuan Fei, Xia Feng, Yang Geng. Personal Health Record Using Attribute-based Access Control Supporting Attribute Revocation. Journal of Chinese Computer Systems, 2017, 38(04): 834−838
    [15] Rao Y S. A secure and efficient Ciphertext-Policy Attribute-Based Signcryption for Personal Health Records sharing in cloud computing. Future Generation Computer Systems, 2017, 67(feb.): 133−151
    [16] 袁勇, 倪晓春, 曾帅, 王飞跃. 区块链共识算法的发展现状与展望. 自动化学报, 2018, 44(11): 2011−2022

    Yuan 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
    [17] Yuan Yong, Wang Fei-Yue. Blockchain and Cryptocurrencies: Model, Techniques, and Applications. IEEE Transaction on Systems, Man, and Cybernetics: Systems, 2018, 48(9): 1421−1428 doi:  10.1109/TSMC.2018.2854904
    [18] Nath I. Data Exchange Platform to Fight Insurance Fraud on Blockchain. In: Proceedings of the 16th International Conference on Data Mining Workshops (ICDMW). Barcelona, Spain: IEEE, 2016. 821−825.
    [19] Zikratov I, Kuzmin A, Akimenko V, et al. Ensuring data integrity using blockchain technology. In: Proceedings of the 20th Conference of Open Innovations Association FRUCT. Finland: FRUCT, 2017.
    [20] Fan K, Ren Y, Wang Y, et al. Blockchain-based efficient privacy preserving and data sharing scheme of content-centric network in 5G. IET Communications, 2018, 12(5): 527−532 doi:  10.1049/iet-com.2017.0619
    [21] 黄穗, 陈丽炜, 范冰冰. 基于CP-ABE和区块链的数据安全共享方法. 计算机系统应用, 2019, 28(11): 79−86

    Huang Sui, Chen Li Wei, Fan Bing Bing. Data Security Sharing Method Based on CP-ABE and Blockchain. Computer Systems &Applications, 2019, 28(11): 79−86
    [22] 王秀利, 江晓舟, 李洋. 应用区块链的数据访问控制与共享模型. 软件学报, 2019, 30(06): 1661−1669

    Wang Xiu Li Jiang Xiao Zhou, Li Yang. Model for Data Access Control and Sharing Based on Blockchain. Journal of Software, 2019, 30(06): 1661−1669
    [23] Ekblaw A, Azaria A, Halamka J D, et al. A Case Study for Blockchain in Healthcare: “MedRec” prototype for electronic health records and medical research data[online], Available: https://healthit.gov/sites/default/files/5-56-onc_blockchainchallenge_mitwhitepaper.pdf, 2016.
    [24] Xia Q, Sifah E B, Asamoah K O, Gao J, Du X, and Guizani M. Medshare : Trust-less medical data sharing among cloud service providers via blockchain. IEEE Access, 2017, 5: 14757−14767 doi:  10.1109/ACCESS.2017.2730843
    [25] 薛腾飞, 傅群超, 王枞, 等. 基于区块链的医疗数据共享模型研究. 自动化学报, 2017, 43(9): 1555−1562

    Xue Teng-Fei, Fu Qun-Chao, Wang Cong, Wang Xin-Yan. A medical data sharing model via blockchain. Acta Automatica Sinica, 2017, 43(9): 1555−1562
    [26] Shen B, Guo J, Yang Y. MedChain: Efficient Healthcare Data Sharing via Blockchain. Applied Sciences, 2019, 9(6)
    [27] 刘格昌, 李强. 基于可搜索加密的区块链数据隐私保护机制. 计算机应用, 2019, 39(S2): 140−146

    Liu Ge Chang, Li Qiang. Blockchain data privacy protection mechanism based on searchable encryption. Journal of Computer Applications, 2019, 39(S2): 140−146
    [28] Wu S, Du J. Electronic medical record security sharing model based on blockchain. In: Proceedings of the 3rd International Conference on Cryptography, Security and Privacy. Kuala Lampur, Malaysia, 2019. 19−21.
    [29] 张超, 李强, 陈子豪, 黎祖睿, 张震. Medical Chain: 联盟式医疗区块链系统. 自动化学报, 2019, 45(8): 1495−1510

    Zhang 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
    [30] 罗文俊, 闻胜莲, 程雨. 基于区块链的电子医疗病历共享方案. 计算机应用, 2020, 40(01): 157−161

    Luo Wen Jun, Wen Sheng Lian, Cheng Yu. Blockchain-based electronic health record sharing scheme. Journal of Computer Applications, 2020, 40(01): 157−161
    [31] Sun J, Ren L, Wang S and Yao X. Multi-Keyword Searchable and Data Verifiable Attribute-Based Encryption Scheme for Cloud Storage. IEEE Access, 2019, 7: 66655−66667 doi:  10.1109/ACCESS.2019.2917772
    [32] Castro M, Liskov B, et al. Practical byzantine fault tolerace. Acm Transactions on Computer Systems, 2002, 20(4): 398−461 doi:  10.1145/571637.571640
    [33] 陈子豪, 李强. 基于K-medoids的改进PBFT共识机制. 计算机科学, 2019, 46(12): 101−107

    Chen Zi-Hao, Li Qiang. Improved PBFT Consensus Mechanism Based on K-medoids. COMPUTER SCIENCE, 2019, 46(12): 101−107
    [34] Rivest R L, Shamir A, Adleman L. A method for obtaining digital signatures and public-key cryptosystems. Communications of the Acm, 1978, 21(2): 120−126 doi:  10.1145/359340.359342
  • [1] 孟吴同, 张大伟. Hyperledger Fabric共识机制优化方案[J]. 自动化学报, doi: 10.16383/j.aas.c190516
    [2] 袁勇, 王飞跃. 可编辑区块链: 模型、技术与方法[J]. 自动化学报, doi: 10.16383/j.aas.2020.y000002
    [3] 张超, 李强, 陈子豪, 黎祖睿, 张震. Medical Chain:联盟式医疗区块链系统[J]. 自动化学报, doi: 10.16383/j.aas.c180131
    [4] 欧阳丽炜, 王帅, 袁勇, 倪晓春, 王飞跃. 智能合约:架构及进展[J]. 自动化学报, doi: 10.16383/j.aas.c180586
    [5] 韩璇, 袁勇, 王飞跃. 区块链安全问题:研究现状与展望[J]. 自动化学报, doi: 10.16383/j.aas.c180710
    [6] 曾帅, 袁勇, 倪晓春, 王飞跃. 面向比特币的区块链扩容:关键技术, 制约因素与衍生问题[J]. 自动化学报, doi: 10.16383/j.aas.c180100
    [7] 王飞跃, 张军, 张俊, 王晓. 工业智联网:基本概念、关键技术与核心应用[J]. 自动化学报, doi: 10.16383/j.aas.2018.y000004
    [8] 王飞跃, 孙奇, 江国进, 谭珂, 张俊, 侯家琛, 熊刚, 朱凤华, 韩双双, 董西松, 王嫘. 核能5.0:智能时代的核电工业新形态与体系架构[J]. 自动化学报, doi: 10.16383/j.aas.2018.y000003
    [9] 袁勇, 倪晓春, 曾帅, 王飞跃. 区块链共识算法的发展现状与展望[J]. 自动化学报, doi: 10.16383/j.aas.2018.c180268
    [10] 袁勇, 周涛, 周傲英, 段永朝, 王飞跃. 区块链技术:从数据智能到知识自动化[J]. 自动化学报
    [11] 袁勇, 周涛, 周傲英, 段永朝, 王飞跃. 区块链技术:从数据智能到知识自动化[J]. 自动化学报
    [12] 王飞跃, 张俊. 智联网:概念、问题和平台[J]. 自动化学报, doi: 10.16383/j.aas.2017.y000006
    [13] 唐长兵, 杨珍, 郑忠龙, 陈中育, 李翔. PoW共识算法中的博弈困境分析与优化[J]. 自动化学报, doi: 10.16383/j.aas.2017.c160672
    [14] 袁勇, 王飞跃. 平行区块链:概念、方法与内涵解析[J]. 自动化学报, doi: 10.16383/j.aas.2017.c170543
    [15] 张俊, 高文忠, 张应晨, 郑心湖, 杨柳青, 郝君, 戴潇潇. 运行于区块链上的智能分布式电力能源系统:需求、概念、方法以及展望[J]. 自动化学报, doi: 10.16383/j.aas.2017.c160744
    [16] 李牧南. 区块链和比特币相关主题的知识结构分析:共被引和耦合聚类分析视角[J]. 自动化学报, doi: 10.16383/j.aas.2017.c160648
    [17] 薛腾飞, 傅群超, 王枞, 王新宴. 基于区块链的医疗数据共享模型研究[J]. 自动化学报, doi: 10.16383/j.aas.2017.c160661
    [18] 袁勇, 王飞跃. 区块链技术发展现状与展望[J]. 自动化学报
    [19] 袁勇, 王飞跃. 区块链技术发展现状与展望[J]. 自动化学报, doi: 10.16383/j.aas.2016.c160158
    [20] 冀峰, 安玲玲, 邓成, 高新波. 基于多重元胞自动机的图像水印加密算法[J]. 自动化学报, doi: 10.3724/SP.J.1004.2012.01824
  • 加载中
计量
  • 文章访问数:  13
  • HTML全文浏览量:  12
  • 被引次数: 0
出版历程
  • 收稿日期:  2020-05-27
  • 录用日期:  2020-08-05

基于区块链的电子医疗病历可控共享模型

    基金项目:  国家重点研发计划(2018AAA0101401), 教育部产学研创新基金重点项目(2019J01015)资助
    作者简介:

    中国人民大学硕士研究生, 主要研究方向为区块链及密码学. 本文通信作者. E-mail: zhangleizl@ruc.edu.cn

    中国人民大学数学学院院长. 主要研究方向为解析数论与代数数论, 在指数和与特征和的几何理论以及函数域的解析理论等领域上有突破性贡献. E-mail: zhengzy@ruc.edu.cn

    中国科学院自动化研究所 复杂系统管理与控制国家重点实验室副研究员, 中国自动化学会区块链专委会主任. 2008年获得山东科技大学计算机软件与理论专业博士学位. 主要研究方向为社会计算, 计算广告学与区块链. E-mail: yong.yuan@ia.ac.cn

摘要: 电子医疗病历共享能够提高医疗诊断的准确性, 促进公共医疗领域的发展. 针对目前普遍存在的不同医院之间病历共享困难、病人无法掌握其病历的使用情况等问题, 本文提出了病人可控的、云链协同的病历共享模型, 由各级医院组成联盟区块链, 病历数据实行链上、链下混合存储. 利用聚类算法, 改进实用拜占庭共识算法, 使得各节点可以更高效的达成共识. 将基于属性的加密方案与多关键词加密方案结合进行病历加密, 实现了数据可控共享, 病人可自主定义访问策略, 同时用户可以对加密病历进行安全、精确检索. 考虑到用户属性的动态更新, 设计了属性更新子协议. 最后评估了模型的安全性和性能, 并分析了模型的优劣势.

English Abstract

张磊, 郑志勇, 袁勇. 基于区块链的电子医疗病历可控共享模型. 自动化学报, 2020, 41(x): 1−11.
引用本文: 张磊, 郑志勇, 袁勇. 基于区块链的电子医疗病历可控共享模型. 自动化学报, 2020, 41(x): 1−11.
Zhang Lei, Zheng Zhi-Yong, Yuan Yong. A controllable sharing model for electronic health recordsbased on blockchain. Acta Automatica Sinica, 2020, 41(x): 1−11.
Citation: Zhang Lei, Zheng Zhi-Yong, Yuan Yong. A controllable sharing model for electronic health recordsbased on blockchain. Acta Automatica Sinica, 2020, 41(x): 1−11.
  • 电子医疗病历(Electronic health record, EHR)存储着病人的诊断信息和治疗信息, 有助于提供便利的健康记录存储服务. 对于严重疾病或者慢性疾病, 病人就诊时, 如果医生能够看到先前病史, 就可以综合之前的诊断及治疗效果, 对病情进行更全面、准确地分析, 为病人提供更加高效的治疗方案. 同时, 对于重大突发传染病, EHR的共享也可使来自各个地区的优秀医疗团队对疫情态势进行全方位、准确和快速地研判, 提高处置效率和公共医疗健康水平[1].

    然而, 目前不同医院之间的数据互操作性相对较差, 医疗数据普遍存在数据孤岛问题. 电子病历数据大多是由医院掌握, 病人对自己病历的使用情况并不完全知情. EHR中存储着病人的个人信息和病历, 一旦受到攻击, 将会导致病人隐私等敏感信息泄露, 引发安全风险及医患矛盾[2]. 因此, EHR共享时的数据及身份隐私保护至关重要.

    为实现不同医院间医疗数据的安全共享, 同时使病人能够对数据进行访问控制, 一些学者提出利用基于密文策略的属性加密方案[3](Ciphertext-Policy Attribute-Based Encryption, CP-ABE)对病历进行加密, 将密文存储于云服务器上, 实现EHR的共享. CP-ABE方案能实现细粒度的数据访问控制和加密, 然而, 云服务器通常是半可信的, 其会执行用户的命令, 但仍对用户的信息感到好奇. 在监管缺失和遭受特定攻击时, 云可能会篡改、丢失或泄露用户的数据.

    区块链作为比特币的核心技术, 具有去中心化、数据不可篡改、可追溯、不可伪造、可编程等性质[4-6], 在特定的场景下, 也可以对区块链上的数据进行隐藏, 因此可用于实现安全和可信的EHR管理[7-10]. 由于区块链现阶段存在性能瓶颈, 而EHR中通常包括大规模、跨媒体的健康数据, 例如CT、X光等医疗影像数据, 因此单纯使用区块链存储和共享EHR的效率不高, 迫切需要将云存储和区块链相结合, 以便优势互补, 实现安全和高效的EHR共享.

    本文提出了云链协同、病人可控的EHR安全共享方案. 该方案采用链上与链下混合存储方式, 利用CP-ABE方案来加密EHR数据, 使得病人可以自主可控地定义访问策略, 实现细粒度的访问控制. 将加密EHR数据存储于云服务器、并利用区块链存储数据的hash值及访问策略, 从而保证数据的真实性和完整性, 方案支持用户对密文进行多关键词搜索, 以提高搜索效率及准确性. 各级医院形成联盟区块链, 改进实用拜占庭算法, 利用聚类算法将节点进行分类, 在病人将数据上传至区块链及数据用户向区块链访问病历摘要时, 节点间可尽快达成共识, 改进的共识算法支持节点动态加入及退出区块链. 考虑到数据用户的身份不是一成不变的, 本文提出了属性更新子协议, 以保障数据用户身份变化时病历的安全性.

    本文的剩余部分安排如下: 第1节介绍相关工作和研究现状; 第2节描述了EHR数据共享模型的设计目标与模型框架; 第3节给出了模型的关键步骤和算法设计; 第4节阐述用户搜索访问更新子协议; 第5节讨论模型的性质; 第6节总结全文.

    • 近年来, EHR逐渐代替纸质病历, 一定程度上解决了病人在某家医院就诊时, 可能因为纸质病历、检查单等丢失, 需要重复做一些健康检查的困扰. 目前的问题是: 不同医院之间的EHR数据共享非常少, 病人在转院治疗时, 其他医院无法看到病人之前的病历数据. 因此, EHR数据共享成为公共健康和智慧医疗领域的热点.

      现有文献中, Alshehri[11]提出将EHR数据存储在云上, 利用CP-ABE方案来进行加密, 只有具有相应属性的用户才可以解密密文, 可实现安全存储及细粒度的灵活访问控制. Yang[12]等人提出了支持连接关键词搜索及定时启用代理重加密功能的云上健康数据分享方案, 允许用户在指定的时间内进行病历的搜索; 数据拥有者可控制用户搜索和解密的时间, 但该方案计算能力较低, 存储开销较大. Huang[13]等人提出基于欧几里得相似性距离的推荐协议, 为病人推荐合适的医生, 以便减少病人的隐私泄露, 同时利用基于属性的条件性代理重加密方案, 提出了基于云的细粒度隐私保护的病历共享方案. 但实际应用场景中, 数据用户的属性并非一成不变的, 屠袁飞[14]等人利用属性加密, 对EHR进行加密存储到云服务器上进行共享, 同时利用版本号标记和代理重加密方案实现用户属性的撤销, 保证了在用户属性发生变化时密文的安全性. 为提高病历共享的效率, Rao[15]提出了安全的基于属性的签名及加密的病历分享方案, 相比之前存在的方案, 该方案支持更短的密文, 需要更少的双线性对计算.

      上述研究尽管也关注云环境中数据共享的安全性, 但因云是半可信的, 将数据存储到云服务器中可能会面临数据丢失、篡改等风险. 区块链技术可以较好地解决该问题, 保障数据的完整性和真实性. 区块链是一个不可篡改的分布式账本, 通过共识机制选择特定的节点将数据记录上链[16,17], 进行数据审计, 防止数据被更改. 因此, 不少学者将区块链技术用于数据分享中, 以期保障数据的真实性、完整性和不可篡改性[18-22].

      Ekblaw[23]等人利用区块链技术设计了去中心化的电子健康病历分享系统, 首次提出利用智能合约实现权限管理. Xia[24]等人提出了MeDShare, 用于解决在缺乏信任的环境下共享医疗数据. 该系统基于区块链, 为大数据实体之间在云存储库中共享的医疗数据提供数据来源、审计和控制, 采用智能合约和访问控制机制, 有效地跟踪数据的行为, 并在发现违反数据权限时撤销违规实体的访问权. 薛腾飞[25]等人提出了基于区块链的医疗数据共享模型, 将医疗机构划分等级, 使用改进的委托权益证明共识机制安全、快捷地进行数据共享. Shen[26]等人提出Medchain, 将病历内容放在点对点的网络上, 摘要等部分放在区块链上, 该方案利用智能合约管理数据的访问权限, 但使用智能合约成本较高. 刘格昌[27]等人提出了基于可搜索加密的数据隐私保护机制, 将该系统应用于个人医疗数据区块链中, 使得隐私数据搜索更加方便. Wu[28]等人提出了将病人敏感信息进行数据脱敏, 然后将其加密存储到区块链和分布式文件存储系统中. 张超[29]等人提出Medical Chain, 利用实用拜占庭容错算法达成共识, 防止医疗数据被篡改. 罗文俊[30]等人将分布式密钥生成技术和基于身份的代理重加密技术相结合, 设计了数据安全共享协议, 利用委托权益证明共识选取代理节点, 重加密EHR, 但此方案只适合于单对用户间进行数据共享, 不支持一对多的数据共享.

      通过分析和比较现有的EHR共享方案可知, 该领域研究虽然取得了一定的成果, 但还有一些可以改进的地方. 例如, 单独使用云服务器进行数据存储时, 由于云是半可信的, 可能会造成数据篡改或者泄露等安全性问题. 单独使用区块链时, 则无法克服因存储数据的规模过大造成效率过低的问题. 因此, 有必要将区块链和云存储技术相互结合, 实现云链协同的EHR数据共享. 此时, 数据以何种方式存储更加安全, 病人如何进行数据访问控制, 数据用户如何对密文进行高效的搜索, 如何使得模型兼具以上良好的性质, 如何提高共享的效率, 都是值得进一步研究的问题.

      为此, 本文在现有文献[31]的基础上提出了病人可控的云链协同的EHR共享模型. 病人将EHR数据加密后存储在云服务器上, 将数据摘要及访问策略存储在区块链上, 这样既能防止云服务器篡改数据、方便进行数据完整性审计; 同时又能减缓区块链的存储压力, 使得方案更具可扩展性. 本文利用聚类算法, 改进实用拜占庭算法, 提高区块链中节点达成共识的效率. 利用CP-ABE方案加密病历, 只有满足病人设置的属性访问策略的用户可访问数据, 使得一对多的数据分享能够实现细粒度的访问控制. 对于加密后的病历, 支持利用多关键词搜索, 以提高搜索效率及准确性. 在实际场景中, 用户属性的变化对于密文安全性有很大的影响, 因此本文提出了用户属性的动态更新下数据安全共享的方案. 本文模型既解决了EHR安全存储的问题, 同时病人可以管理病历的使用情况, 使得数据共享更加高效、安全.

    • 本节首先给出EHR数据共享模型的设计目标, 然后重点阐述模型的逻辑框架与运行流程.

    • 该模型旨在达到如下设计目标:

      1)病人可控的数据共享: 针对病人无法完全掌握其EHR使用情况的问题, 本文旨在设计病人可控的EHR共享模型, 即由病人自主决定其病历的访问权限.

      2)隐私保护: EHR存储着大量隐私信息, 因此保障数据的保密性及完整性非常重要. 本文旨在结合密码学和区块链技术, 通过加密及属性分配等方式保护病人及数据用户的隐私信息, 同时保障数据在共享过程中的完整性与可审计性.

      3)细粒度访问控制: 利用CP-ABE方案, 病人可自主定义访问策略, 确保数据可达到细粒度的访问控制.

      4)安全搜索: 本文模型旨在构建安全的可搜索加密方案, 数据用户利用多关键词搜索算法, 生成关键词token, 进行搜索. 数据用户身份在满足病人设置的访问策略时, 才有权访问其历史病历. 窃听者无法猜到关键词. 即使其猜到关键词, 因其身份不符合病人设置的访问策略, 仍然无法得到数据密文.

    • 本文提出将区块链与云服务器相结合, 实现数据的链上(区块链)+链下(云服务器)混合存储; 同时, 利用CP-ABE方案和多关键词可搜索加密方案, 实现细粒度的访问控制及高效的数据搜索和安全共享. 如图1所示, 基于区块链和云服务器的EHR共享模型包括如下主要角色, 即证书机构(CA)、属性机构(AA)、联盟区块链(BC)、云服务提供者(CSP)、数据拥有者(DO)以及数据用户(DU).

      图  1  EHR数据共享模型的逻辑框架

      Figure 1.  The logic framework of EHR data sharing model

      各个角色的具体介绍如下:

      ■证书机构(CA): 负责进行全局设置, 设置系统的主公钥和密钥. 生成DO和CSP的公私钥对. 本文假设CA完全可信.

      ■属性机构(AA): 例如医院、保险公司或者医疗研究机构等, 负责核查DU的身份, 为合法的DU生成私钥.

      ■联盟区块链(BC): 存储加密数据的摘要, 验证DU的请求.

      ■云服务提供者(CSP): 负责存储加密数据及访问策略.

      ■数据拥有者(DO): 即病人, 负责加密、存储数据, 生成数据的访问策略.

      ■数据用户(DU): 例如医生、保险公司经理等希望查看病人病历的用户.

      该模型的运行流程如下:

      步骤 1: 全局设置. 该算法由CA执行, 包括设置全局公共参数、公共属性密钥、系统主公钥和主密钥.

      步骤 2: 密钥生成. CA验证AA的身份, 为合法的AA分发身份. CA验证DO、CSP的身份, 为其设置公私钥对. 当DU希望加入系统时, 发送注册请求给AA, AA为合法的DU分配身份 $uid$ 及属性 ${A_{aid,uid}}$ , 同时为其计算私钥, 如图1①所示.

      步骤 3: 数据加密. DO运行加密算法, 包括以下三个步骤:

      1)关键字索引index产生: DO为文件选择关键词, 设置关键词索引index.

      2)文件加密: 从密钥空间随机选取密钥 ${k_\theta },$ 对文件进行加密.

      3)加密 ${k_\theta }$ .

      步骤 4: 数据存储. 如图1③所示, 为克服区块链的空间限制和性能瓶颈, 提高区块链的可扩展性, 同时防止CSP篡改数据, 本文提出将数据进行链上、链下混合存储的结构, 如图2所示:

      图  2  数据混合存储结构

      Figure 2.  Hybrid structure for data storage

      DO将原始医疗数据加密上传至CSP, 将数据摘要等存储到区块链上, 区块链中的Merkle树结构[16]可以用来验证数据的完整性与真实性. 医疗数据块和摘要数据块存储内容如图3(a)(b)所示.

      图  3  (a) 医疗数据块 (b) 摘要数据块

      Figure 3.  (a) Medical data block (b) Digest data block

      DO对医疗数据进行加密, 得到密文 $CT$ , 对其进行签名, 得到 $Si{g_{DO}}$ . 同时, 计算其hash值, 然后将密文、hash值及 $Si{g_{DO}}$ , 一起发送给CSP. CSP接收到签名之后, 验证DO的签名, 计算CT的hash值, 如果与DO发送来的hash值相同, 则证明接受到了正确的密文, 向DO返回1及文件位置; 否则返回 $ \bot .$

      步骤 5: 数据访问. 当DU希望访问数据时, 使用可搜索加密算法, 输入公钥、关键词集合, 产生搜索token. DU向区块链主节点发送查找请求, 如图1⑤所示.

      节点收到请求后, 运行匹配算法, 验证是否有关键词索引index可以匹配上数据用户产生的token. 如果搜索成功, 表明数据文件未被删除, 区块链返回相应的摘要数据块给数据用户, 否则返回异常提示信息.

      该算法由DU执行, DU接收到摘要数据块后, 首先计算出内容密钥 ${k_\theta }$ , 解密出文件位置, 向CSP发出数据请求, 如图1⑥所示. 如果DU的属性集合满足DO设置的访问策略, CSP会输出相应的密文, 否则返回异常提示信息.

      步骤 6: 解密. DU首先计算密文的hash值, 与区块链存储的hash值进行比较, 验证文件是否被篡改. 如果文件没有被篡改, 则首先解密出内容密钥 ${k_\theta }$ , 再利用内容密钥解密文件.

    • 本节介绍模型的详细构造.

    • CA进行全局设置, 产生系统公钥和主密钥. 具体步骤如算法1所示.

      算法1: 模型的全局设置.

      输入: 安全参数、属性集合.

      输出: 全局公共参数 $GP$ 、公共属性密钥 $PA{K_x}$ 、公钥 $PK$ 、主私钥 $MK$ .

      CA选择两个素数p阶双线性群 $G,{G_T}$ , $g,{g_0}$ $G$ 的生成元. $e:G \times G \to {G_T}$ 为一个双线性映射, 构建两个hash函数: $H:{\left\{ {0,1} \right\}^*} \to G,{H_1}:{\left\{ {0,1} \right\}^*} \to Z_{\rm{p}}^*.$ 其中 $Z_{\rm{p}}^*$ 为p的剩余类环的乘法群.

      CA验证AA的身份, 为合法的AA分发全局身份 $aid$ , AA的数量记为 $l$ .

      CA输出全局公共参数 $GP$ 为: $GP = {\{}G,{G_T}, H,{H_1},e,p,g,{g_0},k {\}}.$ 定义A为属性集合, 对于属性集合中每个元素 $x$ , 为其选择一个随机元素 ${v_x} \in {Z_p}$ , 计算公共属性密钥为: $PA{K_x} = {g^{{v_x}}}.$

      CA选择随机元素 $a,\alpha ,\beta \in Z_p^ * $ , 计算系统公钥 $PK$ 和主密钥 $MK$ 分别为:

      $$ \begin{array}{l} PK = \left\{ {GP,{g^a},{g^\alpha },e{{(g,g)}^\beta },} \right.{\rm{ }}\left. {PA{K_x}} \right\}.\\ MK = \left\{ {\alpha ,{g^\beta },\left\{ {{v_x}|x \in A} \right\}} \right\}. \end{array} $$
    • 密钥生成包括CA为DO、CSP生成密钥, 及AA为DU生成密钥. 具体步骤如算

      法2和3所示.

      算法2: DO、CSP密钥生成.

      输入: 随机数.

      输出: DO、CSP的公私钥对.

      1)首先CA选择两个大素数 ${\rm{p}},q$ ,计算 ${\rm{n = p}} \cdot q$ , $\varphi \left( n \right)$ $n$ 的欧拉函数.

      2)CA选择一个随机数T, $T$ $\varphi \left( n \right)$ 互素, 且 $T \in \left[ {1,\varphi \left( n \right)} \right].$

      3)计算同余式: $S \cdot T \equiv 1od {\rm{ }}\left( {\varphi \left( n \right)} \right).$ 则DO的私钥为: $S{K_{DO}} = S,$ 公钥为: $P{K_{DO}} = \left\{ {T,n} \right\}.$

      4)CA为CSP生成公私钥对, 与上述步骤相同, CSP的私钥为: $S{K_{CSP}} = {S'},$ 公钥为: $P{K_{CSP}} = \left\{ {{T'},{n'}} \right\}.$

      算法3: DU的密钥生成.

      输入: 随机数、DU的属性集合.

      输出: DU的私钥.

      DU向其所在的AA提出申请, AA验证其身份的合法性, 为其分发独特的身份 $uid$ 和属性集合 ${A_{aid,uid}}.$ 然后为其生成密钥, 过程如下.

      AA选择 $t \in Z_p^ * $ , 计算:

      $$ D = {g^\beta } \cdot {g^{at}},{D'} = {g^t},{D^{''}} = {g^{a\alpha }}. $$ (1)

      $\forall x \in {A_{aid,uid}},$ 计算 ${D_x} = h{\left( x \right)^{\frac{t}{{{v_x}}}}}.$

      设置DU的私钥 $S{K_{DU}}$ 为: $S{K_{DU}} = \big( D,{D'}, D{^{''}},{D_{^{_x}}} \big).$

      其中, AA对于自己所管理的属性集合 $x \in {A_{aid}},$ 定义 $AR{L_x}$ 为属性撤销列表.

    • DO执行文件加密算法. 具体步骤如算法4、5、6、7所示.

      算法4: 索引产生.

      输入: 文件集 $F$ .

      输出: 关键词索引 ${I_W}$ .

      假设DO要共享的文件集为: $F = ({F_1},{F_2},\cdots{F_d}),$ $d$ $F$ 中文件的数量.

      DO首先为每个文件 ${F_\theta }$ , ${\rm{1}} \le \theta \le {\rm{d}}$ , 选择随机数 ${\tau _\theta }$ , 计算: ${I_\theta } = {g^{{\tau _\theta }}}.$

      然后为其选择关键词集合: $W = \left\{ {{w_1},{w_2},\cdots{w_m}} \right\}.$ $m$ $W$ 中关键词的数量. 对于关键词 ${w_j} \in W,1 \leq j \leq m,$ DO选择 $\sigma \in Z_p^ * ,$ 计算:

      $$\overline I = {g^{\sigma \alpha }},{I_{\theta ,j}} = {g^{a\left( {\sigma + \tau \theta } \right)}}{g^{\sigma {H_1}\left( {{w_j}} \right)}}.$$ (2)

      DO为每个关键词 ${w_j}$ 设置索引为: $\left\{ {{I_{{w_j}}}} \right\} = \left( {\overline {I,} \left\{ {{I_{\theta ,j}},{I_\theta }} \right\}} \right).$ 最后, DO为关键词集合 $W$ 产生索引为: ${I_W} = \left\{ {{I_{{w_j}}}} \right\},1 \leq j \leq m.$

      算法5: 文件加密.

      输入: 文件 $F$ 、内容密钥 ${k_\theta }$ 、公钥 $PK$ 、访问策略 $\left( {M,\rho } \right)$ .

      输出: 文件的密文、内容密钥的密文.

      DO随机从密钥空间中选取密钥 ${k_\theta }$ , 利用对称加密算法去获得文件 ${F_\theta }$ 的密文: ${C_\theta } = Enc\left( {{F_\theta }} \right).$

      DO输入 $PK,{k_\theta }$ 和访问策略 $\left( {M,\rho } \right)$ ,加密 ${k_\theta }$ 得: ${C'} = {k_\theta } \cdot e{\left( {g,g} \right)^{\beta s}}.$

      访问策略 $\left( {M,\rho } \right)$ 中, $M$ 是一个 $l \times n$ 阶矩阵, $\rho $ $M$ 的每一行映射到不同的属性上. DO选择 $s$ 为一个秘密, 选取随机数 ${y_2}, \cdots ,{y_n} \in {Z_p},$ 令向量 $v = (s,{y_2}, \cdots ,{y_n}).$

      计算 ${\lambda _i} = {M_i} \cdot v,$ $1 \leq i \leq l,$ 其中 ${M_i}$ $M$ 的第 $i$ 行, 然后随机选取 ${r_i} \in {Z_p},$ 计算:

      $$ {C^{''}} = {g^s},{C_i} = {\left( {{g^{v\rho \left( i \right)}}} \right)^{{r_i}}}. $$ (3)
      $$ {C_i}' = {g^{a{\lambda _i}}} \cdot H{\left( {\rho \left( i \right)} \right)^{{r_i}}}. $$ (4)
      $$ C{T'} = \left\{ {\left( {M,\rho } \right),{C'},{C^{''}},{C_i},C_i'} \right\}. $$ (5)

      则密文 $CT$ 为: $CT = ({I_W},{C_\theta },C{T'}).$

      算法6: 密文上传至CSP.

      输入: 文件密文 $CT$ .

      输出: $CT$ 的hash值、DO的签名.

      DO计算 $CT$ 的hash值得: $H(CT).$ 对CT签名得: $Si{g_{DO}}\left( {CT} \right) = H{(CT)^S}od n.$

      DO将 $CT,H(CT),Si{g_{DO}}$ 打包发送给CSP. CSP接收到DO的消息后, 进行验证计算: $Si{g_{DO}} {(CT)^T} = H(CT),$ 将计算出的密文的hash值与DO发的hash值进行对比, 如果一样, 则向DO返回1及文件位置. 否则, 返回 $ \bot .$

      算法7: 区块链交易产生.

      输入: 摘要块、摘要块签名.

      输出: 交易单.

      DO将文件位置Location利用内容密钥 ${k_\theta }$ 进行加密, 得到密文 $C{T_{Location}}$ .

      DO将 $H\!\left( {CT} \right)$ $P{K_{DO}}$ ${I_W}$ $\left( {M,\rho } \right)$ $C{T_{Location}}$ 、医院名称、医生身份信息存入摘要块中, 打包交易, 计算交易的hash值得 $H\left( {trans} \right)$ , 写下时间戳、交易 $ID$ , DO对交易进行签名, 得到: $Si{g_{DO}}\left( {trans} \right) = H{(trans)^S}od n.$

      DO将交易、签名发送给区块链节点, 提交验证请求. 区块链节点接收到交易单, 首先提取出公钥, 并对交易单中的数字签名进行验证, 如果 $Si{g_{DO}}{(trans)^T} = H(trans),$ 与交易单中的hash值进行比较, 如果一样, 则说明数据没有问题, 签名后发送给其他节点, 进行共识; 否则返回交易单, 不计入区块.

    • 当DU希望访问数据时, 首先产生搜索token, 然后将查找请求发送给区块链节点. 节点执行匹配算法test算法, 如下所示.

      算法8: 产生搜索token.

      输入: 关键词集.

      输出: 搜索token.

      DU产生搜索token: DU对于关键词集合 ${W'} = \left( {w_1',w_2', \cdots ,w_{{m'}}'} \right),$ ${m'}$ 表示DU想查询的关键词的数量. 选择 $\pi \in Z_p^ * ,$ 计算:

      $$\begin{split} {t_1} &= {g^{a\pi }} \cdot \prod\limits_{j = 1}^{{m'}} {{g^{\pi {H_1}\left( {w_j'} \right)}}} . \\ {t_2} &= {g^{\alpha \pi }},{t_3} = {D^{''\pi }}. \\ \end{split} $$ (6)

      然后, DU产生搜索token: ${T_{{W'}}} = \left( {{t_1},{t_2},{t_3}} \right).$ DU发送 ${T_{{W'}}}$ 给区块链节点.

      在收到DU的搜索请求时, 节点检验下式:

      $$e\left( {\prod\limits_{j = 1}^{{m'}} {{I_{\theta ,j}},{t_2}} } \right) = e\left( {\overline I ,{t_1}} \right)e\left( {{I_\theta },{t_3}} \right).$$ (7)

      验证是否存在能匹配的上 ${T_{{W'}}}$ 的关键词索引 ${I_{{w_j}}} \in {I_W}$ ,只要在 $C_m^{{m'}}$ 次匹配中有一个能成功匹配上, 证明搜索成功. 然后区块链节点返回交易单, 否则, 返回 $ \bot $ .

    • DU接收到区块链节点发送的交易单. 如果DU的属性不在属性撤销列表 $AR{L_x}$ 上, 并且其属性满足嵌在密文里的访问策略, 则DU通过执行下列算法获得内容密钥 ${k_\theta }$ , 利用 ${k_\theta }$ 解密 $C{T_{L{\rm{ocation}}}}$ , 得到文件存储位置, 然后去云服务器下载文件. DU得到密文后, 首先计算密文的hash值, 检查是否与区块链中存储的值一致, 检验数据是否被篡改, 如果一致, 进行文件解密.

      根据线性秘密分享方案[3], 存在常数 ${\left\{ {{\omega _i} \in {Z_p}} \right\}_{i \in I}}$ , 满足 $\sum\nolimits_{i \in I} {{\omega _i}{\lambda _i}} = s.$

      算法9: 文件解密.

      输入: CT $S{K_{DU}}$ $C{T_{Location}}$ .

      输出: 文件 ${F_\theta }$ .

      DU执行解密算法, 首先计算:

      $$ A = \frac{{{A_2}}}{{{A_1}}} = e{\left( {g,g} \right)^{ats}}. $$ (8)

      其中:

      $$ \begin{array}{l} {A_1}{\rm{ = }}\prod\limits_{i \in I} {e{{\left( {{C_i},{D_{\rho \left( i \right)}}} \right)}^{{\omega _i}}}} ,{A_2} = \prod\limits_{i \in I} {e{{\left( {{C_i}',{D'}} \right)}^{{\omega _i}}}} .\\ \end{array} $$

      然后计算内容密钥 ${k_\theta }$ 为:

      $${k_\theta } = \frac{{{C'} \cdot A}}{{e\left( {D,{C^{''}}} \right)}}.$$ (9)

      DU首先利用 ${k_\theta }$ 解密 $C{T_{Location}}$ , 得到文件存储位置. DU搜索文件, 得到密文 $CT$ . 得到 $CT$ 后, 首先计算其hash值, 与区块链中存储值进行比较, 如果一致则进行解密.

    • 本文基于实用拜占庭共识算法[32] (Practical byzantine fault tolerance, PBFT), 改进陈[33]等人提出的KPBFT共识算法, 全国各级医院间形成联盟区块链, 对于 $n$ 个医院, 随机选择 $k$ 个聚类中心, 作为代理节点, 构成代理节点群, 对其进行编号, 代理节点群中成员轮流成为当值主节点. 考虑各个医院间的地理位置、设备硬件、网络延迟等因素, 进行聚类. 共识结构如图4所示:

      图  4  共识节点结构

      Figure 4.  The structure of the consensus nodes

      共识过程如图5所示. 首先每一类节点间达成共识, 然后代理节点群间再进行共识, 最后达成共识. 在一段时间后, 更换聚类中心, 重新进行聚类.

      图  5  改进的PBFT算法

      Figure 5.  Process of improved PBFT

      共识过程描述如下:

      1)请求阶段: 当病人DO想上传病历数据或者数据用户DU想访问交易时, 客户端向当值主节点发起请求. 主节点验证交易的合法性, 如果交易不合法, 直接将其丢弃. 否则, 对交易进行编号, 放入列表中, 广播到代理节点群中其他成员. 在这个过程中, 节点需要验证交易中CSP的签名是否正确, 区块链中的访问策略与云中的访问策略是否相同.

      2)子节点共识过程: 如交易合法, 代理节点将收到的交易广播到其子共识节点群中. 子节点群间进行预准备、准备、确认、回复阶段, 将执行结果发送给其代理节点.

      3)代理节点群的共识过程: 代理节点间执行共识过程, 因代理节点只需将自己负责的子节点群的消息相互广播即可, 所以代理节点间通过确认、回复阶段即可, 在收到别的代理节点值时, 节点会验证如果与他计算的值相同, 那么广播一个确认消息到代理节点网络中. 当节点收到 $2f + 1$ ( $f$ 为系统中拜占庭节点的个数)个确认消息后, 向客户端回复消息.

    • 实际应用场景中, DU的属性并非一成不变的. 当DU的属性发生变化时, 为保证文件的安全及搜索的有效性, 本文设置了属性撤销及属性添加子协议, 协议的具体构造如下.

    • 当DU的属性 ${x_1}$ 被撤销时, 为保证文件的安全性, AA首先把撤销的属性 ${x_1}$ 加入属性撤销列表 $AR{L_x}$ 中, 发送给CA及DO, 告知他们该用户的某个属性已被撤销, 然后执行如下操作:

      1)CA首先执行属性密钥更新算法:

      算法输入公钥 $PK,$ 主密钥 $MK$ 及要撤销的属性 ${x_1}.$ 对于属性 ${x_1}$ , CA选择一个随机数 $\overline {{v_{{x_1}}}} \in Z_{\rm{p}}^ * \left( {\overline {{v_{{x_1}}}} \ne {v_{{x_1}}}} \right)$ , 计算属性更新密钥为: $AU{K_{{x_1}}} = \dfrac{{\overline {{v_{{x_1}}}} }}{{{v_{{x_1}}}}}.$

      2)CA计算新的公共属性密钥为: $\overline {PA{K_{{x_1}}}} = {\left( {PA{K_{{x_1}}}} \right)^{AU{K_{{x_1}}}}}.$

      CA将 $AU{K_{{x_1}}}$ $\overline {PA{K_{{x_1}}}} $ 发送给AA、CSP及属性不在撤销列表 $AR{L_x}$ 里的DU.

      3)AA为DU更新私钥:

      算法输入DU的私钥 $S{K_{DU}}$ 和属性更新密钥 $AU{K_{{x_1}}}$ , 返回一个新的私钥:

      $$\begin{array}{l} S{K_{D{U'}}} = {\rm{\bigg\{ }}\overline D = D,\overline {{D'}} = {D'}, \\ \overline {{D^{''}}} = {D^{''}},{\rm{ }}for{\rm{ }}x \ne {x_1}:\overline {{D_x}} = {D_x}; \\ {\rm{ }}for{\rm{ }}x = {x_1}:\overline {{D_x}} = {\left( {{D_x}} \right)^{\dfrac{1}{{^{AU{K_{{x_1}}}}}}}}{\rm{\bigg\} }}{\rm{.}} \\ \end{array} $$

      4)DO执行密文更新算法, 得到更新的密文为:

      $$ \begin{array}{l} C{T^{''}} = {\rm{\bigg\{ }}\overline {{C'}} = {C'},\overline {{C^{''}}} = {C^{''}},\overline {{C_i}'} = {C_i}', \\ {\rm{ }}for\rho \left( i \right) \ne {x_1}:\overline {{C_i}} = {C_i}; \\ {\rm{ }}for\rho \left( i \right) = {x_1}:\overline {{C_i}} = {\left( {{C_i}} \right)^{AU{K_{\rho \left( i \right)}}}}{\rm{\bigg\} }}{\rm{.}} \end{array} $$

      在CA更新属性密钥及公共属性密钥, AA更新DU的私钥及DO更新相应的密文后, 按照3.3构造中的方法将更新的密文发送给CSP及区块链节点, 重新在区块链上进行存储. 在执行完上述操作后, 不再拥有相应属性的DU不能再查看相应属性加密的文件, 确保了文件的安全.

    • 当DU新增新的属性 $y$ 时, 为保证DU能查看相应文件, 系统运行属性添加协议, 更改DU的私钥. 详细过程如下所示, 其余步骤和第3部分相同:

      1)DU向AA提出申请: 新增属性 $y$ , AA验证其身份的合理性, 重新计算其私钥为: ${D_{x \cup y}} = h{\left( x \right)^{\frac{t}{{{v_x}}}}} \cup h{\left( y \right)^{\frac{t}{{{v_y}}}}}.$

      2)AA发送 ${D_{x \cup y}}$ 给数据用户DU.

      3)DU更新先前属性集为 ${S_{uid}}: = {S_{uid}} \cup \left\{ y \right\}.$ 同时更新私钥为: $S{K_{DU}}' = \left( {D,{D'},D{}^{^{''}},{D_{x \cup y}}} \right).$

      执行完上述操作后, DU凭借其新增属性可以查看该属性能够解密的相应文档.

    • 本文部分工作是基于Sun[31]等人的模型, 在其基础上引入区块链技术实现医疗数据的分享, 关键词搜索的正确性及文件解密的正确性均已在该文献中加以证明.

      云服务器是半可信的, 它会执行用户的请求, 但也对用户的隐私数据很感兴趣. 在本文模型中, 其存储的是密文文件, 云服务器无法获得解密密钥, 所以无法解密文件, 因此数据的隐私可以得到保障.

      DO定义了访问策略, 只有当DU的属性满足时, 才可解密出内容密钥, 进行文件位置及文件密文解密, 因此身份不符的DU无法获得DO病历. 同时, 本文将电子病历的hash值和DO定义的访问策略记录在区块链上, DU可通过区块链验证数据的完整性, 进行数据审计, 防止CSP篡改数据. 一旦云服务器非法删除或者篡改数据, DU在得到数据后, 与区块链中存储的hash值进行对比, 因hash函数的抗碰撞性, 所以会很容易发现不同, DU会向CSP发送错误报告.

      DO向区块链存储数据及DU向区块链请求查询文件时, 可以通过改进的共识算法确保存储服务及查询服务顺利实现.

      DO利用公钥 $T$ 对密文及交易进行签名, 发送给CSP及区块链节点进行验证时, 以下两式的正确性 $Si{g_{DO}}{(CT)^T} = H(CT)$ $Si{g_{DO}}{(trans)^T} = H (trans)$ 可由RSA[34]算法的正确性保障.

      在向CSP发送加密病历时, DO使用其私钥进行签名, 而其公私钥对是由完全可信的CA来分配和保存, 所以DO的身份也是保密的. DU在进行数据访问时, 利用AA发送的独特的身份和属性集合, 可以保持其真实身份的安全性.

      在多关键词搜索方案中, 因选用随机数产生的关键词索引, 所以窃听者不能够猜到关键词, 无法产生对应的token, 因此多关键词搜索方案是安全的.

    • 改进的PBFT算法可以实现成员动态加入和退出的功能, 因为每一类的成员由聚类中心的代理节点管理, 当成员退出时, 代理节点将该节点从广播列表中删除. 当成员加入时, 计算其与哪个代理节点距离较为接近, 将其加入该类子群中, 使得成员动态变化时不用再进行整个网络的初始化.

    • 本节比较传统的PBFT算法及改进的共识算法的通信次数. 当系统节点为 $n$ 个时, 传统PBFT算法中客户端请求、各节点间预准备、准备、确认、回复给客户端通信次数分别为为 $n$ 次、 $n - 1$ 次、 $\left( {n - 1} \right) \cdot \left( {n - 1} \right)$ 次、 $n \cdot \left( {n - 1} \right)$ 次、 $n$ 次, 总通信次数为 $2{n^2}$ 次.

      改进的共识算法中, 利用将节点进行聚类, 通信次数计算如下: 因将 $n$ 个节点分为 $k$ 类, 每一类中有 $\dfrac{n}{k}$ 个节点. 首先, 客户端向代理节点请求及代理节点间预准备通信次数为 $k$ 次, 子节点间通信次数为 $\dfrac{{2{n^2}}}{{{k^2}}}$ 次, 然后代理节点间进行确认的通信次数为 $k \cdot \left( {k - 1} \right)$ 次, 代理节点回复客户端次数通信次数为 $k$ 次, 求和得总次数为: $2\dfrac{{{n^2}}}{{{k^2}}} + {k^2} + k$ 次. 该函数图像如图6所示(为使趋势变化更清晰明了, 做图时对该函数进行了取对数运算):

      图  6  改进共识算法的通信次数

      Figure 6.  The communication time of improved PBFT

      如图所示, 在系统总节点数增加时, 通信次数随着聚类个数的增多而减少. 但在聚类次数变大到一定程度时, 通信次数没有明显的变化, 所以在具体节点数目下, 可结合容错性分析, 合理选择聚类次数很有必要.

      下面计算了当系统总节点数量为 2 000时, 两种算法的通信次数. PBFT算法的通信次数为8 000 000次, 而利用聚类算法改进的共识算法, 通信次数如下所示, 从表中可以看到通过聚类, 有效的减少了通信次数.

      表 1  null改进PBFT算法的通信次数

      Table 1.  The communication time of the improved PBFT algorithm in total nodes are 2000

      聚类K值 10 20 40 50
      通信次数 80110 20420 6640 5750
    • 对于改进的共识算法, 容错性分析分为代理节点中不存在拜占庭节点及其中存在拜占庭节点的情况.

      1)代理节点中不存在拜占庭节点

      若拜占庭节点均匀分布在每个聚类中, 则每个子群中错误的节点不超过其子群总数的 $\dfrac{1}{3} \cdot \left( {\dfrac{n}{k} - 1} \right)$ , 则对最终结果不会产生影响, 整个系统的容错为 $\dfrac{{n - 1}}{3}.$

      当拜占庭节点集中在某个聚类时, 则该代理节点将会产生错误输出, 这时在代理共识群中, 该结果会被丢弃, 该代理节点也会被降级. 在这种情况下, 系统的容错为: $\dfrac{1}{3} \cdot \left( {k - 1} \right).$

      2)代理节点中存在拜占庭节点

      当代理节点中存在拜占庭节点时, 该节点可能会篡改其子群的共识结果, 导致该区域的投票结果不正确. 如果错误的代理节点超过整个系统的 $\dfrac{1}{3}$ , 系统会崩溃. 否则, 系统的容错为 $\dfrac{1}{3} \cdot \left( {k - 1} \right).$

      综上所述, 代理节点的选取十分重要. 本文随机选取代理节点, 未来考虑利用信誉机制及节点间的相互投票, 选取更加可信的节点作为代理节点, 提高共识效率.

    • 本节采用对比分析的方式, 将本文方案与已提出的医疗数据共享方案进行比较, 分析模型的优缺点(如表2); 另一方面, 通过分析目前EHR共享面临的问题, 分析本模型的应对方法(如表3).

      表 2  不同方案之间的比较

      Table 2.  Comparison between different models

      文献
      功能
      屠袁飞[14] Xia[23] Shen [26] 刘格昌[27] 罗文俊[30] 本文
      基于区块链
      细粒度访问控制
      隐私保护
      可搜索加密
      支持属性更新
      数据防篡改
      智能合约

      表 3  当前EHR共享面临的问题及模型应对的方法

      Table 3.  The problems of EHR sharing and how to deal with the model

      类型 面临问题 模型应对方法
      患者参与度 目前患者无法完全掌握其电子病历的使用情况. 本文利用CP-ABE方案设计了病人可控的EHR分享方案,
      病人可自主设置访问控制, 决定谁可以访问病历.
      隐私保护 EHR存储着大量隐私信息, 在数据共享时可能会遭到攻击.
      以及病人和用户在分享和访问电子病历时,
      其身份信息应该受到保护.
      本文利用加密算法将EHR进行加密, 确保数据的保密性;
      利用签名算法及将数据hash值记录在区块链网络上,
      保证数据的完整性及可审计性. 同时, 通过加密及属性
      分配保护病人及数据用户的隐私信息.
      数据互操作性 目前不同医院之间数据流动性太差, 当病人就诊时,
      其在另一个医院的就诊记录不能被及时分享.
      同时, 数据的完整性没有办法保障.
      本文提出了云链协同的存储方式, 利用CP-ABE方案进行数据加密,
      病人设置访问策略, 决定谁可访问数据, 实现不同医院的病历
      进行共享. 用户可利用可搜索加密方案, 对密文进行搜索.
      医疗纠纷 当医患之间发生矛盾时, 其提供病历的真实性无法确认. 本文利用区块链存储病历的hash值, 防止数据被篡改,
      保障数据的真实性.

      表2从七个方面将本文与现有研究成果进行比较, 可以看出本模型有一定的优势. 但本模型仍有需要改进的地方, 如可以尝试利用智能合约使得交易过程自动化等.

    • EHR共享是非常有必要的, 不仅使得病人在转院治疗时, 病情能够得到全面、综合、准确的诊断, 避免病人做一些重复的检查; 同时可以增进不同医院间的交流, 促进公共医疗领域的不断发展. EHR中包含大量病人的隐私信息, 在数据共享时需要保护数据隐私及身份隐私.

      为了解决目前不同医疗机构间数据互操作性较差, 及病人无法掌握EHR的使用情况等问题, 本文提出病人可控的、云链协同的安全数据共享方案, 利用CP-ABE方案对EHR进行加密, 防止半可信的云服务器窃听数据, 同时病人可以自主设置访问策略, 达到细粒度的访问控制. 该方案将加密数据进行链上、链下混合存储, 不仅保证了数据的真实性、完整性及不可篡改性, 同时提高了区块链的可扩展性. 该方案利用多关键词可搜索加密方案, 可提高对密文搜索的准确性和效率. 由于用户的属性是不断变化的, 因此本文设置属性更新协议, 支持用户的属性撤销和属性添加. 通过将本文方案与其他方案的比较可知, 本文方案在一定程度上具有优势. 利用聚类算法, 选取代理节点, 将各级医院进行聚类, 改进PBFT共识算法. 通过对改进的共识算法进行分析及计算, 得出其通信次数有所降低, 容错性有待提高. 在未来的工作中, 将不断试验, 考虑何种方法选择代理节点更加安全高效, 减少达成共识的时间, 提高数据共享的效率. 同时, 将尝试使用零知识证明、同态加密等隐私保护技术进行病人身份及病历的隐私保护.

WeChat 关注分享

返回顶部

目录

    /

    返回文章
    返回