[发明专利]一种大规模电子医疗系统中的隐私保护相似病历查询方法有效
申请号: | 202110080281.6 | 申请日: | 2021-01-21 |
公开(公告)号: | CN112837770B | 公开(公告)日: | 2022-12-02 |
发明(设计)人: | 徐畅;产子健;祝烈煌;张川 | 申请(专利权)人: | 北京理工大学 |
主分类号: | G16H10/60 | 分类号: | G16H10/60;G06F16/31;G06F16/332;G06F21/60;G06F21/62 |
代理公司: | 北京正阳理工知识产权代理事务所(普通合伙) 11639 | 代理人: | 张利萍 |
地址: | 100081 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 大规模 电子 医疗 系统 中的 隐私 保护 相似 病历 查询 方法 | ||
1.一种大规模电子医疗系统中的隐私保护相似病历查询方法,其特征在于:所依托的隐私保护相似病历查询系统,包括医疗中心、患者及云服务器;医疗中心将加密数据及密钥分别发送给云服务器和患者,患者向云服务器发送加密的查询请求,云服务器查询与患者病况相似的电子病历并发送给患者,具体为:先通过粗粒度查询找到与患者症状关键字组合一致的电子病历集合,之后通过在该集合中执行细粒度查询找到与患者健康数据相似度在一定阈值范围内的电子病历并发送给患者,患者解密查询结果进行参考;
所述隐私保护相似病历查询方法,包括初始化、生成加密数据并存储、生成加密的查询请求并发送、粗粒度查询和细粒度查询,具体包括如下步骤:
步骤1:初始化,具体为:医疗中心生成密钥,并在收到患者的注册信息后将密钥通过安全的通信渠道发送给患者,包括如下子步骤:
步骤1.1:医疗中心随机生成密钥σ;
其中,σ=(sk,Sc,Sf,Mc1,Mc2,Mf1,Mf2);sk是用于加密电子病历的对称密钥,Sc是一个用于拆分的d+1维二进制向量,Sf是一个用于拆分的n+3维二进制向量,Mc1和Mc2是两个用于加密的d+1阶可逆矩阵,Mf1和Mf2是两个用于加密的n+3阶可逆矩阵,d为患者症状关键字组合中允许包含关键字数目的最大值,n为健康数据向量的维度;
步骤1.2:在收到患者的注册信息后,医疗中心通过安全的通信渠道将密钥σ发送给患者;
步骤2:生成加密数据并存储,具体为:医疗中心从电子病历中提取症状关键字及健康数据向量、划分电子病历集合、对电子病历进行脱敏及加密处理,生成加密脱敏后的电子病历,加密症状关键字及健康数据向量,分别得到症状关键字向量的密文以及健康数据向量的密文;基于症状关键字向量的密文构造粗粒度查询树,并将该粗粒度查询树与加密的电子病历、症状关键字向量的密文和健康数据向量的密文一起存储在云服务器中,包括如下子步骤:
步骤2.1:医疗中心从电子病历中提取症状关键字以及健康数据向量;
其中,症状关键字一共t个,位于症状关键字字典中,每个症状关键字为正整数,第i个症状关键字,记为xi,下标i的取值范围为1,2,…,t;症状关键字字典的大小为t;健康数据向量,记为:Aj=(a1,a2,…,an);
其中,下标j为健康数据向量Aj对应的电子病历编号;
步骤2.2:医疗中心根据对应的症状关键字组合将所有电子病历划分为不同的电子病历集合,同一个电子病历集合中的电子病历对应相同的症状关键字组合;
步骤2.3:医疗中心对电子病历进行脱敏处理;
步骤2.4:医疗中心基于AES算法使用对称密钥sk加密脱敏后的电子病历;
步骤2.5:医疗中心使用二进制向量Sc以及可逆矩阵Mc1、Mc2对症状关键字进行加密得到症状关键字向量的密文,具体包括如下子步骤:
步骤2.5.1:对于每一个症状关键字,医疗中心构造对应的症状关键字向量,并生成一个对应的随机数;
其中,症状关键字xi对应的症状关键字向量,记为:生成对应的随机数记为αi;
其中,αi为非0整数;为xi的2次幂,为xi的d次幂;
步骤2.5.2:医疗中心使用二进制向量Sc将每一个症状关键字向量拆分为两个向量;
其中,症状关键字向量Li拆分的两个向量,记为Lia、Lib,具体拆分过程为:对于向量Sc中的第w项Sc[w],当Sc[w]=0时,Li[w]=Lia[w]=Lib[w];当Sc[w]=1时,Li[w]被随机拆分为Lia[w]和Lib[w],且有Li[w]=Lia[w]+Lib[w];w=0,1,…,d;
步骤2.5.3:对于每一个症状关键字向量,医疗中心使用其拆分后的向量、对应的随机数和可逆矩阵Mc1、Mc2得到对应症状关键字向量的密文;
其中,对于症状关键字向量Li,对应症状关键字向量的密文记为:
其中,为向量LiaMc1和向量LibMc2组成的有序对;
步骤2.6:医疗中心使用二进制向量Sf以及可逆矩阵Mf1、Mf2对健康数据向量进行加密得到健康数据向量的密文,具体包括如下子步骤:
步骤2.6.1:对于每一个健康数据向量,医疗中心将其扩展为一个n+3维向量,并生成一个对应的随机数;
其中,健康数据向量Aj扩展后的向量,记为:生成对应的随机数记为βj;
其中,βj为正整数;符号∑为求和符号,为aii的平方;下标ii的取值范围为1,2,…,n;
步骤2.6.2:医疗中心使用二进制向量Sf将扩展后的健康数据向量拆分为两个向量;
其中,向量eAj拆分的两个向量,记为eAja、eAjb,具体拆分过程为:对于向量Sf中的第p项Sf[p],当Sf[p]=0时,eAj[p]=eAja[p]=eAjb[p];当Sf[p]=1时,eAj[p]被随机拆分为eAja[p]和eAjb[p],且有eAj[p]=eAja[p]+eAjb[p];p=0,1,…,n+2;
步骤2.6.3:对于每一个健康数据向量,医疗中心使用其扩展并拆分后的向量、对应的随机数和可逆矩阵Mf1、Mf2得到对应健康数据向量的密文;
其中,对于健康数据向量Aj,对应健康数据向量的密文记为:
其中,为向量eAjaMf1和向量eAjbMf2组成的有序对;
步骤2.7:医疗中心基于症状关键字向量的密文构造一个二叉决策树,即粗粒度查询树;
其中,粗粒度查询树记为T,T是一个满二叉树,共有t+1层;它的第i层非叶子结点均存有症状关键字字典中第i个症状关键字向量的密文,它的叶子结点分别存有一个指向特定电子病历集合的指针;在粗粒度查询中,云服务器使用患者粗粒度查询向量的密文从T的根结点开始匹配,若匹配成功则继续与当前结点的左孩子结点进行匹配,若匹配失败则继续与当前结点的右孩子结点进行匹配,直至访问一个叶子结点,该叶子结点存储的指针指向的电子病历集合对应症状关键字组合与患者症状关键字组合一致;实际构造中,T的第i层非叶子结点需存储随机序号的症状关键字向量的密文;
步骤2.8:医疗中心将粗粒度查询树、加密的电子病历、症状关键字向量的密文和健康数据向量的密文存储在云服务器中;
步骤3:生成加密的查询请求并发送,具体为:患者根据自身症状及健康数据分别得到症状关键字组合和细粒度查询向量,之后随机生成虚假关键字添加到症状关键字组合中,通过该关键字组合构造多项式得到粗粒度查询向量;患者使用密钥加密粗粒度查询向量及细粒度查询向量,分别得到粗粒度查询向量的密文及细粒度查询向量的密文;患者将粗粒度查询向量的密文及细粒度查询向量的密文发送到云服务器,包括如下子步骤:
步骤3.1:假定有一患者u,该患者根据自身症状得到症状关键字组合,之后通过部署便携式传感器收集自身健康数据得到健康数据向量,即细粒度查询向量;
其中,患者u的症状关键字组合记为:患者u的细粒度查询向量记为:Qu=(q1,q2,…,qn);
其中,lu为患者u症状关键字数目,lu≤d;
步骤3.2:患者u随机生成d-lu个虚假症状关键字,之后将这些虚假症状关键字添加到步骤3.1生成的症状关键字组合中得到新的关键字组合;
其中,生成的d-lu个虚假关键字记为:新的关键字组合记为:
其中,虚假症状关键字使用正整数表示,每个虚假症状关键字都不在症状关键字字典中;
步骤3.3:患者u基于步骤3.2生成的关键字组合构造多项式,具体多项式表示如下:
bd(y-X1)(y-X2)…(y-Xd)=b0+b1y+b2y2+…+bdyd (1)
其中,bd为非0整数;
患者u基于式(1)中多项式各项系数构造粗粒度查询向量;
其中,患者u的粗粒度查询向量记为:Bu=(b0,b1,…,bd);
步骤3.4:患者u使用二进制向量Sc以及可逆矩阵Mc1、Mc2对粗粒度查询向量进行加密得到粗粒度查询向量的密文,具体包括如下子步骤:
步骤3.4.1:针对于粗粒度查询向量,患者u生成一个对应的随机数;
其中,对于粗粒度查询向量Bu,对应的随机数记为ru;
其中,ru为非0整数;
步骤3.4.2:患者u使用二进制向量Sc将粗粒度查询向量拆分为两个向量;
其中,粗粒度查询向量Bu拆分的两个向量,记为Bua、Bub,具体拆分过程为:对于向量Sc中的第w项Sc[w],当Sc[w]=0时,Bu[w]被随机拆分为Bua[w]和Bub[w],且有Bu[w]=Bua[w]+Bub[w];当Sc[w]=1时,Bu[w]=Bua[w]=Bub[w];
步骤3.4.3:对于粗粒度查询向量,患者u使用其拆分后的向量、对应的随机数和可逆矩阵Mc1、Mc2得到粗粒度查询向量的密文;
其中,粗粒度查询向量的密文记为:
其中,为向量和向量组成的有序对;
步骤3.5:患者u使用二进制向量Sf以及可逆矩阵Mf1、Mf2对细粒度查询向量进行加密得到细粒度查询向量的密文,具体包括如下子步骤:
步骤3.5.1:对于细粒度查询向量,患者u首先将其扩展为n+3维向量并生成一个对应的随机数;
其中,细粒度查询向量Qu扩展后的向量,记为:
生成对应的随机数记为Ru;
其中,Ru为正整数,θu为患者u设定的相似度阈值;为qii的平方;
步骤3.5.2:患者u使用二进制向量Sf将扩展后的细粒度查询向量拆分为两个向量,具体为:
其中,向量eQu拆分的两个向量,记为eQua、eQub,具体拆分过程为:对于向量Sf中的第p项Sf[p],当Sf[p]=0时,eQu[p]被随机拆分为eQua[p]和eQub[p],且有eQu[p]=eQua[p]+eQub[p];当Sf[p]=1时,eQu[p]=eQua[p]=eQub[p];
步骤3.5.3:对于细粒度查询向量,患者u使用其扩展并拆分后的向量、对应的随机数和可逆矩阵Mf1、Mf2得到细粒度查询向量的密文;
其中,细粒度查询向量的密文记为:
其中,为向量和向量组成的有序对;
步骤3.6:患者u将粗粒度查询向量的密文以及细粒度查询向量的密文发送到云服务器;
步骤4:粗粒度查询,具体为:云服务器使用粗粒度查询向量的密文、粗粒度查询树以及症状关键字向量的密文执行粗粒度查询,从而找到与患者症状关键字组合一致的电子病历集合,包括如下子步骤:
步骤4.1:从粗粒度查询树的根结点开始,云服务器使用粗粒度查询向量的密文与非叶子结点中存储的症状关键字向量的密文进行匹配;假设当前访问非叶子结点所在层次为i,具体匹配过程如下:
其中,符号 表示两个有序对对应位置元素进行内积运算,符号·表示向量内积运算符;若匹配结果为0则说明从而判断出xi属于患者u的症状关键字组合;若匹配结果不为0则说明从而判断出xi不属于患者u的症状关键字组合;
若匹配结果为0则继续访问当前结点的左孩子结点进行匹配,若匹配结果不为0则继续访问当前结点的右孩子结点进行匹配,直至访问一个叶子结点,该叶子结点存储的指针指向与患者u症状关键字组合一致的电子病历集合;
步骤5:细粒度查询,具体为:云服务器在粗粒度查询得到的电子病历集合中执行细粒度查询,从而找到满足患者相似度阈值的电子病历;云服务器将查询结果发送给患者,患者通过密钥解密细粒度查询结果得到明文信息进行参考,包括如下子步骤:
步骤5.1:对于在粗粒度查询得到的电子病历集合中每个电子病历对应的健康数据向量密文,云服务器使用细粒度查询向量的密文进行匹配,具体匹配过程如下:
若匹配结果小于0则说明从而判断出编号为j的电子病历相似度符合患者u设定的阈值;
步骤5.2:云服务器将对应健康数据向量密文匹配结果小于0的加密电子病历发送给患者u;
步骤5.3:患者u使用对称密钥sk解密上述细粒度查询结果进行参考。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京理工大学,未经北京理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110080281.6/1.html,转载请声明来源钻瓜专利网。