CN112530531B - 基于双区块链的电子病历存储与共享方法 - Google Patents
基于双区块链的电子病历存储与共享方法 Download PDFInfo
- Publication number
- CN112530531B CN112530531B CN202011013709.7A CN202011013709A CN112530531B CN 112530531 B CN112530531 B CN 112530531B CN 202011013709 A CN202011013709 A CN 202011013709A CN 112530531 B CN112530531 B CN 112530531B
- Authority
- CN
- China
- Prior art keywords
- electronic medical
- medical record
- message
- generating
- sub
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 23
- 238000000605 extraction Methods 0.000 claims abstract description 10
- 238000005516 engineering process Methods 0.000 claims abstract description 6
- 230000009977 dual effect Effects 0.000 claims 2
- 238000004364 calculation method Methods 0.000 description 5
- 238000003745 diagnosis Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 208000024891 symptom Diseases 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 235000012813 breadcrumbs Nutrition 0.000 description 1
- 230000009194 climbing Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 201000010099 disease Diseases 0.000 description 1
- 208000037265 diseases, disorders, signs and symptoms Diseases 0.000 description 1
- 239000003814 drug Substances 0.000 description 1
- 229940079593 drug Drugs 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16H—HEALTHCARE INFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR THE HANDLING OR PROCESSING OF MEDICAL OR HEALTHCARE DATA
- G16H10/00—ICT specially adapted for the handling or processing of patient-related medical or healthcare data
- G16H10/60—ICT specially adapted for the handling or processing of patient-related medical or healthcare data for patient-specific data, e.g. for electronic patient records
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- Bioethics (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Public Health (AREA)
- Primary Health Care (AREA)
- Epidemiology (AREA)
- Medical Treatment And Welfare Office Work (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于双区块链的电子病历存储与共享方法,包括:完整电子病历生成;生成完整电子病历的完整签名;提取出电子病历中的隐私部分和共享部分;生成提取子消息的提取签名;使用对称加密密钥生成电子病历子消息的密文;使用基于属性加密技术加密不同的对称加密密钥;上传电子病历子消息、对应的对称加密密钥密文以及子消息的签名到云端;生成电子病历共享部分的索引;生成完整电子病历的索引;使用共识算法将索引提交到区块链达成共识;用户请求获得区块链的许可证明;获取电子病历密文;密文解密和验证数据。本发明安全性高,具有较好的抗篡改性,对数据本身进行处理来实现真正的隐私保护,双链技术提高了扩展性和容错性,具有良好的应用前景。
Description
技术领域
本发明属于信息安全领域,具体为一种基于双区块链的电子病历存储与共享方法。
背景技术
由于数字化和云存储的发展,越来越多的数据从纸张传输到电子设备,电子病历成为了医院存储患者医疗记录的主要方式。尽管电子病历的出现使得智慧医疗发展迎来了风口,电子病历共享被认为是提高医疗服务质量,加快生物医学发现并降低医疗成本的一种有前途的方法。对于患者,政府以及医院而言,他们希望获得患者完整的电子病历。政府可以对这些医疗信息进行统计提供更好的社会保障服务,患者可以节省开销,避免重复治疗。对于药企,研究人员而言,他们可能不需要了解患者具体的隐私数据,对部分数据的分析就可以达到医学研究的目的。但是中心化的医疗体系结构所导致的信息孤岛问题以及半信任云端的隐私泄露问题阻碍了电子病历的共享。中心化的医疗机构通常会维持一个私人的数据库来存储电子病历,患者的医疗数据分散在各个不同的医院。由于各个医疗系统之间的互操作性差以及缺乏统一的数据管理,因此,即使过去的数据属于患者,患者也无法轻松访问它们。并且私人的数据库很容易遭受到攻击导致数据泄露。满足对数据共享的高要求,一些研究人员提出了采用第三方的云端来代替私人的数据库,从而实现数据共享。半信任的云端存储面临着很多问题。虽然已经提出了一些密码学方案来解决关于医学数据共享的这些问题。但它们缺点依然存在。对于医院而言,存储在第三方的庞大数据量无法保证。电子病历包含着患者高度敏感私密的数据,这些数据的泄露将会对患者的尊严造成巨大的打击。这些不受信任的第三方可能会滥用和披露电子病历中的隐私部分。对于电子病历的存储和共享,仍然存在着一些挑战,其中一些是互操作性,数据安全性和私密性。因此提出一种基于区块链的电子病历存储与共享方案是十分有必要的。
Fan Kai等提出了一种基于区块链的信息管理系统MedBlock,医院有权以其原始方式存储数据,而不是将数据上传到半信任的第三方。他们要做的只是将加密的摘要数据和哈希值上传到区块链中,以便用户检索和验证[Kai F,Shangyang W,Yanhui R,etal.MedBlock:Efficient and Secure Medical Data Sharing Via Blockchain[J].Journal ofMedical Systems,2018,42(8):136-.]。由于区块链的存储空间有限,基于面包屑的检索机制带来的更多数据量将会使得系统的性能较低。张利华等提出了一种基于双区块链的医疗记录安全存储和共享方案[张利华,蓝凡,姜攀攀,蒋腾飞.基于双区块链的医疗记录安全存储与共享方案[J].计算机工程与科学,2019,41(09):1581-1587.]。在该篇文章中,患者将自己的电子病历使用私钥加密后存储在第三方托管服务中,现实世界中没有可靠的第三方,这会带来数据泄露的风险。
发明内容
本发明的目的在于提供一种基于双区块链的电子病历存储与共享方法。
实现本发明目的的技术方案为:基于双区块链的电子病历存储与共享方法,包括以下步骤:
步骤1,完整电子病历生成;
步骤2,生成完整电子病历的完整签名;
步骤3,提取出电子病历中的隐私部分和共享部分,生成提取子消息的提取签名;
步骤4,使用对称加密密钥生成电子病历子消息的密文;
步骤5,使用基于属性加密技术加密不同的对称加密密钥;
步骤6,上传电子病历子消息、对应的对称加密密钥密文以及子消息的签名到云端;生成电子病历共享部分的索引和完整电子病历的索引;
步骤7,使用共识算法将索引提交到区块链达成共识;
步骤8,用户请求获得区块链的许可证明;
步骤9,获取电子病历密文,并对密文解密,验证数据。
优选地,步骤1所述完整电子病历生成,具体包括:
步骤1-1,根据患者的情况,生成完整的电子病历,定义电子病历中每项信息为一个子消息;
步骤1-2,扫描电子病历,定义每一个子消息属于隐私部分或者共享部分。
优选地,步骤2中所述的生成完整电子病历的完整签名,具体包括:
步骤2-1,随机选择两个不相等的质数p和q;
步骤2-2,计算n=p×q,设置欧拉函数φ(n)=(p-1)(q-1);
步骤2-3,在区间[1,φ(n)]中随机选择一个与φ(n)互质的整数e;
步骤2-4,获取整数d,使得整数d满足(e×d)modφ(n)=1;
步骤2-5,确定公私钥对,其中公钥为{n,e},私钥为{n,d};
步骤2-6,为每一个电子病历子消息生成一个固定长度的随机数ri;
步骤2-7,将每一个电子病历子消息和对应随机数ri连接在一起后,计算哈希值Hi;
步骤2-8,将所有哈希值连接在一起产生H,将所有的随机数连接在一起产生R;
步骤2-9,使用签名私钥对连接在一起的哈希值H生成签名δH,产生密钥份额的完整签名δfull={δH,R}。
优选地,步骤3中所述的生成电子病历中的隐私部分和共享部分的子消息的提取签名,具体包括:
步骤3-1,从完整签名中,提取每一个子消息对应的随机数ri;
步骤3-2,如果子消息为需要提取的子消息,计算该子消息连接对应随机数后的哈希值,将未提取子消息的哈希值根据公式Hunext=Hunext||Hi进行拼接,如果为未提取的子消息,将该子消息对应的随机数根据公式Rext=Rext||ri进行拼接;Hunext代表未提取消息的哈希值,初值设置为0;Rext代表提取消息的哈希值,初值设置为0;
步骤3-3,生成每一个密钥份额的提取签名δext={δfull,Hunext,Rext}。
优选地,步骤6中所述的上传数据到云端;生成电子病历共享部分的索引,具体包括:
上传数据到云端,接收返回云端加密的电子病历的存储地址urlfull;
对于电子病历共享部分,患者使用私钥对云端电子病历的存储地址urlfull与共享部分标志Tagshare生成签名,使用患者的公钥对完整电子病历存储地址urlfull、共享消息的标志Tagshare以及共享消息的索引的签名加密结合患者的ID生成电子病历共享部分Mshare的索引Indexshare;
对于完整的电子病历,患者使用私钥对云端电子病历的存储地址urlfull与共享部分标志Tagfull生成签名,使用患者的公钥对urlfull、Tagfull以及加密结合患者的ID生成完整电子病历Mfull的完整电子病历的索引Indexfull。
优选地,步骤7中所述的使用共识算法将索引提交到区块链达成共识,具体包括:
步骤7-1,根据节点投票决定同一个区域内的一个主节点以及多个从节点;
步骤7-2,主节点接收到所在区域用户所提交的索引后,将索引广播给共识节点,如果超过50%的共识节点成功验证了区块,将索引添加到区块链中;
步骤7-3,当发现主节点崩溃,用该区域的候选节点集合中序列号为1的节点替换掉主节点。
优选地,步骤8所述的用户请求获得区块链的许可证明,具体包括:
步骤8-1,数据使用者初始化一个电子病历请求交易到区块链网络中;
步骤8-2,接收到交易请求后,检查用户的身份,当用户的身份是合法的,将交易的数据记录到区块链中;
步骤8-3,如果请求满足访问的条件,智能合约被诱导使用患者的私钥解密电子病历的索引,否则,共享交易将会被拒绝。
优选地,步骤9所述的对密文解密,验证数据的具体方法为:
步骤9-1,数据请求者将自己的属性集提交给授权机构,授权机构在验证数据请求者的属性准确性后,产生数据请求者的属性私钥;
步骤9-2,根据获取的属性私钥解密电子病历密文获取明文。
本发明与现有技术相比,其显著优点为:1)本发明的理论模型从数据本身出发,实现了电子病历隐私部分和共享部分的分离,保证了安全性;2)本发明采用对称加密结合基于属性加密使得云端仅需存储一份原始的电子病历就可以实现不同属性的用户可以访问电子病历的不同部分,保证了数据更新的一致性和便捷性,避免了数据的冗余备份;3)对于共享数据,考虑到存储限制,本发明设计了区块链链外存储以减少写入区块链的数据,从而消除了吞吐量瓶颈。
下面结合附图对本发明作进一步详细描述。
附图说明
图1为本发明基于双区块链的电子病历存储与共享方法的数据流程图。
图2为对称加密密钥Ki(i∈{1,8,9})的访问控制策略。
图3为对称加密密钥Ki(i∈{2,3,4,5,6,7})的访问控制策略。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,一种基于双区块链的电子病历存储与共享方法,包括以下步骤:
步骤1,生成完整电子病历;
进一步地,在其中一个实施例中,步骤1所述完整电子病历生成,具体包括:
步骤1-1,患者进行治疗诊断后,医生将根据患者的情况,生成一份完整的电子病历;所述电子病历包含多项信息:姓名,性别,出生年月,ID编号,症状,诊断结果,处理方法及药方,体检报告,病史。定义每项信息为一个子消息。
步骤1-2,扫描电子病历,定义每一个子消息属于隐私部分还是共享部分;
步骤2,生成完整电子病历的完整签名;
进一步地,在其中一个实施例中,步骤2中所述的生成完整电子病历的完整签名,具体包括:
步骤2-1,随机选择两个不相等的质数p和q;
步骤2-2,计算n=p×q,设置欧拉函数φ(n)=(p-1)(q-1);
步骤2-3,在区间[1,φ(n)]中随机选择一个与φ(n)互质的整数e;
步骤2-4,找到一个整数d,使得d满足(e×d)modφ(n)=1;
步骤2-5,根据以上计算得到公私钥对,其中公钥为{n,e},私钥为{n,d}。;
步骤2-6,为每一个电子病历子消息生成一个固定长度的随机数ri;
步骤2-7,将每一个电子病历子消息和对应随机数ri连接在一起后,计算其哈希值Hi;
步骤2-8,将所有哈希值连接在一起产生H=H1||H2||H3||H4||…||Hb,将所有的随机数连接在一起产生R=r1||r2||r3||r4||…||rb;
步骤2-9,使用签名私钥对连接在一起的哈希值H生成签名δH,最后产生密钥份额的完整签名δfull={δH,R};
步骤3,提取出电子病历中的隐私部分和共享部分,生成提取子消息的提取签名;
进一步地,在其中一个实施例中,步骤3中所述的生成提取子消息的提取签名,具体包括:
步骤3-1,从完整签名中,提取每一个子消息对应的随机数ri;
步骤3-2,如果子消息为需要提取的子消息,计算该子消息连接对应随机数后的哈希值,将未提取子消息的哈希值根据公式Hunext=Hunext||Hi进行拼接,如果为未提取的子消息,将该子消息对应的随机数根据公式Rext=Rext||ri进行拼接;Hunext代表未提取消息的哈希值,初值设置为0;Rext代表提取消息的哈希值,初值设置为0;
步骤3-3,通过以上计算,生成每一个密钥份额的提取签名δext={δfull,Hunext,Rext}。
步骤4,使用对称加密密钥生成电子病历子消息的密文;
步骤5,使用基于属性加密技术加密不同的对称加密密钥;
步骤6,上传电子病历子消息、对应的对称加密密钥密文以及子消息的签名到云端;生成电子病历共享部分的索引和完整电子病历的索引;
进一步地,在其中一个实施例中,步骤6中所述的上传数据到云端;生成电子病历共享部分的索引,具体包括:
步骤6-1,上传数据到云端,接收到返回云端加密的电子病历的存储地址urlfull;
步骤6-2,对于电子病历共享部分,患者使用私钥对云端电子病历的存储地址urlfull与共享部分标志Tagshare这两部分签名生成签名,再使用患者的公钥对完整电子病历存储地址urlfull、共享消息的标志Tagshare以及共享消息的索引的签名加密结合患者的ID生成电子病历共享部分Mshare索引Indexshare;
步骤6-3,对于完整的电子病历,患者使用私钥对云端电子病历的存储地址urlfull与共享部分标志Tagfull这两部分签名生成签名,再使用患者的公钥对urlfull、Tagfull以及加密结合患者的ID生成完整电子病历Mfull的完整电子病历的索引Indexfull;
步骤7,使用共识算法将索引提交到区块链达成共识;
进一步地,在其中一个实施例中,步骤7中所述的所述的使用共识算法将索引提交到区块链达成共识,具体包括:
步骤7-1,根据节点投票决定同一个区域内的一个主节点以及多个从节点;
步骤7-2,主节点接收到所在区域用户所提交的索引后,然后将索引广播给共识节点,如果超过50%的共识节点成功验证了区块,将索引添加到区块链中;
步骤7-3,当发现主节点崩溃,用该区域的候选节点集合中序列号为1的节点替换掉主节点。
步骤8,用户请求获得区块链的许可证明;
进一步地,在其中一个实施例中,步骤8中所述的用户请求获得区块链的许可证明,具体包括:
步骤8-1,数据使用者初始化一个电子病历请求交易到区块链网络中;
步骤8-2,接收到交易请求后,检查用户的身份,只有用户的身份是合法的,交易的数据才会被记录到区块链中;
步骤8-3,如果请求满足访问的条件,智能合约将会被诱导使用患者的私钥解密电子病历的索引,否则,共享交易将会被拒绝;
步骤9,获取电子病历密文,密文解密和验证数据;
进一步地,在其中一个实施例中,步骤9中所述的所述的密文解密和验证数据,具体包括:
步骤9-1,数据请求者将自己的属性集提交给授权机构。授权机构在验证数据请求者的属性准确性后,将会产生数据请求者的属性私钥;
步骤9-2,根据获取的属性私钥解密电子病历密文获取明文。
实施例
作为一种具体示例,在其中一个实施例中,对本发明进行进一步验证说明。
一种基于双区块链的电子病历存储与共享方法,包括以下内容:
步骤1,完整电子病历生成;
患者进行治疗诊断后,医生将根据患者的情况,生成一份完整的电子病历,假设电子病历包含9个部分:姓名,性别,出生年月,ID编号,症状,诊断结果,处理方法及药方,体检报告,病史。表示为Mfull={m1,m2,m3,m4,m5,m6,m7,m8,m9}。电子病历中隐私部分为Mprivate={m1,m8,m9},共享部分为Mshare={m2,m3,m4,m5,m6,m7}。
步骤2,生成完整电子病历的完整签名;
密钥生成机构随机选择两个不相等的质数h和q,计算n=h×q,并且设置欧拉函数φ(n)=(h-1)(q-1)。密钥生成机构在区间[1,φ(n)]随机选择一个与φ(n)互质的整数并且找到一个d满足(e×d)modφ(n)=1。根据以上的计算,密钥生成机构的公钥为PKKGC={n,e},密钥生成机构的私钥为SKKGC={n,d}。
密钥生成机构首先使用内容提取签名算法对完整的电子病历生成一个完整的签名。为每一个子消息成一个固定长度的随机数ri;将每一个子消息mi和对应随机数ri连接在一起后,计算其哈希值Hi;将所有哈希值连接在一起产生H=H1||H2||H3||H4||…||Hb;将所有的随机数连接在一起产生R=r1||r2||r3||r4||…||rb,使用签名私钥对H生成签名δH=H^d mod n,最后产生密钥份额的完整签名δfull={δH,R}。
步骤3,提取出电子病历中的隐私部分和共享部分,生成提取子消息的提取签名;
验证完整签名的真实性。对于每一个子消息mi,计算哈希值H(mi||ri),其中i∈[1,b]。判断计算得到的哈希值是否等于解密消息中得到的哈希值。对于签名δH,使用KGC的公钥SKKGC={n,d}验证,计算δH^e mod n,如果计算结果等于H,则δH是H的有效签名。
为共享部分生成一个可验证的提取签名。Hunext代表未提取消息的哈希值,初值设置为0;Rext代表提取消息的哈希值,初值设置为0;从完整签名中,提取每一个密钥份额对应的随机数ri;如果该数为需要提取的数字,计算该数字连接对应随机数后的哈希值Hi=H(mi||ri),将未提取密钥份额的哈希值进行拼接产生Hunext=Hunext||Hi,如果为未提取的数字,将该密钥份额对应的随机数进行提取产生Rext=Rext||ri。通过以上计算,可以生成每一个密钥份额的提取签名δext={δfull,Hunext,Rext}。
验证提取签名的正确性,检查签名文档中消息块的标志,如果未隐藏则计算Hi=H(mi||ri),其中随机数ri从Rext中提取。如果消息是隐藏的则直接在签名文件中提取Hi。将提取的数据块的Hi与未提取消息块的Hi按子消息在原文档中的顺序串联得到H。使用KGC的公钥PKKGC={n,e}对提取签名进行解密运算,对于消息签名对(H,δH),计算δH^e mod n,如果结果等于H,如果验证通过,否则文档或签名被篡改。
步骤4,使用对称加密密钥生成电子病历子消息的密文;
患者使用不同的对称加密密钥Ki加密对应电子病历的各个子消息mi,生成对应子消息的密文如公式/>所示。所以云端存储的电子病隐私部分为/> 电子病历共享部分密文为/>
步骤5,使用基于属性加密技术加密不同的对称加密密钥;
采用基于属性加密技术对不同的对称加密密钥Ki(i∈[1,9])设置不同的访问策略分别加密,Ki(i∈{1,8,9})的访问数策略表示只有这政府,医院,患者这三种属性的用户可以解密获得Ki(i∈{1,8,9})。Ki(i∈{2,3,4,5,6,7})的访问策略/>如图3所示,表示表示公司,研究人员,药企,政府,医院,患者这些属性的用户能解密获得Ki(i∈{2,3,4,5,6,7})。
步骤6,上传电子病历子消息、对应的对称加密密钥密文以及子消息的签名到云端;生成电子病历共享部分的索引和完整电子病历的索引;
患者将电子病历子消息密文、对应的对称加密密钥密文以及子消息的签名上传到云端后,将会返回云端加密的电子病历的存储地址urlfull。所以存储在云端密文
对于共享部分的索引,患者接收到返回的存储地址urlfull后,先使用私钥对云端电子病历的存储地址urlfull与共享部分标志Tagshare这两部分签名生成签名再使用患者的公钥对urlfull、Tagshare以及/>加密结合患者的ID生成电子病历共享部分的索引/>
对于完整电子病历的索引,患者接收到返回的urlfull后,先使用私钥对云端电子病历的存储地址urlfull与共享部分标志Tagfull这两部分签名生成签名再使用患者的公钥对urlfull、Tagfull以及/>加密结合患者的ID生成Mfull的/>
步骤7,使用共识算法将索引提交到区块链达成共识;
同一个区域内的节点投票决定将某一个节点确定为该区域的主节点,某两个节点为从节点;主节点负责在他们的位置上进行核实并发送提案,然后将其广播给共识节点。如果超过50%的共识节点成功验证了区块,将其添加到区块链中;一旦发现主节点已经崩溃,我们引入了降级机制来代替恶意节点。该主节点将会被该区域的候选节点集中序列号为1的节点代替,并且该主节点变为候选节点,并在该区域的候选节点中排名最后;最后使用共识算法将索引提交到区块链达成共识。
步骤8,用户请求获得区块链的许可证明;
在共享链中,患者会预先在智能合约中设置访问控制,定义了哪些数据使用者可以共享电子病历共享部分。在存储链中,患者也会预先在智能合约中设置访问控制,定义了哪些数据使用者可以共享完整的电子病历。不管是共享链还是存储链,只要智能合约满足条件,智能合约就会被自动的诱导使用患者的私钥解密索引,普通用户将会获得urlfull、Tagshare以及特权用户将会获得urlfull、Tagfulx以及/>
步骤9,获取电子病历密文,密文解密和验证数据;
数据请求者将自己的属性集提交给授权机构。授权机构在验证数据请求者的属性准确性后,将会产生数据请求者的属性私钥;用户根据获取的属性私钥解密电子病历密文获取明文。
由上述实施例可知本发明的理论模型从数据本身出发,实现了电子病历隐私部分和共享部分的分离,保证了数据共享的安全性;本发明采用对称加密结合基于属性加密使得云端仅需存储一份原始的电子病历就可以实现不同属性的用户可以访问电子病历的不同部分,保证了数据更新的一致性和便捷性,避免了数据的冗余备份;本发明中,对于共享数据,考虑到存储限制,我们设计了区块链链外存储以减少写入区块链的数据,从而消除了吞吐量瓶颈。我们的方案具有良好的应用前景。
以上显示和描述了本发明的基本原理、主要特征及优点。本行业的技术人员应该了解,本发明不受上述实例的限制,上述实例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界。
Claims (4)
1.基于双区块链的电子病历存储与共享方法,其特征在于,包括以下步骤:
步骤1,完整电子病历生成;
步骤2,生成完整电子病历的完整签名,具体包括:
步骤2-1,随机选择两个不相等的质数p和q;
步骤2-2,计算n=p×q,设置欧拉函数φ(n)=(p-1)(q-1);
步骤2-3,在区间[1,φ(n)]中随机选择一个与φ(n)互质的整数e;
步骤2-4,获取整数d,使得整数d满足(e×d)modφ(n)=1;
步骤2-5,确定公私钥对,其中公钥为{n,e},私钥为{n,d};
步骤2-6,为每一个电子病历子消息生成一个固定长度的随机数ri;
步骤2-7,将每一个电子病历子消息和对应随机数ri连接在一起后,计算哈希值Hi;
步骤2-8,将所有哈希值连接在一起产生H,将所有的随机数连接在一起产生R;
步骤2-9,使用签名私钥对连接在一起的哈希值H生成签名δH,产生密钥份额的完整签名δfull={δH,R};
步骤3,提取出电子病历中的隐私部分和共享部分,生成提取子消息的提取签名,具体包括:
步骤3-1,从完整签名中,提取每一个子消息对应的随机数ri;
步骤3-2,如果子消息为需要提取的子消息,计算该子消息连接对应随机数后的哈希值,将未提取子消息的哈希值根据公式Hunext=Hunext||Hi进行拼接,如果为未提取的子消息,将该子消息对应的随机数根据公式Rext=Rext||ri进行拼接;Hunext代表未提取消息的哈希值,初值设置为0;Rext代表提取消息的哈希值,初值设置为0;
步骤3-3,生成每一个密钥份额的提取签名δext={δfull,Hunext,Rext};
步骤4,使用对称加密密钥生成电子病历子消息的密文;
步骤5,使用基于属性加密技术加密不同的对称加密密钥;
步骤6,上传电子病历子消息、对应的对称加密密钥密文以及子消息的签名到云端;生成电子病历共享部分的索引和完整电子病历的索引;
步骤7,使用共识算法将索引提交到区块链达成共识;
步骤8,用户请求获得区块链的许可证明,具体包括:
步骤8-1,数据使用者初始化一个电子病历请求交易到区块链网络中;
步骤8-2,接收到交易请求后,检查用户的身份,当用户的身份是合法的,将交易的数据记录到区块链中;
步骤8-3,如果请求满足访问的条件,智能合约被诱导使用患者的私钥解密电子病历的索引,否则,共享交易将会被拒绝;
步骤9,获取电子病历密文,并对密文解密,验证数据,具体方法为:
步骤9-1,数据请求者将自己的属性集提交给授权机构,授权机构在验证数据请求者的属性准确性后,产生数据请求者的属性私钥;
步骤9-2,根据获取的属性私钥解密电子病历密文获取明文。
2.根据权利要求1所述的基于双区块链的电子病历存储与共享方法,其特征在于,步骤1所述完整电子病历生成,具体包括:
步骤1-1,根据患者的情况,生成完整的电子病历,定义电子病历中每项信息为一个子消息;
步骤1-2,扫描电子病历,定义每一个子消息属于隐私部分或者共享部分。
3.根据权利要求1所述的基于双区块链的电子病历存储与共享方法,其特征在于,步骤6中的上传数据到云端;生成电子病历共享部分的索引,具体包括:
上传数据到云端,接收返回云端加密的电子病历的存储地址urlfull;
对于电子病历共享部分,患者使用私钥对云端电子病历的存储地址urlfull与共享部分标志Tagshare生成签名,使用患者的公钥对完整电子病历存储地址urlfull、共享消息的标志TagShare以及共享消息的索引的签名加密结合患者的ID生成电子病历共享部分Mshare的索引Indexshare;
对于完整的电子病历,患者使用私钥对云端电子病历的存储地址urlfull与共享部分标志Tagfull生成签名使用患者的公钥对urlfull、Tagfull以及/>加密结合患者的ID生成完整电子病历Mfull的完整电子病历的索引Indexfull。
4.根据权利要求1所述的基于双区块链的电子病历存储与共享方法,其特征在于,步骤7中所述的使用共识算法将索引提交到区块链达成共识,具体包括:
步骤7-1,根据节点投票决定同一个区域内的一个主节点以及多个从节点;
步骤7-2,主节点接收到所在区域用户所提交的索引后,将索引广播给共识节点,如果超过50%的共识节点成功验证了区块,将索引添加到区块链中;
步骤7-3,当发现主节点崩溃,用该区域的候选节点集合中序列号为1的节点替换掉主节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011013709.7A CN112530531B (zh) | 2020-09-24 | 2020-09-24 | 基于双区块链的电子病历存储与共享方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011013709.7A CN112530531B (zh) | 2020-09-24 | 2020-09-24 | 基于双区块链的电子病历存储与共享方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112530531A CN112530531A (zh) | 2021-03-19 |
CN112530531B true CN112530531B (zh) | 2023-11-21 |
Family
ID=74980323
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011013709.7A Active CN112530531B (zh) | 2020-09-24 | 2020-09-24 | 基于双区块链的电子病历存储与共享方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112530531B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113591128A (zh) * | 2021-08-17 | 2021-11-02 | 东北大学秦皇岛分校 | 基于群签名的区块链非法地址监管系统及追溯方法 |
CN114584325A (zh) * | 2022-05-06 | 2022-06-03 | 四川野马科技有限公司 | 基于区块链和云存储的投标报价数据混合存储系统和方法 |
CN114938382B (zh) * | 2022-05-18 | 2023-02-07 | 湖南大学 | 一种基于联盟区块链的电子病历安全可控共享方法 |
CN115691732B (zh) * | 2022-09-22 | 2024-03-26 | 海南星捷安科技集团股份有限公司 | 一种用于互联网医院的病例管理系统 |
CN115662657B (zh) * | 2022-10-31 | 2024-02-02 | 海南星捷安科技集团股份有限公司 | 一种基于互联网医院的在线问诊系统 |
CN116760565A (zh) * | 2023-05-09 | 2023-09-15 | 四川大学 | 一种基于属性撤销cp-abe的电子病历安全共享方法 |
CN117037988B (zh) * | 2023-08-22 | 2024-05-17 | 广州视景医疗软件有限公司 | 一种基于区块链的电子病历存储方法及装置 |
CN117675870B (zh) * | 2024-01-31 | 2024-04-19 | 中国医学科学院北京协和医院 | 一种基于区块链的电子病历分布式共享方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109326337A (zh) * | 2018-09-06 | 2019-02-12 | 西安电子科技大学 | 基于区块链的电子医疗记录存储和共享的模型及方法 |
CN110109930A (zh) * | 2019-05-15 | 2019-08-09 | 山东省计算中心(国家超级计算济南中心) | 基于区块链双链结构的政务数据存储、查询方法及系统 |
CN110249350A (zh) * | 2016-09-20 | 2019-09-17 | 河谷控股Ip有限责任公司 | 经由样本跟踪链进行样本跟踪、系统和方法 |
CN110299195A (zh) * | 2019-06-11 | 2019-10-01 | 中国矿业大学 | 基于联盟链的具有隐私保护的电子病历共享系统及应用方法 |
CN110570283A (zh) * | 2019-09-11 | 2019-12-13 | 炫盛(上海)科技有限公司 | 基于区块链的购物方法及系统 |
CN110866266A (zh) * | 2019-11-19 | 2020-03-06 | 南昌航空大学 | 一种保护数据安全的bcmcps框架 |
CN111046352A (zh) * | 2019-12-13 | 2020-04-21 | 浙江师范大学 | 一种基于区块链的身份信息安全授权系统与方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190288833A1 (en) * | 2018-03-16 | 2019-09-19 | Walmart Apollo, Llc | System and Method for Securing Private Keys Behind a Biometric Authentication Gateway |
-
2020
- 2020-09-24 CN CN202011013709.7A patent/CN112530531B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110249350A (zh) * | 2016-09-20 | 2019-09-17 | 河谷控股Ip有限责任公司 | 经由样本跟踪链进行样本跟踪、系统和方法 |
CN109326337A (zh) * | 2018-09-06 | 2019-02-12 | 西安电子科技大学 | 基于区块链的电子医疗记录存储和共享的模型及方法 |
CN110109930A (zh) * | 2019-05-15 | 2019-08-09 | 山东省计算中心(国家超级计算济南中心) | 基于区块链双链结构的政务数据存储、查询方法及系统 |
CN110299195A (zh) * | 2019-06-11 | 2019-10-01 | 中国矿业大学 | 基于联盟链的具有隐私保护的电子病历共享系统及应用方法 |
CN110570283A (zh) * | 2019-09-11 | 2019-12-13 | 炫盛(上海)科技有限公司 | 基于区块链的购物方法及系统 |
CN110866266A (zh) * | 2019-11-19 | 2020-03-06 | 南昌航空大学 | 一种保护数据安全的bcmcps框架 |
CN111046352A (zh) * | 2019-12-13 | 2020-04-21 | 浙江师范大学 | 一种基于区块链的身份信息安全授权系统与方法 |
Non-Patent Citations (3)
Title |
---|
Block Chain-Based Data Audit and Access Control Mechanism in Service Collaboration;Chao Wang etc.;《IEEE》;第214-218页 * |
基于区块链的电子政务数据共享设计研究;谷宁静;《学术争鸣》;第91-97页 * |
基于双区块链的医疗记录安全存储与共享方案;张利华等;《计算机工程与科学》;第1581-1587页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112530531A (zh) | 2021-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112530531B (zh) | 基于双区块链的电子病历存储与共享方法 | |
CN109326337B (zh) | 基于区块链的电子医疗记录存储和共享的模型及方法 | |
US10348707B2 (en) | Rewritable blockchain | |
Narayan et al. | Privacy preserving EHR system using attribute-based infrastructure | |
CN110910977A (zh) | 一种融入区块链技术的医疗数据安全存储方法 | |
CN110929293B (zh) | 一种基于区块链的美容数据存储系统 | |
Ying et al. | A lightweight policy preserving EHR sharing scheme in the cloud | |
CN109409100B (zh) | 应用于医疗数据的信息存储和共享平台 | |
Reen et al. | Decentralized patient centric e-health record management system using blockchain and IPFS | |
CN111079171A (zh) | 一种基于区块链的医疗数据隐私保护方法及存储介质 | |
JP2002501250A (ja) | 機密レコードのための保護されたデータベース管理システム | |
CN101689241A (zh) | 电子处方的安全认证 | |
US20210176054A1 (en) | Personal information validation and control | |
CN102037474A (zh) | 用于对数据项的安全访问的数据项的基于身份的加密 | |
CN112951356B (zh) | 一种基于联盟链的跨模态医疗数据联合共享方法 | |
Obiri et al. | Personal health records sharing scheme based on attribute based signcryption with data integrity verifiable | |
CN114579998A (zh) | 一种区块链辅助的医疗大数据搜索机制与隐私保护方法 | |
CN115883214A (zh) | 基于联盟链和cp-abe的电子医疗数据共享系统及方法 | |
CA3060710A1 (en) | Systems and methods for identity atomization and usage | |
US20050138398A1 (en) | System of databases of personal data and a method of governing access to databases of personal data | |
EP4154153A1 (en) | Split keys for wallet recovery | |
Thimmaiah et al. | Decentralized electronic medical records | |
Zaghloul et al. | An attribute-based distributed data sharing scheme | |
Fitri et al. | Secure attribute-based encryption with access control to data medical records | |
Mahapatra et al. | A secure health management framework with anti-fraud healthcare insurance using blockchain |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |