一种多用户动态关键词可搜索加密方法转让专利

申请号 : CN201610200952.7

文献号 : CN105897419B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 江颉林鹏陈铁明王小号陈波

申请人 : 浙江工业大学

摘要 :

一种多用户动态关键词可搜索加密方法,包括如下步骤:步骤1、输入参数1k,生成系统参数;步骤2、输入用户标识uid,输出用户私钥Kuid与用户公钥PKuid;步骤3、输入用户标识uid,根据uid撤销用户;步骤4、输入文件集合F,关键词集合W,用户私钥Kuid与用户公钥PKuid,生成索引结构I;步骤5、输入用户私钥Kuid,关键词w,输出搜索凭证Tw;步骤6、输入用户标识uid,搜索凭证Tw,输出满足条件的索引Iw;步骤7、输入文件f,输入关键词集合W,用户私钥Kuid,输出添加凭证TA;步骤8、输入添加凭证TA,进行添加操作;步骤9、输入文件f,用户私钥Kuid,输出添加凭证Td;步骤10、输入删除凭证,进行删除操作。本发明提供一种动态更新性能较好、搜索效率较高的一种多用户动态关键词可搜索加密方法。

权利要求 :

1.一种多用户动态关键词可搜索加密方法,其特征在于:该可搜素加密方法包括如下步骤:步骤1、输入参数1k,生成系统参数,过程如下:初始化生成双线性群G1,G2,群Zp,两个随机向量机H1:{0,1}*→{0,1}*,H2:{0,1}*→{0,

1}*,哈希函数h:{0,1}*→G1,随机选取a,b,c∈Zp,并将a,b,c作为系统密钥MK保存;

MK={a,b,c}  (1)

步骤2、输入用户标识uid,输出用户私钥Kuid与用户公钥PKuid,过程如下:授权机构为用户组中的用户分发密钥,随机选取Kuid∈Zp,然后根据公式(2)计算PKuid,其中g为群G1的生成元:授权机构通过安全信道将用户私钥Kuid分发给用户,并同时将用户标识与公钥{uid,PKuid}分发给云服务器;

步骤3、输入用户标识uid:云服务器根据用户标识uid,删除其对应的公钥PKuid即可完成用户撤销操作;

步骤4、输入文件集合F,关键词集合W,用户私钥Kuid与用户公钥PKuid,生成索引结构I,用户完成与服务器的交互,开始构建加密索引,令As和Ad表示搜索数组和删除数组,令Ts和Td表示速查表,按照如下处理:

4.1)构建Lw列表,Lw表示包含关键词w的文件链表,将Lw中的节点 随机存储于搜索数组As中,并对各项按公式(6)加密,其中addrs表示节点N在As中对应的位置,id表示文件id,其中 随机选取ri∈Zp,其中P(w),F(w),G(w)的计算需要交互执行;

4.2)保存Lw列表中第一个节点信息到Ts,按公式(7)计算,其中addrd表示节点在Ad中对应的位置, 表示N1在Ad中对应的节点;

4.3)构建Lf列表,Lf表示包含文件f的关键词链表,将Lf中的节点 随机存储于删除数组Ad中,并对各项按公式(8)加密,其中N+1表示N节点后一节点,N-1则为前一节点,其中 随机选取ri∈Zp;

4.4)保存Lf列表中第一个节点信息到Td,按公式(9)计算:

4.5)令(F1,F2,...,Fz)为As中未使用节点,对应的Ad中节点为(F1',F2',...,Fz'),令Ts[free]=(addrs(Fz),0log|A|),并令As[addrs(Fi)]={0log|A|,addrs(Fi-1),addrd(Fi′)};其中|A|表示As与Ad的长度;

4.6)Ad,As将剩余节点填充为随机字符串,最终将(As,Ts,Ad,Td)传至云服务器;

步骤5、输入用户私钥Kuid,关键词w,输出搜索凭证Tw,过程如下:用户利用私钥,按公式(10)生成搜索凭证Tw,并将搜索凭证交于服务器;

步骤6、输入用户标识uid,搜索凭证Tw,输出满足条件的索引Iw,过程如下:云服务器获得用户搜索凭证Tw,根据uid,查找对应的PKuid,分别按公式(11)计算:云服务器从Ts中查询F(w),若不存在该项,则返回NULL,若Ts存在F(w),则令查找N1=As[α],令v1,r1=As[α],计算对i≥2,继续按上述步骤计算,直到αi+1=0,最终返回结果I={id1,...,idm};

步骤7、输入文件f,输入关键词集合W,用户私钥Kuid,输出添加凭证TA,过程如下:用户与服务器进行交互,交互过程在后文进行说明,交互结束后,用户生成F(x),G(x),P(x),其中x∈{f,w1,w2,...},随机选取ri∈Zp,并按照公式(12)生成添加凭证TA:TA={F(f),G(f),λ1,λ2,...λ|w|}步骤8、输入添加凭证TA,进行添加操作,遍历λ1,λ2,...λ|w|,对每个λi做如下操作:

8.1)查找free列表中第后一个节点,即 计算

8.2)更新free列表,即令

8.3)取关键词对应文件列表中的头节点, 若Ts[λi[1]]不存在,则令α1, 都为0;

8.4)将新节点放置到 并更新该点前向节点信息,

8.5)更新Ts信息,令Ts

8.6)更新 信息,令 其中 若Ts[λi[1]]不存在,则跳过该步骤;

8.7)更新新增节点对应的删除列表中的信息,即令当i=|W|,则用0代替

8.8)若i=1,则令

步骤9、输入文件f,用户私钥Kuid,输出添加凭证Td,过程如下:按公式(13)生成删除凭证,并向服务器发送步骤10、输入删除凭证TD,过程如下:

首先取出uid对应的用户公钥PKuid,按式(14)执行:服务端取出Lf列表,即计算 并从Td中移除该项;

遍历Lf列表,令1≤i≤|Lf|,继续执行以下步骤:

10.1)计算 其中(Di,r)=Ad[α′i];

10.2)删除Di节点,即用随机字符串填充Ad[α′i];

10.3)取得free节点列表中最后一个节点,即

10.4)更新Ts[free],令Ts[free]={α4,0};

10.5)若存在N-1节点,即α5≠0,则 其中{β1,β2,r-1}=As[α5],同时更新该节点在删除列表中的对应信息即

其中

10.6)若不存在N-1节点,即α5=0,且不存在N+1,即α5=0,存在直接删除该节点对应的Ts项,即Ts[μ];

10.7)若不存在N-1节点,即α5=0,但是存在N+1,即α5≠0,则删除节点是对应关键词链表的头节点,需要更新Ts[μ],使得它指向N+1,即令

10.8)若存在N+1节点,即α5≠0,则令其中

10.9)令α′i+1=α1。

2.如权利要求1所述的一种多用户动态关键词可搜索加密方法,其特征在于:所述步骤

4和步骤7中,用户与云服务器交互执行,交互过程如下:交互1:首先用户遍历文件集合F={f1,f2,...},W={w1,w2,...},对集合中的每个元素xi,首先随机选取ri∈Zp,按公式(3)计算:将Q={Q(x)|x∈W|x∈F},uid发送至云服务器,云服务器进行交互2;

交互2:云服务器取出uid对应的PKuid,按公式(4)计算:F′(xi)=e(AKuid,Q(xi)),G′(xi)=e(BKuid,Q(xi)),P′(xi)=e(CKuid,Q(xi))  (4)服务器将F′(xi),G′(xi),P′(xi)发送给用户,用户进行交互3;

交互3:用户根据公式(5)计算:

说明书 :

一种多用户动态关键词可搜索加密方法

技术领域

[0001] 本发明属于信息安全可搜索加密领域,尤其是一种关键词可搜索加密方法。

背景技术

[0002] 随着云技术的快速发展,越来越多企业或个人倾向于将数据存于云服务器中。为了保证上传数据的安全性,用户一般会对数据进行加密。但是加密后的数据失去了语义特性,云服务器无法向用户提供搜索服务。关键词可搜索加密是一种特殊的加密技术,能够解决上述问题。该技术能够实现合法用户搜索关键词密文,并且保证攻击者无法通过关键词密文或者搜索凭证获得用户查询的关键词信息。
[0003] 在云环境应用中,多用户共享数据是常见应用。例如,考虑如下场景,学校内的教师可能会经常分享教学或者学术研究成果,为了方便管理和分享,可能会将数据存于云端,并且可能希望仅仅该校教师能够读取、上传、搜索数据。该场景同样支持多对多模型,但是用户数量被限制在一个组织团体内。现有的方案在多用户、动态更新、用户撤销、搜索效率等方面存在不足。

发明内容

[0004] 为了克服现有关键词可搜索加密方法的动态更新性能较差、搜索效率较低的不足,本发明提供一种动态更新性能较好、搜索效率较高的一种多用户动态关键词可搜索加密方法。
[0005] 为了解决上述技术问题提出如下的技术方案:
[0006] 一种多用户动态关键词可搜索加密方法,该方法包括如下步骤:
[0007] 步骤1、输入参数1k,生成系统参数,过程如下:
[0008] 初始化生成双线性群G1,G2,群Zp,两个随机向量机H1:{0,1}*→{0,1}*,H2:{0,1}*→{0,1}*,哈希函数h:{0,1}*→G1,随机选取a,b,c∈Zp,并将a,b,c作 为系统密钥MK保存;
[0009] MK={a,b,c}  (1)
[0010] 步骤2、输入用户标识uid,输出用户私钥Kuid与用户公钥PKuid,过程如下:
[0011] 授权机构为用户组中的用户分发密钥,随机选取Kuid∈Zp,然后根据公式(2)计算PKuid,其中g为群G1的生成元:
[0012]
[0013] 授权机构通过安全信道将用户私钥Kuid分发给用户,并同时将用户标识与用户公钥{uid,PKuid}分发给云服务器;
[0014] 步骤3、输入用户标识uid:云服务器根据用户标识uid,删除其对应的公钥PKuid即可完成用户撤销操作;
[0015] 步骤4、输入文件集合F,关键词集合W,用户私钥Kuid与用户公钥PKuid,生成索引结构I,用户完成与服务器的交互,开始构建加密索引,令As和Ad表示搜索数组和删除数组,令Ts和Td表示速查表,按照如下处理:
[0016] 4.1)构建Lw列表,Lw表示包含关键词w的文件链表,将Lw中的节点  随机存储于搜索数组As中,并对各项按公式(6)加密,其中addrs表示节点N在As中对应的位置,id表示文件id,其中 随机选取ri∈Zp,其中P(w),F(w),G(w)的计算需要交
互执行;
[0017]
[0018] 4.2)保存Lw列表中第一个节点信息到Ts,按公式(7)计算,其中addrd表示节点在Ad中对应的位置, 表示N在Ad中对应的节点;
[0019]
[0020] 4.3)构建Lf列表,Lf表示包含文件f的关键词链表,将 随机存储于删除数组Ad中,并对各项按公式(8)加密,其中N+1表示N节点后一节点,N-1则为前一节点,其中随机选取ri∈Zp;
[0021]
[0022] 4.4)保存Lf列表中第一个节点信息到Td,按公式(9)计算:
[0023]
[0024] 4.5)令(F1,F2,...,Fz)为As中未使用节点,对应的Ad中节点为(F1',F2',...,Fz'),[0025] 令Ts[free]:=(addrs(Fz),0log|A|),并令
[0026] As[addrs(Fi)]:={0log|A|,addrs(Fi-1),addrd(Fi′)};其中|A|表示As与Ad的长度。
[0027] 4.6)Ad,As将剩余节点填充为随机字符串,最终将(As,Ts,Ad,Td)传至云服务器;
[0028] 步骤5、输入用户私钥Kuid,关键词w,输出搜索凭证Tw,过程如下:
[0029] 用户利用私钥,按公式(10)生成搜索凭证,并将搜索凭证交于服务器,Tw为搜索凭证;
[0030]
[0031] 步骤6、输入用户标识uid,搜索凭证Tw,输出满足条件的索引Iw,过程如下:
[0032] 云服务器获得用户搜索凭证Tw,根据uid,查找对应的PKuid,分别按公式(11)计算:
[0033]
[0034] 云服务器从Ts中查询F(w),若不存在该项,则返回NULL,若Ts存在F(w),则令查找N1=As[α],令v1,r1=As[α],计算
[0035] id1, 对i≥2,继续按上述步骤计算,直到αi+1=0,最终返回结果I={id1,...,idm};
[0036] 步骤7、输入文件f,输入关键词集合W,用户私钥Kuid,输出添加凭证TA,过程如下:
[0037] 用户与服务器进行交互,交互过程在后文进行说明,交互结束后,用户生成F(x),G(x),P(x),其中x∈{f,w1,w2,...},随机选取ri∈Zp,并按照公式(12)生成添加凭证TA:
[0038]
[0039] 步骤8、输入添加凭证TA,进行添加操作,遍历λ1,λ2,...λ|w|,对每个λi做如下操作:
[0040] 8.1)查找free列表中第后一个节点,即 计算
[0041] 8.2)更新free列表,即令
[0042] 8.3)取关键词对应文件列表中的头节点, 若Ts[λi[1]]不存在,则令α1, 都为0;
[0043] 8.4)将新节点放置到 并更新该点前向节点信息,
[0044]
[0045] 8.5)更新Ts信息,令
[0046] 8.6)更新 信息,令 其中
[0047] 若Ts[λi[1]]不存在,则跳过该步骤;
[0048] 8.7)更新新增节点对应的删除列表中的信息,即令
[0049] 当i=|W|,则用0代替
[0050] 8.8)若i=1,则令
[0051] 步骤9、输入文件f,用户私钥Kuid,输出添加凭证Td,过程如下:
[0052] 按公式(13)生成删除凭证,并向服务器发送
[0053]
[0054] 步骤10、输入删除凭证TD,过程如下:
[0055] 首先取出uid对应的用户公钥PKuid,按式(14)执行:
[0056]
[0057] 服务端取出Lf列表,即计算 并从Td中移除该项;
[0058] 遍历Lf列表,令1≤i≤|Lf|,继续执行以下步骤:
[0059] 10.1)计算 其中
[0060] (Di,r):=Ad[α′i];
[0061] 10.2)删除Di节点,即用随机字符串填充Ad[α′i];
[0062] 10.3)取得free节点列表中最后一个节点,即
[0063] 10.4)更新Ts[free],令Ts[free]:={α4,0};
[0064] 10.5)若存在N-1节点,即α5≠0,则 其中
[0065] {β1,β2,r-1}:=As[α5],同时更新该节点在删除列表中的对应信息即[0066] 其中
[0067]
[0068] 10.6)若不存在N-1节点,即α5=0,且不存在N+1,即α5=0,存在直接删除该节点对应的Ts项,即Ts[μ];
[0069] 10.7)若不存在N-1节点,即α5=0,但是存在N+1,即α5≠0,则删除节点是对应关键词链表的头节点,需要更新Ts[μ],使得它指向N+1。即令
[0070]
[0071] 10.8)若存在N+1节点,即α5≠0,则令
[0072] 其中
[0073]
[0074] 10.9)令α′i+1:=α1。
[0075] 进一步,所述步骤4和步骤7中,用户与云服务器交互执行,交互过程如下:
[0076] 交互1:首先用户遍历文件集合F={f1,f2,...},W={w1,w2,...},对集合中的每个元素xi,首先随机选取ri∈Zp,按公式(3)计算:
[0077]
[0078] 将Q={Q(x)|x∈W|x∈F},uid发送至云服务器,云服务器进行交互2;
[0079] 交互2:云服务器取出uid对应的PKuid,按公式(4)计算:
[0080] F′(xi)=e(AKuid,Q(xi)),G′(xi)=e(BKuid,Q(xi)),P′(xi)=e(CKuid,Q(xi))  (4)[0081] 服务器将F′(xi),G′(xi),P′(xi)发送给用户,用户进行交互3;
[0082] 交互3:用户根据公式(5)计算:
[0083]
[0084] 本发明的有益效果为:动态更新性能较好、搜索效率较高。

具体实施方式

[0085] 下面对本发明做进一步说明。
[0086] 一种多用户动态关键词可搜索加密1方法,包括如下步骤:
[0087] 步骤1、Setup(1k):输入参数1k,生成系统参数,过程如下:
[0088] 初始化生成双线性群G1,G2,群Zp,两个随机向量机H1:{0,1}*→{0,1}*,H2:{0,1}*→{0,1}*,哈希函数h:{0,1}*→G1,随机选取a,b,c∈Zp,并将a,b,c作为系统密钥MK保存;
[0089] MK={a,b,c}  (1)
[0090] 步骤2、KeyGenerate(uid)→Kuid,PKuid:输入用户标识uid,输出用户私钥Kuid与用户公钥PKuid由授权机构执行,授权机构为用户组中的用户分发密钥,随机选取Kuid∈Zp,然后根据公式(2)计算PKuid,其中g为群G1的生成元:
[0091]
[0092] 授权机构通过安全信道将用户私钥Kuid分发给用户,并同时将用户标识与用户公钥{uid,PKuid}分发给云服务器;
[0093] 步骤3、Revoke(uid):输入用户标识uid
[0094] 由云服务器执行,云服务器根据用户标识uid,删除其对应的公钥PKuid即可完成用户撤销操作;
[0095] 步骤4、BuildIndex(F,W,Kuid;PKuid)→I,输入文件集合F,关键词集合W,用户私钥Kuid与用户公钥PKuid,生成索引结构I;
[0096] 用户与服务器交互执行,交互过程如下:
[0097] 交互1:首先用户遍历文件集合F={f1,f2,...},W={w1,w2,...},对集合中的[0098] 每个元素xi,首先随机选取ri∈Zp,按公式(3)计算。
[0099]
[0100] 将Q={Q(x)|x∈W|x∈F},uid发送至云服务器,云服务器进行交互2;
[0101] 交互2:云服务器取出uid对应的PKuid,按公式(4)计算。
[0102] F′(xi)=e(AKuid,Q(xi)),G′(xi)=e(BKuid,Q(xi)),P′(xi)=e(CKuid,Q(xi))  (4)[0103] 服务器将F′(xi),G′(xi),P′(xi)发送给用户,用户进行交互3;
[0104] 交互3:用户根据公式(5)计算。
[0105] F(x)=F′(x)r,G(x)=G′(x)r,P(x)=P′(x)r  (5)
[0106] 至此,用户完成与服务器的交互,开始构建加密索引,令As和Ad表示搜索数组和删除数组,令Ts和Td表示速查表;
[0107] 4.1)构建Lw列表,Lw表示包含关键词w的文件链表,将Lw中的节点  随机存储于搜索数组As中,并对各项按公式(6)加密,其中addrs表示节点N在As中对应的位置,id表示文件id,其中 随机选取ri∈Zp。
[0108]
[0109] 4.2)保存Lw列表中第一个节点信息到Ts,按公式(7)计算,其中addrd表示节点在Ad中对应的位置, 表示N在Ad中对应的节点;
[0110]
[0111] 4.3)构建Lf列表,Lf表示包含文件f的关键词链表,将 随机存储于删除数组Ad中,并对各项按公式(8)加密,其中N+1表示N节点后一节点,N-1则为前一节点,其中随机选取ri∈Zp;
[0112]
[0113] 4.4)保存Lf列表中第一个节点信息到Td,按公式(9)计算:
[0114]
[0115] 4.5)令(F1,F2,…,Fz)为As中未使用节点,对应的Ad中节点为(F1',F2',…,Fz'),[0116] 令Ts[free]:=(addrs(Fz),0log|A|),并令
[0117] As[addrs(Fi)]:={0log|A|,addrs(Fi-1),addrd(Fi′)};
[0118] 4.6)Ad,As将剩余节点填充为随机字符串,最终将(As,Ts,Ad,Td)传至云服务器;
[0119] 步骤5、SearchTokenGen(Kuid,w)→Tw,输入用户私钥Kuid,关键词w,输出搜索凭证Tw;
[0120] 由用户执行,用户利用私钥,按公式(10)生成搜索凭证Tw,并将搜索凭证交于服务器;
[0121]
[0122] 步骤6、Search(uid,Tw,PKuid)→Iw:输入用户标识uid,搜索凭证Tw,输出满足条件的索引Iw。
[0123] 由云服务器执行,云服务器获得用户搜索凭证Tw,根据uid,查找对应的PKuid,分别按公式(11)计算:
[0124]
[0125] 云服务器从Ts中查询F(w),若不存在该项,则返回NULL,若Ts存在F(w),则令查找N1=As[α]=v1,r1,计算
[0126] id1, 对i≥2,继续按上述步骤计算,直到αi+1=0,最终返回结果I={id1,...,idm};
[0127] 步骤7、AddTokenGen(f,W,Kuid)→TA:输入文件f,输入关键词集合W,用户私钥Kuid,输出添加凭证TA;
[0128] 用户与服务器进行交互,与BuildIndex(F,W,Kuid;PKuid)→I中交互过程相同,交互结束后,用户生成F(x),G(x),P(x),其中x∈{f,w1,w2,...},随机选取ri∈Zp,并按照公式(12)生成添加凭证TA:
[0129]
[0130] 步骤8、Add(TA):输入添加凭证TA,进行添加操作
[0131] 由云服务器执行,遍历λ1,λ2,...λ|w|,对每个λi做如下操作:
[0132] 8.1)查找free列表中第后一个节点,即 计算
[0133] 8.2)更新free列表,即令
[0134] 8.3)取关键词对应文件列表中的头节点, 若Ts[λi[1]]不存在,则令α1, 都为0;
[0135] 8.4)将新节点放置到 并更新该点前向节点信息,
[0136]
[0137] 8.5)更新Ts信息,令
[0138] 8.6)更新 信息,令 其中
[0139] 若Ts[λi[1]]不存在,则跳过该步骤;
[0140] 8.7)更新新增节点对应的删除列表中的信息,即令
[0141] 当i=|W|,则用0代替
[0142] 8.8)若i=1,则令
[0143] 步骤9、DelTokenGen(f,Kuid)→TD:输入文件f,用户私钥Kuid,输出添加凭证Td[0144] 由用户执行,按公式(13)生成删除凭证,并向服务器发送
[0145]
[0146] 步骤10、Del(TD):输入删除凭证TD
[0147] 由云服务器执行,首先取出uid对应的用户公钥PKuid,按式(14)执行:
[0148]
[0149] 服务端取出Lf列表,即计算 并从Td中移除该项;
[0150] 遍历Lf列表,令1≤i≤|Lf|,继续执行以下步骤:
[0151] 10.1)计算 其中
[0152] (Di,r):=Ad[α′i];
[0153] 10.2)删除Di节点,即用随机字符串填充Ad[α′i];
[0154] 10.3)取得free节点列表中最后一个节点,即
[0155] 10.4)更新Ts[free],令Ts[free]:={α4,0};
[0156] 10.5)若存在N-1节点,即α5≠0,则 其中
[0157] {β1,β2,r-1}:=As[α5],同时更新该节点在删除列表中的对应信息即[0158] 其中
[0159]
[0160] 10.6)若不存在N-1节点,即α5=0,且不存在N+1,即α5=0,存在直接删除该节点对应的Ts项,即Ts[μ];
[0161] 10.7)若不存在N-1节点,即α5=0,但是存在N+1,即α5≠0,则删除节点是对应关键词链表的头节点,需要更新Ts[μ],使得它指向N+1。即令
[0162]
[0163] 10.8)若存在N+1节点,即α5≠0,则令
[0164] 其中
[0165]
[0166] 10.9)令α′i+1:=α1 。
[0167] 本实例的多用户动态关键词可搜索加密方法,有权限访问数据的用户形成可信组,组内用户各自持有用于搜索的密钥。利用该密钥,能够高效地实现文件搜索,文件索引添加,文件索引删除。并且可随时撤销或者添加用户到可信组中。