裴树军,易 鑫,陈彦橦,苗 辉
哈尔滨理工大学 计算机科学与技术学院,哈尔滨150080
+通讯作者E-mail:yixinbelinda@163.com
随着云计算技术的迅猛发展,在云端进行存储和共享数据的用户越来越多,这样不仅可以节约本地资源,还可以节省系统维护的开销。但是,云计算给个人及企业提供便利的同时,也引入了一定的安全问题。为了保护数据的安全,数据拥有者通常将数据文件加密后再上传至云端,但这样造成了文件搜索困难。因此,可搜索加密技术(searchable encryption,SE)[1]的提出,有效解决了这一问题。
可搜索加密技术在提出之后,即得到了广泛的研究和迅速的发展[2]。在最早的可搜索加密技术中,用户只能搜索自己加密存储在云端的密文,实用性不强,因此Boneh等人[3]于2004年结合公钥加密技术构造了一个可搜索加密方案,解决了其他用户无法检索密文数据的问题。
属性基加密(attribute-based encryption,ABE)是由Sahai 和Waters[4]提出的一种可以实现访问控制的加密技术。该技术通过制定访问策略来限制用户对文件的访问权限。其中,密文策略属性基加密(ciphertextpolicy attribute-based encryption,CP-ABE)[5]将访问策略嵌入到密文中,更适合在云环境中应用。为此,学者们对基于ABE加密技术的可搜索加密方案展开了研究[6-8]。Hu 等人[9]提出了一种基于动态性的属性基可搜索加密方案,实现了数据属主对访问策略的动态更新,但该方案仅支持单关键字搜索,搜索效率低。而宋衍等人[10]提出的一种支持多关字搜索的属性基加密方案,相比于单个关键字的搜索,该方案能够更准确地定位到用户所需要的文件。当用户的属性集发生改变时,该用户的搜索权限也会发生改变,此时需要撤销其原有的访问权限。为此,伍祈应等人[11]提出了一基于属性基加密支持撤销的可搜索加密方案,使用户搜索权限的管理变得更加灵活。除此之外,一些研究人员[12]还将这项技术改进后应用到了移动端。然而,基于ABE 的可搜索加密方案仍存在一定的局限性,例如当用户恶意泄露自己的私钥时,目前的可搜索加密方案还不能确定泄密者身份,造成了潜在的安全隐患。
为此,本文提出了一种可问责的多关键字可搜索加密方案,该方案有以下4点优势:
(1)可问责。当不法用户恶意泄露私钥时,可以通过运行追踪算法对泄密者进行身份的确认,并撤销该用户,保障了系统的安全。
(2)在线离线加密。受陈冬冬等人所提方案[13]的启发,将加密阶段拆分为离线加密和在线加密,以提升系统线上资源的利用率。
(3)多关键字搜索。用户输入关键字集来检索目标文件,防止查询时返回过多不相关的文件,增强用户搜索体验。
(4)可撤销。当用户的属性集发生改变时,或者被判定为泄密者时,可以撤销其搜索权限。
定义1(双线性映射)令G1、GT是两个阶为素数p的乘法循环群,G1的生成元为g,存在双线性映射e:G1×G1→GT满足:
(1)双 线 性:∀x,y∈Zp,∀a,b∈G1,有e(ax,by)=e(a,b)xy。
(2)可计算性:∀a,b∈G1,存在有效的算法计算e(a,b)。
(3)非退化性:∃g∈G1,使e(g,g)≠1。
本文用策略树来描述访问控制策略。一棵策略树中包括叶子节点和非叶子节点,每一个非叶子节点f代表一个门限,其值为kf,子节点个数为nf。对子节点从左到右依次编号1,2,…,nf,其中1 ≤kf≤nf,当节点f是或门时,kf=1,当节点f是与门时,kf=nf。p(f)是节点f的父节点,index(f)是节点f的编号。每个叶子节点l都与属性值相关,lvs(T)表示策略树T的所有叶子节点的集合,Tf表示以节点f为根节点的策略树T的子树,attr(l)表示叶子节点l的属性值。
如果策略树T的叶子节点l的属性值attr(l)∈S(S为用户的属性集),记Tl(S)=1,对于策略树的非叶子节点f,如果存在|I|个子节点f′满足Tf′(S)=1,且|I|≥kf,记Tf(S)=1。对于策略树T的根节点r,如果Tr(S)=1,则说明用户的属性集S满足访问策略T。
为每个节点构造多项式,采用自顶向下的递归算法。对根节点r,令qr(0)=s,并在其他kr-1 点处随机选取,构造出kr-1 次的多项式qr。对于非根节点f,令qf(0)=qpf(index(f)),其他kf-1 点处随机选取,构造出kf-1 次的多项式。由上述自顶向下的递归算法最终得到叶子节点l的多项式ql。
恢复秘密值s,采用自底向上的递归算法。如果属性集{attr(h1),attr(h2),…,attr(hm)}满足访问策略Tf,对于叶子节点l,计算Dl=e(g,g)qhj(0);对于非叶子节点f,存在子节点集合的子集I使|I|=kf,j∈I,则Df=,其中,最后恢复Dr=e(g,g)s。
定义2(q′-SDH假设(strong Diffie-Hellman assumption))[14]G是阶为素数p,生成元为g的循环群。G中的q′-SDN 难题定义为:随机选取x∈Zp,给定(g,gx,gx2,…,gxq′),计算,其中c∈Zp。ε为一个算法A解决G中的q′-SDH 难题优势,当,即一个多项式时间算法能以不可忽略的优势ε解决群中的q′-SDH 难题,则q′-SDH 假设成立。
如图1 所示,本文方案由5 个参与方组成,其中包括证书中心(certificate authority,CA)、审计中心(audit authority,AA)、数据属主(data owner,DO)、用户(users)和云服务器(cloud server,CS)。
Fig.1 System model图1 系统模型
证书中心负责对系统进行初始化建立,为用户颁发私钥和生成、更新版本信息;数据属主负责加密待上传文件,将生成的索引值和中间密文发送给云服务器;用户根据搜索的关键字集生成搜索凭证和陷门值,并同关键字位置集一起发送给云服务器;云服务器负责验证用户的属性是否满足访问策略,然后向审计中心请求搜索参数,匹配索引值和陷门值,接着向审计中心发送搜索凭证和陷门值,最后将得到的密文发送给用户;审计中心负责通过与云服务器交互来审查用户是否有权限访问密文,审查通过后,向用户发送密文参数,同时也负责判定用户所使用的私钥是否存在被泄露、出售嫌疑,并对私钥泄密者进行追踪问责。
本文方案具体包括以下10个算法:
Setup(λ,U)→(MSK,PK):初始化算法由证书中心执行。输入安全参数λ和属性域U,由完全可信的证书中心CA输出系统公钥PK和主密钥MSK,并初始化一个问责列表TA,其中主密钥MSK由CA私有。
KeyGen(PK,MSK,id,S)→(SKid,V):密钥生成算法由证书中心运行。输入系统公钥PK、主密钥MSK、用户的身份标识id和该用户的属性集合S∈U,输出对应于(id,S)的用户私钥SKid和版本信息V=(id,vid),并将该用户的id插入到问责列表TA中。
Offline.Encrypt(PK,M)→(CT,k):离线加密算法(预加密算法)由数据属主执行。输入系统公钥PK和待加密文件M,用传统的对称加密算法对文件M进行离线预加密,输出预加密密钥k和文件密文CT。
Online.Encrypt(PK,k,W,T)→(CTA,I):在线加密算法由数据属主在对文件进行预加密之后运行。输入系统公钥PK、文件预加密密钥k、关键字集合W和数据属主定义的访问结构T。数据属主利用CPABE 加密技术对预加密的密钥k进行在线加密,并建立索引I,生成中间密文CTK,最后将文件密文CT、索引I和中间密文CTK上传至云服务器CS。
Trapdoor(PK,SKid,W′)→(TK,Z,TRW′):陷门生成算法由用户执行。输入系统公钥PK、用户私钥SKid和搜索关键字集W′,生成陷门值TRW′和搜索凭证TK。同时,用户根据搜索关键字集合W′=(w1′,w2′,…,wl′)中的每一个关键字处于加密算法中所给定的关键字集合W={w1,w2,…,wm}的位置生成相对位置集Z,最后用户将陷门值TRW′、搜索凭证TK和位置集Z发送给云服务器。
Search(PK,TRW′,I)→(CT′):搜索算法由云服务器执行。当用户满足访问控制策略时,云服务器向审计中心发送搜索凭证TK和中间密文CTK,审计中心根据递归算法进行自底向上的计算,得到Dr,并返回给云服务器;云服务器对陷门值TRW′和索引值I进行匹配,得到返回密文集CT′,并返回给用户。同时,将返回密文集CT′对应的搜索凭证TK和中间密文CTK发送给审计中心。
Audit(SKid,TK,CTK)→{0,1}:审计算法由审计中心运行。输入用户私钥SKid、搜索凭证TK和中间密文CTK,审计中心验证用户是否有权访问返回密文集CT′,同时判定该用户使用的私钥是否有被泄露、贩卖或非法盗用的嫌疑。若通过验证,审计中心将该返回密文集所对应的参数ω、ω1和Dr发送给用户;否则,该用户将不能访问此文件。
Decrypt(SKid,CT′,ω,ω1,Dr)→(k):解密算法由用户执行。输入用户私钥SKid、返回密文CT′和密文参数,用户解出预加密密钥k,再用k解密文件,即完成了对文档的解密。
Revoke(V):用户撤销算法由证书中心和审计中心合作运行。当用户的数据集合发生改变时,证书中心更新用户的版本信息为V′=(id,vid′),并发送给审计中心,用户对应于旧版本信息V=(id,vid)的私钥SKid将不能通过审计,因此实现了用户的撤销。
Trace(PK,TA,SKid)→(id):追踪算法由审计中心执行。输入系统公钥PK,问责列表TA和用户私钥SKid,审计中心验证该私钥是否合理,如果合理,输出SKid对应的身份id,当有必要撤销该用户时,审计中心直接将该用户的版本信息设置为V*=(id,0)。
定义3如果敌手A在任何多项式时间在下述游戏中获胜的优势是可以忽略的,则称本文方案是可问责的。
(1)初始化:挑战者C执行初始化算法,将生成的公钥PK发送给敌手A,主密钥MSK私有。
(2)询问阶段:敌手A向挑战者C询问属性集(id1,S1),(id2,S2),…,(idn,Sn) 所对应的私钥,对于一切i∈[n],挑战者C执行密钥生成算法,并将生成的私钥SKidi返还给敌手A。
(3)私钥伪造:敌手A输出一个私钥SK*。
敌手A在该游戏中获胜的优势为Pr[Trace(PK,TA,SK*)∉{id1,id2,…,idn}]。
本文提出了一种可问责的多关键字可搜索加密方案,具体算法构造如下。
Setup(λ,U)→(MSK,PK):初始化算法。输入安全参数λ和属性域U,CA 首先选取一个以素数p为阶的双线性群G,g为G的生成元,定义一个G群上的双线性对e:G×G→GT,然后定义两个哈希函数H1:{0,1}*→G和H2:{0,1}*→Zp,随机选取α,β,a,b,c∈Zp,最后 输 出 系 统 公 钥PK=(G,GT,e,p,g,gα,e(g,g)β,ga,gb,gc,H1,H2)和主密钥MSK=(α,β,a,b,c),同时初始化一个问责列表TA=∅。
KeyGen(PK,MSK,id,S)→(SKid,V):密钥生成算法。输入系统公钥PK、主密钥MSK、用户的身份标识id和该用户的属性集合S∈U。首先CA为用户随机选择版本号vid∈Zp,生成版本信息V=(id,vid),然后为用户的属性集S中的元素a1,a2,…,aj∈S随机选取k1,k2,…,kj∈Zp,接着随机选取r∈Zp和θ∈Zp{-α}(如果θ在问责列表TA中已经存在,则重新随机选取θ),计算,,,最后将输出的私钥发送给用户,将版本信息V发送至审计中心,将数组(θ,id)插入到问责列表TA中。
Offline.Encrypt(PK,M)→(CT,k):离线加密算法(预加密算法)。输入系统公钥PK和待加密文件M,数据属主用传统的对称加密算法Encrypt()预加密文件M,输出预加密密钥k和文件密文CT=(Encrypt(M))。
Online.Encrypt(PK,k,W,T)→(CTK,I):在线加密算法。输入系统公钥PK、文件预加密密钥k、关键字集合W和数据属主定义的访问策略T。数据属主随机选取t1,t2∈Zp,ST为策略树T的所有叶子节点的属性集合,attr(l)∈ST是每个叶子节点的属性值,策略树T自顶向下地生成多项式,步骤如下:
步骤1设根节点多项式为qr(0)=t2,节点r门限值为kr,随机选择其他kr-1 个不同节点,则可以得到根节点多项式qr(x)。
步骤2对于非根节点f,设qf(0)=qp(f)(index(f)),节点f门限值为kf,随机选择其他kf-1 个不同节点,则可以得到非根节点多项式qf(x)。
步骤3按上述递归算法最后可以得到叶子节点l的多项式ql(x)。
给定关键字集W={w1,w2,…,wm},数据属主从每个文件中提取关键字集,并且建立索引,计算,如果文件含有关键字wi,则令,否则令σi=1。
最后数据属主将文件密文CT,索引I={σi(1 ≤i≤m),μ0,μ2,μ3}和中间密文CTK={ω0,ω1,ω2,μ0,μ1,μ2{(δl,ηl|attr(l)∈ST)}}上传至云服务器。
Trapdoor(PK,SKid,W′)→(TK,Z,TRW′):陷门生成算法。输入系统公钥PK、用户私钥SKid和搜索关键字集W′。用户根据搜索关键字集合中的每一个关键字处于加密算法中所给定的关键字集合W={w1,w2,…,wm}的位置生成相对位置集Z,并随 机 选 择s∈Zp,计 算,r4=,同 时 对 每 个 属 性 值aj∈S计 算,,最后用户将搜索凭证陷门值、搜索凭证和位置集Z发送给云服务器。
Search(PK,TRW′,I)→(CT′):搜索算法。输入系统公钥PK、陷门值TRW′和索引I,搜索过程如下。
步骤1云服务器验证用户是否满足访问策略,若通过验证,云服务器将中间密文CTK和搜索凭证TK发送给审计中心,请求Dr,否则搜索失败。
步骤2审计中心自底向上地计算Dr。首先,验证每一个叶子节点l的属性值attr(l)是否属于用户的属性集S,若attr(l)∈S,计算,否则Dl=⊥。然后计算非叶子节点f的所有子节点f′的Df′,若节点f存在kf个子节点f′,记该子节点的集合为ϑf,若不存在,记Df′=⊥。接着计算Df=,其 中i=index(f′),。用上述的递归算法最后计算出根节点的Dr=e(g,g)rsqr(0)=e(g,g)rst2,并发送给云服务器。
步骤3云服务器陷门值TRW′和索引值I验证式(1)是否成立,其中τ→i为搜索关键字下标在给定的关键字集中的映射。若成立,则表明匹配到密文,将返回的密文集CT′发送给用户,搜索凭证TK和密文密钥CTK发送给审计中心;若等式不成立,输出⊥。
Audit(SKid,TK,CTK)→{0,1}:审计算法。输入用户私钥SKid、搜索凭证TK和中间密文CTK。审计中心首先验证该用户使用的私钥SKid中的K′与问责列表中此用户id所对应的θ是否相等,如果不相等,则该私钥有被泄露、贩卖或者非法盗用的嫌疑,因此该用户不能访问此文件,返回⊥。同时,需要对该用户以及通过运行追踪算法定位到的私钥所有者进行问责;如果相等,审计中心继续验证式(2)是否成立,若等式成立,将该返回密文集所对应的参数ω、ω1、ω2和Dr发送给用户;若不成立,则该用户没有权限访问此文件,输出⊥。
Decrypt(SKid,CT′,ω,ω1,ω2,Dr)→(k) :解 密 算 法。输入用户私钥SKid、返回密文CT′和密文参数ω、ω1、Dr,用户用式(3)解出用CP-ABE技术加密的密钥k,再用k解密文件密文CT,即完成了对文档的解密。
Revoke(V):用户撤销算法。当用户的数据集合发生改变时,证书中心更新用户的版本信息为V′=(id,,并发送给审计中心,用户对应于旧版本信息V=(id,vid)的私钥SKid将不能通过审计,因此实现了用户的撤销。只有当用户向证书中心重新申请授权且生成对应于新版本信息的私钥SKid′时,用户才能解密被授权的密文。
Trace(PK,TA,SKid)→(id):审计中心运行追踪算法。输入系统公钥PK,问责列表TA和用户私钥SKid,首先审计中心验证该私钥是否合理,如果私钥SKid不合理,输出⊥;如果私钥SKid合理,即SKid的形式是SKid=(K,K′,K1,K2,{Xj,Yj}aj∈S),并且能使式(4)~式(6)成立,在问责列表中查找K′,输出对应的身份id,当有必要撤销该用户时,审计中心将该用户的版本信息设置为V*=(id,0),并撤销其属性。
正确性:
本文方案是能够确保文件安全的,数据属主用传统对称加密算法对文件进行离线预加密,再用密文策略属性基加密方案对预加密文件的密钥k进行在线加密,当用户的属性满足访问策略时才可解密获得密钥k。同时,本文方案可以防共谋攻击,即便用户用私钥共谋生成了搜索凭证,但该搜索凭证是不能通过审计的,用户无法通过共谋来获取文件信息。此外,本文是抗选择关键字攻击和具有可问责安全性的,抗选择关键字攻击的证明与文献[11]中的证明相似,本文不再进行证明。本章将要证明本文方案基于q′-SDH 假设下是可问责的。证明过程具体如下。
定理1若q′-SDH 假设成立,且私钥询问次数qs≤q′,那么本文方案是可问责的。
在证明定理1前,首先证明引理1。
引理1如果BB(Boneh-Boyen)[14]签名方案在弱选择消息攻击下的存在性是不可伪造的,则本文方案是可问责的。
证明对于本文方案,如果存在一个多项式时间敌手A,能够以不可忽略的优势ε赢得下述问责游戏,则可以构造出一个仿真器B在弱选择消息攻击下,能够以同样的优势ε构造一个BB签名。游戏中挑战者C与仿真器B进行交互。
(1)初始化。挑战者C将BB 签名方案的公钥PK*={p,g,G,ga}发送给仿真器B,仿真器B选择随机数α,β,a,b,c∈Zp,同时定义两个哈希函数H1:{0,1}*→G和H2:{0,1}*→Zp,将公 钥PK=(G,GT,e,p,g,gα,e(g,g)β,ga,gb,gc,H1,H2) 发送给敌手A,并初始化一个问责列表TA=∅。
(2)询问阶段。敌手A向仿真器B发送(id1,S1),(id2,S2),…,(idi,Si),…,(idq,Sq)进行q次私钥询问,获得对应的私钥。仿真器B选择随机数θi∈Zp(如果θi在问责列表TA中已经存在或者θi=-α,则重新随机选取θi),向挑战者C询问θi的BB 签名。挑战者将签名发送给仿真器B。仿真器B为Si中的每个属性随机选取k1,k2,…,kj∈Zp,r∈Zp,计算Ki=,,,最后将输出的私钥发送给敌手A,将数组(θi,idi)插入到问责列表TA中。
(3)私钥伪造。敌手选择一个私钥SK*发送给仿真器B。假设敌手A在上述游戏中获胜,那么有Trace(PK,TA,SK*)∉(Λ,id1,id2,…,idq),同 时SKid=(K,K′,K1,可以通过私钥合理性检验,并且K′∉{θ1,θ2,…,θq}。则有:
设u为未知元,K2=gu。将K2带入式(10)可得到,将K1带入式(9)中可以得到。仿真器B计算,且K′∈Zp,因此得到是一个有效的签名。因此仿真器B在弱选择消息攻击下,以优势ε对BB签名进行了存在性的伪造。 □
由文献[14]可得出引理2。
引理2若q′-SDH 假设成立,且私钥询问次数qs≤q′,那么在弱选择消息攻击下,BB 签名是存在性不可伪造的。
最后,定理1可由引理1和引理2直接证出,因此本文方案基于q′-SDH 假设下是可问责的。
本章包括可问责性验证和性能对比两个实验,实验环境为Linux系统Intel Core i5-6200U CPU 2.4 GHz和4 GB 内存,实验代码基于对cp-abe-0.11 库[15]修改和编写,并且使用基于椭圆曲线y2=x3+x构造的160 bit椭圆曲线群。
验证本文方案的可问责性,即验证该方案能够仅根据未知用户的私钥就可以追踪到该用户的身份信息id,并对其进行问责。实验方法如下:首先选择4个授权用户,其中用户的主要相关参数取值和私钥所属对应关系如表1 所示(θ为56 bit 的大素数),接着运行追踪算法,随机选取一个私钥作为输入,重复20 次,最后将每次输入的私钥和输出的id对应地记录在表格中。
实验结果记录情况如表2 所示,从表中可以看出,每次实验输出的用户id与输入的用户私钥的对应关系均同表1中二者的对应关系一致,即根据用户的私钥正确追踪到了该用户的身份,因此该方案是可问责的。
Table 1 Parameter value表1 参数取值
Table 2 Experimental result表2 实验结果
6.2.1 理论对比分析
本节将从功能上和性能上对本文方案与近几年比较典型的方案进行理论对比分析。
功能对比如表3所示,除了文献[16]方案,其他方案都支持多关键字查询;本文方案和文献[8]中的方案支持用户撤销,可灵活管理用户权限;文献[16]和文献[8]中的方案采用与门访问结构,表达能力比较弱,本文采用的树访问结构表达能力较强;在加密方面,文献[7-8,10,16]方案均采用的是直接对文件进行在线加密,当文件较大时,计算负担较重,而本文方案是对文件的离线预加密密钥进行在线加密,远小于对文件加密的计算量,有效地提升了系统的线上资源利用率;此外,本文方案是可问责的,可以确定私钥泄露者的身份,并将其撤销,保障系统的安全。
Table 3 Functional comparison表3 功能对比
性能对比如表4 所示,其中N表示系统属性个数,E和ET分别表示为G和GT上的指数运算,S为用户的属性个数,用户搜索关键字个数为t,数据属主选取关键字的个数为m,其中t≤m。综合表1 的功能对比可以看出,文献[16]中的方案功能较少,文献[8]的索引生成和陷门生成计算量与系统属性相关,而系统属性数目庞大,导致计算开销过大,文献[7]和文献[10]方案中的索引生成和陷门生成效率较高,但搜索的计算开销较大,且功能上不支持撤销和问责。因此,综合考虑本文方案较其他方案有明显优势。
Table 4 Performance comparison表4 性能对比
6.2.2 实验对比分析
本节实验将分别从索引生成时间随关键字数量的增长的变化情况、陷门生成时间随关键字数量的增长的变化情况和搜索时间随用户属性数量的增长的变化情况三方面对本文方案与文献[7]、文献[8]中的方案进行仿真对比实验。分别运行上述3 个方案的索引生成算法(本文的索引是通过运行在线加密算法生成的,因此本文的索引生成算法即为在线加密算法)、陷门生成算法和搜索算法,记录每个算法运行的时间,得到实验数据。其中,实验数据取运行20 次的平均值,得出数据用Origin lab 进行仿真并绘制对比图,对比结果如图2、图3、图4所示。
Fig.2 Index generation time图2 索引生成时间
Fig.3 Trapdoor generation time图3 陷门生成时间
Fig.4 Search time图4 搜索时间
图2 为本文方案与文献[7]、文献[8]中的方案的索引生成时间随关键字数量变化的对比曲线。其中,系统属性个数的取值为N=50,用户属性S=5,m的取值为{2,4,6,8,10,12,14,16,18,20}。由图2 可以看出,文献[8]中方案的索引生成时间仅与系统属性个数有关,因此索引生成时间不随关键字数量的增加而改变,但系统属性个数数目较大,其计算量远高于文献[7]中的方案和本文方案;本文方案与文献[7]的索引生成时间均与关键字数量呈正比,且曲线接近,因此二者的计算开销大致相同。
图3 为本文方案与文献[7]、文献[8]中的方案的陷门生成时间随关键字数量变化的对比曲线,其中系统属性个数的取值为N=40,用户属性S=5,m的取值为{2,4,6,8,10,12,14,16,18,20}。从图3 中可以看出,本文方案与文献[8]中方案的陷门生成时间均不随关键字数量的变化而变化,但文献[8]中方案的陷门生成时间与系统属性数目相关,因此曲线明显高于本文方案;文献[7]中方案的陷门生成时间与关键字数量呈正比,而本文方案与用户属性个数相关,因此在关键字数量较少时,文献[7]的陷门生成效率高,而当关键字的数量较大时,本文方案的效率更高。
图4 为本文方案与文献[7]、文献[8]中的方案的搜索时间随关键字数量变化的对比曲线,其中系统属性个数的取值为N=40,用户属性个数S的取值为{2,4,6,8,10,12,14,16,18,20}。从图4中可以看出,3个方案的搜索时间都与用户属性个数成正比,但文献[7]的搜索计算量明显高于其他二者,本文方案的搜索开销略高于文献[8],但相差不大。
综合以上分析,本文实际性能的验证与理论性能分析一致,证明本文方案是高效可行的。
本文提出了一种可以对私钥泄密者问责的多关键字可搜索加密方案,一旦有用户将自己的私钥泄露或者贩卖给他人,可以确定其身份,并将其撤销,同时在q′-SDH 假设下证明了本文是具有可问责安全性的;此外,用在线/离线加密提高系统效率,支持多关键字查询提升用户搜索体验。实验验证和理论分析表明,本文方案是实用、高效的。下一步将要研究适用于移动云存储的可搜索加密方案。