首页 / 专利库 / 电脑安全 / 密码学 / 一种可高效更新权限的多用户可搜索加密方法和系统

一种可高效更新权限的多用户可搜索加密方法和系统

阅读:775发布:2020-05-14

专利汇可以提供一种可高效更新权限的多用户可搜索加密方法和系统专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种可高效更新权限的多用户可搜索加密方法,属于 云 计算存储和 密码学 技术领域。数据拥有者先确定查询用户对文件的权限,构建出 访问 控制列表,然后将数据加密生成对应的密文数据以及元数据,并将它们上传到云服务端。同时数据拥有者返回给查询用户相应的访问密钥,用来从向云服务端生成查询认证。用户检索时,发送相应关键字的查询密文标识以及由认证密钥生成的认证标识。服务端接收到这些信息后,先根据认证标识进行认证,确定有权查询后再进行密文上的检索。本发明一方面避免了数据拥有者和查询用户的实时交互;另一方面使数据拥有者可以高效地更新查询用户的权限且不影响其他用户;再一方面可扩展到大规模加密 数据库 中。,下面是一种可高效更新权限的多用户可搜索加密方法和系统专利的具体信息内容。

1.一种可高效更新权限的多用户可搜索加密方法,其特征在于,包括以下步骤:
(1)用户端利用从数据拥有者处获取的密钥Ωi生成查询关键字密文,并将其发给服务端;步骤(1)包括以下子步骤:
(1-1)用户端利用从数据拥有者获取密钥Ωi,其包括对关键字进行加密的密钥KS、KX、KZ,第i个用户端能够查询的密文关键字的集合CSKi={cski,w1,cski,w2,…,cski,wU},以及数据拥有者分配给第i个用户端的标识uki,其中wj表示用户端能够查询的第j个密文关键字,且j∈[1,U],U表示第i个用户端能够查询的密文关键字总数量;其中密钥Ωi是通过如下步骤构建:
A、数据拥有者得到该加入用户的公钥pki及其可以访问的关键字集合 通过密钥KR以及公钥pki计算用户随机数ri=Fp(KR,pki),并计算用户标识 初始化密钥集合
CSKi为空集;
B、对于 中每个关键字w执行如下步骤,利用密钥KC计算关键字密钥值Kw=F(KC,w),并以此为密钥,计算用户公钥pki的哈希值cski,w=H1(Kw,pki),然后将cski,w加入到CSKi集合中,将公钥pki添加到与关键字w关联的访问控制列表KAL[w]中;
C、数据拥有者将KS,KX,KZ,CSKi,uki封装成Ωi返回给该用户;
(1-2)用户端确定其所要查询的关键字集合 其中 表示用户端所
要查询的第k个关键字,且k∈[1,n],n表示用户端所要查询的关键字的总数量;
(1-3)在第i个用户端能够查询的密文关键字的集合CSKi中找到与所要查询的第一个关键字 对应的密文关键字 用两个不同的带密钥的哈希函数分别对密文关键字
和第i个用户端的标识uki进行计算,以分别得到第一哈希值 以及第二哈希

(1-4)对于关键字集合 中除了 外的所有关键字,计算其交叉查询
密文值
其中Fp表示伪随机函数;ski表示第i个用户持有的私钥;
(1-5)将步骤(1-4)得到的交叉查询密文值、第一哈希值 以及第二哈希值
作为查询关键字密文发送给服务端;
(2)服务端根据来自于用户端的查询关键字密文获取满足用户端查询条件的加密文件标识符集合,并将该加密文件标识符集合发送到用户端;步骤(2)包括以下子步骤:
(2-1)服务端接收用户发来查询关键字密文,从构建好的用户关键字索引集合CSet中获取第一哈希值 所对应的密文e1,并根据第二哈希值 和密文e1计算明文
(2-2)服务端判断明文p1的最后λ比特是否全为0,如果不是,则过程结束,如果是,则获取提取前λ比特作为第一标签值 然后进入步骤(2-3);其中λ为8到512之间的整数;
(2-3)服务端初始化计数器cnt=1;
(2-4)服务端根据哈希算法对第一标签值 和cnt进行计算,将得到的哈希值l作为
键,判断是否能够在创建好的关键字文件标识符集合TSet中查找到键l对应的密文对(e2,y),如果是则进入步骤(2-5),否则进入步骤(2-7);
(2-5)服务端针对所有的v∈[2,n],判断是否所有的 是否都在构建好的
交叉匹配集合XSet中,如果是,则将密文对中的e2加入加密文件标识符集合R中,并进入步骤(2-6),否则进入步骤(2-6);
(2-6)服务端设置计数器cnt=cnt+1,并返回步骤(2-4);
(2-7)服务端将加密文件标识符集合R返回给用户端;
其中用户关键字索引集合CSet、关键字文件标识符集合TSet、以及交叉匹配集合XSet是通过如下步骤构建:
(a)数据拥有者初始化用户关键字索引集合CSet、关键字文件标识符集合TSet、以及交叉匹配集合XSet为空集;
(b)对于整个关键字集合W中的每个关键字w,数据拥有者构建用户权限索引表CSet、关键字文件标识符集合TSet以及交叉匹配集合XSet;
(3)数据拥有者获取授权给用户的密钥,并通知服务端根据该密钥修改用户关键字索引集合以及交叉匹配集合;步骤(3)包括以下子步骤:
(3-1)数据拥有者确定所要更新的用户的公钥pk以及所要更新的关键字w;
(3-2)数据拥有者根据密钥KT、以及所要更新关键字w计算更新标签值stag=F(KT,w),并将该更新后的标签值发送给服务端;
(3-3)服务端根据更新后的标签值stag查询关键字文件标识符集合TSet,以得到密文对集合{(e2,y)},提取其中所有的密文e2组成索引密文集合EnInds,并将索引密文集合EnInds发送给数据拥有者;
(3-4)数据拥有者将索引密文集合EnInds保存到本地,根据密钥KC和关键字w计算关键字密钥值Kw=F(KC,w),并根据密钥KR和用户公钥pk计算用户随机值r=Fp(KR,pk);
(3-5)数据拥有者将关键字密钥值Kw作为密钥,用带该密钥的哈希函数计算用户公钥pk的哈希值csk;
(3-6)数据拥有者根据用户随机值r得到用户标识 并以csk作为密钥,用两个不
同的且带密钥的哈希函数分别计算第一更新哈希值ctag以及第二更新哈希值dtag;
(3-7)数据拥有者在更新标签值stag后连接λ个0,得到更新后的认证标签值stag||0λ,并将该认证标签值stag||0λ与第二更新哈希值dtag做异或运算得到更新密文
(3-8)数据拥有者利用密钥KX以及关键字w计算群关键字密文值xtrap=Fp(KX,w);
(3-9)对于索引密文集合EnInds中每个密文e2,数据拥有者根据解密该密文获得标识符明文ind,并使用密钥KI计算标识符群映射xind=Fp(KI,ind),进而计算出与该ind相关的交叉匹配集合XSet中的元素 并将其添加到更新交叉匹配集合XTags
中;
(3-10)数据拥有者将第一更新哈希值ctag,更新密文e1,更新交叉匹配集合XTags以及操作变量op发送给服务端;
(3-11)服务端根据来自数据所有者op的值判断对应的操作是增加还是删除,如果是增加,则执行步骤(3-12),如果是删除,则执行步骤(3-13);
(3-12)服务端将(ctag,e1)加入用户关键字索引集合CSet集合中,并将更新交叉匹配集合XTags中的元素加入到交叉匹配集合XSet中;
(3-13)服务端从用户关键字索引集合CSet中删除与第一更新哈希值ctag关联的数据项,并将更新交叉匹配集合XTags中的所有元素从交叉匹配集合XSet中删除。
2.根据权利要求1所述的多用户可搜索加密方法,其特征在于,步骤(b)包括以下子步骤:
(b1)数据拥有者判断关键字集合W中取关键字w是否都已被取到,如果是,则进入步骤(b12)否则提取下一个关键字w,并进入步骤(b2);
(b2)数据拥有者分别利用三个密钥KS,KT,KX,KC和关键字w计算加密关键字密钥Ke=F(KS,w),索引关键字标签值stagw=F(KT,w),关键字交叉值xtrapw=Fp(KX,w)以及权限关键字密钥Kw=F(KC,w),并初始化公钥随机数集合K为空;
(b3)数据拥有者从访问控制列表KAL中查询出与该关键字w关联的所有用户公钥的集合PKw.
(b4)数据拥有者判断公钥集合中的用户公钥是否全部被取到,如果是,则进入步骤(b11),否则提取下一个用户公钥pki,并进入步骤(b5);
(b5)数据拥有者计算用户随机数ri=Fp(KR,pki),将用户公钥随机数 添加到K
中;
(b6)数据拥有者以权限关键字密钥Kw为密钥,计算pki的带密钥的哈希函数值cski,w=H1(Kw,pki);
(b7)数据拥有者以cski,w为密钥,利用两个不同的带密钥的哈希函数,分别计算uki的权限关键字哈希值 和关键字混淆哈希值
(b8)数据拥有者在索引关键字标签值stagw后添加λ位0,构成索引关键字认证标签值stagw||0λ;
(b9)数据拥有者对索引关键字认证标签值stagw||0λ和关键字混淆哈希值 进行
异或运算,得到权限关键字密文值
(b10)数据拥有者将 添加到CSet集合中并进入步骤(b4);
(b11)数据拥有者初始化计数器cnt值为1;
(b12)数据拥有者利用密钥KZ和关键字w计算盲因子z=Fp(KZ,w);
(b13)数据拥有者从明文数据库中获取关键字w关联的所有文件明文标识符的集合DB(w);
(b14)数据拥有者判断文件明文标识符的集合DB(w)中的所有文件明文标识符ind是否都被取到,如果是则返回步骤(b1),否则进入步骤(b15);
(b15)数据拥有者利用密钥KI和ind计算文件群标识符xind=Fp(KI,ind)并利用加密关键字密钥Ke和ind计算关键字标识符密文索引e2=Enc(Ke,ind);
(b16)数据拥有者计算索引交叉值 并利用stagw为密钥,计算关于cnt带密钥
的哈希值l=H4(stagw,cnt)
(b17)数据拥有者将(e2,y)加入到以l为索引的TSet中,并将cnt的值自增1;
(b18)数据拥有者判断用户公钥随机数集合K中的所有用户公钥随机数vki是否都被取到,如果是,则返回步骤(b14),否则取下一个vki,并进入步骤(b19);
(b19)数据拥有者计算交叉匹配值 并将xtag加入到XSet中,并
返回步骤(b18)。
3.一种可高效更新权限的多用户可搜索加密系统,其特征在于,包括:
第一模,其设置于用户端中,用于利用从数据拥有者处获取的密钥Ωi生成查询关键字密文,并将其发给服务端;第一模块包括以下子模块:
第一子模块,其设置于用户端,用于利用从数据拥有者获取密钥Ωi,其包括对关键字进行加密的密钥KS、KX、KZ,第i个用户端能够查询的密文关键字的集合CSKi={cski,w1,cski,w2,…,cski,wU},以及数据拥有者分配给第i个用户端的标识uki,其中wj表示用户端能够查询的第j个密文关键字,且j∈[1,U],U表示第i个用户端能够查询的密文关键字总数量;其中密钥Ωi是通过如下步骤构建:
A、数据拥有者得到该加入用户的公钥pki及其可以访问的关键字集合 通过密钥KR以及公钥pki计算用户随机数ri=Fp(KR,pki),并计算用户标识 初始化密钥集合
CSKi为空集;
B、对于 中每个关键字w执行如下步骤,利用密钥KC计算关键字密钥值Kw=F(KC,w),并以此为密钥,计算用户公钥pki的哈希值cski,w=H1(Kw,pki),然后将cski,w加入到CSKi集合中,将公钥pki添加到与关键字w关联的访问控制列表KAL[w]中;
C、数据拥有者将KS,KX,KZ,CSKi,uki封装成Ωi返回给该用户;
第二子模块,其设置于用户端,用于确定其所要查询的关键字集合
其中 表示用户端所要查询的第k个关键字,且k∈[1,n],n表示用户端所要查询的关键字的总数量;
第三子模块,其设置于用户端,用于在第i个用户端能够查询的密文关键字的集合CSKi中找到与所要查询的第一个关键字 对应的密文关键字 用两个不同的带密钥的哈
希函数分别对密文关键字 和第i个用户端的标识uki进行计算,以分别得到第一哈希值 以及第二哈希值
第四子模块,用于对于关键字集合 中除了 外的所有关键字,计算
其交叉查询密文值
其中Fp表示伪随机函数;ski表示第i个用户持有的私钥;
第五子模块,其设置于用户端,用于将第四子模块得到的交叉查询密文值、第一哈希值以及第二哈希值 作为查询关键字密文发送给服务端;
第二模块,其设置于服务端中,用于根据来自于用户端的查询关键字密文获取满足用户端查询条件的加密文件标识符集合,并将该加密文件标识符集合发送到用户端;第二模块包括以下子模块:
第六子模块,其设置于服务端,用于接收用户发来查询关键字密文,从构建好的用户关键字索引集合CSet中获取第一哈希值 所对应的密文e1,并根据第二哈希值 和
密文e1计算明文
第七子模块,其设置于服务端,用于判断明文p1的最后λ比特是否全为0,如果不是,则过程结束,如果是,则获取提取前λ比特作为第一标签值 然后进入第八子模块;其中λ为
8到512之间的整数;
第八子模块,其设置于服务端,用于初始化计数器cnt=1;
第九子模块,其设置于服务端,用于根据哈希算法对第一标签值 和cnt进行计算,将得到的哈希值l作为键,判断是否能够在创建好的关键字文件标识符集合TSet中查找到键l对应的密文对(e2,y),如果是则进入第十子模块,否则进入第十二子模块;
第十子模块,其设置于服务端,用于针对所有的v∈[2,n],判断是否所有的
是否都在构建好的交叉匹配集合XSet中,如果是,则将密文对中的e2加入加
密文件标识符集合R中,并进入第十一子模块,否则进入第十一子模块;
第十一子模块,其设置于服务端,用于设置计数器cnt=cnt+1,并返回第九子模块;
第十二子模块,其设置于服务端,用于将加密文件标识符集合R返回给用户端;
其中用户关键字索引集合CSet、关键字文件标识符集合TSet、以及交叉匹配集合XSet是通过如下步骤构建:
(a)数据拥有者初始化用户关键字索引集合CSet、关键字文件标识符集合TSet、以及交叉匹配集合XSet为空集;
(b)对于整个关键字集合W中的每个关键字w,数据拥有者构建用户权限索引表CSet、关键字文件标识符集合TSet以及交叉匹配集合XSet;
第三模块,其设置于数据拥有者中,用于获取授权给用户的密钥,并通知服务端根据该密钥修改用户关键字索引集合以及交叉匹配集合;第三模块包括以下子模块:
第十三子模块,其设置于数据拥有者,用于确定所要更新的用户的公钥pk以及所要更新的关键字w;
第十四子模块,其设置于数据拥有者,用于根据密钥KT、以及所要更新关键字w计算更新标签值stag=F(KT,w),并将该更新后的标签值发送给服务端;
第十五子模块,其设置于服务端,用于根据更新后的标签值stag查询关键字文件标识符集合TSet,以得到密文对集合{(e2,y)},提取其中所有的密文e2组成索引密文集合EnInds,并将索引密文集合EnInds发送给数据拥有者;
第十六子模块,其设置于数据拥有者,用于将索引密文集合EnInds保存到本地,根据密钥KC和关键字w计算关键字密钥值Kw=F(KC,w),并根据密钥KR和用户公钥pk计算用户随机值r=Fp(KR,pk);
第十七子模块,其设置于数据拥有者,用于将关键字密钥值Kw作为密钥,用带该密钥的哈希函数计算用户公钥pk的哈希值csk;
第十八子模块,其设置于数据拥有者,用于根据用户随机值r得到用户标识 并
以csk作为密钥,用两个不同的且带密钥的哈希函数分别计算第一更新哈希值ctag以及第二更新哈希值dtag;
第十九子模块,其设置于数据拥有者,用于在更新标签值stag后连接λ个0,得到更新后的认证标签值stag||0λ,并将该认证标签值stag||0λ与第二更新哈希值dtag做异或运算得到更新密文
第二十子模块,其设置于数据拥有者,用于利用密钥KX以及关键字w计算群关键字密文值xtrap=Fp(KX,w);
第二十一子模块,其用于对于索引密文集合EnInds中每个密文e2,数据拥有者根据解密该密文获得标识符明文ind,并使用密钥KI计算标识符群映射xind=Fp(KI,ind),进而计算出与该ind相关的交叉匹配集合XSet中的元素 并将其添加到更新交
叉匹配集合XTags中;
第二十二子模块,其设置于数据拥有者,用于将第一更新哈希值ctag,更新密文e1,更新交叉匹配集合XTags以及操作变量op发送给服务端;
第二十三子模块,其设置于服务端,用于根据来自数据所有者op的值判断对应的操作是增加还是删除,如果是增加,则执行第二十四子模块,如果是删除,则执行第二十五子模块;
第二十四子模块,其设置于服务端,用于将(ctag,e1)加入用户关键字索引集合CSet集合中,并将更新交叉匹配集合XTags中的元素加入到交叉匹配集合XSet中;
第二十五子模块,其设置于服务端,用于从用户关键字索引集合CSet中删除与第一更新哈希值ctag关联的数据项,并将更新交叉匹配集合XTags中的所有元素从交叉匹配集合XSet中删除。

说明书全文

一种可高效更新权限的多用户可搜索加密方法和系统

技术领域

[0001] 本发明属于计算存储隐私保护领域,更具体地说,涉及一种可高效更新权限的多用户可搜索加密方法和系统。

背景技术

[0002] 随着云计算存储技术的发展,大量数据拥有者(例如企业或个人)将数据外包到云服务端上,从而提供更好的服务。然而,云计算存储技术同样带来了数据隐私泄露的问题(如个人医疗记录泄露)。这样就造成一个矛盾:数据拥有者既想要利用云的强大计算功能,又不想自己的隐私数据被泄露。一个简单的办法是将数据加密后上传到云服务端,然而,密文虽然保证了数据的隐私,却也限制了数据的使用。因此,可搜索对称加密(Searchable symmetric encryption,简称SSE)方法应运而生,其能够实现密文下的检索,并且不泄露查询隐私;而在医院等多用户需要共享数据、保证数据安全的场合,可使用多用户可搜索对称加密(Multi-client Searchable symmetric encryption,简称MSSE)方法。
[0003] 现有的MSSE方法主要包括外包对称隐私信息检索(Outsourced symmetric private information retrieval,简称OSPIR)方法、以及非交互多用户可搜索加密(Non-interactive multi-client searchable encryption,简称NIMCSE)方法,其中OSPIR方法利用同态签名伪随机函数实现多用户查询,NIMCSE方法利用素数散列函数和属性加密实现多用户查询。
[0004] 然而,上述现有的MSSE方法都存在一些不可忽略的技术问题:首先,OSPIR方法需要用户在每次查询操作时与数据拥有者(Data owner)进行交互,导致查询效率偏低;其次,NIMCSE方法无法对查询权限进行动态更新,进而会影响查询的准确性。

发明内容

[0005] 针对现有技术的以上缺陷或改进需求,本发明提供了一种可高效更新权限的多用户可搜索加密方法和系统,其目的在于,解决现有多用户可搜索对称加密方法中由于需要用户每次查询时与数据拥有者进行交互而导致的查询效率偏低的技术问题,以及由于无法对查询权限进行动态更新而影响查询准确性的技术问题。
[0006] 为实现上述目的,按照本发明的一个方面,提供了一种可高效更新权限的多用户可搜索加密方法,包括以下步骤:
[0007] (1)用户端利用从数据拥有者处获取的密钥Ωi生成查询关键字密文,并将其发给服务端;
[0008] (2)服务端根据来自于用户端的查询关键字密文获取满足用户端查询条件的加密文件标识符集合,并将该加密文件标识符集合发送到用户端;
[0009] (3)数据拥有者获取授权给用户的密钥,并通知服务端根据该密钥修改用户关键字索引集合以及交叉匹配集合。
[0010] 优选地,步骤(1)包括以下子步骤:
[0011] (1-1)用户端利用从数据拥有者获取密钥Ωi,其包括对关键字进行加密的密钥KS、KX、KZ,第i个用户端能够查询的密文关键字的集合CSKi={cski,w1,cski,w2,…,cski,wU},以及数据拥有者分配给第i个用户端的标识uki,其中wj表示用户端能够查询的第j个密文关键字,且j∈[1,U],U表示第i个用户端能够查询的密文关键字总数量;
[0012] (1-2)用户端确定其所要查询的关键字集合 其中 表示用户端所要查询的第k个关键字,且k∈[1,n],n表示用户端所要查询的关键字的总数量;
[0013] (1-3)在第i个用户端能够查询的密文关键字的集合CSKi中找到与所要查询的第一个关键字 对应的密文关键字 用两个不同的带密钥的哈希函数分别对密文关键字 和第i个用户端的标识uki进行计算,以分别得到第一哈希值 以及第二哈
希值
[0014] (1-4)对于关键字集合 中除了 外的所有关键字,计算其交叉查询密文值 其中Fp表示伪随机函数,ski表示第i个用户持
有的私钥;
[0015] (1-5)将步骤(1-4)得到的交叉查询密文值、第一哈希值 以及第二哈希值作为查询关键字密文发送给服务端。
[0016] 优选地,步骤(2)包括以下子步骤:
[0017] (2-1)服务端接收用户发来查询关键字密文,从构建好的用户关键字索引集合CSet中获取第一哈希值 所对应的密文e1,并根据第二哈希值 和密文e1计算明文
[0018] (2-2)服务端判断明文p1的最后λ比特是否全为0,如果不是,则过程结束,如果是,则获取提取前λ比特作为第一标签值 然后进入步骤(2-3);其中λ为8到512之间的整数,优选等于128;
[0019] (2-3)服务端初始化计数器cnt=1;
[0020] (2-4)服务端根据哈希算法对第一标签值 和cnt进行计算,将得到的哈希值l作为键,判断是否能够在创建好的关键字文件标识符集合TSet中查找到该键l对应的密文对(e2,y),如果是则进入步骤(2-5),否则进入步骤(2-7);
[0021] (2-5)服务端针对所有的v∈[2,n],判断是否所有的 是否都在构建好的交叉匹配集合XSet中,如果是,则将密文对中的e2加入加密文件标识符集合R中,并进入步骤(2-6),否则进入步骤(2-6);
[0022] (2-6)服务端设置计数器cnt=cnt+1,并返回步骤(2-4);
[0023] (2-7)服务端将加密文件标识符集合R返回给用户端。
[0024] 优选地,步骤(3)包括以下子步骤:
[0025] (3-1)数据拥有者确定所要更新的用户的公钥pk以及所要更新的关键字w;
[0026] (3-2)数据拥有者根据密钥KT、以及所要更新关键字w计算更新标签值stag=F(KT,w),并将该更新后的标签值发送给服务端;
[0027] (3-3)服务端根据更新后的标签值stag查询关键字文件标识符集合TSet,以得到密文对集合{(e2,y)},提取其中所有的密文e2组成索引密文集合EnInds,并将索引密文集合EnInds发送给数据拥有者;
[0028] (3-4)数据拥有者将索引密文集合EnInds保存到本地,根据密钥KC和关键字w计算关键字密钥值Kw=F(KC,w),并根据密钥KR和用户公钥pk计算用户随机值r=Fp(KR,pk);
[0029] (3-5)数据拥有者将关键字密钥值Kw作为密钥,用带该密钥的哈希函数计算用户公钥pk的哈希值csk;
[0030] (3-6)数据拥有者根据用户随机值r得到用户标识 并以csk作为密钥,用两个不同的且带密钥的哈希函数分别计算第一更新哈希值ctag以及第二更新哈希值dtag;
[0031] (3-7)数据拥有者在更新标签值stag后连接λ个0,得到更新后的认证标签值stag||0λ,并将该认证标签值stag||0λ与第二更新哈希值dtag做异或运算得到更新密文[0032] (3-8)数据拥有者利用密钥KX以及关键字w计算群关键字密文值xtrap=Fp(KX,w);
[0033] (3-9)对于索引密文集合EnInds中每个密文e2,数据拥有者根据解密该密文获得标识符明文ind,并使用密钥KI计算标识符群映射xind=Fp(KI,ind),进而计算出与该ind相关的交叉匹配集合XSet中的元素 并将其添加到更新交叉匹配集合XTags中;
[0034] (3-10)数据拥有者将第一更新哈希值ctag,更新密文e1,更新交叉匹配集合XTags以及操作变量op发送给服务端;
[0035] (3-11)服务端根据来自数据所有者op的值判断对应的操作是增加还是删除,如果是增加,则执行步骤(3-12),如果是删除,则执行步骤(3-13);
[0036] (3-12)服务端将(ctag,e1)加入用户关键字索引集合CSet集合中,并将更新交叉匹配集合XTags中的元素加入到交叉匹配集合XSet中。
[0037] (3-13)服务端从用户关键字索引集合CSet中删除与第一更新哈希值ctag关联的数据项,并将更新交叉匹配集合XTags中的所有元素从交叉匹配集合XSet中删除。
[0038] 优选地,密钥Ωi是通过如下步骤构建:
[0039] A、数据拥有者得到该加入用户的公钥pki及其可以访问的关键字集合 通过密钥KR以及公钥pki计算用户随机数ri=Fp(KR,pki),并计算用户标识 初始化密钥集合CSKi为空集;
[0040] B、对于 中每个关键字w执行如下步骤,利用密钥KC计算关键字密钥值Kw=F(KC,w),并以此为密钥,计算用户公钥pki的哈希值cski,w=H1(Kw,pki),然后将cski,w加入到CSKi集合中,将公钥pki添加到与关键字w关联的访问控制列表KAL[w]中;
[0041] C、数据拥有者将KS,KX,KZ,CSKi,uki封装成Ωi返回给该用户。
[0042] 优选地,用户关键字索引集合CSet、关键字文件标识符集合TSet、以及交叉匹配集合XSet是通过如下步骤构建:
[0043] (a)数据拥有者初始化用户关键字索引集合CSet、关键字文件标识符集合TSet、以及交叉匹配集合XSet为空集;
[0044] (b)对于整个关键字集合W中的每个关键字w,数据拥有者构建用户权限索引表CSet、关键字文件标识符集合TSet以及交叉匹配集合XSet。
[0045] 优选地,步骤(b)包括以下子步骤:
[0046] (b1)数据拥有者判断关键字集合W中取关键字w是否都已被取到,如果是,则进入步骤(b12)否则提取下一个关键字w,并进入步骤(b2);
[0047] (b2)数据拥有者分别利用三个密钥KS,KT,KX,KC和关键字w计算加密关键字密钥Ke=F(KS,w),索引关键字标签值stagw=F(KT,w),关键字交叉值xtrapw=Fp(KX,w)以及权限关键字密钥Kw=F(KC,w),并初始化公钥随机数集合K为空;
[0048] (b3)数据拥有者从访问控制列表KAL中查询出与该关键字w关联的所有用户公钥的集合PKw.
[0049] (b4)数据拥有者判断公钥集合中的用户公钥是否全部被取到,如果是,则进入步骤(b11),否则提取下一个用户公钥pki,并进入步骤(b5);
[0050] (b5)数据拥有者计算用户随机数ri=Fp(KR,pki),将用户公钥随机数 添加到K中;
[0051] (b6)数据拥有者以权限关键字密钥Kw为密钥,计算pki的带密钥的哈希函数值cski,w=H1(Kw,pki);
[0052] (b7)数据拥有者以cski,w为密钥,利用两个不同的带密钥的哈希函数,分别计算uki的权限关键字哈希值 和关键字混淆哈希值
[0053] (b8)数据拥有者在索引关键字标签值stagw后添加λ位0,构成索引关键字认证标签值stagw||0λ;
[0054] (b9)数据拥有者对索引关键字认证标签值stagw||0λ和关键字混淆哈希值进行异或运算,得到权限关键字密文值
[0055] (b10)数据拥有者将 添加到CSet集合中并进入步骤(b4);
[0056] (b11)数据拥有者初始化计数器cnt值为1;
[0057] (b12)数据拥有者利用密钥KZ和关键字w计算盲因子z=Fp(KZ,w);
[0058] (b13)数据拥有者从明文数据库中获取关键字w关联的所有文件明文标识符的集合DB(w);
[0059] (b14)数据拥有者判断文件明文标识符的集合DB(w)中的所有文件明文标识符ind是否都被取到,如果是则返回步骤(b1),否则进入步骤(b15);
[0060] (b15)数据拥有者利用密钥KI和ind计算文件群标识符xind=Fp(KI,ind)并利用加密关键字密钥Ke和ind计算关键字标识符密文索引e2=Enc(Ke,ind);
[0061] (b16)数据拥有者计算索引交叉值 并利用stagw为密钥,计算关于cnt带密钥的哈希值l=H4(stagw,cnt)
[0062] (b17)数据拥有者将(e2,y)加入到以l为索引的TSet中,并将cnt的值自增1;
[0063] (b18)数据拥有者判断用户公钥随机数集合K中的所有用户公钥随机数vki是否都被取到,如果是,则返回步骤(b14),否则取下一个vki,并进入步骤(b19);
[0064] (b19)数据拥有者计算交叉匹配值 并将xtag加入到XSet中,并返回步骤(b18)。
[0065] 按照本发明的另一方面,提供了一种可高效更新权限的多用户可搜索加密系统,包括:
[0066] 第一模,其设置于用户端中,用于利用从数据拥有者处获取的密钥Ωi生成查询关键字密文,并将其发给服务端;
[0067] 第二模块,其设置于服务端中,用于根据来自于用户端的查询关键字密文获取满足用户端查询条件的加密文件标识符集合,并将该加密文件标识符集合发送到用户端;
[0068] 第三模块,其设置于数据拥有者中,用于获取授权给用户的密钥,并通知服务端根据该密钥修改用户关键字索引集合以及交叉匹配集合。
[0069] 总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
[0070] (1)由于本发明采用了步骤(b4)到步骤(b10)、以及步骤(3-4)到步骤(3-7),其将用户信息和可查询的关键字信息联合放入关键字索引集合CSet中,服务端只用根据用户端发来的查询密文就可以判断该用户是否有权查询该关键字,用户端不必每次征求数据拥有者的授权,因此能够解决现有多用户可搜索对称加密方法中由于需要用户每次查询时与数据拥有者进行交互而导致的查询效率偏低的技术问题;
[0071] (2)由于本发明采用了步骤(b18)和步骤(b19)、以及步骤(3-9)到(3-13),其将用户信息、关键字信息和文件标识符信息计算出一个密文保存在交叉匹配集合XSet中,保证了每个用户有自己的关于关键字以及文件标识符的密文;在数据拥有者和服务端执行权限更新时,更新一个用户不会牵扯到另一个用户,因此能够解决现有多用户可搜索对称加密方法中由于无法对查询权限进行动态更新而影响查询准确性的技术问题;
[0072] (3)本发明的加密安全性基于双线性映射,在生成查询关键字密文时,生成时间只与待查询关键字的个数有关,因而关键字查询密文的生成效率很高,从而降低了用户端的计算开销,因此本发明可用于医疗等高机密性机构的检索系统。附图说明
[0073] 图1是本发明可高效更新权限的多用户可搜索加密方法的流程图
[0074] 图2是本发明与现有OXT和MSSE方法的性能比较,其中图2(a)是构建时间与数据集大小的关系曲线,图2(b)是构建时间与用户数的关系曲线;
[0075] 图3是本发明与现有SCSSE和OSPIR方法的性能比较,其中图3(a)是查询关键字密文产生时间与查询关键字个数的关系曲线,图3(b)是查询关键字密文的产生时间与第一个关键字关联的文件数目的关系曲线;
[0076] 图4是本发明与现有OXT和MSSE方法的另一个性能比较,其中图4(a)是固定第一个关键字关联的文件总数,变化总查询关键字个数,图4(b)是固定总查询关键字个数,变化第一个关键字关联的文件总数。

具体实施方式

[0077] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0078] 如图1所示,本发明可高效更新权限的多用户可搜索加密方法包括以下步骤:
[0079] (1)用户端利用从数据拥有者处获取的密钥Ωi生成查询关键字密文,并将其发给服务端;
[0080] 本步骤包括以下子步骤:
[0081] (1-1)用户端利用从数据拥有者获取密钥Ωi,其包括对关键字进行加密的密钥KS、KX、KZ,第i个用户端能够查询的密文关键字的集合CSKi={cski,w1,cski,w2,…,cski,wU},以及数据拥有者分配给第i个用户端的标识uki,其中wj表示用户端能够查询的第j个密文关键字,且j∈[1,U],U表示第i个用户端能够查询的密文关键字总数量;
[0082] (1-2)用户端确定其所要查询的关键字集合 其中 表示用户端所要查询的第k个关键字,且k∈[1,n],n表示用户端所要查询的关键字的总数量;
[0083] (1-3)在第i个用户端能够查询的密文关键字的集合CSKi中找到与所要查询的第一个关键字 对应的密文关键字 用两个不同的带密钥的哈希函数分别对密文关键字 和第i个用户端的标识uki进行计算,以分别得到第一哈希值 以及第二哈
希值
[0084] (1-4)对于关键字集合 中除了 外的所有关键字,计算其交叉查询密文值 其中Fp表示伪随机函数;ski表示第i个用户持
有的私钥;
[0085] (1-5)将步骤(1-4)得到的交叉查询密文值、第一哈希值 以及第二哈希值作为查询关键字密文发送给服务端。
[0086] (2)服务端根据来自于用户端的查询关键字密文获取满足用户端查询条件的加密文件标识符集合,并将该加密文件标识符集合发送到用户端;
[0087] 本步骤具体包括以下子步骤:
[0088] (2-1)服务端接收用户发来查询关键字密文,从构建好的用户关键字索引集合CSet中获取第一哈希值 所对应的密文e1,并根据第二哈希值 和密文e1计算明文
[0089] (2-2)服务端判断明文p1的最后λ比特是否全为0,如果不是,则过程结束,如果是,则获取提取前λ比特作为第一标签值 然后进入步骤(2-3);其中λ为8到512之间的整数,优选等于128;
[0090] (2-3)服务端初始化计数器cnt=1;
[0091] (2-4)服务端根据哈希算法对第一标签值 和cnt进行计算,将得到的哈希值l作为键,判断是否能够在创建好的关键字文件标识符集合TSet中查找到该键l对应的密文对(e2,y),如果是则进入步骤(2-5),否则进入步骤(2-7);
[0092] (2-5)服务端针对所有的v∈[2,n],判断是否所有的 是否都在构建好的交叉匹配集合XSet中,如果是,则将密文对中的e2加入加密文件标识符集合R中,并进入步骤(2-6),否则进入步骤(2-6);
[0093] (2-6)服务端设置计数器cnt=cnt+1,并返回步骤(2-4);
[0094] (2-7)服务端将加密文件标识符集合R返回给用户端。
[0095] (3)数据拥有者获取授权给用户的密钥,并通知服务端根据该密钥修改用户关键字索引集合以及交叉匹配集合;
[0096] 本步骤包括以下子步骤:
[0097] (3-1)数据拥有者确定所要更新的用户的公钥pk以及所要更新的关键字w;
[0098] (3-2)数据拥有者根据密钥KT、以及所要更新关键字w计算更新标签值stag=F(KT,w),并将该更新后的标签值发送给服务端;
[0099] (3-3)服务端根据更新后的标签值stag查询关键字文件标识符集合TSet,以得到密文对集合{(e2,y)},提取其中所有的密文e2组成索引密文集合EnInds,并将索引密文集合EnInds发送给数据拥有者;
[0100] (3-4)数据拥有者将索引密文集合EnInds保存到本地,根据密钥KC和关键字w计算关键字密钥值Kw=F(KC,w),并根据密钥KR和用户公钥pk计算用户随机值r=Fp(KR,pk);
[0101] (3-5)数据拥有者将关键字密钥值Kw作为密钥,用带该密钥的哈希函数计算用户公钥pk的哈希值csk;
[0102] (3-6)数据拥有者根据用户随机值r得到用户标识 并以csk作为密钥,用两个不同的且带密钥的哈希函数分别计算第一更新哈希值ctag以及第二更新哈希值dtag;
[0103] (3-7)数据拥有者在更新标签值stag后连接λ个0,得到更新后的认证标签值stag||0λ,并将该认证标签值stag||0λ与第二更新哈希值dtag做异或运算得到更新密文[0104] (3-8)数据拥有者利用密钥KX以及关键字w计算群关键字密文值xtrap=Fp(KX,w);
[0105] (3-9)对于索引密文集合EnInds中每个密文e2,数据拥有者根据解密该密文获得标识符明文ind,并使用密钥KI计算标识符群映射xind=Fp(KI,ind),进而计算出与该ind相关的交叉匹配集合XSet中的元素 并将其添加到更新交叉匹配集合XTags中;
[0106] (3-10)数据拥有者将第一更新哈希值ctag,更新密文e1,更新交叉匹配集合XTags以及操作变量op发送给服务端;
[0107] (3-11)服务端根据来自数据所有者op的值判断对应的操作是增加还是删除,如果是增加,则执行步骤(3-12),如果是删除,则执行步骤(3-13);
[0108] (3-12)服务端将(ctag,e1)加入用户关键字索引集合CSet集合中,并将更新交叉匹配集合XTags中的元素加入到交叉匹配集合XSet中。
[0109] (3-13)服务端从用户关键字索引集合CSet中删除与第一更新哈希值ctag关联的数据项,并将更新交叉匹配集合XTags中的所有元素从交叉匹配集合XSet中删除。
[0110] 以上密钥Ωi是通过如下步骤构建:
[0111] A、数据拥有者得到该加入用户的公钥pki及其可以访问的关键字集合 通过密钥KR以及公钥pki计算用户随机数ri=Fp(KR,pki),并计算用户标识 初始化密钥集合CSKi为空集;
[0112] B、对于 中每个关键字w执行如下步骤,利用密钥KC计算关键字密钥值Kw=F(KC,w),并以此为密钥,计算用户公钥pki的哈希值cski,w=H1(Kw,pki),然后将cski,w加入到CSKi集合中,将公钥pki添加到与关键字w关联的访问控制列表KAL[w]中;
[0113] C、数据拥有者将KS,KX,KZ,CSKi,uki封装成Ωi返回给该用户。
[0114] 以上的用户关键字索引集合CSet、关键字文件标识符集合TSet、以及交叉匹配集合XSet是通过如下步骤构建:
[0115] (a)数据拥有者初始化用户关键字索引集合CSet、关键字文件标识符集合TSet、以及交叉匹配集合XSet为空集;
[0116] (b)对于整个关键字集合W中的每个关键字w,数据拥有者构建用户权限索引表CSet、关键字文件标识符集合TSet以及交叉匹配集合XSet;
[0117] 本步骤(b)包括以下子步骤:
[0118] (b1)数据拥有者判断关键字集合W中取关键字w是否都已被取到,如果是,则进入步骤(b12)否则提取下一个关键字w,并进入步骤(b2);
[0119] (b2)数据拥有者分别利用三个密钥KS,KT,KX,KC和关键字w计算加密关键字密钥Ke=F(KS,w),索引关键字标签值stagw=F(KT,w),关键字交叉值xtrapw=Fp(KX,w)以及权限关键字密钥Kw=F(KC,w),并初始化公钥随机数集合K为空;
[0120] (b3)数据拥有者从访问控制列表KAL中查询出与该关键字w关联的所有用户公钥的集合PKw.
[0121] (b4)数据拥有者判断公钥集合中的用户公钥是否全部被取到,如果是,则进入步骤(b11),否则提取下一个用户公钥pki,并进入步骤(b5);
[0122] (b5)数据拥有者计算用户随机数ri=Fp(KR,pki),将用户公钥随机数 添加到K中;
[0123] (b6)数据拥有者以权限关键字密钥Kw为密钥,计算pki的带密钥的哈希函数值cski,w=H1(Kw,pki);
[0124] (b7)数据拥有者以cski,w为密钥,利用两个不同的带密钥的哈希函数,分别计算uki的权限关键字哈希值 和关键字混淆哈希值
[0125] (b8)数据拥有者在索引关键字标签值stagw后添加λ位0,构成索引关键字认证标签值stagw||0λ;
[0126] (b9)数据拥有者对索引关键字认证标签值stagw||0λ和关键字混淆哈希值进行异或运算,得到权限关键字密文值
[0127] (b10)数据拥有者将 添加到CSet集合中并进入步骤(b4);
[0128] (b11)数据拥有者初始化计数器cnt值为1;
[0129] (b12)数据拥有者利用密钥KZ和关键字w计算盲因子z=Fp(KZ,w);
[0130] (b13)数据拥有者从明文数据库中获取关键字w关联的所有文件明文标识符的集合DB(w);
[0131] (b14)数据拥有者判断文件明文标识符的集合DB(w)中的所有文件明文标识符ind是否都被取到,如果是则返回步骤(b1),否则进入步骤(b15);
[0132] (b15)数据拥有者利用密钥KI和ind计算文件群标识符xind=Fp(KI,ind)并利用加密关键字密钥Ke和ind计算关键字标识符密文索引e2=Enc(Ke,ind);
[0133] (b16)数据拥有者计算索引交叉值 并利用stagw为密钥,计算关于cnt带密钥的哈希值l=H4(stagw,cnt)
[0134] (b17)数据拥有者将(e2,y)加入到以l为索引的TSet中,并将cnt的值自增1;
[0135] (b18)数据拥有者判断用户公钥随机数集合K中的所有用户公钥随机数vki是否都被取到,如果是,则返回步骤(b14),否则取下一个vki,并进入步骤(b19);
[0136] (b19)数据拥有者计算交叉匹配值 并将xtag加入到XSet中,并返回步骤(b18)。
[0137] 图2是本发明与现有的OXT(即Oblivious Cross-Tags)算法和Muti-client Searchable Symmetric Encryption(简称MSSE)算法进行对比的效果(其中DMMSE表示本发明的方法)。图2(a)表示构建时间随数据集大小的时间开销关系;图2(b)表示构建时间和用户数之间的关系。从结果可以看出,虽然本发明的构建过程比其他两个算法慢,但是依然和数据集大小成线性相关,与用户的多少也近似成线性关系。
[0138] 图3是本发明与现有的单用户可搜索对称加密方法(Single-client searchable symmetric encryption,简称SCSSE)、以及OSPIR方法的对比。图3(a)表示查询关键字密文产生时间与查询关键字个数的关系,控制第一个关键字关联的文件数是200,从图中可以看出,查询关键字密文的产生时间随查询关键字个数的增长呈线性相关。
[0139] 图3(b)表示查询关键字密文产生的时间与第一个关键字关联的文件数目之间的关系,固定关键字个数是100。从图3(b)可以看出,本发明查询关键字密文的产生时间与第一个关键字关联的文件数目无关。从两幅图的效果中可以看出,相对于SCSEE和OSPIR方法而言,本发明的查询关键字密文的产生时间最少。
[0140] 图4是与现有的OXT和MSSE算法进行对比。其中图4(a)是控制第一个关键字关联的文件数为200,变化总的查询关键字个数;图4(b)是控制总的连接查询的关键字个数为100,变化第一个关键字关联的文件个数。从效果可以看到本发明的查询时间几乎与查询关键字个数无关,而与第一个关键字关联的文件数近似成线性相关。
[0141] 本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈