CN108256348B - 一种密文搜索结果验证方法及其系统 - Google Patents
一种密文搜索结果验证方法及其系统 Download PDFInfo
- Publication number
- CN108256348B CN108256348B CN201711242788.7A CN201711242788A CN108256348B CN 108256348 B CN108256348 B CN 108256348B CN 201711242788 A CN201711242788 A CN 201711242788A CN 108256348 B CN108256348 B CN 108256348B
- Authority
- CN
- China
- Prior art keywords
- user
- search result
- verification information
- verification
- mht
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
- H04L63/0442—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Bioethics (AREA)
- Computing Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Data Mining & Analysis (AREA)
- Medical Informatics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本发明适用于在移动医疗网络中支持搜索结果验证的密文搜索领域,提供了一种密文搜索结果验证方法及其系统,该方法包括:系统初始化步骤:根据输入的系统安全参数生成系统的公钥和私钥;索引生成和验证信息生成步骤:利用公钥加密算法对从健康记录提取的关键字建立索引,利用可逆的布隆查找表和Merkle哈希树生成验证信息;生成陷门步骤:根据输入的私钥和待搜索关键字生成陷门TD;搜索匹配步骤:根据陷门TD并利用搜索算法搜索匹配的健康记录;搜索结果验证步骤:根据验证信息检查搜索结果的完整性。
Description
技术领域
本发明属于数据处理领域,尤其涉及在移动医疗网络中支持搜索结果验证的密文搜索领域。
背景技术
基于物联网、云计算、可穿戴技术的快速发展,由可穿戴设备、接入设备、云服务器所组成的移动医疗网络逐渐形成,将极大地提升现有的医疗水平与效率。可穿戴设备附着在人体将采集用户的健康数据,包括血压、心率等,健康数据通过接入设备上传到云服务器,医生等通过云服务器搜索或下载用户健康数据,进而实时监控到用户的健康状况。
然而,由于健康数据属于用户隐私,云服务器也是不完全可信的,任何健康数据的泄露将影响到用户财产甚至生命状况。数据加密是保障用户隐私的最直接方式之一,但与此同时健康数据的灵活性受到影响,因此,医生如何对加密数据进行高效的搜索操作一直是业界亟需解决的问题。
发明内容
本发明所要解决的技术问题为提高对加密数据进行搜索操作的效率,既保证用户健康数据的隐私,又能对用户健康数据进行高效处理。
为解决上述技术问题,本发明是这样实现的,一种密文搜索结果验证方法,其中,所述方法包括:
系统初始化步骤:根据输入的系统安全参数κ生成系统的公钥PK和私钥SK;
索引生成和验证信息生成步骤:利用公钥加密算法对从健康记录提取的关键字建立索引,利用可逆的布隆查找表和Merkle哈希树生成验证信息;
生成陷门步骤:根据输入的所述私钥SK和待搜索关键字生成陷门TD;
搜索匹配步骤:根据所述陷门TD并利用搜索算法搜索匹配的健康记录;
搜索结果验证步骤:根据验证信息检查搜索结果的完整性。
优选的,所述系统初始化步骤包括:
输入系统安全参数κ,选择一个阶为素数p、生成元为g的双线性群G0,其中,e:G0×G0→GT表示双线性映射;
定义两个哈希函数H1:{0,1}*→G0和H2:GT→{0,1}p;
随机选择α∈Zp *,计算A=gα;
生成系统的公钥PK={G0,H1,H2,g,A=gα}和私钥SK={α}。
优选的,所述索引生成和验证信息生成步骤包括:
在将l个用户健康记录D={d1,…,dl}上传到医疗健康服务器之前,向每个记录dj分配一个标识符idj(j=1,…,l),并从D中提取t个关键字W={w1,…,wt},然后使用对称加密算法对上传的用户健康记录进行加密,加密的健康记录表示为C={c1,…,cl},其中ci是di的密文,i=1,…,l,令表示与关键词wj相关联的标识符集,CD(wj)表示与存储在D(wj)中的标识符相关的密文,对于每个关键字wj∈W,数据属主将D(wj)添加到对应于wj的密文的桶bj;
构造可逆的布隆查找表(IBLT)和Merkle哈希树(MHT)以实现搜索结果的可验证性,定义以下抗碰撞的哈希函数:(1)h0:{0,1}*→[1,l]将任何用二进制表示的关键字映射到[1,l];(2)h1,…,hk:[1,l]→[1,m]将[1,l]中的任一整数映射到IBLT中的k个不同区域,其中m是IBLT的长度;(3)h:[1,l]→[1,l2];(4)h′:{0,1*}→{0,1}256,另外,IBLT将(x,y)映射到其单元格上,这些单元格包括以下四个域,这些域都被初始化为0:
·count域,用于对映射到该单元格的条目数进行计数;
·keySum域,存储映射到该单元格的x的总和;
·valueSum域,存储映射到该单元格的y的总和;
·hashvalueSum域,用于存储映射到该单元格的所有h(y)之和;
其中,count域也称为计数布隆滤波器(CBF);
该步骤包括两个子算法:索引生成子算法IndGen和验证信息生成子算法VerInfGen:
IndGen(PK,W)→CI,索引生成算法将公钥PK和关键字集合W={w1,…,wt}作为输入,对每个关键字wi,随机选择si∈Zp,计算和其中,i=1,2,…,t,输出索引密文CI={C′i,Ci}i=1,2,…,t。
VerInfGen(PK,W)→VI,验证信息生成算法将公钥PK和关键字集合W={w1,…,wt}作为输入;
对于每个wi,计算ζi=h0(wi),并将所有(ζi,idj)(idj∈D(wi))对插入IBLT,其中i=1,…,t,为每个wi计算,其中υ是CD(wi)中加密的健康记录的数量;以及i=1,…,t,所有的mi(i=1,…,t)被视为叶子节点来创建MHT,MHT的根表示为mR;
然后通过运行BLS短签名算法对mR进行签名,选择随机数τ∈Zp并计算φ=gτ,然后生成MHT签名σMHT为σMHT=H1(mR)τ;
最后生成的验证信息VI为
VI={CBF,m1,m2,…,mt,φ,σMHT};
并将所述验证信息VI与索引密文CI一起发送给医疗保健服务器,同时,将IBLT发送到仲裁中心。
优选的,所述生成陷门步骤包括:
优选的,所述搜索匹配步骤包括:
以索引密文CI、验证信息VI和所述陷门TD作为输入以检验等式H2(e(TD,C′i))=Ci(i=1,2,…,t)是否成立;
若成立,则搜索到与所述陷门TD相匹配的桶bi以及相应的用户健康记录CD(wi),并返回搜索结果{bi,CD(wi)}以及验证信息{φ,CBF,σMHT}给用户;
若不成立,则没有找到匹配的健康记录,仅返回验证信息{φ,CBF}给用户。
优选的,所述搜索结果验证步骤包括:
当搜索结果为空集合时,返回验证信息{φ,CBF}给用户作为证明,用户使用CBF验证搜索结果的完全性;检查是否存在至少一个等式如果是,则验证过程终止并输出0;否则,用户向仲裁中心发送由仲裁中心决定是否属于IBLT,如果IBLT中没有包含仲裁中心返回null,否则发送(count,valueSum,hashvalueSum)给用户;
当搜索结果不为空集合时,首先检查搜索结果的完全性以确保所有匹配的用户健康记录已被返回,计算并检查所有相应位置的最小计数是否等于返回的个数;如果是,则验证搜索结果的正确性,其中,首先,用户检查等式是否成立,如果没有,则该过程终止,否则使用的哈希链生成mR,然后,计算e(σMHT,g)=e(H1(mR),φ)以检查mR的正确性,从而验证了搜索结果的正确性;
如果相应位置的最低计数不等于返回的个数,则需要仲裁中心的介入,用户向仲裁中心发送仲裁中心返回(count,valueSum,hashvalueSum)给用户,用户检查返回的个数是否等于count,返回的标识符的总和是否等于valueSum,返回的标识符的哈希值的和是否等于hashvalueSum,如果等于,那么医疗健康服务器返回正确的结果。
本发明还提供了一种密文搜索结果验证系统,其中,所述系统包括:
系统初始化模块,用于根据输入的系统安全参数κ生成系统的公钥PK和私钥SK;
索引生成和验证信息生成模块,利用公钥加密算法对从健康记录提取的关键字建立索引,利用可逆的布隆查找表和Merkle哈希树生成验证信息;
生成陷门模块,用于根据输入的所述私钥SK和待搜索关键字生成陷门TD;
搜索匹配模块,用于根据所述陷门TD并利用搜索算法搜索匹配的健康记录;
搜索结果验证模块,用于根据验证信息检查搜索结果的完整性。
优选的,所述系统初始化模块具体用于:
输入系统安全参数κ,并选择一个阶为素数p、生成元为g的双线性群G0,其中,e:G0×G0→GT表示双线性映射;
定义两个哈希函数H1:{0,1}*→G0和H2:GT→{0,1}p;
生成系统的公钥PK={G0,H1,H2,g,A=gα}和私钥SK={α}。
优选的,所述索引生成和验证信息生成模块具体用于:
在将l个用户健康记录D={d1,…,dl}上传到医疗健康服务器之前,向每个记录dj分配一个标识符idj(j=1,…,l),并从D中提取t个关键字W={w1,…,wt},然后使用对称加密算法对上传的用户健康记录进行加密,加密的健康记录表示为C={c1,…,cl},其中ci是di的密文,i=1,…,l,令表示与关键词wj相关联的标识符集,CD(wj)表示与存储在D(wj)中的标识符相关的密文,对于每个关键字wj∈W,数据属主将D(wj)添加到对应于wj的密文的桶bj;
构造可逆的布隆查找表(IBLT)和Merkle哈希树(MHT)以实现搜索结果的可验证性,定义以下抗碰撞的哈希函数:(1)h0:{0,1}*→[1,l]将任何用二进制表示的关键字映射到[1,l];(2)h1,…,hk:[1,l]→[1,m]将[1,l]中的任一整数映射到IBLT中的k个不同区域,其中m是IBLT的长度;(3)h:[1,l]→[1,l2];(4)h′:{0,1*}→{0,1}256,另外,IBLT将(x,y)映射到其单元格上,这些单元格包括以下四个域,这些域都被初始化为0:
·count域,用于对映射到该单元格的条目数进行计数;
·keySum域,存储映射到该单元格的x的总和;
·valueSum域,存储映射到该单元格的y的总和;
·hashvalueSum域,用于存储映射到该单元格的所有h(y)之和;
其中,count域也称为计数布隆滤波器(CBF);
该步骤包括两个子算法:索引生成子算法IndGen和验证信息生成子算法VerInfGen:
IndGen(PK,W)→CI,索引生成算法将公钥PK和关键字集合W={w1,…,wt}作为输入,对每个关键字wi,随机选择si∈Zp,计算和其中,i=1,2,…,t,输出索引密文CI={C′i,Ci}i=1,2,…,t;
VerInfGen(PK,W)→VI,验证信息生成算法将公钥PK和关键字集合W={w1,…,wt}作为输入;
对于每个wi,计算ζi=h0(wi),并将所有(ζi,idj)(idj∈D(wi))对插入IBLT,其中i=1,…,t,为每个wi计算,其中υ是CD(wi)中加密的健康记录的数量;以及i=1,…,t,所有的mi(i=1,…,t)被视为叶子节点来创建MHT,MHT的根表示为mR;
然后通过运行BLS短签名算法对mR进行签名,选择随机数τ∈Zp并计算φ=gτ,然后生成MHT签名σMHT为σMHT=H1(mR)τ;
最后生成的验证信息VI为
VI={CBF,m1,m2,…,mt,φ,σMHT};
并将所述验证信息VI与索引密文CI一起发送给医疗保健服务器,同时,将IBLT发送到仲裁中心。
优选的,所述生成陷门模块具体用于:
优选的,所述搜索匹配模块具体用于:
以索引密文CI、验证信息VI和所述陷门TD作为输入以检验等式H2(e(TD,C′i))=Ci(i=1,2,…,t)是否成立;
若成立,则搜索到与所述陷门TD相匹配的桶bi以及相应的用户健康记录CD(wi),并返回搜索结果{bi,CD(wi)}以及验证信息{φ,CBF,σMHT}给用户;
若不成立,则没有找到匹配的用户健康记录,并仅返回验证信息{φ,CBF}给用户。
优选的,所述搜索结果验证模块具体用于:
当搜索结果为空集合时,返回验证信息{φ,CBF}给用户作为证明,用户使用CBF验证搜索结果的完全性;检查是否存在至少一个等式如果是,则验证过程终止并输出0;否则,用户向仲裁中心发送由仲裁中心决定是否属于IBLT,如果IBLT中没有包含仲裁中心返回null,否则发送(count,valueSum,hashvalueSum)给用户;
当搜索结果不为空集合时,首先检查搜索结果的完全性以确保所有匹配的用户健康记录已被返回,计算并检查所有相应位置的最小计数是否等于返回的个数;如果是,则验证搜索结果的正确性,其中,首先,用户检查等式是否成立,如果没有,则该过程终止,否则使用的哈希链生成mR,然后,计算e(σMHT,g)=e(H1(mR),φ)以检查mR的正确性,从而验证了搜索结果的正确性;
如果相应位置的最低计数不等于返回的个数,则需要仲裁中心的介入,用户向仲裁中心发送仲裁中心返回(count,valueSum,hashvalueSum)给用户,用户检查返回的个数是否等于count,返回的标识符的总和是否等于valueSum,返回的标识符的哈希值的和是否等于hashvalueSum,如果等于,那么医疗健康服务器返回正确的结果。
本发明与现有技术相比,有益效果在于:本发明的技术方案支持搜索结果验证,能对搜索结果的完全性与正确性进行验证,本发明的技术方案既保证用户健康数据的隐私,又能对用户健康数据进行高效处理。
附图说明
图1是本发明实施例提供的密文搜索结果验证方法流程图;
图2是本发明实施例提供的密文搜索结果验证系统结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参阅图1,为本发明实施例提供的密文搜索结果验证方法流程图。
在步骤S1中,系统初始化步骤:根据输入的系统安全参数κ生成系统的公钥PK和私钥SK。
在本实施例中,令e:G0×G0→GT表示一个双线性映射,其中G0是素数p、生成元为g的双线性群,设H1:{0,1}*→G0和H2:GT→{0,1}p表示两个抗碰撞的哈希函数。
在本实施例中,所述系统初始化步骤S1为Setup(1κ)→(PK,SK).,具体包括:
输入系统安全参数κ,选择一个阶为素数p、生成元为g的双线性群G0,其中,e:G0×G0→GT表示双线性映射;定义两个哈希函数H1:{0,1}*→G0和H2:GT→{0,1}p。
生成系统的公钥PK={G0,H1,H2,g,A=gα}和私钥SK={α}。
在步骤S2中,索引生成和验证信息生成步骤:利用公钥加密算法对从健康记录提取的关键字建立索引,利用可逆的布隆查找表和Merkle哈希树生成验证信息。
在本实施例中,所述索引生成和验证信息生成步骤S2包括:
数据属主要上传l个用户健康记录D={d1,…,dl}并存储到医疗健康服务器上,在上传这些记录之前,数据所有者向每个记录dj分配一个标识符idj(j=1,…,l),并从D中提取t个关键字W={w1,…,wt},然后使用对称加密算法(例如AES算法)对上传的用户健康记录进行加密。其中,用户健康记录的数量远远大于关键字的数量,即l>>t。加密的用户健康记录表示为C={c1,…,cl},其中ci是di的密文,i=1,…,l,令D(wj)表示与关键字wj相关联的标识符集,CD(wj)表示与存储在D(wj)中的标识符相关的密文,例如,如果D(wj)={id1,id2},则CD(wj)={c1,c2},对于每个关键字wj∈W,数据属主将D(wj)添加到对应于wj的密文的桶bj。
此外,需要构造可逆的布隆查找表(IBLT)和Merkle哈希树(MHT)以实现搜索结果的可验证性。为了做到这一点,需要以下抗碰撞的哈希函数:(1)h0:{0,1}*→[1,l]将任何用二进制表示的关键字映射到[1,l];(2)h1,…,hk:[1,l]→[1,m]将[1,l]中的任一整数映射到IBLT中的k个不同区域,其中m是IBLT的长度;(3)h:[1,l]→[1,l2];(4)h′:{0,1*}→{0,1}256。另外,IBLT将(x,y)映射到其单元格上,这些单元格包括以下四个域,这些域都被初始化为0:
·count域,用于对映射到该单元格的条目数进行计数;
·keySum域,存储映射到该单元格的x的总和;
·valueSum域,存储映射到该单元格的y的总和;
·hashvalueSum域,用于存储映射到该单元格的所有H(y)之和。
其中,count域也称为计数布隆滤波器(CBF)。
在本实施例中,以下加密算法包括两个子算法:索引生成子算法IndGen和验证信息生成子算法VerInfGen。
IndGen(PK,T,W)→CI。索引生成算法将公钥PK和关键字集合W={w1,…,wt}作为输入。对每个关键字wi,随机选择si∈Zp,计算和其中,i=1,2,…,t。输出索引密文CI={C′i,Ci}i=1,2,…,t。
VerInfGen(PK,W)→VI。验证信息生成算法将公钥PK和关键字集合W={w1,…,wt}作为输入。
对于每个wi,计算ζi=h0(wi),并根据以下表一中的算法1将所有(ζi,idj)(idj∈D(wi))对插入IBLT,其中i=1,…,t。为每个wi计算 υ是CD(wi)中加密的健康记录的数量;以及i=1,…,t。所有的mi(i=1,…,t)被视为叶子节点来创建MHT,MHT的根表示为mR。
然后,通过运行BLS短签名算法对mR进行签名,选择随机数τ∈Zp并计算φ=gτ,然后生成MHT签名σMHT为σMHT=H2(mR)τ。
最后,生成的验证信息VI为VI={CBF,m1,m2,…,mt,φ,σMHT}并将其与索引密文CI一起发送给医疗健康服务器,同时,将IBLT发送到仲裁中心。
表一
算法1: |
输入:(x,y) |
输出:IBLT |
对于i=1,…,k |
T[h<sub>i</sub>(x)].count+1 |
T[h<sub>i</sub>(x)].keySum+x |
T[h<sub>i</sub>(x)].valueSum+y |
T[h<sub>i</sub>(x)].hashvalueSum+h(y) |
结束 |
最后,用户向医疗健康服务器提交TD。
在步骤S4中,搜索匹配步骤:根据所述陷门TD并利用搜索算法搜索匹配的健康记录。
在本实施例中,接收到用户的陷门TD后,医疗健康服务器执行以下算法来搜索匹配的健康记录。所述搜索匹配步骤S4为Search(CI,VI,TD)→Search result,具体包括:
以索引密文CI、验证信息VI和所述陷门TD作为输入以检验等式H2(e(TD,C′i))=Ci(i=1,2,…,t)是否成立;
若成立,则说明医疗健康服务器搜索到与陷门相匹配的桶bi以及相应的健康记录CD(wi),并返回搜索结果{bi,CD(wi)}以及验证信息{φ,CBF,σMHT}给用户;
若不成立,则意味着没有找到匹配的健康记录,医疗健康服务器仅返回验证信息{φ,CBF}给用户。
在步骤S5中,搜索结果验证步骤:根据验证信息检查搜索结果的完整性。
在本实施例中,所述搜索结果验证步骤S5包括:
当搜索结果为空集合时,返回验证信息{φ,CBF}给用户作为证明,用户使用CBF验证搜索结果的完全性;检查是否存在至少一个等式如果是,则验证过程终止并输出0;否则,用户向仲裁中心发送根据算法2,仲裁中心可以决定是否属于IBLT。如果IBLT中没有包含,仲裁中心返回null。否则,发送(count,valueSum,hashvalueSum)给用户。
当搜索结果不为空集合时,首先检查搜索结果的完全性以确保所有匹配的用户健康记录已被返回,计算并检查所有相应位置的最小计数是否等于返回的个数,如果是,则验证搜索结果的正确性。首先,用户检查等式是否成立;如果没有,则该过程终止。否则,可以应用从MHT中目标叶子节点到其根节点的路径上获得的兄弟节点重新生成mR。也就是说,用户可以使用的哈希链生成mR。然后,计算e(σMHT,g)=e(H1(mR),φ)以检查mR的正确性,从而验证了搜索结果的正确性。
如果相应位置的最低计数不等于返回的个数,则需要仲裁中心的介入。用户向仲裁中心发送仲裁中心运行算法2并返回(count,valueSum,hashvalueSum)给用户。用户检查返回的个数是否等于count,返回的标识符的总和是否等于valueSum,返回的标识符的哈希值的和是否等于hashvalueSum。如果是这样,那么医疗健康服务器返回正确的结果。
在本实施例中,用户根据验证信息检查搜索结果的完整性。该过程包括以下两种情况:
情况1:当搜索结果为空集合时,则医疗健康服务器声称没有与提交的陷门匹配的健康记录,并返回验证信息{φ,CBF}给用户作为证明。用户使用CBF验证搜索结果的完全性。检查是否存在至少一个等式如果是,则验证过程终止并输出0;否则,用户向仲裁中心发送根据以下表二中的算法2,仲裁中心可以决定是否属于IBLT。如果IBLT中没有包含仲裁中心返回null。否则发送(count,valueSum,hashvalueSum)给用户。
情况2:当搜索结果不为空时,用户首先检查结果的完全性,以确保所有匹配的健康记录已被返回。用户计算并检查所有相应位置的最小计数是否等于返回的个数。如果是,用户则验证搜索结果的正确性。首先,用户检查等式是否成立;如果没有,则该过程终止。否则,可以应用从MHT中目标叶子节点到其根节点的路径上获得的兄弟节点重新生成mR。也就是说,用户可以使用的哈希链生成mR。然后,计算e(σMHT,g)=e(H1(mR),φ)以检查mR的正确性,从而验证了搜索结果的正确性。
如果相应位置的最低计数不等于返回的个数,则需要仲裁中心的介入。用户向仲裁中心发送仲裁中心运行以下表二中的算法2并返回(count,valueSum,hashvalueSum)给用户。用户检查返回的个数是否等于count,返回的标识符的总和是否等于valueSum,返回的标识符的哈希值的和是否等于hashvalueSum。如果是这样,那么医疗健康服务器返回正确的结果。
表二
本发明提供的一种密文搜索结果验证方法,支持搜索结果验证,能对搜索结果的完全性与正确性进行验证,既保证用户健康数据的隐私,又能对用户健康数据进行高效处理。
请参阅图2,为本发明实施例提供的密文搜索结果验证系统结构示意图。
在本实施例中,密文搜索结果验证系统10具体包括系统初始化模块11、索引生成和验证信息生成12、生成陷门模块13、搜索匹配模块14、搜索结果验证模块15。
系统初始化模块11,用于根据输入的系统安全参数κ生成系统的公钥PK和私钥SK。
在本实施例中,所述系统初始化模块11具体用于:
输入系统安全参数κ,选择一个阶为素数p、生成元为g的双线性群G0,其中,e:G0×G0→GT表示双线性映射;定义两个哈希函数H1:{0,1}*→G0和H2:GT→{0,1}p;
生成系统的公钥PK={G0,H1,H2,g,A=gα}和私钥SK={α}。
索引生成和验证信息生成模块12,利用公钥加密算法对从健康记录提取的关键字建立索引,利用可逆的布隆查找表和Merkle哈希树生成验证信息。
在本实施例中,所述索引生成和验证信息生成模块12具体用于:
在将l个用户健康记录D={d1,…,dl}上传到医疗健康服务器之前,向每个记录dj分配一个标识符idj(j=1,…,l),并从D中提取t个关键字W={w1,…,wt},然后使用对称加密算法对上传的用户健康记录进行加密。加密的健康记录表示为C={c1,…,cl},其中ci是di的密文,i=1,…,l。令表示与关键词wj相关联的标识符集,CD(wj)表示与存储在D(wj)中的标识符相关的密文。对于每个关键字wj∈W,数据属主将D(wj)添加到对应于wj的密文的桶bj。
需要构造可逆的布隆查找表(IBLT)和Merkle哈希树(MHT)以实现搜索结果的可验证性。为了做到这一点,需定义以下抗碰撞的哈希函数:(1)h0:{0,1}*→[1,l]将任何用二进制表示的关键字映射到[1,l];(2)h1,…,hk:[1,l]→[1,m]将[1,l]中的任一整数映射到IBLT中的k个不同区域,其中m是IBLT的长度;(3)h:[1,l]→[1,l2];(4)h′:{0,1*}→{0,1}256。另外,IBLT将(x,y)映射到其单元格上,这些单元格包括以下四个域,这些域都被初始化为0:
·count域,用于对映射到该单元格的条目数进行计数。
·keySum域,存储映射到该单元格的x的总和。
·valueSum域,存储映射到该单元格的y的总和。
·hashvalueSum域,用于存储映射到该单元格的所有h(y)之和。
其中,count域也称为计数布隆滤波器(CBF)。
此步骤包括两个子算法:索引生成子算法IndGen和验证信息生成子算法VerInfGen。
IndGen(PK,W)→CI。索引生成算法将公钥PK和关键字集合W={w1,…,wt}作为输入。对每个关键字wi,随机选择si∈Zp,计算和其中,i=1,2,…,t。输出索引密文CI={C′i,Ci}i=1,2,…,t。
VerInfGen(PK,W)→VI。验证信息生成算法将公钥PK和关键字集合W={w1,…,wt}作为输入。
对于每个wi,计算ζi=h0(wi),并根据算法1将所有(ζi,idj)(idj∈D(wi))对插入IBLT,其中i=1,…,t。为每个wi计算其中υ是CD(wi)中加密的健康记录的数量;以及i=1,…,t。所有的mi(i=1,…,t)被视为叶子节点来创建MHT,MHT的根表示为mR。
然后,通过运行BLS短签名算法对mR进行签名,选择随机数τ∈Zp并计算φ=gτ,然后生成MHT签名σMHT为σMHT=H1(mR)τ。
最后,生成的验证信息VI为
VI={CBF,m1,m2,…,mt,φ,σMHT}
并将其与索引密文CI一起发送给医疗保健服务器,同时,将IBLT发送到仲裁中心。
在本实施例中,所述生成陷门模块13具体用于:
搜索匹配模块14,用于根据所述陷门TD并利用搜索算法搜索匹配的健康记录。
在本实施例中,所述搜索匹配模块14具体用于:
以索引密文CI、验证信息VI和所述陷门TD作为输入以检验等式H2(e(TD,C′i))=Ci(i=1,2,…,t)是否成立;
若成立,则搜索到与所述陷门TD相匹配的桶bi以及相应的用户健康记录CD(wi),并返回搜索结果{bi,CD(wi)}以及验证信息{φ,CBF,σMHT}给用户;
若不成立,则没有找到匹配的用户健康记录,并仅返回验证信息{φ,CBF}给用户。
搜索结果验证模块15,用于根据验证信息检查搜索结果的完整性。
在本实施例中,所述搜索结果验证模块15具体用于:
当搜索结果为空集合时,返回验证信息{φ,CBF}给用户作为证明,用户使用CBF验证搜索结果的完全性;检查是否存在至少一个等式如果是,则验证过程终止并输出0;否则,用户向仲裁中心发送根据算法2,仲裁中心可以决定是否属于IBLT。如果IBLT中没有包含仲裁中心返回null。否则,发送(count,valueSum,hashvalueSum)给用户。
当搜索结果不为空集合时,首先检查搜索结果的完全性以确保所有匹配的用户健康记录已被返回,计算并检查所有相应位置的最小计数是否等于返回的个数,如果是,则验证搜索结果的正确性。首先,用户检查等式是否成立;如果没有,则该过程终止。否则,可以应用从MHT中目标叶子节点到其根节点的路径上获得的兄弟节点重新生成mR。也就是说,用户可以使用的哈希链生成mR。然后,计算e(σMHT,g)=e(H1(mR),φ)以检查mR的正确性,从而验证了搜索结果的正确性。
如果相应位置的最低计数不等于返回的个数,则需要仲裁中心的介入。用户向仲裁中心发送仲裁中心运行算法2并返回(count,valueSum,hashvalueSum)给用户。用户检查返回的个数是否等于count,返回的标识符的总和是否等于valueSum,返回的标识符的哈希值的和是否等于hashvalueSum。如果是这样,那么医疗健康服务器返回正确的结果。
在本实施例中,各个模块中的处理流程分别和前述方法步骤中的步骤一一对应,在此不做重复描述。
本发明提供的一种密文搜索结果验证系统10,支持搜索结果验证,能对搜索结果的完全性与正确性进行验证,既保证用户健康数据的隐私,又能对用户健康数据进行高效处理。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种密文搜索结果验证方法,其特征在于,所述方法包括:
系统初始化步骤:根据输入的系统安全参数κ生成系统的公钥PK和私钥SK;
所述系统初始化步骤包括:输入系统安全参数κ,选择一个阶为素数p、生成元为g的双线性群G0,其中,e:G0×G0→GT表示双线性映射;
定义两个哈希函数H1:{0,1}*→G0和H2:GT→{0,1}p;
生成系统的公钥PK={G0,H1,H2,g,A=gα}和私钥SK={α};
索引生成和验证信息生成步骤:利用公钥加密算法对从健康记录提取的关键字建立索引,利用可逆的布隆查找表和Merkle哈希树生成验证信息;
所述索引生成和验证信息生成步骤包括:
在将l个用户健康记录D={d1,…,dl}上传到医疗健康服务器之前,向每个记录dj分配一个标识符idj(j=1,…,l),并从D中提取t个关键字W={w1,…,wt},然后使用对称加密算法对上传的用户健康记录进行加密,加密的健康记录表示为C={c1,…,cl},其中ci是di的密文,i=1,…,l,令表示与关键词wj相关联的标识符集,CD(wj)表示与存储在D(wj)中的标识符相关的密文,对于每个关键字wj∈W,数据属主将D(wj)添加到对应于wj的密文的桶bj;
构造可逆的布隆查找表(IBLT)和Merkle哈希树(MHT)以实现搜索结果的可验证性,定义以下抗碰撞的哈希函数:(1)h0:{0,1}*→[1,l]将任何用二进制表示的关键字映射到[1,l];(2)h1,…,hk:[1,l]→[1,m]将[1,l]中的任一整数映射到IBLT中的k个不同区域,其中m是IBLT的长度;(3)h:[1,l]→[1,l2];(4)h′:{0,1*}→{0,1}256,另外,IBLT将(x,y)映射到其单元格上,这些单元格包括以下四个域,这些域都被初始化为0:
·count域,用于对映射到该单元格的条目数进行计数;
·keySum域,存储映射到该单元格的x的总和;
·valueSum域,存储映射到该单元格的y的总和;
·hashvalueSum域,用于存储映射到该单元格的所有h(y)之和;
其中,count域也称为计数布隆滤波器(CBF);
该步骤包括两个子算法:索引生成子算法IndGen和验证信息生成子算法VerInfGen:
IndGen(PK,W)→CI,索引生成算法将公钥PK和关键字集合W={w1,…,wt}作为输入,对每个关键字wi,随机选择si∈Zp,计算和其中,i=1,2,…,t,输出索引密文CI={Ci′,Ci}i=1,2,…,t;
VerInfGen(PK,W)→VI,验证信息生成算法将公钥PK和关键字集合W={w1,…,wt}作为输入;
对于每个wi,计算ζi=h0(wi),并将所有(ζi,idj)(idj∈D(wi))对插入IBLT,其中i=1,…,t,为每个wi计算 其中υ是CD(wi)中加密的健康记录的数量; 以及i=1,…,t,所有的mi(i=1,…,t)被视为叶子节点来创建MHT,MHT的根表示为mR;
然后通过运行BLS短签名算法对mR进行签名,选择随机数τ∈Zp并计算φ=gτ,然后生成MHT签名σMHT为σMHT=H1(mR)τ;
最后生成的验证信息VI为VI={CBF,m1,m2,…,mt,φ,σMHT};
并将所述验证信息VI与索引密文CI一起发送给医疗保健服务器,同时,将IBLT发送到仲裁中心;
生成陷门步骤:根据输入的所述私钥SK和待搜索关键字生成陷门TD;
搜索匹配步骤:根据所述陷门TD并利用搜索算法搜索匹配的健康记录;
搜索结果验证步骤:根据验证信息检查搜索结果的完整性;
当搜索结果不为空集合时,首先检查搜索结果的完全性以确保所有匹配的用户健康记录已被返回,计算 并检查所有相应位置的最小计数是否等于返回的个数;如果是,则验证搜索结果的正确性,其中,首先,用户检查等式h′是否成立,如果没有,则该过程终止,否则使用的哈希链生成mR,然后,计算e(σMHT,g)=e(H1(mR),φ)以检查mR的正确性,从而验证了搜索结果的正确性;
3.如权利要求2所述的密文搜索结果验证方法,其特征在于,所述搜索匹配步骤包括:
以索引密文CI、验证信息VI和所述陷门TD作为输入以检验等式H2(e(TD,Ci′))=Ci(i=1,2,…,t)是否成立;
若成立,则搜索到与所述陷门TD相匹配的桶bi以及相应的用户健康记录CD(wi),并返回搜索结果{bi,CD(wi)}以及验证信息{φ,CBF,σMHT}给用户;
若不成立,则没有找到匹配的健康记录,仅返回验证信息{φ,CBF}给用户。
5.一种密文搜索结果验证系统,其特征在于,所述系统包括:
系统初始化模块,用于根据输入的系统安全参数κ生成系统的公钥PK和私钥SK;
所述系统初始化模块具体用于:输入系统安全参数κ,选择一个阶为素数p、生成元为g的双线性群G0,其中,e:G0×G0→GT表示双线性映射;
定义两个哈希函数H1:{0,1}*→G0和H2:GT→{0,1}p;
生成系统的公钥PK={G0,H1,H2,g,A=gα}和私钥SK={α};
索引生成和验证信息生成模块,利用公钥加密算法对从健康记录提取的关键字建立索引,利用可逆的布隆查找表和Merkle哈希树生成验证信息;
所述索引生成和验证信息生成模块具体用于:
在将l个用户健康记录D={d1,…,dl}上传到医疗健康服务器之前,向每个记录dj分配一个标识符idj(j=1,…,l),并从D中提取t个关键字W={w1,…,wt},然后使用对称加密算法对上传的用户健康记录进行加密,加密的健康记录表示为C={c1,…,cl},其中ci是di的密文,i=1,…,l,令表示与关键词wj相关联的标识符集,CD(wj)表示与存储在D(wj)中的标识符相关的密文,对于每个关键字wj∈W,数据属主将D(wj)添加到对应于wj的密文的桶bj;
构造可逆的布隆查找表(IBLT)和Merkle哈希树(MHT)以实现搜索结果的可验证性,定义以下抗碰撞的哈希函数:(1)h0:{0,1}*→[1,l]将任何用二进制表示的关键字映射到[1,l];(2)h1,…,hk:[1,l]→[1,m]将[1,l]中的任一整数映射到IBLT中的k个不同区域,其中m是IBLT的长度;(3)h:[1,l]→[1,l2];(4)h′:{0,1*}→{0,1}256,另外,IBLT将(x,y)映射到其单元格上,这些单元格包括以下四个域,这些域都被初始化为0:
·count域,用于对映射到该单元格的条目数进行计数;
·keySum域,存储映射到该单元格的x的总和;
·valueSum域,存储映射到该单元格的y的总和;
·hashvalueSum域,用于存储映射到该单元格的所有h(y)之和;
其中,count域也称为计数布隆滤波器(CBF);
所述索引生成与验证信息模块包括两个子算法:索引生成子算法IndGen和验证信息生成子算法VerInfGen:
IndGen(PK,W)→CI,索引生成算法将公钥PK和关键字集合W={w1,…,wt}作为输入,对每个关键字wi,随机选择si∈Zp,计算 和其中,i=1,2,…,t,输出索引密文CI={Ci′,Ci}i=1,2,…,t;
VerInfGen(PK,W)→VI,验证信息生成算法将公钥PK和关键字集合W={w1,…,wt}作为输入;
对于每个wi,计算ζi=h0(wi),并将所有(ζi,idj)(idj∈D(wi))对插入IBLT,其中i=1,…,t,为每个wi计算 其中υ是CD(wi)中加密的健康记录的数量; 以及i=1,…,t,所有的mi(i=1,…,t)被视为叶子节点来创建MHT,MHT的根表示为mR;
然后通过运行BLS短签名算法对mR进行签名,选择随机数τ∈Zp并计算φ=gτ,然后生成MHT签名σMHT为σMHT=H1(mR)τ;
最后生成的验证信息VI为VI={CBF,m1,m2,…,mt,φ,σMHT};
并将所述验证信息VI与索引密文CI一起发送给医疗保健服务器,同时,将IBLT发送到仲裁中心;
生成陷门模块,用于根据输入的所述私钥SK和待搜索关键字生成陷门TD;
搜索匹配模块,用于根据所述陷门TD并利用搜索算法搜索匹配的健康记录;
搜索结果验证模块,用于根据验证信息检查搜索结果的完整性;
当搜索结果不为空集合时,首先检查搜索结果的完全性以确保所有匹配的用户健康记录已被返回,计算 并检查所有相应位置的最小计数是否等于返回的个数;如果是,则验证搜索结果的正确性,其中,首先,用户检查等式 是否成立,如果没有,则该过程终止,否则使用的哈希链生成mR,然后,计算e(σMHT,g)=e(H1(mR),φ)以检查mR的正确性,从而验证了搜索结果的正确性;
7.如权利要求6所述的密文搜索结果验证系统,其特征在于,所述搜索匹配模块具体用于:
以索引密文CI、验证信息VI和所述陷门TD作为输入以检验等式H2(e(TD,Ci′))=Ci(i=1,2,…,t)是否成立;
若成立,则搜索到与所述陷门TD相匹配的桶bi以及相应的用户健康记录CD(wi),并返回搜索结果{bi,CD(wi)}以及验证信息{φ,CBF,σMHT}给用户;
若不成立,则没有找到匹配的健康记录,仅返回验证信息{φ,CBF}给用户。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711242788.7A CN108256348B (zh) | 2017-11-30 | 2017-11-30 | 一种密文搜索结果验证方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711242788.7A CN108256348B (zh) | 2017-11-30 | 2017-11-30 | 一种密文搜索结果验证方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108256348A CN108256348A (zh) | 2018-07-06 |
CN108256348B true CN108256348B (zh) | 2021-08-20 |
Family
ID=62721648
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711242788.7A Active CN108256348B (zh) | 2017-11-30 | 2017-11-30 | 一种密文搜索结果验证方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108256348B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110990857B (zh) * | 2019-12-11 | 2021-04-06 | 支付宝(杭州)信息技术有限公司 | 保护隐私安全的多方联合进行特征评估的方法及装置 |
CN111614470A (zh) * | 2020-05-27 | 2020-09-01 | 贵州大学 | 基于改进Merkle-Tree认证方法的可验证多关键字搜索方法 |
CN115333845B (zh) * | 2022-08-19 | 2024-04-12 | 南京理工大学 | 基于子集的隐私数据验证方法 |
CN116959657B (zh) * | 2023-09-18 | 2023-12-12 | 苏州绿华科技有限公司 | 一种医疗大数据安全管理系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103944711A (zh) * | 2014-02-17 | 2014-07-23 | 国家超级计算深圳中心 | 一种云存储密文检索方法及其系统 |
CN104102714A (zh) * | 2014-07-16 | 2014-10-15 | 上海交通大学 | 基于累加器和布隆过滤器的外包数据查询验证方法及系统 |
CN106815350A (zh) * | 2017-01-19 | 2017-06-09 | 安徽大学 | 一种云环境中动态的密文多关键词模糊搜索方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7925624B2 (en) * | 2006-03-31 | 2011-04-12 | Amazon Technologies, Inc. | System and method for providing high availability data |
-
2017
- 2017-11-30 CN CN201711242788.7A patent/CN108256348B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103944711A (zh) * | 2014-02-17 | 2014-07-23 | 国家超级计算深圳中心 | 一种云存储密文检索方法及其系统 |
CN104102714A (zh) * | 2014-07-16 | 2014-10-15 | 上海交通大学 | 基于累加器和布隆过滤器的外包数据查询验证方法及系统 |
CN106815350A (zh) * | 2017-01-19 | 2017-06-09 | 安徽大学 | 一种云环境中动态的密文多关键词模糊搜索方法 |
Non-Patent Citations (3)
Title |
---|
Straggler identification in round-trip data streams via newton’s identities and invertible bloom filters;EPPSTEIN D,GOODRICH M;《IEEE Transactions on Knowledge and Data Engineering》;20110228;第23卷(第2期);全文 * |
Verifiable Search for Dynamic Outsourced Database in Cloud Computing;Jianfeng Wang et;《2015 10th International Conference on Broadband and Wireless Computing, Communication and Applications》;20151231;全文 * |
云环境下的多用户加密关键字搜索技术研究;李诗旸;《中国优秀硕士学位论文全文数据库信息科技辑》;20151215(第12期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108256348A (zh) | 2018-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108256348B (zh) | 一种密文搜索结果验证方法及其系统 | |
Wu et al. | New certificateless aggregate signature scheme for healthcare multimedia social network on cloud environment | |
US20230109352A1 (en) | Node group-based data processing method and system, device, and medium | |
Mao et al. | A position-aware Merkle tree for dynamic cloud data integrity verification | |
CN108092766A (zh) | 一种密文搜索权限验证方法及其系统 | |
Wei et al. | A redactable blockchain framework for secure federated learning in industrial Internet of Things | |
CN103563288B (zh) | 基于口令的单轮密钥交换协议 | |
CN111107094B (zh) | 轻量级地面向医疗物联网的大数据共享系统 | |
Kang et al. | Certificateless public auditing with privacy preserving for cloud-assisted wireless body area networks | |
CN106789082A (zh) | 基于无线体域网的云存储医疗数据批量自审计方法 | |
CN109117662A (zh) | 基于区块链的电子病历安全搜索方法 | |
CN106487786A (zh) | 一种基于生物特征的云数据完整性验证方法及系统 | |
Qian et al. | Profile matching for IoMT: A verifiable private set intersection scheme | |
Fan et al. | Verifiable attribute-based multi-keyword search over encrypted cloud data in multi-owner setting | |
Fan et al. | Identity-based auditing for shared cloud data with efficient and secure sensitive information hiding | |
Obiri et al. | Personal health records sharing scheme based on attribute based signcryption with data integrity verifiable | |
Arumugam et al. | Federated learning-based privacy preservation with blockchain assistance in IoT 5G heterogeneous networks | |
CN113836571B (zh) | 基于云和区块链的医疗数据拥有终端位置匹配方法及系统 | |
Kim et al. | Privacy-preserving public auditing for shared cloud data with secure group management | |
WO2019104675A1 (zh) | 一种密文搜索结果验证方法及其系统 | |
Han et al. | An efficient lucas sequence-based batch auditing scheme for the internet of medical things | |
Li et al. | Public auditing scheme for cloud-based wireless body area network | |
WO2019104674A1 (zh) | 一种密文搜索权限验证方法及其系统 | |
CN109376890B (zh) | 具有科室匹配功能的预约挂号方法 | |
CN114697019B (zh) | 一种用户账号隐私保护方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |