1.一种基于区块链的医疗数据共享加密方法,其特征在于,包括以下步骤:S1:初始化服务器,生成并分发各服务器秘密子份额;
S2:验证各服务器秘密子份额的有效性,若验证通过则进入步骤S3,否则剔除验证不通过的服务器,并返回步骤S1;
S3:根据各服务器秘密子份额,通过分布式计算获取数据加密核心秘密值和各服务器对应的秘密份额;
S4:根据数据加密核心秘密值、各服务器对应的秘密份额及计算需求,通过各服务器对医疗共享数据进行加密传输及同态计算,完成医疗数据共享;
所述步骤S1包括以下子步骤:
S11:利用服务器生成有限域Zq和两个p阶循环群,其中,两个p阶循环群分别为第一循环群G1和第二循环群G2,第一循环群G1包括第一生成元g1,第二循环群G2包括第二生成元g2,有限域Zq包括第三生成元g,q表示有限域特征;
λ
S12:根据第一循环群G1、第二循环群G2和有限域Zq,将安全参数1、服务器数量n和门限值t作为服务器初始化的输入参数,输出各服务器多项式Si(x)、子秘密值si和验证密钥VKi,完成服务器初始化;其中,λ表示数据长度;
S13:将验证密钥VKi发送至区块链进行记链,并将子秘密值si通过秘密信道发送至服务器中的医疗机构节点;
S14:将所有服务器的ID值作为多项式Si(x)的输入,得到各服务器秘密子份额CSSij;
S15:进行各服务器之间的秘密子份额分发;
所述步骤S12中,输出多项式Si(x)的方法具体为:从有限域Zq中随机选择若干个元素ai(t‑1),ai(t‑2),......ai1,si组成多项式Si(x),其计算公式为:t‑1 t‑2 2
Si(x)=ai(t‑1)x +ai(t‑2)x +……+ai2x+ai1x+sit‑1 t‑2
其中,q表示有限域特征,ai(t‑1),ai(t‑2),...,ai1表示多项式的随机参数,x ,x ,...,x表示多项式的变量,si表示子秘密值,t表示门限值;
验证密钥VKi的表达式为:
其中,g表示第三生成元,g1表示第一生成元,g2表示第二生成元;
所述步骤S14中,各服务器秘密子份额CSSij的计算公式为:CSSij=Sj(SIDi)
其中,SIDi表示服务器Sri的ID值,1≤i≤n,1≤j≤n,n表示服务器数量,Sj(·)表示利用服务器Srj的多项式生成服务器Sri的秘密子份额的运算;
所述步骤S15中,进行秘密子份额分发的具体方法为:通过服务器Sri使用服务器Srj的公钥pkj对各服务器秘密子份额CSSij进行加密,得到加密后的秘密子份额 并通过区块链发送至服务器Srj;
所述步骤S2包括以下子步骤:
S21:利用服务器Srj的私钥skj对加密后的秘密子份额 进行解密,获得秘密子份额CSSij;
S22:根据验证密钥VKi,利用各服务器验证秘密子份额CSSij的有效性,若验证通过则进入步骤S3,否则剔除该服务器,并返回步骤S1;
所述步骤S22中,验证秘密子份额CSSij的有效性的方法具体为:若等式成立,则验证通过,否则不通过,其中,SIDj表示服务器的ID值,ai(t‑1),ai(t‑2),...,ai1表示多项式的随机参数,si表示子秘密值,t表示门限值,g表示第三生成元;
所述步骤S3中,秘密份额CSi的计算公式为:其中,n表示服务器数量,Sj(·)表示利用服务器Srj的多项式生成服务器Sri的秘密子份额的运算,SIDj表示服务器的ID值;
数据加密核心秘密值s的计算公式为:
其中,si表示子秘密值;
所述步骤S4包括以下子步骤:
S41:确定用户医药开销moneyk,并利用数据加密核心秘密值s对用户医药开销moneyk进行加密共享;
S42:通过保险机构节点向服务器提出理赔申请req,得到数据计算请求req′和对应理赔信息c″k,并将其返回至服务器Sri;
S43:根据数据计算请求req′和对应理赔信息c″k,利用服务器Sri进密文同态计算,得到第一反馈值Respi和第二反馈值Resp′i;
S44:利用服务器Sri中保险机构节点的公钥pkI分别对第一反馈值Respi和第二反馈值Resp′i进行加密,将加密结果发送至区块链进行记链操作;
S45:根据加密后的第一反馈值Respi和第二反馈值Resp′i,利用保险机构节点进行解密,获得第一总开销 和第二总开销 并将加密的用户医药开销、第一总开销和第二总开销 作为医疗数据共享结果;
所述步骤S41中,利用数据加密核心秘密值s对用户医药开销moneyk进行加密的计算公式为:2
dk1dk2=moneyk+s
ck1=dk1‑s,ck2=dk2‑s
moneyk‑s=c′k
其中,moneyk表示用户医药开销,dk1表示计算过程中产生的第一中间值,dk2表示计算过程中产生的第二中间值,ck1表示医疗数据加密后的第一密文值,ck2表示医疗数据加密后的第二密文值,c′k表示医疗数据加密后的第三密文值;
所述步骤S43中,第一反馈值Respi和第二反馈值Respi′的计算公式分别为:其中,CSi表示秘密份额,ck1、ck2和c′k分别表示各级医疗机构节点加密后的医疗支出密文值,c″k表示加密后的理赔信息,SIDi表示服务器Sri的ID值,S″(·)表示满足密文计算要求的构造多项式;
所述步骤S45中,第一总开销 和第二总开销 的解密计算公式为:其中,x表示变量,SIDj表示服务器Srj的ID值。