1.一种智慧医疗中面向关键字的隐私保护相似性查询方法,其特征在于,该方法基于典型的医疗数据外包系统应用场景,该外包系统包括以下三个参与方:
1)医疗中心:负责管理生成和维护系统中的公共信息,并分配系统中其他实体的密钥信息,同时提供原始医疗数据,其具有高可信度;
2)查询用户:向云服务器发起查询请求,获取与查询匹配的面向关键字的隐私保护相似性医疗服务数据;
3)云服务器:CS={CS1,CS2},负责提供密文环境下的面向关键字的相似性查询服务,具有超强的存储和计算能力;
该外包系统还包括六个模块:
1)系统初始化模块:由医疗中心执行,进行系统初始化,生成系统公共参数和实体公私钥;
2)数据组织模块:通过医疗中心将本地数据集组织成树形结构化BD-PB树,为数据加密及外包做准备;
3)数据加密模块:便于医疗中心基于构造好的BD-PB树,根据节点关键值的不同,采取不同的加密方式;
4)查询陷门生成模块:用户Uj发起查询请求将其进行加密后发送给云服务器CS1;
5)查询服务模块:当云服务器S1收到用户发来的会话密钥ssk与加密查询令牌在加密树E(T)上进行面向关键字的隐私保护相似性查询,具体包括过滤阶段和验证阶段;
6)数据解密模块:便于用户根据查询返回的加密结果,利用拥有的密钥进行解密得到最终的明文结果;
其中,数据组织模块的具体步骤为:
外包系统拥有症状关键字字典为正整数,医疗健康数据集其中ai是n维生理数据向量,是相应的症状关键字集合,通过构造一种新的数据结构BD-PB树组织该数据集BD-PB树自上而下构造步骤:步骤1)对于内部节点,以根节点举例,其节点值的选取有如下两种情况:Case1:根据生理数据向量选择节点的关键值为(p1,p2),首先,选择欧几里得距离最大的两个数据记录作为基准向量,基于p1和p2,将当前数据集分为两个子数据集和对于每个都有d(ai,p1)≤d(ai,p2),对于每个都有d(ai,p1)>d(ai,p2);
Case2:根据症状关键字选择节点的关键值为xj,从症状关键词字典中随机地选择一个症状关键词然后,根据这个关键词,把数据集分为两个子数据集和对于每个有对于每个有步骤2)在确定根节点的键值后,再分别基于子数据集和构造继续构建根节点的左子树Tl和右子树Tr;
步骤3)重复步骤Step1-2,直至子数据集仅剩一条记录且症状关键字字典内的所有关键字均用于该路径的构造,最终这条记录作为该路径的叶子节点且存储原始数据向量记录(idi,ai)(1≤i≤m)。
2.如权利要求1所述的一种智慧医疗中面向关键字的隐私保护相似性查询方法,其特征在于系统初始化模块的具体步骤为:
1)根据输入的安全参数运行MFHIPPE.KeyGen(1λ)密钥生成算法,生成一个非对称的双线性群并选择生成元和给定生理数据向量的维度n,生成范围内的n+4维随机可逆矩阵B,并设置B*=det(B)·(B-1)T;最后得到MFHIPPE密码系统的公共参数:其中Q是的多项式大小的子集,数据向量加密密钥:EK=(g1,B),以及查询向量陷门生成密钥:TK=(g2,B*);
2)根据输入的安全参数运行密钥生成算法,设置明文空间为并随机生成一个位长的数一个kp位长的素数p和一个kp位长的素数集合并计算与最后,得到SHE密码系统的公共参数:以及私钥:运行以下SHE加密算法,生成四个密文{E(0)1,E(0)2,E(1),E(-1)},其中{E(0)1,E(0)2}作为SHE公钥版本PHE的公钥,即pk=(E(0)1,E(0)2);
SHE加密算法:输入:m和sk,输出:密文c,具体如下:其中
3)初始化系统症状关键字字典xi(1≤i≤t)为正整数,设定用户可能提供的最大症状关键字个数为l,随机生成l+1维的可逆矩阵M1和M2作为症状关键字向量的加密密钥,以及一个l+1维的随机二进制向量S作为拆分向量;
4)医疗中心公开{pp,pk,PP,E(1),E(-1)},通过安全信道将{M1,M2,S,TK}发送给用户,将sk发送给云服务器S2,由自己保存密钥EK。
3.如权利要求1所述的一种智慧医疗中面向关键字的隐私保护相似性查询方法,其特征在于数据加密模块的具体操作为:
1)当内部节点是基准向量(p1,p2)时,加密步骤如下:Step1:首先构造两个(n+2)维向量uL和uR:uL=(-d(p1,p2),||p1||2-||p2||2,p2-p1);
uR=(d(p1,p2),||p1||2-||p2||2,p2-p1);
Step2:运行以下MFHIPPE加密算法,对uL和uR分别进行加密,获得uL和uR的密文和MFHIPPE加密算法,MFHIPPE.Enc(PP,EK,uL/R),输入:PP,EK,uL/uR,输出:step a:对数据向量uL和uR,选择随机数γ2>γ1>0以及step b:构造两个n+4维向量u′L和u′R:u′L=(-γ2d(p1,p2),γ2(||p1||2-||p2||2),γ2(p2-p1),γ1,1);
u′R=(γ2d(p1,p2),γ2(||p1||2-||p2||2),γ2(p2-p1),γ1,1);
step c:生成关于(p1,p2)的两个密文对:输出
2)当内部节点是症状关键字xi时,加密步骤如下:Step1:首先构造(l+1)维的症状关键字向量Step2:用随机生成的(l+1)维二进制拆分向量S将Pi拆分成两个向量P′i和P″i:Step3:将向量P′i和P″i分别扩展成对角矩阵和Step4:最后得到症状关键字xi的密文表示为其中rp,1和rp,2是两个非零随机整数;
3)对于叶子节点(idi,ai),加密步骤如下:Step1:首先构造一个(n+4)维向量zi=(ai,||ai||2,1,ri,ri),其中且ri≠0;
Step2:用SHE公钥版本PHE的加密算法加密idi得到Step3:用SHE公钥版本PHE的加密算法对zi的每一维数据都进行加密得到加密向量E(zi)=(E(zi,1),E(zi,2),…,E(zi,n+4)),其中且
最后得到加密的叶子节点{E(idi),E(zi)}。
4.如权利要求1所述的一种智慧医疗中面向关键字的隐私保护相似性查询方法,其特征在于查询陷门生成模块的具体操作为:
1)对于相似性查询条件(q,τ),加密步骤如下:Step1:首先构造一个(n+2)维向量t1和一个(n+4)维向量t2:t1=(2τ,1,2q)
t2=(-2q,1,||q||2-τ2,rt,-rt)(其中rt非零为随机数)Step2:运行以下MFHIPPE查询陷门生成算法,获得对向量t1的加密查询陷门MFHIPPE查询陷门生成算法,MFHIPPE.TokenGen(PP,TK,t1),输入:PP,TK,t1,输出:Step a:对向量t1=(2τ,1,2q),选择随机数γ4>γ3>0,以及Step b:构造n+4维向量t′1=(2γ4τ,γ4,2γ4q,1,γ3);
Step c:生成查询陷门
输出查询陷门
Step 3:对向量t2=(-2q,1,||q||2-τ2,rt,-rt),用SHE公钥版本PHE加密为E(t2)=(E(ti,1),E(ti,2),…,E(ti,n+4)),其中且
2)对于症状关键字组合查询条件加密步骤如下:Step1:用户本地随机生成l-lu个虚假症状关键字,并且这些虚假关键字不在医疗中心的症状关键字字典中,这样得到新的症状关键字组合为Step2:基于新的关键字组合构造多项式bl(y-X1)(y-X2)…(y-Xl)=b0+b1u+…+blyl,根据此多项式系数构造症状关键字查询向量Qu=(b0,b1,…,bl);
Step3:用随机二进制向量S将查询向量Qu随机拆分成两个向量Q′u和Q″u:Step4:再将Q′u和Q″u分别扩展成对角矩阵和Step5:这时为症状关键字集合构建出的密文表示为其中rq,1和rq,2是两个非零随机整数;
最后,用户Uj选择一个会话密钥ssk,并将ssk与加密查询令牌通过一个安全信道发送给云服务器S1。
5.如权利要求1所述的一种智慧医疗中面向关键字的隐私保护相似性查询方法,其特征在于查询服务模块的具体操作为:
1)过滤阶段
Step1:首先初始化一个候选数据集为空;
Step2:从根节点开始进行递归查询:
当查询节点是内部节点时,包括两种情况:
Case1:若内部节点是基准向量的密文对云服务器S1运行以下MFHIPPE验证算法来获得uL,uR与t1的内积结果的符号:MFHIPPE验证算法MFHIPPE.Check(CTu,TKv),输入:CTu和TKv,输出:0或1,0代表1代表Step a:计算
Step b:搜索是否存在z∈Q,使得若存在则得到z=;
Step c:若z>0,算法输出1;否则输出0;
上述算法关键思想:sign(z)=sign()=sign()证明:Z==αβdet(B)(γ2γ4+γ1+γ3)因为
若z=0,则有不成立,所以z≠0;
若z>0,则有
同理,若z<0,有<0;
综上可得,sign(z)=sign()=sign();
根据MFHIPPE验证算法,若输出1,则继续过滤右子树;
证明:
根据PB树的原理可得,满足条件的数据落在PB树的右子树;
同理可证得时,则继续过滤左子树;
若或则左右子树都需要进行过滤;
Case2:若内部节点是症状关键字xi的密文E1(xi):首先定义密文E1(xi)与之间的运算Θ为:
其中分别为原始向量Pi和Qu扩展得到的对角矩阵;
当过滤到内部节点是症状关键字xi的密文E1(xi)时,计算推断:若结果为0,则说明当前节点关键字是患者真实提供的症状关键字,继续访问左子树,否则当前节点不是患者真实提供的症状关键字,继续访问右子树;
上述推断关键思想:假设当前过滤的节点为则而基于真假混合关键字组合构造多项式根据此多项式系数构造出Qu=(b0,b1,…,bl),若即xi是用户提供的真实症状关键字;若即xi不是用户提供的真实症状关键字;
当查询节点是叶子节点时,直接加入候选集并进行回溯;最终,递归搜索完整棵加密索引树E(T),返回候选数据集
1)验证阶段
Step1:云服务器S1先根据SHE加密方案的同态性质计算然后,与云服务器S2协同运行以下SHE符号计算协议,由S2返回给S1,记当m>0时,sign(m)=1,否则sign(m)=-1;
SHE符号计算协议假定S1拥有密文E(m)和E(-1),S2拥有SHE对称密钥sk:Step a:S1随机选择两个整数满足r1>r2>0,并算接着S1将E(r1m-r2)发送给S2;
Step b:得到E(r1m-r2)后,S2利用SHE对称密钥解密得到:若则有否则由此可根据r1m-r2的正负来得到原明文m的正负(因为r1>r2>0);
现假设用E(si)来表示若即d(ai,q)≤τ,则E(si)=E(-1),否则E(si)=E(1);
证明:
Step2:S1得到E(si)后,计算E(si*idi)=E(si)*E(idi);
Step3:S1随机选择两个随机数满足ri,1>ri,2,然后计算如下两个密文:随后,S1将这两个密文发送给S2。
6.如权利要求1所述的一种智慧医疗中面向关键字的隐私保护相似性查询方法,其特征在于数据解密模块的具体操作为:Step1:S2收到上一模块由S1计算并发送的两个密文后,首先用密钥sk解密得到x并得到sign(x),然后,S2可以根据sign(x)进一步得到sign(si*idi),当sign(si*idi)=-1时,由于E(si)=E(-1)成立,进一步由于相应的idi需要作为结果返回给用户;
Step2:得到{AESssk(ri,1||ri,2),x}后,查询用户通过会话密钥ssk解密得到ri,1和ri,2,并最终计算得到以此服务器返回所有的满足查询请求的结果集给用户,即: