基于直接匿名证明的k次属性认证方案

2019-01-31 02:34:26柳欣徐秋亮张斌张波
通信学报 2018年12期
关键词:私钥解密运算

柳欣,徐秋亮,张斌,张波

(1. 山东青年政治学院信息工程学院,山东 济南 250103;

2. 山东省高校信息安全与智能控制重点实验室(山东青年政治学院),山东 济南 250103;3. 山东大学软件学院,山东 济南 250101;4. 济南大学信息科学与工程学院,山东 济南 250022)

1 引言

当前,云服务模式因其在运算能力强、存储空间无限、容易扩展和按需提供服务[1]等方面的优势而逐渐赢得企业和个人用户的青睐。在各类云应用系统(如分布式医疗系统[2-3]、企业计算[4]等)的设计中,需要着重考虑用户的隐私保护和细粒度访问控制问题。对此,属性认证技术提供了较好的解决方案。在属性认证方案中,认证过程通常由用户对某项服务的请求触发。一旦服务提供商(SP, service provider)接收到该项请求,就会返回认证所需的属性要求(或称为访问结构)。此时,用户向SP提供自己掌握这些属性的证明。若证明有效,用户将得到后者的访问授权。在整个认证过程中,用户不需要揭示自己具体使用的属性集合。相对于传统的基于公钥的认证[5-7],属性认证的最大优势是允许系统管理者根据用户属性为用户群体中的每个成员定制访问权限,使不同用户可以利用属性私钥访问不同的敏感数据或服务。

在文献[3]中,Zhou等提出一个病人自我可控的隐私保护属性认证方案。该方案定义了3个隐私保护等级。1)得到病人直接授权的医生既能访问病人健康信息,也能实现对病人的身份认证。2)得到病人间接授权的医生和研究机构仅能访问病人健康信息。3)未得到授权的人将无法获得病人的健康信息。然而,Zhou等的方案仅支持d-out-of-n门限认证策略。2014年,Lian等[8]指出在许多情况下,认证策略并非总是静态的。为此,提出一个支持动态认证策略的属性认证方案。该方案可视为Maji等[9]属性签名(ABS, attribute-based signatures)方案的直接应用。此后,Li等[4]指出某些应用要求将用户集合划分为多个不同的小组,同时为组内用户分配不同的属性。在认证过程中,要求同组的多个成员对各自的属性私钥进行合并。为此,通过对Maji等[9]ABS方案做出扩展,Li等提出一个适合于企业计算环境的合作属性认证方案。2015年,Yang等[10]提出基于一次性属性树的属性认证方案,但缺点是:1) 用户群体是采用静态方式建立的,因此不允许动态增加新的用户;2) 属性权威(AA,attribute authority)有能力从认证协议副本中恢复用户的身份,因此用户必须完全信任AA。此外,Yang等[11]还提出一个基于动态属性树的属性认证方案。然而,该方案与文献[10]方案具有相同的缺点。此外,用户必须在认证过程中明确地向 SP揭示自己使用的属性子集,即不满足属性匿名性。在文献[12]中,Li等指出在实际应用中有必要利用分布式AA取代单一的中央权威,并且提出一个多权威属性认证方案。然而,该方案的缺点是:1) 仅支持 d-out-of-n门限认证策略;2) 在密钥发布阶段,用户总共需要执行N(N-1)次两方密钥协商子协议,其中,N表示系统中的 AA数量;3) 当需要增加或删除某个AA时,所有剩余的AA需要重新执行系统建立协议,而且用户需要分别与每个AA重新执行低效的密钥协商子协议。

最近,Yuen等[13]提出第一个k次属性访问控制方案模型以及一个具体方案。Yuen等指出,此类方案可以同时解决按次付费的云服务模式关于“灵活的匿名访问控制”和“用户访问次数受限”的应用需求。然而,该方案的缺点如下所示。1) 该方案是在标准PC平台上设计的。一旦PC被攻破,该用户即被完全攻破,从而无法体现其安全模型中关于“用户部分被攻破”的情况。2) 在注册协议中,用户无法对AA提供的属性私钥进行验证,即用户必须完全信任 AA。3) Yuen等指出,为了防止恶意AA进行陷害,用户需要在注册协议中选取用户私钥。然而,该方案的安全模型定义却遗漏了可开脱性。4) 在认证过程中,用户与SP的运算量线性依赖于访问结构的规模。5) 为了实施对访问次数的控制,要求用户在认证期间向 SP提供已执行的认证次数。然而,这种方式在某些情况下不满足无关联性。尽管 Yuen等指出可以通过引入区间证明技术加以改进,但并未提供具体方案。

本文认为,Yuen等的方案可视为一种k次属性认证(k-TABA,k-times attribute-based authentication)方案。相对于基于传统公钥认证技术的k-TAA(k-times anonymous authentication)方案[5-7],k-TABA方案因支持细粒度访问控制而更适合于当前的云应用环境。本文的研究目标是设计认证过程更为高效的k-TABA方案,同时克服已有属性认证方案[3-4,8,10-13]的诸多缺点,主要包括:1) 用户群体以静态方式建立,且用户无法在注册过程中对属性私钥进行验证;2) 用户在认证阶段的运算耗费与底层属性认证策略满足线性依赖关系;3) 既不允许AA对泄露的用户私钥执行废除,也不允许用户申请更新特定属性值。为此,本文基于可信计算领域的直接匿名证明[14-18]、Zhang等[19]的密文策略属性加密方案和区间证明技术[20]构造了新的k-TABA方案。需要指出的是,Zhang等的方案是采用属性树方式描述的。本文方案采用了基于线性秘密分享方案的描述方式,从而能更好地与Green等[21]的密钥绑定技术相结合。借助此项技术,本文提出Zhang等方案的外包解密版本,并将其安全性由 CPA(chosen plaintext attack)安全性增强至 RCCA(replayable chosen-ciphertext attack)安全性。此外,本文对Chen[15]的直接匿名证明安全模型进行扩展,从而得出新的k-TABA方案安全模型。同时,在该模型下为新方案提供了安全性证明。与 Yuen等的k-TABA方案相比,本文方案具备以下优势。1) 用户端运算由主机平台(Host)和可信的TPM(trusted platform module)芯片协同完成,使得即使敌手控制了Host,仍然无法以用户的身份通过认证过程。2) 引入了直接匿名证明方案的验证者本地废除和Zhang等的属性更新机制,从而满足了现实应用中对泄露的用户私钥实施废除和允许用户申请更新特定属性值的需要。3)在用户注册过程中,允许用户对AA提供的属性私钥进行验证,从而无需假设AA完全可信。4) 在认证阶段,允许用户借助云服务器完成复杂的属性解密运算,而且用户端 TPM芯片与 Host的绝大部分运算任务均能预先以离线方式执行。于是,用户端无需执行双线性对运算(简称为对运算)且运算开销独立于用户属性集合或访问结构。作为总结,本文的主要贡献体现在以下方面。1) 克服了上述已有k-TABA方案的多个缺陷,并提出改进的安全模型。2) 结合直接匿名证明技术增强了用户端的安全性。3) 结合无需执行对运算的知识证明、预计算和外包解密等技术在最大程度上优化了用户在认证、属性更新阶段的运算效率。4)去除了已有方案中关于“AA在注册阶段完全可信”的较强假设。

2 预备知识

本文使用了对称的双线性群环境 (G0,GT,p,eˆ),其中,G0,GT表示素数p阶循环群,且表示双线性映射,使

2.1 安全假设

q- SDH (theq-strong Diffie-Hellman)假设[6]:对于任何的概率多项式时间(PPT, probabilistic polynomial time)算法A,以下的概率是可忽略的,即

DBDH(decisional bilinear Diffie-Hellman)假设[14]:对于任何的PPT算法A,以下的概率是可忽略的,即

DBDHI(decisional bilinear Diffie-Hellman inversion)假设[6]:对于任何的PPT算法A,以下的概率是可忽略的,即

2.2 基于集合成员身份的区间证明技术

首先,权威产生Boneh-Boyen签名方案[22]的密钥对对于集合中的每个元素k,该权威计算同时,公开集合

现在,用户构造知识证明 π =PK{ (k):k∈Φ }等价于构造证明文献[20]提出了避免用户执行对运算的技术,即用户选 取l,ν ∈Zp, 设 置,并将π转换为的形式。此外,验证者需要额外检查是否满足

2.3 访问结构与线性秘密分享方案

本文称在Zp上构造的秘密分享方案Π是关于P的线性秘密分享方案(LSSS, linear secret sharing schemes)[21],条件是以下性质同时得到满足:1) 参与方的秘密份额构成了Zp上的秘密向量;2) 存在l行列矩阵M,且该矩阵称为方案Π的份额产生矩阵。存在函数ρ,该函数能将矩阵M的第i行Mi映射到参与方ρ(i)。定义列向量=(s,r2,r3,… ,rn),其中,s∈ Zp表示待分享的秘密元素,r2,r3, … ,rn∈Zp为随机元素,则称λ=→构成由参与方ρ(i)掌握i的关于元素s的秘密份额。

2.4 支持外包解密的密文策略属性加密方案及其安全性

属性加密(ABE, attribute-based encryption)方案是属性密码学的一个重要分支,具体可细分为密钥策略属性加密(KP-ABE, key-policy ABE)方案和密文策略属性加密(CP-ABE, ciphertext-policy ABE)方案[2]。相对于标准的ABE方案,支持外包解密的 ABE方案需要额外定义 3个算法,即KeyGenout,Transformout,Decryptout[21]。其中,KeyGenout算法的作用是产生用户的解密私钥ASK和转换钥TK;Transformout算法的作用是利用TK对密文CT执行解密,得到部分解密的结果CT′;Decryptout算法的作用是利用ASK将CT′转换为真正的明文m。

文献[21, 23]指出,支持外包解密的ABE方案应当满足RCCA安全性和可验证性。其中,RCCA安全性是一个强度介于 CCA(chosen-ciphertext attack)安全性和CPA安全性之间的概念。在本质上,RCCA安全性允许在“不以有意义方式改变消息内容”的条件下对密文做出修改[21]。本文着重考虑支持外包解密的CP-ABE方案的安全性。具体地,本文称支持外包解密的CP-ABE方案满足选择性的RCCA安全性[21],条件是任何的 PPT算法A都无法以不可忽略的概率在以下的实验中获胜:在初始化阶段,敌手A向模拟器S发送用于产生挑战密文的访问结构 A*。在系统建立阶段,S向A提供APK。在询问 1阶段,允许A提出预言询问Create(S),Corrupt(i),Decrypt(i,Cha)。其中,预言机Create(·)产生关于属性集合S的解密私钥ASK和转换钥TK,并且返回TK。预言机Corrupt(·)返回第i次Create询问中产生的ASK。预言机Decrypt(·,·)利用第i次Create询问中产生的ASK解密密文Cha,并且返回解密结果m。在挑战阶段,A输出消息M0,M1,条件是A并不掌握能满足访问结构 A*的解密私钥。此时,S向A返回利用 A*产生的关于消息Mb(b∈{0, 1} )的挑战密文Cha*。在询问2阶段,允许A继续提出上述类型的询问。但是,不允许A通过Corrupt询问获得能满足 A*的解密私钥,也不允许A直接将Cha*作为Decrypt询问的内容。最终,若A能对秘密比特做出正确猜测,则判定它在实验中获胜。

可验证性是指用户可以验证由服务器执行的密文转换过程是否正确[23]。可验证性实验与上述实验的区别如下:1) 去除初始化阶段;2) 在询问 1和询问 2阶段,同样允许A提出预言询问Create(S),Corrupt(i),Decrypt(i,Cha),但不对A的询问内容做出限制;3) 在挑战阶段,A输出M*,A。此时,返回Cha*=Encrypt(APK,M*,A );4) 在最终的输出阶段,输出属性集合S*和部分解密结果Cha*′。若满足Decryptout(APK,Cha*,Cha*′,则判定在实验中获胜。

2.5 直接匿名证明

直接匿名证明(DAA, direct anonymous attestation)[14-18]是一类可用于实现可信平台模块远程证明的匿名签名方案,且所得签名可以确保用户的隐私。在DAA方案中,签名者角色可划分为主要签名者和辅助签名者。前者由运算能力受限的 TPM芯片充当,后者则由具有冗余计算能力但安全等级更低的Host充当。由于TPM掌握签名私钥f,因此 Host无法在 TPM 不参与的情况下独立产生签名。最新研究表明,许多DAA方案中的TPM可被作为静态Diffie-Hellman预言机使用,即给定群元素B,TPM输出Bf。于是,若Host被攻破,敌手可以利用 Brown-Gallant算法提取出私钥f[17-18]。因此,在DAA方案的设计与应用中,必须破坏静态 Diffie-Hellman预言机的存在条件,从而确保方案的基础安全性。

3 k次属性认证方案的语法定义与安全模型

首先,本文定义的k-TABA方案包含以下参与方,即用户User、属性权威AA和服务提供商SP,其中,User可划分为TPM和Host。此类方案由以下的算法/协议构成。

TSetup这是一个可信的系统建立算法,用于产生方案的系统参数TPK。

ASetup该算法由AA执行,用于产生方案的公钥APK和AA的主密钥MSK。

USetup该算法由User执行,用于产生密钥对(upk,usk) ,(hpk,hsk)。

AttGen这是由User与AA执行的协议。通过该协议,User获得AA提供的伪名nym,成员证书cre以及关于属性集合S的属性私钥ASK。

Auth这是由User与SP共同执行的属性认证协议。

AUpdate当特定属性值发生改变(如由j更新为w),User可以通过该协议向AA申请更新钥UKj→w,从而对ASK中对应于属性j的部分进行更新。同时,AA为其他拥有该属性且并未执行属性更新的用户提供更新钥UK′j。

在本文安全模型下,安全的k-TABA方案应当同时满足以下性质。

正确性:假设TPK是利用TSetup算法产生的,(MSK,APK) 是利用ASetup算法产生的,(upk,usk) ,(hpk,hsk)是诚实用户User利用USetup算法产生的。User通过与AA执行AttGen协议而获得伪名nym,成员证书cre以及关于属性集合S的属性私钥ASK。当User利用(nym,cre,ASK)与诚实的SP执行Auth协议时,只要S满足SP在底层CP-ABE方案密文Cha中嵌入的访问结构A(此后标记为S|=A)且已执行的认证次数count不超过上界n,则User必然能通过此次认证过程。此外,当自己的特定属性值由j更新为w时,User可以通过与AA执行AUpdate协议而获得更新后的属性私钥ASK′。

隐私性:若User的认证次数count不超过上界n,则包括AA与SP在内的任何参与方都无法对该用户执行Auth协议的过程进行关联。另外,对于2个拥有相同属性集合S的用户User1,User2,包括AA与SP在内的任何参与方都无法对他们执行Auth协议的过程进行关联。

可靠性:若User的认证次数上界为n,则它无法与SP成功地执行n+1次Auth协议而不被发觉。

抗合谋攻击:对于每个被攻破的用户,在其属性集合S并不满足给定访问结构A(此后标记为S|≠A)的情况下,即使他们联合起来,也无法与SP成功地执行Auth协议。

可追踪性:假设User拥有能满足给定访问结构A的属性集合,即使敌手能攻破User的主机平台,也无法在绕开TPM的情况下独立执行Auth协议,或实现对User的陷害。

3.1 隐私性实验

敌手A与模拟器S共同执行以下过程。

初始化执行TSetup算法,产生TPK。执行ASetup算法,产生MSK,APK。初始化列表,并且向发送TPK,APK,MSK。

询问1允许向提出以下类型的预言询问。

-USetup( )产生(usk,upk) ,(hsk,hpk),执行(*表示未知元素),并且返回upk,hpk。

-AttGen(S,upk)以用户upk的身份与执行AttGen协议,并且获得后者产生的nym,cre和ASK。最终,将中的表目(upk,usk,hpk,hsk, *,*,*,*,*,*)更新为(upk,usk,hpk,hsk,nym,cre,ASK,S,c= 0 ,count=0),其中,c=0表示未攻破,c=1表示已攻破,且count=0表示已执行的认证次数。

-Corrupt(nym)根据伪名nym在中找到表目(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count)。若c=0,则返回usk,hsk,并且将该表目更新为(upk,usk,hpk,hsk,nym,cre,ASK,S,c=1,count)。

-Auth(Cha,nym)根据nym在中找到表目(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count)。假设A表示嵌入在底层CP-ABE方案密文Cha中的访问结构。若S|=A且count<n,则S以用户nym的身份与执行Auth协议。最终,S将该表目更新为

挑战输出。假设 A*表示嵌入在底层CP-ABE方案密文Cha*中的访问结构。检查是否满足且count*<n。若是,选取∈ {0, 1},并且以用

R户的身份与A执行Auth协议。在该协议结束后,S将L中的表目将表目

询问2允许A继续提出询问 1阶段中的各类询问,但不允许它提出询问或

猜测最终,A输出对的猜测结果′。若则判定A在实验中获胜。

3.2 可靠性实验

初始化S执行TSetup算法,产生TPK。同时,S运行ASetup算法,产生APK,MSK。S初始化列表L,并且向A发送TPK,APK。

询问允许A向S提出以下类型的预言询问。

-USetup( )同隐私性实验。

-AttGen(S,upk)S以诚实AA的身份与A共同执行AttGen协议,并且为A产生nym,cre,ASK。

-Corrupt(nym)S根据伪名nym在L中找到表目(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count)。若c=0,则返回usk,hsk,并且将该表目更新为(upk,usk,hpk,hsk,nym,cre,ASK,S,c=1,count)。

-Auth(Cha,nym)同隐私性实验。

挑战:输出 A*,nym*。检查nym*是否是借助AttGen询问产生的,若是,则以诚实SP的身份与执行n+1次Auth协议,并且利用 A*产生底层CP-ABE方案的挑战密文Cha。最终,若这n+1次执行过程都获得成功,则判定A在实验中获胜。

3.3 抗合谋攻击实验

A与S共同执行以下过程。

初始化向提供访问结构 A*,S运行TSetup算法,产生TPK。运行ASetup算法,产生APK,MSK。初始化列表,,并且向A发送TPK,APK。

询问1允许A向S提出以下类型的预言询问。

-USetup( )同隐私性实验。

-AttGen(S,upk)同可靠性实验,唯一的限制是要求S|≠A*。此外,S执行

-AUpdate(S,j,w)S为A产生更新钥UKj→w,唯一的限制是S′|≠A*,其中S′表示对S执行属性更新的结果。

挑战输出KSP0,KSP1,NYM,其中,NYM表示由被废除用户的伪名构成的集合。检查是否满足

询问2允许A继续提出询问1阶段中的各类询问,但不允许它利用AUpdate询问获得可以对Cha*执行解密的属性私钥。同时,对于AttGen询问,要求所产生的nym满足nym∉NYM。

3.4 可追踪性实验

该实验的执行过程分以下2个模式。

模式1

初始化执行TSetup算法,产生TPK。同时,运行ASetup算法,产生APK,MSK。初始化列表,并且向发送TPK,APK。

-USetup()对该询问的处理分以下2种情况。在情况1中,为用户产生(upk,usk) ,(hpk,hsk),执行并且返回upk,hpk。在情况 2中,S接收由A产生的(upk,usk) ,(hpk,hsk),并且执行hpk,hsk, *,*,*,*,c=1, * )。

-AttGen(S,upk)S根据upk在L中找到对应的元组(upk,usk,hpk,hsk, *,*,*,*,c, * ),产生nym,cert,ASK,并且返回nym,cert,ASK。S将该元组更新为(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count=0)。

-Corrupt(nym)同可靠性实验。此外,S额外执行

-Auth(Cha,nym)同隐私性实验。

-Semi-Auth(Cha,nym)以诚实TPM的身份与联合执行Auth协议中用户端的操作。在执行过程中,向S发送Host端传送的数据,返回TPM的应答。

模式2

初始化运行TSetup算法,产生TPK。初始化列表,向A发送TPK,并且接收后者产生的APK。

询问 允许A向S提出以下类型的预言询问。-USetup( )同隐私性实验。

-AttGen(S,upk)同隐私性实验。-Corrupt(nym) 同模式1。

-Auth(Cha,nym)同隐私性实验。

-Semi-Auth(Cha,nym)同模式1。

4 新的k次属性认证方案

4.1 方案的设计思想

本文方案可视为对DAA方案进行扩展得到的。ASetup算法相当于DAA方案的系统建立算法。在该算法中,AA共产生3个密钥对。其中,(w1, γ1)是底层CL-SDH(Camenisch-Lysyanskaya SDH)签名方案[6]的公私钥对,(w2, γ2)是底层区间证明协议[20]的公私钥对。同时,(gα,e(g,g)β,{PK} ),(α,gβ,

jj∈U分别构成底层CP-ABE方案[19]的公钥和主密钥,其中,U表示属性全集。AttGen协议相当于DAA方案的成员注册协议。在该协议中,TPM芯片产生两个密钥对其中,usk用于充当TPM私钥,且hsk用于产生一次性认证令牌。同时,TPM产生知识签名π1,使AA确信upk,hpk满足正确性。最终,User获得AA产生的伪名nym,关于(usk,hsk)的成员证书cre以及关于属性集合Si的底层CP-ABE方案解密私钥ASK。此外,AA向User提供知识签名π2,目的是证明所提供的cre,ASK满足正确性。

Auth协议相当于DAA方案的签名/验证协议。在该协议中,TPM与Host联合产生知识签名π3,从而向SP证明以下断言同时成立。1)User使用的认证令牌Jk是利用hsk和公开区间 Φ =[1,n]中尚未使用过的下标k产生的。2)User掌握关于(usk,hsk)的成员证书。3)User并未因TPM私钥usk泄露而被废除。4)User的当前认证次数尚未超过上界n。在断言 2) 的证明过程中,User需要证明掌握成员证书使为了

实现该项证明且不要求User执行对运算,本文借鉴了文献[20]的技术。具体地,User将Ai盲化为的形式,并且证明掌握秘密元组(xi,δ,δf,δy) ,使得此外,该项技术要求SP额外验证是否满足。为了证明断言 4),User需要在Φ中选取未曾使用的下标k,并且证明自己掌握关于k的Boneh-Boyen方案[22]签名ok。为了避免User执行对运算,本文直接采用了第2.2节所述的区间证明技术。通过引入预计算技术[16],π3产生过程中的绝大多数运算均能在离线计算阶段完成。

为了实现对User的属性认证,本文方案借鉴了Yang等[10]在认证过程中使用带密钥的散列函数HK()的思想。具体地,SP自行定义 LSSS访问结构(M,ρ)并在该结构下产生关于元素KSP的底层CP-ABE方案[19]挑战密文Cha。同时,知识签名π3中的挑战串c并非Host随机选取的,而是要求Host首先解密Cha得到KSP,然后由TPM利用HK()产生c,且该过程要求将KSP作为HK()的密钥。显然,若User的属性集合Si无法满足(M,ρ),所产生的知识签名π3将无法通过SP的验证过程。

此外,本文方案继承了底层CP-ABE方案的属性更新机制,即当User的某个属性值由j更新为w时,AA将为其发送更新钥UKj→w。对于其他同样拥有该属性且并未执行属性更新的用户,AA同样为他们发送更新钥UK′j。

4.2 符号定义

在本文方案的描述中,本文定义使用了多个符号。具体含义如表1所示。

4.3 方案的具体构造

4.3.1 系统参数产生(TSetup)

该算法执行以下步骤。

1) 以安全性参数λ作为输入,产生双线性群参数(G0,GT,p,eˆ),其中eˆ表示双线性映射,满足

2) 选取生成元g,h,h1,h2∈RG0,同时选取

4.3.2 属性权威系统建立(ASetup)

为了产生系统公钥和主密钥,AA执行以下步骤。

表1 本文方案使用的符号

4) 初始化用户废除列表RL←∅。

4.3.3 属性密钥产生(AttGen)

若Useri( Host+ T PM)希望获得关于属性集合Si的底层CP-ABE方案属性私钥,他需要与AA共同执行以下步骤。同时,假设TPM已经利用签署密钥与AA建立了安全的认证信道。

1) Host向AA发送请求的属性集合Si,后者返回随机消息

2) TPM设置cnt=cnt+1,计算f=H1(DAASeedTPM选取y∈Z ,计算RpTPM产生知识签名 π =SPK{ (f,y) :F=

3) 对于每个f′∈RL,AA检查是否满足若是,则AA终止协议。否则,AA进一步验证π1的有效性。

4) 若π1有效,则AA选取xi∈RZp,设置伪名同时,对于每个属性j∈S,AA选取i

5)AA向TPM发送以及知识签名π2,即

Useri与AA在AttGen协议中的主要交互过程如图1所示。

4.3.4 属性认证(Auth)

用户Useri( TPM+Host)与SP执行以下交互过程。

2)SP定义LSSS访问结构(M,ρ),其中M为矩阵,ρ为映射,即将M的第i行Mi映射为属性ρ(i)。SP选取定义随机列向量

3) 对于i=1,…,l,SP计算

图1 AttGen协议的交互过程

4) 假设当前RL的内容为对 于 ι =1,… ,|RL|,SP设 置

5)SP选取nSP∈R{0, 1}t,并且向Host发送

6) Host将Cha分离为的形式。若则Host输出⊥,并终止当前协议。

7) 令I= {i:ρ(i) ∈Si}。Host计算常量集合Host设置D′ =Dgα,计算

8) Host选取新鲜下标k∈RΦ,计算认证令牌

9) Host选 取 δ∈RZp, 计 算Host选取l,ν ∈RZp,计算并且与TPM联合产生以下形式的知识签名

然后,Host向SP发送

10)SP将σ分离为E2,E3)的形式,并且执行以下的验证过程。①对于每个f′∈RL,验证是否满足②验证π3的有效性。③验证是否满足④验证o~k是否并非群G0的单位元。若上述验证都通过,则接受用户的认证过程。

Useri与SP在Auth协议中的主要交互过程如图2所示。

4.3.5 属性更新(AUpdate)

假设Useri( TPM+Host)希望将属性j更新为w。为此,他需要与AA执行以下交互过程。

1) Host向AA发送更新请求reqj→w,后者返回随机消息nAA∈R{0, 1}t。

2) Host选 取 δ ∈RZp, 计 算然后,Host与TPM联合产生知识签名

3) 对于每个f′∈RL,AA检查是否满足K=Bf′。若是,则AA终止协议。否则,AA检查π4的有效性以及是否满足

4) 若上述检查通过,AA选取向Host返回同时,AA向其他同样拥有属性j且并未执行属性更新的用户Useri′发送并将APK中的元素PKj=H0(j)vj更新为

图2 Auth协议的交互过程

5) 在接收到UKj→w之后,Host将ASKi中的元素D=gxiH(j)rjvj,D′ =(gα)rj更 新 为D=D·

j0jwj对于其他用户Useri′,则可以利用UK′j将其ASKi′中的对应元素更新为

4.3.6 用户废除(Revoke)

假设Useri被攻破且(Ai,xi)均遭泄露。此时,AA执行以下步骤。

5 底层知识签名的详细描述

在上一节的方案描述中,共涉及4个知识签名。其中,π1与π2分别由TPM和AA采用标准方式产生,π3, π4是由TPM与Host联合产生的。限于篇幅,本节仅详细介绍π3的产生和验证过程。需要指出的是,在π1的产生过程中,TPM 向 Host提供数对在π3, π4的产生过程中,TPM向Host提供数对(B,K=Bf)。由于h1是群参数中的公开元素且B是由TPM随机选取的元素。因此,Host无法对h1与B的取值进行控制,从而有效地去除了静态 Diffie-Hellman预言机[17-18]。此外,为了进一步优化运算效率,本文采用了文献[16]中的预计算技术,即π3产生过程的步骤1)~步骤3)可以预先以离线方式执行,从而减轻了用户端的在线运算负担。

π3的具体产生步骤如下所示。

2)TPM选取B∈RGT,计算K=Bf,其中,此外,TPM选取并且向Host返回R2t,B,K。

π3的具体验证步骤如下所示。

3)SP验证是否满足若是,则接受;否则,拒绝。

6 支持外包解密运算的改进方案

在改进方案中,为了将底层CP-ABE方案[19]解密过程中的主要运算外包给云服务器Server,需要对第 4节的TSetup算法和Auth协议进行修改。同时,增加算法AttGenout,Transformout,Decryptout。其中,AttGenout算法的作用是允许User利用属性私钥ASK自行产生转换钥TK。Transformout算法的作用是允许Server利用TK对Cha执行解密,得到部分解密的密文Cha′。Decryptout算法的作用是允许User利用ASK将Cha′转换为最终的明文KSP。

6.1 系统参数产生(TSetup)

在第4节TSetup算法的基础上,需要补充定义以下的散列函数,即即将TPK扩充为的形式。

6.2 属性认证(Auth)

与第 4节的Auth协议相比,需要做出以下修改。在步骤 1),SP额外选取R∈RGT,设置在步骤 2)SP额外设置并且计算在步骤5),SP向Host发送tag),nSP。在步骤7),Host向Server发送TK,Cha,后者调用Transformout算法并返回部分解密结果Cha′。然后, Host调用Decryptout算法,从而得到KSP。

6.3 转换密钥产生( A ttGeno ut )

假设Useri( Host+ T PM)通过执行第 4节AttGen协议得到的属性私钥符合以下形式,即为了获得转换钥TK,Useri执行以下步骤。

2) Host保存ASKi=(z,TK)。

6.4 密文转换( T ransformo u t )

在接收到Host提供的Cha,TK之后,Server执行以下步骤。

1) 将Cha分离为

2) 假设Si|= (M,ρ),否则Server将输出⊥。定义I= {i:ρ(i) ∈Si}。计算常量集合{ωi∈ Zp}i∈I,

6.5 解密( D ecryptout )

当接收到Server返回的Cha′,Host执行以下步骤。

1) 将Cha分离为的形式,同时将Cha′分离为的形式。

7 安全性证明

定理1第4节方案满足正确性。

证明过程见本文附录。

定理 2在随机预言模型下,只要群G0,GT上的DBDH,DBDHI和q-SDH假设成立,则第4节方案在新的k-TABA模型下是安全的。

证明在本文方案的证明过程中,模拟器S需要定义多个列表,用于对各类预言机进行模拟。具体地,LK用于对散列预言机HK(·)进行模拟, Li(i=2,3)用于对散列预言机Hi(·)(i=2,3)进行模拟,L用于对预言机USetup( ),AttGen( ·,·),Corrupt(·)进行模拟。LAuth用 于对 预 言机Auth( ·,·),Semi-Auth( ·,·)进行 模拟 。Lnym用于对预言机AttGen(·,·)进行模拟。

隐私性当前实验的执行过程分以下两种模式。

模式 1S以DBDH问题实例作为输入,其目标是对以下情况进行分辨:1)满足满足其中,在初始化阶段,S设置并且采用TSetup算法中的方式产生TPK中的剩余元素。S执行ASetup算法,产生MSK,APK。同时,S选取 α , β ∈R{1,… ,m},其中,m表示系统中的最大用户数量。S初始化列表为 L , LK, L2, L3,并且向A发送TPK,MSK,APK。在询问1阶段,S采用以下方式对各类预言机进行模拟。

-HK(m)若(m,hK) ∈LK,则S返回hK。否则,S选取并且返回hK。同时,S执行

-H2(m)若(m,h2) ∈L2,则S返回h2。否则,S选取并且返回h2。同时,S执行L2← L2∪(m,h2)。

-H3(m).若(m,h3) ∈L3,则S返回h3。否则,S选取并且返回h3。同时,S执行

-USetup( )对该询问的模拟分以下3种情况。

情况 1 若当前为第α次询问,则S选取uα∈RZ*p,设置S选取y∈ Z*,

αRp设置同时,S执行显然,uskα=auα为未知元素。

情况 2若当前为第β次询问,则S选取设置选取设置并且返回同时,S执行显然,uskβ=auβ为未知元素。

情况 3在其他情况下,S选取设置并且返回upk,hpk。同时,*,*,*,*)。

-AttGen(S,upk).对该询问的模拟分以下 3种情况。

情况 1若upk=upkα,则S采用模拟方式产生知识签名π1。在AttGen协议结束后,S获得由A产生的S将用户upkα在L中的对应表目更新为

情况 2若upk=upkβ,则S采用模拟方式产生知识签名π1。在AttGen协议结束后,S获得由A产生的nymβ,creβ,ASKβ。S将用户upkβ在L中的对 应 表 目 更 新 为(upkβ,uskβ,hpkβ,hskβ,nymβ,creβ,ASKβ,S,cβ= 0 ,count=0)。

情况 3若upk∉ {upkα,upkβ},则S根据upk在L中找到对应的表目,并利用usk,hsk以诚实方式产生知识签名π1。剩余操作同情况1和情况2。

-Corrupt(nym)S根据nym在L中找到对应的表目(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count)。若upk∈ {upkα,upkβ},则S模拟失败。否则,若c=0,S返回usk,hsk,并且将该表目更新为(upk,usk,hpk,hsk,nym,cre,ASK,S,c= 1,count)。

-Auth(Cha,nym)S根据nym在L中找到表目(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count)。同时,S从密文Cha中分离出访问结构(M,ρ),并且检查是否满足S|=(M,ρ)且count<n。若是,则S利用ASK从密文Cha中恢复出秘密元素KSP。接下来的模拟过程分以下3种情况。

情况1若nym=nymα,则S选取设置从底层知识证明中提取出知识并且设置S选 取E3∈RG0,Jk∈RGT, 选 取sν∈RZp,并且采用知识签名π3验证过程中的方式计算返回

情况2若nym=nymβ,则S采用类似的方式模拟产生σ。2种情况的区别是,S设置

情况3若nym∉ {nymα,nymβ},则S采用诚实方式产生并返回σ。

无论属于哪种情况,S都需要在认证过程结束后将表目(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count)更新为(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count+1)。

最终,A输出对b的猜测结果则S判定则S判定否则,S输出 failure,即求解给定的DBDH问题实例失败。

模式 2S以DBDHI问题实例作为输入,其目标是对以下两种情况做出分辨:1)在初始阶段,S选取 α ∈R{1,…,m},且m的含义同模式1。S设置并且构造集合然后,S采用TSetup算法中的方式产生TPK中的剩余元素。S执行ASetup算法,产生MSK,APK。S初始化列表L, LK, L2, L3,并且向A发送TPK,MSK,APK。在询问1阶段,S采用以下方式对各类预言机进行模拟。

-HK(m),H2(m),H3(m)模拟方式同模式1。

-USetup()对该询问的模拟分以下2种情况。

情况 1若当前为第α次询问,则S选取S选取并且返回同 时 ,S执 行显然,hskα为未知元素。

情况 2若当前并非第α次询问,S选取并且返回upk,hpk。同时,S执行hsk, *,*,*,*,*,*)。

-AttGen(S,upk)对该询问的模拟分以下 2种情况。

情况 1若upk=upkα,则S采用模拟方式产生知识签名π1。在AttGen协议结束后,S获得由A产生的nymα,creα,ASKα。S将用户upkα在L中的对应表目更新为ASKα,S,cα= 0 ,count=0)。

情况 2若upk≠upkα,则S根据upk在L中找到对应的表目,并利用usk,hsk以诚实方式产生知识签名π1。剩余操作同情况1。

-Corrupt(nym)S根据upk在L中找到对应的表目(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count),若upk=upkα,则S模拟失败。否则,若c=0,S返回usk,hsk,并且将该表目更新为(upk,usk,hpk,hsk,nym,cre,ASK,S,c= 1,count)。

-Auth(Cha,nym).S根据nym在L中找到表目(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count)。同时,S从密文Cha中分离出访问结构(M,ρ),并且检查是否满足S|=(M,ρ)且count<n。若是,则S利用ASK从密文Cha中恢复出秘密元素KSP。此后的模拟过程分以下2种情况。

情况 1若则S在集合中选取一个未曾使用的元素,并将其作为Jk。S选取选取B,K∈RGT,并且采用与模式1下Auth询问情况1中的方式模拟产生元素E1,E2和知识签名π3。最后,S向A发送

情况2若nym≠nymα,则S采用诚实方式产生知识签名π3,并且向A返回

无论属于哪种情况,S都需要在认证过程结束后将表目(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count)更新为(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count+1)。

可靠性在初始化阶段,S执行TSetup算法,产生TPK。同时,S执行ASetup算法,产生MSK,APK。S初始化列表 L , LK, L2, L3,并且向A发送TPK,APK。在询问阶段,S为A提供以下类型的预言服务。

-HK(m),H2(m),H3(m)模拟方式同隐私性实验。

-USetup( )模拟方式同隐私性实验模式 1下的情况3。

-AttGen(S,upk)S以诚实AA的身份与A执行AttGen协议,并且返回nym,cre,ASK。

-Corrupt(nym)S根据nym在L中找到对应表目(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count)。

若c=0,则返回usk,hsk,并将该表目更新为(upk,usk,hpk,hsk,nym,cre,ASK,S,c= 1,count)。

-Auth(Cha,nym)模拟方式同隐私性实验模式1下的情况3。

在该阶段的末尾,A输出nym*, (M*, ρ*)。S检查在L中是否存在与nym*对应的表目。若是,则以诚实SP的身份与A执行n+1次Auth协议,并且根据 (M*, ρ*)产生底层CP-ABE方案的挑战密文。最终,S获得A在这些协议中的输出 σ1, σ2, … ,σn+1。假设这n+1次执行过程都获得成功,显然S可以利用重绕技术分别从知识签名 π3,1,π3,2, … , π3,n+1中提取出秘密元素且它们都位于区间[1,n]。根据底层区间证明协议的有效性,显然存在即A在第i次和第j次Auth协议中使用了相同的令牌由于S充当诚实SP,因此这两次协议不可能都获得成功,即得到矛盾假设。

抗合谋攻击S以底层CP-ABE方案的公钥为输入,其目标是借助与A的交互过程攻破该方案的选择性CPA安全性。在初始化阶段,A首先向S提供访问结构 (M*, ρ*)。S设置g=,并且采用TSetup和ASetup算法中的方式产生TPK和APK中的剩余参数。最后,S初始化列表 L, Lnym, LK, L2, L3,并且向A发送TPK,APK。在询问1阶段,S为A提供以下类型的预言服务。

-HK(m),H2(m),H3(m)模拟方式同隐私性实验。

-USetup()模拟方式同隐私性实验模式 1下的情况3。

-AttGen(S,upk)S以AA的身份与A执行AttGen协议。S根据upk在L中找到对应的表目(upk,usk,hpk,hsk, *,*,*,*,*,*)。S检查是否满足S|≠(M*, ρ*),若是,则借助底层CP-ABE方案的密钥产生预言机为该用户产生ASK,并且自行为该用户产生nym,cre=(A,x)。S向A发送nym,cre,ASK,并且将表目(upk,usk,hpk,hsk,*,*,*,*,*,*)更新为(upk,usk,hpk,hsk,nym,cre,ASK,S,c=0,count=0)。同时,S设置 Lnym← Lnym∪(nym)。

-AUpdate(S,j,w)S检查是否满足S|≠(M*, ρ*)且将属性j更新为w后,更新后的属性集合S′ 是否满足S′ |≠(M*, ρ*)。若是,则S借助底层CP-ABE方案的属性更新预言机为A产生UKj→w,并且对APK中的元素PKj以及L中其他用户属性私钥中的元素Dj,D′j进行更新。

-Corrupt(nym)模拟方式同可靠性实验。

-Auth(Cha,nym)模拟方式同隐私性实验模式1下的情况3。

在该阶段的末尾,A输出KSP0,KSP1,NYM。S检查是否满足NYM⊆Lnym,若是,则以SP的身份与A执行Auth协议。在Auth协议执行过程中,S向底层CP-ABE方案的加密预言机发送KSP0,KSP1,RL,并且向A返回由该预言机产生的关于元素的密文在询问2阶段,允许A继续提出上述类型的询问。

但是,不允许A利用AUpdate询问获得能满足访问结构 (M*, ρ*)的属性私钥。同时,不允许A提出AttGen询问,使得对于所产生的nym,满足nym∉NYM。最终,A输出猜测结果则表明S已经借助A攻破了底层CP-ABE方案的选择性CPA安全性。

可追踪性当前实验的执行过程分以下 2种模式。

模式 1S以底层CL-SDH签名方案[6]的公钥作为输入,其目标是借助与A的交互过程攻破该方案的不可伪造性。S设置并且采用TSetup,ASetup算法中的方式产生TPK,MSK,APK中的剩余参数。S初始化列表 L , Lauth,LK, L2, L3,并且向A发送TPK,APK。在询问阶段,允许A提出以下类型的预言询问。

-HK(m),H2(m),H3(m)模拟方式同隐私性实验。

-USetup()对当前询问的模拟分以下2种情况。在情况 1中,S为用户选取S执行L←L∪(upk,usk,hpk,hsk, *,*,*,*,c=0,*),并且返回upk,hpk。在情况 2中,S接收由A产生的upk=F,hpk=Y,π1。S采用重绕技术从π1中提取出usk,hsk, 并 且 执 行 L ← L ∪(upk,usk,hpk,hsk, *,*,*,*,c=1, * )。

-AttGen(S,upk)S根据upk在L中找到对应的表目(upk,usk,hpk,hsk, *,*,*,*,c, * )。S通过调用预言机H2(upk)产生nym。S自行产生ASK,向底层CL-SDH签名预言机提出询问(upk,hpk),并且获得后者返回的cert=(A,x)。S返回nym,cre,ASK,并将该表目更新为(upk,usk,hpk,hsk,nym,cre,ASK,S,c,count=0)。

-Corrupt(nym)模拟方式同可靠性实验。此外,S执行RL←RL∪ (usk,nym)。

-Auth(Cha,nym)模拟方式同隐私性实验模式 1下的情况 3。此外,S额外设置LAuth←LAuth∪(nym,σ)。

-Semi-Auth(Cha,nym)S以诚实TPM的身份与A(充当Host)联合产生User在Auth协议中的输出。在该过程中,S接收到A发送的数据,并且返回同时,S执行

最终,A输出nym*, (M*, ρ*)。S以SP的身份与A执行Auth协议,并且利用 (M*, ρ*)产生底层CP-ABE方案挑战密文Cha*。最终,S获得A的输出σ*。若σ*能通过验证,则S检查是否满足若是,则S利用重绕技术从σ*中提取出秘密知识 (A*,x*),从而攻破了底层CL-SDH方案的不可伪造性。

模式 2S以q-SDH问题实例(P,Q,Qx,…,作为输入,其目标是输出数对S设置设置S采用TSetup算法中的方式产生TPK中的剩余元素。S初始化列表L, Lauth,LK, L2, L3,向A发送TPK,并且获得后者产生的APK。此外,S事先选取 α ∈R{1,…,m},其中,m的含义同隐私性实验。在询问阶段,允许A提出以下类型的预言询问。

-HK(m),H2(m),H3(m)模拟方式同隐私性实验。

-USetup()对当前询问的模拟分以下2种情况。情况 1:若当前是第α次询问,S设置upkα=Qx,uskα=x。其中,uskα为未知元素。S选取设置S返回upkα,hpkα,并且设置 L ← L ∪ (upkα,uskα,hpkα,hskα,*,*,*,*,c=0,*)。情况2:若当前并非第α次询问,S采用诚实方式产生upk,usk,hpk,hsk,返回upk,hpk,并且设置L ← L ∪ (upk,usk,hpk,hsk, *,*,*,*,c=0, *)。

-AttGen(S,upk)对当前询问的模拟分以下2种情况。情况 1:若upk=upkα,则S采用模拟方式产生π1,并获得A产生的nymα,certα,ASKα。S将表目(upkα,uskα,hpkα,hskα, * ,*,*,*,c=0, * )更新为(upkα,uskα,hpkα,hskα,nymα,certα,ASKα,S,c= 0 ,count=0)。情况2:若upk≠upkα,则S采用诚实方式产生π1,并且获得A产生的nym,cert,ASK。S将表目(upk,usk,hpk,hsk, *,*,*,*,c=0 , *)更新为(upk,usk,hpk,hsk,nym,cert,ASK,S,c= 0 ,count=0)。

-Corrupt(nym) 若nym=nymα,则S模拟失败。否则,模拟方式同当前实验的模式1。

-Auth(Cha,nym)若nym=nymα,则S在不掌握uskα的条件下模拟产生σ。若nym≠nymα,则S采用诚实方式产生σ。剩余模拟方式同隐私性实验模式1下的情况3。无论属于哪种情况,S都额外设置LAuth← LAuth∪(nym,σ)。

-Semi-Auth(Cha,nym)S采用模式1下Semi-Auth询问中的方式进行模拟。区别在于,当nym=nymα时,S采用模拟方式产生R2t,π3。否则,S采用诚实方式产生R2t,π3。

最终,A输出nym*, (M*, ρ*)。S以SP的身份与A执行Auth协议,并且利用 (M*, ρ*)产生底层CP-ABE方案的挑战密文Cha*。最终,S获得A的输出σ*。若σ*能通过验证,则S检查是否满足(nym*, σ*)∈ / L。若是,则S利用重绕技术从σ*中

Auth提取出秘密知识f*。S检查是否满足f*∈L。若否,则S模拟失败。在的概率下,f*恰好等于x。此时,S选取e∈RZp,输出从而求解了给定的q-SDH问题实例。

证毕。

需要指出的是,本文第6节改进方案与第4节方案的唯一区别是,利用服务器外包解密技术对底层CP-ABE方案进行改进。为了证明改进方案的安全性,仅需证明所提出的外包解密版本不会降低原有CP-ABE方案的安全性即可。

结论1第4节方案中采用的底层CP-ABE方案满足选择性CPA安全性[19]。

定理3在随机预言模型下,可以证明第6节的底层CP-ABE方案外包解密版本满足选择性RCCA安全性和可验证性。

证明选择性RCCA安全性。假设模拟器S以底层CP-ABE方案公钥为输入,其目标是通过与敌手A执行以下的选择性RCCA安全性实验攻破该方案的选择性CPA安全性。在当前实验中,S需要维护列表 Lc, Ld,L4,L5, L6,从而实现对预言机Create( ·),Corrupt(·),Decrypt(·,·),H4(·,·),H5( ·),H6( ·)的模拟。

在初始化阶段,A向S提供作为挑战的访问结构 (M*, ρ*)。在系统建立阶段,S向A提供S初始化列表L4, L5, L6,并且初始化计数器count′←0。

在询问1阶段,S为A提供以下类型的预言服务。

-H4(R,m)若(R,m,s)∈L4,则S返回s。否则,并且返回s。同时,S执行

-H5(R)若则S返回。否则,S选取并且返回同时,S执行 L5←

-H6若则返回tag。否则,S选取并且返回tag。同时,S执行

-Create(S)S设置count′ ←count′+1,并且分以下两种情况进行模拟。

情况 1若S|=(M*,ρ*),则S选取设置对于每个属性j∈S,S选取rj∈RZp,设置

情况2若为输入调用底层CP-ABE方案的密钥产生预言机,并且获得后者返回的设置

最后,无论属于哪种情况,S均设置Lc← Lc∪(count′,S,ASK,TK),并且返回TK。

-Corrupt(i)S根据序号i在列表Lc中找到对应表目(i,S,ASK,TK) ,并且检查是否满足S|= (M*, ρ*)。若是,则S返回⊥。否则,S返回ASK,并且设置 Ld← Ld∪(S)。

-Decrypt(i,Cha) .S根据序号i在列表Lc中找到对应的表目(i,S,ASK,TK)。然后,S从Cha中分离出访问结构(M,ρ)。若S|≠(M,ρ),S返回⊥。否则,S分以下两种情况进行模拟。

情况 1满足 (M, ρ) ≠ (M*, ρ*)。S将ASK分离为ASK=(z,TK)的形式,并执行以下步骤。

1) S利用Cha和TK调用Transformout算法,并得到部分的解密结果Cha′ = (T0,T1,T2)。

3) S根据R在列表L4中找到对应的表目(R,m,s)。根据R在列表L5中找到对应的表目同时,根据在列表L6中找到对应的表目若S无法在L4或L5或L6中找到对应表目,则S返回⊥。若所找到的匹配表目数量超过1个,则S模拟失败。

情况 2满足 (M, ρ) = (M*, ρ*)。S将ASK分离为的形式,并执行以下步骤。

1) S利用Cha和TK调用Transformout算法,并得到部分的解密结果Cha′ = (T0,T1,T2)。此时,满足同时,

2) S计算

3) S在列表L4中寻找是否存在元组若查找失败,则S返回⊥。若匹配的元组数量超过1个,则S模拟失败。假设(R,m,s)为唯一匹配元组。然后,S根据R在列表L5中寻找匹配的元组。若查找失败,则返回⊥。若匹配的元组数量超过1个,则S模拟失败。假设为唯一匹配元组。类似地,S根据在列表L6中寻找匹配的元组。假设为唯一匹配的元组。

回解密结果m,否则,S返回⊥。

可验证性S采用TSetup算法和ASetup算法中的方式产生底层CP-ABE方案的公钥APK和MSK。在询问1阶段,S利用MSK实现对预言机Create( ·),Corrupt( · ),Decrypt(·,·)的模拟。在挑战阶段,A输出此时,S返回Cha*=在询问2阶段,允许A继续提出上述类型的询问。最终,A输出假设S此前已经产生关于S*的ASKS*和TKS*。否则,S自行执行Create(S*)询问,从而产生这些元素。现在,S根据此前产生的ASKS*执行Decryptout算法,从cha*′中恢复满足则表明A成功地进行了欺诈,即cha*′是关于另一个明文′的部分解密结果。S利用TKS*执行Transformout算法,得到关于Cha*的正确的部分解密结果进而恢复得到满足。于是,从而违背了散列预言机H6( ·)的抗碰撞性。证毕。

8 性能比较与分析

本文提供了对第 6节方案与相关方案[3-4,8,10-13]的性能比较。在表 2,对本文方案与这些方案进行了主要性质的比较。本文方案是基于DAA技术构造的,因此可以部署于可信平台之上,而其他方案都是在标准PC平台上设计的。包括本文方案在内的多数方案都支持可表述性的认证策略(expressive policy)。相反,文献[3,12]方案仅支持受限制的门限认证策略(threshold policy)。文献[11]方案是唯一的不满足属性匿名性的方案,因为该方案要求用户在认证阶段向验证者揭示所使用的属性子集,显然会有损用户的隐私。本文方案和文献[13]方案均采用区间证明技术实现了对用户认证次数的限制,因此较其他方案更适合于按需付费的云服务模式。本文方案满足注册过程的可验证性,使用户可以对所得成员证书和属性私钥进行有效性验证。相反,其他方案[3-4,8,10-13]并未考虑此项验证,即用户必须完全信任AA。此外,本文方案继承了底层DAA方案的验证者本地废除机制和底层 CP-ABE方案的属性更新机制,从而更好地满足了应用系统的实际需求。

在表3中,提供了本文方案与相关方案在用户注册(即属性私钥产生)和认证子协议中的通信性能比较。在比较过程中,符号|Si|表示用户属性集合的规模。|des(Γ)|表示由SP(或验证者)定义的属性树(或访问结构)的规模。d与k表示文献[3]中默认属性集合的规模和系统门限值。n′表示文献[3,12]方案的公开属性集合的规模。l与n分别表示文献[4,8,13]方案和本文方案的访问结构中矩阵M的行数和列数,且l同样等于文献[10]方案属性树中的叶结点数量[21]。N表示文献[12]方案中分布式AA的数量。文献[12]并未提供有关底层两方密钥协商子协议的完整描述,因此用|2PC|U与|2PC|AA分别表示User与AA在该子协议中的通信开销。|RL|表示本文方案中被废除的用户数量。对于本文方案,符号“*”标记了User在外包解密过程中与Server间的额外通信开销。根据文献[24]结论,在对称的对环境下,域Zp和群G0,GT上的元素长度分别为160 bit,160 bit,960 bit。需要指出的是,文献[3-4,8,10-11]方案的注册阶段不要求User发送任何数据。原因在于,这些方案假设AA是完全可信的,User直接接收由前者发送的属性私钥。

表2 相关方案的重要特性总结

表3 相关方案的通信开销比较

在表4中,提供了本文方案与相关方案在用户注册(即属性私钥产生)和认证子协议中的运算性能比较。对于文献[3, 10]方案,本文采用了 Goyal等[25]的估算方法,即用|Sr|表示用户在基于属性树的认证过程中使用的叶结点集合规模,使对运算次数达到最小。|Li|是文献[11]方案中的特殊参数,它表示根据Si构造的属性树的虚拟叶结点集合规模。此外,(2PC)U与(2PC)AA分别表示User与AA在文献[12]方案的底层两方密钥协商子协议中的运算开销。在比较过程中,本文仅统计群G0,GT上的指数运算和对运算,且认为单指数运算和多指数运算的开销相当。对于本文方案,符号“+”与“++”分别标记了TPM和Host的运算开销。根据文献[26-27]结论,在对称的对环境下,以群G0上的指数运算为基准(记为E),群GT上的指数运算开销约为4E,且对运算的开销约为3E。最终,本文将所有方案中各角色的运算开销都换算为群G0上的指数运算,从而得到较为直观的比较结果。显然,本文方案在用户端的认证过程运算效率方面是最优的,而且为常量。取得这个优势的原因是:1)User对挑战密文Cha进行了外包;2) 在π3的产生过程中,TPM与Host的绝大多数运算都采用预计算方式完成;3)User通过π3向SP证明“自己掌握合法的成员证书”且“认证令牌Jk的产生过程使用了在公开集合Φ中选取的新鲜下标k”。为了证明上述断言,本文方案采用了无需用户端执行对运算的知识证明技术。

与已有同类方案[3-4,8,10-13]相比,本文方案额外支持属性更新和用户废除。在属性更新协议中,User的运算可以在离线阶段完成,且AA的在线运算开销为(4|RL| +nnon+ 1 3)E,其中,nnon表示当某用户的特定属性发生变化后,其他拥有该属性但属性未发生更新的用户数量。在用户废除算法中,User无需执行任何运算,且AA的运算开销为9E。应当承认的是,本文方案在增加理想性质同时也付出了额外的运算和通信开销。具体地,在注册阶段,User与AA的通信和运算开销较大,这是为实现可验证的注册性质而付出的必要代价。在认证阶段,SP端的通信和运算开销均与|RL|有关,这是为实现用户废除性质而付出的必要代价。此外,为了在最大程度上降低用户端在认证阶段的运算开销,要求User将挑战密文Cha和转换钥TK转发给Server,从而产生了一笔额外的通信开销。因此,在AA未必完全可信、用户属性集合规模较大且要求支持成员废除和属性更新的现实应用环境下,本文方案具有明显优势。

9 结束语

本文基于DAA、支持属性更新的CP-ABE和基于成员身份的区间证明等技术提出新的k-TABA方案。该方案可部署于可信平台,并且采用预计算技术和服务器外包解密技术尽可能地优化了用户端的运算性能。与 Yuen等的k-TABA方案和相关属性认证方案相比,本文方案不但支持一般性的访问控制策略,而且较好地解决了现实应用中的用户私钥废除和用户属性值更新问题。相对于已有的同类方案,本文方案的显著特点是使得用户在认证协议中的运算耗费摆脱了对底层属性集合和属性树(或访问结构)规模的依赖。

表4 相关方案的运算开销比较

附录 定理1的证明

定理1第4节方案满足正确性。

证明为了证明本文方案的正确性,需要分别证明AttGen,Auth,AUpdate协议均满足正确性。

AttGen协议的正确性π1是标准的“关于掌握离散对数”的知识签名,它使AA可以确信TPM提供的upk,hpk满足正确性,即满足若是采用正确方式产生的,则必然满足

显然,式(1)等价于以下的式(2)、式(3)同时成立,即

同时,若ASKi中的元素D,D′是采用正确方式产生的,则分别满足

显然,式(4)和式(5)分别等价于以下的式(6)和式(7),即

π2是标准的“关于掌握离散对数”的知识签名,它与额外的验证等式可以确保满足正确性。

Auth协议的正确性 π3是标准的“关于掌握离散对数”的知识签名,它使SP可以确信User提供的元素Jk,K,B满足正确性,即满足同时,π3表明以下等式成立,即

显然,根据式(8)和式(11)式,可以得出

同时,将式(12)带入式(9),可以得出

最后,根据第5节中π3的产生和验证过程可知,对于诚实用户User,π3能通过SP验证的条件是他能从挑战密文Cha中恢复出元素KSP,并利用该元素产生π3的挑战串c。对于密文显然满足

AUpdate协议的正确性 该协议的正确性可以直接根据底层CP-ABE方案属性更新算法的正确性得出。

证毕

猜你喜欢
私钥解密运算
解密“热胀冷缩”
重视运算与推理,解决数列求和题
比特币的安全性到底有多高
基于改进ECC 算法的网络信息私钥变换优化方法
解密“一包三改”
少先队活动(2020年9期)2020-12-17 06:17:31
有趣的运算
炫词解密
一种基于虚拟私钥的OpenSSL与CSP交互方案
“整式的乘法与因式分解”知识归纳
拨云去“误”学乘除运算