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