CN114168703A - 一种群组加密数据检索方法 - Google Patents
一种群组加密数据检索方法 Download PDFInfo
- Publication number
- CN114168703A CN114168703A CN202111359762.7A CN202111359762A CN114168703A CN 114168703 A CN114168703 A CN 114168703A CN 202111359762 A CN202111359762 A CN 202111359762A CN 114168703 A CN114168703 A CN 114168703A
- Authority
- CN
- China
- Prior art keywords
- tree
- data
- group
- lab
- tag
- 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.)
- Pending
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/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/319—Inverted lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/31—Indexing; Data structures therefor; Storage structures
- G06F16/316—Indexing structures
- G06F16/322—Trees
-
- 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/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种群组加密数据检索方法,包括:对系统进行初始化,并将初始化后的两个二叉树Tw、Td发送给云服务器CS进行保存;当任意一个用户ui注册进入群组时,群组管理员GM验证该用户的合法性,当该用户的合法性验证通过后,该用户成为群组成员,且GM生成该用户的私钥;当群组成员上传待分享数据时,从待分享数据中提取关键词索引,随机选择一个对称密钥并利用对称加密算法加密数据,接着对关键词索引中的每一关键词加密,以生成索引密文并上传至CS;当群组成员查询时,对CS中的数据进行检索,获得与关键词相关的数据标识。采用本发明实施例能够有效保护密文检索的访问信息。
Description
技术领域
本发明涉及加密技术领域,尤其涉及一种群组加密数据检索方法。
背景技术
群组数据分享系统是一种允许群组中的所有成员能够互相分享数据,但非群组成员不能够获得分享数据的任何信息的系统。目前已存在很多支持群组数据分享的现实应用,例如,社交软件(Facebook、QQ、微信等)通过上传分享数据到云服务器,群组中的成员在云服务器访问控制的情况下有限度地访问分享数据。
然而,存储于云服务器的数据的安全性是用户越来越担心的一个重要问题,目前最为认可的解决办法是将数据加密后上传至云服务器,但加密的数据势必对数据检索产生极大的影响,因此,如何对加密数据进行检索成为目前的研究重点。
发明内容
本发明实施例的目的是提供一种群组加密数据检索方法,能够有效保护密文检索的访问信息。
为实现上述目的,本发明实施例提供了一种群组加密数据检索方法,包括:
对系统进行初始化,并将初始化后的两个二叉树Tw、Td发送给云服务器CS进行保存;其中,Td树用于存储加密索引数据、Tw树用于存储检索关键词映射到Td树上的叶子节点的数据;
当任意一个用户ui注册进入群组时,群组管理员GM验证该用户ui的合法性,当该用户ui的合法性验证通过后,该用户ui成为群组成员,且群组管理员GM生成该用户ui的私钥ski;
当群组成员上传待分享数据时,从待分享数据中提取关键词索引,随机选择一个对称密钥Kf并利用对称加密算法加密数据,接着对所述关键词索引中的每一关键词加密,以生成索引密文并上传至云服务器CS;
当群组成员查询时,对云服务器CS中的数据进行检索,获得与关键词相关的数据标识;
其中,所述对系统进行初始化包括:
可信权威机构选取两个阶为素数q的循环群G和GT、群G的生成元g以及双线性映射e:G×G→GT、选取一个哈希函数其中,λ是系统的安全参数,是一个包含集合所有子集合的集合;群组管理员GM随机选取x1,x2,f1,以及K∈{0,1}λ,构造一个秘密多项式函数f(x)=x1+f1x,生成群组公钥PK=(G,GT,e,q,g,g1,g2,h,H1)、群组主私钥msk=(x1,x2,f1,t,K),其中, 代表模q的整数乘法群;建立两个二叉树Tw、Td,并对Tw树、Td树进行初始化;
所述群组管理员GM生成该用户ui的私钥ski,包括:
作为上述方案的改进,所述对Tw树、Td树进行初始化,包括:
对需分享的数据建立倒排索引集合IDi,其中,所述倒排索引集合IDi为与关键词wi*相关的数据标识集合;
群组管理员GM以明文的形式初始化Tw树以及Td树,以将倒排索引集合IDi中的数据存储于Td树、关键词wi*映射到Td树上叶子节点的数据存储于Tw树并用无效数据填充Tw树、Td树中未初始化过的叶子节点;
利用Enc加密算法对Tw树、Td树上所有的叶子节点存储的数据进行加密;
所述Enc加密算法包括:
Enc(m,PK)=[C1,C2,C3]
作为上述方案的改进,所述对所述关键词索引中的每一关键词加密,包括:
利用Upload算法对所述关键词索引中的每一关键词加密;
其中,所述Upload算法包括:
检索Tw树步骤:检索l∈H1(K,w)集合中的每一个元素,并对Tw树进行访问,直到找到Tw树中包含关键词w的第一个节点,通过解密该第一节点的密文数据得到w||Tag0||Tagk+1||Lab0||Labk+1||ran,其中,Tag0代表第一个与关键词w相关的索引密文在Td树中存储的路径为P(Tag0),Lab0代表第一个与关键词w相关的索引密文在Td树中存储的判断标记为Lab0,Tagk+1代表下一个与关键词w相关的索引密文将插入Td树的路径P(Tagk+1)中,Labk+1代表下一个与关键词w相关的索引密文在Td树中存储的判断标记为Labk+1;
索引密文插入Td树步骤:根据Tagk+1、Labk+1对Td树进行访问,以将索引密文插入到Td树上路径为P(Tagk+1)中的一个原始数据为无效数据的叶子节点上;
更新Tw树步骤:重新随机选择下一个与关键词w相关的索引密文的存储路径以及判断标记,并将数据w||Tag0||Tagk+2||Lab0||Labk+2||ran重新插入Tw树中,其插入路径在集合H1(K,w)中随机选择,并且将插入路径隐藏在一个元素个数小于预设阈值的随机集合中。
作为上述方案的改进,所述对Tw树进行访问包括:
利用AccessTree算法对Tw树进行访问;其中,所述AccessTree算法包括:
依据Tw树上的叶子节点所在的路径,将该路径上的所有数据发送给群组成员,群组成员利用私钥ski解密数据得到明文数据;
对所述明文数据进行重新加密,并返回给云服务器CS;
其中,所述群组成员利用私钥ski解密数据得到明文数据,包括:
群组成员利用私钥ski生成信息[D=ds,E=es],并发送至云服务器CS,令Tw树上的叶子节点存储的密文为C=[C1=e(g1,g2 r)m,C2=hr,C3=gr],则云服务器CS通过以下公式可得:
当群组成员接收到e(C2,E)·e(C3,D)=e(g,g2)r·s后,恢复e(g,g2)r,得到明文数据m=C1/e(g1,g2)r。
作为上述方案的改进,对Td树进行访问包括:
利用AccessTree算法对Td树进行访问;其中,所述AccessTree算法包括:
依据Td树上的叶子节点所在的路径,将该路径上的所有数据发送给群组成员,群组成员利用私钥ski解密数据得到明文数据;
对所述明文数据进行重新加密,并返回给云服务器CS;
其中,所述群组成员利用私钥ski解密数据得到明文数据,包括:
群组成员利用私钥ski生成信息[D=ds,E=es],并发送至云服务器CS,令Td树上的叶子节点存储的密文为C=[C1=e(g1,g2 r)m,C2=hr,C3=gr],则云服务器CS通过以下公式可得:
当群组成员接收到e(C2,E)·e(C3,D)=e(g,g2)r·s后,恢复e(g,g2)r,得到明文数据m=C1/e(g1,g2)r。
作为上述方案的改进,所述当群组成员查询时,对云服务器CS中的数据进行检索,获得与关键词相关的数据标识,包括:
利用Search算法,对云服务器CS中的数据进行检索,获得与关键词相关的数据标识;
其中,所述Search算法包括:
检索Tw树步骤:检索l∈H1(K,w)集合中的每一个元素,并对Tw树进行访问,直到找到Tw树中包含关键词w的第一个节点,通过解密该第一节点的密文数据得到w||Tag0||Tagk+1||Lab0||Labk+1||ran,其中,Tag0代表第一个与关键词w相关的索引密文在Td树中存储的路径为P(Tag0),Lab0代表第一个与关键词w相关的索引密文在Td树中存储的判断标记为Lab0,Tagk+1代表下一个与关键词w相关的索引密文将插入Td树的路径P(Tagk+1)中,Labk+1代表下一个与关键词w相关的索引密文在Td树中存储的判断标记为Labk+1;
检索Td树步骤:根据Tag0、Lab0对Td树进行访问,以检索Td树路径Ρ(Tag0)上包含Lab0的节点,并获得下一个与关键词w相关的索引密文所在的Ρ(Tag)路径和判断标记Lab,直到最后一个Lab=Labk+1的节点;在这个过程中,检索到的包含判断标记Lab的叶子节点用无效数据替换原始数据;
索引密文重新插入Td树步骤:将索引密文重新插入到Td树。
作为上述方案的改进,所述群组加密数据检索方法,还包括:
当任意一个群组成员ui退出群组时,群组管理员GM随机选择以及K'∈{0,1}λ,并重新定义秘密多项式函数为f'(x)=x1+f1'x,计算更新生成新的群组公钥PK'=(G,GT,e,q,g,g1,g2,h',H1)以及新的群组主私钥msk'=(x1,x2,f1',t,K');
群组管理员GM更新当前的群组成员uj的私钥skj'=(dj',ej,K')其中,密文更新密钥并将密文更新密钥发送给云服务器CS,云服务器CS对Td树上的叶子节点进行密文更新,同时更新Tw树上的叶子节点。
与现有技术相比,本发明实施例提供的一种群组加密数据检索方法,包括:对系统进行初始化,并将初始化后的两个二叉树Tw、Td发送给云服务器CS进行保存;其中,所述Td树用于存储加密索引数据、Tw用于存储检索关键词映射到Td树上的叶子节点的数据;当任意一个用户ui注册进入群组时,群组管理员GM验证该用户ui的合法性,当该用户ui的合法性验证通过后,该用户ui成为群组成员,且群组管理员GM生成该用户ui的私钥;当群组成员上传待分享数据时,从待分享数据中提取关键词索引,随机选择一个对称密钥Kf并利用对称加密算法加密数据,接着对所述关键词索引中的每一关键词加密,以生成索引密文并上传至云服务器CS;当群组成员查询时,对云服务器CS中的数据进行检索,获得与关键词相关的数据标识。由此可见,本发明通过将待分享的数据加密保存到二叉树结构中,当检索时,访问整个二叉树路径上的密文数据,能够有效保护密文检索的访问信息。
附图说明
图1是本发明实施例提供的一种群组加密数据检索方法的流程图;
图2是本发明实施例提供的一种群组加密数据的分享场景模型;
图3是本发明实施例提供的一种二叉树访问的结构框图;
图4是本发明实施例提供的一种关键词索引上传的流程图;
图5是本发明实施例提供的关键词检索的具体交互的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,图1是本发明实施例提供的一种群组加密数据检索方法的流程图,所述群组加密数据检索方法,包括:
S1、对系统进行初始化,并将初始化后的两个二叉树Tw、Td发送给云服务器CS进行保存;其中,Td树用于存储加密索引数据、Tw树用于存储检索关键词映射到Td树上的叶子节点的数据;
S2、当任意一个用户ui注册进入群组时,群组管理员GM验证该用户ui的合法性,当该用户ui的合法性验证通过后,该用户ui成为群组成员,且群组管理员GM生成该用户ui的私钥ski;
S3、当群组成员上传待分享数据时,从待分享数据中提取关键词索引,随机选择一个对称密钥Kf并利用对称加密算法加密数据,接着对所述关键词索引中的每一关键词加密,以生成索引密文并上传至云服务器CS;
S4、当群组成员查询时,对云服务器CS中的数据进行检索,获得与关键词相关的数据标识;
其中,所述对系统进行初始化包括:
可信权威机构选取两个阶为素数q的循环群G和GT、群G的生成元g以及双线性映射e:G×G→GT、选取一个哈希函数其中,λ是系统的安全参数,是一个包含集合所有子集合的集合;群组管理员GM随机选取x1,x2,f1,以及K∈{0,1}λ,构造一个秘密多项式函数f(x)=x1+f1x,生成群组公钥PK=(G,GT,e,q,g,g1,g2,h,H1)、群组主私钥msk=(x1,x2,f1,t,K),其中, 代表模q的整数乘法群;建立两个二叉树Tw、Td,并对Tw树、Td树进行初始化;
所述群组管理员GM生成该用户ui的私钥ski,包括:
可以理解的是,f(t)为x=t时的秘密多项式函数值,f(ti)为x=ti时的秘密多项式函数值,其中,x∈(0,q-1)、t∈(0,q-1)、ti∈(0,q-1)。
本发明实施例是基于茫然存储技术(简称ORAM技术)的主要思想进行构造的,能够有效保护密文检索的访问信息。茫然存储技术是一项用于在不泄露任何访问信息的情况下访问远程内存的技术,其主要思想是将访问内存的信息隐藏到一个随机的内存块中,也就是说如果需要访问某个内存,则将多个内存的信息一起访问,以达到防止访问信息泄露的目的。
需要说明的是,本实施例提供的群组加密数据检索方法应用于如图2所示的群组加密数据的分享场景模型,在该模型中,主要由三个成员组成,分别是云服务器(记为CS)、群组管理员(记为GM)以及群组成员(记为GMBs):
云服务器CS:在模型中,其主要被用于存储群组共享的加密数据以及加密索引,并且它能为群组管理员以及群组成员们提供密文域检索服务,CS会严格并且正确地执行系统中的所有算法,但它会在空闲的时间里试图从密文数据中获取其明文信息;
群组管理员GM:GM是整个群组的管理者,它是被整个系统中的所有成员无条件信任的,因此,GM在系统中负责系统参数的生成、主私钥的生成、群组成员注册时的私钥生成与分发以及群组成员撤销后的密钥更新等;
群组成员GMBs:GMBs是群组中的合法注册成员,他们可以将自己生成的加密数据与加密索引通过上传给CS和其他成员进行分享。该场景模型下,是允许其成员动态更新的,也就是说会存在新成员的注册以及成员的撤销。
具体地,所述对Tw树、Td树进行初始化,包括:
对需分享的数据建立倒排索引集合IDi,其中,所述倒排索引集合IDi为与关键词wi*相关的数据标识集合;
群组管理员GM以明文的形式初始化Tw树以及Td树,以将倒排索引集合IDi中的数据存储于Td树、关键词wi*映射到Td树上叶子节点的数据存储于Tw树并用无效数据填充Tw树、Td树中未初始化过的叶子节点;
利用Enc加密算法对Tw树、Td树上所有的叶子节点存储的数据进行加密;所述Enc加密算法包括:
Enc(m,PK)=[C1,C2,C3]
可以理解的是,在系统初始化的时候,GM还需要对两个二叉树Tw以及Td进行初始化,Td树用于存储加密索引数据,Tw树用于存储检索关键词映射到Td叶子节点的数据,可以理解为存储的是路径ORAM算法中的数据-路径的映射数据。两个二叉树的所有节点存储的数据都需要利用Enc加密算法进行加密:
GM在初始化Tw以及Td的时候,首先将需要分享的数据建立倒排索引集合IDi,该集合为与关键词wi*相关的数据标识集合,若分享的数据中还没有与关键词wi*相关的数据标识,那么IDi为空集。然后GM利用InitTree算法以明文的形式初始化二叉树Tw以及Td,经过InitTree算法后,Tw以及Td中未初始化的节点,全部用无效数据进行填充,记为invalid_data。最后GM利用Enc加密算法对二叉树Tw以及Td所有节点存储的数据进行加密,并将Tw以及Td上传给云服务器CS。在本发明实施例中,Td树、Tw树用于存储加密的数据,以防止保护数据的安全。
关于InitTree算法,其详细描述如下所示:
输入:W*:包含所有关键词的集合,命名为关键词空间;ID:所有倒排索引的集合;
运行:
1:for wi*∈W*do
3:l←从集合Si中随机地均匀选择一个值
5:Lab←从集合{0,1}λ/4中随机地均匀选择一个值
6:Tag'←Tag,Lab'←Lab
7:Tagn←Tag,Labn←Lab
8:for idj∈IDi do
10:Labn←从集合{0,1}λ/4中随机地均匀选择一个值
11:data←Lab'||Tagn||Labn||idj||Kj||ran,ran为填充长度的随机填补值
12:将data随机地插入Td树Ρ(Tag')路径中的一个未初始化的节点
13:Tag'←Tagn,Lab'←Labn
14:end for
15:data←wi*||Tag||Tagn||Lab||Labn||ran
16:将data随机地插入Tw树Ρ(l)路径的一个未初始化的节点
17:end for
具体地,所述对所述关键词索引中的每一关键词加密,包括:
利用Upload算法对所述关键词索引中的每一关键词加密;
其中,所述Upload算法包括:
检索Tw树步骤:检索l∈H1(K,w)集合中的每一个元素,并对Tw树进行访问,直到找到Tw树中包含关键词w的第一个节点,通过解密该第一节点的密文数据得到w||Tag0||Tagk+1||Lab0||Labk+1||ran,其中,Tag0代表第一个与关键词w相关的索引密文在Td树中存储的路径为P(Tag0),Lab0代表第一个与关键词w相关的索引密文在Td树中存储的判断标记为Lab0,Tagk+1代表下一个与关键词w相关的索引密文将插入Td树的路径P(Tagk+1)中,Labk+1代表下一个与关键词w相关的索引密文在Td树中存储的判断标记为Labk+1;
索引密文插入Td树步骤:根据Tagk+1、Labk+1对Td树进行访问,以将索引密文插入到Td树上路径为P(Tagk+1)中的一个原始数据为无效数据的叶子节点上;
更新Tw树步骤:重新随机选择下一个与关键词w相关的索引密文的存储路径以及判断标记,并将数据w||Tag0||Tagk+2||Lab0||Labk+2||ran重新插入Tw树中,其插入路径在集合H1(K,w)中随机选择,并且将插入路径隐藏在一个元素个数小于预设阈值的随机集合中。
具体地,所述对Tw树进行访问包括:
利用AccessTree算法对Tw树进行访问;其中,所述AccessTree算法包括:
依据Tw树上的叶子节点所在的路径,将该路径上的所有数据发送给群组成员,群组成员利用私钥ski解密数据得到明文数据;
对所述明文数据进行重新加密,并返回给云服务器CS;
其中,所述群组成员利用私钥ski解密数据得到明文数据,包括:
群组成员利用私钥ski生成信息[D=ds,E=es],并发送至云服务器CS,令Tw树上的叶子节点存储的密文为C=[C1=e(g1,g2 r)m,C2=hr,C3=gr],则云服务器CS通过以下公式可得:
当群组成员接收到e(C2,E)·e(C3,D)=e(g,g2)r·s后,恢复e(g,g2)r,得到明文数据m=C1/e(g1,g2)r。
具体地,对Td树进行访问包括:
利用AccessTree算法对Td树进行访问;其中,所述AccessTree算法包括:
依据Td树上的叶子节点所在的路径,将该路径上的所有数据发送给群组成员,群组成员利用私钥ski解密数据得到明文数据;
对所述明文数据进行重新加密,并返回给云服务器CS;
其中,所述群组成员利用私钥ski解密数据得到明文数据,包括:
群组成员利用私钥ski生成信息[D=ds,E=es],并发送至云服务器CS,令Td树上的叶子节点存储的密文为C=[C1=e(g1,g2 r)m,C2=hr,C3=gr],则云服务器CS通过以下公式可得:
当群组成员接收到e(C2,E)·e(C3,D)=e(g,g2)r·s后,恢复e(g,g2)r,得到明文数据m=C1/e(g1,g2)r。
可以理解的是,二叉树访问是整个方案构造的基础,不管是群组成员上传检索索引,还是进行关键词检索,都需要利用到二叉树访问,记为AccessTree算法。AccessTree算法的输入有6个参数,ski为群组成员的私钥;T为访问树的类型,Tw树或者Td树;L为T树相应的高度;l为T树的叶子节点;lab为访问标记,AccessTree算法就是实现群组成员访问T树路径P(l)上包含lab的节点;data为更新数据,群组成员的每一次调用AccessTree算法,若寻找到包含lab的节点,都需要将该节点存储的数据换成data。
AccessTree算法其实是依据叶子节点所在的路径,将该路径上的所有数据发送给群组成员,然后群组成员解密数据得到明文数据,然后将该路径的数据重新加密后,返回给云服务器CS。
关于整个解密的过程,群组成员首先利用私钥ski生成一个信息[D=ds,E=es],然后发送给云服务器CS,令二叉树节点存储的密文为C=[C1=e(g1,g2 r)m,C2=hr,C3=gr],云服务器CS通过以下公式可得:
因此当群组成员接收到e(C2,E)·e(C3,D)=e(g,g2)r·s后,通过该式计算可恢复e(g,g2)r,最终将明文m=C1/e(g1,g2)r解密出来。
示例性的,如图3所示,访问一个高度为3的二叉树,有两个圈的节点代表该节点存储的数据进行了重加密运算;一个较密集的虚线圈的节点代表这是根节点到叶子节点路径上的一个包含lab标记的节点;两个较密集的虚线圈的节点代表该包含lab标记的节点被新的数据覆盖了。
可以理解的是,当群组成员ui想要分享上传标识为idf的数据时,首先从该数据中提出关键词索引,记为W={w1,w2,...,wk},然后随机选择一个对称密钥Kf,并利用对称加密算法加密数据,最后通过对关键词索引中的每一个关键词w运行一次Upload算法,将索引密文上传给CS;可以理解的是,InitTree算法中的关键词集合W*为所有关键词wi*的集合,而关键词索引W仅指从待分享数据中提取出来的关键词w的集合;如图4所示,关于Upload算法,能够总结为三个简单的步骤:
(1)检索Tw树步骤:通过检索l∈H1(K,w)集合中的每一个元素,并运行AccessTree算法,直到找到Tw树中包含关键词w的第一个节点,通过解密该节点密文数据能够得到w||Tag0||Tagk+1||Lab0||Labk+1||ran,
Tag0代表第一个与关键词w相关的索引密文在Td树中存储的路径为P(Tag0);
Lab0代表第一个与关键词w相关的索引密文在Td树中存储的判断标记为Lab0;
Tagk+1代表下一个与关键词w相关的索引密文将插入Td树的路径P(Tagk+1)中;
Labk+1代表下一个与关键词w相关的索引密文在Td树中存储的判断标记为Labk+1;
(2)索引密文插入到Td树步骤:根据上个步骤中得到的Tagk+1与Labk+1,群组成员通过AccessTree算法将索引密文插入到Td树路径为P(Tagk+1)中的一个原数据为无效数据的节点;
(3)更新Tw树步骤:最后,下一个与关键词w相关的索引密文的存储路径以及判断标记都需要重新随机选择,然后将数据w||Tag0||Tagk+2||Lab0||Labk+2||ran重新插入Tw树中,插入路径在集合H1(K,w)中随机选择,并且将插入路径隐藏在一个少元素个数的随机集合中。
具体地,所述当群组成员查询时,对云服务器CS中的数据进行检索,获得与关键词相关的数据标识,包括:
利用Search算法,对云服务器CS中的数据进行检索,获得与关键词相关的数据标识;
其中,所述Search算法包括:
检索Tw树步骤:检索l∈H1(K,w)集合中的每一个元素,并对Tw树进行访问,直到找到Tw树中包含关键词w的第一个节点,通过解密该第一节点的密文数据得到w||Tag0||Tagk+1||Lab0||Labk+1||ran,其中,Tag0代表第一个与关键词w相关的索引密文在Td树中存储的路径为P(Tag0),Lab0代表第一个与关键词w相关的索引密文在Td树中存储的判断标记为Lab0,Tagk+1代表下一个与关键词w相关的索引密文将插入Td树的路径P(Tagk+1)中,Labk+1代表下一个与关键词w相关的索引密文在Td树中存储的判断标记为Labk+1;
检索Td树步骤:根据Tag0、Lab0对Td树进行访问,以检索Td树路径Ρ(Tag0)上包含Lab0的节点,并获得下一个与关键词w相关的索引密文所在的Ρ(Tag)路径和判断标记Lab,直到最后一个Lab=Labk+1的节点;在这个过程中,检索到的包含判断标记Lab的叶子节点用无效数据替换原始数据;
索引密文重新插入Td树步骤:将索引密文重新插入到Td树。
可以理解的是,当群组成员ui想要在群组共享的密文数据中检索与关键词w相关的数据时,通过运算Search算法获得所有与关键词为w相关的数据标识。如图5所示,关于Search算法,能够总结为四个简单的步骤:
(1)检索Tw树步骤:这个与Upload算法中的检索Tw树步骤是一样的,通过解密能够得到w||Tag0||Tagk+1||Lab0||Labk+1||ran;
(2)检索Td树步骤:根据上个步骤获得的Tag0和Lab0,通过AccessTree算法检索Td树路径Ρ(Tag0)上包含Lab0的节点,并且能够获得下一个与w相关的索引密文所在的Ρ(Tag)路径和判断标记Lab,一直循环下去,直到最后一个Lab=Labk+1的节点;在这个过程中,检索到的包含判断标记的节点都用无效数据替换原数据;
(3)索引密文重新插入Td树步骤:在上个步骤中,检索到的包含判断标记的节点都用无效数据进行替换,因此在步骤需要将索引密文重新插入Td树,这也是为了防止访问信息的泄露。
具体地,所述群组加密数据检索方法,还包括:
当任意一个群组成员ui退出群组时,群组管理员GM随机选择以及K'∈{0,1}λ,并重新定义秘密多项式函数为f'(x)=x1+f1'x,计算更新生成新的群组公钥PK'=(G,GT,e,q,g,g1,g2,h',H1)以及新的群组主私钥msk'=(x1,x2,f1',t,K');
群组管理员GM更新当前的群组成员uj的私钥skj'=(dj',ej,K')其中,密文更新密钥并将密文更新密钥发送给云服务器CS,云服务器CS对Td树上的叶子节点进行密文更新,同时更新Tw树上的叶子节点。
PK'=(G,GT,e,q,g,g1,g2,h',H1),msk'=(x1,x2,f1',t,K');
GM还需要更新其他未撤销群组成员的私钥。对于一个未撤销群组成员uj,假设其原私钥为skj=(dj,ej,K),那么用户私钥需要被更新为skj'=(dj',ej,K'),其中GM生产密文更新密钥并将其发送给云服务器CS,然后云服务器CS对Td树的所有节点进行密文更新,假设C=[C1,C2,C3]是一个节点的密文数据,则将密文更新为C'=[C1,C2 ck,C3]。最后由于K的更新,Tw树中存储的所有与关键词相关的节点的存储位置都需要进行更新,其主要可以通过两种方法进行更新,第一种是将Tw树发给GM,由GM直接解密并更新后再上传,Tw树是一棵小容量的树,并使得这种方法可行;第二种是对关键词空间中的每一个关键词执行Upload算法中的检索Tw树以及更新Tw树这两个步骤,这是相对高效的更新方法。
本发明实施例所提供的一种群组加密数据检索方法,能够能有效解决群组加密数据分享的三个重要技术问题:①群组中的每一个成员都能够上传并分享他们的加密数据,但非群组成员不允许上传一个合法的加密数据;②群组中的每一个成员都能够在整个加密数据库中进行密文检索,无需对密文进行解密,包括其他成员上传的加密数据,但非群组成员无法进行密文检索;③已经撤销的用户不能够继续上传合法的加密数据,也不能继续检索分享的加密数据。由此可见,本发明实施例能够满足前向安全以及后向安全,前向安全是指群组成员退出群组后(既用户撤销),不能继续访问或者检索后期新加入的加密数据;后向安全是指群组成员退出群组后(既用户撤销),不能继续访问或者检索前期未访问过的加密数据。而且本发明实施例支持群组用户撤销,不需要群组用户之间共享数据密钥,能够解密数据而且对密文数据进行检索,而且不需要中间服务器,无任何访问信息泄露,所有的访问信息都被很好地隐藏了起来,具有更高的安全性。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (7)
1.一种群组加密数据检索方法,其特征在于,包括:
对系统进行初始化,并将初始化后的两个二叉树Tw、Td发送给云服务器CS进行保存;其中,Td树用于存储加密索引数据、Tw树用于存储检索关键词映射到Td树上的叶子节点的数据;
当任意一个用户ui注册进入群组时,群组管理员GM验证该用户ui的合法性,当该用户ui的合法性验证通过后,该用户ui成为群组成员,且群组管理员GM生成该用户ui的私钥ski;
当群组成员上传待分享数据时,从待分享数据中提取关键词索引,随机选择一个对称密钥Kf并利用对称加密算法加密数据,接着对所述关键词索引中的每一关键词加密,以生成索引密文并上传至云服务器CS;
当群组成员查询时,对云服务器CS中的数据进行检索,获得与关键词相关的数据标识;
其中,所述对系统进行初始化包括:
可信权威机构选取两个阶为素数q的循环群G和GT、群G的生成元g以及双线性映射e:G×G→GT、选取一个哈希函数其中,λ是系统的安全参数,是一个包含集合所有子集合的集合;群组管理员GM随机选取x1,x2,f1,以及K∈{0,1}λ,构造一个秘密多项式函数f(x)=x1+f1x,生成群组公钥PK=(G,GT,e,q,g,g1,g2,h,H1)、群组主私钥msk=(x1,x2,f1,t,K),其中, 代表模q的整数乘法群;建立两个二叉树Tw、Td,并对Tw树、Td树进行初始化;
所述群组管理员GM生成该用户ui的私钥ski,包括:
2.如权利要求1所述的群组加密数据检索方法,其特征在于,所述对Tw树、Td树进行初始化,包括:
对需分享的数据建立倒排索引集合IDi,其中,所述倒排索引集合IDi为与关键词wi*相关的数据标识集合;
群组管理员GM以明文的形式初始化Tw树以及Td树,以将倒排索引集合IDi中的数据存储于Td树、关键词wi*映射到Td树上叶子节点的数据存储于Tw树并用无效数据填充Tw树、Td树中未初始化过的叶子节点;
利用Enc加密算法对Tw树、Td树上所有的叶子节点存储的数据进行加密;
所述Enc加密算法包括:
Enc(m,PK)=[C1,C2,C3]
3.如权利要求1所述的群组加密数据检索方法,其特征在于,所述对所述关键词索引中的每一关键词加密,包括:
利用Upload算法对所述关键词索引中的每一关键词加密;
其中,所述Upload算法包括:
检索Tw树步骤:检索l∈H1(K,w)集合中的每一个元素,并对Tw树进行访问,直到找到Tw树中包含关键词w的第一个节点,通过解密该第一节点的密文数据得到w||Tag0||Tagk+1||Lab0||Labk+1||ran,其中,Tag0代表第一个与关键词w相关的索引密文在Td树中存储的路径为P(Tag0),Lab0代表第一个与关键词w相关的索引密文在Td树中存储的判断标记为Lab0,Tagk+1代表下一个与关键词w相关的索引密文将插入Td树的路径P(Tagk+1)中,Labk+1代表下一个与关键词w相关的索引密文在Td树中存储的判断标记为Labk+1;
索引密文插入Td树步骤:根据Tagk+1、Labk+1对Td树进行访问,以将索引密文插入到Td树上路径为P(Tagk+1)中的一个原始数据为无效数据的叶子节点上;
更新Tw树步骤:重新随机选择下一个与关键词w相关的索引密文的存储路径以及判断标记,并将数据w||Tag0||Tagk+2||Lab0||Labk+2||ran重新插入Tw树中,其插入路径在集合H1(K,w)中随机选择,并且将插入路径隐藏在一个元素个数小于预设阈值的随机集合中。
4.如权利要求3所述的群组加密数据检索方法,其特征在于,所述对Tw树进行访问包括:
利用AccessTree算法对Tw树进行访问;其中,所述AccessTree算法包括:
依据Tw树上的叶子节点所在的路径,将该路径上的所有数据发送给群组成员,群组成员利用私钥ski解密数据得到明文数据;
对所述明文数据进行重新加密,并返回给云服务器CS;
其中,所述群组成员利用私钥ski解密数据得到明文数据,包括:
群组成员利用私钥ski生成信息[D=ds,E=es],并发送至云服务器CS,令Tw树上的叶子节点存储的密文为C=[C1=e(g1,g2 r)m,C2=hr,C3=gr],则云服务器CS通过以下公式可得:
当群组成员接收到e(C2,E)·e(C3,D)=e(g,g2)r·s后,恢复e(g,g2)r,得到明文数据m=C1/e(g1,g2)r。
5.如权利要求3所述的群组加密数据检索方法,其特征在于,对Td树进行访问包括:
利用AccessTree算法对Td树进行访问;其中,所述AccessTree算法包括:
依据Td树上的叶子节点所在的路径,将该路径上的所有数据发送给群组成员,群组成员利用私钥ski解密数据得到明文数据;
对所述明文数据进行重新加密,并返回给云服务器CS;
其中,所述群组成员利用私钥ski解密数据得到明文数据,包括:
群组成员利用私钥ski生成信息[D=ds,E=es],并发送至云服务器CS,令Td树上的叶子节点存储的密文为C=[C1=e(g1,g2 r)m,C2=hr,C3=gr],则云服务器CS通过以下公式可得:
当群组成员接收到e(C2,E)·e(C3,D)=e(g,g2)r·s后,恢复e(g,g2)r,得到明文数据m=C1/e(g1,g2)r。
6.如权利要求5所述的群组加密数据检索方法,其特征在于,所述当群组成员查询时,对云服务器CS中的数据进行检索,获得与关键词相关的数据标识,包括:
利用Search算法,对云服务器CS中的数据进行检索,获得与关键词相关的数据标识;
其中,所述Search算法包括:
检索Tw树步骤:检索l∈H1(K,w)集合中的每一个元素,并对Tw树进行访问,直到找到Tw树中包含关键词w的第一个节点,通过解密该第一节点的密文数据得到w||Tag0||Tagk+1||Lab0||Labk+1||ran,其中,Tag0代表第一个与关键词w相关的索引密文在Td树中存储的路径为P(Tag0),Lab0代表第一个与关键词w相关的索引密文在Td树中存储的判断标记为Lab0,Tagk+1代表下一个与关键词w相关的索引密文将插入Td树的路径P(Tagk+1)中,Labk+1代表下一个与关键词w相关的索引密文在Td树中存储的判断标记为Labk+1;
检索Td树步骤:根据Tag0、Lab0对Td树进行访问,以检索Td树路径Ρ(Tag0)上包含Lab0的节点,并获得下一个与关键词w相关的索引密文所在的Ρ(Tag)路径和判断标记Lab,直到最后一个Lab=Labk+1的节点;在这个过程中,检索到的包含判断标记Lab的叶子节点用无效数据替换原始数据;
索引密文重新插入Td树步骤:将索引密文重新插入到Td树。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111359762.7A CN114168703A (zh) | 2021-11-17 | 2021-11-17 | 一种群组加密数据检索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111359762.7A CN114168703A (zh) | 2021-11-17 | 2021-11-17 | 一种群组加密数据检索方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114168703A true CN114168703A (zh) | 2022-03-11 |
Family
ID=80479324
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111359762.7A Pending CN114168703A (zh) | 2021-11-17 | 2021-11-17 | 一种群组加密数据检索方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114168703A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117097488A (zh) * | 2023-10-19 | 2023-11-21 | 成都理工大学 | 基于节点寻路的设备群组安全验证方法 |
-
2021
- 2021-11-17 CN CN202111359762.7A patent/CN114168703A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117097488A (zh) * | 2023-10-19 | 2023-11-21 | 成都理工大学 | 基于节点寻路的设备群组安全验证方法 |
CN117097488B (zh) * | 2023-10-19 | 2023-12-19 | 成都理工大学 | 基于节点寻路的设备群组安全验证方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112019591B (zh) | 一种基于区块链的云数据共享方法 | |
US10803194B2 (en) | System and a method for management of confidential data | |
US10050777B2 (en) | Method of updating a file tree stored on a storage server | |
Jung et al. | Control cloud data access privilege and anonymity with fully anonymous attribute-based encryption | |
CN114065265B (zh) | 基于区块链技术的细粒度云存储访问控制方法、系统及设备 | |
CN108768951B (zh) | 一种云环境下保护文件隐私的数据加密和检索方法 | |
Xhafa et al. | An efficient PHR service system supporting fuzzy keyword search and fine-grained access control | |
CN111143471B (zh) | 一种基于区块链的密文检索方法 | |
CN103731432A (zh) | 一种支持多用户的可搜索加密系统及方法 | |
US20140006806A1 (en) | Effective data protection for mobile devices | |
EP3375129A1 (en) | Method for re-keying an encrypted data file | |
CN110457930A (zh) | 策略隐藏的可追踪撤销恶意用户的属性基加密方法及系统 | |
US20140108814A1 (en) | Cryptographic key management | |
CN105282167A (zh) | 一种可搜索的无证书公钥加密方法 | |
Islam et al. | Attribute-based encryption scheme for secure multi-group data sharing in cloud | |
CN113411323B (zh) | 基于属性加密的医疗病历数据访问控制系统及方法 | |
Zhang et al. | Feacs: A flexible and efficient access control scheme for cloud computing | |
CN107294701B (zh) | 具有高效密钥管理的多维密文区间查询装置及查询方法 | |
Lv et al. | A secure and efficient revocation scheme for fine-grained access control in cloud storage | |
CN114168703A (zh) | 一种群组加密数据检索方法 | |
CN114640458A (zh) | 云边协同环境下细粒度的多用户安全可搜索加密方法 | |
Jiang et al. | A revocable outsourcing attribute-based encryption scheme | |
Elkhiyaoui et al. | Privacy preserving delegated word search in the cloud | |
KR101590270B1 (ko) | 중복 제거를 통해 하나의 데이터를 저장하는 클라우드 서비스 프로바이더 | |
CN111970296A (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 |