法律状态公告日
法律状态信息
法律状态
2020-02-21
授权
授权
2019-09-17
实质审查的生效 IPC(主分类):H04L29/06 申请日:20190528
实质审查的生效
2019-08-23
公开
公开
技术领域
本发明属于云计算存储隐私保护领域,更具体地说,涉及一种可高效更新权限的多用户可搜索加密方法和系统。
背景技术
随着云计算存储技术的发展,大量数据拥有者(例如企业或个人)将数据外包到云服务端上,从而提供更好的服务。然而,云计算存储技术同样带来了数据隐私泄露的问题(如个人医疗记录泄露)。这样就造成一个矛盾:数据拥有者既想要利用云的强大计算功能,又不想自己的隐私数据被泄露。一个简单的办法是将数据加密后上传到云服务端,然而,密文虽然保证了数据的隐私,却也限制了数据的使用。因此,可搜索对称加密(Searchablesymmetric encryption,简称SSE)方法应运而生,其能够实现密文下的检索,并且不泄露查询隐私;而在医院等多用户需要共享数据、保证数据安全的场合,可使用多用户可搜索对称加密(Multi-client Searchable symmetric encryption,简称MSSE)方法。
现有的MSSE方法主要包括外包对称隐私信息检索(Outsourced symmetricprivate information retrieval,简称OSPIR)方法、以及非交互多用户可搜索加密(Non-interactive multi-client searchable encryption,简称NIMCSE)方法,其中OSPIR方法利用同态签名伪随机函数实现多用户查询,NIMCSE方法利用素数散列函数和属性加密实现多用户查询。
然而,上述现有的MSSE方法都存在一些不可忽略的技术问题:首先,OSPIR方法需要用户在每次查询操作时与数据拥有者(Data owner)进行交互,导致查询效率偏低;其次,NIMCSE方法无法对查询权限进行动态更新,进而会影响查询的准确性。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种可高效更新权限的多用户可搜索加密方法和系统,其目的在于,解决现有多用户可搜索对称加密方法中由于需要用户每次查询时与数据拥有者进行交互而导致的查询效率偏低的技术问题,以及由于无法对查询权限进行动态更新而影响查询准确性的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种可高效更新权限的多用户可搜索加密方法,包括以下步骤:
(1)用户端利用从数据拥有者处获取的密钥Ωi生成查询关键字密文,并将其发给服务端;
(2)服务端根据来自于用户端的查询关键字密文获取满足用户端查询条件的加密文件标识符集合,并将该加密文件标识符集合发送到用户端;
(3)数据拥有者获取授权给用户的密钥,并通知服务端根据该密钥修改用户关键字索引集合以及交叉匹配集合。
优选地,步骤(1)包括以下子步骤:
(1-1)用户端利用从数据拥有者获取密钥Ωi,其包括对关键字进行加密的密钥KS、KX、KZ,第i个用户端能够查询的密文关键字的集合CSKi={cski,w1,cski,w2,…,cski,wU},以及数据拥有者分配给第i个用户端的标识uki,其中wj表示用户端能够查询的第j个密文关键字,且j∈[1,U],U表示第i个用户端能够查询的密文关键字总数量;
(1-2)用户端确定其所要查询的关键字集合
(1-3)在第i个用户端能够查询的密文关键字的集合CSKi中找到与所要查询的第一个关键字
(1-4)对于关键字集合
(1-5)将步骤(1-4)得到的交叉查询密文值、第一哈希值
优选地,步骤(2)包括以下子步骤:
(2-1)服务端接收用户发来查询关键字密文,从构建好的用户关键字索引集合CSet中获取第一哈希值
(2-2)服务端判断明文p1的最后λ比特是否全为0,如果不是,则过程结束,如果是,则获取提取前λ比特作为第一标签值
(2-3)服务端初始化计数器cnt=1;
(2-4)服务端根据哈希算法对第一标签值
(2-5)服务端针对所有的v∈[2,n],判断是否所有的
(2-6)服务端设置计数器cnt=cnt+1,并返回步骤(2-4);
(2-7)服务端将加密文件标识符集合R返回给用户端。
优选地,步骤(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得到用户标识
(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中的元素
(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中删除。
优选地,密钥Ωi是通过如下步骤构建:
A、数据拥有者得到该加入用户的公钥pki及其可以访问的关键字集合
B、对于
C、数据拥有者将KS,KX,KZ,CSKi,uki封装成Ωi返回给该用户。
优选地,用户关键字索引集合CSet、关键字文件标识符集合TSet、以及交叉匹配集合XSet是通过如下步骤构建:
(a)数据拥有者初始化用户关键字索引集合CSet、关键字文件标识符集合TSet、以及交叉匹配集合XSet为空集;
(b)对于整个关键字集合W中的每个关键字w,数据拥有者构建用户权限索引表CSet、关键字文件标识符集合TSet以及交叉匹配集合XSet。
优选地,步骤(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),将用户公钥随机数
(b6)数据拥有者以权限关键字密钥Kw为密钥,计算pki的带密钥的哈希函数值cski,w=H1(Kw,pki);
(b7)数据拥有者以cski,w为密钥,利用两个不同的带密钥的哈希函数,分别计算uki的权限关键字哈希值
(b8)数据拥有者在索引关键字标签值stagw后添加λ位0,构成索引关键字认证标签值stagw||0λ;
(b9)数据拥有者对索引关键字认证标签值stagw||0λ和关键字混淆哈希值
(b10)数据拥有者将
(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)数据拥有者计算索引交叉值
(b17)数据拥有者将(e2,y)加入到以l为索引的TSet中,并将cnt的值自增1;
(b18)数据拥有者判断用户公钥随机数集合K中的所有用户公钥随机数vki是否都被取到,如果是,则返回步骤(b14),否则取下一个vki,并进入步骤(b19);
(b19)数据拥有者计算交叉匹配值
按照本发明的另一方面,提供了一种可高效更新权限的多用户可搜索加密系统,包括:
第一模块,其设置于用户端中,用于利用从数据拥有者处获取的密钥Ωi生成查询关键字密文,并将其发给服务端;
第二模块,其设置于服务端中,用于根据来自于用户端的查询关键字密文获取满足用户端查询条件的加密文件标识符集合,并将该加密文件标识符集合发送到用户端;
第三模块,其设置于数据拥有者中,用于获取授权给用户的密钥,并通知服务端根据该密钥修改用户关键字索引集合以及交叉匹配集合。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
(1)由于本发明采用了步骤(b4)到步骤(b10)、以及步骤(3-4)到步骤(3-7),其将用户信息和可查询的关键字信息联合放入关键字索引集合CSet中,服务端只用根据用户端发来的查询密文就可以判断该用户是否有权查询该关键字,用户端不必每次征求数据拥有者的授权,因此能够解决现有多用户可搜索对称加密方法中由于需要用户每次查询时与数据拥有者进行交互而导致的查询效率偏低的技术问题;
(2)由于本发明采用了步骤(b18)和步骤(b19)、以及步骤(3-9)到(3-13),其将用户信息、关键字信息和文件标识符信息计算出一个密文保存在交叉匹配集合XSet中,保证了每个用户有自己的关于关键字以及文件标识符的密文;在数据拥有者和服务端执行权限更新时,更新一个用户不会牵扯到另一个用户,因此能够解决现有多用户可搜索对称加密方法中由于无法对查询权限进行动态更新而影响查询准确性的技术问题;
(3)本发明的加密安全性基于双线性映射,在生成查询关键字密文时,生成时间只与待查询关键字的个数有关,因而关键字查询密文的生成效率很高,从而降低了用户端的计算开销,因此本发明可用于医疗等高机密性机构的检索系统。
附图说明
图1是本发明可高效更新权限的多用户可搜索加密方法的流程图;
图2是本发明与现有OXT和MSSE方法的性能比较,其中图2(a)是构建时间与数据集大小的关系曲线,图2(b)是构建时间与用户数的关系曲线;
图3是本发明与现有SCSSE和OSPIR方法的性能比较,其中图3(a)是查询关键字密文产生时间与查询关键字个数的关系曲线,图3(b)是查询关键字密文的产生时间与第一个关键字关联的文件数目的关系曲线;
图4是本发明与现有OXT和MSSE方法的另一个性能比较,其中图4(a)是固定第一个关键字关联的文件总数,变化总查询关键字个数,图4(b)是固定总查询关键字个数,变化第一个关键字关联的文件总数。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
如图1所示,本发明可高效更新权限的多用户可搜索加密方法包括以下步骤:
(1)用户端利用从数据拥有者处获取的密钥Ωi生成查询关键字密文,并将其发给服务端;
本步骤包括以下子步骤:
(1-1)用户端利用从数据拥有者获取密钥Ωi,其包括对关键字进行加密的密钥KS、KX、KZ,第i个用户端能够查询的密文关键字的集合CSKi={cski,w1,cski,w2,…,cski,wU},以及数据拥有者分配给第i个用户端的标识uki,其中wj表示用户端能够查询的第j个密文关键字,且j∈[1,U],U表示第i个用户端能够查询的密文关键字总数量;
(1-2)用户端确定其所要查询的关键字集合
(1-3)在第i个用户端能够查询的密文关键字的集合CSKi中找到与所要查询的第一个关键字
(1-4)对于关键字集合
(1-5)将步骤(1-4)得到的交叉查询密文值、第一哈希值
(2)服务端根据来自于用户端的查询关键字密文获取满足用户端查询条件的加密文件标识符集合,并将该加密文件标识符集合发送到用户端;
本步骤具体包括以下子步骤:
(2-1)服务端接收用户发来查询关键字密文,从构建好的用户关键字索引集合CSet中获取第一哈希值
(2-2)服务端判断明文p1的最后λ比特是否全为0,如果不是,则过程结束,如果是,则获取提取前λ比特作为第一标签值
(2-3)服务端初始化计数器cnt=1;
(2-4)服务端根据哈希算法对第一标签值
(2-5)服务端针对所有的v∈[2,n],判断是否所有的
(2-6)服务端设置计数器cnt=cnt+1,并返回步骤(2-4);
(2-7)服务端将加密文件标识符集合R返回给用户端。
(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得到用户标识
(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中的元素
(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中删除。
以上密钥Ωi是通过如下步骤构建:
A、数据拥有者得到该加入用户的公钥pki及其可以访问的关键字集合
B、对于
C、数据拥有者将KS,KX,KZ,CSKi,uki封装成Ωi返回给该用户。
以上的用户关键字索引集合CSet、关键字文件标识符集合TSet、以及交叉匹配集合XSet是通过如下步骤构建:
(a)数据拥有者初始化用户关键字索引集合CSet、关键字文件标识符集合TSet、以及交叉匹配集合XSet为空集;
(b)对于整个关键字集合W中的每个关键字w,数据拥有者构建用户权限索引表CSet、关键字文件标识符集合TSet以及交叉匹配集合XSet;
本步骤(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),将用户公钥随机数
(b6)数据拥有者以权限关键字密钥Kw为密钥,计算pki的带密钥的哈希函数值cski,w=H1(Kw,pki);
(b7)数据拥有者以cski,w为密钥,利用两个不同的带密钥的哈希函数,分别计算uki的权限关键字哈希值
(b8)数据拥有者在索引关键字标签值stagw后添加λ位0,构成索引关键字认证标签值stagw||0λ;
(b9)数据拥有者对索引关键字认证标签值stagw||0λ和关键字混淆哈希值
(b10)数据拥有者将
(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)数据拥有者计算索引交叉值
(b17)数据拥有者将(e2,y)加入到以l为索引的TSet中,并将cnt的值自增1;
(b18)数据拥有者判断用户公钥随机数集合K中的所有用户公钥随机数vki是否都被取到,如果是,则返回步骤(b14),否则取下一个vki,并进入步骤(b19);
(b19)数据拥有者计算交叉匹配值并将xtag加入到XSet中,并返回步骤(b18)。
图2是本发明与现有的OXT(即Oblivious Cross-Tags)算法和Muti-clientSearchable Symmetric Encryption(简称MSSE)算法进行对比的效果(其中DMMSE表示本发明的方法)。图2(a)表示构建时间随数据集大小的时间开销关系;图2(b)表示构建时间和用户数之间的关系。从结果可以看出,虽然本发明的构建过程比其他两个算法慢,但是依然和数据集大小成线性相关,与用户的多少也近似成线性关系。
图3是本发明与现有的单用户可搜索对称加密方法(Single-client searchablesymmetric encryption,简称SCSSE)、以及OSPIR方法的对比。图3(a)表示查询关键字密文产生时间与查询关键字个数的关系,控制第一个关键字关联的文件数是200,从图中可以看出,查询关键字密文的产生时间随查询关键字个数的增长呈线性相关。
图3(b)表示查询关键字密文产生的时间与第一个关键字关联的文件数目之间的关系,固定关键字个数是100。从图3(b)可以看出,本发明查询关键字密文的产生时间与第一个关键字关联的文件数目无关。从两幅图的效果中可以看出,相对于SCSEE和OSPIR方法而言,本发明的查询关键字密文的产生时间最少。
图4是与现有的OXT和MSSE算法进行对比。其中图4(a)是控制第一个关键字关联的文件数为200,变化总的查询关键字个数;图4(b)是控制总的连接查询的关键字个数为100,变化第一个关键字关联的文件个数。从效果可以看到本发明的查询时间几乎与查询关键字个数无关,而与第一个关键字关联的文件数近似成线性相关。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
机译: 存储访问权限更新程序的非临时性计算机可读介质,访问权限管理系统和访问权限更新方法
机译: 非暂态计算机可读介质存储访问权限更新程序,访问权限管理系统和访问权限更新方法
机译: 多用户可搜索加密系统和方法