CN112416948A - 一种可验证的基因数据外包查询协议及系统 - Google Patents
一种可验证的基因数据外包查询协议及系统 Download PDFInfo
- Publication number
- CN112416948A CN112416948A CN202011473367.7A CN202011473367A CN112416948A CN 112416948 A CN112416948 A CN 112416948A CN 202011473367 A CN202011473367 A CN 202011473367A CN 112416948 A CN112416948 A CN 112416948A
- Authority
- CN
- China
- Prior art keywords
- data
- query
- cloud server
- sha
- genetic
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- 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
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16B—BIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
- G16B20/00—ICT specially adapted for functional genomics or proteomics, e.g. genotype-phenotype associations
- G16B20/20—Allele or variant detection, e.g. single nucleotide polymorphism [SNP] detection
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- General Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Chemical & Material Sciences (AREA)
- Analytical Chemistry (AREA)
- Bioethics (AREA)
- Biophysics (AREA)
- Genetics & Genomics (AREA)
- Mathematical Physics (AREA)
- Proteomics, Peptides & Aminoacids (AREA)
- Bioinformatics & Computational Biology (AREA)
- Biotechnology (AREA)
- Evolutionary Biology (AREA)
- Medical Informatics (AREA)
- Spectroscopy & Molecular Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种可验证的基因数据外包查询协议及系统,包括基因数据拥有者先将其持有的基因变异数据集进行排序,并在本地计算基因变异数据集的验证值和加密基因变异数据,将加密数据和验证值上传至云服务器;云服务器计算基因变异数据集的验证值;接着查询用户向云服务器的基因变异数据集发起查询,查询某染色体上的变异是否存在于基因数据拥有者的基因变异数据集中;云服务器根据查询用户的查询需求进行搜索,然后将查询结果以及对应的验证值发送给查询用户;查询用户判断云服务器返回的验证值是否与查询用户保存在本地的验证值相等,相等则代表验证通过,查询结果正确;否则验证失败,重新查询。本发明可以高效安全地实现基因数据外包查询。
Description
技术领域
本发明涉及基因数据外包查询技术领域,特别涉及一种可验证的基因数据外包查询协议及系统。
背景技术
随着第二代基因测序成本地不断降低,获取基因数据变得越来越容易,基因数据分析是探索人类生命健康安全的重要手段,但由于基因数据具有高度隐私性,对于如何对基因数据进行隐私保护成为了信息安全领域的重要议题之一。换而言之,在基因数据分析的全生命周期中,保障数据的隐私性,即实现数据的可用而不可见。
在基因数据分析的全生命周期中,非常重要的一环就是基因数据的安全查询,即查询用户和基因数据拥有者两个参与方在不泄露各自输入隐私信息的前提下,查询用户可以获得查询结果。随着云存储、计算能力的不断提升,许多数据拥有者将自己的数据加密外包至云端,因此,就需要实现在外包的场景下基因数据的安全查询。基因数据外包查询通常可采用的技术包括:同态加密、安全多方计算等技术,该类技术对于用户信息有较强的保护性,但也带来了效率问题,无法满足实际数据查询的实时性,高效性的需求。此外,这类方案都需要查询方参与计算,而查询方本地计算资源往往具有较低的计算能力和有限的计算空间。
现有工作中,有学者采用哈希算法和同态加密算法,基因数据拥有者将数据集外包给云服务器,数据拥有者可以查询某条染色体变异是否存在,为客户端完成交集计算,该种方案采用同态加密来确保数据集的隐私性,然而对于云服务器返回的查询结构,用户无法进行验证。此外,还有部分工作是采用双云结构,数据拥有者需要将其拥有的数据采用秘密分享的方式分别放置于两个云服务器,并且,查询者也采用同样的方式在双服务器中进行查询。两个云服务器之间采用了电路混淆的方式进行通讯,用以保证查询用户和数据拥有者的隐私性。但是,由于双云服务器之间不可以勾结,因此查询用户也无法验证其结果的正确性。
可见,行业内急需研发一种可验证的基因数据安全外包查询协议,在保证数据隐私的同时确保实用性和高效性。
发明内容
本发明的第一目的在于克服现有技术的缺点与不足,提供一种可验证的基因数据外包查询协议,该协议可以在保证数据机密性的前提下,高效地完成查询以及验证计算,且具有较高的实用性和可扩展性。
本发明的第二目的在于提供一种基因数据外包查询系统。
本发明的第一目的通过下述技术方案实现:一种可验证的基因数据外包查询协议,包括步骤:
S1、基因数据拥有者将其持有的基因变异数据集进行排序;
S2、基因数据拥有者在本地计算排序后的基因变异数据集的验证值,然后将其拥有的基因变异数据加密,再将加密数据和验证值上传至云服务器;
S3、云服务器接收加密后的基因变异数据,同样计算基因变异数据集的验证值;
S4、查询用户向云服务器的基因变异数据集发起查询,查询某染色体上的变异是否存在于基因数据拥有者的基因变异数据集中;
S5、云服务器根据查询用户的查询需求进行搜索,然后将查询结果以及对应的验证值发送给查询用户;
S6、查询用户判断云服务器返回的验证值是否与查询用户保存在本地的验证值相等,若相等,则代表验证通过,查询结果正确,完成查询;否则验证失败,重新查询。
优选的,基因数据拥有者用DO表示,DO持有基因变异数据集VCF,且VCF={vcf1,vcf,…,vcfi,…,vcfm},其中,1≤i≤m,i表示基因变异数据集VCF中vcf文件的编号,m表示每个基因数据拥有者拥有的基因变异数据集大小,即基因变异数据集VCF中vcf文件的总数,m=25;每个vcf文件的第一列代表染色体编号,染色体编号编号为1~22、X、Y以及M,1~22代表常染色体,X、Y代表性染色体,M代表突变染色体;
在步骤S1中,基因数据拥有者DO将其VCF的基因变异数据以染色体编号的标准进行排序,具体步骤如下:
S101、DO提取其基因变异数据集VCF中的每个文件vcfi的第一列染色体的位置,并将vcfi中的每一行数据分成两个部分:染色体编号信息、其他变异信息;
S102、DO根据vcfi中每一行数据的染色体编号信息,对该行数据进行编号,编号与染色体编号信息相同;
S103、DO将VCF中所有vcf文件的每行数据进行归类,根据编号信息得到25个基因变异数据集合,每个基因变异数据集合对应一个染色体:
Chr1={x11,x12,…,x1i,…,x1n1},
Chr2={x21,x22,…,x2i,…,x2n2},
Chr3={x31,x32,…,x3i,…,x3n3},
……
ChrM={xM1,xM2,…,xMi,…,xMnM};
其中,xjk代表VCF中的每一行变异数据信息,j是行号,同时也是染色体编号,k是该染色体编号所对应染色体上的详细变异信息的编号,且1≤j≤22∪{X,Y,M},1≤k≤max{n1,n2,…,n22,nX,nY,nM}。
更进一步的,在步骤S2中,基因数据拥有者DO采用哈希列表和梅克尔树结构,设计得到水平结构和垂直结构的哈希树,并将哈希树作为基因变异数据的验证值,将归类后的基因变异数据{xjk}加密,再将加密结果以及用于验证的哈希树都上传至云服务器,具体步骤如下:
S201、DO对于归类后的所有基因变异数据集合Chr1,Chr2,…,Chr22,ChrX,ChrY,ChrM中的每个数据进行哈希计算,计算后的基因变异数据集合为:
Chr1’={HSHA(x11),HSHA(x12),…,HSHA(x1i),…,HSHA(x1n1)},
Chr2’={HSHA(x21),HSHA(x22),…,HSHA(x2i),…,HSHA(x2n2)},
……
ChrM’={HSHA(xM1),HSHA(xM2),…,HSHA(xMi),…,HSHA(xMnM)};
S202、DO针对每个染色体的基因变异数据集合都新建一个哈希表,表示为Tb1,Tb2,…,TbM,哈希表中所有元素初置为0;
然后将每个哈希计算后的基因变异数据集合Chr1’,Chr2’,…,ChrM’中所有数据与哈希表大小进行模运算,按染色体编号顺序插入到对应的哈希表中:将插入的位置的值置为1,采用溢出链表的结构将对应的哈希值添加至该位置,当哈希表中需要存储的值发生冲突,产生溢出时,则将冲突的哈希值添加在溢出链表之后;
S203、对于每个哈希表,DO将哈希表中每个位置的溢出链表的数值从小到大排列,并按照梅克尔树结构进行计算,即:HSHA(root)=HSHA(HSHA(left)||HSHA(right));
在这个过程中,每个溢出链表上的所有元素都作为底层叶子节点,left和right代表一个叶子节点的左、右子节点;两个相邻子节点的哈希值作为叶子节点的父节点的值,即:HSHA(HSHA(x11)||HSHA(x12))是叶子节点x11和叶子节点x12的父节点哈希值,以此类推,直到计算出根节点的值HSHA(root);计算完成后得到记录子节点哈希值和父节点哈希值的水平哈希树;
S204、DO采用垂直哈希树本地保存所有根节点哈希值,采用加密算法加密基因变异数据{xjk},最后将用于生成哈希树的所有哈希表和溢出链表,以及加密后的基因变异数据发送至云服务器进行存储。
更进一步的,在步骤S3中,云服务器计算基因变异数据集的验证值与步骤S2相同,具体是根据哈希表和溢出链表,采用梅克尔树的结构计算每个基因变异数据集的验证值,并保存所有梅克尔树结构。
优选的,在步骤S4中,查询用户用Client表示,其发起查询的具体步骤如下:
S401、Client将其需要查询的变异数据分为两部分:一是染色体编号QChr,二是其他变异信息Qre,需要查询的变异数据表示为查询信息组{QChr,Qre};
S402、Client采用哈希函数对其他变异信息进行计算,得到信息组{QChr,HSHA(Qre)},并将信息组发送给云服务器,该信息组即作为用户的查询请求。
更进一步的,查询用户Client在发起查询时,染色体编号QChr为指向云服务器中对应染色体变异信息存储位置的指针,或者是打乱后的位置信息。
更进一步的,在步骤S5中,云服务器根据用户的查询需求进行搜索,判断所查询数据是否存在于基因数据拥有者的数据集中,具体过程如下:
S501、云服务器根据用户发送的查询请求{QChr,HSHA(Qre)},其中QChr为染色体编号,HSHA(Qre)为采用哈希函数计算后的其他变异信息,查找染色体QChr对应的哈希表Tbj,1≤j≤22∪{X,Y,M},然后根据HSHA(Qre)查找哈希表Tbj中对应位置,具体是将HSHA(Qre)与哈希表大小进行模运算,模运算结果即是所要查找的位置的索引,若该位置对应的值为0,则返回查询结果给查询用户,即:该变异不存在于云服务器的数据库中;
S502、云服务器根据用户发送的请求{QChr,HSHA(Qre)},查找染色体QChr对应的哈希表Tbj,1≤j≤22∪{X,Y,M},然后根据HSHA(Qre)查找哈希表Tbj中对应位置,若该位置对应的值为1,则继续查找该位置对应的溢出链表中是否存在数据HSHA(Qre),若不存在,则返回查询结果给查询用户,即:该变异不存在于云服务器的数据库中,并找到溢出链表中比HSHA(Qre)大和比HSHA(Qre)小的相邻两个位置的哈希值,然后找出云服务器所生成的梅克尔树中这两个位置所对应的节点、这两个节点的父节点的相邻节点、以及其父节点的父节点的相邻节点,直到回溯到根节点,将这些节点都作为验证节点,并将这些验证节点的值发送给查询用户;
S503、云服务器根据用户发送的请求{QChr,HSHA(Qre)},查找染色体QChr对应的哈希表Tbj,1≤j≤22∪{X,Y,M},根据HSHA(Qre)查找哈希表中对应位置,若该位置对应的值为1,则继续查找该位置对应的溢出链表中是否存在数据HSHA(Qre),若存在,则返回查询结果给查询用户,即:该变异存在于云服务器的数据库中,并找出云服务器所生成的梅克尔树中HSHA(Qre)的相邻叶子节点值HSHA(Qre’)、其父节点H(HSHA(Qre)||HSHA(Qre’))的相邻节点、其父节点的父节点的相邻节点,直到回溯到根节点,将这些节点都作为验证节点,并将这些验证节点的值发送给查询用户;
S504、查询用户根据云服务器返回的验证节点值以及查询数据的哈希值HSHA(Qre),按照梅克尔树结构计算出根节点值,将该结果与云服务器返回的根节点值进行比对,若相等,则代表验证通过,初步判定查询结果正确;否则验证失败,重新查询。
优选的,协议还包括:在查询用户向云服务器的基因变异数据集发起查询之前,基因数据拥有者对查询用户的身份进行验证,当身份验证通过,基因数据拥有者给予查询用户发起查询的授权。
优选的,云服务器将基因数据拥有者发送的哈希表按染色体编号顺序存储,并记录该顺序作为信息查询的标签,当基因数据拥有者想要更新数据,则直接通知云服务器需新增或删除数据所对应的哈希表信息,云服务器即根据哈希表信息完成数据更新。
本发明的第二目的通过下述技术方案实现:一种基因数据外包查询系统,所述基因数据外包查询系统具有基因数据拥有者、查询用户和云服务器,并通过本发明第一目的所述的可验证的基因数据外包查询协议实现基因数据查询。
本发明相对于现有技术具有如下的优点及效果:
(1)本发明针对基因数据外包查询场景,设计了一种可验证的基因数据外包查询协议,通过借助哈希算法以及梅克尔树结构,将基因数据拥有者的数据加密并计算验证值后保存在云服务器;当用户需要对云服务器中的数据进行查询时,直接查询某变异基因是否存在于云服务器所存储的数据中,云服务器通过对用户的查询需求进行计算,然后将查询结果以及验证值一同返回给查询用户,用户可以通过检查返回的验证值,验证云服务器返回的查询结果的正确性。本发明可在保证数据机密性的前提下,高效地完成基因数据外包查询,且允许查询用户对其查询结果进行验证,因此具有较高的安全性和实用性,可应用于实际基因变异数据查询场景。
(2)本发明根据基因变异文件VCF设计基于染色体编号的存储和查询验证协议,可满足实际应用中针对不同查询类型的用户查询需求。
(3)在本发明中,云服务器将基因数据拥有者发送的哈希表按顺序存储,并记录该顺序作为信息查询的标签。此后,如果基因数据拥有者想要更新数据,则告诉云服务器需新增或删除数据所对应的哈希表信息,因此具有较高的可扩展性。
(4)本发明中,查询用户在发起查询时,所发起的针对染色体编号的查询信息可以是指向云服务器中该染色体变异信息存储位置的指针,也可以是打乱后的位置信息,如此使得协议能保证在计算过程中不会泄露关于查询用户查询的信息,使得其查询信息与具体内容无关,进而保证查询的安全性。
附图说明
图1是本发明可验证的基因数据外包查询协议的查询流程图。
图2是云服务器的数据存储结构示意图。
图3是图1协议中哈希树的示意图。
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
本发明公开了一种可验证的基因数据外包查询协议。首先设计了一种数据加密存储的方案将多个基因数据提供者的数据集聚合在云服务器,其中将基因数据加密并计算验证值后将这些数据保存在云服务器;当查询用户需要对云服务器中的数据进行查询时,查询某变异基因是否存在于云服务器中,云服务器通过计算后将查询结果以及验证值一同返回给查询用户,查询用户可以通过检查返回的验证值,验证云服务器返回的查询结果的正确性。
实施例
本实施例公开了一种可验证的基因数据外包查询协议,所述协议可应用在包含基因数据拥有者、查询用户和云服务器的基因数据外包查询系统中。其中,基因数据拥有者可以是多个独立的数据库机构,提供原始数据集,可用DO表示。查询用户可用Client表示,其包括非基因数据拥有者和基因数据拥有者,也就是说,查询用户既可以是只发起查询请求的一般用户,也可以同时还作为提供基因数据的基因数据拥有者。
DO持有基因变异数据集VCF(Variant Call Format),VCF={vcf1,vcf,…,vcfi,…,vcfm},其中,1≤i≤m,i表示基因变异数据集VCF中vcf文件的编号,m表示每个基因数据拥有者拥有的基因变异数据集大小,即基因变异数据集VCF中vcf文件的总数,m=25;每个vcf文件的第一列代表染色体编号,染色体编号为1~22、X、Y以及M,1~22代表常染色体,X、Y代表性染色体,M代表突变染色体。
如图1所示,可验证的基因数据外包查询协议包括如下步骤:
S1、DO将其持有的基因变异数据集进行排序,这里是以染色体编号的标准进行排序,顺序为:编号1,2,……,22,X,Y,M,具体如下:
S101、DO提取其基因变异数据集VCF中的每个文件vcfi的第一列染色体的位置,并将vcfi中的每一行数据分成两个部分:染色体编号信息、其他变异信息,其他变异信息是指该染色体编号所对应染色体上的具体变异信息;
S102、DO根据vcfi中每一行数据的染色体编号信息,对该行数据进行编号,编号与染色体编号信息相同,为1~22、X、Y以及M;
S103、DO将VCF中所有vcf文件的每行数据进行归类,根据编号信息得到25个基因变异数据集合,每个基因变异数据集合对应一个染色体,可参见图2:
Chr1={x11,x12,…,x1i,…,x1n1},
Chr2={x21,x22,…,x2i,…,x2n2},
Chr3={x31,x32,…,x3i,…,x3n3},
……
ChrM={xM1,xM2,…,xMi,…,xMnM};
其中,xjk代表VCF中的每一行变异数据信息,j是行号,同时也是染色体编号,k是该染色体编号所对应染色体上的详细变异信息的编号,且1≤j≤22∪{X,Y,M},1≤k≤max{n1,n2,…,n22,nX,nY,nM}。
S2、DO在本地计算排序后的基因变异数据集的验证值,然后将其拥有的基因变异数据加密,再将加密数据和验证值上传至云服务器。
在本实施例中,基因数据拥有者DO具体是采用哈希列表和梅克尔树结构,设计得到如图3所示的水平结构和垂直结构的哈希树,并将哈希树作为基因变异数据的验证值。步骤S2过程如下:
S201、DO对于归类后的所有基因变异数据集合Chr1,Chr2,…,Chr22,ChrX,ChrY,ChrM中的每个数据进行哈希计算,本实施例是采用SHA256哈希方案进行计算,计算后的基因变异数据集合为:
Chr1’={HSHA(x11),HSHA(x12),…,HSHA(x1i),…,HSHA(x1n1)},
Chr2’={HSHA(x21),HSHA(x22),…,HSHA(x2i),…,HSHA(x2n2)},
……
ChrM’={HSHA(xM1),HSHA(xM2),…,HSHA(xMi),…,HSHA(xMnM)};
在本实施例中,哈希值HSHA(xjk)在图2中简略表示为h(r1),h(r2),…,h(rk),h(rm)等。
S202、DO针对每个染色体的基因变异数据集合都新建一个哈希表,表示为Tb1,Tb2,…,TbM,并将哈希表中所有元素初置为0;
然后将每个哈希计算后的基因变异数据集合Chr1’,Chr2’,…,ChrM’中所有数据与哈希表大小进行模运算,按染色体编号顺序插入到对应的哈希表中,模运算结果作为插入的索引(即模运算结果表示为插入表中的位置):将插入的位置的值置为1,采用溢出链表的结构将对应的哈希值添加至该位置,当哈希表中需要存储的值发生冲突,也就是出现多个哈希值需存储到同个位置的情况,产生溢出时,则将冲突的哈希值添加在溢出链表之后,可参见图2。
S203、对于每个哈希表,DO将哈希表中每个位置的溢出链表的数值从小到大排列,并按照梅克尔树结构进行计算,即:HSHA(root)=HSHA(HSHA(left)||HSHA(right))。
在这个过程中,每个溢出链表上的所有元素都作为底层叶子节点,left和right代表一个叶子节点的左、右子节点;两个相邻子节点的哈希值作为叶子节点的父节点的值,即:HSHA(HSHA(x11)||HSHA(x12))是叶子节点x11和叶子节点x12的父节点哈希值,以此类推,直到计算出根节点的值HSHA(root);计算完成后得到记录子节点哈希值和父节点哈希值的水平哈希树。HSHA(root)在图2中简略表示为hroot。
S204、DO采用垂直哈希树本地保存所有根节点哈希值,采用加密算法加密基因变异数据{xjk},加密算法可以是对称加密算法AES,最后将用于生成哈希树的所有哈希表和溢出链表,以及加密后的基因变异数据发送至云服务器进行存储。生成的水平哈希树和垂直哈希树也可以上传到云服务器中存储。
这里,云服务器具体是将基因数据拥有者发送的哈希表按染色体编号顺序存储,并记录该顺序作为信息查询的标签,当基因数据拥有者想要更新数据,则直接通知云服务器需新增或删除数据所对应的哈希表信息,云服务器即可根据哈希表信息完成数据更新,因此具有较高的可扩展性。
S3、云服务器接收加密后的基因变异数据,同样计算基因变异数据集的验证值:与步骤S2相同,根据哈希表和溢出链表,采用梅克尔树的结构计算每个基因变异数据集的验证值,并保存所有梅克尔树结构(用于记录子节点哈希值和父节点哈希值的水平哈希树、用于记录根节点哈希值的垂直哈希树)。
S4、查询用户Client向云服务器的基因变异数据集发起查询,查询某染色体上的变异是否存在于基因数据拥有者的基因变异数据集中:
S401、Client将其需要查询的变异数据分为两部分:一是染色体编号QChr,二是其他变异信息Qre,需要查询的变异数据表示为查询信息组{QChr,Qre};
这里,染色体编号QChr可以采用指针结构,即为指向云服务器中对应染色体变异信息存储位置的指针,也可以是打乱后的位置信息,以此使得协议能保证在计算过程中不会泄露关于Client查询的信息,使得其查询信息与具体内容无关;
S402、Client采用哈希函数对其他变异信息进行计算,得到信息组{QChr,HSHA(Qre)},并将信息组发送给云服务器,该信息组即作为用户的查询请求。
这里,在查询用户向云服务器的基因变异数据集发起查询之前,基因数据拥有者还有对查询用户的身份进行验证,当身份验证通过,基因数据拥有者才给予查询用户发起查询的授权。
S5、云服务器根据查询用户的查询需求进行搜索,然后将查询结果以及对应的验证值发送给查询用户。
在搜索时,云服务器判断所查询数据是否存在于基因数据拥有者的数据集中的过程如下:
S501、云服务器根据用户发送的查询请求{QChr,HSHA(Qre)},其中QChr为染色体编号,HSHA(Qre)为采用哈希函数计算后的其他变异信息,查找染色体QChr对应的哈希表Tbj,1≤j≤22∪{X,Y,M},然后根据HSHA(Qre)查找哈希表Tbj中对应位置,具体是将HSHA(Qre)与哈希表大小进行模运算,模运算结果即是所要查找的位置的索引,若该位置对应的值为0,则返回查询结果给查询用户,即:该变异不存在于云服务器的数据库中;
S502、云服务器根据用户发送的请求{QChr,HSHA(Qre)},查找染色体QChr对应的哈希表Tbj,1≤j≤22∪{X,Y,M},然后根据HSHA(Qre)查找哈希表Tbj中对应位置,若该位置对应的值为1,则继续查找该位置对应的溢出链表中是否存在数据HSHA(Qre),若不存在,则返回查询结果给查询用户,即:该变异不存在于云服务器的数据库中,并找到溢出链表中比HSHA(Qre)大和比HSHA(Qre)小的相邻两个位置的哈希值,然后找出云服务器所生成的梅克尔树中这两个位置所对应的节点、这两个节点的父节点的相邻节点、以及其父节点的父节点的相邻节点,直到回溯到根节点root”,将这些节点都作为验证节点,并将这些验证节点的值发送给查询用户;
S503、云服务器根据用户发送的请求{QChr,HSHA(Qre)},查找染色体QChr对应的哈希表Tbj,1≤j≤22∪{X,Y,M},根据HSHA(Qre)查找哈希表中对应位置,若该位置对应的值为1,则继续查找该位置对应的溢出链表中是否存在数据HSHA(Qre),若存在,则返回查询结果给查询用户,即:该变异存在于云服务器的数据库中,并找出云服务器所生成的梅克尔树中HSHA(Qre)的相邻叶子节点值HSHA(Qre’)、其父节点H(HSHA(Qre)||HSHA(Qre’))的相邻节点、其父节点的父节点的相邻节点,直到回溯到根节点root”,将这些节点都作为验证节点,并将这些验证节点的值发送给查询用户;
S504、查询用户根据云服务器返回的验证节点值以及查询数据的哈希值HSHA(Qre),按照梅克尔树结构计算出根节点root’的值,将该结果与云服务器返回的根节点root”的值进行比对,若相等,则代表验证通过,初步判定查询结果正确;否则验证失败,重新查询。
这里,云服务器虽然是半诚实的云服务器,即能正确遵循协议的步骤进行计算,并返回查询结果,但可能会从现有数据中推测关于基因数据的信息。由于本实施例的基因数据拥有者将数据加密后才存放于云服务器,因此可以保证数据的机密性。
S6、查询用户将云服务器返回的根节点root”的值与查询用户保存在本地的根节点root的值再次进行比较,若相等,则代表验证通过,确定查询结果正确,完成查询;否则验证失败,则代表查询出错,或云服务器存储的数据出错,需要进行重新查询。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
Claims (10)
1.一种可验证的基因数据外包查询协议,其特征在于,包括步骤:
S1、基因数据拥有者将其持有的基因变异数据集进行排序;
S2、基因数据拥有者在本地计算排序后的基因变异数据集的验证值,然后将其拥有的基因变异数据加密,再将加密数据和验证值上传至云服务器;
S3、云服务器接收加密后的基因变异数据,同样计算基因变异数据集的验证值;
S4、查询用户向云服务器的基因变异数据集发起查询,查询某染色体上的变异是否存在于基因数据拥有者的基因变异数据集中;
S5、云服务器根据查询用户的查询需求进行搜索,然后将查询结果以及对应的验证值发送给查询用户;
S6、查询用户判断云服务器返回的验证值是否与查询用户保存在本地的验证值相等,若相等,则代表验证通过,查询结果正确,完成查询;否则验证失败,重新查询。
2.根据权利要求1所述的可验证的基因数据外包查询协议,其特征在于,基因数据拥有者用DO表示,DO持有基因变异数据集VCF,且VCF={vcf1,vcf,…,vcfi,…,vcfm},其中,1≤i≤m,i表示基因变异数据集VCF中vcf文件的编号,m表示每个基因数据拥有者拥有的基因变异数据集大小,即基因变异数据集VCF中vcf文件的总数,m=25;每个vcf文件的第一列代表染色体编号,染色体编号编号为1~22、X、Y以及M,1~22代表常染色体,X、Y代表性染色体,M代表突变染色体;
在步骤S1中,基因数据拥有者DO将其VCF的基因变异数据以染色体编号的标准进行排序,具体步骤如下:
S101、DO提取其基因变异数据集VCF中的每个文件vcfi的第一列染色体的位置,并将vcfi中的每一行数据分成两个部分:染色体编号信息、其他变异信息;
S102、DO根据vcfi中每一行数据的染色体编号信息,对该行数据进行编号,编号与染色体编号信息相同;
S103、DO将VCF中所有vcf文件的每行数据进行归类,根据编号信息得到25个基因变异数据集合,每个基因变异数据集合对应一个染色体:
其中,xjk代表VCF中的每一行变异数据信息,j是行号,同时也是染色体编号,k是该染色体编号所对应染色体上的详细变异信息的编号,且1≤j≤22∪{X,Y,M},1≤k≤max{n1,n2,…,n22,nX,nY,nM}。
3.根据权利要求2所述的一种可验证的基因数据外包查询协议,其特征在于,在步骤S2中,基因数据拥有者DO采用哈希列表和梅克尔树结构,设计得到水平结构和垂直结构的哈希树,并将哈希树作为基因变异数据的验证值,将归类后的基因变异数据{xjk}加密,再将加密结果以及用于验证的哈希树都上传至云服务器,具体步骤如下:
S201、DO对于归类后的所有基因变异数据集合Chr1,Chr2,…,Chr22,ChrX,ChrY,ChrM中的每个数据进行哈希计算,计算后的基因变异数据集合为:
S202、DO针对每个染色体的基因变异数据集合都新建一个哈希表,表示为Tb1,Tb2,…,TbM,哈希表中所有元素初置为0;
然后将每个哈希计算后的基因变异数据集合Chr1’,Chr2’,…,ChrM’中所有数据与哈希表大小进行模运算,按染色体编号顺序插入到对应的哈希表中:将插入的位置的值置为1,采用溢出链表的结构将对应的哈希值添加至该位置,当哈希表中需要存储的值发生冲突,产生溢出时,则将冲突的哈希值添加在溢出链表之后;
S203、对于每个哈希表,DO将哈希表中每个位置的溢出链表的数值从小到大排列,并按照梅克尔树结构进行计算,即:HSHA(root)=HSHA(HSHA(left)||HSHA(right));
在这个过程中,每个溢出链表上的所有元素都作为底层叶子节点,left和right代表一个叶子节点的左、右子节点;两个相邻子节点的哈希值作为叶子节点的父节点的值,即:HSHA(HSHA(x11)||HSHA(x12))是叶子节点x11和叶子节点x12的父节点哈希值,以此类推,直到计算出根节点的值HSHA(root);计算完成后得到记录子节点哈希值和父节点哈希值的水平哈希树;
S204、DO采用垂直哈希树本地保存所有根节点哈希值,采用加密算法加密基因变异数据{xjk},最后将用于生成哈希树的所有哈希表和溢出链表,以及加密后的基因变异数据发送至云服务器进行存储。
4.根据权利要求3所述的一种可验证的基因数据外包查询协议,其特征在于,在步骤S3中,云服务器计算基因变异数据集的验证值与步骤S2相同,具体是根据哈希表和溢出链表,采用梅克尔树的结构计算每个基因变异数据集的验证值,并保存所有梅克尔树结构。
5.根据权利要求1所述的一种可验证的基因数据外包查询协议,其特征在于,在步骤S4中,查询用户用Client表示,其发起查询的具体步骤如下:
S401、Client将其需要查询的变异数据分为两部分:一是染色体编号QChr,二是其他变异信息Qre,需要查询的变异数据表示为查询信息组{QChr,Qre};
S402、Client采用哈希函数对其他变异信息进行计算,得到信息组{QChr,HSHA(Qre)},并将信息组发送给云服务器,该信息组即作为用户的查询请求。
6.根据权利要求5所述的一种可验证的基因数据外包查询协议,其特征在于,查询用户Client在发起查询时,染色体编号QChr为指向云服务器中对应染色体变异信息存储位置的指针,或者是打乱后的位置信息。
7.根据权利要求4所述的一种可验证的基因数据外包查询协议,其特征在于,在步骤S5中,云服务器根据用户的查询需求进行搜索,判断所查询数据是否存在于基因数据拥有者的数据集中,具体过程如下:
S501、云服务器根据用户发送的查询请求{QChr,HSHA(Qre)},其中QChr为染色体编号,HSHA(Qre)为采用哈希函数计算后的其他变异信息,查找染色体QChr对应的哈希表Tbj,1≤j≤22∪{X,Y,M},然后根据HSHA(Qre)查找哈希表Tbj中对应位置,具体是将HSHA(Qre)与哈希表大小进行模运算,模运算结果即是所要查找的位置的索引,若该位置对应的值为0,则返回查询结果给查询用户,即:该变异不存在于云服务器的数据库中;
S502、云服务器根据用户发送的请求{QChr,HSHA(Qre)},查找染色体QChr对应的哈希表Tbj,1≤j≤22∪{X,Y,M},然后根据HSHA(Qre)查找哈希表Tbj中对应位置,若该位置对应的值为1,则继续查找该位置对应的溢出链表中是否存在数据HSHA(Qre),若不存在,则返回查询结果给查询用户,即:该变异不存在于云服务器的数据库中,并找到溢出链表中比HSHA(Qre)大和比HSHA(Qre)小的相邻两个位置的哈希值,然后找出云服务器所生成的梅克尔树中这两个位置所对应的节点、这两个节点的父节点的相邻节点、以及其父节点的父节点的相邻节点,直到回溯到根节点,将这些节点都作为验证节点,并将这些验证节点的值发送给查询用户;
S503、云服务器根据用户发送的请求{QChr,HSHA(Qre)},查找染色体QChr对应的哈希表Tbj,1≤j≤22∪{X,Y,M},根据HSHA(Qre)查找哈希表中对应位置,若该位置对应的值为1,则继续查找该位置对应的溢出链表中是否存在数据HSHA(Qre),若存在,则返回查询结果给查询用户,即:该变异存在于云服务器的数据库中,并找出云服务器所生成的梅克尔树中HSHA(Qre)的相邻叶子节点值HSHA(Qre’)、其父节点H(HSHA(Qre)||HSHA(Qre’))的相邻节点、其父节点的父节点的相邻节点,直到回溯到根节点,将这些节点都作为验证节点,并将这些验证节点的值发送给查询用户;
S504、查询用户根据云服务器返回的验证节点值以及查询数据的哈希值HSHA(Qre),按照梅克尔树结构计算出根节点值,将该结果与云服务器返回的根节点值进行比对,若相等,则代表验证通过,初步判定查询结果正确;否则验证失败,重新查询。
8.根据权利要求1所述的一种可验证的基因数据外包查询协议,其特征在于,协议还包括:在查询用户向云服务器的基因变异数据集发起查询之前,基因数据拥有者对查询用户的身份进行验证,当身份验证通过,基因数据拥有者给予查询用户发起查询的授权。
9.根据权利要求1所述的一种可验证的基因数据外包查询协议,其特征在于,云服务器将基因数据拥有者发送的哈希表按染色体编号顺序存储,并记录该顺序作为信息查询的标签,当基因数据拥有者想要更新数据,则直接通知云服务器需新增或删除数据所对应的哈希表信息,云服务器即根据哈希表信息完成数据更新。
10.一种基因数据外包查询系统,其特征在于,所述基因数据外包查询系统具有基因数据拥有者、查询用户和云服务器,并通过权利要求1~9中任一项所述的可验证的基因数据外包查询协议实现基因数据查询。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011473367.7A CN112416948B (zh) | 2020-12-15 | 2020-12-15 | 一种可验证的基因数据外包查询方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011473367.7A CN112416948B (zh) | 2020-12-15 | 2020-12-15 | 一种可验证的基因数据外包查询方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112416948A true CN112416948A (zh) | 2021-02-26 |
CN112416948B CN112416948B (zh) | 2022-11-01 |
Family
ID=74776189
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011473367.7A Active CN112416948B (zh) | 2020-12-15 | 2020-12-15 | 一种可验证的基因数据外包查询方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112416948B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117729040A (zh) * | 2023-12-22 | 2024-03-19 | 中国人民解放军国防科技大学 | 一种可验证的天际线安全查询方法及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120209822A1 (en) * | 2011-02-11 | 2012-08-16 | Purdue Research Foundation | System and methods for ensuring integrity, authenticity, indemnity, and assured provenance for untrusted, outsourced, or cloud databases |
CN105721485A (zh) * | 2016-03-04 | 2016-06-29 | 安徽大学 | 外包云环境下面向多数据拥有者的安全最近邻查询方法 |
CN106603544A (zh) * | 2016-12-22 | 2017-04-26 | 中国科学技术大学 | 一种带轻量级审计的数据存储与云端控制方法 |
CN108055122A (zh) * | 2017-11-17 | 2018-05-18 | 西安电子科技大学 | 可验证的防内存泄露动态可搜索加密方法、云服务器 |
CN110392038A (zh) * | 2019-06-03 | 2019-10-29 | 西安电子科技大学 | 一种多用户场景下可验证的多密钥可搜索加密方法 |
CN110602099A (zh) * | 2019-09-16 | 2019-12-20 | 广西师范大学 | 基于可验证的对称可搜索加密的隐私保护方法 |
CN110660450A (zh) * | 2019-09-23 | 2020-01-07 | 长沙学院 | 一种基于加密基因组数据的安全计数查询与完整性验证装置和方法 |
-
2020
- 2020-12-15 CN CN202011473367.7A patent/CN112416948B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120209822A1 (en) * | 2011-02-11 | 2012-08-16 | Purdue Research Foundation | System and methods for ensuring integrity, authenticity, indemnity, and assured provenance for untrusted, outsourced, or cloud databases |
CN105721485A (zh) * | 2016-03-04 | 2016-06-29 | 安徽大学 | 外包云环境下面向多数据拥有者的安全最近邻查询方法 |
CN106603544A (zh) * | 2016-12-22 | 2017-04-26 | 中国科学技术大学 | 一种带轻量级审计的数据存储与云端控制方法 |
CN108055122A (zh) * | 2017-11-17 | 2018-05-18 | 西安电子科技大学 | 可验证的防内存泄露动态可搜索加密方法、云服务器 |
CN110392038A (zh) * | 2019-06-03 | 2019-10-29 | 西安电子科技大学 | 一种多用户场景下可验证的多密钥可搜索加密方法 |
CN110602099A (zh) * | 2019-09-16 | 2019-12-20 | 广西师范大学 | 基于可验证的对称可搜索加密的隐私保护方法 |
CN110660450A (zh) * | 2019-09-23 | 2020-01-07 | 长沙学院 | 一种基于加密基因组数据的安全计数查询与完整性验证装置和方法 |
Non-Patent Citations (1)
Title |
---|
陈兰香等: "基于Merkle哈希树的可验证密文检索方案", 《信息网络安全》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117729040A (zh) * | 2023-12-22 | 2024-03-19 | 中国人民解放军国防科技大学 | 一种可验证的天际线安全查询方法及系统 |
CN117729040B (zh) * | 2023-12-22 | 2024-06-21 | 中国人民解放军国防科技大学 | 一种可验证的天际线安全查询方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112416948B (zh) | 2022-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Shen et al. | Secure SVM training over vertically-partitioned datasets using consortium blockchain for vehicular social networks | |
CN106815350B (zh) | 一种云环境中动态的密文多关键词模糊搜索方法 | |
CN110138561B (zh) | 基于cp-abe自动校正的高效密文检索方法、云计算服务系统 | |
US8990198B2 (en) | Method and system for computerized management of related data records | |
CN113194078A (zh) | 一种云端支持隐私保护的排序多关键字搜索加密方法 | |
EP2064637B1 (en) | Method for dynamic secure management of an authenticated relational table in a database | |
CN112231283B (zh) | 基于多源异构数据统一实体标识码的生成管理方法及系统 | |
CN109885650B (zh) | 一种外包云环境隐私保护密文排序检索方法 | |
US10120870B2 (en) | System and method for searching distributed files across a plurality of clients | |
CN115766795A (zh) | 一种基于区块链的可信电子文件平台的智能服务方法 | |
Sudalaimani et al. | Efficient multicast delivery for data redundancy minimization over wireless data centres | |
CN112416948B (zh) | 一种可验证的基因数据外包查询方法及系统 | |
CN117932125B (zh) | 一种支持隐私保护的可验证空间关键字查询方法及装置 | |
Ananthi et al. | FSS-SDD: fuzzy-based semantic search for secure data discovery from outsourced cloud data | |
CN105763324B (zh) | 可控制的可验证多用户端可搜索加密搜索方法 | |
ES2763825T3 (es) | Sistema de búsqueda | |
Krishna et al. | Dynamic cluster based privacy-preserving multi-keyword search over encrypted cloud data | |
CN108650268A (zh) | 一种实现多级访问的可搜索加密方法及系统 | |
Chowdhury et al. | Implementation of Central Dogma Based Cryptographic Algorithm in Data Warehouse Architecture for Performance Enhancement | |
JP2006189925A (ja) | 個人情報管理システム、個人情報管理プログラムおよび個人情報保護方法 | |
CN117194418A (zh) | 可验证的多模态时空数据索引结构和时空范围查询验证方法 | |
CN116644146A (zh) | 一种文档搜索方法、装置、系统、电子设备及存储介质 | |
He et al. | FMSM: A fuzzy multi-keyword search scheme for encrypted cloud data based on multi-chain network | |
CN112784309B (zh) | 数据安全管理方法、电子设备和存储介质 | |
Zhu et al. | Authentication of Multi-Dimensional Top-$ K $ Query on Untrusted Server |
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 |