一种基于区块链的医疗物联网数据共享方法及系统

文档序号:30638124发布日期:2022-07-05 21:46阅读:123来源:国知局
一种基于区块链的医疗物联网数据共享方法及系统

1.本发明涉及物联网技术领域,尤其涉及一种基于区块链的医疗物联网数据共享方法及系统。


背景技术:

2.随着物联网和医疗技术的快速发展,物联网和医疗技术正在逐步融合,各医疗机构正在加快建设医疗物联网平台,物联网设备的数量在逐渐激增,产生的医疗数据极为庞大,医疗数据作为患者的敏感数据,传统的医疗物联网缺乏数据保护机制,同时权利的集中导致容易产生单点故障,如何保证医疗数据的安全性,同时确保共享的高效性,成为现在研究的重点。
3.现有技术中,新兴的区块链技术已广泛得到应用,区块链以其公开透明、可溯源、防篡改等特点应用于数据安全研究,不过现有技术仅仅利用区块链中的密码学技术来加密患者源数据,却忽略了患者源数据的泄露问题,虽在一定程度上保证了数据共享的安全性,但如果是在用户不诚实的情况下,用户未经授权就将源数据泄露或贩卖出去,源数据的安全性依然得不到保证。


技术实现要素:

4.有鉴于此,本发明的目的在于提出一种基于区块链的医疗物联网数据共享方法及系统,以解决目前患者源数据不安全的问题。
5.基于上述目的,本发明提供了一种基于区块链的医疗物联网数据共享方法,包括:
6.对申请加入的用户进行身份认证;
7.身份验证通过后,通过授权模块判断能够进入私有链;
8.同意进入所述私有链后,多个数据处理节点接受用户发送的属于自己的数据处理合约,所述数据处理节点向所述授权模块申请访问资源系统,所述授权模块接到申请后发送访问令牌;
9.多个所述数据处理节点接受所述访问令牌,用访问令牌作为调用应用程序编程接口的参数访问源数据;
10.获得源数据后,多个所述数据处理节点进行计算得到多个结果,经过结果分析,选取相同结果最多的结果作为最终结果,所述数据处理节点将最终结果用数字签名进行加密处理并发送给所述私有链中的医院端;
11.接受所述医院端发送的经过私钥加密的需求结果和公钥。
12.可选的,所述方法还包括:通过物联网设备将从患者身上采集医疗数据,并将采集的数据经过加密处理后发送到资源系统。
13.可选的,所述物联网设备至少包括传感器、智能医疗检测设备、智能手机、pc终端和rfid射频识别装置中的一种或多种。
14.可选的,所述身份认证采用数字签名方式进行认证,定义一个身份id,表示为id
(sk,pk),患者的身份为id(dh
sk
,dh
pk
),数据处理节点的身份为id(dp
sk
,dp
pk
),用户的身份为id(u
sk
,u
pk
),处理后结果的id表示为id(pr
sk
,pr
pk
)同时定义一个身份函数用于密钥分发、签名以及身份验证,表示为f(k,s,v)。通过k产生一对密钥对,将公钥广播到链上,用于之后的验证,通过s进行数字签名,私钥加密,公钥解密,通过私钥加密,公钥解密的v方法对请求操作的一方进行身份验证。
15.可选的,所述资源系统为网络文件系统,应用在unix环境下,能够支持在不同类型的系统之间通过网络进行文件共享。
16.可选的,所述数据处理节点为受指令集扩展保护的数据处理节点处理数据,所述指令集扩展从硬件级别提供安全可靠的代码运行环境。
17.可选的,所述方法还包括:所述物联网设备与用户之间通过集群式的结构进行数据共享,所述集群式的结构具体计算过程如下:
18.在短距离内,方程式(1)用于根据距离和环境特征计算传输能量,近距离时b=2;
19.当d《d
l
时,t=ds
×
db(1)
20.对于长距离,使用等式(2)(b=4);
21.当d》d
l
时,t=e
×
ds
×
db(2)
22.通过等式(3)计算每个物联网设备接收的数据包的消耗能量;
23.r=e
×
ds(3)
24.通过等式(4)计算每个物联网设备的当前能量;
25.a=t
×
r(4)
26.剩余能量通过等式(5)计算,其中ei是每个iot节点的一次能量;
27.c=pei-a(5)
28.其中公式中的相关参数有t为传输能量、ds为数据包大小、b为通道中的能量耗散(近距离时b=2)、d为两个节点之间的距离、d
l
为距离的阈值、e为接收数据包所需的能量、r为接收数据消耗的能量、a为每个物联网的当前能量、pei为每个iot节点的最初能量、c为计算剩余能量。
29.可选的,所述方法还包括通过状态机来监督共享过程的变化。
30.可选的,所述状态机包括:
31.长度为7的记录元组,表示为rec(record)=(recid,t,userid,rsid,hosid,nodeid,curst),recid表示记录标识元组,userid表示用户,rsid表示资源系统,hosid表示医院,nodeid表示数据处理节点,curst表示共享的当前状态;
32.长度为5的子状态元组,表示为st(substate)=(x,y,p,r,tl),其中x和y是共享数据的参与者,p是达到子状态的前提,r表示当条件p满足时产生的结果,tl表示时间限制,如果超过了时间限制,则认为共享事务已过期,子状态的取值范围为{b,s,ex,sh},其中b状态为满足时间限制,条件p也满足,只需等待结果r。s状态表示所有条件均满足,已经达到此状态。ex不满足时间限制,满足条件p但没有结果,表示共享事务失效,sh表示整个数据共享完成。
33.长度为3的操作元组,表示为op(operation)=(opex,object,input),其中opex表示操作的执行者,object表示操作对象,input表示操作所需的输入,op的取值范围是{false,true},false表示操作失败,true表示操作成功。
34.长度为4的智能合约元组,表示为sc(smart contract)=(stn,∑,fn),其中stn={st1,st2,st3,........,stn},是子状态的有限集合,∑是操作op的集合,∑的操作会改变stn中st的值,从而导致智能合约状态发生变化,fn为最终的状态,取值范围为{e,sh},e表示共享事务被认为过期,sh说明数据共享已完成。
35.基于相同的发明创造本发明还提供了一种执行上述的一种基于区块链的医疗物联网数据共享方法的系统,包括:
36.身份验证模块:用于对申请加入的用户进行身份认证;
37.授权模块:用于身份验证通过后,判断能够进入私有链;
38.数据处理节点:同意进入所述私有链后,多个数据处理节点接受用户发送的属于自己的数据处理合约,所述数据处理节点向所述授权模块申请访问资源系统,所述授权模块接到申请后发送访问令牌,用访问令牌作为调用应用程序编程接口的参数访问源数据,获得源数据后,多个所述数据处理节点进行计算得到多个结果,经过结果分析,选取相同结果最多的结果作为最终结果,所述数据处理节点将最终结果用数字签名进行加密处理并发送给所述私有链中的医院端;
39.用户端:用于接受所述医院端发送的经过私钥加密的需求结果和公钥。
40.本发明的有益效果:本发明通过将医疗数据获取问题转变成医疗数据处理问题,源数据不作为直接共享的数据,利用合约技术,用户部署数据处理合约,通过处理得到想要的结果即可,有效的避免了不诚实的用户未经授权就将源数据泄露出去,从而保证了数据的安全性。
41.本发明任何不合法的授权都会记录在分布式账本中,保证了数据共享过程的透明。
42.本发明将身份认证和访问授权技术运用在区块链上,通过编写符合规定的算法来更好的管理物联网设备,同时物联网域内的任何活动和行为都要通过区块链授权后方可执行,避免了恶意节点冒充物联网设备而发起网络攻击。
43.本发明采用集群结构,划分n个物联网域,这种结构有利于更好的管理物联网设备,还可以一定程度上减少物联网设备的能耗,添加新域时,公有链进行认证并产生共识,共识达成后,新域进入集群结构,同时将该操作记录在账本中。
44.本发明利用智能合约技术,提供共享过程评价机制以及处理节点打分机制,供今后的用户进行参考,同时用户可以提前广播自己的需求,可信节点和用户提前达成共识,以上均保证了数据共享过程的高效性,并引入一种状态机,实施追踪数据共享过程是否完成,若共享发生错误,可立即判断错误源,快速有效解决共享错误。
附图说明
45.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
46.图1为本发明具体实施例共享方法的流程图;
47.图2为本发明具体实施例数据共享过程架构图;
48.图3为本发明具体实施例系统架构图。
具体实施方式
49.为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,对本发明进一步详细说明。
50.需要说明的是,除非另外定义,本发明使用的技术术语或者科学术语应当为本发明所属领域内具有一般技能的人士所理解的通常意义。本发明中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
51.本发明实施例提供了一种基于区块链的医疗物联网数据共享方法及系统。
52.如图1至图3所示,一种基于区块链的医疗物联网数据共享方法,包括:
53.s101:对申请加入的用户进行身份认证;
54.s102:身份验证通过后,通过授权模块判断能够进入私有链;
55.s103:同意进入所述私有链后,多个数据处理节点接受用户发送的属于自己的数据处理合约,所述数据处理节点向所述授权模块申请访问资源系统,所述授权模块接到申请后发送访问令牌;
56.s104:多个所述数据处理节点接受所述访问令牌,用访问令牌作为调用应用程序编程接口(api)的参数访问源数据;
57.s105:获得源数据后,多个所述数据处理节点进行计算得到多个结果,经过结果分析,选取相同结果最多的结果作为最终结果,所述数据处理节点将最终结果用数字签名进行加密处理并发送给所述私有链中的医院端;
58.s106:接受所述医院端发送的经过私钥加密的需求结果和公钥。
59.利用本方法用户在获取患者的医疗数据时,先对申请加入的用户进行身份认证,当身份验证通过后,通过授权模块判断能够进入私有链,同意进入所述私有链后,多个数据处理节点接受用户发送的属于自己的数据处理合约,所述数据处理节点向所述授权模块申请访问资源系统,所述授权模块接到申请后发送访问令牌,用访问令牌作为调用应用程序编程接口(api)的参数访问源数据,获得源数据后,多个所述数据处理节点进行计算得到多个结果,经过结果分析,选取相同结果最多的结果作为最终结果,所述数据处理节点将最终结果用数字签名进行加密处理并发送给所述私有链中的医院端,用户再通过用户端接受所述医院端发送的加密的用于需求结果和公钥。
60.由上述可知,本发明通过将医疗数据获取问题转变成医疗数据处理问题,源数据不作为直接共享的数据,利用合约技术,用户部署数据处理合约,通过处理得到想要的结果即可,有效的避免了不诚实的用户未经授权就将源数据泄露出去,从而保证了数据的安全性。
61.在一些实施例中,所述方法还包括:通过物联网设备将从患者身上采集医疗数据,
并将采集的数据经过加密处理后发送到资源系统。可选的,所述物联网设备至少包括传感器、智能医疗检测设备、智能手机、pc终端和rfid射频识别装置中的一种或多种。
62.在一些实施例中,所述身份认证采用数字签名方式进行认证,定义一个身份id,表示为id(sk,pk),患者的身份为id(dh
sk
,dh
pk
),数据处理节点的身份为id(dp
sk
,dp
sk
),用户的身份为id(u
sk
,u
sk
),处理后结果的id表示为id(pr
sk
,pr
sk
)同时定义一个身份函数用于密钥分发、签名以及身份验证,表示为f(k,s,v)。通过k产生一对密钥对,将公钥广播到私有链上,用于之后的验证,通过s进行数字签名,私钥加密,公钥解密,通过私钥加密,公钥解密的v方法对请求操作的一方进行身份验证。
63.在一些实施例中,所述资源系统为网络文件系统,应用在unix环境下,能够支持在不同类型的系统之间通过网络进行文件共享。unix为现有的一种电脑操作系统。
64.资源系统允许一个系统在网络上与他人共享目录和文件。通过使用网络文件系统(nfs),用户和程序可以像访问本地文件一样访问远端系统上的文件,使得每个计算机的节点能够像使用本地资源一样方便地使用网上资源。换言之,nfs可用于不同类型计算机、操作系统、网络架构和传输协议运行环境中的网络文件远程访问和共享。
65.在一些实施例中,所述数据处理模块为受指令集扩展(softwareguardextensions,sgx)保护的数据处理节点处理数据,sgx从硬件级别提供安全可靠的代码运行环境。在用户进入私有链后,数据处理节点将数据处理合约部署在区块链中,数据处理节点需经区块链授权后拿到访问令牌,通过调用应用程序编程接口(api)从资源系统中获取需处理的源数据。处理得到结果后,将结果经过数字签名加密后传给医院,医院再将加密结果和公钥发送给用户。可以看到的是,数据处理节点不止1个,用户可以选取多个数据处理节点来处理数据,通过比较结果,最终相同结果最多的结果作为正确的结果。
66.在一些实施例中,所述方法还包括:所述物联网设备与用户之间通过集群式的结构进行数据共享,所述集群式的结构具体计算过程如下:
67.在短距离内,方程式(1)用于根据距离和环境特征计算传输能量,近距离时b=2;
68.当d《d
l
时,t=ds
×
db(1)
69.对于长距离,使用等式(2)(b=4);
70.当d》d
l
时,t=e
×
ds
×
db(2)
71.通过等式(3)计算每个物联网设备接收的数据包的消耗能量;
72.r=e
×
ds(3)
73.通过等式(4)计算每个物联网设备的当前能量;
74.a=t
×
r(4)
75.剩余能量通过等式(5)计算,其中ei是每个iot节点的一次能量;
76.c=pei-a(5)
77.其中公式中的相关参数有t为传输能量、ds为数据包大小、b为通道中的能量耗散(近距离时b=2)、d为两个节点之间的距离、d
l
为距离的阈值、e为接收数据包所需的能量、r为接收数据消耗的能量、a为每个物联网的当前能量、pei为每个iot节点的最初能量、c为计算剩余能量。
78.在本发明中,采取了一种集群式的结构,并通过编写具有各种功能的智能合约,协调物联网设备与用户进行有效的数据共享,通过计算表明,可以有效减少物联网设备的能
耗。
79.在一些实施例中,所述方法还包括通过状态机来监督共享过程的变化。
80.可选的,所述状态机包括:
81.长度为7的记录元组,表示为rec(record)=(recid,t,userid,rsid,hosid,nodeid,curst),recid表示记录标识元组,userid表示用户,rsid表示资源系统,hosid表示医院,nodeid表示数据处理节点,curst表示共享的当前状态;
82.长度为5的子状态元组,表示为st(substate)=(x,y,p,r,tl),其中x和y是共享数据的参与者,p是达到子状态的前提,r表示当条件p满足时产生的结果,tl表示时间限制,如果超过了时间限制,则认为共享事务已过期,子状态的取值范围为{b,s,ex,sh},其中b状态为满足时间限制,条件p也满足,只需等待结果r。s状态表示所有条件均满足,已经达到此状态。ex不满足时间限制,满足条件p但没有结果,表示共享事务失效,sh表示整个数据共享完成。
83.长度为3的操作元组,表示为op(operation)=(opex,object,input),其中opex表示操作的执行者,object表示操作对象,input表示操作所需的输入,op的取值范围是{false,true},false表示操作失败,true表示操作成功。
84.长度为4的智能合约元组,表示为sc(smart contract)=(stn,∑,fn),其中stn={st1,st2,st3,........,stn},是子状态的有限集合,∑是操作op的集合,∑的操作会改变stn中st的值,从而导致智能合约状态发生变化,fn为最终的状态,取值范围为{e,sh},e表示共享事务被认为过期,sh说明数据共享已完成。
85.在下表中列出与状态机相关的符号:
[0086][0087][0088]
进一步的,将再次对上述的状态机在共享数据时工作的详细过程加以阐述。
[0089]
(1)用户userid向医院hosid发起身份验证请求,请求加入私有区块链,其中request是请求函数,enter info是入链者的相关信息;
[0090]
·
st1:(userid,hosid,verifyid(hosid,userid),request)
[0091]
·
op1=request(hosid,userid,enterinfo)
[0092]
·
rec:(recid,t,userid,hosid,curst:st1_b)
[0093]
st1_b表示已状态st1有效,只需等待结果r完成;
[0094]
(2)如果userid身份验证有效,则userid就可以向区块链bc申请部署智能合约smartcontract,将合约部署在预先达成共识的数据处理节点nodeid上,deploy为合约部署函数;
[0095]
·
st2:(userid,bc,query,identityverify(bc,userid),deploy)
[0096]
·
op2=deploy(userid,node,smart contract)
[0097]
·
rec:(recid,t,userid,curst:st1_s)
[0098]
st1_s表示共享事务已达到状态st1;
[0099]
(3)智能合约部署部署成功之后,数据处理节点需要向区块链申请授权访问资源系统rsid,获得一个访问令牌token,send_token为发送令牌函数;
[0100]
·
st3:(nodeid,bc,deploy,grandaccess(bc,node),send_token)
[0101]
·
op3=send_token(bc,node,token)
[0102]
·
rec:(recid,t,userid,nodeid,curst:st2_s)
[0103]
st2_s表示共享事务已达到状态st2;
[0104]
(4)数据处理节点获得访问令牌后通过,通过应用程序编程接口(api)访问资源系统rsid,获取待处理的源数据data,send_data为发送源数据函数;
[0105]
·
st4:(nodeid,rsid,send_token,send_data)
[0106]
·
op4=send_data(rsid,nodeid,data)
[0107]
·
rec:(recid,t,userid,rsid,curst:st3_s)
[0108]
st3_s表示共享事务已达到状态st3;
[0109]
(5)数据处理节点获得源数据后开始进行数据处理工作,处理完得到的结果result需要发送给数据分析合约进行结果处理,得到最终的正确结果fresult,并加密发送给医院,其中send_result为发送结果函数,send_fresult为发送最终结果函数;
[0110]
·
st5:(nodeid,hosid,send_data,send_result,send_fresult)
[0111]
·
op5=send_result(nodeid,analysissc,result)&&send_fresult(analysissc,hosid,signature(fresult))
[0112]
·
rec:(recid,t,nodeid,hosid,curst:st4_s)
[0113]
st4_s表示共享事务已达到状态st4;
[0114]
(6)医院收到加密结果后,将加密结果sfresult和公钥pk一同发送给用户,send_sfresult为发送加密的最终结果;
[0115]
·
st6:(hosid,userid,send_result&&send_rresult,send_sfresult)
[0116]
·
op5=send_sfresult(hos,userid,sfresult&&pk)
[0117]
·
rec:(recid,t,hosid,userid,curst:st5_s)
[0118]
st5_s表示共享事务已达到状态st5;
[0119]
(7)共享成功结束后,会触发信息存储合约,将共享信息记录在区块链上;
[0120]
rec:(recid,t,hosid,userid,curst:st6_s)
[0121]
st6_s表示共享事务已达到状态st6;
[0122]
当所有的stn都达到状态stn_s时,说明共享事务成功完成。
[0123]
通过引入状态机,实施追踪数据共享过程是否完成,若共享发生错误,可立即判断错误源,快速有效解决共享错误。
[0124]
在一些实施例中,用户拿到结果之前,需要对共享过程进行评价,用户通过解密就可以拿到最终的结果,并且通过数字签名的摘要,也可以判断出是哪个数据处理节点处理的数据,进行追踪溯源。
[0125]
为了进一步实施本发明,本发明还提供了一种基于区块链的医疗物联网数据共享方法的系统,其特征在于,包括:
[0126]
身份验证模块:用于对申请加入的用户进行身份认证;
[0127]
授权模块:用于身份验证通过后,判断能够进入私有链;
[0128]
数据处理节点:同意进入所述私有链后,多个数据处理节点接受用户发送的属于自己的数据处理合约,所述数据处理节点向所述授权模块申请访问资源系统,所述授权模块接到申请后发送访问令牌,用访问令牌作为调用应用程序编程接口(api)的参数访问源数据,获得源数据后,多个所述数据处理节点进行计算得到多个结果,经过结果分析,选取相同结果最多的结果作为最终结果,所述数据处理节点将最终结果用数字签名进行加密处理并发送给所述私有链中的医院端;
[0129]
用户端:用于接受所述医院端发送的加密的需求结果和公钥。用户可以是私人医生或研究机构。
[0130]
由上述可知,本系统通过将医疗数据获取问题转变成医疗数据处理问题,源数据不作为直接共享的数据,利用合约技术,用户部署数据处理合约,通过处理得到想要的结果即可,有效的避免了不诚实的用户未经授权就将源数据泄露出去,从而保证了数据的安全性。
[0131]
本系统包括区块链,区块链包括物联网设备所在的私有区块链(私有链),以及各医院互连的公有区块链(公有链)。每个物联网域都有一个私有区块链,私有区块链和公有区块链共享一个分布式账本,分布式账本指的是交易记账由分布在不同地方的多个节点共同完成,而且每一个节点记录的是完整的账目,因此它们都可以参与监督交易合法性,同时也可以共同为其作证,使得数据交易更加灵活。
[0132]
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明它们没有在细节中提供。
[0133]
本发明旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本发明的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1