一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于国密算法和IPFS的电子病历共享方法

2022-06-01 00:45:08 来源:中国专利 TAG:

基于国密算法和ipfs的电子病历共享方法
技术领域
1.本发明涉及医疗信息管理领域,具体地,涉及一种基于国密算法和ipfs的电子病历共享方法。


背景技术:

2.电子病历是指采取计算机信息技术,将病人的就诊信息和个人健康信息建立为电子档案,并通过计算机存储系统进行保存,从而实现病历信息的信息化管理。
3.近年来,区块链技术凭借分布式、防篡改等特点迅速发展,由最初的比特币发展到金融、保险、工业、医疗等各个领域。传统医疗中,各个医院信息相互孤立,患者跨医院就诊需要进行重复检查。将区块链技术引入医疗领域中,患者的电子病历将会以xml格式存储在分布式文件系统ipfs上,将索引存储在区块链上,只要经过患者允许,便可以共享患者的医疗数据,解决了传统医疗中病人数据无法共享的问题。
4.国密算法即国家密码局认定的国产密码算法,主要有sm1,sm2,sm3,sm4,密钥长度和分组长度均为128位,综合来看,国密算法安全性高,加解密效率快。
5.公开号为cn110472428a的中国发明专利公开了一种基于区块链的医疗数据共享方法及共享系统,该方法并没有考虑到医疗数据指数级增长对于区块容量造成的压力。
6.公开号为cn112330019a的中国发明专利公开了一种基于区块链的供应链物流数据安全共享方法,该方法局限于传统的加密方式,在安全和效率方面存在一定缺陷。
7.由此可见,虽然以上给出了数据在区块链上安全共享的可行方法,但是,这些方法没有考虑到医疗数据指数式增长对于区块容量产生的压力,也没有考虑到sm2国密算法比起传统的rsa加密要更快更安全。
8.因此,急需要提供一种基于国密算法和ipfs的电子病历共享方法来解决上述问题。


技术实现要素:

9.本发明的目的是提供一种基于国密算法和ipfs的电子病历共享方法,该方法解决了电子病历在共享过程中的安全问题,实现了电子病历的完整保存、不可篡改与可追溯,在保护患者隐私的同时也使得患者的医疗数据在通过患者授权的情况下可以安全高效地共享。
10.为了实现上述目的,本发明提供了一种基于国密算法和ipfs的电子病历共享方法,包括:
11.由fabric-ca中心为用户颁发ca证书并通过sm2国密算法生成公钥和私钥,其中,用户包括数据提供者和数据请求者;
12.患者将电子病历加密后存储在ipfs上,其文件索引存储在区块链上;
13.文件及索引成功存储后,数据请求者可以根据地址访问存储在区块链上的文件索引,根据文件索引定位到ipfs上经过加密的电子病历;
14.数据提供者在同意共享电子病历给该数据请求者的情况下,将密钥加密并附上签名后传递给该数据请求者;
15.数据请求者验证并解密获得密钥后,使用密钥对加密的电子病历进行解密,获取数据,完成共享过程。
16.优选地,由fabric-ca中心为用户颁发ca证书,并为用户生成公钥和私钥包括:
17.用户通过身份标识id向fabric-ca中心发送注册申请,fabric-ca中心收到注册申请后对注册者身份的合法性进行验证,验证成功后fabric-ca根据身份标识id,使用sm2国密算法生成用户的公私钥对(pk,sk),其中,pk为用户的公钥,sk为用户私钥。
18.优选地,通过sm2国密算法为用户生成公钥和私钥包括:
19.用随机数发生器生成私钥pk=da,其中,da表示随机数发生器生成的随机数;g为椭圆曲线的基点,生成公钥sk=[da]g。
[0020]
优选地,患者将电子病历加密后存储在ipfs上使用的加密算法为sm4国密算法。
[0021]
优选地,加密算法可表示为:eehr=enc2(key
sm4
,ehr),其中,key
sm4
表示加密密钥,ehr表示电子病历,eehr表示加密后的电子病历。
[0022]
优选地,文件索引存储在区块链上包括:
[0023]
客户端通过sdk向区块链网络发起一个存储文件索引的交易提案,交易提案把带有本次交易要调用的合约标识、合约方法和参数信息以及客户端签名等信息发送给背书节点;
[0024]
背书节点收到交易提案后,验证签名并确定提交者是否有权执行操作,同时根据背书策略模拟执行智能合约,并将结果及其各自的ca证书签名发还给客户端;
[0025]
客户端收到背书节点返回的信息后,判断提案结果是否一致,以及是否参照指定的背书策略执行,如果没有足够的背书,则中止处理;否则,客户端把数据打包到一起组成一个交易并签名,发送给orderer节点;
[0026]
orderer节点按时间顺序对网络中的交易进行排序,并创建交易区块,之后广播给同一通道内所有组织的leader节点;
[0027]
leader节点对接收到的区块进行验证,通过验证后将结果写入本地分类账本,并同步广播给组织内其他节点;
[0028]
每个peer节点将区块附加到区块链中,写集被提交到当前的状态数据库中,并且对于每个有效的事务,发出一个事件,通知客户端应用程序事务已被不可变地附加到链中,至此,索引成功存储到区块链上。
[0029]
优选地,数据提供者在同意共享电子病历给该数据请求者的情况下,会将密钥加密并附上签名后传递给该数据请求者,数据请求者验证并解密获得密钥的过程包括:
[0030]
数据提供者a使用数据请求者b的公钥pkb对密钥key
sm4
进行加密并使用自己的私钥ska对消息进行签名并发送给数据请求者b;
[0031]
数据请求者b收到后先使用数据提供者a的公钥pka对消息进行验证,确认消息是否是数据提供者a发出的,确认后使用自己的私钥skb进行解密获取密钥key
sm4

[0032]
优选地,将密钥加密并附上签名所使用的签名算法为sm2数字签名算法。
[0033]
优选地,密钥加密与解密以及签名可以表示为:
[0034]
ekey=enc3(ska,enc1(pkb,key
sm4
));key
sm4
=dnc3(pka,dnc1(skb,ekey))
[0035]
其中,ekey表示加密并签名后的sm4密钥,所使用的加解密算法为sm2国密算法。
[0036]
优选地,数据请求者获取密钥后,使用密钥对加密的电子病历进行解密,获取数据可表示为:ehr=dnc2(ekey,eehr)。
[0037]
根据上述技术方案,本发明首先采用了去中心化的区块链技术,由fabric-ca中心进行密钥的分发,避免了传统方案中密钥分发中心与用户通过共谋的方式攻击而造成密钥的泄露;其次,本发明中所使用的非对称加密方式为sm2国密算法,sm2是我国自主研发的椭圆曲线密码算法,相较于ecc-256算法,sm2算法在解密正确性判断、明文编码问题、对待加密数据长度的限制及加密计算等方面具有更大的优势;并且,本方案提出了一套标准的存储方案,将标准化的电子病历以xml格式加密存储在ipfs上,索引存储在区块链上,比起传统存储在数据库上更安全,也缓解了数据均存储在区块链上对于区块容量造成的压力;本发明将对称加密sm4与非对称加密sm2相结合,比起只采用非对称加密方式效率更高;最后,只有在患者授权的情况下,才允许对医疗数据进行共享,没有密钥的数据请求者无法对电子病历进行解密,获取有效数据,保证了患者的隐私和权利。
[0038]
本发明的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
[0039]
附图是用来提供对本发明的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明,但并不构成对本发明的限制。在附图中:
[0040]
图1是本发明中基于区块链和ipfs的电子病历共享流程示意图;
[0041]
图2是本发明中fabric-ca中心分发密钥和颁发证书流程图;
[0042]
图3为本发明中电子病历存储流程图;
[0043]
图4为本发明中索引上链流程图;
[0044]
图5为本发明中患者共享电子病历给医院的具体流程图;
[0045]
图6为电子病历的基本架构图。
具体实施方式
[0046]
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
[0047]
本发明旨在将区块链技术、ipfs以及国密算法sm2和sm4引入到医疗数据的存储和共享中,凭借其分布式防篡改可溯源等特点,实现对于医疗数据的安全存储与共享,由此提出一种基于区块链和ipfs的电子病历共享方法,如图1所示,包括:
[0048]
由fabric-ca中心为用户颁发ca证书并通过sm2国密算法生成公钥和私钥,其中,用户包括数据提供者(患者)和数据请求者(医院);
[0049]
患者将电子病历加密后存储在ipfs上,其文件索引存储在区块链上;
[0050]
文件及索引成功存储后,数据请求者可以根据地址访问存储在区块链上的文件索引,根据文件索引定位到ipfs上经过加密的电子病历;
[0051]
数据提供者在同意共享电子病历给该数据请求者的情况下,将密钥加密并附上签名后传递给该数据请求者;
[0052]
数据请求者验证并解密获得密钥后,使用密钥对加密的电子病历进行解密,获取
数据,完成共享过程。
[0053]
通过上述技术方案,由于区块链技术自身防篡改去中心化的特点以及底层的共识机制,可以有效防止数据被攻击、篡改。ipfs星际文件是一个旨在创建持久且分布式存储和共享文件的网络传输协议。将两者相结合,比起传统中心化存储方式,避免了单点故障问题,可以有效预防恶意节点以及单点攻击,并且相比于仅仅使用区块链技术,将索引存于区块链上,文件存储在ipfs上还可以有效减少区块的压力。与此同时,将非对称加密与对称加密有效结合,保证了医疗数据可以安全高效地存储以及共享。
[0054]
参见图2,由fabric-ca中心为用户颁发ca证书,并为用户生成公钥和私钥包括:
[0055]
用户通过身份标识id向fabric-ca中心发送注册申请,fabric-ca中心收到注册申请后对注册者身份的合法性进行验证,验证成功后fabric-ca根据身份标识id,使用sm2国密算法生成用户的公私钥对(pk,sk),其中,pk为用户的公钥,sk为用户私钥。
[0056]
进一步的,通过sm2国密算法为用户生成公钥和私钥包括:
[0057]
用随机数发生器生成私钥pk=da,其中,da表示随机数发生器生成的随机数;g为椭圆曲线的基点,生成公钥sk=[da]g。
[0058]
这样,使用公钥加密算法为用户生成公私钥对,与传统rsa和ec-256不同的是,本发明对fabric进行国密改造,使用sm2国密算法,sm2国密算法比起rsa算法更快更安全,相较于ecc-256算法,sm2算法在解密正确性判断、明文编码问题、对待加密数据长度的限制及加密计算等方面具有更大的优势。
[0059]
患者将电子病历加密后存储在ipfs上使用的加密算法为sm4国密算法。
[0060]
进一步的,该加密算法可表示为:eehr=enc2(key
sm4
,ehr),其中,key
sm4
表示加密密钥,ehr表示电子病历,eehr表示加密后的电子病历。
[0061]
具体的,图3给出了电子病历存储至ipfs上的过程,即首先,用户经过医院诊断后,提供自己的电子病历;其次,使用sm4国密算法对电子病历进行加密并生成密钥key
sm4
;最后,将加密后的电子病历存储到ipfs上,并返回文件索引index。
[0062]
可见,采用sm4国密算法对电子病历进行加密并存储在分布式文件系统ipfs上,ipfs提供了一个高吞吐量、按内容寻址的块存储模型及与内容相关的存储模型及与内容相关的超链接。
[0063]
此外,文件索引存储在区块链上包括(如图4所示):
[0064]
客户端通过sdk向区块链网络发起一个存储文件索引的交易提案,交易提案把带有本次交易要调用的合约标识、合约方法和参数信息以及客户端签名等信息发送给背书节点;
[0065]
背书节点收到交易提案后,验证签名并确定提交者是否有权执行操作,同时根据背书策略模拟执行智能合约,并将结果及其各自的ca证书签名发还给客户端;
[0066]
客户端收到背书节点返回的信息后,判断提案结果是否一致,以及是否参照指定的背书策略执行,如果没有足够的背书,则中止处理;否则,客户端把数据打包到一起组成一个交易并签名,发送给orderer节点;
[0067]
orderer节点按时间顺序对网络中的交易进行排序,并创建交易区块,之后广播给同一通道内所有组织的leader节点;
[0068]
leader节点对接收到的区块进行验证,通过验证后将结果写入本地分类账本,并
同步广播给组织内其他节点;
[0069]
每个peer节点将区块附加到区块链中,写集被提交到当前的状态数据库中,并且对于每个有效的事务,发出一个事件,通知客户端应用程序事务已被不可变地附加到链中,至此,索引成功存储到区块链上。
[0070]
这样,利用区块链技术来完成对文件索引的存储,区块链去中心化的特点有效防止了单点攻击以及恶意节点,不可篡改的特性保证了数据存储的安全性,整个交易流程都是安全透明的。
[0071]
图5中,患者向医院共享电子病历的具体过程如下:
[0072]
当医院想要获取患者电子病历时,向患者发起请求;
[0073]
患者同意后,使用医院的公钥对sm4密钥进行加密;
[0074]
患者使用自己的私钥,对加密后的消息进行签名,并发送给医院;
[0075]
医院收到后,先使用患者公钥对消息进行验证;
[0076]
验证通过后,医院使用自己的私钥对消息进行解密,来获取sm4密钥;
[0077]
医院通过文件索引index在ipfs上获取患者的电子病历,并使用sm4密钥解密完成整个共享过程。
[0078]
具体的,数据提供者在同意共享电子病历给该数据请求者的情况下,会将密钥加密并附上签名后传递给该数据请求者,数据请求者验证并解密获得密钥的过程包括:
[0079]
数据提供者a使用数据请求者b的公钥pkb对密钥key
sm4
进行加密并使用自己的私钥ska对消息进行签名并发送给数据请求者b;
[0080]
数据请求者b收到后先使用数据提供者a的公钥pka对消息进行验证,确认消息是否是数据提供者a发出的,确认后使用自己的私钥skb进行解密获取密钥key
sm4

[0081]
其中,将密钥加密并附上签名所使用的签名算法为sm2数字签名算法。
[0082]
进一步,密钥加密与解密以及签名可以表示为:
[0083]
ekey=enc3(ska,enc1(pkb,key
sm4
));key
sm4
=dnc3(pka,dnc1(skb,ekey))
[0084]
其中,ekey表示加密并签名后的sm4密钥,所使用的加解密算法为sm2国密算法。
[0085]
数据请求者获取密钥后,使用密钥对加密的电子病历进行解密,获取数据可表示为:ehr=dnc2(ekey,eehr)。
[0086]
这样,医院只有在获取患者授权的情况下才可以获取密钥对电子病历进行解密,这在很大程度上保护了患者的隐私和权利。另外,使用非对称加密方式sm2对消息进行签名,用于验证消息发送者的身份。
[0087]
参见图6,电子病历的基本框架主要分为业务域、业务活动记录分类以及业务活动记录。
[0088]
以上结合附图详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型,这些简单变型均属于本发明的保护范围。
[0089]
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。
[0090]
此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本
发明的思想,其同样应当视为本发明所公开的内容。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献