Outsourced Attribute-Based Encryption Scheme with Policy Updating and Verifiable Ciphertext
-
摘要:
属性基加密提供了全新的基于密码学的访问控制方案,适用于多用户数据共享场景,但由于加密阶段和访问策略更新过程的计算和通信开销较大,且现有的外包属性基加密方案大多数都没有提供面向数据拥有者的密文正确性验证方法,很大程度上限制了属性基加密的实际应用. 针对上述问题,提出了一种支持动态策略更新和即时验证密文正确性的属性基外包加密方案,能够在不可信云环境下有效地保护数据的隐私性. 方案根据外包加密原理设计策略更新过程,只需要完成少量计算即可生成更新密钥. 利用双线性对的运算特性和解密运算结构设计密文验证算法,通过引入验证转换密钥使密文验证效率明显高于解密运算效率. 方案根据不同的云环境模型设计了高效验证算法和严格验证算法,分别适用于诚实且好奇和不可信的云环境中. 方案在标准模型下被证明满足选择明文攻击安全性. 性能分析和效率对比表明,该方案的本地加密、策略更新和密文验证的计算量都有所减少,使得整体方案较现有方案更加轻量化,适用于资源受限设备的数据共享场景.
Abstract:Attribute-based encryption is a new access control scheme based on cryptography, which is suitable for data sharing. However, the large computational and communication costs of encryption and access policy updating limit the practical application of attribute-based encryption. Moreover, most of proposed outsourcing ABE schemes do not provide a ciphertext correctness verification method for data owners. Thus, an outsourced ABE scheme with dynamic policy updating and real-time verification of ciphertext correctness is proposed to further protect data privacy in an untrusted cloud environment. In the scheme, the design of policy updating references outsourced encryption, which reduces the computational cost of generating update key. The design of ciphertext correctness verification algorithm refers to decryption operation and introduces verification transformation key to make ciphertext verification more efficient. According to different cloud environment models, efficient verification algorithm and strict verification algorithm are designed, which are suitable for honest but curious cloud environment and untrustworthy cloud environment respectively. The scheme is secure against chosen plaintext attack under the standard model. Performance analysis and efficiency comparison show that the computation of local encryption, policy updating and ciphertext verification are reduced, and the scheme is more lightweight, which is suitable for the application of computation-constrained devices in access control scenarios.
-
随着知识经济和信息时代的到来,云计算成为大数据时代的关键技术,研究具备访问控制能力的加密方案具有良好的应用前景. 基于属性的加密(attribute-based encryption,ABE)体制由Sahai等人[1]在2005年提出,通过模糊身份的一对多加解密可以实现灵活细粒度的访问控制. 数据使用者的身份信息被一组描述性的属性代替,只有当用户的属性集合与数据的访问结构相匹配时,才能解密出明文. 根据密文的生成方式不同,属性基加密方案可分为密钥策略加密(KP-ABE)和密文策略加密(CP-ABE). KP-ABE由Goyal等人[2]提出,密钥对应访问结构,密文对应属性集合,其访问结构采用访问树,具有更强的逻辑表达性,因此被广泛采用. CP-ABE方案由Bethencourt等人[3]在2008年提出,其密文对应访问结构,密钥对应属性集合,即用访问结构加密、用属性集合解密. 2008年,Waters[4]将线性秘密共享技术引入了属性基方案中,提出了更加灵活的访问结构表达方式,并提高了系统运行效率.
在属性基加密方案中,加解密计算代价会随着属性数量和访问策略的复杂度线性增长,这无疑给终端设备带来庞大的计算负担,严重限制了属性基加密算法在资源受限设备上的应用. 为了解决加解密计算量过大的问题,Green等人[5]提出了属性基外包解密方案. Li等人[6]提出了外包加密方案,该方案借助Map Reduce模型实现,但是用户在加密时仍然需要进行大量的模幂运算. Zhang等人[7]提出的外包加密方案中借助了2个不同的服务器完成外包计算,数据拥有者结合2个服务器生成的随机数作为陷门进行加密,该方案的外包计算效率有所提高,但需要确保2个服务器之间不能进行合谋,否则将导致加密陷门泄露. 文献[8]对文献[7]方案进行了改进,提出了混合访问策略,但是仍然难以抵抗服务器和数据使用者的合谋攻击. 文献[9]的外包方案有效减少了用户端的幂运算,用户只需执行一定数量的乘法运算,文献[10]在安全性方面对该方案进行了完善.
在外包计算过程中,负责计算的云服务器可能因为“偷懒”或受到敌手攻击,影响计算结果的准确性,因此数据拥有者需要具备验证外包加密密文正确性的能力. 文献[8–10]只设计了解密阶段密文正确性的检测算法,没有设计面向数据拥有者的检测算法,导致外包加密服务器的安全风险检测滞后. 文献[11]给出了一种针对数据拥有者的外包密文验证方法,但验证计算量很大. 文献[12]将模幂指数安全外包算法应用到属性基加密方案中,能够实现细粒度的外包计算,并且将外包加密和密文验证合并,但缺点是引入了过多冗余计算和交互,导致方案效率降低. 文献[13]将指数批量打包验证算法用于密文验证,该算法仅适用于幂次结构中底数相同而指数不同的形式,若底数不同则会增加大量指数运算,此类指数打包验证算法不适用于部分小属性集的属性基方案. 文献[14–15]提出的可验证外包加密方案架构中,设置了第三方可信实体作为外包加密密文的检测机构,但密文检测服务器易成为系统安全和效率瓶颈. 文献[16]提出基于BLS短签名的可验证外包方案,但密文的正确性需要数据使用者在解密和验签之后才能验证. 文献[17]给出一个基于边缘节点的外包解密方案,但密文的正确性验证仍需数据使用者完成. 2022年,Hahn等人[18]提出了外包解密验证的2种方案,使用验证密钥以防止伪造和重用有效承诺,但同样需要数据使用者完成验证. 所以,文献[16–18]也不能实现数据拥有着对密文的正确性检测.
除了上述外包计算结果的验证需求之外,数据拥有者在将数据存储到云端后,可能会动态更改密文中的访问策略,以进一步保护数据的隐私和安全. 然而,数据拥有者对云端密文进行访问策略更新时,往往存在计算开销高、存储消耗大、更新后的密文难以验证等问题. 为了解决计算和存储效率问题,可以利用初始加密生成的密文参数来更新访问策略[11,19-23]. 2014年,Yang等人[11]提出了支持密文访问策略更新的属性基加密方案,还提出了更新后密文的正确性检测算法,云服务器根据用户生成的更新密钥和新的访问结构,对旧密文进行重新计算从而完成访问策略更新. 仿真实验表明,相较于重新加密明文的方案,该策略更新方案降低了20%~50%的计算量,但在策略更新和密文检测的计算效率上还有进一步提升的空间. 文献[19]将半策略隐藏与策略更新方案相结合,避免了在策略更新时泄露策略中的敏感信息. Sethi等人[21]引入了密钥可追踪机制,能够检测到参与泄露解密密钥的恶意用户. 文献[23]引入匿名密钥分发协议,提出了一种支持策略更新的多机构方案. 在文献[11]的基础上,后续研究[19-23]虽在安全性上进行了改进,但更新密钥的生成阶段仍然保留了大部分指数运算,导致其策略更新效率难以提升,并且这些方案均未给出更新后密文的正确性检测方法.
针对上述问题,本文提出一个支持策略更新和即时密文验证的高效属性基外包加密方案. 首先,将策略更新与外包加密相结合,通过拆分外包参数,将策略更新阶段的指数运算安全地外包给云端,数据拥有者仅需付出少量代价就生成密文更新密钥. 其次,针对外包加密密文和策略更新后密文的正确性检测效率和精度问题,设计了面向数据拥有者的密文正确性即时验证算法(包括高效验证和严格验证2个算法),该算法将解密阶段的部分运算结构和双线性对的运算特性进行结合,同时引入验证转换密钥以简化运算过程,不需要在线交互,也不依赖可信第三方,使得数据拥有者在无需恢复秘密值的前提下具备高效的密文验证能力和严格的错误检查能力,使之能及时发现云服务器在外包加密和密文更新过程中的无意或有意的密文构造错误,提高了可验证外包加密的整体安全性和效率. 经验证,所提方案在标准模型下被证明满足选择明文攻击安全性,并且在本地加密、策略更新和密文验证效率方面较现有方案有所提升,同时对密文组件结构类似的属性基方案都具有适用性.
1. 相关知识
1.1 双线性对
令G和GT为2个阶是素数p的乘法循环群,g为群G的生成元,双线性映射e:G×G→GT. 双线性映射e存在3个属性.
1)双线性. 对于任意元素u,v∈G和a,b∈Zp,有e(ua,vb)=e(u,v)ab.
2)非退化性. e(g,g)≠1.
3)可计算性. 对于任意元素u,v∈G,存在有效算法计算e(u,v).
1.2 访问结构
令{P1,P2,…,Pn}为参与方集合. 令集合A⊆2{P1,P2,…,Pn}是单调的,即满足对于任意集合B,C,若B∈A并且B⊆C,那么C∈A. 若访问结构(集合)A是{P1,P2,…,Pn}的非空子集,即A⊆2{P1,P2,…,Pn}∖∅,则集合A是授权集合,而不包含A的集合是非授权集合.
1.3 线性秘密共享(LSSS)
若一个在集合P上的秘密共享方案是线性的,则需要满足2个条件:
1)集合中的每个元素的共享份额可以形成一个Zp上的向量.
2)存在一个l×n份额的生成矩阵 \boldsymbol{M} ,对于所有的 i=\mathrm{1,2},… ,l ,矩阵 \boldsymbol{M} 的第 i 行表示集合中的一个元素. 定义一个映射函数 \rho \left(i\right) ,可以将矩阵 \boldsymbol{M} 的任意一行映射为集合中的一个元素. 选择一个向量 \boldsymbol{v}=\left(s,{r}_{2},… ,{r}_{n}\right) ,其中 s\in {\mathbb{Z}}_{p} 表示被共享的秘密,随机选取 {r}_{2},{r}_{3},… ,{r}_{n}\in {\mathbb{Z}}_{p} ,则 {\boldsymbol{M}}_{i}\boldsymbol{v} 为秘密份额,其中 {\boldsymbol{M}}_{i} 为矩阵 \boldsymbol{M} 的第 i 行.
线性秘密共享方案具有秘密线性重构功能. 假设访问结构为 A ,令任意属性集合 S\in A ,定义集合 I= \left\{i:\rho \left(i\right)\in S\right\} 且 I\subset \left\{\mathrm{1,2},… ,l\right\} ,若 \left\{{\lambda }_{i}\right\} 是共享秘密值 s 的有效份额,那么存在常数 {{\omega }_{i}\in {\mathbb{Z}}_{p}} ,i\in I 满足\displaystyle\sum_{i \in I} {{\omega _i}{\lambda _i} = s} .
1.4 BDHE假设(q-bilinear Diffie-Hellman exponent assumption)
根据安全参数,选择阶为素数 p 的群 G , g 为群 G 的生成元,存在双线性映射 e:G\times G\to {G}_{T} . 随机选择数 a,s\in {\mathbb{Z}}_{p} , T\in {G}_{T} . 若敌手给定 \boldsymbol{y}=\big(g,{g}^{a},… ,{g}^{{a}^{q}},{g}^{{a}^{q+2}},… , {g}^{{a}^{2q}},{g}^{s}\big) ,使敌手判断 {e\left(g,g\right)}^{{a}^{q+1}s}=T 是否成立.
如果对于任何多项式时间的敌手算法 \mathcal{B} 区分 \big(\boldsymbol{y},{e\big(g,g\big)}^{{a}^{q+1}s}\big) 和 \left(\boldsymbol{y},T\right) ,所具备的优势 {Adv}_{\mathcal{B}}=\big|Pr\big[B\big(\boldsymbol{y}, {e\big(g,g\big)}^{{a}^{q+1}s}\big)=1\big]-Pr\big[B\big(\boldsymbol{y},T\big)=1\big]\big|\ge \epsilon 是可忽略的,则解决群 G 上的q-BDHE问题是困难的.
2. 算法定义与安全模型
2.1 算法定义
本文方案包括12个算法,分别为系统初始化 S etup(k,U) 、属性密钥生成 KeyGen(PP,MS K,S) 、加密 Encrypt(PP,m,A) 、解密 Decrypt(CT,S K) 、加密转换密钥生成 ET KGen(PP,U) 、本地加密 {Encrypt}_{\mathrm{L}\mathrm{o}\mathrm{c}\mathrm{a}\mathrm{l}}(PP,m,A, ET K) 、外包加密 {Encrypt}_{\mathrm{O}\mathrm{u}\mathrm{t}\mathrm{s}\mathrm{o}\mathrm{u}\mathrm{r}\mathrm{c}\mathrm{e}}(PP,OP) 、更新密钥生成 U pdateKeyGen \left(PP,A,{A'},ET K\right) 、密文更新 CTU pdate (PP,A,{A'},U K, CT ) 、验证转换密钥生成 VT KGen(PP,U) 、验证 V erify(PP,CT) 、严格验证 {V erify}_{\mathrm{s}\mathrm{t}\mathrm{r}\mathrm{i}\mathrm{c}\mathrm{t}}(PP,CT,VT K) . 具体算法定义有:
1)系统初始化 S etup(k,U)\to \left(PP,MS K\right) . 算法由密钥生成中心执行,输入安全参数 k 和全体属性集合 U ,输出系统公共参数 PP 和系统主密钥 MS K .
2)属性密钥生成 KeyGen(PP,MS K,S)\to S K . 算法由密钥生成中心执行,输入公共参数 PP 、系统主密钥 MS K 、用户属性集合 S ,输出用户属性密钥 S K .
3)加密 Encrypt(PP,m,A)\to CT . 算法由数据拥有者执行,输入公共参数 PP 、明文 m 、访问结构 A ,输出密文 CT .
4)解密 Decrypt(CT,S K)\to m . 算法由数据使用者执行,输入密文 CT 、属性密钥 S K ,输出明文 m .
5)加密转换密钥生成 ET KGen(PP,U)\to ET K . 算法由数据拥有者执行,输入公共参数 PP 、全体属性集合 U ,输出加密转换密钥 ET K .
6)本地加密 {Encrypt}_{\mathrm{L}\mathrm{o}\mathrm{c}\mathrm{a}\mathrm{l}}\,(PP,\,m,\,A,\,ET K)\to\, ({CT}_{\mathrm{p}\mathrm{a}\mathrm{r}\mathrm{t}}, OP ) . 算法由数据拥有者执行,输入公共参数 PP 、明文 m 、访问结构 A 、加密转换密钥 ET K ,输出部分密文 {CT}_{\mathrm{p}\mathrm{a}\mathrm{r}\mathrm{t}} 和外包参数 OP .
7)外包加密 {Encrypt}_{\mathrm{O}\mathrm{u}\mathrm{t}\mathrm{s}\mathrm{o}\mathrm{u}\mathrm{r}\mathrm{c}\mathrm{e}}(PP,OP)\to {CT}_{\mathrm{o}\mathrm{u}\mathrm{t}} . 算法由外包加密服务执行,输入公共参数 PP 、外包参数 OP ,输出密文组件 {CT}_{\mathrm{o}\mathrm{u}\mathrm{t}} .
8)更新密钥生成 U pdateKeyGen\left(PP,A,{A'},ET K\right)\to U K . 算法由数据拥有者执行,输入公共参数 PP 、旧的访问结构为 A ,新的访问结构 {A'} ,加密转换密钥 ET K ,输出更新密钥 U K .
9)密文更新 CTU pdate\left(PP,A,{A'},U K,CT\right)\to {CT'} . 算法由策略更新服务执行,输入公共参数 PP 、旧的访问结构为 A ,新的访问结构 {A'} 、更新密钥 U K 、旧密文 CT ,输出新密文 {CT'} .
10)验证转换密钥生成 VT KGen(PP,U)\to VT K . 算法由数据拥有者执行,输入公共参数 PP 、全体属性集合 U ,输出验证转换密钥 VT K .
11)验证 V erify(PP,CT)\to Result . 算法由数据拥有者执行,输入公共参数 PP 、密文 CT ,输出验证结果 Result .
12)严格验证 {V erify}_{\mathrm{s}\mathrm{t}\mathrm{r}\mathrm{i}\mathrm{c}\mathrm{t}}(PP,CT,VT K)\to Result . 算法由数据拥有者执行,输入公共参数 PP 、密文 CT 、验证转换密钥 VT K ,输出验证结果 Result .
2.2 安全模型
本文方案的安全模型是选择明文攻击下的不可区分性(indistinguishability against under chose-plaintext-attack,IND-CPA)游戏,游戏中包含一个挑战者和一个敌手,其中挑战者需要模拟系统运行并回答敌手的询问,具体游戏模型为:
1)Init. 敌手提交要挑战的访问结构 \left({\boldsymbol{M}}^{\mathrm{*}},{\rho }^{\mathrm{*}}\right) 给挑战者.
2)Setup. 挑战者运行系统初始化 S etup 算法,生成公共参数 PP ,并发送给敌手.
在Init阶段中,敌手向挑战者发起私钥请求,但要求私钥对应的属性集合 S 不能满足访问结构 \left({\boldsymbol{M}}^{\mathrm{*}},{\rho }^{\mathrm{*}}\right) .
3) Challenge. 敌手发送2个等长的明文消息 {\mathcal{M}}_{0} , {\mathcal{M}}_{1} 给挑战者,挑战者随机选择 \beta \in \left\{\mathrm{0,1}\right\} ,并使用旧的访问结构 \left({\boldsymbol{M}}^{\mathrm{*}},{\rho }^{\mathrm{*}}\right) 对明文消息 {\mathcal{M}}_{\beta } 运行 Encrypt 算法进行加密,得到加密后的密文 {CT}^{*} .
Setup阶段重复Init阶段.
4)Guess. 敌手输出对 \beta 的猜测 {\beta' }\in \left\{\mathrm{0,1}\right\} . 如果存在任意多项式时间的攻击者攻击IND-CPA游戏的优势 \epsilon=\left|Pr\left[\beta ={\beta' }\right]-\dfrac{1}{2}\right| 是可忽略的,则本文方案应对选择明文攻击是安全的.
3. 方案构造
本文方案共包含4个部分共12个算法,其中系统初始化、属性密钥生成、加密、解密等算法为常规部分;加密转换密钥生成、本地加密、外包加密等算法为外包加密部分;更新密钥生成、密文更新等算法为策略更新部分;验证转换密钥生成、验证、严格验证等算法为密文验证部分. 在外包加密部分,数据拥有者将随着访问结构大小而线性增长的指数计算需求交给外包加密服务完成. 在策略更新部分,结合外包加密算法结构,根据访问结构中出现的情况对属性做了区分,进一步降低了策略更新部分的计算量. 在密文验证部分分别提供了高效的验证算法和准确的严格验证算法,可以由用户根据自身需求选择算法. 方案具体算法构造如下:
1)系统初始化 S etup(k,U) . 输入安全参数 k 和全体属性集合 U=\{\mathrm{1,2},… ,u\} . 生成阶为素数 p 的乘法循环群 {G}_{1} ,满足双线性映射 e:{G}_{1}\times {G}_{1}\to {G}_{2} . {G}_{1} 的生成元为 g . 随机选择 \alpha ,a\in {\mathbb{Z}}_{p}^{*} , {h}_{1},{h}_{2},… ,{h}_{u}\in {G}_{1} . 输出系统公共参数 PP=({G}_{1},{G}_{2},g,{e\left(g,g\right)}^{\alpha },{g}^{a},{h}_{1},{h}_{2},… ,{h}_{u}) ,系统主密钥 MS K=(\alpha ,a,{g}^{\alpha }) .
2)属性密钥生成 KeyGen\left(PP,MS K,S\right) . 定义 S 为用户属性集合,且满足 S\subseteq U . 随机选择 t\in {\mathbb{Z}}_{p} ,对于所有属性 x\in S ,计算属性密钥 S K=\big\{K={g}^{\alpha }{g}^{at},{K}_{0}={g}^{t}, {K}_{x}={h}_{x}^{t}\big\} .
3)加密 Encrypt\left(PP,m,A\right) . 明文消息 m\in {G}_{2} ,访问结构 A=\left(\boldsymbol{M},\rho \right) ,其中 \boldsymbol{M} 是 l\times n 的矩阵而 \rho 是将矩阵 \boldsymbol{M} 中的每一行映射到一个属性的映射函数. 随机选择 s\in {\mathbb{Z}}_{p} 作为秘密值,随机选择向量 \boldsymbol{v}={(s,{r}_{2},{r}_{3},… ,{r}_{n})}^{\mathrm{T}}\in {\mathbb{Z}}_{p}^{n} . 计算秘密份额 {\lambda }_{i}={\boldsymbol{M}}_{i}\cdot \boldsymbol{v} ,其中 i\in \{\mathrm{1,2},… ,l\} , {\boldsymbol{M}}_{i} 表示矩阵 \boldsymbol{M} 的第 i 行. 计算密文 CT=\big(C=m\cdot {e(g,g)}^{\alpha s}, {C'}={g}^{s},{\big({C}_{i}={g}^{a{\boldsymbol{\lambda }}_{i}}{h}_{\rho (i)}^{-s}\big)}_{i\in \{\mathrm{1,2},… ,l\}}\big) .
4)解密 Decrypt\left(CT,S K\right) . 令属性集合 S 对应属性密钥 S K ,假设属性集合 S 满足访问结构. 令 I\subset \{1, 2,… ,l\} ,定义集合 I=\{i:\rho \left(i\right)\in S\} . 令常数集合 { {\omega }_{i}\in {\mathbb{Z}}_{p} } ,i\in I ,当 {\lambda }_{i} 是矩阵 \boldsymbol{M} 的有效份额时,满足\displaystyle\sum_{i \in I} {{\omega _i}{\lambda _i} = s} . 计算\dfrac{{e(C',K)}}{{\displaystyle\prod_{i \in I} {{{(e({C_i},{K_0})e(C',{K_x}))}^{{\omega _i}}}} }} = e{(g,g)^{\alpha s}},得到明文 m = \dfrac{C}{{e(g,g)}^{\alpha s}} .
5)加密转换密钥生成 ET KGen\left(PP,U\right) . 随机选择 \gamma \in {\mathbb{Z}}_{p} ,对于所有属性的 x\in U ,计算加密转换密钥 ET K=(\gamma ,{{ET K}_{x}=h}_{x}^{\gamma }) .
6)本地加密 {Encrypt}_{\mathrm{L}\mathrm{o}\mathrm{c}\mathrm{a}\mathrm{l}}\left(PP,m,A,ET K\right) . 随机选择 s\in {\mathbb{Z}}_{p} 作为秘密值,随机选择向量 \boldsymbol{v}={(s,{r}_{2},{r}_{3},… ,{r}_{n})}^{\mathrm{T}}\in {\mathbb{Z}}_{p}^{n} . 计算秘密份额 {\lambda }_{i}={\boldsymbol{M}}_{i}\cdot \boldsymbol{v} ,其中 i\in \{\mathrm{1,2},… ,l\} , {\boldsymbol{M}}_{i} 表示矩阵 \boldsymbol{M} 的第 i 行. 计算部分密文 {CT}_{\mathrm{p}\mathrm{a}\mathrm{r}\mathrm{t}}=(C=m\times {e\left(g,g\right)}^{\alpha s},{C'}={g}^{s}) . 随机选择 d\in {\mathbb{Z}}_{p} ,计算外包参数 OP= \big(-s-\gamma ,{\big({\lambda }_{i}-d,{g}^{ad}{ET K}_{\rho \left(i\right)}\big)}_{i\in \{\mathrm{1,2},… ,l\}}\big)=\big(-s-\gamma ,\big({\lambda }_{i}-d,{g}^{ad} {h}_{\rho \left(i\right)}^{\gamma }\big)_{i\in \{\mathrm{1,2},… ,l\}}\big) .
7)外包加密 {Encrypt}_{\mathrm{O}\mathrm{u}\mathrm{t}\mathrm{s}\mathrm{o}\mathrm{u}\mathrm{r}\mathrm{c}\mathrm{e}}\left(PP,OP\right) . 根据公共参数 PP 和外包参数 OP ,对于所有 i\in \{\mathrm{1,2},… ,l\} ,计算 {C}_{i}= {\left({g}^{a}\right)}^{{\boldsymbol{\lambda }}_{i}-d}\times {g}^{ad}{h}_{\rho \left(i\right)}^{\gamma }\times {h}_{\rho \left(i\right)}^{-s-\gamma }={g}^{a{\boldsymbol{\lambda }}_{i}}{h}_{\rho \left(i\right)}^{-s} ,得到密文组件 {CT}_{\mathrm{o}\mathrm{u}\mathrm{t}}= {\left({C}_{i}\right)}_{i\in \{\mathrm{1,2},… ,l\}} .
8)更新密钥生成 U pdateKeyGen\left(PP,A,{A'},ET K\right) . 旧的访问结构为 A=\left(\boldsymbol{M},\rho \right) ,更新为新的访问结构 {A'}=\left({\boldsymbol{M}'},{\rho' }\right) ,其中 {\boldsymbol{M}'} 为新的 {l'}\times {n'} 份额生成矩阵. 旧的随机向量为 \boldsymbol{v}={(s,{r}_{2},{r}_{3},… ,{r}_{n})}^{\mathrm{T}}\in {\mathbb{Z}}_{p}^{n} ,随机选择新向量 {\boldsymbol{v}'}={(s,{r'_{2}},{r'_{3}},… ,{r'_n})}^{\mathrm{T}}\in {\mathbb{Z}}_{p}^{n} ,其中第一项仍为旧的秘密值 s . 计算新的秘密份额 {\lambda'_j}={\boldsymbol{M}'_{j}}\cdot {\boldsymbol{v}'} ,其中 j\in \{\mathrm{1,2},… ,{l'}\} , {\boldsymbol{M}'_{j}} 表示矩阵 {\boldsymbol{M}'} 的第 j 行. 对于 j\in \{\mathrm{1,2},… ,{l'}\} ,计算更新密钥 U K . 若属性 {\rho' }\left(j\right) 在旧的访问结构 A 中出现过(类型1),则计算 {U K}_{j,i}={\lambda'_j}-{\lambda }_{i} ;若属性 {\rho' }\left(j\right) 在旧的访问结构 A 中未出现过(类型2),则计算 {U K}_{j}=\left({{U K}_{j}^{\left(1\right)}}= {\lambda'_j}- d,{{U K}_{j}^{\left(2\right)}}=-s-\gamma ,{{U K}_{j}^{\left(3\right)}}={g}^{ad}{h}_{\rho \left(j\right)}^{\gamma }\right) .
9)密文更新 CTU pdate\left(PP,A,{A'},U K,CT\right) . 对于 j\in \{1, 2,… ,{l'}\} ,计算新密文 {CT'} . 若属性 {\rho' }\left(j\right) 在旧的访问结构 A 中出现过(类型1),计算 {C'_j}={C}_{i}\cdot {\left({g}^{a}\right)}^{{U K}_{j,i}}={g}^{a{\lambda'_j}}{h}_{\rho \left(j\right)}^{-s} ;若属性 {\rho' }\left(j\right) 在旧的访问结构 A 中未出现过(类型2),计算 {C'_j}={\left({g}^{a}\right)}^{{{U K}_{j}^{\left(1\right)}}}\times {{U K}_{j}^{\left(3\right)}}\times {h}_{\rho \left(j\right)}^{{{U K}_{j}^{\left(2\right)}}}={g}^{a{\lambda'_j}}\times {h}_{\rho \left(j\right)}^{-s} . 最终,新密文 {CT'} 形式为 {CT'}=\big({C}_{1}=m\times {e\left(g,g\right)}^{\alpha s},{C}_{2}={g}^{s},\big({C'_j}={g}^{a{\lambda'_j}}\times {h}_{\rho \left(j\right)}^{-s}\big)_{i\in \{\mathrm{1,2},… ,{l'}\}}\big) .
外包加密服务器处于不可信的云环境中,可能存在“懒惰”的情况,即外包加密服务器可能不会严格执行算法,只执行部分计算或者故意返回错误的结果. 外包加密服务器也可能由于程序漏洞、遭受网络入侵等原因,没有计算出正确的结果. 如果数据拥有者无法对外包加密密文进行正确性检测,会导致错误及不安全的数据共享. 因此,本文提出了2个验证算法,使数据拥有者有验证外包加密计算正确性的能力. 验证算法 V erify 为高效验证算法,能够以极少的计算代价,确保外包加密服务器的计算没有故意出现错误. 如果外包加密服务器故意制造错误结果,要使故意制造的错误结果能够通过 V erify 算法的验证,其付出的计算代价和遵循算法得到正确密文结果的计算代价是一样的,即云服务器不能以较少的代价制造满足要求的错误结果,进而防止服务器倾向于“偷懒”. 而针对云服务器的恶意出错问题,严格验证算法 {V erify}_{\mathrm{s}\mathrm{t}\mathrm{r}\mathrm{i}\mathrm{c}t} 则能够完全检测出来.
10)验证转换密钥生成 VT KGen\left(PP,U\right) . 选择安全参数 \theta ,对于所有的 x\in U ,选择随机数 {b}_{x}\in {\left\{\mathrm{0,1}\right\}}^{\theta } ,计算验证转换密钥 VT K=\left({b}_{x},{VT K}_{x}={h}_{x}^{{b}_{x}}\right) .
11)验证 V erify\left(PP,CT\right) . 根据公共参数 PP 和密文 CT ,计算验证信息 \mathcal{P} = e\Big(\displaystyle\prod_{i \in \{ 1,2,…,l\} } {{C_i},g\Big)} e\Big(C',\displaystyle\prod_{i \in \{ 1,2,…,l\} } {{h_{\rho (i)}}\Big)} ,若 e{({g^a},g)^{\textstyle\sum\limits_{i \in \{ 1,2,…,l\} } {{\lambda _i}} }} = \mathcal{P} ,则表示验证通过,输出1,否则输出0.
12)严格验证 {V erify}_{\mathrm{s}\mathrm{t}\mathrm{r}\mathrm{i}\mathrm{c}\mathrm{t}}\left(PP,CT,VT K\right) . 验证算法 V erify 无法检验密文组件 {C}_{i} 顺序上的颠倒错误(如:云服务器故意以 {C}_{2},{C}_{1},… 的顺序返回计算结果)、 {C}_{i} 的生成因子 {g}^{a{\lambda }_{i}} 和 {h}_{\rho \left(i\right)}^{-s} 的交换错位(如:云服务器故意返回 {C}_{1}={g}^{a{\lambda }_{1}}{h}_{\rho \left(2\right)}^{-s} ,其中 i 为不同值),所以需要引入验证转换密钥 VT K 和严格验证算法进行验证,需要更高的计算量. 根据公共参数 PP 、密文 CT 和转换密钥 VT K ,计算验证信息 \mathcal{P} = e\Big(\displaystyle\prod_{i \in \{ 1,2,…,l\} } {{C_i},g\Big)} e\Big(C',\displaystyle\prod_{i \in \{ 1,2,…,l\} } {VT{K_{\rho (i)}}\Big) = } e{(g,g)^{a\textstyle\sum\limits_{i \in \{ 1,2,…,l\} } {{\lambda _i}{b_{\rho (i)}}} }} ,若 e{({g^a},g)^{\textstyle\sum\limits_{i \in \{ 1,2,…,l\} } {{\lambda _i}{b_{\rho (i)}}} }} = \mathcal{P} ,则表示验证通过,输出1,否则输出0.
4. 方案分析
4.1 正确性分析
数据拥有者能够利用加密过程中的已知数据 {\boldsymbol{\lambda }}_{i} 和转换密钥 VT K ,通过验证算法 V erify(PP,CT) 和严格验证算法 {V erify}_{\mathrm{s}\mathrm{t}\mathrm{r}\mathrm{i}\mathrm{c}\mathrm{t}}\left(PP,CT,VT K\right) 检测密文的正确性,具体推导过程有:
1)验证算法 V erify(PP,CT)
因为
\begin{split} \mathcal{P}=&e\left(\prod _{i\in \{\mathrm{1,2},… ,l\}}{C}_{i},g\right)e\left({C'},\prod _{i\in \{\mathrm{1,2},… ,l\}}{h}_{\rho \left(i\right)}\right) =\\ &e\left(\prod _{i\in \{\mathrm{1,2},… ,l\}}{g}^{a{\lambda }_{i}}{h}_{\rho \left(i\right)}^{-s},g\right)e\left({g}^{s},\prod _{i\in \{\mathrm{1,2},… ,l\}}{h}_{\rho \left(i\right)}\right) =\\ &e\left(\prod _{i\in \{\mathrm{1,2},… ,l\}}{g}^{a{\lambda }_{i}}\prod _{i\in \{\mathrm{1,2},… ,l\}}{h}_{\rho \left(i\right)}^{-s},g\right) e\left({g}^{s},\prod _{i\in \{\mathrm{1,2},… ,l\}}{h}_{\rho \left(i\right)}\right) =\\ & e\left( {g^{a\textstyle\sum\limits_{i \in \{ 1,2,…,l\} } {{\lambda _i}} }} \left(\displaystyle\prod_{i \in \{ 1,2,…,l\} } {h_{\rho (i)}}\right)^{ - s},g \right)e\left( {g^s},\displaystyle\prod_{i \in \{ 1,2,…,l\} } {{h_{\rho (i)}}} \right) = \\ &e\Bigg({g^{a\textstyle\sum\limits_{i \in \{ 1,2,…,l\} } {{\lambda _i}} }},g\Bigg)= e{(g,g)^{a\textstyle\sum\limits_{i \in \{ 1,2,…,l\} } {{\lambda _i}} }}. \end{split} 由双线性对的性质可知:
e{({g^a},\,g)^{\textstyle\sum\limits_{i \in \{ 1,2,…,l\} } {{\lambda _i}} }} = e{(g,g)^{a\textstyle\sum\limits_{i \in \{ 1,2,…,l\} } {{\lambda _i}} }} ,所以
e{({g^a},g)^{\textstyle\sum\limits_{i \in \{ 1,2,…,l\} } {{\lambda _i}} }} =\mathcal{P} 成立.
从上述推导过程可以看出,本文的高效验证算法 V erify(PP,CT) 不需要转换密钥 VT K ,仅需要输入已知数据 {\lambda }_{i} . 该算法使用与解密算法 Decrypt(CT,S K) 中类似的计算结构进行构造,并用 g 和 {h}_{\rho \left(i\right)} 替换了解密算法中属性密钥 S K 的 {K}_{0},{K}_{x} 参数,使得数据拥有者在无需恢复秘密值 s 的前提下,仅利用 \displaystyle\sum_{i \in \{ 1,2,…,l\} } {{\lambda _i}} 即可完成密文的正确性验证,较已有方案更高效.
2) 严格验证算法 {V erify}_{\mathrm{s}\mathrm{t}\mathrm{r}\mathrm{i}\mathrm{c}t}\left(PP,CT,VT K\right)
因为
\begin{split} \mathcal{P}=& e\left(\prod _{i\in \{\mathrm{1,2},… ,l\}}{{C}_{i}}^{{b}_{x}},g\right)e\left({C'},\prod _{i\in \{\mathrm{1,2},… ,l\}}{VT K}_{\rho \left(i\right)}\right) =\\ &e\left(\prod _{i\in \{\mathrm{1,2},… ,l\}}{\left({g}^{a{\lambda }_{i}}{h}_{\rho \left(i\right)}^{-s}\right)}^{{b}_{\rho \left(i\right)}},g\right)e\left({g}^{s},\prod _{i\in \{\mathrm{1,2},… ,l\}}{h}_{\rho \left(i\right)}^{{b}_{\rho \left(i\right)}}\right) =\\ &e\left(\prod _{i\in \{\mathrm{1,2},… ,l\}}{\left({g}^{a{\lambda }_{i}}\right)}^{{b}_{\rho \left(i\right)}}\prod _{i\in \{\mathrm{1,2},… ,l\}}{\left({h}_{\rho \left(i\right)}^{-s}\right)}^{{b}_{\rho \left(i\right)}},g\right) e\Bigg({g}^{s}, \\ & \prod _{i\in \{\mathrm{1,2},… ,l\}}{h}_{\rho \left(i\right)}^{{b}_{\rho \left(i\right)}}\Bigg) =e\left(\prod _{i\in \{\mathrm{1,2},… ,l\}}{g}^{a{\lambda }_{i}{b}_{\rho \left(i\right)}}\prod _{i\in \{\mathrm{1,2},… ,l\}}{\left({h}_{\rho \left(i\right)}^{{b}_{\rho \left(i\right)}}\right)}^{-s},g\right)\times \\ &e\left({g}^{s},\prod _{i\in \{\mathrm{1,2},… ,l\}}{h}_{\rho \left(i\right)}^{{b}_{\rho \left(i\right)}}\right) =\\ &e\left(\prod _{i\in \{\mathrm{1,2},… ,l\}}{g}^{a{\lambda }_{i}{b}_{\rho \left(i\right)}}{\left(\prod _{i\in \{\mathrm{1,2},… ,l\}}{h}_{\rho \left(i\right)}^{{b}_{\rho \left(i\right)}}\right)}^{-s},g\right)\times\\ & e\left({g}^{s},\prod _{i\in \{\mathrm{1,2},… ,l\}}{h}_{\rho \left(i\right)}^{{b}_{\rho \left(i\right)}}\right) =e\left(\prod _{i\in \{\mathrm{1,2},… ,l\}}{g}^{a{\lambda }_{i}{b}_{\rho \left(i\right)}},g\right) = \\ &e\Bigg({g^{a\textstyle\sum\limits_{i \in \{ 1,2,…,l\} } {{\lambda _i}} {b_{\rho (i)}}}},g\Bigg) = e{(g,g)^{a\textstyle\sum\limits_{i \in \{ 1,2,…,l\} } {{\lambda _i}} {b_{\rho (i)}}}}. \end{split} 由双线性对的性质可知: e{({g^a},g)^{\textstyle\sum\limits_{i \in \{ 1,2,…,l\} } {{\lambda _i}} {b_{\rho (i)}}}} = e{(g,g)^{a\textstyle\sum\limits_{i \in \{ 1,2,…,l\} } {{\lambda _i}} {b_{\rho (i)}}}} ,所以 e{({g^a},g)^{\textstyle\sum\limits_{i \in \{ 1,2,…,l\} } {{\lambda _i}} {b_{\rho (i)}}}} = \mathcal{P} 成立.
本文的严格验证算法 {V erify}_{\mathrm{s}\mathrm{t}\mathrm{r}\mathrm{i}\mathrm{c}\mathrm{t}}\left(PP,CT,VT K\right) 与高效验证算法 V erify(PP,CT) 在输入参数上的区别在于使用了额外的转换密钥 VT K 参数. 严格验证算法的计算结构与高效验证算法相同,同样参考了解密算法 Decrypt\left(CT,S K\right) 中的部分运算. 但是严格验证算法将 {C}_{i} 替换为 {{C}_{i}}^{{b}_{x}} ,将 {h}_{\rho \left(i\right)} 替换为 {VT K}_{\rho \left(i\right)} ,实际上是引入了随机数 {b}_{x} . 由于随机数 {b}_{x} 作用于 {C}_{i} ,因此严格验证算法具备发现 {C}_{i} 顺序错乱的能力. 由于随机数 {b}_{x} 作用于 {h}_{\rho \left(i\right)} ,因此严格验证算法还具备发现 {g}^{a{\lambda }_{i}} 结构和 {h}_{\rho \left(i\right)}^{-s} 结构不匹配的能力. 以上2种错误都是在验证 \displaystyle\sum_{i \in \{ 1,2,…,l\} } {{\lambda _i}} {b_{\rho (i)}} 时被发现的,而高效验证算法无法检测到. 当然,引入 {{C}_{i}}^{{b}_{x}} 也使得严格验证算法需要进行复杂度O(n)的指数运算,在效率上低于高效验证算法.
4.2 安全证明
定理1. 若q-BDHE假设成立,不存在多项式时间的敌手可以选择访问结构 \left({\boldsymbol{M}}^{\mathrm{*}},{\rho }^{\mathrm{*}}\right) ,在安全游戏中对支持策略更新的属性基外包加密方案存在不可忽略的优势 \epsilon ,那么该方案是IND-CPA安全的.
证明.
1)Init. 挑战者生成挑战向量 \boldsymbol{y}=(g,{g}^{s},{g}^{a},… ,{g}^{{a}^{q}}, {g}^{{a}^{q+2}},… ,{g}^{{a}^{2q}}) ,选择 T\in {G}_{T} 组成挑战结构 \left(\boldsymbol{y},T\right) . 敌手发送要挑战的访问结构 \left({\boldsymbol{M}}^{\mathbf{*}},{\rho }^{\mathrm{*}}\right) ,其中矩阵 {\boldsymbol{M}}^{\mathrm{*}} 大小为 {l}^{*}\times {n}^{*} ,且 {n}^{\mathrm{*}}\le q .
2)Setup. 挑战者随机选择 {\alpha' }\in {\mathbb{Z}}_{p} ,并且设置 \alpha = {\alpha' }+ {a}^{q+1} ,使得 {e\left(g,g\right)}^{\alpha }=e\left({g}^{a},{g}^{{a}^{q}}\right)\cdot {e\left(g,g\right)}^{{\alpha' }} . 对于每个属性 x \in \{1,2,…,U\} ,随机选择 {z}_{x}\in {\mathbb{Z}}_{p} . 如果 i 满足 {\rho }^{\mathrm{*}}\left(i\right)=x ,即 x 出现在访问结构 \left({\boldsymbol{M}}^{\mathbf{*}},{\rho }^{\mathrm{*}}\right) 中,那么令 {h}_{x}={g}^{{z}_{x}}{g}^{a{\boldsymbol{M}}_{i,1}^{\mathrm{*}}} {g}^{{a}^{2}{\boldsymbol{M}}_{i,2}^{\mathrm{*}}},… ,{g}^{{a}^{{n}^{\mathrm{*}}}{\boldsymbol{M}}_{i,{n}^{\mathrm{*}}}^{\mathrm{*}}} ,否则令 {h}_{x}={g}^{{z}_{x}} . 由于 {h}_{x} 中存在 {g}^{{z}_{x}} 项,所以 {h}_{x} 参数是随机分布的,且由于 {\rho }^{\mathrm{*}} 是一个单射函数,每个 i 只有1个对应的 x ,所以 {h}_{x} 参数的值是明确的. 在此阶段,挑战者可以对挑战访问结构的每个属性 x 设置对应的 {h}_{x} 参数.
在Init阶段中,挑战者需要响应敌手的私钥查询请求. 假设挑战者收到的私钥请求对应的属性集合是 S ,且集合 S 不满足挑战访问结构 \left({\boldsymbol{M}}^{\mathrm{*}},{\rho }^{\mathrm{*}}\right) . 挑战者首先随机选择 r\in {\mathbb{Z}}_{p} . 找到一个向量 \boldsymbol{w}=\left({w}_{1},{{w}}_{2},… ,{w}_{{n}^{\mathrm{*}}}\right)\in {{\mathbb{Z}}_{p}^{{n}^{\mathrm{*}}}} ,满足 {w}_{1}=-1 且对于所有的 {\rho }^{\mathrm{*}}\left(i\right)\in S ,满足 \boldsymbol{w}\cdot {\boldsymbol{M}}_{i}^{\mathrm{*}}=0 . 根据线性秘密共享方案的定义,由于集合 S 不满足访问结构 \left({\boldsymbol{M}}^{\mathbf{*}},{\rho }^{\mathrm{*}}\right) ,这样的向量 \boldsymbol{w} 一定存在. 挑战者设置 t= r+{w}_{1}{a}^{q}+{w}_{2}{a}^{q-1}+… +{w}_{{n}^{\mathrm{*}}}{a}^{q-{n}^{\mathrm{*}}+1} ,得{K_0} = {g^t} = {g^r} \displaystyle\prod_{i = 1,2,…,n^*}\times {{{({g^{{a^{q + 1 - i}}}})}^{{w_i}}}} . 计算K = {g^\alpha }{g^{at}} = {g^{\alpha ' + {a^{q + 1}}}}{g^{ar}}\displaystyle\prod_{i = 1,2,…,n^*} {{{({g^{{a^{q + 2 - i}}}})}^{{w_i}}}} ,其中连乘的第1项与 {g}^{{a}^{q+1}} 相抵消,得到K = {g^{\alpha '}}{g^{ar}}\displaystyle\prod_{i = 1,2,…,n^*} {{{({g^{{a^{q + 2 - i}}}})}^{{w_i}}}} . 下来对任意 x\in S ,计算 {K}_{x} . 若 x 出现在挑战访问结构 \left({\boldsymbol{M}}^{\mathrm{*}},{\rho }^{\mathrm{*}}\right) 中,考虑Setup阶段设置的 {h}_{x} 参数的值,计算 {K_x} = {K_0^{{z_x}}}\displaystyle\prod_{j = 1,2,…,n^*} {{{\Bigg({g^{{a^j}r}}\displaystyle\prod_{\begin{subarray}{l} k = 1,2,…,n^* \\ k \ne j \end{subarray}} {{{({g^{{a^{q + 1 + j - k}}}})}^{{w_k}}}} \Bigg)}^{{M}_{i,j}^*}}} ;否则设 {K}_{x}={{K}_{0}^{{z}_{x}}} .
3)Challenge. 敌手选择2个等长的明文消息 {\mathcal{M}}_{0} , {\mathcal{M}}_{1} 发送给挑战者. 挑战者随机选择 \beta \in \left\{\mathrm{0,1}\right\} . 计算密文 C={\mathcal{M}}_{\beta }T\times e\left({g}^{s},{g}^{{\alpha' }}\right) , {C'}={g}^{s} ,得到 {CT}_{\mathrm{p}\mathrm{a}\mathrm{r}\mathrm{t}}=(C,{C'}) . 挑战者考虑访问结构 \left({\boldsymbol{M}}^{\mathrm{*}},{\rho }^{\mathrm{*}}\right) ,随机选择 {y}_{2}^{\mathrm{*}},{{y}}_{3}^{\mathrm{*}},… ,{y}_{{n}^{\mathrm{*}}}^{\mathrm{*}}\in {\mathbb{Z}}_{p} ,构造共享秘密值为 s 的向量 {\boldsymbol{v}}^{\boldsymbol{*}}=\big(s,sa+{y}_{2}^{\mathrm{*}},s{a}^{2}+{y}_{3}^{*},… , s{a}^{{n}^{\mathrm{*}}-1}+{y}_{{n}^{\mathrm{*}}}^{\mathrm{*}}\big)\in {{\mathbb{Z}}_{p}^{{n}^{\mathrm{*}}}} . 对于 i=\mathrm{1,2},… ,{l}^{*} ,计算 C_i^* = {g^{ - sZ{\rho ^*}(i)}} \times \displaystyle\prod_{j = 2,3,…,n^*} {{{({g^a})}^{{M}_{i,j}^*y_j^*}}} ,得到密文 {CT}^{*}=(C,{C'},{\left({{C}_{i}^{*}}\right)}_{i\in \{\mathrm{1,2},… ,{l}^{*}\}}) .
Setup阶段重复Init阶段.
4)Guess. 敌手最终输出一个对 \beta 的猜测值 {\beta' }\in \{ 0, 1 \} . 若 \beta ={\beta' } ,则挑战者输出 \theta =0 ,表示 T={e\left(g,g\right)}^{{a}^{q+1}s} ;否则输出 \theta =1 表示 T 是群 {G}_{T} 上的随机元素. 当 T= {e\left(g,g\right)}^{{a}^{q+1}s} 时,敌手的优势是 \epsilon=Pr\left[\beta ={\beta' }|\theta =0\right]-\dfrac{1}{2} . 当 T 是群 {G}_{T} 上的随机元素时,消息 {\mathcal{M}}_{\beta } 对于敌手被完全隐藏,敌手的优势是 Pr\left[\beta ={\beta' }|\theta =1\right]=\dfrac{1}{2} . 因此,任何多项式时间内的敌手赢得q-BDHE假设的IND-CPA游戏的优势是可以忽略的. 证毕.
定理2. 若q-BDHE假设成立,对于本文2.2节定义的安全游戏,在本文方案的策略更新过程中敌手无法增加其优势.
证明. 考虑2个更新密钥查询请求 U K({\mathcal{M}}_{0},({\boldsymbol{M}}^{\mathrm{*}}, {\rho }^{\mathrm{*}}),({\boldsymbol{M}}^{\#}, {\rho }^{\#})) 和 U K({\mathcal{M}}_{1}, ({\boldsymbol{M}}^{\mathrm{*}},{\rho }^{\mathrm{*}} ), ({\boldsymbol{M}}^{\#},{\rho }^{\#} )) ,由于加密 {\mathcal{M}}_{0} 和 {\mathcal{M}}_{1} 的随机数是相同的(这是因为挑战者将随机选择其中一个明文进行加密,只有1个明文消息会被挑战者选中),挑战者向敌手返回的更新密钥完全相同,且不包含任何挑战信息. 因此,挑战者在选择挑战消息时,更新密钥不会透露任何信息. 在定理1证明的Challenge阶段,使用访问策略 \left({\boldsymbol{M}}^{\mathrm{*}},{\rho }^{\mathrm{*}}\right) 加密得到的密文 {CT}^{*}=(C,{C'},{ ({{C}_{i}^{*}} )}_{i\in \{\mathrm{1,2},… ,{l}^{*}\}}) . 考虑在策略更新过程中选择新的访问策略 ({M}^{\#},{\rho }^{\#} ) ,根据更新密钥生成算法 U pdateKeyGen\left(PP,A,{A'},ET K\right) 和密文更新算法 CTU {\text{-}} pdate \left(PP,A,{A'},U K,CT\right) 计算得到新密文 {CT}^{\#}=(C,{C'}, { ({{C}_{k}^{\#}} )}_{k\in \{\mathrm{1,2},… ,{l}^{\#}\}}) ,其中 C_k^\# = {g^{ - sZ{\rho ^\# }(i)}}\Big(\displaystyle\prod_{j = 2,3,…,{n^\# }} {{{({g^a})}^{{M}_{k,j}^\# y_j^\# }}\Big)} ,而 {CT}^{\#} 中的 C={\mathcal{M}}_{\beta }T\times e\left({g}^{s},{g}^{{\alpha' }}\right) 与 {CT}^{*} 中的C相同. 因此,由定理1可知,若q-BDHE假设成立,敌手在区分 {CT}^{\#} 中的 C 与群 {G}_{T} 上的随机元素时,不具备不可忽略的优势,并且密文验证过程不会为敌手增加任何优势. 证毕.
4.3 安全性对比
本文从策略更新能力、密文验证能力、安全模型和安全假设4个方面对本文方案与现有方案的安全性进行对比分析,如表1所示.
从表1可以看出,仅有文献[11]方案和本文方案同时具备策略更新和密文验证能力. 但文献[11]方案仅具备常规的密文正确性验证能力,即仅能发现云服务器的无意错误,而本文方案中数据拥有者不仅具备高效的密文验证能力还具备严格的错误检查能力,既能发现云服务器在外包加密及密文更新过程中的无意错误,还能发现其有意构造的密文错误. 此外,本文方案的密文验证效率较文献[11]方案更高,同时还支持外包加密. 在安全模型方面,也只有本文方案和文献[7]方案是在标准模型下证明的.
4.4 理论性能分析
本文从功能、加密时间、密文长度和交互长度等方面与相关方案进行比较,具体对比参数如表2所示. 对比方案的功能主要考虑是否支持外包加密功能、策略更新功能和密文正确性验证功能;加密效率比较主要考虑外包加密方案中的本地加密时间(此处将验证计算时间计入本地加密时间中)、本地和外包的合计加密时间. 如果方案支持密文正确性验证,则对比不同方案在验证密文时的计算时间;密文长度和交互长度主要比较的是方案的通信代价,交互长度指的是在外包加密过程中,数据拥有者和外包服务之间的交互数据的长度.
表 2 外包加密属性基方案对比Table 2. Comparison of Outsourced Encryption Attribute-Based Schemes方案 本地加密时间 -{T}_{2}-{t}_{2} 合计加密时间 -{T}_{2}-{t}_{2} 验证计算时间 密文长度 交互长度 文献[10] {3T}_{1}+l{t}_{1} \left(2l+3\right){T}_{1}+3l{t}_{1} l{L}_{1}+\left(l+2\right){L}_{3} 2l{L}_{1}+\left(l+2\right){L}_{3} 文献[12] {5T}_{1}+22l{t}_{1} {\left(14l+5\right)T}_{1}+22l{t}_{1} \left(2l+1\right){L}_{1}+{L}_{m} 28l{L}_{1}+14l{L}_{3} 文献[8] {3T}_{1}+{t}_{1} \left(2l+4\right){T}_{1}+\left(l+1\right) \left(l+3\right){L}_{1}+{L}_{m} \left(l+1\right){L}_{1}+{L}_{3}+{L}_{A} 文献[7] \left(4l+1\right){t}_{1} \left(10l+2\right){T}_{1}+\left(8l+1\right){t}_{1} \left(3l+1\right){L}_{1}+2l{L}_{3} \left(3l+1\right){L}_{1}+\left(3l+1\right){L}_{3} 文献[13] {T}_{2}+{t}_{2} \left(3l+1\right){T}_{1}+l{t}_{1} \left(l+1\right){t}_{1}+\left(l+2\right){T}_{1} \left(2l+1\right){L}_{1}+\left(2l+1\right){L}_{3} 2l{L}_{1}+3l{L}_{3} 文献[11] l\left({T}_{1}+{T}_{2}+{T}_{3}\right) {2lL}_{1}+l{L}_{2} l{L}_{1}+l{L}_{2} 文献[15] {T}_{2}+{t}_{1}+{t}_{2} l{T}_{1}+{T}_{2}+2{t}_{1}+{t}_{2} l{T}_{1}+2l{T}_{3} \left(l+2\right){L}_{1}+{L}_{2} l\left({L}_{1}+{L}_{3}\right) 本文 {2T}_{1}+l{t}_{1} \left(2l+2\right){T}_{1}+3l{t}_{1} 2l{t}_{1}+{t}_{2}+{T}_{2} \left(l+1\right){L}_{1} 2l{L}_{1}+\left(l+1\right){L}_{3} 注: 其中 T_1,T_2 分别表示群 {G}_{1} , {G}_{2} 指数运算时间; {T}_{3} 表示双线性对运算时间; t_1,t_2 分别表示群 {G}_{1} , {G}_{2} 乘法运算时间; l 表示线性秘密共享访问结构中矩阵 \boldsymbol{M} 的行数; {L}_{1},{L}_{2},{L}_{3} 分别表示群 {G}_{1},{G}_{2},{\mathbb{Z}}_{p} 上的元素长度; {L}_{m} 表示明文长度; {L}_{A} 表示访问结构长度. 从表2可以看出本文方案的本地加密计算开销为 {2T}_{1}+l{t}_{1} ,若不使用外包计算,则加密开销上升为 \left(2l+1\right){T}_{1}+l{t}_{1} . 可见通过外包计算,数据拥有者不需要承担随着访问结构线性增长的指数运算,缓解了本地终端的计算压力. 本文方案的合计加密时间为 \left(2l+2\right){T}_{1}+3l{t}_{1} ,略大于不使用外包加密计算的本地开销,但额外开销基本只有乘法运算,没有过多的冗余计算量,对整体效率影响不大. 现有的支持外包加密功能的属性基方案都不支持策略更新功能,本文方案采用相似的计算结构,构造了支持外包机密和策略更新功能的属性基方案. 对于密文验证功能,现有的部分属性基方案也没有很好的实现方式,文献[7]方案不支持密文验证功能,文献[8]和文献[10]方案仅支持数据使用者在解密时验证密文,对于数据拥有者来说,无法得到密文正确性的信息. 文献[12]方案支持在外包加密过程中进行验证,外包过程和验证过程不可拆分,导致引入了过多的冗余计算量. 文献[13]方案引入指数打包验证算法,能够实现特定结构密文的正确性验证. 本文方案的本地加密时间相较于文献[7–8, 10, 12]方案均有所缩短. 文献[13]方案通过构造更长的密文结构,将部分加密阶段的计算开销转移到解密阶段,使得本地加密时间大大缩短. 对于密文验证计算时间,本文方案中的验证算法效率高于文献[13]方案,严格验证算法与文献[13]方案效率相当,且高于文献[11, 15]方案. 在通信开销方面,本文方案的密文长度最短,交互长度仅长于文献[8]方案. 文献[8, 13]方案虽然具有本地加密效率高、验证算法效率较高的优点,但是没有解决外包服务器和数据使用者的合谋攻击问题,不具备抗合谋攻击的能力,而本文方案不仅具备抗合谋攻击的能力,并且支持高效的密文正确性验证方式.
4.5 实验分析
本文通过仿真实验来分析对比属性基方案的实际性能表现,使用Charm密码学框架对本文方案和其他相关方案进行仿真实现. 实验中使用512 b椭圆曲线,运行环境为Ubuntu 16.04和Python 3.5. 在实验中分别实现了不同方案的本地加密部分、外包加密部分、验证计算部分和策略更新部分,记录不同属性个数情况下各方案的CPU运行时间,具体结果如图1所示.
由图1(a)可以看出,本文方案与相关方案在属性个数较少时,本地加密时间的差异并不明显,当属性个数增加时,本文方案的本地加密时间相比文献[7]和文献[10]方案分别降低35.5%和22.9%. 由图1(b)可以看出,外包加密承担的计算量通常是本地加密的10倍以上,而本文方案也很好地控制了外包计算量,分别为文献[7]和文献[10]方案的19.3%和65.2%,提高了系统的整体效率. 在验证计算方面,本文方案中的严格验证算法计算时间降低为文献[11]方案的22.3%和文献[15]方案的18.9%. 文献[13]方案将指数打包验证用于密文验证,其验证算法的计算量与本文方案中的严格验证算法计算量相当,而本文提出的高效验证算法的效率为文献[13]方案的6倍,大大降低了密文验证所需要的计算开销. 在策略更新方面,由于本文方案将策略更新与外包加密相结合,使得数据拥有者在策略更新阶段的计算开销降低至本地加密水平. 由图1(d)可以看出,同为类型3的属性策略更新,本文方案的计算时间仅为文献[11]方案的3.5%,在策略更新阶段的大部分计算量都由负责密文更新的外包服务器承担.
5. 结 论
综上所述,本文方案在保证安全性的前提下,提出一种支持策略更新的属性基外包加密方案,还提出了2种用于验证密文正确性的方式,有效避免云计算环境下外包计算过程中的安全隐患. 性能分析表明,本文方案在密文长度、策略更新计算量、密文验证计算量上具有一定优势.
作者贡献声明:苏泽林提出了算法思路和实验方案,完成实验并撰写论文;张文芳和王小敏提出指导意见并修改论文.
-
表 1 方案安全性对比
Table 1 Comparison of Schemes for Security
表 2 外包加密属性基方案对比
Table 2 Comparison of Outsourced Encryption Attribute-Based Schemes
方案 本地加密时间 -{T}_{2}-{t}_{2} 合计加密时间 -{T}_{2}-{t}_{2} 验证计算时间 密文长度 交互长度 文献[10] {3T}_{1}+l{t}_{1} \left(2l+3\right){T}_{1}+3l{t}_{1} l{L}_{1}+\left(l+2\right){L}_{3} 2l{L}_{1}+\left(l+2\right){L}_{3} 文献[12] {5T}_{1}+22l{t}_{1} {\left(14l+5\right)T}_{1}+22l{t}_{1} \left(2l+1\right){L}_{1}+{L}_{m} 28l{L}_{1}+14l{L}_{3} 文献[8] {3T}_{1}+{t}_{1} \left(2l+4\right){T}_{1}+\left(l+1\right) \left(l+3\right){L}_{1}+{L}_{m} \left(l+1\right){L}_{1}+{L}_{3}+{L}_{A} 文献[7] \left(4l+1\right){t}_{1} \left(10l+2\right){T}_{1}+\left(8l+1\right){t}_{1} \left(3l+1\right){L}_{1}+2l{L}_{3} \left(3l+1\right){L}_{1}+\left(3l+1\right){L}_{3} 文献[13] {T}_{2}+{t}_{2} \left(3l+1\right){T}_{1}+l{t}_{1} \left(l+1\right){t}_{1}+\left(l+2\right){T}_{1} \left(2l+1\right){L}_{1}+\left(2l+1\right){L}_{3} 2l{L}_{1}+3l{L}_{3} 文献[11] l\left({T}_{1}+{T}_{2}+{T}_{3}\right) {2lL}_{1}+l{L}_{2} l{L}_{1}+l{L}_{2} 文献[15] {T}_{2}+{t}_{1}+{t}_{2} l{T}_{1}+{T}_{2}+2{t}_{1}+{t}_{2} l{T}_{1}+2l{T}_{3} \left(l+2\right){L}_{1}+{L}_{2} l\left({L}_{1}+{L}_{3}\right) 本文 {2T}_{1}+l{t}_{1} \left(2l+2\right){T}_{1}+3l{t}_{1} 2l{t}_{1}+{t}_{2}+{T}_{2} \left(l+1\right){L}_{1} 2l{L}_{1}+\left(l+1\right){L}_{3} 注: 其中 T_1,T_2 分别表示群 {G}_{1} , {G}_{2} 指数运算时间; {T}_{3} 表示双线性对运算时间; t_1,t_2 分别表示群 {G}_{1} , {G}_{2} 乘法运算时间; l 表示线性秘密共享访问结构中矩阵 \boldsymbol{M} 的行数; {L}_{1},{L}_{2},{L}_{3} 分别表示群 {G}_{1},{G}_{2},{\mathbb{Z}}_{p} 上的元素长度; {L}_{m} 表示明文长度; {L}_{A} 表示访问结构长度. -
[1] Sahai A, Waters B. Fuzzy identity-based encryption[C]//Proc of the 24th Annual Int Conf on the Theory and Applications of Cryptographic Techniques. Berlin: Springer, 2005: 457−473
[2] Goyal V, Pandey O, Sahai A, et al. Attribute-based encryption for fine grained access control of encrypted data[C]//Proc of the 13th ACM Conf on Computer and Communications Security. New York: ACM, 2006: 89–98
[3] Bethencourt J, Sahai A, Waters B. Ciphertext-policy attribute-based encryption[C]//Proc of the 23rd IEEE Symp on Security and Privacy. Piscataway, NJ: IEEE, 2008: 321–334
[4] Waters B. Ciphertext-policy attribute-based encryption: An expressive, efficient, and provably secure realization[C]//Proc of the 14th Int Workshop on Public Key Cryptography. Berlin: Springer, 2008: 53−70
[5] Green M, Hohenberger S, Waters B. Outsourcing the decryption of ABE ciphertexts[C]//Proc of the 20th USENIX Conf on Security. Berkeley, CA: USENIX Association, 2011: 34−49
[6] Li Jingwei, Jia Chunfu, Li Jin, et al. Outsourcing encryption of attribute-based encryption with MapReduce[C]//Proc of the 24th Int Conf on Information and Communications Security. Berlin: Springer, 2012: 191−201
[7] Zhang Rui, Ma Hui, Lu Yao. Fine-grained access control system based on fully outsourced attribute-based encryption[J]. Journal of Systems & Software, 2017, 125: 344−353
[8] 赵志远,王建华,徐开勇,等. 面向云存储的支持完全外包属性基加密方案[J]. 计算机研究与发展,2019,56(2):218−228 Zhao Zhiyuan, Wang Jianhua, Xu Kaiyong, et al. Fully outsourced attribute-based encryption with verifiability for cloud storage[J]. Journal of Computer Research and Development, 2019, 56(2): 218−228 (in Chinese)
[9] Li Jing, Li Xiong, Wang Licheng, et al. Fuzzy encryption in cloud computation: efficient verifiable outsourced attribute-based encryption[J]. Soft Computing, 2018, 22(3): 707−714 doi: 10.1007/s00500-017-2482-1
[10] Chen Hongjie, Liao Yongjian. Improvement of an outsourced attribute-based encryption scheme[J]. Soft Computing, 2019, 23(22): 11409−11417 doi: 10.1007/s00500-019-04088-y
[11] Yang Kun, Jia Xiaohua, Ren Kui. Secure and verifiable policy update outsourcing for big data access control in the cloud[J]. IEEE Transactions on Parallel and Distributed Systems, 2014, 26(12): 3461−3470
[12] 闫玺玺,何广辉,于金霞. 可验证的密文策略属性基加密安全外包方案[J]. 密码学报,2020,7(5):628−642 Yan Xixi, He Guanghui, Yu Jinxia. Secure and verifiable outsourced ciphertext policy attribute base encryption[J]. Journal of Cryptologic Research, 2020, 7(5): 628−642 (in Chinese)
[13] Fan Kai, Wang Junyong, Wang Xin, et al. A secure and verifiable outsourced access control scheme in fog-cloud computing[J]. Sensors, 2017, 17(7): 1695 doi: 10.3390/s17071695
[14] Wang Hao, He Debiao, Shen Jian, et al. Verifiable outsourced ciphertext-policy attribute-based encryption in cloud computing[J]. Soft Computing, 2017, 21(24): 7325−7335 doi: 10.1007/s00500-016-2271-2
[15] Premkamal P K, Pasupuleti S K, Alphonse P J A. A new verifiable outsourced ciphertext-policy attribute based encryption for big data privacy and access control in cloud[J]. Journal of Ambient Intelligence and Humanized Computing, 2019, 10(7): 2693−2707 doi: 10.1007/s12652-018-0967-0
[16] Wang Shulan, Wang Haiyan, Li Jianqiang, et al. A fast CP-ABE system for cyber-physical security and privacy in mobile healthcare network[J]. IEEE Transactions on Industry Applications, 2020, 56(4): 4467−4477
[17] Li Xiong, Liu Tian, Chen Chaoyang, et al. A lightweight and verifiable access control scheme with constant size ciphertext in edge computing assisted IoT[J]. IEEE Internet of Things Journal, 2022, 9(19): 19227−19237 doi: 10.1109/JIOT.2022.3165576
[18] Hahn C, Kim J. Verifiable outsourced decryption of encrypted data from heterogeneous trust networks[J]. IEEE Internet of Things Journal, 2022, 9(22): 22559−22570 doi: 10.1109/JIOT.2022.3181684
[19] 应作斌,马建峰,崔江涛. 支持动态策略更新的半策略隐藏属性加密方案[J]. 通信学报,2015,36(12):178−189 doi: 10.11959/j.issn.1000-436x.2015327 Ying Zuobin, Ma Jianfeng, Cui Jiangtao. Partially policy hidden CP-ABE supporting dynamic policy updating[J]. Journal on Communications, 2015, 36(12): 178−189 (in Chinese) doi: 10.11959/j.issn.1000-436x.2015327
[20] Ying Zuobin, Li Hui, Ma Jianfeng, et al. Adaptively secure ciphertext-policy attribute-based encryption with dynamic policy updating[J]. Science China Information Sciences, 2016, 59(4): 1−16
[21] Sethi K, Pradhan A, Bera P. Practical traceable multi-authority CP-ABE with outsourcing decryption and access policy updation[J]. Journal of Information Security and Applications, 2020, 51: 102435 doi: 10.1016/j.jisa.2019.102435
[22] Li Jianqiang, Wang Shulan, Li Yuan, et al. An efficient attribute-based encryption scheme with policy update and file update in cloud computing[J]. IEEE Transactions on Industrial Informatics, 2019, 15(12): 6500−6509 doi: 10.1109/TII.2019.2931156
[23] 闫玺玺,刘媛,李子臣,等. 支持策略动态更新的多机构属性基加密方案[J]. 通信学报,2017,38(10):94−101 doi: 10.11959/j.issn.1000-436x.2017201 Yan Xixi, Liu Yuan, Li Zichen, et al. Multi-authority attribute-based encryption scheme with policy dynamic updating[J]. Journal on Communications, 2017, 38(10): 94−101(in Chinese) doi: 10.11959/j.issn.1000-436x.2017201
-
期刊类型引用(0)
其他类型引用(2)