1.一种基于区块链的电子病历安全搜索方法,其特征在于,该基于区块链的电子病历安全搜索方法包括:
步骤1,建立系统,并产生密钥;
步骤2,产生电子病历并提取关键词,对所述电子病历和所述关键词进行加密并执行存储;
步骤3,执行电子病历的搜索;
在步骤1中,建立系统,并产生密钥的方法包括:步骤11,给定安全参数k,系统选择阶为素数p的两个循环群G1,G2以及一个双线性对满足双线性和对称性,其中,双线性是指对所有V,Q∈G1以及 有 对称性是指是从1到P的整数集合;
选择以下七个hash函数:*
H0:G2→{0,1}, H2:G1→M,计算, 其中,M是电子病历数据空间,P1和P2是G1的两个生成元;
系统参数为
步骤12,病人i随机选择 作为其私钥ski,并产生对应的公钥pki=(Yi1=yi1P1,Yi2=yi2P1,Yi3);
步骤13,医生j随机选择 作为其私钥,并产生对应的公钥pkj=(Yj=yjP1);
在步骤2中,产生电子病历并提取关键词,对所述电子病历和所述关键词进行加密并执行存储的方法包括:
步骤21,医生产生电子病历并从所述电子病历中提取关键词,该关键词应选自标准的医药描述术语集;
步骤22,医生对电子病历m和关键词w进行可搜索加密;
加密方法如下:
随机选择
计算
计算 设矢量X=[X1,X2,...,Xn],其中
2 n
X1=r1H1(w)P1,X2=r1(H1(w)) P1,...,Xn=r1(H1(w)) P1;
计算
该加密算法的输出为ci=(ci0,ci1,ci2);其中,ci1=(A,B,E,F),ci2=(J,X),(A,B,E,F)是可搜索加密的密文,ce=(A,J,X)是用于验证关键词有效性的证据;
步骤23,医生对病人身份IDi进行可搜索加密为密文di作为病历编号;
加密方法如下:
随机选择 计算
Bd=r1Yi2,r0=H5(IDi,Bd),Ad=r0(Yi1+H1(IDi)P1)+r1P1,计算Ed=r0Yi3,
病人身份IDi加密为di=(Ad,Bd,Ed,Fd);
步骤24,医生将密文(ci,di)作为一个新的区块发送到区块链中;
步骤25,区块链的验证者验证关键词的有效性,作为该区块链的共识机制;
该共识机制如下:
假设关键词集合Ω={w1,w2,...wn},通过建立基于关键词多项式的方法验证关键词的有效性,具体过程如下:
计算H(w1),H(w2),...H(wn),其中H(·)为哈希函数,构建一个n阶多项式,该n次多项式的根的表达式为
f(x)=(x‑H(w1))(x‑H(w2))...(x‑H(wn))显然,f(H(wi))=0,i∈{1,2,....n},该式可以表示为一般表达式n n‑1
f(x)=x+bn‑1x +...+b1x+b0这样,f(x)=0可以表示为n n‑1
x+bn‑1x +...+b1x+b0=0对上式进行变换可以得到
令 构建新的多项式
n n‑1
g(x)=anx+an‑1x +...+a1x2
可得g(H(wi))=1;定义一个矢量Λ=[a1,a2,...an]和Hi=[H(wi),(H(wi)) ,...,(Hn
(wi))],矢量Λ和Hi的内积Λ·Hi=1,从而矢量Λ可以用来验证所包含的关键词是否选自可选关键词集;
区块链的验证者按照如下方法验证接收到的密文(ci,di)中关键词是否有效:验证以下两个等式
和
若超过2/3的验证者验证了以上两个等式成立,将该区块加入到区块链中。
2.根据权利要求1所述的基于区块链的电子病历安全搜索方法,其特征在于,在步骤3中,执行电子病历的搜索的方法包括:d d d
步骤31,病人产生身份搜索陷门Td=(T1 ,T2 ,T3)和关键词搜索陷门Tw=(T1,T2,T3),其d d d
中,T1 ,T2 ,T3是Td中的第一、第二和第三项;T1,T2,T3是Tw中的第一、第二和第三项;方法如下:
随机选择 计算
d d d
T1=Yj/(yi1+H1(IDi)+yi3H6(β,rd)),T2=T1/yi2,T3=rd;
随机选择 计算
T1=Yj/(yi1+H1(w)+yi3H6(β,r)),T2=T1/yi2,T3=r;其中,β是一个随机数;
步骤32,电子病历的搜索者接收到病人的搜索陷门Td和Tw后搜索电子病历。
3.根据权利要求2所述的基于区块链的电子病历安全搜索方法,其特征在于,在步骤32中,搜索电子病历的方法包括:d d d
步骤321,搜索密文中身份为IDi的病历,即提取Td=(T1 ,T2 ,T3 ),计算和Vd=U1/U2,验证H4(Vd,Ad,Bd)=Fd是否成立,若成立,该病历为所需查找病人的病历,提取出对应密文ci0和ci1=(A,B,E,F);
式中,Ad,Bd,Ed,Fd是身份为IDi的患者的身份密文di=(Ad,Bd,Ed,Fd);
步骤322,计算 和V=U1/U2,验证H4(V,A,B)=F,若该等式成立,ci0为所需查找病人所需查找关键词的病历,计算和r0'=H3(m',B),验证 是否成立,若该等式成立,接受m’。