郎晓丽,曹素珍,刘祥震,张玉磊,王 斐
(西北师范大学计算机科学与工程学院,甘肃 兰州 730070)
云计算技术[1]作为目前发展最快的技术,已经逐步普及了云存储服务。但是,考虑到数据的保密性问题,数据用户首先将加密后的密文数据存储到云服务器,当数据用户下载某1模块的数据时,若将全部密文数据下载之后再解密是极其费时的。基于此需求,2000年,Song等人[2]提出了可搜索加密技术。2004年,Boneh等人[3]设计出了公钥可搜索加密方案,但是该方案通信代价较大。2005年,Boneh等人[4]设计出了基于身份的可搜索加密方案模型,并在此模型上构造了2个方案。但是,在身份密码体制[5]中,数据用户的密钥完全是由私钥生成中心PKG(Private Key Generator)生成的,虽然不存在公钥证书[6]管理,但出现了密钥托管问题。2003年,Al-Riyami等人[7]设计了无证书公钥密码体制,解决了密钥托管问题。
2005年,Baek等人[8]首次提出了基于无证书的可搜索加密方案,但是该方案的计算效率不高。许多基于无证书的可搜索加密方案[9-11]在此后被提出。2017年,He等人[12]设计出一个基于数据属主认证的无证书公钥可搜索加密方案。2018年,Ma等人[13]设计了工业物联网下基于无证书的可搜索加密方案。
基于授权的公钥可搜索加密方案[14],授权服务器可以对云服务器返回的密文进行有效性验证。2015年,Tang等人[15]提出了可拓展公钥的授权可搜索加密方案。2018年,Qu等人[16]设计出等价测试的无证书公钥加密方案,但是该方案中数据属主与数据用户为同一用户。
本文给出了一个高效授权的无证书公钥认证可搜索加密方案的形式化定义,设计了相应的安全模型,并提出了具体的方案。该方案中云服务器利用了数据属主对密文索引的签名,从而可以验证数据属主的身份;数据属主和用户利用云服务器的公钥进行加密算法和陷门生成算法,可以防止云服务器的内部猜测攻击。在加密算法中,数据属主对关键词进行签名,能够保证数据属主身份的真实性。虽然加密算法效率不是很高,但是本文方案中的陷门生成算法与授权算法以及验证算法的效率均高于比较方案的,因此本文方案的总体效率较高。
该系统主要包括5个实体:密钥生成中心KGC(Key Generation Center)、数据属主、数据用户、云服务器和授权服务器。系统模型图如图1所示。
Figure 1 System model图1 系统模型图
(1)KGC:为数据属主、数据用户、云服务器和授权服务器生成部分私钥。
(2)数据属主:对关键词进行加密生成关键词密文索引C,将分享的密文S和关键词密文索引C上传到云服务器。
(3)数据用户:对要搜索的关键词Ωwj生成搜索凭证Tw,发送给云服务器进行陷门匹配验证;对授权服务器进行授权,以验证云服务器返回的密文有效性。
(4)云服务器:存储数据属主上传的(S,C),对数据属主身份进行验证;对数据用户上传的陷门搜索凭证Tw进行搜索验证。
(5)授权服务器:利用数据用户的授权信息对数据用户的身份进行验证,其次协助数据用户对云服务器返回的密文进行有效性检测。
无证书密码体制下存在2类敌手AⅠ和AⅡ[17]。本文方案的安全性主要从密文索引不可区分性和陷门不可区分性这2个方面进行考虑。
3.2.1 密文索引不可区分性
定义1具有高效授权的无证书公钥认证可搜索加密方案中,若AⅠ与AⅡ能以不可忽略的优势分别赢得Game 1与Game 2,则称该方案的密文索引不可区分是安全的。
Game1敌手AⅠ与挑战者F之间的交互如下所示:
(1)Setup:给定安全参数λ,F执行Setup算法输出系统参数,这里F不知道主密钥s。
(2)阶段1:AⅠ可以适应性地进行以下询问:
①Hash-Query:AⅠ可以对算法中的哈希询问,并获得相应的回答。
②Extract-Partial-Private-Key-Query:AⅠ给定身份IDi,F计算对应的部分私钥Di,并将其发送给AⅠ。
③Set-Public-Key-Query:AⅠ给定身份IDi,F计算相应的公钥Pki,并将其发送给AⅠ。
④Replace-Public-Key-Query:AⅠ可以替换任何用户的公钥。
⑤Delegate-Query:AⅠ对授权进行请求询问时,F计算授权信息,并将其发送给AⅠ。
⑥CLC-PEKS-Query:输入关键词w,F计算对应的关键词密文索引C={C1,C2,C3},并将其发送给AⅠ。
⑦Trapdoor-Query:输入关键词w,F计算对应的陷门凭证Tw={T1,T2},并将其发送给AⅠ。
(5)Guess:AⅠ输出β′∈{0,1}作为猜测值。若b′=b,则AⅠ在Game 1获胜。
Game2敌手AⅡ与挑战者F之间的交互如下所示:
(1)Setup:给定参数λ,F执行Setup算法输出公开参数和主密钥s。
(2)阶段1:AⅡ可以适应性地进行Hash-Query、Extract-Partial-Private-Key-Query、 Delegate-Query、CLC-PEKS-Query和Trapdoor-Query。
(5)Guess:AⅡ输出β′∈{0,1}作为猜测值。若b′=b,则AⅡ在Game 2中获胜。
3.2.2 陷门不可区分性
定义2具有高效授权的无证书公钥认证可搜索加密方案中,若敌手AⅠ与AⅡ能以不可忽略的优势分别赢得Game 3与Game 4,则称该方案的陷门不可区分是安全的。
Game3敌手AⅠ与挑战者F之间的交互如下所示:
(1)Setup:给定参数λ,F执行Setup算法得到公开参数。
(2)阶段1:AⅠ可以适应性地进行Hash-Query、Extract-Partial-Private-Key-Query、Set-Public-Key-Query、Replace-Public-Key-Query、Delegate-Query、CLC-PEKS-Query和Trapdoor-Query。
(5)猜测:AⅠ输出β′∈{0,1}作为猜测值。若b′=b,则AⅠ在Game 3中获胜。
Game4敌手AⅡ与挑战者F之间的交互如下所示:
(1)Setup:给定参数λ,F执行Setup算法输出公开参数和主密钥s。
(2)阶段1:AⅡ可以适应性地进行Hash-Query、Extract-Partial-Private-Key-Query、 Delegate-Query、CLC-PEKS-Query和Trapdoor-Query。
(5)猜测:AⅡ输出β′∈{0,1}作为猜测值。若b′=b,则AⅡ在Game 4中获胜。
(2)Extract-Partial-Private-Key:KGC执行:
(4)Set-Private-Key:云服务器输入秘密值xCS和部分私钥DCS,设置其私钥为SkCS=(xCS,DCS);授权服务器输入秘密值xDS和部分私钥DDS,设置其私钥SkDS=(xDS,DDS);数据属主输入秘密值xDO和部分私钥DDO,设置其私钥SkDO=(xDO,DDO);数据用户输入秘密值xUS和部分私钥DUS,设置其私钥SkUS=(xUS,DUS)。
(5)Set-Public-Key:
①云服务器计算公钥PkCS=gxCS。
②授权服务器计算公钥PkDS=gxDS。
③数据属主计算公钥PkDO=gxDO。
④数据用户计算公钥PkUS=gxUS。
(6)CLC-PEKS:输入公共参数cp、数据用户的公钥PkUS、云服务器的公钥PkCS、授权服务器的公钥PkDS和明文关键词w,数据属主利用其私钥SkDO执行以下步骤(其中对关键词wi(1≤i≤m)生成密文关键词索引C):
②将关键词密文索引C={C1,C2,C3}上传至云服务器。
(7)Trapdoor:输入公共参数cp、数据用户的私钥SkUS、云服务器的公钥PkCS、明文关键词Ωwj(1≤j≤t),数据用户执行以下步骤生成关键词搜索凭证:
②将Tw=(T1,T2)发送给云服务器。
(8)Verify1:对收到的密文C和陷门信息Tw,云服务器首先利用自身秘密值xCS验证数据属主的身份,若等式C3·e(T2xCS,C1)=e(T′1xCS,C1)成立,其中T′1=T1/T2xCS,则计算C′0=C2/C1xCS,返回(C′0,C1)给授权服务器;否则,返回“0”。
(1)通过数据属主计算的对称密钥k,从而验证数据用户计算的对称密钥k的正确性:
(2)云服务器利用自身秘密值验证数据属主身份,通过数据属主发送的密文索引与系统公开参数进行身份验证:
e(T′1xCS,C1)=e(H(k,w)xCSgtxCS,gr)=
e(H(k,w)xCS,gr)e(gtxCS,gr)=
e(H(k,w),grxCS)e(gtxCS,gr)=
e(H(k,w),grxCS)e(gtxCS,gr)=C3·e(T2xCS,C1)
(3)授权服务器根据数据用户的授权信息,利用自身秘密值对数据用户进行验证:
(4)验证关键词的正确性:
①云服务器利用自身秘密值对数据属主上传的关键词密文索引计算C′0:
定理1若敌手AⅠ与AⅡ在随机预言模型下以不可忽略的优势分别赢得Game 1和Game 2,则挑战者F就能以不可忽略的概率解决BDDH问题。
引理1若BDDH问题困难,则本文提出的方案就能抵挡AⅠ类敌手的攻击,满足密文不可区分性。
证明(1) 初始化:F执行Setup算法生成公开参数cp={G1,GT,e,q,g,H,H1,H2,Ppub},其中Ppub=ga。
(2)阶段1:AⅠ可以进行以下询问:
①H-Query:F维护表LH,当F接收AⅠ对H(k,w)的询问时,F选取H∈G1作为回答的结果,并将该结果添加到表LH。
③H2-Query:F维护初始为空的表L2,当AⅠ对关键词w执行H2询问时,F随机选择h2∈G1作为回答结果。
⑥Replace-Public-Key-Query:对IDi的公钥进行更换询问时,F把Pki换成Pk′i,并把表LP中的元组(IDi,xi,Pki)替换成(IDi,⊥,Pk′i)。
(4)阶段2:AⅠ可以进行如同阶段1的多项式询问。
(5)猜测:AⅠ输出β′∈{0,1}作为猜测值。
□
引理2若BDDH问题困难,则本文提出的方案就能抵挡AⅡ类敌手的攻击,满足密文不可区分性。
证明(1)初始化:F运行Setup算法,生成系统公开参数cp={G1,GT,e,q,g,H,H1,H2,Ppub},其中Ppub=gs。
(2)阶段1:AⅡ可以进行以下询问:
①H-Query:F维护初始为空的表LH,当F收到AⅡ对H(k,w)的询问时,F选取H∈G1作为回答结果,并将该结果添加到表LH。
③H2-Query:F维护初始为空的表L2,当AⅡ对关键词w执行H2询问时,F随机选择h2∈G1作为回答结果。
(4)阶段2:AⅡ可以进行如同阶段1的多项式询问。
(5)猜测:AⅡ输出β′∈{0,1}作为猜测值。
□
定理2若敌手AⅠ与AⅡ在随机预言模型下以不可忽略的优势分别赢得Game 3和Game 4,则挑战者F就能以不可忽略的概率解决BDDH问题。
引理3若BDDH问题困难,则本文提出的方案就能抵挡AⅠ类敌手的攻击,满足陷门不可区分性。
证明(1)初始化:F运行Setup算法,生成系统公开参数cp={G1,GT,e,q,g,H,H1,H2,Ppub},其中Ppub=ga。
(2)阶段1:AⅠ可以进行以下询问:
①H-Query:F维护初始为空的表LH,当F接收AⅠ对H(k,w)的询问时,F选取H∈G1作为回答结果,并将该结果添加到表LH。
③H2-Query:F维护初始为空的表L2,当AⅠ对关键词w执行H2询问时,F随机选择h2∈G1作为回答结果。
⑥Replace-Public-Key-Query:对IDi的公钥进行替代询问时,F将Pki替换成Pk′i,同时将表LP中的元组(IDi,xi,Pki)替换成(IDi,⊥,Pk′i)。
(4)阶段2:AⅠ可以进行如同阶段1的多项式询问。
□
引理4若BDDH问题困难,则本文提出的方案就能抵挡AⅡ类敌手的攻击,满足陷门不可区分性。
证明(1)初始化:F运行Setup算法,生成系统公开参数cp={G1,GT,e,q,g,H,H1,H2,Ppub},其中Ppub=gs。
(2)阶段1:AⅡ可以进行以下询问:
①H-Query:F维护初始为空的表LH,当F接收AⅡ对H(k,w)的询问时,F随机选择H∈G1作为结果,并将该结果添加到表LH。
③H2-Query:F维护初始为空的表L2,当AⅡ对关键词w执行H2询问时,F随机选择h2∈G1作为该询问的回答结果值。
(4)阶段2:AⅡ可以进行如同阶段1的多项式询问。
□
首先对本文方案与文献[12,15,17]的方案进行功能对比,结果如表1所示。与文献[12]的方案相比,本文方案在满足数据用户对授权服务器进行授权以验证密文数据的有效性时,授权服务器通过授权信息可以验证数据用户身份的真实性的情况下,同时支持密文索引和陷门搜索凭证在公开信道中传输。与文献[15]的方案相比,本文方案满足云服务器可以验证数据属主的身份,授权服务器验证数据用户身份的真实性,同时支持密文索引与陷门搜索凭证在公开信道中传输。相较于文献[17]的方案,本文方案支持云服务器对数据属主的身份验证。
Table 1 Comparison of functions表1 功能比较
通过数值理论分析,将本文方案与文献[15,17]的方案在加密时间、陷门生成时间、测试阶段进行比较,结果如表2所示。
Table 2 Comparison of computational of efficiency表2 计算效率比较
表2中,P为双线性对运算,E为指数运算,M为点乘运算。本文方案与文献[15,17]的方案相比,在加密算法中,文献[15,17]的方案计算效率高于本文方案的,但是本文方案数据属主需要对密文索引进行签名,可以防止数据属主的抵赖行为;在陷门生成算法中,本文方案在满足陷门搜索凭证在公开信道中传输的同时计算效率较高;在测试1算法中,本文方案在满足云服务器可以对数据属主身份验证的同时计算效率较高;在测试2算法中,本文方案在满足授权服务器对数据用户身份真实性验证的同时计算效率较高。
利用双线性对包PBC(Pairing-Based Cryptography library)对本文所提方案在加密算法和陷门生成算法与文献[15,17]的方案进行实验验证。加密算法中取关键词个数分别为1,50,100,300,500,700,900,1000进行加密,仿真结果如图2所示;陷门算法中,取关键词个数为1,5,10,20,40,60,80,100进行陷门搜索凭证生成,仿真结果如图3所示。
在加密算法中,本文方案的计算效率不高,但是数据属主需要对密文索引进行签名,可以让云服务器验证数据属主的身份,从而保证数据属主身份的真实性。在陷门生成算法中,本文方案在满足陷门不可区分性的同时,计算效率高于文献[15,17]的方案。
Figure 2 Experimental results of encryption algorithms图2 加密算法实验结果
Figure 3 Experimental results of trapdoor generation algorithm图3 陷门生成算法实验结果
本文提出了具有高效授权的无证书公钥认证可搜索加密方案,该方案中数据属主利用自身私钥对上传的关键词进行签名,将签名与关键词密文索引上传到云服务器,云服务器利用数据属主的签名可以验证数据属主的身份;数据用户对授权服务器授权,授权服务器利用数据用户的授权信息验证数据用户身份真实性的同时对密文执行有效验证。数据属主与数据用户利用云服务器的公钥生成密文索引和陷门搜索凭证,可以保证密文索引和陷门搜索凭证在公开信道中的传输安全。数据属主采用对称密钥对关键词加密,合法的数据用户在生成搜索凭证时,利用自身私钥也可以计算出相同的对称密钥,因此,数据用户可以对文件进行解密。由于本文方案的加密算法中数据属主需对上传的关键词进行签名,增加了加密算法的计算开销,但是,本文方案中的陷门算法以及测试算法比文献[15,16]方案的高效,同时本文方案还可以验证数据属主的身份。因此,下一步的研究重点是在满足各种功能的同时,提高加密算法的计算效率。