一种基于医疗联盟链的跨域认证方法

文档序号:29797890发布日期:2022-04-23 19:19阅读:231来源:国知局
一种基于医疗联盟链的跨域认证方法

1.本发明属于跨域身份认证技术领域,涉及一种基于医疗联盟链的跨域认证方法。


背景技术:

2.物联网技术带给世界的变化是巨大的,而区块链技术的出现更是在物联网浪潮的发展中具有重要地位。达沃斯世界经济论坛评价区块链是最值得称赞的发展之一,它被人认为是继蒸汽机、电气、互联网之后的第四大改变世界格局的技术,为众多行业带来新的机遇与发展,其对医疗行业领域的影响尤甚。医疗健康服务的普及与发展不仅关系到民生国计,更是与每一位公民的健康状况息息相关,也是有效应对老龄化问题的重要举措。国家重视“互联网+医疗健康”体系的建设,鼓励通过“互联网+医疗健康”的平台使就医诊疗服务更便民,充分发挥网络技术对医疗健康发展的作用。区块链技术根据其自身去中心化、去信任化、安全性高、隐私性强、透明度高等特性,为完善智慧医疗领域中的医疗数据信息安全领域的建设提出可行性建议,重塑医疗机构、患者等众多医疗相关机构关系,搭建涵盖多医疗主体、可实现医疗数据互联互通且安全可靠的区块链医疗联盟监管服务平台。
3.在医疗健康数据系统中,医疗健康数据精确记录着每个人的用药情况、过敏药物、化验结果以及各项生命体征,这些都是十分宝贵的数据资产。目前,大多数医疗机构都建立了自己独立的认证系统,只有本域内合法的用户才可以登录系统获取医疗数据。由于医疗水平的差异和疾病的不同,病患往往会选择不同的医疗机构进行诊治,各医疗机构之间在访问和共享病患医疗数据时存在严格的限制,使得病人不得不接受重复诊治,造成资源和时间的浪费。如何实现不同医疗机构的认证系统整合,完成跨域认证,保证数据在安全存储的情况下被各医疗机构高效共享成为构建智慧医疗系统的难点问题。
4.区块链技术自2008年出现以来,一直在金融领域受到持续关注并快速发展。医疗健康领域是仅次于金融领域的区块链第二大应用场景,其中医疗健康数据的安全存储和共享成为了研究的重点。有许多公司和初创企业试图使用区块链来改变医疗行业的运作方式。然而,现阶段的电子医疗数据面临诸多问题,主要概括为以下三点:医疗数据集中存储在患者就诊医疗机构的数据库中,而不能在医疗机构间及时共享,导致信息孤岛问题。医疗数据涉及患者的个人隐私,但就目前的存储方式而言安全性较低,容易被非法用户窃取和篡改。不同身份的人员在访问和共享医疗健康数据时都受到比较严格的限制,且验证身份和数据的真实性需要大量的资源和时间。


技术实现要素:

5.为解决以上提及问题,本发明提出了一种基于医疗联盟链的跨域认证方法,基于联盟链设计合理高效的跨域认证协议,采用哈希函数、数字签名等密码学技术实现对处于不同域的用户进行安全可靠的身份验证,并优化共识机制,保证在没有中心节点的情况下联盟中医疗机构可以快速达成一致,共享医疗健康数据。本发明所述的一种基于医疗联盟链的跨域认证方法,其步骤为:
6.s1、系统初始化,生成系统参数;本域内参与实体有密钥生成中心kgc、病患用户、医疗机构;
7.s2、用户注册:本域kgc根据病患用户提供的身份标识生成部分密钥,并通过安全信道发送给病患用户,病患用户自身选取秘密值,与部分密钥组成完整密钥;
8.s3、域内认证与密钥协商:本域的病患用户向本域医疗机构发起认证请求,本域医疗机构收到请求后,首先验证消息的有效性和病患用户的合法性,验证通过后,返回签名给病患用户,病患用户收到后进行签名验证操作;若双方均验证通过,则说明通信双方是合法的,双方协商出共同的会话密钥以保证后续的加密通信;
9.s4混合共识上链:当病患用户与医疗机构完成相互认证后,医疗机构服务器将为该病患用户生成区块凭证,并写入交易,该交易将由区块链网络中的所有共识节点进行验证,最后,由选举出的记账节点将一定时间内合法交易打包成区块,经过共识后上链存储;
10.s5跨域认证:病患用户要获取异域医疗机构服务资源,首先发起认证请求,异域医疗机构首先检索本地数据库,若该病人未在本域认证过,则调用链码查询该用户的认证凭证,接着与病患交互达成相互认证并协商会话密钥,异域医疗机构将跨域认证结果相关参数发布上链;若该病患已在本域认证过,则无需再次认证,根据已查询到的认证凭据生成新的会话密钥。
11.进一步的,s1的具体步骤为:
12.s1-1、本域参与实体生成身份标识字符串id∈{0,1}
*
,不失一般性,本域病患用户、本域医疗机构、异域医疗机构的身份标识符分别为:
[0013][0014]
s1-2、本域密钥生成中心kgc选取安全参数k,椭圆曲线e上的域f
p
,循环加群g1及循环乘群g2,其中两个循环群的阶数皆为q且q与p均为两个大素数,g1的生成元为p,定义双线性映射e:g1×
g1→
g2;选取安全哈希函数:;选取安全哈希函数:;选取安全哈希函数:选取数字签名算法sig(*);
[0015]
s1-3、kgc随机选取计算p
pub
=sp,其中,s为系统主密钥,需要秘密存储,p
pub
为系统公钥;系统初始化的所有公共参数param={g1,g2,p,p,q,p
pub
,hi(i=0,1,2,3,4,5)}将被写入区块链,对不同域的用户都是公开可见的。
[0016]
进一步的,s2的具体步骤为:
[0017]
s2-1、本域病患用户发送其身份标识字符串id
ia
给密钥生成中心kgc,密钥生成中心kgc收到后计算:其中,t为当前该用户注册时的时间戳,作为用户的匿名身份标识符,作为病患用户的部分私钥,且与身份标识id
ia
唯一对应,密钥生成中心kgc将部分密钥通过安全信道发送给病患用户;
[0018]
s2-2、本域病患用户随机生成作为秘密值,并计算作为本域病患用户的公钥,故病患用户的完整公私钥对为
[0019]
s2-3同样地,本域和异域医疗机构将其身份标识id
ja
、发送给密钥生成中心kgc分别可以获得和并计算和作为各自的公钥,则本域和异域医疗机构都可以得到完整的公私钥对,分别为和
[0020]
进一步的,s3的具体步骤为:
[0021]
s3-1、本域病患用户id
ia
选取随机数并计算u=rp,gr=[r]e(p,p
pub
),),其中,gr为本次消息生成的过程变量,u、n、h、i为本次认证过程的数字签名,t1为当前时间戳,然后生成消息m1=《n,h,t1,u,i》并发送给本域医疗机构id
ja

[0022]
s3-2、当本域医疗机构id
ja
收到m1后,首先解析该消息并选取当前时间戳t2,若|t
1-t2|《δt,成立,则说明m1是新鲜的,否则,中止会话或不应答;其中δt为消息附带的时间戳和收到消息时的当前时间戳之间的差值;然后计算:t=[h

]e(p,p
pub
),其中,为本域医疗机构推导出的病患用户的匿名身份标识符,u、t、h

都为验签过程的生成变量。若h

=h成立,则说明该病患用户是合法的,否则,中止会话;
[0023]
s3-3、本域医疗机构id
ja
选取随机数并计算y=yp,gy=[y]e(p,p
pub
),),其中,t3为当前时间戳,gy为本次消息生成的过程变量,w、v、k、y为本次认证过程的数字签名;然后,生成会话密钥会话密钥最后,生成消息m2=《w,v,k,y,t3》发送给病患用户id
ia

[0024]
s3-4、当本域病患用户id
ia
收到m2,选取当前时间t3′
,验证|t
3-t3′
|《δt,若成立,则说明m2新鲜性;计算:新鲜性;计算:β=[v]e(p,p
pub
),其中,为病患用户推导出的本域医疗机构的匿名身份标识符,α、β、v

都为验签过程的生成变量。若v

=v成立,则医疗机构id
ja
的身份合法,则该用户可推导出会话密钥否则中止当前会话。
[0025]
进一步的,s4的具体步骤为:
[0026]
s4-1、当上述病患用户id
ia
与本域医疗机构id
ja
完成相互认证并协商好会话密钥
后,本域医疗机构id
ja
服务器根据认证结果生成区块凭证服务器根据认证结果生成区块凭证其中,字符串authenticated代表已经通过认证的标识,exp为认证有效期;然后,将该凭证写入交易认证的标识,exp为认证有效期;然后,将该凭证写入交易其中,hash(bcerta)为区块凭证bcerta的哈希值,ts为该交易的时间戳,为本域医疗机构id
ja
对该交易的数字签名;
[0027]
s4-2、本域医疗机构id
ja
将该交易广播至区块链网络,共识节点对该交易进行简单验证并返回验证结果,根据dpos算法,共识节点投票选出排名前n个委托人节点轮流作为记账节点sn=sni,i=1,2,

,n,每个节点的投票权重由该医疗机构的等级信誉度(指平台上公众点评量化后的值),以及其他节点的赞成和反对票数决定,即满足函数该记账节点sni负责将δt时间所有合法交易打包成区块block;
[0028]
s4-3、基于pbft算法,记账节点sni发起提议其中,currenthash(block)为新生成的区块的哈希值,为记账节点对当前区块的数字签名,其他记账节点作为从节点验证签名,若2/3的记账节点赞成提议,则该区块认为是有效的,否则进入下一轮共识;
[0029]
s4-4、每n个区块生成作为一个选举周期,每个区块产生的时间间隔为tt秒,若存在某个记账节点发生错误行为,如被攻击、宕机等,则会影响该节点在下一轮的选举投票。
[0030]
进一步的,s5的具体步骤为:
[0031]
s5-1病患用户id
ia
首先计算作为与异域医疗机构交互的公钥,发送认证申请给异域医疗机构的认证服务器,其中,字符串request表示认证请求,p

为异域的系统公共参数;
[0032]
s5-2当异域医疗机构收到请求后,解析bcerta查看有效期,计算hash(bcerta),以该哈希值作为索引查询区块链,若该交易存在,则说明病患用户合法;然后计算:ak=akp

,,其中,是随机数,为医疗机构的私钥,t4是当前时间戳,ak,γk,σk为本次认证过程的数字签名,sk3为协商出的会话密钥;最后生成消息m3=《ak,γk,σk,t4》并发送给病患id
ia

[0033]
s5-3病患用户id
ia
收到m3后,首先解析出消息附带的时间戳t4,选取当前时间戳t5,若|t
5-t4|《δt成立,则说明m3的新鲜性,然后验证:
[0034]
其中,为病患用户推导出的异域医疗机构的匿名身份标识符,σ
′k为验签过程的生成变量,sk4为协商出的会话密钥。若σ
′k=σk成立,则确认医疗机构身份合法,二者可以协商出共同的会话密钥sk=sk3=sk4。
[0035]
s5-4当医疗机构收到确认回复后,为该病患用户生成其在异域的区块凭证,即并写入新交易广播至区块链网络,经过步骤s4的混合共识后,该交易即可被写入区块链。
[0036]
本发明的有益效果为:本发明引入区块链技术,不依赖第三方信用背书来实现跨域认证,利用联盟链的分布式存储功能和防篡改、数据互通、可追溯等的特性,有效保护病患的隐私数据;
[0037]
2.无证书公钥技术实现身份认证,无证书管理问题,克服了密钥托管,解决了联盟不同域用户跨域认证时的可信度问题,基于区块链及其智能合约将不同认证机制和安全级别的身份管理系统整合为一个标准跨域认证协议;
[0038]
3.实现双向认证、准匿名性,通信双方利用协商好的会话密钥加密传输信息以保证数据在传输的过程中不会被篡改,更不会被盗用;
[0039]
4.融合股份授权证明机制和实用拜占庭机制,保证在没有中心节点的情况下联盟中医疗机构可以快速达成一致,避免记账人权利滥用,最终能够提高联盟系统的吞吐量。
附图说明
[0040]
图1是本发明所述方法的流程图;
[0041]
图2是跨域认证数据传输流程;
[0042]
图3是多域的跨域认证系统模型图。
具体实施方式
[0043]
为了使本发明的内容更容易被清楚地理解,下面根据具体实施例并结合附图,对本发明作进一步详细的说明。
[0044]
本发明提出了一种基于医疗联盟链的跨域认证方法,基于联盟链设计合理高效的跨域认证协议,采用哈希函数、数字签名等密码学技术实现对处于不同域的用户进行安全可靠的身份验证,并使用股份授权证明机制(delegated proof of stake,dpos)和实用拜占庭机制(practical byzantine fault tolerance,pbft)结合的混合共识机制,保证在没有中心节点的情况下联盟中医疗机构可以快速达成一致,共享医疗健康数据,多个医疗域的跨域认证系统模型图如图3所示。
[0045]
本发明的重要术语和约束如下:
[0046]
联盟链:联盟链是由多个机构共同参与管理的区块链,每个组织或机构管理一个或多个节点,其数据只允许系统内的机构进行读写,只有通过授权后的实体机构才能加入或退出网络。其主要的特点是弱中心化、可控性强、交易速度快。
[0047]
哈希函数:又称散列函数,是将任意长度的消息或数据压缩成摘要,使得数据量变小,格式固定。哈希函数具有单向性、抗碰撞性的特点,可以应用于消息认证,确保消息的完整性。
[0048]
数字签名:可以被视为传统手写签名的数字化形式,存在于数据信息中或作为附件或逻辑上有联系的数据,具有不可伪造性,用于鉴别数据签署人的身份、验证被签名的消息的内容,主要包含签名算法和签名验证算法。
[0049]
股份授权证明机制:delegated proof of stake,简称dpos,形式类似董事会投票,每个持币人经过投票后产生101个超级节点或矿池以代理验证和记账过程,相互之间具有同等权利。这种机制能够加快共识过程,但实际应用领域主要是虚拟货币,具有一定的局限性。
[0050]
实用拜占庭机制:practical byzantine fault tolerance,简称pbft,有效解决拜占庭将军问题,即对于一个n=3f+1个节点组成的区块链网络,该机制可以提供f的容错能力,容错能力近似为1/3,主要应用在联盟链中。
[0051]
如图1所示,本发明所述的方法步骤如下:
[0052]
s1、系统初始化,生成系统参数。本域内参与实体有密钥生成中心kgc(key generation center),病患张三,位于a域的某中医院,以及位于b域的某专科医院(在下文中统一用a域指代本域,用b域指代有别于本域的其它域)。
[0053]
s1的具体实现步骤如下:
[0054]
s1-1、a域参与实体生成身份标识字符串id∈{0,1}
*
,具体地,病患张三、a域某中医院、b域某专科医院的身份标识符分别为:
[0055][0056]
s1-2、a域密钥生成中心kgc选取安全参数κ,椭圆曲线e上的域f
p
,循环加群g1及循环乘群g2,其中两个循环群的阶数皆为q且q与p均为两个大素数,g1的生成元为p,定义双线性映射e:g1×
g1→
g2;选取安全哈希函数:;选取安全哈希函数:
[0057]
选取数字签名算法sig(*);
[0058]
s1-3、kgc随机选取计算p
pub
=sp,其中,s为系统主密钥,需要秘密存储,p
pub
为系统公钥。系统初始化的所有公共参数param={g1,g2,p,p,q,p
pub
,hi(i=0,1,2,3,4,5)}将被写入区块链,对不同域的用户都是公开可见的。
[0059]
s2、用户注册:kgc根据用户提供的身份标识生成部分密钥,并通过安全信道发送给用户,用户自身选取秘密值,与部分密钥组成完整密钥。
[0060]
s2的具体实现步骤如下:
[0061]
s2-1、如图1中的步骤1.~3.所示,病患张三发送其身份标识字符串id
ia
给kgc,kgc收到后计算:其中,t为当前张三注册时的时间戳,作为张三的匿名身份标识符,作为张三的部分私钥,且与身份标识
id
ia
唯一对应。kgc将部分密钥通过安全信道发送给张三;
[0062]
s2-2、病患张三随机生成作为秘密值,并计算作为公钥,故张三拥有完整公私钥对为
[0063]
s2-3、如图1中步骤4.~6.所示,同样地,a域省中医院和b域专科医院将其身份标识id
ja
、发送给密钥生成中心kgc分别可以获得和并计算和作为各自的公钥,则a域省中医院和b域专科医院都可以得到完整的公私钥对,分别为和
[0064]
s3、域内认证与密钥协商:病患张三首先向a域省中医院发起认证请求,该医院服务器收到请求后,首先验证消息的有效性和病患用户的合法性,验证通过后,返回签名给用户,用户收到后进行类似的验证操作,验证消息的有效性和医疗机构的合法性;若双方均验证通过,则说明通信双方是合法的,进一步地,双方协商出共同的会话密钥以保证后续的加密通信。
[0065]
s3的具体实现步骤如下:
[0066]
s3-1、如图1中步骤7.和步骤8.所示,病患张三选取随机数并计算u=rp,gr=[r]e(p,p
pub
),),其中,gr为本次消息生成的过程变量,n、u、h、i为本次认证过程的数字签名,y1为当前时间戳,然后生成消息m1=《n,h,t1,u,i》并发送给医院id
ja

[0067]
s3-2、如图1中步骤9.所示,当a域省中医院收到m1后,首先解析该消息并选取当前时间戳t2,若|t
1-t2|《δt(δt为消息附带的时间戳和收到消息时的当前时间戳之间的差值)成立,则说明m1是新鲜的,否则,中止会话或不应答。然后计算:t=[h

]e(p,p
pub
),其中,为a域省中医院推导出的病患张三的匿名身份标识符,u、t、h

都为验签过程的生成变量。若h

=h成立,则说明该病患用户是合法的,否则,中止会话。
[0068]
s3-3、如图1中步骤10.和步骤11.所示,a域省中医院选取随机数并计算y=yp,gy=[y]e(p,p
pub
),),其中,gy为本次消息生成的过程变量,w、v、k、y为本次认证过程的数字签名,t3为当前时间戳。然后,生成会话密钥最后,生成消息m2=《w,v,k,y,t3》发送给病患用户id
ia

[0069]
s3-4、如图1中步骤12.~14.所示,当病患张三idi收到m2,同样地,选取当前时间
t3′
,验证|t
3-t3′
|《δt,成立,说明m2的新鲜性,若验证通过,计算:β=[v]e(p,p
pub
),其中,为病患张三推导出的a域省中医院的匿名身份标识符,α、β、v

都为验签过程的生成变量。若v

=v成立,则a域省中医院id
ja
的身份合法,则该用户可推导出会话密钥该用户可推导出会话密钥否则中止当前会话。
[0070]
s4混合共识上链:当病患张三与a域省中医院完成相互认证后,该医院服务器将为张三生成区块凭证,并写入交易,该交易将由区块链网络中的所有共识节点进行验证,最后,根据混合共识机制选出记账节点,由选举出的记账节点将一定时间内合法交易打包成区块,经过共识后上链存储。
[0071]
s4的具体实现步骤如下:
[0072]
s4-1、如图1中步骤15.所示,当病患张三id
ia
与a域省中医院id
ja
完成相互认证并协商好会话密钥后,该医院id
ja
服务器根据认证结果生成区块凭证其中,字符串authenticated代表已经通过认证的标识,exp为认证有效期。然后,将该凭证写入交易其中,hash(bcerta)为区块凭证bcerta的哈希值,ts为该交易的时间戳,为医院id
ja
对该交易的数字签名;
[0073]
s4-2、如图1中步骤16.所示,省中医院id
ja
将该交易广播至区块链网络,共识节点对该交易进行简单验证并返回验证结果,经过共识节点投票选出排名前n个委托人节点轮流作为记账节点sn={sni,i=1,2,

,n},每个节点的投票权重由该医疗机构的等级信誉度(指平台上公众点评量化后的值),以及其他节点的赞成和反对票数决定,即满足函数关系其中,w1,w2,w3为变量的权重值,且w1+w2+w3=1,不失一般性,根据dpos算法,这里n取101,即101个共识节点担任委托人,该委托人将作为记账节点sni负责将δt时间所有合法交易打包成区块block;
[0074]
s4-3、记账节点sni发起提议其中,currenthash(block)为新生成的区块的哈希值,为记账节点对当前区块的数字签名;其他记账节点作为从节点验证签名,若2/3的记账节点赞成提议,则该区块认为是有效的,否则进入下一轮共识;
[0075]
s4-4、每101个区块生成作为一个选举周期,每一个区块产生的间隔为10秒,若存在某个记账节点发生错误行为,如被攻击、宕机等,则会影响该节点在下一轮的选举投票。
[0076]
s5跨域认证:病患张三id
ia
要获取b域某专科医院服务资源,首先发起认证请
求,该医院首先检索本地数据库,若数据库中不存在张三的认证信息,则调用链码查询张三的认证凭证,接着与张三交互达成相互认证并协商会话密钥,该医院将跨域认证结果相关参数发布上链。
[0077]
s5的具体实现步骤如下:
[0078]
s5-1、如图1中步骤17.所示,病患张三id
ia
首先计算作为与b域专科医院交互的公钥,发送认证申请给该医院的认证服务器。其中,request表示认证请求,p

为b域的系统公共参数;
[0079]
s5-2、如图1中步骤18.-22.所示,当b域专科医院收到请求后,解析bcerta查看有效期,计算hash(bcerta),以该哈希值作为索引查询区块链,若该交易存在,则说明张三是合法用户;b域医院初始化匿名身份标识符其中t

为初始化匿名身份标识符时的时间戳。然后计算:ak=akp

,,其中,是随机数,为该医院的私钥,t4是当前时间戳,ak,γk,σk为本次认证过程的数字签名,sk3为协商出的会话密钥。最后生成消息m3=《ak,γk,σk,t4》并发送给张三;
[0080]
s5-3、如图1中步骤23.和步骤24.所示,病患张三id
ia
收到m3后,首先解析出消息附带的时间戳t4,选取当前时间戳t5,若|t
5-t4|《δt成立,则说明m3的新鲜性,然后验证:的新鲜性,然后验证:其中,为病患张三户推导出的b域专科医院的匿名身份标识符,σ
′k为验签过程的生成变量,sk4为协商出的会话密钥。若σ
′k=σk成立,则确认该医院身份合法,二者可以协商出共同的会话密钥sk=sk3=sk4。
[0081]
s5-4当b域专科医院收到确认回复后,为张三生成其在b域的区块凭证,即并写入新交易广播至区块链网络,经过步骤s4的混合共识后,该交易即可被写入区块链。
[0082]
以上所述仅为本发明的优选方案,并非作为对本发明的进一步限定,凡是利用本发明说明书及附图内容所作的各种等效变化均在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1