MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}}); function MyAutoRun() {    var topp=$(window).height()/2; if($(window).height()>450){ jQuery(".outline_switch_td").css({ position : "fixed", top:topp+"px" }); }  }    window.onload=MyAutoRun; $(window).resize(function(){ var bodyw=$win.width(); var _leftPaneInner_width = jQuery(".rich_html_content #leftPaneInner").width(); var _main_article_body = jQuery(".rich_html_content #main_article_body").width(); var rightw=bodyw-_leftPaneInner_width-_main_article_body-25;   var topp=$(window).height()/2; if(rightw<0||$(window).height()<455){ $("#nav-article-page").hide(); $(".outline_switch_td").hide(); }else{ $("#nav-article-page").show(); $(".outline_switch_td").show(); var topp=$(window).height()/2; jQuery(".outline_switch_td").css({ position : "fixed", top:topp+"px" }); } }); ABeCK模型下安全的基于属性的认证密钥协商协议
  软件学报  2015, Vol. 26 Issue (12): 3183-3195   PDF    
ABeCK模型下安全的基于属性的认证密钥协商协议
高海英     
中国人民解放军信息工程大学, 河南 郑州 450001
摘要: 基于属性的认证密钥协商(attribute-based authenticated key agreement,简称ABAKE)协议可在保护身份隐私的通信环境中为用户建立共享的会话密钥,ABeCK(attribute-based extended Canetti-Krawczyk)模型是适用于ABAKE协议安全性分析的一种安全强度较高的模型.首先在GCDH(gap computational Diffie-Hellman)假设的基础上提出了GCPBDHE(gap computational parallel bilinear Diffie-Hellman exponent)假设,然后,基于Waters属性基加密方案提出了一个基于属性的认证密钥协商协议,并在GCPBDHE假设和CDH假设成立的条件下,证明了该方案在ABeCK模型下是安全的.与现有的ABeCK模型下安全的ABAKE协议相比,降低了通信开销.
关键词: 基于属性    密钥协商    ABeCK模型    GCDH假设    GCPBDHE假设    
Attribute-Based Authenticated Key Agreement Protocol Secure in ABeCK Model
GAO Hai-Ying     
The PLA Information Engineering University, Zhengzhou 450001, China
Abstract: Attribute-based authenticated key agreement(ABAKA) protocol is used to establish session key among parties in the communication environment in which the identity information of individual is protected. Attribute-based extended Canetti-Krawczyk(ABeCK) model is a model with more security applying to the security proof of ABAKE protocol. This paper presents gap computational parallel bilinear Diffie-Hellman exponent(GCPBDHE) assumption based on gap computational Diffie-Hellman(GCDH) assumption. Based on Waters scheme, it establishes an ABAKA protocol, and proves its security in ABeCK model under GCPBDHE and CDH assumptions. Compared with the existing ABAKE protocols, the new protocol is more efficient in communication cost.
Key words: attribute-based    key agreement    ABeCK model    GCDH assumption    GCPBDHE assumption    

密钥协商协议是密码学的基本组件之一,利用密钥协商协议,可以在不安全的信道上建立安全信道.所谓认证密钥协商协议,就是通信双方确信对方的真实身份,同时,协议结束后双方确信两者共享了一个只有他们知道的会话密钥.

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的乘法循环群,gG的生成元.双线性对e:GxGGT为具有如下性质的映射:

(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的乘法循环群,gG的生成元,随机选取$b,c\in Z_{p}^{*}$,给定二元组(gb,gc),若不存在多项式时间算法以不可忽略的概率计算出gbc,则称CDH假设成立.

1.3 DBDH 随机预言机

定义3. 设GGT都是阶为素数p的乘法循环群,gG的生成元,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,且BC,则C$ \in $AS.若集合在访问结构AS中,则称为授权集合,否则称为非授权集合.

1.5 线性秘密共享方案

定义5. 令参与方集合为P={P1,P2,…,Pn},(M,r)表示访问结构AS,其中,Mlxn的矩阵,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. 设GGT都是阶为素数p的乘法循环群,gG的生成元,随机选取$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),$
并且允许敌手调用定义3给出的DBDH随机预言机,在该条件下,若不存在多项式时间敌手A以不可忽略的概率计算出$e{{(g,g)}^{{{a}^{q+1}}s}}$,则称GPBDHE假设成立.

定义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): AP的身份申请到属性集合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) 若两个诚实用户AB完成了匹配会话,并且属性集合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的群GGT以及G的生成元g,随机选取U个元素h1,h2,…,hU$ \in $G,其中,U是系统用户属性集合的个数,第i(1≤iU)个属性对应元素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}).AB进行密钥协商的主要过程是:首先,A选取访问结构ASA,生成消息EPKA,将EPKA发送给B;然后,B选取访问结构ASB,生成消息EPKB,将EPKB发送给A;最后,若SA满足访问结构ASB,SB满足访问结构ASA,则AB可计算出共享密钥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≤ilA(令集合{U,D}={(Ui,Di),1≤ilA}).

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≤ilB(令集合{V,E}={(Vi,Ei),1≤ilB}).

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.

表1 协议的对比 Table 1 Comparison of protocols

其中,nmax表示系统中LSSS矩阵的列的最大规模;lxn表示LSSS矩阵的规模;|S|表示用户属性集的规模;P表示双线性映射;E1表示G上的指数运算;E2表示GT上的指数运算;H表示Hash运算,需要指出的是,若协议中采取了不同的Hash运算,例如t1H1运算和t2H运算,这里简记为(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表示事件: Asid*对应的(σ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) 事件SucAskHAskS

模拟者S随机选择两个用户AB,并且以1/(N2L)的概率猜测A的第iA$ \in $[1,L]次会话是攻击者A选取的测试会话,将该测试会话记为sid*.在事件AskS中,允许攻击者A在进行StaticReveal查询或MasterReveal查询之前执行SKAH1查询,这说明攻击者在进行StaticReveal查询或MasterReveal查询之前已经得到了A的长期私钥SKA.

模拟者S在系统设置中随机选取α'$ \in $Zp,令$g_{T}^{\alpha }=e({{g}^{a}},{{g}^{{{a}^{q}}}})e{{(g,g)}^{{{\alpha }'}}}$,即α=α'+aq+1,则模拟者S在接收到攻击者申请的SKAH1查询请求时,模拟者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}$
并且接收到攻击者A给出的挑战访问结构$(M_{A}^{*},\rho _{A}^{*})$和$(M_{B}^{*},\rho _{B}^{*})$,其中,$M_{A}^{*}$是$l_{A}^{*}\times n_{A}^{*}$规模的矩阵,$M_{B}^{*}$是$l_{B}^{*}\times n_{B}^{*}$规模的矩阵.S对方案进行如下模拟:

· 系统建立

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}}}}},$
其中,$M_{{{A}_{i,j}}}^{*}$是$M_{A}^{*}$矩阵的第ij列的元素.需要说明的是:若集合Lx是空集,则${{h}_{x}}={{g}^{{{z}_{x}}}}.$

假设系统中有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}$
其中,$M_{{{A}_{i,j}}}^{*}$是$M_{A}^{*}$矩阵的第ij列的元素.

$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}$
都成立,则S终止,并且输出σ1/e(X,gα')(此时,${{\sigma }_{1}}/e(X,{{g}^{{{\alpha }'}}})=e{{(g,g)}^{{{a}^{q+1}}s}},{{s}_{A}}=s$);

(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}$
都成立,则生成一个随机数K$ \in ${0,1}k返回给攻击者,并在LH中记录:
$({{\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,将Hsid*对应的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}^{*}}},$
其中,w1=-1;并且对于任意满足条件$\rho _{A}^{*}(i)\in {{S}_{P}}$的行标识i,满足条件$w\cdot M_{A}^{*}(i)=0.$模拟者选取一个随机数r$ \in $Zp,模拟者令$t=r+{{w}_{1}}{{a}^{q}}+{{w}_{2}}{{a}^{q-1}}+...+{{w}_{n_{A}^{*}}}{{a}^{q-n_{A}^{*}+1}}.$

利用已知的${{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在生成EPKAEPKB的过程中嵌入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}}}}}},$
其中,MA(i)是MA的第i行,i=1,…,lA.令:
$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≤ilA(令集合{U,D}={(Ui,Di),1≤ilA}).

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),$
其中,MB(i)是矩阵MB的第i行,i=1,…,lB.B计算:
$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≤ilB(令集合{V,E}={(Vi,Ei),1≤ilB}).

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≤ilA,2≤jnA)}和$\{{{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≤ilA,2≤jnA)}和${{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≤ilA,2≤jnA)}和${{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,TeTSK都是多项式时间的条件下,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.