密钥协商协议是密码学的基本组件之一,利用密钥协商协议,可以在不安全的信道上建立安全信道.所谓认证密钥协商协议,就是通信双方确信对方的真实身份,同时,协议结束后双方确信两者共享了一个只有他们知道的会话密钥.
1984年,Shamir[1]首次提出了基于身份的加密(identity based encryption,简称IBE)方案的概念,该方案的特点是用户的公钥是用户的身份信息.2005年,Sahai和Waters[2]提出了基于模糊身份的加密(fuzzy IBE)方案,同时,他们将模糊IBE的概念进行推广,提出了基于属性加密(attribute-based encryption,简称ABE)的概念.ABE方案将用户属性信息或一个访问控制策略作为用户的身份,同时,密文对应一个访问控制策略或一组属性信息,当且仅当属性信息满足相应的访问控制策略时才能正确解密.利用ABE方案,可以实现对密文数据的细粒度的访问控制,因此,ABE方案可用于访问控制、云计算等互联网应用中.基于ABE的思想,Wang等人[3]于2009年提出了基于属性的认证密钥协商协议的概念,其目标是使通信双方在公开信道上,无需明确对方身份的情况下,如果两个参与者的属性均满足对方选择的访问控制策略,那么通信双方便能够实现对实体的认证,同时达成一个共同的会话密钥.ABAKA协议可被用于涉及身份隐私的保密通信环境中,用户希望向对方隐藏自己的身份,同时,对方又需要验证该用户是一个合法用户.通过使用ABAKA协议,通信双方能够产生一个安全信道,同时,在保证不泄露身份信息的情况下完成双方的认证.
随着ABE方案研究的不断深入,已提出了多个ABAKA协议,其中,文献[3, 4, 5]分别提出了BR模型下可证明安全的ABAKE方案.这些方案采用的设计方法是:首先,基于密文策略的ABE方案构造出密文策略的基于属性的密钥封装方案,利用密钥封装方案传送协议双方选取的秘密信息,若两个参与者的属性均满足对方选择的访问控制策略,则正确解密出秘密信息;最后,利用密钥抽取算法计算共享会话密钥.目前,ABAKE协议的安全模型有BR模型、CK模型、ABeCK模型、CK+模型.在这些安全模型中,攻击者的攻击能力依次增强.Choudary等人[6]将两方ABAKA协议扩展到群ABAKA协议,给出了构造群ABAKA协议的一般方法,但该方法需要用到一次性数字签名,效率较低.任勇军等人[7]将基于属性的密钥封装方案与密钥抽取算法结合设计了在CK模型下可证明安全的ABAKA协议.Kazuki Yoneyama[8]基于Waters方案[9]提出了在ABeCK模型下可证明安全的ABAKE方案.魏江宏等人[10]将该协议从单属性机构扩展到多属性机构.李强等人[11]提出了在CK+模型下可证明安全的ABAKA协议.
本文首先在GCDH假设的基础上提出GCPBDHE假设,然后提出一种效率更高的ABAKE方案,在GCPBDHE和CDH假设同时成立的条件下,证明该方案在ABeCK模型下是安全的.与文献[8]中提出的ABeCK模型下安全的ABAKE协议相比,降低了通信开销,并且在一定参数设置下也降低了计算复杂度.
1. 预备知识 1.1 双线性映射定义1. 设G,GT都是阶为素数p的乘法循环群,g为G的生成元.双线性对e:GxG→GT为具有如下性质的映射:
(1) 双线性:对于任意的u,v$ \in $G,$a,b\in Z_{p}^{*}$,满足:e(ua,vb)=e(u,v)ab;
(2) 非退化性:e(g,g)≠1,1是GT的单位元;
(3) 可计算性:对任意的u,v$ \in $G,存在有效的多项式算法计算e(u,v).
1.2 CDH 假设定义2. 设G是阶为素数p的乘法循环群,g是G的生成元,随机选取$b,c\in Z_{p}^{*}$,给定二元组(gb,gc),若不存在多项式时间算法以不可忽略的概率计算出gbc,则称CDH假设成立.
1.3 DBDH 随机预言机定义3. 设G和GT都是阶为素数p的乘法循环群,g是G的生成元,DBDH随机预言机的输入是(ga,gb,职gc,T)$ \in $G3xGT,若T=e(g,g)abc则输出1;否则输出0.
1.4 访问结构定义4. 设P={P1,P2,…,Pn}是参与方构成的集合,一个访问结构AS是2P的一个非空集合.称AS是单调访问结构,则对于2P的任意两个集合B,C,若B$ \in $AS,且B⊆C,则C$ \in $AS.若集合在访问结构AS中,则称为授权集合,否则称为非授权集合.
1.5 线性秘密共享方案定义5. 令参与方集合为P={P1,P2,…,Pn},(M,r)表示访问结构AS,其中,M是lxn的矩阵,r是集合{1,2,…,l}到P的映射,即,矩阵M中的每一行表示一个参与方.线性秘密共享方案(linear secret sharing schemes,简称LSSS)包含两个算法:
· 秘密分享算法:设s是秘密值.随机选取r2,r3,…,rn$ \in $Zp,令向量v=(s,r2,r3,…,rn)T,将li=Mi×v作为参与方r(i)的秘密分享值,其中,Mi表示矩阵的第i行;
· 秘密重构算法:设参与方的集合为S.
若S为授权集合,即S$ \in $AS,令I={i:r(i)$ \in $S},则存在一个多项式时间算法,计算出系数{wi}i$ \in $I,使得$\sum\limits_{i\in I}{{{w}_{i}}{{M}_{i}}}=(1,0,...,0)$,即,恢复出秘密值$\sum\limits_{i\in I}{{{w}_{i}}{{\lambda }_{i}}}=s;$
对于非授权集合S,则存在一个多项式时间算法,计算出n维向量$w={{({{w}_{1}},{{w}_{2}},...,{{w}_{n}})}^{T}}\in Z_{p}^{n},$使得w1=-1;且对于i$ \in $I,有Mi×w=0.
2 GPBDHE 假设基于DPBDHE假设[9]和GBDH假设[12],本节给出了GPBDHE假设,详见定义6.
定义6. 设G和GT都是阶为素数p的乘法循环群,g是G的生成元,随机选取$a,s,{{b}_{1}},{{b}_{2}},...,{{b}_{q}}\in Z_{p}^{*}$,给定:
$Y=\left( \begin{align}
& g,{{g}^{s}},{{g}^{a}},...,{{g}^{({{a}^{q}})}},{{g}^{({{a}^{q+2}})}},...,{{g}^{({{a}^{2q}})}},\forall j\in \{1,2,...,q\} \\
& {{g}^{s\cdot {{b}_{j}}}},{{g}^{a/{{b}_{j}}}},...,{{g}^{({{a}^{q}}/{{b}_{j}})}},{{g}^{({{a}^{q+2}}/{{b}_{j}})}},...,{{g}^{({{a}^{2q}}/{{b}_{j}})}},\forall j,k\in \{1,2,...,q,k\ne j\} \\
& {{g}^{(a\cdot s\cdot {{b}_{k}}/{{b}_{j}})}},{{g}^{({{a}^{2}}\cdot s\cdot {{b}_{k}}/{{b}_{j}})}},...,{{g}^{({{a}^{q}}\cdot s\cdot {{b}_{k}}/{{b}_{j}})}}) \\
\end{align} \right),$
定义6说明了GPBDHE问题是一个可判定问题,但属于不可解问题.而DPBDHE假设说明了DPBDHE问题是不可判定问题,一个不可判定问题一定是不可解问题,因此,DPBDHE困难假设比GPBDHE困难假设要强.
3 ABeCK 模型介绍本节介绍适用于ABAKE协议安全性分析的扩展eCK模型,即ABeCK模型[8].
在ABeCK模型中,每个协议参与者P都具有属性集合SP,并且能够并行执行多个会话.
若由A发起的一个与B之间的会话产生了消息m1,…,mn,则该会话被A标示为sid*=(Init,SA,SB,m1,…,mn),被B标示为sid*=(Resp,SB,SA,m1,…,mn).若协议双方生成了相同的会话密钥K,则称该会话是完成的.一个完成会话(Init,SA,SB,m1,…,mn)的匹配会话是(Resp,SB,SA,m1,…,mn),反之亦然.
在ABeCK模型中,攻击者A可以自适应地进行以下询问:
· Send(message): A发送消息给某个协议参与方,并根据协议规范得到回答;
· SessionReveal(sid*):若sid*是一个已完成的会话,A得到sid*的会话密钥,否则,得到一个错误标识;
· EphemeralReveal(sid*): A得到sid*的临时私钥;
· StaticReveal(SP): A得到属性集合SP对应的长期私钥SKP;
· MasterReveal: A得到系统主私钥MSK;
· Establish(P,SP): A以P的身份申请到属性集合SP的私钥.若P是由攻击者A调用Establish(P,SP)伪造的,则称用户P是不诚实用户.
为了定义ABAKE协议的安全性,首先给出会话新鲜性的定义.
定义7. 设一个已完成的会话sid*=(Init,SA,SB,m1,…,mn)或(Resp,SB,SA,m1,…,mn),若存在匹配会话,令匹配会话是$\overline{si{{d}^{*}}}$.用户A,B制定的访问控制策略是ASA,ASB.若以下所有条件均不成立,则称sid*是新鲜会话:
· 条件1:A查询SessionReveal(sid*),或者在$\overline{si{{d}^{*}}}$存在的条件下,查询了$SessionReveal(\overline{si{{d}^{*}}})$;
· 条件2:$\overline{si{{d}^{*}}}$存在,A同时查询了StaticReveal(SP)(SP$ \in $ASB)和EphemeralReveal(sid*);或者A同时查询了StaticReveal(SP)(SP$ \in $ASA)和查询了$\overline{si{{d}^{*}}}$;
· 条件3:$\overline{si{{d}^{*}}}$不存在,A同时查询了StaticReveal(SP)(SP$ \in $ASB)和EphemeralReveal(sid*);或者A查询了
StaticReveal(SP),其中,SP$ \in $ASA.
注: A查询MasterReveal,等价于查询StaticReveal(SP),其中,SP是任意用户P的属性集合.
A经过一系列查询后,选择一个新鲜会话进行Test查询,Test查询定义如下:
Test(sid*):sid*是一个新鲜会话.模拟者接收到A申请的Test(sid*)后,随机选取1比特b$ \in ${0,1},若b=0,返回sid*对应的会话密钥;否则,返回一个随机密钥.
A接收到Test查询结果后,输出b的猜测结果b'.A攻击成功的概率Pr[A攻击成功]=Pr[b'=b].
下面给出ABeCK安全性的定义.
定义8. 若一个ABAKE协议满足以下条件:
(1) 若两个诚实用户A和B完成了匹配会话,并且属性集合SA$ \in $ASB,属性集合SB$ \in $ASA,协议双方最终协商出相同的会话密钥;
(2) 不存在多项式时间敌手A,使得|Pr[A攻击成功]-1/2|>ε,
则称该协议在ABeCK模型下是安全的.另外,若在sid*中A声明了访问结构ASA(若$\overline{si{{d}^{*}}}$存在,A也声明了ASB),则称该协议在ABeCK模型下是选择安全的.
4 ABeCK 安全的ABAKE协议 4.1 协议描述(1) 系统建立
选取阶为素数p的群G和GT以及G的生成元g,随机选取U个元素h1,h2,…,hU$ \in $G,其中,U是系统用户属性集合的个数,第i(1≤i≤U)个属性对应元素hi.随机选取α,a$ \in $Zp,安全杂凑函数H1:{0,1}→Zp,H:{0,1}→{0,1}k. 令gT=e(g,g),设置系统公钥$MPK=(g,{{g}_{T}},g_{T}^{\alpha },{{g}^{a}},{{h}_{1}},...,{{h}_{U}})$,系统主私钥MSK=gα.
(2) 私钥生成
令用户P的属性集合为SP,私钥产生中心随机选取tP$ \in $Zp,计算:
${{K}_{P}}={{g}^{\alpha }}{{g}^{a\cdot {{t}_{P}}}},{{L}_{P}}={{g}^{{{t}_{P}}}},\{\forall x\in {{S}_{P}},{{K}_{P,x}}=h_{x}^{{{t}_{P}}}\}.$
用户P对应的私钥SKP=(KP,LP,{KP,x,∀x$ \in $SP}).
(3) 密钥协商
假设用户A是协议的发起方,B是接收方.A的属性集是SA,对应私钥SKA=(KA,LA,{KA,x,∀x$ \in $SA});B的属性集是SB,对应私钥SKB=(KB,LB,{KB,x,∀x$ \in $SB}).A与B进行密钥协商的主要过程是:首先,A选取访问结构ASA,生成消息EPKA,将EPKA发送给B;然后,B选取访问结构ASB,生成消息EPKB,将EPKB发送给A;最后,若SA满足访问结构ASB,SB满足访问结构ASA,则A和B可计算出共享密钥K.具体过程如下:
Step 1. A选取访问结构ASA,ASA对应的LSSS矩阵记为MA,MA的规模是lAxnA,MA的行向量与属性之间的一一对应关系记为ρA.
A随机选取$e{{r}_{0}},e{{r}_{1}},...,e{{r}_{{{l}_{A}}}},e{{x}_{2}},e{{x}_{3}},...,e{{x}_{{{n}_{A}}}}\in {{Z}_{p}}$,计算:
$\begin{align}
& {{s}_{A}}={{H}_{1}}({{K}_{A}},{{L}_{A}},\{{{K}_{A,j}},\forall j\in {{S}_{A}}\},e{{r}_{0}}), \\
& {{r}_{i}}={{H}_{1}}({{K}_{A}},{{L}_{A}},\{{{K}_{A,j}},\forall j\in {{S}_{A}}\},e{{r}_{i}}),1\le i\le {{l}_{A}}, \\
& {{x}_{k}}={{H}_{1}}({{K}_{A}},{{L}_{A}},\{{{K}_{A,j}},\forall j\in {{S}_{A}}\},e{{x}_{k}}),\,2\le k\le {{n}_{A}}. \\
\end{align}$
令向量$v=({{s}_{A}},{{x}_{2}},{{x}_{3}},...,{{x}_{{{n}_{A}}}})\in {{({{Z}_{p}})}^{{{n}_{A}}}},$计算li=v×MA(i),其中,MA(i)是MA的第i行,i=1,…,lA.
令$e{{r}_{0}},e{{r}_{1}},...,e{{r}_{{{l}_{A}}}},e{{x}_{2}},e{{x}_{3}},...,e{{x}_{{{n}_{A}}}}$是A的临时私钥,A计算:
$X={{g}^{{{s}_{A}}}},({{U}_{i}}={{g}^{a{{\lambda }_{i}}}}h_{{{\rho }_{A}}(i)}^{-{{r}_{i}}},{{D}_{i}}={{g}^{{{r}_{i}}}}),$1≤i≤lA(令集合{U,D}={(Ui,Di),1≤i≤lA}).
A发送消息EPKA=(X,{U,D},MA,ρA)给B.
Step 2. B接收到A发送的消息EPKA后,判断自己的属性集合SB是否满足访问结构(MA,ρA):若不满足,协议终止;若SB满足访问结构(MA,ρA),B选取访问结构ASB,ASB对应的LSSS矩阵记为MB,MB的规模是lBxnB,MB的行向量与属性之间的一一对应关系记为ρB.
B随机选取$e{{{r}'}_{0}},e{{{r}'}_{1}},...,e{{{r}'}_{{{l}_{B}}}},e{{{x}'}_{2}},e{{{x}'}_{3}},...,e{{{x}'}_{{{n}_{B}}}}\in {{Z}_{p}}$,计算:
$\begin{align}
&{{s}_{B}}={{H}_{1}}({{K}_{B}},{{L}_{B}},\{{{K}_{B,j}},\forall j\in {{S}_{B}}\},e{{{{r}'}}_{0}}), \\
& {{{{r}'}}_{i}}={{H}_{1}}({{K}_{B}},{{L}_{B}},\{{{K}_{B,j}},\forall j\in {{S}_{B}}\},e{{{{r}'}}_{i}}),1\le i\le {{l}_{B}}, \\
& {{{{x}'}}_{k}}={{H}_{1}}({{K}_{B}},{{L}_{B}},\{{{K}_{B,j}},\forall j\in {{S}_{B}}\},e{{{{x}'}}_{k}}),\,2\le k\le {{n}_{B}}. \\
\end{align}$
令${v}'=({{s}_{B}},{{{x}'}_{2}},{{{x}'}_{3}},...,{{{x}'}_{{{n}_{B}}}})\in {{({{Z}_{p}})}^{{{n}_{B}}}},$计算${{{\lambda }'}_{i}}={v}'\cdot {{M}_{B}}(i)$,其中,MB(i)是矩阵MB的第i行,i=1,…,lB.
令$e{{{r}'}_{0}},e{{{r}'}_{1}},...,e{{{r}'}_{{{l}_{B}}}},e{{{x}'}_{2}},e{{{x}'}_{3}},...,e{{{x}'}_{{{n}_{B}}}}$是B的临时私钥,B计算:
$Y={{g}^{{{s}_{B}}}},({{V}_{i}}={{g}^{a{{{{\lambda }'}}_{i}}}}h_{{{\rho }_{B}}(i)}^{-{{{{r}'}}_{i}}},{{E}_{i}}={{g}^{{{{{r}'}}_{i}}}}),$1≤i≤lB(令集合{V,E}={(Vi,Ei),1≤i≤lB}).
B发送消息EPKB=(Y,{V,E},MB,ρB)给A.
Step 3. A接收到EPKB后,判定属性集合SA是否满足访问结构(MB,ρB),若不满足,协议终止;否则,按照以下方式计算共享密钥:
令IA={i:ρB(i)$ \in $SA},计算${{\{{{w}_{A}}(i)\in {{Z}_{p}}\}}_{i\in {{I}_{A}}}},$使得$\sum\limits_{i=1}^{{{l}_{B}}}{{{w}_{A}}(i)\cdot {{M}_{B}}(i)}=(1,0,0,...,0),$MB(i)是矩阵MB的第i行,i=1,…,lB.计算:
$\begin{align}
& {{\sigma }_{1}}={{(g_{T}^{\alpha })}^{{{s}_{A}}}}, \\
& {{\sigma }_{2}}=e(Y,{{K}_{A}})/\left( {{\left( \prod\limits_{i\in {{I}_{A}}}{e({{V}_{i}}},{{L}_{A}})e({{E}_{i}},{{K}_{A,{{\rho }_{B}}(i)}}) \right)}^{{{w}_{A}}(i)}} \right), \\
& {{\sigma }_{3}}={{Y}^{{{s}_{A}}}}. \\
\end{align}$
最后,计算出共享密钥KAB=H(σ1,σ2,σ3,EPKA,EPKB).
B收到EPKA,并且在Step 2中已经判断出自己的属性集合SB满足访问结构(MA,ρA),则B按如下方式计算共享密钥.
令IB={i:ρA(i)$ \in $SB},计算${{\{{{w}_{B}}(i)\in {{Z}_{p}}\}}_{i\in {{I}_{B}}}},$使得$\sum\limits_{i=1}^{{{l}_{A}}}{{{w}_{B}}(i)\cdot {{M}_{A}}(i)}=(1,0,0,...,0),$MA(i)是矩阵MA的第i行,i=1,…,lA.计算:
$\begin{align}
& {{\sigma }_{1}}=e(X,{{K}_{B}})/\left( \prod\limits_{i\in {{I}_{B}}}{(e({{U}_{i}}},{{L}_{B}})e({{D}_{i}},{{K}_{B,{{\rho }_{A}}(i)}}){{)}^{{{w}_{B}}(i)}} \right), \\
& {{\sigma }_{2}}={{(g_{T}^{\alpha })}^{{{s}_{B}}}}, \\
& {{\sigma }_{3}}={{X}^{{{s}_{B}}}}. \\
\end{align}$
最后,计算出共享密钥KBA=H(σ1,σ2,σ3,EPKA,EPKB).
4.2 协议的正确性 根据双线性对的性质,A计算:
$\begin{align}
& {{\sigma }_{1}}={{(g_{T}^{\alpha })}^{{{s}_{A}}}}, \\
& {{\sigma }_{2}}=e(Y,{{K}_{A}})/\left( \prod\limits_{i\in {{I}_{A}}}{{{(e({{V}_{i}},{{L}_{A}})e({{E}_{i}},{{K}_{A,{{\rho }_{B}}(i)}}))}^{{{w}_{A}}(i)}}} \right) \\
& \text{ }=e({{g}^{{{s}_{B}}}},{{g}^{\alpha }})e({{g}^{{{s}_{B}}}},{{g}^{a{{t}_{A}}}})/\left( \prod\limits_{i\in {{I}_{A}}}{e{{({{g}^{a{{{{\lambda }'}}_{i}}}},{{g}^{{{t}_{A}}}})}^{{{w}_{A}}(i)}}e{{(h_{{{\rho }_{B}}(i)}^{-{{{{r}'}}_{i}}},{{g}^{{{t}_{A}}}})}^{{{w}_{A}}(i)}}e{{({{g}^{{{{{r}'}}_{i}}}},h_{{{\rho }_{B}}(i)}^{{{t}_{A}}})}^{{{w}_{A}}(i)}}} \right) \\
& \text{ }=e({{g}^{{{s}_{B}}}},{{g}^{\alpha }})e({{g}^{{{s}_{B}}}},{{g}^{a{{t}_{A}}}})/e{{({{g}^{a}},{{g}^{{{t}_{A}}}})}^{\sum\limits_{i\in {{I}_{A}}}{{{{{\lambda }'}}_{i}}{{w}_{A}}(i)}}} \\
& \text{ }=e({{g}^{{{s}_{B}}}},{{g}^{\alpha }})e({{g}^{{{s}_{B}}}},{{g}^{a{{t}_{A}}}})/e{{({{g}^{a}},{{g}^{{{t}_{A}}}})}^{{{s}_{B}}}} \\
& \text{ }=e{{(g,g)}^{\alpha }}^{{{s}_{B}}} \\
& \text{ }={{(g_{T}^{\alpha })}^{{{s}_{B}}}}, \\
& {{\sigma }_{3}}={{Y}^{{{s}_{A}}}}={{g}^{{{s}_{A}}{{s}_{B}}}}. \\
\end{align}$
${{K}_{AB}}=H({{\sigma }_{1}},{{\sigma }_{2}},{{\sigma }_{3}},EP{{K}_{A}},EP{{K}_{B}})=H({{(g_{T}^{\alpha })}^{{{s}_{A}}}},{{(g_{T}^{\alpha })}^{{{s}_{B}}}},{{g}^{{{s}_{A}}{{s}_{B}}}},EP{{K}_{A}},EP{{K}_{B}})$
(1)
同理,B计算:
$\begin{align}
& {{\sigma }_{1}}=e(X,{{K}_{B}})/\left( \prod\limits_{i\in {{I}_{B}}}{{{(e({{U}_{i}},{{L}_{B}})e({{D}_{i}},{{K}_{B,{{\rho }_{A}}(i)}}))}^{{{w}_{B}}(i)}}} \right) \\
& \text{ }=e({{g}^{{{s}_{A}}}},{{g}^{\alpha }}{{g}^{a{{t}_{B}}}})/\left( \prod\limits_{i\in {{I}_{B}}}{{{(e({{g}^{a{{\lambda }_{i}}}}h_{{{\rho }_{A}}(i)}^{-{{r}_{i}}},{{g}^{{{t}_{B}}}})e({{g}^{{{r}_{i}}}},h_{{{\rho }_{A}}(i)}^{{{t}_{B}}}))}^{{{w}_{B}}(i)}}} \right) \\
& \text{ }=e({{g}^{{{s}_{A}}}},{{g}^{\alpha }})e({{g}^{{{s}_{A}}}},{{g}^{a{{t}_{B}}}})/\left( \prod\limits_{i\in {{I}_{B}}}{e{{({{g}^{a{{\lambda }_{i}}}},{{g}^{{{t}_{B}}}})}^{{{w}_{B}}(i)}}e{{(h_{{{\rho }_{A}}(i)}^{-{{r}_{i}}},{{g}^{{{t}_{B}}}})}^{{{w}_{B}}(i)}}e{{({{g}^{{{r}_{i}}}},h_{{{\rho }_{A}}(i)}^{{{t}_{B}}})}^{{{w}_{B}}(i)}}} \right) \\
& \text{ }=e({{g}^{{{s}_{A}}}},{{g}^{\alpha }})e({{g}^{{{s}_{A}}}},{{g}^{a{{t}_{B}}}})/e{{({{g}^{a}},{{g}^{{{t}_{B}}}})}^{\sum\limits_{i\in {{I}_{B}}}{{{\lambda }_{i}}{{w}_{B}}(i)}}} \\
& \text{ }=e({{g}^{{{s}_{A}}}},{{g}^{\alpha }})e({{g}^{{{s}_{A}}}},{{g}^{a{{t}_{B}}}})/e{{({{g}^{a}},{{g}^{{{t}_{B}}}})}^{{{s}_{A}}}} \\
& \text{ }={{(g_{T}^{\alpha })}^{{{s}_{A}}}}, \\
& {{\sigma }_{2}}={{(g_{T}^{\alpha })}^{{{s}_{B}}}}, \\
& {{\sigma }_{3}}={{X}^{{{s}_{B}}}}={{g}^{{{s}_{A}}{{s}_{B}}}}. \\
\end{align}$
${{K}_{BA}}=H({{\sigma }_{1}},{{\sigma }_{2}},{{\sigma }_{3}},EP{{K}_{A}},EP{{K}_{B}})=H({{(g_{T}^{\alpha })}^{{{s}_{A}}}},{{(g_{T}^{\alpha })}^{{{s}_{B}}}},{{g}^{{{s}_{A}}{{s}_{B}}}},EP{{K}_{A}},EP{{K}_{B}})$
(2)
由公式(1)和公式(2)可知,KAB=KBA.
4.3 协议的安全性定理1. 若GCPBDHE 假设和CDH假设同时成立,并且H,H1是随机预言机,则本文提出的ABAKE协议在ABeCK模型下具有选择安全性.
协议的安全性证明过程见附录.
4.4 协议对比本节将已有的ABAKE协议与本文的协议进行对比,对比结果见表1.
其中,nmax表示系统中LSSS矩阵的列的最大规模;lxn表示LSSS矩阵的规模;|S|表示用户属性集的规模;P表示双线性映射;E1表示G上的指数运算;E2表示GT上的指数运算;H表示Hash运算,需要指出的是,若协议中采取了不同的Hash运算,例如t1次H1运算和t2次H运算,这里简记为(t1+t2)次H运算;Ext表示随机提取器的计算复杂度.
一般情况下,nmax>2.因此,由表1可以看出:与文献[8]相比,同样在AbeCK&RO模型下,本文提出的协议降低了消息长度;同时,在nmax≥|S|的情况下,也降低了计算复杂度.
5. 结束语本文对GCDH假设进行了扩展,提出了GCPBDHE假设,提出了基于属性的认证密钥协商协议.在GCPBDHE假设和CDH假设成立的条件下,证明了该协议在ABeCK模型下是安全的.如何设计安全强度和效率更高的ABAKE协议,是下一步要解决的问题.
致谢 审稿专家和编辑老师为本文提出了宝贵的修改建议,在此表示衷心的感谢.
附录: 定理1的证明证明:令A是ABAKE协议的攻击者,S是该协议的模拟者,S的目的是利用A解决CDH问题或GCPBDHE问题.证明该定理的思路是:针对本文设计的ABAKE协议,若A在多项式时间内能以一个不可忽略的优势区分出测试会话sid*的会话密钥和随机选取的会话密钥,则S就能在多项式时间内以不可忽略的优势解决CDH问题或GCPBDHE问题.
令Pr[Suc]表示A攻击成功的概率,即,对sid*的会话密钥给出正确判决的概率.
令:
· AskH表示事件: A对sid*对应的(σ1,σ2,σ3,EPKA,EPKB)进行H函数查询;
· $\overline{AskH}$表示事件: A未对sid*的(σ1,σ2,σ3,EPKA,EPKB)进行H函数查询.
由于$\Pr [Suc\wedge \overline{AskH}]=1/2$,因此得到公式(3)成立:
$\Pr [Suc]=\Pr [Suc\wedge AskH]+\Pr [Suc\wedge \overline{AskH}]=\Pr [Suc\wedge AskH]+1/2$
(3)
令:
· AskS表示事件: A在进行StaticReveal查询或MasterReveal查询之前,对SKP=(KP,LP,{KP,j,∀j$ \in $SP})进行H1查询;
·$\overline{AskS}$表示AskS的补事件.
由公式(3)可得:
$\begin{align}
& \Pr [Suc]=\Pr [Suc\wedge AskH]+1/2 \\
& \text{ }=\Pr [Suc\wedge AskH\wedge AskS]+\Pr [Suc\wedge AskH\wedge \overline{AskS}]+1/2. \\
\end{align}$
由于测试会话一定是一个新鲜会话,并且根据攻击者A的攻击行为,我们定义以下事件:
(1) 事件E1:测试会话sid*没有匹配会话$\overline{si{{d}^{*}}}$,攻击者对满足访问结构ASA的属性集合S进行了StaticReveal(S)查询;
(2) 事件E2:测试会话sid*没有匹配会话$\overline{si{{d}^{*}}}$,攻击者对测试会话sid*进行了EphemeralReveal(sid*)查询;
(3) 事件E3:测试会话sid*存在匹配会话$\overline{si{{d}^{*}}}$,攻击者对满足访问结构ASA的属性集合S进行了 StaticReveal(S)查询,并且对满足访问结构ASB的属性集合S进行了StaticReveal(S)查询;或者进行了MasterReveal查询;
(4) 事件E4:测试会话sid*存在匹配会话$\overline{si{{d}^{*}}}$,攻击者进行了EphemeralReveal(sid*)和$EphemeralReveal$$(\overline{si{{d}^{*}}})$查询;
(5) 事件E5:测试会话sid*存在匹配会话$\overline{si{{d}^{*}}}$,攻击者对满足访问结构ASB的属性集合S进行了Static Reveal(S)查询;并且进行了$EphemeralReveal(\overline{si{{d}^{*}}})$查询;
(6) 事件E6:测试会话sid*存在匹配会话$\overline{si{{d}^{*}}}$,攻击者对满足访问结构ASA的属性集合S进行了Static Reveal(S)查询;并且进行了EphemeralReveal(sid*)查询.
根据E1~E6定义可知:
$Suc\wedge AskH\wedge \overline{AskS}=\bigcup\limits_{i=1}^{6}{(Suc\wedge AskH\wedge \overline{AskS}\wedge {{E}_{i}})}$
(4)
由公式(3)和公式(4)得到:
$\begin{align}
& \Pr [Suc]=\Pr [Suc\wedge AskH\wedge AskS]+\Pr [Suc\wedge AskH\wedge \overline{AskS}]+1/2 \\
& \text{ }=\Pr [Suc\wedge AskH\wedge AskS]+\Pr \left[ \bigcup\limits_{i=1}^{6}{(Suc\wedge AskH\wedge \overline{AskS}\wedge {{E}_{i}})} \right]+1/2 \\
& \text{ }\le \Pr [Suc\wedge AskH\wedge AskS]+\sum\limits_{i=1}^{6}{\Pr [(Suc\wedge AskH\wedge \overline{AskS}\wedge {{E}_{i}})]}+1/2. \\
\end{align}$
令:
$\begin{align}
& {{p}_{0}}=\Pr [Suc\wedge AskH\wedge AskS], \\
& {{p}_{i}}=\Pr [Suc\wedge AskH\wedge \overline{AskS}\wedge {{E}_{i}}],1\le i\le 6, \\
\end{align}$
则有:
$\Pr [Suc]\le \sum\limits_{i=0}^{6}{{{p}_{i}}}+1/2$
(5)
首先假设执行该密钥协商协议的系统用户个数是N,每个用户至多进行L次密钥协商.下面分析pi,i=0,1,…,6与S解决GCPBDHE困难问题和CDH困难问题的成功率之间的关系.
(1) 事件Suc∧AskH∧AskS
模拟者S随机选择两个用户A和B,并且以1/(N2L)的概率猜测A的第iA$ \in $[1,L]次会话是攻击者A选取的测试会话,将该测试会话记为sid*.在事件AskS中,允许攻击者A在进行StaticReveal查询或MasterReveal查询之前执行SKA的H1查询,这说明攻击者在进行StaticReveal查询或MasterReveal查询之前已经得到了A的长期私钥SKA.
模拟者S在系统设置中随机选取α'$ \in $Zp,令$g_{T}^{\alpha }=e({{g}^{a}},{{g}^{{{a}^{q}}}})e{{(g,g)}^{{{\alpha }'}}}$,即α=α'+aq+1,则模拟者S在接收到攻击者申请的SKA的H1查询请求时,模拟者S得到了SKA=(KA,LA,{KA,j,∀j$ \in $SA}).
由于${{K}_{A}}/L_{A}^{{{a}'}}={{g}^{\alpha }}={{g}^{{\alpha }'+{{a}^{q+1}}}},$因此,S利用$e(\left( {{K}_{A}}/L_{A}^{{{a}'}} \right),{{g}^{s}})/e({{g}^{{{\alpha }'}}},{{g}^{s}})$可以计算出$e{{(g,g)}^{{{a}^{q+1}}s}}.$
因此:
Pr[S解决GCPBDHE困难问题]≥p0/(N2L).
(2) 事件$Suc\wedge AskH\wedge \overline{AskS}\wedge {{E}_{1}}$
在事件$Suc\wedge AskH\wedge \overline{AskS}\wedge {{E}_{1}}$,模拟者S已知:
$\begin{align}
& g,{{g}^{s}},{{g}^{a}},...,{{g}^{({{a}^{q}})}},{{g}^{({{a}^{q+2}})}},...,{{g}^{({{a}^{2q}})}},\forall j\in \{1,2,...,q\}, \\
& {{g}^{s\cdot {{b}_{j}}}},{{g}^{a/{{b}_{j}}}},...,{{g}^{({{a}^{q}}/{{b}_{j}})}},{{g}^{({{a}^{q+2}}/{{b}_{j}})}},...,{{g}^{({{a}^{2q}}/{{b}_{j}})}},\forall j,k\in \{1,2,...,q,k\ne j\}, \\
& {{g}^{(a\cdot s\cdot {{b}_{k}}/{{b}_{j}})}},{{g}^{({{a}^{2}}\cdot s\cdot {{b}_{k}}/{{b}_{j}})}},...,{{g}^{({{a}^{q}}\cdot s\cdot {{b}_{k}}/{{b}_{j}})}}), \\
\end{align}$
· 系统建立
S随机选取α'$ \in $Zp,令$g_{T}^{\alpha }=e({{g}^{a}},{{g}^{{{a}^{q}}}})e{{(g,g)}^{{{\alpha }'}}},$则α=α'+aq+1.该系统用户最多有U个属性,对属性集合中的每个属性x,随机选取zx$ \in $Zp.令集合${{\Lambda }_{x}}=\{i:\rho _{A}^{*}(i)=x,1\le i\le l_{A}^{*}\},$模拟者S定义hx:
${{h}_{x}}={{g}^{{{z}_{x}}}}\prod\limits_{i\in {{\Lambda }_{x}}}{{{g}^{aM_{{{A}_{i,1}}}^{*}/{{b}_{i}}}}\cdot {{g}^{{{a}^{2}}M_{{{A}_{i,2}}}^{*}/{{b}_{i}}}}\cdot ...\cdot {{g}^{{{a}^{n_{A}^{*}}}M_{{{A}_{_{i,n_{A}^{*}}}}}^{*}/{{b}_{i}}}}},$
假设系统中有N个用户,每个用户最多进行L次密钥协商.模拟者S随机选择用户A,B,并且以1/N2L猜测A的第iA$ \in $[1,L]次密钥协商是攻击者攻击的测试会话,将该测试会话记为sid*.S按以下方式模拟A的第iA次会话发送的消息EPKA:
令X=gs,S随机选择${{r}_{1}},{{r}_{2}},...,{{r}_{l_{A}^{*}}},{{x}_{2}},{{x}_{3}},...,{{x}_{n_{A}^{*}}}\in {{Z}_{p}}$,则分享的秘密向量为
$v=(s,sa+{{x}_{2}},s{{a}^{2}}+{{x}_{3}},\ldots ,s{{a}^{n-1}}+{{x}_{n_{A}^{*}}})\in {{({{Z}_{p}})}^{n_{A}^{*}}}.$
对于任意的$i\in \{1,...,n_{A}^{*}\}$,定义${{R}_{i}}=\{k:\rho _{A}^{*}(k)=\rho _{A}^{*}(i),k=1,2,...,l_{A}^{*},\text{且}k\ne i\}$,计算:
$\begin{align}
& {{U}_{i}}=h_{\rho _{A}^{*}(i)}^{{{r}_{i}}}\left( \prod\limits_{j=2,...,n_{A}^{*}}{{{({{g}^{a}})}^{M_{{{A}_{i,j}}}^{*}{{x}_{j}}}}} \right){{({{g}^{{{b}_{i}}s}})}^{-{{z}_{\rho _{A}^{*}(i)}}}}\left( \prod\limits_{k\in {{R}_{i}}}{\prod\limits_{j=1,...,n_{A}^{*}}{{{({{g}^{{{a}^{j}}\cdot s\cdot ({{b}_{i}}/{{b}_{k}})}})}^{M_{{{A}_{k,j}}}^{*}}}}} \right), \\
& {{D}_{i}}={{g}^{-{{r}_{i}}}}{{g}^{-s{{b}_{i}}}}, \\
\end{align}$
$EP{{K}_{A}}=(X,\{U,D\},M_{A}^{*},\rho _{A}^{*})$是用户A在会话sid*中发出的消息.
· 模拟过程
为了回答攻击者对H1,H的查询,S建立两个列表${{L}_{{{H}_{1}}}}$和LH;为了回答攻击者对SessionReveal的查询,S建立列表LK.
① H1(KP,LP,{KP,j,∀j$ \in $SP},x):如果存在$({{K}_{P}},{{L}_{P}},\{{{K}_{P,j}},\forall j\in {{S}_{P}}\},*)\in {{\text{L}}_{{{H}_{1}}}},$∑返回相应查询值;否则,∑随机选取x'$ \in $Zp,将x'返回给攻击者,并在${{L}_{{{H}_{1}}}}$中记录(KP,LP,{KP,j,∀j$ \in $SP},x').
② $H({{\sigma }_{1}},{{\sigma }_{2}},{{\sigma }_{3}},EP{{K}_{P}},EP{{K}_{{\bar{P}}}}):$
(a) 如果存在$({{\sigma }_{1}},{{\sigma }_{2}},{{\sigma }_{3}},EP{{K}_{P}},EP{{K}_{{\bar{P}}}},*)\in {{L}_{H}},$S返回相应查询值;
(b) 如果不存在$({{\sigma }_{1}},{{\sigma }_{2}},{{\sigma }_{3}},EP{{K}_{P}},EP{{K}_{{\bar{P}}}},*)\in {{L}_{H}},$S判断P是否是A、$\bar{P}$是否是B、该会话是否为A 的第iA次会话,若都成立,接着调用DBDH随机预言机,若:
$\begin{align}
& DBDH(X,{{g}^{a}},{{g}^{{{a}^{q}}}},{{\sigma }_{1}}/e(X,{{g}^{{{\alpha }'}}}))=1, \\
& DBDH(Y,{{g}^{a}},{{g}^{{{a}^{q}}}},{{\sigma }_{2}}/e(Y,{{g}^{{{\alpha }'}}}))=1, \\
& e(X,Y)=e(g,{{\sigma }_{3}}) \\
\end{align}$
(c) 如果不存在$({{\sigma }_{1}},{{\sigma }_{2}},{{\sigma }_{3}},EP{{K}_{P}},EP{{K}_{{\bar{P}}}},*)\in {{L}_{H}},$调用DBDH随机预言机,若:
$\begin{align}
& DBDH(X,{{g}^{a}},{{g}^{{{a}^{q}}}},{{\sigma }_{1}}/e(X,{{g}^{{{\alpha }'}}}))=1(\text{即}{{\sigma }_{1}}/e(X,{{g}^{{{\alpha }'}}})=e{{(g,g)}^{{{a}^{q+1}}{{s}_{P}}}}), \\
& DBDH(Y,{{g}^{a}},{{g}^{{{a}^{q}}}},{{\sigma }_{2}}/e(Y,{{g}^{{{\alpha }'}}}))=1(\text{即}{{\sigma }_{1}}/e(X,{{g}^{{{\alpha }'}}})=e{{(g,g)}^{{{a}^{q+1}}{{s}_{\overline{P}}}}}), \\
& e(X,Y)=e(g,{{\sigma }_{3}}) \\
\end{align}$
$({{\sigma }_{1}},{{\sigma }_{2}},{{\sigma }_{3}},EP{{K}_{P}},EP{{K}_{{\bar{P}}}},K).$
③ $Send(I,{{S}_{P}},{{S}_{{\bar{P}}}}):$若P=A,并且该会话是A的第iA次会话,S将EPKA返回给攻击者;否则,S按照协议执行过程生成EPKP返回给用户,并记录$({{S}_{P}},{{S}_{{\bar{P}}}},EP{{K}_{P}}).$
④ SessionReveal(sid*):模拟者查询LK,若攻击者申请sid*的会话密钥,则S失败终止;若sid*在LK列表中,则S将列表中的会话密钥K返回给攻击者;若sid*不在LK列表中,查询LH,将H中sid*对应的K返回给用户,并将(sid*,K)记录在列表LK中.
⑤ EphemeralReveal(sid*):若攻击者申请sid*的临时私钥,则S失败终止;否则,S返回给攻击者er0,er1,…,erl, ex2,ex3,…,exn$ \in $Zp,其中,l,n分别是访问结构对应的矩阵M的行和列数.
⑥ StaticReveal(SP):在事件E1中,用户属性集合SP不满足访问结构$M_{A}^{*}$,因此,模拟者可以找到向量:
$w=({{w}_{1}},...,{{w}_{n_{A}^{*}}})\in {{({{Z}_{p}})}^{n_{A}^{*}}},$
利用已知的${{g}^{a}},...,{{g}^{({{a}^{q}})}},$计算出${{L}_{P}}={{g}^{r}}\prod\limits_{i=1,...,n_{A}^{*}}{{{({{g}^{{{a}^{q+1-i}}}})}^{{{w}_{i}}}}}={{g}^{t}},{{K}_{P}}={{g}^{{{\alpha }'}}}{{g}^{ar}}\prod\limits_{i=2,...,n_{A}^{*}}{{{({{g}^{{{a}^{q+1-i}}}})}^{{{w}_{i}}}}}={{g}^{{{\alpha }'}}}{{g}^{at}}.$
∀x$ \in $SP,令集合${{\Lambda }_{x}}=\{i:\rho _{A}^{*}(i)=x,i=1,2,...,l_{A}^{*}\},$模拟者计算KP,x:
${{K}_{P,x}}=L_{P}^{{{z}_{x}}}{{\prod\limits_{i\in {{\Lambda }_{x}}}{\prod\limits_{j=1,...,n_{A}^{*}}{\left( {{g}^{({{a}^{j}}/{{b}_{i}})r}}\prod\limits_{\begin{smallmatrix}
k=1,...,n_{A}^{*} \\
\quad k\ne j
\end{smallmatrix}}{{{({{g}^{{{a}^{q+1+j-k}}/{{b}_{i}}}})}^{{{w}_{k}}}}} \right)}}}^{M_{i,j}^{*}}}.$
若Lx是空集,则模拟者令${{K}_{P,x}}=L_{P}^{{{z}_{x}}}.$
⑦ MasterReveal:S失败终止.
⑧ Test(sid*):若测试会话不是sid*,S失败终止;否则,S随机生成x$ \in ${0,1}k,将x返回给攻击者.
在事件$Suc\wedge AskH\wedge \overline{AskS}\wedge {{E}_{1}}$中,若攻击者A攻击成功,则攻击者必然查询了H(σ1,σ2,σ3,EPKA,EPKB).因此,根据步骤②中情况(b)的分析,攻击者利用σ1/e(X,ga')可以计算出$e{{(g,g)}^{{{a}^{q+1}}s}}.$因此,
Pr[S解决GCPBDHE问题]≥p1/(N2L).
(3) 事件$Suc\wedge AskH\wedge \overline{AskS}\wedge {{E}_{2}}$
在事件E2中,测试会话sid*不存在匹配会话$\overline{si{{d}^{*}}}$,A可以查询EphemeralReveal(sid*),但不能查询满足访问结构(MB,ρB)的长期私钥和满足访问结构(MA,ρA)的长期私钥,或者不能查询系统主私钥.由于H1是随机预言机,并且H1的输入包括属性集对应的长期私钥,故A以一个可以忽略的概率得到正确的${{s}_{A}},{{r}_{1}},{{r}_{2}},...,{{r}_{l_{A}^{*}}},{{x}_{2}},{{x}_{3}},...,{{x}_{n_{A}^{*}}}.$因此与$Suc\wedge AskH\wedge \overline{AskS}\wedge {{E}_{1}}$事件中S的模拟过程相似,同样得到模拟者S的成功率:
Pr[S解决GCPBDHE问题]≥p2/(N2L).
(4) 事件$Suc\wedge AskH\wedge \overline{AskS}\wedge {{E}_{3}}$
在事件E3中,测试会话sid*存在匹配会话$\overline{si{{d}^{*}}}$,A可以查询MasterReveal,或者可以同时查询满足访问结构 (MB,ρB)的长期私钥和满足访问结构(MA,ρA)的长期私钥,但是不允许查询EphemeralReveal(sid*)和Ephemeral Reveal $\overline{si{{d}^{*}}}$.模拟者S以1/(N2L)的概率猜测测试会话是sid*,即:会话双方是A,B,并且是A的第iA次会话.模拟者S的目的是解决CDH问题,即:模拟者已知(gb,gc),求解gbc. S模拟的方案在系统建立和私钥生成阶段与真实方案相同,S在生成EPKA和EPKB的过程中嵌入gb,gc,具体方法如下:
A随机选择$e{{r}_{1}},...,e{{r}_{{{l}_{A}}}},e{{x}_{2}},e{{x}_{3}},...,e{{x}_{{{n}_{A}}}}\in {{Z}_{p}},$计算:
$\begin{align}
& {{r}_{i}}={{H}_{1}}({{K}_{A}},{{L}_{A}},\{{{K}_{A,j}},\forall j\in {{S}_{A}}\},e{{r}_{i}}),1\le i\le {{l}_{A}}, \\
& {{x}_{k}}={{H}_{1}}({{K}_{A}},{{L}_{A}},\{{{K}_{A,j}},\forall j\in {{S}_{A}}\},e{{x}_{k}}),\,2\le k\le {{n}_{A}}. \\
\end{align}$
令秘密向量$v=(b,{{x}_{2}},{{x}_{3}},...,{{x}_{{{n}_{A}}}})\in {{({{Z}_{p}})}^{{{n}_{A}}}},$则有:
${{\lambda }_{i}}=v\cdot {{M}_{A}}(i)=b{{M}_{{{A}_{i,1}}}}+{{x}_{2}}{{M}_{{{A}_{i,2}}}}+...+{{x}_{{{n}_{A}}}}{{M}_{{{A}_{i,{{n}_{A}}}}}},$
$X={{g}^{b}},\left( {{U}_{i}}={{({{g}^{b}})}^{a{{M}_{{{A}_{i,1}}}}}}\left( \prod\limits_{j=2}^{{{n}_{A}}}{{{({{g}^{a}})}^{{{x}_{2}}{{M}_{{{A}_{i,j}}}}}}} \right)h_{{{\rho }_{A}}(i)}^{-{{r}_{i}}},{{D}_{i}}={{g}^{{{r}_{i}}}} \right),$1≤i≤lA(令集合{U,D}={(Ui,Di),1≤i≤lA}).
A发送消息EPKA=(X,{U,D},MA,ρA)给B.
B随机选取$e{{{r}'}_{1}},...,e{{{r}'}_{{{l}_{B}}}},e{{{x}'}_{2}},e{{{x}'}_{3}},...,e{{{x}'}_{{{n}_{B}}}}\in {{Z}_{p}},$计算:
$\begin{align}
& {{{{r}'}}_{i}}={{H}_{1}}({{K}_{B}},{{L}_{B}},\{{{K}_{B,j}},\forall j\in {{S}_{B}}\},e{{{{r}'}}_{i}}),1\le i\le {{l}_{B}}, \\
& {{{{x}'}}_{k}}={{H}_{1}}({{K}_{B}},{{L}_{B}},\{{{K}_{B,j}},\forall j\in {{S}_{B}}\},e{{{{x}'}}_{k}}),\,2\le k\le {{n}_{B}}. \\
\end{align}$
令秘密向量${v}'=(c,{{{x}'}_{2}},{{{x}'}_{3}},...,{{{x}'}_{{{n}_{B}}}}),$计算:
${{{\lambda }'}_{i}}={v}'\cdot {{M}_{B}}(i),$
$Y={{g}^{c}},\left( {{V}_{i}}={{({{g}^{c}})}^{a{{M}_{{{B}_{i,1}}}}}}\left( \prod\limits_{j=2}^{{{n}_{B}}}{{{({{g}^{a}})}^{{{x}_{2}}{{M}_{{{B}_{i,j}}}}}}} \right)h_{{{\rho }_{B}}(i)}^{-{{{{r}'}}_{i}}},{{E}_{i}}={{g}^{{{{{r}'}}_{i}}}} \right),$ 1≤i≤lB(令集合{V,E}={(Vi,Ei),1≤i≤lB}).
B发送消息EPKB=(Y,{V,E},MB,ρB)给A.
在事件$Suc\wedge AskH\wedge \overline{AskS}\wedge {{E}_{3}}$中,攻击者必然输入正确的σ1,σ2,σ3,EPKA,EPKB查询H预言机,因此,攻击者可以求解出gbc=σ3,得到:
Pr[S解决CDH问题]≥p3/(N2L).
(5) 事件$Suc\wedge AskH\wedge \overline{AskS}\wedge {{E}_{4}}$
在事件E4中,测试会话sid*存在匹配会话$\overline{si{{d}^{*}}}$,A查询EphemeralReveal(sid*)和$EphemeralReveal(\overline{si{{d}^{*}}}),$但不允许查询满足访问结构(MB,ρB)的长期私钥和满足访问结构(MA,ρA)的长期私钥,也不允许查询系统主私钥.
由于H1是随机预言机,因此,A只能以可以忽略的概率得到正确的{sA,ri,xj(1≤i≤lA,2≤j≤nA)}和$\{{{s}_{B}},{{{r}'}_{i}},{{{x}'}_{j}}(1\le i\le {{l}_{A}},\,2\le j\le {{n}_{A}})\}.$与$Suc\wedge AskH\wedge \overline{AskS}\wedge {{E}_{3}}$事件中S的模拟过程相似,得到模拟者S的成功率:
Pr[S解决CDH问题]≥p4/(N2L).
(6) 事件$Suc\wedge AskH\wedge \overline{AskS}\wedge {{E}_{5}}$
在事件E5中,测试会话sid*存在匹配会话$\overline{si{{d}^{*}}}$,A查询满足访问结构(MB,ρB)的属性集对应的长期私钥和$EphemeralReveal(\overline{si{{d}^{*}}}),$不允许查询满足访问结构(MA,ρA)的属性集对应的长期私钥和EphemeralReveal(sid*),也不允许查询MasterReveal.由于H1是随机预言机,因此,A只能以可以忽略的概率得到正确的{sA,ri,xj(1≤i≤lA,2≤j≤nA)}和${{s}_{B}},{{{r}'}_{i}},{{{x}'}_{j}}(1\le i\le {{l}_{A}},\,2\le j\le {{n}_{A}}).$与$Suc\wedge AskH\wedge \overline{AskS}\wedge {{E}_{3}}$事件中S的模拟过程相似,得到模拟者S的成功率:
Pr[S解决CDH问题]≥p5/(N2L).
(7) 事件$Suc\wedge AskH\wedge \overline{AskS}\wedge {{E}_{6}}$
在事件E6中,测试会话sid*存在匹配会话$\overline{si{{d}^{*}}}$,A查询EphemeralReveal(sid*)和满足访问结构(MA,ρA)的属性集对应的长期私钥,不查询满足访问结构(MB,ρB)的属性集对应的长期私钥和$EphemeralReveal(\overline{si{{d}^{*}}}),$不查询MasterReveal.由于H1是随机预言机,因此,A只能以可以忽略的概率得到正确的{sA,ri,xj(1≤i≤lA,2≤j≤nA)}和${{s}_{B}},{{{r}'}_{i}},{{{x}'}_{j}}(1\le i\le {{l}_{A}},\,2\le j\le {{n}_{A}}).$与$Suc\wedge AskH\wedge \overline{AskS}\wedge {{E}_{3}}$事件中S的模拟过程相似,模拟者S的成功率:
Pr[S解决CDH问题]≥p6/(N2L).
针对上述7个事件的分析结果,得到以下两个结论.
结论1. Pr[S解决GCPBDHE困难问题]≥max{p0,p1,p2}/(N2L).
结论2. Pr[S解决CDH困难问题]≥max{p3,p4,p5,p6}/(N2L).
假设攻击者A攻击成功,则下面不等式成立:
Pr[Suc]≥1/2+ε
(6)
由公式(5)和公式(6)得到:$\sum\limits_{i=0}^{6}{{{p}_{i}}}\ge \varepsilon .$
又由于$7*\max \{{{p}_{i}},i=0,1,...,6\}\ge \sum\limits_{i=0}^{6}{{{p}_{i}}},$因此得到:max{pi,i=0,1,…,6}≥ε/7.
由于Pr[S解决GCPBDHE困难问题]≥max{p0,p1,p2}/(N2L),若max{pi,i=0,1,…,6}$ \in ${p0,p1,p2},则Pr[S解决 GCPBDHE困难问题]≥ε/(7N2L),这与GCPBDHE假设是矛盾的;
由于Pr[S解决CDH困难问题]≥max{p3,p4,p5,p6}/(N2L),若max{pi,i=0,1,…,6}$ \in ${p3,p4,p5,p6},则Pr[S解决CDH困难问题]≥ε/(7N2L),这与CDH假设是矛盾的.
根据上述分析,若GCPBDHE假设和CDH假设同时成立,并且H1,H是随机预言机,本文提出的ABAKE协议在ABeCK模型下具有选择安全性.
下面粗略分析模拟者S的计算复杂度.为了描述方便,记调用一次H1预言机的计算复杂度为${{T}_{{{H}_{1}}}}$,DBDH预言机的计算复杂度为TDBDH,消息EPK的计算复杂度为TEPK,对运算的计算复杂度为Te,用户长期私钥的计算复杂度为TSK,用户临时私钥以及系统主私钥的计算复杂度相对较小,忽略不计.由于每个事件中S的计算复杂度的具体表达式都非常复杂,因此,我们这里只给出了一个粗略的上界,即:事件(1)中,S的计算复杂度小于${{N}^{2}}L({{T}_{{{H}_{1}}}}+2{{T}_{DBDH}})+4{{T}_{e}}$;在事件(2)~事件(7)中,S的计算复杂度都小于${{N}^{2}}L({{T}_{{{H}_{1}}}}+2{{T}_{DBDH}}+{{T}_{EPK}})+N\cdot {{T}_{SK}}$,在假设${{T}_{{{H}_{1}}}}$,TDBDH,TEPK,Te和TSK都是多项式时间的条件下,S的计算复杂度也是多项式时间的.
[1] | Shamir. Identity-Based cryptosystems and signature schemes. In: Proc. of the CRYPTO’84. Santa Barbara: Springer-Verlag, 1984, 47-53.[doi: 10.1007/3-540-39568-7_5] |
[2] | Sahai A, Waters B. Fuzzy identity-based encryption. In: Proc. of the EUROCRYPT 2005, Aarhus: Springer Press, 2005, 457-473.[doi: 10.1007/11426639_27] |
[3] | Wang H, Xu QL, Ban T. A provably secure two-party attribute-based key agreement protocol. In: Proc. of the 5th Int’l Conf. on Intelligent Information Hiding and Multimedia Signal Processing. IEEE Press, 2009, 1042-1045.[doi: 10.1109/IIH-MSP.2009.92] |
[4] | Wang H, Xu QL. Revocable attribute-based key agreement protocol without random oracles. Journal of Networks, 2009,4(8): 787-794.[doi: 10.4304/jnw.4.8.787-794] |
[5] | Wang H, Xu QL. Two-Party attribute-based key agreement protocol in the standard model. In: Proc. of the 2009 Int’l Symp. on Information Processing (ISIP 2009). Huangshan: Springer-Verlag, 2009, 325-328. |
[6] | Gorantla MC, Boyd C, Nieto JMG. Attribute-Based authenticated key exchange. In: Proc. of the 15th Australasian Conf. on Information Security and Privacy (ACISP 2010). Sydney: Springer-Verlag, 2010, 300-317.[doi: 10.1007/978-3-642-14081-5_19] |
[7] | Ren YJ, Wang JD, Zhuang Y, Tan CH, Fang LM. Attribute-Based authenticated key agreement protocol. Journal of LanZhou University (Nature Sciences), 2010,46(2):103-110 (in Chinese with English abstract). |
[8] | Yoneyama K. Strongly secure two-pass attribute-based authenticated key exchange. In: Proc. of the Pairing-Based Cryptography. Yamanaka Hot Spring: Springer-Verlag, 2010, 147-166.[doi: 10.1007/978-3-642-17455-1_10] |
[9] | Waters B. Ciphertext-Policy attribute-based encryption: An expressive, efficient, and provably secure realization. In: Proc. of the 14th Int’l Conf. on Practice and Theory in Public Key Cryptography (PKC2011). Taormina: Springer-Verlag, 2011, 53-70.[doi: 10.1007/978-3-642-19379-8_4] |
[10] | Wei JH, Hu XX, Liu WF. Attribute-Based authenticated key exchange protocol in multiple attribute authorities environment. Journal of Electronics & Information Technology, 2012,34(2):451-456 (in Chinese with English abstract).[doi: 10.3724/SP.J.1146.2011.00701] |
[11] | Li Q, Feng DG, Zhang LW, Gao ZG. Enhanced attribute-based authenticated key agreement protocol in the standard model. Chinese Journal of Computers, 2013,36(10):2156-2167 (in Chinese with English abstract). |
[12] | Okamoto T, Pointcheval D. The gap-problems: A new class of problems for the security of cryptographic schemes. In: Proc. of the 4th Int’l Conf. on Practice and Theory in Public Key Cryptography (PKC 2001). Taormina: Springer-Verlag, 2011, 104-118.[doi: 10.1007/3-540-44586-2_8] |
[13] | Beimel A. Secure schemes for secret sharing and key distribution [Ph.D. Thesis]. Israel Institute of Technology, Technion, Haifa, Israel, 1996. |
[14] | 任勇军,王建东,庄毅,谭沧海,方黎明.基于属性的认证密钥协商协议.兰州大学学报(自然科学版),2010,46(2):103-110. |
[15] | 魏江宏,胡学先,刘文芬.多属性机构环境下的属性基认证密钥协商协议.电子与信息学报,2012,34(2):451-456.[doi: 10.3724/SP.J.1146.2011.00701] |
[16] | 李强,冯登国,张立武,高志刚.标准模型下增强的基于属性的认证密钥协商协议.计算机学报,2013,36(10):2156-2167. |